Edit on GitHub

Overview

ROS-enabled OpenManipulator is a full open robot platform consisting of OpenSoftware​, OpenHardware and OpenCR(Embedded board)​.

OpenSoftware

OpenManipulator are based on ROS ​and OpenSource. ROS official hardware platform ,TurtleBot series has been supporting ‘TurtleBot Arm’. The OpenManipulator has full hardware compatibility with TurtleBot3​, and allows users to control it more easily by linking with the MoveIT! package. Even if you do not have a real robot, you can control the robot in the Gazebo simulator​.

OpenHardware

The OpenManipulator is oriented towards Open Hardware​. Most of the components except for some frames are uploaded as STL files that can be 3d printing. This allows users to modify the length of the link and the design of the robot to suit the intended use. The open manipulator also uses the Dynamixel X ​series used in TurtleBot 3. Dynamixel has a modular form and adopts daisy chain method. This allows users to easily change and add joints for some torque and degree of freedom they need. Taking advantage of these advantages, we are planning a total of seven different types (For example, Chain, SCARA, Link, Planar, Delta, Stewart and Linear) of OpenManipulator.

OpenCR (Embedded board)

The OpenManipulator can also be controlled via OpenCR (Open-source Control module for ROS), the control board of TurtleBot3. OpenCR’s computing power and real-time control are used to support forward, inverse kinematics, and profile control examples. In addition, OpenCR can interoperate with many functions provided by ROS through message communication with ROS, which will evolve into ROS 2.0 in the future.

Dynamixel Examples

OpenManipulator is composed by Dynamixel X series and 3D printing parts. Dynamixel has a modular form and adopts daisy chain method. This allows users to easily change and add joints for some torque and degree of freedom they need. Moreover, growing 3D printing technology makes anyone can make anything they want with low cost and rapid time. We suggest some examples of links and safety parts. Taking advantage of these advantages, we are planning a total of seven different types of OpenManipulator.

Introduction Video

ROSCon 2017 Vancouver Day 1: Introducing OpenManipulator; the full open robot platform from OSRF on Vimeo.

Specification

Hardware Specification

  Unit Chain with XM430-W350
Input Voltage V 12
DOF - 5 (4 DOF + 1 DOF Gripper)
Payload g 300 ~ 1000
Speed(Joint) rad/sec 4.82
Weight kg(lb) 0.7 (1.54)
Reach mm (in) 380 (14.9)
Rated Voltage VDC 12
Communication - RS-485 (Multi Drop Bus)
Power(Joint) W 27.6
Software - ROS, Dynamixel SDK, Arduino, Processing
Main Controller - Laptop PC, OpenCR

Dimension

Hardware Setup

Parts of OpenManipulator

DIY Manual

CAD Files

Software Setup

ROS and Gazebo

Install dependent packages for the OpenManipulator.

$ sudo apt-get install ros-kinetic-ros-controllers ros-kinetic-gazebo* ros-kinetic-moveit* ros-kinetic-dynamixel-sdk ros-kinetic-dynamixel-workbench-toolbox ros-kinetic-industrial-core 
$ cd ~/catkin_ws/src/
$ git clone https://github.com/ROBOTIS-GIT/open_manipulator.git
$ git clone https://github.com/ROBOTIS-GIT/open_manipulator_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/open_manipulator_simulations.git
$ cd ~/catkin_ws && catkin_make 

If catkin_make command is completed without any errors, preparation for OpenManipulator is done.

Load an OpenManipulator on RViz.

$ roslaunch open_manipulator_description open_manipulator_rviz.launch 

Bringup

To load an OpenManipulator with DYNAMIXEL X-series(XM or XL), you can set a arguments what you configure your own Dynamixel

  <launch>
    <arg name="use_robot_name"         default="open_manipulator"/>
    <arg name="device_name"            default="/dev/ttyUSB0"/>
    <arg name="baud_rate"              default="1000000"/>
    <arg name="protocol_version"       default="2.0"/>

    <arg name="joint_controller"       default="position_mode"/>

    <arg name="joint1_id"              default="1"/>
    <arg name="joint2_id"              default="2"/>
    <arg name="joint3_id"              default="3"/>
    <arg name="joint4_id"              default="4"/>

    <arg name="gripper_controller"     default="current_mode"/>

    <arg name="gripper_id"             default="5"/>

    <node pkg="open_manipulator_dynamixel_ctrl" type="dynamixel_controller" name="dynamixel_controller" required="true" output="screen">
      <param name="robot_name"           value="$(arg use_robot_name)"/>
      <param name="device_name"          value="$(arg device_name)"/>
      <param name="baud_rate"            value="$(arg baud_rate)"/>
      <param name="protocol_version"     value="$(arg protocol_version)"/>

      <param name="joint_controller"     value="$(arg joint_controller)"/>

      <param name="joint1_id"            value="$(arg joint1_id)"/>
      <param name="joint2_id"            value="$(arg joint2_id)"/>
      <param name="joint3_id"            value="$(arg joint3_id)"/>
      <param name="joint4_id"            value="$(arg joint4_id)"/>

      <param name="gripper_controller"   value="$(arg gripper_controller)"/>

      <param name="gripper_id"           value="$(arg gripper_id)"/>
    </node>
  </launch>
  $ roslaunch open_manipulator_dynamixel_ctrl dynamixel_controller.launch

Type rostopic list to check which topic is activated

  /joint_states
  /open_manipulator/goal_gripper_position
  /open_manipulator/goal_joint_position
  /rosout
  /rosout_agg

OpenManipulator is controllered by ROS message. For example, to use below command make publish joint position(radian)

  $ rostopic pub /open_manipulator/goal_joint_position sensor_msgs/JointState "header:
  seq: 0
  stamp: {secs: 0, nsecs: 0}
  frame_id: ''
name: ['']
position: [0]
velocity: [0]
effort: [0]"

or using RQT

Manipulation

We provide manipulation layer to use MoveIt!. You can handle it using RViz or ROS messages

  $ roslaunch open_manipulator_moveit open_manipulator_demo.launch use_gazebo:=false

Below services are help you to manipulate OpenManipulator

  /open_manipulator/get_joint_position
  /open_manipulator/get_kinematics_pose
  /open_manipulator/set_gripper_position
  /open_manipulator/set_joint_position
  /open_manipulator/set_kinematics_pose

In order to control gripper, please use topic publish with below command in a new terminal window (parameters : grip_on, grip_off, neutral)

  $ rostopic pub /open_manipulator/gripper std_msgs/String "data: 'grip_on'" --once

Mobile Manipulation

Tip : You can get a more information about it in Manipulation section of TurtleBot3

Install dependent packages

  $ cd ~/catkin_ws/src
  $ git clone https://github.com/ROBOTIS-GIT/open_manipulator_with_tb3.git
  $ git clone https://github.com/ROBOTIS-GIT/open_manipulator_with_tb3_msgs.git
  $ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
  $ cd ~/catkin_ws && catkin_make

Load a TurtleBot3 Waffle or Waffle Pi with OpenManipulator on RViz.

Tip : TB3_MODEL = waffle, waffle_pi

  $ export TURTLEBOT3_MODEL=${TB3_MODEL}
  $ roslaunch open_manipulator_with_tb3_description open_manipulator_with_tb3_rviz.launch

Simulation

Gazebo

NOTE : This instruction was tested on Ubuntu 16.04 and ROS Kinetic Kame.

Spawn Model

Load an OpenManipulator on Gazebo simulator and click Play button

  $ roslaunch open_manipulator_gazebo open_manipulator_gazebo.launch

Type rostopic list to check which topic is activated

  /clock
  /gazebo/link_states
  /gazebo/model_states
  /gazebo/set_link_state
  /gazebo/set_model_state
  /open_manipulator/grip_joint_position/command
  /open_manipulator/grip_joint_position/pid/parameter_descriptions
  /open_manipulator/grip_joint_position/pid/parameter_updates
  /open_manipulator/grip_joint_position/state
  /open_manipulator/grip_joint_sub_position/command
  /open_manipulator/grip_joint_sub_position/pid/parameter_descriptions
  /open_manipulator/grip_joint_sub_position/pid/parameter_updates
  /open_manipulator/grip_joint_sub_position/state
  /open_manipulator/joint1_position/command
  /open_manipulator/joint1_position/pid/parameter_descriptions
  /open_manipulator/joint1_position/pid/parameter_updates
  /open_manipulator/joint1_position/state
  /open_manipulator/joint2_position/command
  /open_manipulator/joint2_position/pid/parameter_descriptions
  /open_manipulator/joint2_position/pid/parameter_updates
  /open_manipulator/joint2_position/state
  /open_manipulator/joint3_position/command
  /open_manipulator/joint3_position/pid/parameter_descriptions
  /open_manipulator/joint3_position/pid/parameter_updates
  /open_manipulator/joint3_position/state
  /open_manipulator/joint4_position/command
  /open_manipulator/joint4_position/pid/parameter_descriptions
  /open_manipulator/joint4_position/pid/parameter_updates
  /open_manipulator/joint4_position/state
  /open_manipulator/joint_states
  /rosout
  /rosout_agg

OpenManipulator in Gazebo is controllered by ROS message. For example, to use below command make publish joint position(radian)

  $ rostopic pub /open_manipulator/joint2_position/command std_msgs/Float64 "data: -1.0" --once

MoveIt!

You can use MoveIt! to manipulate OpenManipulator. Please refer to Manipulation part

Launch MoveIt!

  $ roslaunch open_manipulator_moveit open_manipulator_demo.launch use_gazebo:=true

Gripping (parameters : grip_on, grip_off, neutral)

  $ rostopic pub /open_manipulator/gripper std_msgs/String "data: 'grip_on'" --once

Embedded board Setup

Arduino IDE

Processing

Friends

Friends List

OpenManipulator SCARA

Specification

  Unit Chain with XM430-W350
Input Voltage V 12
DOF - 4 (3 DOF + 1 End-Effector)
Speed(Joint) rad/sec 4.82
Weight kg(lb) 0.52 (1.14)
Reach mm (in) 234 (9.21)
Rated Voltage VDC 12
Communication - RS-485 (Multi Drop Bus)
Power(Joint) W 27.6
Software - ROS, Dynamixel SDK, Arduino, Processing
Main Controller - Laptop PC, OpenCR

Dimension

Hardware Setup

Parts of OpenManipulator

CAD Files

Software Setup

Video

Specification

  Unit Chain with XM430-W350
Input Voltage V 12
DOF - 3
Payload With Suction g (lb) 400 ~ 450 (0.88 ~ 0.99)
Speed(Joint) rad/sec 4.82
Weight kg(lb) 0.53 (1.16)
Reach mm (in) 330 (12.99)
Rated Voltage VDC 12
Communication - RS-485 (Multi Drop Bus)
Power(Joint) W 27.6
Software - ROS, Dynamixel SDK, Arduino, Processing
Main Controller - Laptop PC, OpenCR

Dimension

Hardware Setup

Parts of OpenManipulator

CAD Files

Software Setup

Video

OpenManipulator Planar

Specification

Dimension

Hardware Setup

Parts of OpenManipulator

CAD Files

Software Setup

Video

OpenManipulator Delta

Specification

Dimension

Hardware Setup

Parts of OpenManipulator

CAD Files

Software Setup

Video

OpenManipulator Stewart

Specification

Dimension

Hardware Setup

Parts of OpenManipulator

CAD Files

Software Setup

Video

OpenManipulator Linear

Specification

Dimension

Hardware Setup

Parts of OpenManipulator

CAD Files

Software Setup

Video