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

Items Unit RM-X52-TNM RM-X52-TNL
Actuator   Dynamixel XM430-W350-T Dynamixel XL430-W250-T
Input Voltage V 12 12
DOF - 5 (4 DOF + 1 DOF Gripper) 5 (4 DOF + 1 DOF Gripper)
Payload g 500 50
Speed(Joint) RPM 46 61
Weight kg (lb) 0.70 (1.54) 0.51 (1.12)
Reach mm (in) 380 (14.9) 380 (14.9)
Gripper Stroke mm (in) 20~75 (0.79~2.95) 20~75 (0.79~2.95)
Communication - TTL (Level Multidrop BUS) TTL (Level Multidrop BUS)
Software - ROS, Dynamixel SDK, Arduino, Processing ROS, Dynamixel SDK, Arduino, Processing
Main Controller - PC, OpenCR PC, OpenCR

Dimension

Hardware Setup

Part Lists

  Part Name RM-X52-TNM RM-X52-TNL
Chassis Parts LONG LINK FRAME 1 1
. SHORT LINK FRAME 1 1
. RAIL BRACKET(LEFT) 1 1
. RAIL BRACKET(RIGHT) 1 1
. PALM GRIPPER 2 2
. LINK ROD 2 2
. FLANGE BUSH 4 4
. CRANK ARM 1 1
. RAIL BLOCK 2 2
. FR12_S101_K 1 1
. FR12_S102_K 2 2
. FR12_H101_K 2 2
. FR12_H104_K 1 1
Actuators Dynamixel XM430-W350-T 5 0
. Dynamixel XL430-W250-T 0 5
Cables CABLE_3P_100MM 1 1
. CABLE_3P_180MM 3 3
. CABLE_3P_240MM 1 1
Tools SCREW_DRIER_DEFAULT 1 1
. Wrench_Hex_1_5X90 1 1
. Wrench_Hex_2_0X100 1 1
. Wrench_Hex_2_5X110 1 1
Miscellaneous DC12_A01_SPACER_RING 24 24
. WB_M2_5X12_NYLOK 8 8
. NUT_M2_5(0.45P) 16 16
. NUT_M3 4 4
. WB_M2X03 42 42
. WB_M2X04 4 4
. WB_M2_5X06 8 8
. WB_M2_5X08 16 16
. FHS_M2_5X14 12 12
. WB_M3X10 4 4
. WB_M2_5X04 8 8
. HN12_I101 3 3
. IGUS_JFM_1113_05 3 3
. DC12_CAP_IDLE 3 3
. GRIPPER_PAD 2 2
  Part Name RM-X52-TNM RM-X52-TNL
Powers SMPS 12V5A 1 1
. A/C Cord 1 1
Boards OpenCR 1 1
. U2D2 1 1

3D Printed Parts

We offer 3D printed parts to safety. User can modify cad files and 3D Printed it to assemble OpenManipulator.

Assembly Manual

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 parameters for what you’ve configured for 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

Enter rostopic list to list up the activated topics.

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

OpenManipulator is controllered by ROS message. For example, use below command to publish joint position(in 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 the 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

Enter rostopic list to list up the activated topics.

  /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, use below command to publish joint position(in 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 section

Launch MoveIt!

  $ roslaunch open_manipulator_moveit open_manipulator_demo.launch use_gazebo:=true

Gripper Control (parameters : grip_on, grip_off, neutral)

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

Embedded Board Setup

OpenManipulator is compatible with OpenCR. We offer API to easily control manipulator. This API supports Dynamixel, Dynamixel X including protocol 1.0 and 2.0. Furthermore, this code can be used Friends of OpenManipulator. User can make thier code in Arduino IDE and simulate or control using Processing GUI.

Arduino IDE

Download Arduino IDE and load OpenCR board on it

Find example source codes.

Go to ExamplesOpenManipulatorexampleArduinoChainopen_manipulator_chain on Arduino IDE for OpenCR.

Processing

Download Processing and load OpenCR board on it

Open Processing and Go to ToolsAdd Tool... Search ControlP5 and install it.

Open processing source code file (OpenCR>arduino>opencr_arduino>opencr>libraries>OpenManipulator>example>Processing>Chain>Chain.pde) on Processing IDE, and Run it.

NOTE: Upload OpenCR example source code to OpenCR before run processing source code.

Friends

Friends List

OpenManipulator SCARA

Specification

Items Unit  
Actuator   Dynamixel XM430-W350-T
Input Voltage V 12
DOF - 4 (3 DOF + 1 End-Effector)
Speed(Joint) RPM 46
Reach mm (in) 276 (10.87)
Communication - TTL (Level Multidrop BUS)
Software - Dynamixel SDK, Arduino, Processing
Main Controller - PC, OpenCR

Dimension

Hardware Setup

Part Lists

  Part Name SCARA Link
Chassis Parts BASE FRAME 1 Download Link
. PEN HOLDER 1 Download Link
. FRM BASE 1 Download Link
. TAP HOLDER 1 Download Link
. FR12_H101_K 4 Shop Link
. FR12_S102_K 3 Shop Link
. HN12_I101 4 Shop Link
Actuators Dynamixel XM430-W350-T 4 Shop Link
Cables CABLE_3P_130MM 3 Shop Link
. CABLE_3P_240MM 1 Shop Link
Miscellaneous WB_M2X03 24 Shop Link
. WB_M2_5X4 14 Shop Link
. WB_M2_5X06 8 Shop Link
. WB_M2_5X12 2 Shop Link
. FHS_M2_5X14 12 Shop Link
. NUT_M2_5(0.45P) 8 Shop Link

3D Printed Parts

Software Setup

OpenCR

Go to ExamplesOpenManipulatorexampleArduinoSCARAopen_manipulator_SCARA on Arduino IDE for OpenCR.

Processing

Open processing source code file (OpenCR>arduino>opencr_arduino>opencr>libraries>OpenManipulator>example>Processing>SCARA>SCARA.pde) on Processing IDE, and Run it.

NOTE: Upload OpenCR example source code to OpenCR before run processing source code.

Video

Specification

Items Unit  
Actuator   Dynamixel XM430-W350-T
DOF - 3
Payload With Suction g (lb) 500 (1.10)
Speed(Joint) rad/sec 4.82
Weight kg(lb) 0.55 (1.21)
Reach mm (in) 350 (13.78)
Communication - TTL (Level Multidrop BUS)
Software - Dynamixel SDK, Arduino, Processing
Main Controller - PC, OpenCR

Dimension

Hardware Setup

Part Lists

  Part Name SCARA Link
Chassis Parts BASE FRAME 1 Download Link
. BASE LINK 1 Download Link
. ROTATION BASE 1 Download Link
. HOLDER A 1 Download Link
. HOLDER B 1 Download Link
. LINK 50 1 Download Link
. LINK 200 A 1 Download Link
. LINK 50 FOR 250 1 Download Link
. LINK 200 FOR 250 1 Download Link
. LINK 200 B 4 Download Link
. TRIANGLE LINK 1 Download Link
. TOOL LINK 1 Download Link
Actuators Dynamixel XM430-W350-T 3 Shop Link
Cables CABLE_3P_180MM 1 Shop Link
. CABLE_3P_240MM 1 Shop Link
Miscellaneous FHS_M2x3mm 16 Shop Link
. FHS_M2x6mm 4 Shop Link
. FHS_M2.5x5mm 8 Shop Link
. FHS_M2.5x10mm 4 Shop Link
. FHS_M3x10mm 4 Shop Link
. NUT_M2 4 Shop Link
. NUT_M2.5 4 Shop Link
. PSCBRJ6-9 18 Shop Link
. MSRB6-1.0 40 Shop Link
. NSFMR6-38 1 Shop Link
. NSFMR6-42 1 Shop Link
. NSFMR6-24 6 Shop Link
. Ball Bearing(O.D 10mm / I.D 6mm) 20 Shop Link

3D Printed Parts

CAD Files (Onshape, Thingiverse)

Software Setup

OpenCR

Go to ExamplesOpenManipulatorexampleArduinoLinkopen_manipulator_link on Arduino IDE for OpenCR.

Processing

Open processing source code file (OpenCR>arduino>opencr_arduino>opencr>libraries>OpenManipulator>example>Processing>Link>Link.pde) on Processing IDE, and Run it.

NOTE: Upload OpenCR example source code to OpenCR before run processing source code.

Video

OpenManipulator Planar

Specification

Dimension

Hardware Setup

Parts of OpenManipulator

CAD Files (Onshape, Thingiverse)

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