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​. Users can also control it more easily by linking it with the MoveIt! package. Even if you do not have an actual robot, you can control the robot in the Gazebo simulator​.

OpenHardware

OpenManipulator is an open-hardware oriented platform​. Most of the components are uploaded as STL files so that users can easily 3d print them. It also allows users to modify the length of the links or the design of the robot for their own purposes. OpenManipulator is made of Dynamixel X ​Series which is used in TurtleBot 3.

OpenCR (Embedded board)

OpenManipulator can also be controlled using OpenCR (Open-source Control module for ROS), the control board used in TurtleBot3. The computing power and real-time controllability of OpenCR can support forward and inverse kinematics, and profile control examples. Moreover, OpenCR is compatible with many functions provided by ROS through message-communicating with ROS. OpenCR wil support ROS 2.0 in the near future.

Dynamixel Examples

OpenManipulator is composed of Dynamixel X series and 3D printing parts. Dynamixel has a modular form and adopts the daisy chain method. It allows users to easily add or remove joints for their own use. Taking advantage of this characteristic, users can build seven different types of OpenManipulator robots: Chain, SCARA, Link, Planar, Delta, Stewart and Linear.

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
Actuator   Dynamixel XM430-W350-T
Input Voltage V 12
DOF - 5 (4 DOF + 1 DOF Gripper)
Payload g 500
Speed(Joint) RPM 46
Weight kg (lb) 0.70 (1.54)
Reach mm (in) 380 (14.9)
Gripper Stroke mm (in) 20~75 (0.79~2.95)
Communication - TTL (Level Multidrop BUS)
Software - ROS, Dynamixel SDK, Arduino, Processing
Main Controller - PC, OpenCR

Dimension

Repeatability

** Coming Soon **

Getting Started

This chapter is for users who are new to OpenManipulator. The manual has an enormous amount of content, but this chapter explains how information is divided.

About OpenManipulator

First of all, collect information from the Overview and Specifications pages to get an overall understanding of OpenManipulator.

OpenManipulator Setup

When you have enough understanding about OpenManipulator from above step, here are the hardware and software setups. It is recommended to proceed in the following order.

  1. Hardware Setup: The OpenManipulator is delivered as a non-assembled part to the box. Assemble the OpenManipulator according to the instructions.
    U2D2 + U2D2 Power Hub Board or OpenCR is required to operate OpenManipulator. Please prepare U2D2 + U2D2 Power Hub Board or OpenCR when you want to operate on ROS environment, prepare OpenCR when you want to operate on embedded system. In both case, SMPS 12V5A is required to supply powers to DYNAMIXEL.

  2. Software Setup: If you want to run OpenManipulator in ROS environment, please install Linux, ROS and ROS package on PC according to PC Setup chapter. If you want to run the OpenManipulator on an embedded system, install the software on your PC and set up OpenCR by following the How to control on OpenCR chapter.

Let’s try basic manipulation

Once you have completed the above steps, run OpenManipulator through the provided Controller package. You can command the OpenManipulator to move specific position via ROS messages. As package for publishing messages, we provid the following examples.

OpenManipulator can also be operated using MoveIt!. You can run the controller package that uses MoveIt! by changing the variables in the launch file of the controller package. Please refer to the following chapters and try out various motions with MoveIt!.

If you want to use the embedded system (OpenCR) to operate the OpenManipulator, you can use the Processing and RC100 controllers to perform various manipulations by referring to the following chapters.

Challenge Various Applications

We provide examples of AR marker recognition using Astra pro, Realsence D435, and Raspberry Pi Camera V2. Refer the example below to challenge the camera-based manipulation applications.

We are proposing a way to replace and manipulate tool(gripper) of manipulator to take advantage of OpenManipulator for a wider range of applications. Try the new application using the Pen holder or Vacuum gripper as shown in the example below, and create your own tool to challenge more applications.

OpenManipulator has a complete hardware combination with Turtlebot3 waffle. Challenge your mobile manipulation by assembling TurtleBot3 waffle and OpenManipulator.

Let’s design my own manipulator

Modify the hardware(DOF, structure) and software(kinematics, trajectory) of OpenManipulator and manipulate your own OpenManipulator.
We provide a variety of OpenManipulator Friends as examples of hardware transformations. Try to control the manipulator with different structure and enjoy it. And try out the kinematics solving algorithm for the different structure.

Hardware Setup

Part Lists

  Part Name Quantity
Chassis Parts LINK FRAME(LONG) 1
. LINK FRAME(SHORT) 1
. RAIL BRACKET(LEFT) 1
. RAIL BRACKET(RIGHT) 1
. PALM GRIPPER 2
. LINK ROD 2
. FLANGE BUSH 4
. CRANK ARM 1
. RAIL BLOCK 2
. FR12-S101-K 1
. FR12-S102-K 2
. FR12-H101-K 2
. FR12-H104-K 1
Actuators Dynamixel XM430-W350-T 5
Cables CABLE-X3P-100 1
. CABLE-X3P-180 2
. CABLE-X3P-240 2
Tools Screw Driver 1
. Wrench-1.5 1
. Wrench-2.0 1
. Wrench-2.5 1
Miscellaneous X-SP 24
. NUT-M2.5 16
. NUT-M3 4
. FHS-M2.5x14 12
. WB-M2x3 38
. WB-M2x4 4
. WB-M2.5x4 4
. WB-M2.5x6 8
. WB-M2.5x8 16
. WB-M2.5x12 8
. WB-M2.5x20 4
. WB-M3x10 4
. DC12-IDLER 3
. DC12-IDLER-CAP 3
. DC12-P-BEARING 3
. RUBBER PAD 2
  Part Name Quantity
Powers SMPS 12V5A 1
Boards OpenCR 1
. U2D2 1
. U2D2 Power Hub Board 1
Plate Base Plate-02 1
. . 1

3D Printed Parts

We provide the 3D CAD files of OpenManipulator parts. User can easily modify and print them.

Assembly Manual

OpenManipulator is delivered as unassembled parts in the box. Follow the following instruction to assemble it.

Board Setup

U2D2

Connect micro USB (connected to PC), Dynamixel(OpenManipulator), and 12V Power to U2D2 and U2D2 power hub board as shown below.

NOTE: U2D2 and U2D2 power hub board are required when operating OpenManipulator using U2D2.

OpenCR

This chapter explains how to set up OpenCR as a communication board between ROS Packages of PC and DYNAMIXEL of OpenManipulator. If you want to operate OpenManipulator on embedded system (OpenCR) without ROS, please refer how to control on opencr.

Connect micro USB (connected to PC), Dynamixel(OpenManipulator), and 12V Power to OpenCR as shown below.

Please refer the detailed description of OpenCR

Download Arduino IDE and load OpenCR board on it

Find usb to dxl example source codes.

Go to ExamplesOpenCR10.Etcusb_to_dxl on Arduino IDE for OpenCR.

Upload the usb to dxl example source to OpenCR.

PC Setup

NOTE:

  • The following instruction has been tested on Ubuntu 16.04 and ROS Kinetic Kame.
  • If you would like to control OpenManipulator on OpenCR (Embedded board) instead of using ROS, please set it up as described in How to Control on OpenCR.

Install Ubuntu on PC

Download and install Ubuntu 16.04 on your PC.

If you need more help with installing Ubuntu, check out the step-by-step guide from the link below.

Install ROS on PC

The following script will allow you to simplify the ROS installation procedure. Run the following command in a terminal window. The terminal application can be found with the Ubuntu search icon on the top left corner of the screen. The shortcut key to open a terminal is Ctrl+Alt+t. After installing ROS, please reboot PC.

$ sudo apt-get update
$ sudo apt-get upgrade
$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh && chmod 755 ./install_ros_kinetic.sh && bash ./install_ros_kinetic.sh

NOTE: In order to check which packages are installed, please check this link out. install_ros_kinetic.sh

If you prefer manual installation, please following the link below.

Install ROS Packages

Install dependent packages for OpenManipulator. Run the following command in a terminal window.

NOTE: The terminal application can be found with the Ubuntu search icon on the top left corner of the screen. Shortcut key for terminal is Ctrl+Alt+t.

$ sudo apt-get install ros-kinetic-ros-controllers ros-kinetic-gazebo* ros-kinetic-moveit* ros-kinetic-industrial-core
$ cd ~/catkin_ws/src/
$ git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ git clone https://github.com/ROBOTIS-GIT/dynamixel-workbench.git
$ git clone https://github.com/ROBOTIS-GIT/dynamixel-workbench-msgs.git
$ 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
$ git clone https://github.com/ROBOTIS-GIT/robotis_manipulator.git
$ cd ~/catkin_ws && catkin_make

If the catkin_make command has been completed without any errors, all the preparations for using OpenManipulator are done.

USB Settings

NOTE:If you are using OpenCR instead of U2D2 as a board, you can skip this step.

The following commands allow to use USB port

$ rosrun open_manipulator_controller create_udev_rules

TIP: This entered command set USB latency timer to 1 ms. If you would like to see the setting, run the following command in a terminal.
cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer

Controller

The OpenManipulator controller provides basic manipulation of OpenManipulator. You can control the dynamixel of OpenManipulator and check states of OpenManipulator through messages of the controller.

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

Run roscore

Run roscore.

$ roscore

Launch Controller

Before you launch controller, let’s check open_manipulator_controller launch file in open_manipulator_controller package.

  <launch>
    <arg name="use_robot_name"         default="open_manipulator"/>

    <arg name="dynamixel_usb_port"     default="/dev/ttyUSB0"/>
    <arg name="dynamixel_baud_rate"    default="1000000"/>

    <arg name="control_period"         default="0.010"/>

    <arg name="use_platform"           default="true"/>

    <arg name="use_moveit"             default="false"/>
    <arg name="planning_group_name"    default="arm"/>
    <arg name="moveit_sample_duration" default="0.050"/>

    <group if="$(arg use_moveit)">
      <include file="$(find open_manipulator_controller)/launch/open_manipulator_moveit.launch">
        <arg name="robot_name"      value="$(arg use_robot_name)"/>
        <arg name="sample_duration" value="$(arg moveit_sample_duration)"/>
      </include>
    </group>

    <node name="$(arg use_robot_name)" pkg="open_manipulator_controller" type="open_manipulator_controller" output="screen" args="$(arg dynamixel_usb_port) $(arg dynamixel_baud_rate)">
        <param name="using_platform"       value="$(arg use_platform)"/>
        <param name="using_moveit"         value="$(arg use_moveit)"/>
        <param name="planning_group_name"  value="$(arg planning_group_name)"/>
        <param name="control_period"       value="$(arg control_period)"/>
        <param name="moveit_sample_duration"  value="$(arg moveit_sample_duration)"/>
    </node>

  </launch>

Parameters List : The parameters list is used to set control environments.

use_robot_name is a parameter to set manipulator name(namespace of ROS messages).
dynamixel_usb_port is a parameter to set use port to connected with Dynamixel of OpenManipulator. If you use U2D2, it should be set /dev/ttyUSB@. If you use OpenCR, it should be set /dev/ttyACM@ (@ indicates the port number connected to the Dynamixel).
dynamixel_baud_rate is a parameter to set baud rate of dynamixel. default baud rate of dynamixel used in OpenManipulator is 1000000.
control_period is a parameter to set communication period between dynamixel and PC (control loop time).
use_platform is a parameter that sets whether to use the actual OpenManipulator or OpenManipulator simulation. please refer Gazebo Simulation chapter.
use_moveit, planning_group_name and moveit_sample_duration are parameters supposed to set loading move_group package. please refer MoveIt! chapter.

After set the parameters, launch the OpenManipulator controller to start basic manipulation.

$ roslaunch open_manipulator_controller open_manipulator_controller.launch

WARNING: It is recommended to place OpenManipulator at the following pose and start the controller so that each component of OpenManipulator does not conflict.

If the OpenManipulator controller has been launched successfully, the terminal will show the following message.

SUMMARY
========

PARAMETERS
 * /open_manipulator/control_period: 0.01
 * /open_manipulator/moveit_sample_duration: 0.05
 * /open_manipulator/planning_group_name: arm
 * /open_manipulator/using_moveit: False
 * /open_manipulator/using_platform: True
 * /rosdistro: kinetic
 * /rosversion: 1.12.14

NODES
  /
    open_manipulator (open_manipulator_controller/open_manipulator_controller)

ROS_MASTER_URI=http://localhost:11311

process[open_manipulator-1]: started with pid [23452]
Joint Dynamixel ID : 11, Model Name : XM430-W350
Joint Dynamixel ID : 12, Model Name : XM430-W350
Joint Dynamixel ID : 13, Model Name : XM430-W350
Joint Dynamixel ID : 14, Model Name : XM430-W350
Gripper Dynamixel ID : 15, Model Name :XM430-W350
[ INFO] [1544509070.096942788]: Succeeded to init /open_manipulator

TIP:

  • If you can’t load Dynamixels, please check your Dynamixels settings using the following command from the Dynamixel-Workbench packages.
    rosrun dynamixel_workbench_controllers find_dynamixel /dev/ttyUSB0
    Even if you can’t find any Dynamixels, please check firmware to use ROBOTIS software (R+ Manager 2.0 or R+ Manager 1.0)
  • If you would like to change Dynamixel ID, please check OpenManipulator.cpp in the open_manipulator_lib folder. The default ID is 11, 12, 13, 14 for joints and 15 for the gripper

NOTE: open_manipulator_controller is compatible with Protocol 2.0. Since Protocol 1.0 doesn’t support SyncRead instructions that has access to multiple Dynamixels simultaneously. Protocol 2.0 supports MX2, X and Pro series, but it does not support AX, RX and EX.

Check Setting

Manipulator Description

NOTE:

  • The below instruction has been tested on Ubuntu 16.04 and ROS Kinetic Kame.
  • This instruction is supposed to be running on PC ROS packages installed in. Please run the instructions below on your PC ROS packages installed in.
  • Make sure to run the Open Manipulator controller instructions before running the instructions below.

Publish a topic message to check the OpenManipulator setting.

$ rostopic pub /open_manipulator/option std_msgs/String "print_open_manipulator_setting"

<Manipulator Description> will be printed on the terminal launch the open_manipulator_controller. It is shown that present state of the OpenManipulator.
This parameter is descripted on OpenManipulator.cpp in open_manipulator_libs pkg
~/catkin_ws/src/open_manipulator/open_manipulator_libs/src/OpenManipulator.cpp

----------<Manipulator Description>----------
<Degree of freedom>
 4.000
<Size of Components>
 5.000

<Configuration of world>
 [Name]
 -World Name : world
 -Child Name : joint1
 [Static Pose]
 -Position : 
(0.000, 0.000, 0.000)
 -Orientation : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 [Dynamic Pose]
 -Linear Velocity : 
(0.000, 0.000, 0.000)
 -Linear acceleration : 
(0.000, 0.000, 0.000)
 -Angular Velocity : 
(0.000, 0.000, 0.000)
 -Angular acceleration : 
(0.000, 0.000, 0.000)

<Configuration of gripper>
 [Component Type]
  Tool
 [Name]
 -Parent Name : joint4
 [Actuator]
 -Actuator Name : tool_dxl
 -ID :  15
 -Joint Axis : 
(0.000, 0.000, 0.000)
 -Coefficient :  -0.015
 -Limit : 
    Maximum : 0.010, Minimum : -0.010
 [Actuator Value]
 -Value :  0.008
 -Velocity :  0.000
 -Acceleration :  0.000
 -Effort :  0.000
 [Constant]
 -Relative Position from parent component : 
(0.130, 0.000, 0.000)
 -Relative Orientation from parent component : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Mass :  0.000
 -Inertia Tensor : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Center of Mass : 
(0.000, 0.000, 0.000)
 [Variable]
 -Position : 
(0.138, -0.005, 0.015)
 -Orientation : 
(-0.006, 0.043, 0.999
 0.000, 0.999, -0.043
 -1.000, 0.000, -0.006)
 -Linear Velocity : 
(0.000, 0.000, 0.000)
 -Linear acceleration : 
(0.000, 0.000, 0.000)
 -Angular Velocity : 
(0.000, 0.000, 0.000)
 -Angular acceleration : 
(0.000, 0.000, 0.000)

<Configuration of joint1>
 [Component Type]
  Active Joint
 [Name]
 -Parent Name : world
 -Child Name 1 : joint2
 [Actuator]
 -Actuator Name : joint_dxl
 -ID :  11
 -Joint Axis : 
(0.000, 0.000, 1.000)
 -Coefficient :  1.000
 -Limit : 
    Maximum : 3.142, Minimum : -3.142
 [Actuator Value]
 -Value :  -0.043
 -Velocity :  0.000
 -Acceleration :  0.000
 -Effort :  0.000
 [Constant]
 -Relative Position from parent component : 
(0.012, 0.000, 0.017)
 -Relative Orientation from parent component : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Mass :  0.000
 -Inertia Tensor : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Center of Mass : 
(0.000, 0.000, 0.000)
 [Variable]
 -Position : 
(0.012, 0.000, 0.017)
 -Orientation : 
(0.999, 0.043, 0.000
 -0.043, 0.999, 0.000
 0.000, 0.000, 1.000)
 -Linear Velocity : 
(0.000, 0.000, 0.000)
 -Linear acceleration : 
(0.000, 0.000, 0.000)
 -Angular Velocity : 
(0.000, 0.000, 0.000)
 -Angular acceleration : 
(0.000, 0.000, 0.000)

<Configuration of joint2>
 [Component Type]
  Active Joint
 [Name]
 -Parent Name : joint1
 -Child Name 1 : joint3
 [Actuator]
 -Actuator Name : joint_dxl
 -ID :  12
 -Joint Axis : 
(0.000, 1.000, 0.000)
 -Coefficient :  1.000
 -Limit : 
    Maximum : 1.571, Minimum : -2.050
 [Actuator Value]
 -Value :  -0.052
 -Velocity :  0.000
 -Acceleration :  0.000
 -Effort :  0.000
 [Constant]
 -Relative Position from parent component : 
(0.000, 0.000, 0.058)
 -Relative Orientation from parent component : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Mass :  0.000
 -Inertia Tensor : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Center of Mass : 
(0.000, 0.000, 0.000)
 [Variable]
 -Position : 
(0.012, 0.000, 0.075)
 -Orientation : 
(0.998, 0.043, -0.052
 -0.043, 0.999, 0.002
 0.052, 0.000, 0.999)
 -Linear Velocity : 
(0.000, 0.000, 0.000)
 -Linear acceleration : 
(0.000, 0.000, 0.000)
 -Angular Velocity : 
(0.000, 0.000, 0.000)
 -Angular acceleration : 
(0.000, 0.000, 0.000)

<Configuration of joint3>
 [Component Type]
  Active Joint
 [Name]
 -Parent Name : joint2
 -Child Name 1 : joint4
 [Actuator]
 -Actuator Name : joint_dxl
 -ID :  13
 -Joint Axis : 
(0.000, 1.000, 0.000)
 -Coefficient :  1.000
 -Limit : 
    Maximum : 1.530, Minimum : -1.571
 [Actuator Value]
 -Value :  0.546
 -Velocity :  0.000
 -Acceleration :  0.000
 -Effort :  0.000
 [Constant]
 -Relative Position from parent component : 
(0.024, 0.000, 0.128)
 -Relative Orientation from parent component : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Mass :  0.000
 -Inertia Tensor : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Center of Mass : 
(0.000, 0.000, 0.000)
 [Variable]
 -Position : 
(0.029, -0.001, 0.204)
 -Orientation : 
(0.880, 0.043, 0.474
 -0.038, 0.999, -0.020
 -0.474, 0.000, 0.880)
 -Linear Velocity : 
(0.000, 0.000, 0.000)
 -Linear acceleration : 
(0.000, 0.000, 0.000)
 -Angular Velocity : 
(0.000, 0.000, 0.000)
 -Angular acceleration : 
(0.000, 0.000, 0.000)

<Configuration of joint4>
 [Component Type]
  Active Joint
 [Name]
 -Parent Name : joint3
 -Child Name 1 : gripper
 [Actuator]
 -Actuator Name : joint_dxl
 -ID :  14
 -Joint Axis : 
(0.000, 1.000, 0.000)
 -Coefficient :  1.000
 -Limit : 
    Maximum : 2.000, Minimum : -1.800
 [Actuator Value]
 -Value :  1.083
 -Velocity :  0.000
 -Acceleration :  0.000
 -Effort :  -2.690
 [Constant]
 -Relative Position from parent component : 
(0.124, 0.000, 0.000)
 -Relative Orientation from parent component : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Mass :  0.000
 -Inertia Tensor : 
(1.000, 0.000, 0.000
 0.000, 1.000, 0.000
 0.000, 0.000, 1.000)
 -Center of Mass : 
(0.000, 0.000, 0.000)
 [Variable]
 -Position : 
(0.138, -0.005, 0.145)
 -Orientation : 
(-0.006, 0.043, 0.999
 0.000, 0.999, -0.043
 -1.000, 0.000, -0.006)
 -Linear Velocity : 
(0.000, 0.000, 0.000)
 -Linear acceleration : 
(0.000, 0.000, 0.000)
 -Angular Velocity : 
(0.000, 0.000, 0.000)
 -Angular acceleration : 
(0.000, 0.000, 0.000)
---------------------------------------------

RViz

NOTE:

  • This instruction has been tested on Ubuntu 16.04 and ROS Kinetic Kame.
  • This instruction is supposed to be run on PC ROS packages installed in. Please run the instructions below on your PC ROS packages installed in.

Load OpenManipulator on RViz.

$ roslaunch open_manipulator_description open_manipulator_rviz.launch

NOTE:

  • If you launched the OpenManipulator controller before launching the open_manipulator_controller file, the robot model on Rviz would be synchronized with the actual robot.
  • If the user would like to check only model of OpenManipulator without control the actual OpenManipulator, the user can launch the Rviz without the OpenManipulator controller. The user can change each joint by GUI, if the user launch only Rviz by executing the following command : $ roslaunch open_manipulator_description open_manipulator_rviz.launch use_gui:=true

Message List

NOTE:

  • This instruction has been tested on Ubuntu 16.04 and ROS Kinetic Kame.
  • This instruction is supposed to be running on PC ROS packages installed in. Please run the instructions below on your PC ROS packages installed in.
  • Make sure to run the Open Manipulator controller instructions before running the instructions below.

Open Manipulator Controller provides topic and service messages to control manipulator and check the states of manipulator.

Topic

Topic Monitor

In order to check the topics of OpenManipulator controller, you can use rqt provided by ROS. Rqt is a Qt-based framework for GUI development for ROS. Rqt allows users to easily see topic status by displaying all topics on a topic list. You can see topic name, type, bandwidth, Hz and value on rqt.

Run rqt.

$ rqt

TIP: If rqt is not displayed, select the plugin -> Topics -> Topic Monitor.

Topics without their checkboxes clicked will not be monitored. To monitor topics, click on the checkboxes next to topic names.

If you would like to see more detail topic message, click the button next to each checkbox.

Published Topic List

Published Topic List : A list of topics that the open_manipulator_controller publishes.

NOTE: These topics are messages for checking the status of the robot regardless of the robot’s motion.

/open_manipulator/joint_states(sensor_msgs/JointState) is a message indicating the states of joints of OpenManipulator. “name” indicates joint component names. “effort” shows currents of the joint Dynamixels. “position” and “velocity” indicates angles and angular velocities of joints.

/open_manipulator/gripper/kinematics_pose(open_manipulator_msgs/KinematicsPose) is a message indicating pose (position and orientation) in task space. “position” indicates the x, y and z values of the center of the end-effector (tool). “Orientation” indicates the direction of the end-effector (tool) as quaternion.

/open_manipulator/states(open_manipulator_msgs/OpenManipulatorState) is a message indicating the status of OpenManipulator. “open_manipulator_actuator_state” indicates whether actuators (Dynamixels) are enabled (“ACTUATOR_ENABLE”) or disabled (“ACTUATOR_DISABLE”). “open_manipulator_moving_state” indicates whether OpenManipulator is moving along the trajectory (“IS_MOVING”) or stopped (“STOPPED”).

Subscribed Topic List

Subscribed Topic List: A list of topics that the open_manipulator_controller subscribes.

NOTE: These topics are messages for checking the status of the robot regardless of the robot’s motion.

/open_manipulator/option(std_msgs::String) is used to set OpenManipulator options.

In addition, you can monitor topics through rqt whenever you have a topic added in your controller.

Service

Service Server List

NOTE: These services are messages to operate OpenManipulator or to change the status of the Dynamixels of OpenManipulator.

Service Server List : A list of service servers that open_manipulator_controller has.

Basic Manipulation

GUI Program

NOTE:

  • This instructions has been tested on Ubuntu 16.04 and ROS Kinetic Kame.
  • This instructions are supposed to be running on PC ROS packages installed in. Please run the instructions below on your PC ROS packages installed in.
  • Make sure to run the Open Manipulator controller instructions before running the instruction below.

You can use the GUI program to manipulate OpenManipulator. Launch open_manipulator_control_gui node. This program shows the status of and allows users to control OpenManipulator.

  $ roslaunch open_manipulator_control_gui open_manipulator_control_gui.launch

To controll OpenManipulator, first click on the Timer Start button.

To check the status of the OpenManipulator (joint states, kinematics pose).

To manipulate the OpenManipulator in the joint space. Enter the joint angles and total time of the trajectory. Then click the send button.

To manipulate the OpenManipulator in the task space. Enter the kinematics pose of the OpenManipulator end-effector(tool) in the task space and the total time of the trajectory. Then click the send button.

To create a drawing trajectory with the OpenManipulator. First, choose the drawing trajectory type(line, circle, rhombus, heart). And enter the parameters according to the drawing trajectory type and the total time of the drawing trajectory. Then click the send button.

Teleoperation

NOTE:

  • This instruction has been tested on Ubuntu 16.04 and ROS Kinetic Kame.
  • This instruction is supposed to be run on PC with ROS packages installed in. Please run the instruction below on your PC ROS packages installed in.
  • Make sure to run Open Manipulator controller instructions before running the instructions below.

Keyboard

TIP: The terminal application can be found with the Ubuntu search icon on the top left corner of the screen. Shortcut key for terminal is Ctrl-Alt-T.

Launch open_manipulator_teleop_keyboard node for simple teleoperation test using the keyboard.

  $ roslaunch open_manipulator_teleop open_manipulator_teleop_keyboard.launch 

If the node is successfully launched, the following instruction will appeare in the terminal window.

  ---------------------------
  Control Your OpenManipulator!
  ---------------------------
  w : increase x axis in task space
  s : decrease x axis in task space
  a : increase y axis in task space
  d : decrease y axis in task space
  z : increase z axis in task space
  x : decrease z axis in task space

  y : increase joint 1 angle
  h : decrease joint 1 angle
  u : increase joint 2 angle
  j : decrease joint 2 angle
  i : increase joint 3 angle
  k : decrease joint 3 angle
  o : increase joint 4 angle
  l : decrease joint 4 angle

  g : gripper open
  f : gripper close
        
  1 : init pose
  2 : home pose
        
  q to quit
  ---------------------------
  Present Joint Angle J1: 0.000 J2: 0.000 J3: 0.000 J4: 0.000
  Present Kinematics Position X: 0.000 Y: 0.000 Z: 0.000
  ---------------------------

PS4 Joystick

Install packages for teleoperation using PS4 joystick.

$ sudo apt-get install ros-kinetic-joy ros-kinetic-joystick-drivers ros-kinetic-teleop-twist-joy
$ sudo pip install ds4drv

Connect PS4 joystick to the PC via Bluetooth using the following command

$ sudo ds4drv

Enter pairing mode with PS4 by pressing and holding Playstation button + share button for 10 sec. If the light on PS4 turns blue, enter the following commands in terminal and control OpenManipulator.

$ export ROS_NAMESPACE=/open_manipulator
$ roslaunch teleop_twist_joy teleop.launch

$ roslaunch open_manipulator_teleop open_manipulator_teleop_joystick.launch

XBOX 360 Joystick

Install packages for teleoperation using XBOX 360 joystick.

$ sudo apt-get install xboxdrv ros-kinetic-joy ros-kinetic-joystick-drivers ros-kinetic-teleop-twist-joy

Connect XBOX 360 joystick to the PC with Wireless Adapter or USB cable, and launch teleoperation packages for XBOX 360 joystick.

$ sudo xboxdrv --silent

$ export ROS_NAMESPACE=/open_manipulator
$ roslaunch teleop_twist_joy teleop.launch

$ roslaunch open_manipulator_teleop open_manipulator_teleop_joystick.launch

MoveIt!

TIP: The terminal application can be found with the Ubuntu search icon on the top left corner of the screen. Shortcut key for terminal is Ctrl-Alt-T.

Before you launch controller using MoveIt!, check open_manipulator_controller launch file in open_manipulator_controller package.

  <launch>
    <arg name="use_robot_name"         default="open_manipulator"/>

    <arg name="dynamixel_usb_port"     default="/dev/ttyUSB0"/>
    <arg name="dynamixel_baud_rate"    default="1000000"/>

    <arg name="control_period"         default="0.010"/>

    <arg name="use_platform"           default="true"/>

    <arg name="use_moveit"             default="false"/>
    <arg name="planning_group_name"    default="arm"/>
    <arg name="moveit_sample_duration" default="0.050"/>

    <group if="$(arg use_moveit)">
      <include file="$(find open_manipulator_controller)/launch/open_manipulator_moveit.launch">
        <arg name="robot_name"      value="$(arg use_robot_name)"/>
        <arg name="sample_duration" value="$(arg moveit_sample_duration)"/>
      </include>
    </group>

    <node name="$(arg use_robot_name)" pkg="open_manipulator_controller" type="open_manipulator_controller" output="screen" args="$(arg dynamixel_usb_port) $(arg dynamixel_baud_rate)">
        <param name="using_platform"       value="$(arg use_platform)"/>
        <param name="using_moveit"         value="$(arg use_moveit)"/>
        <param name="planning_group_name"  value="$(arg planning_group_name)"/>
        <param name="control_period"       value="$(arg control_period)"/>
        <param name="moveit_sample_duration"  value="$(arg moveit_sample_duration)"/>
    </node>

  </launch>

Parameters List : The below parameters can be used to load move_group package.

use_moveit is a parameter to set whether to use MoveIt!
planning_group_name is a parameter to set in setup_assistant
moveit_sample_duration is a parameter to set sampling time when joint trajectory is planned from MoveIt!

After set the parameters, launch the open_manipulator_controller.

  $ roslaunch open_manipulator_controller open_manipulator_controller.launch use_moveit:=true

Warning!
When launching the controller to use MoveIt!, OpenManipulator launch file must be turned off.

Service Server List : A list of MoveIt!-related service server that open_manipulator_controller has.

TIP: If you would like to use inverse kinematics with position_only, check open_manipulator_moveit -> config -> kinematics.yaml and set position_only_ik parameter to True.

Gazebo Simulation

NOTE:

  • This instruction has been tested on Ubuntu 16.04 and ROS Kinetic Kame.
  • This instruction is supposed to be run on PC with ROS packages installed in.

Controller for gazebo

Launch the open_manipulator_controller for gazebo simulation.

  $ roslaunch open_manipulator_controller open_manipulator_controller.launch use_platform:=false

NOTE:

  • To control the OpenManipulator in the Gazebo environment using the Open Manipulator Controller, the controller must set the use_platform parameter to false because it needs to send messages to gazebo instead of Platform.
  • If you want to manipulate the OpenManipulator using Moveit within the Gazebo simulator, you should also convert the use_moveit to ture in open_manipulator_controller launch file.

If the OpenManipulator controller for gazebo simulation Launched successfully, the terminal will represent below messages.

SUMMARY
========

PARAMETERS
 * /open_manipulator/control_period: 0.01
 * /open_manipulator/moveit_sample_duration: 0.05
 * /open_manipulator/planning_group_name: arm
 * /open_manipulator/using_moveit: False
 * /open_manipulator/using_platform: False
 * /rosdistro: kinetic
 * /rosversion: 1.12.14

NODES
  /
    open_manipulator (open_manipulator_controller/open_manipulator_controller)

ROS_MASTER_URI=http://localhost:11311

process[open_manipulator-1]: started with pid [9820]
[ INFO] [1544506914.862653563]: Ready to simulate /open_manipulator on Gazebo

NOTE : In OpenManipulator controller for gazebo simulation, Joint and Gripper Dynamixel are not enable, following messages will not display :
Joint Dynamixel ID : 11, Model Name : XM430-W350
Joint Dynamixel ID : 12, Model Name : XM430-W350
Joint Dynamixel ID : 13, Model Name : XM430-W350
Joint Dynamixel ID : 14, Model Name : XM430-W350
Gripper Dynamixel ID : 15, Model Name :XM430-W350

Launch gazebo

Load OpenManipulator on Gazebo simulator and click on Play button.

  $ roslaunch open_manipulator_gazebo open_manipulator_gazebo.launch

A red box is pointing end-effector link.

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/gripper/kinematics_pose
  /open_manipulator/gripper_position/command
  /open_manipulator/gripper_sub_position/command
  /open_manipulator/joint1_position/command
  /open_manipulator/joint2_position/command
  /open_manipulator/joint3_position/command
  /open_manipulator/joint4_position/command
  /open_manipulator/joint_states
  /open_manipulator/option
  /open_manipulator/states
  /rosout
  /rosout_agg

Open an open_manipulator_control_gui

How to Control on OpenCR

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 for Friends of OpenManipulator. User can make thier code in Arduino IDE and simulate or control using Processing GUI.

NOTE: OpenManipulator controller with OpenCR does not use ROS The way OpenManipulator is controlled by OpenCR (embedded system) and ROS is completely different. In the method using ROS, the controller runs in PC, but in OpenCR control, the controller runs in OpenCR without ROS.

Setup

Connect micro USB (connected to PC), Dynamixel(OpenManipulator), and 12V Power to OpenCR as shown below.

Please refer the detailed description of OpenCR

Arduino IDE

Download Arduino IDE and load OpenCR board on it

Find example source codes.

Go to ExamplesOpenManipulatorexampleChainopen_manipulator_chain on Arduino IDE for OpenCR.

Upload the example source to OpenCR.

Tip: If an error of cmd_read_board_name fail: 0xF020 occurs constantly during upload, please refer to OpenCR e-manual to enter the firmware recovery mode and upload the source code again after entering mode. .

Processing

Download Processing and load OpenCR board on it

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

Download processing source code for OpenManipulator.

$ git clone https://github.com/ROBOTIS-GIT/open_manipulator_processing.git

Open processing source code file (open_manipulator_processingChainChain.pde) on Processing IDE, and Run it.

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

Basic Manipulation on OpenCR

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

Control Interface

The user can use processing program to manipulate the OpenManipulator.
To manipulate the OpenManipulator, click the toggle button to CONTROLLER ON.

The user can manipulate the OpenManipulator in the joint space.
Set the joint angles. Then click the SEND JOINT ANGLE button. And set the gripper parameter. Then click the SET GRIPPER button.

The user can manipulate the OpenManipulator in the (task space). Click the TASK SPACE CONTROL button to change the tab.
Click the desired direction button to manipulate the OpenManipulator.

Teleoperation RC100

The settings for ROBOTIS RC-100B controller is included in the OpenCR firmware for OpenManipulator. This controller can be used with the Bluetooth module BT410.

Hand guiding

The user can make the demonstration using hand guiding function.

  1. Click the HAND GUIDING button to change the tab.
  2. Holds the OpenManipulator by hand and click the toggle button to TORQUE OFF.
  3. Move the OpenManipulator to the desired pose by hand.
  4. Click the SAVE JOINT POSE to save the present pose.
  5. Repeat step 3 and 4 to create the demonstration.
  6. Click the toggle button to TORQUE ON
  7. Click the MOTION START button to start the saved poses.

Click the toggle button to MOTION REPEAT ON if you want to repeat the demonstration.
The total time of the trajectory between saved poses is the same as 2 seconds.

Camera Application

NOTE:

  • This instructions were tested on Ubuntu 16.04 and ROS Kinetic Kame.
  • This instructions are supposed to be running on PC ROS packages installed in. Please run the instructions below on your PC ROS packages installed in.

Astra Pro

Overview

The Astra Series was designed to further improve on the attributes that set Orbbec 3D cameras apart from existing 3D cameras on the market. Astra 3D cameras provide computer vision that enables dozens of functions such as face recognition, gesture recognition, human body tracking, three-dimensional measurement, environment perception, and three-dimensional map reconstruction.

Specifications

Items Specifications
RGB Image Resolution and Frame Rate 1280 x 720, @30fps
Depth Imgae Resolution and Frame Rate 640 x 480, @30fps
FOV (Field-of-View) 60°H x 49.5°V x 73°D
Range 0.6m - 8m
USB Port USB 2.0
Dimensions 165mm x 30mm x 40mm
Operating Systems Android/Linux/Windows 7/8/10
SDK Astra SDK or OpenNI
Microphones 2 (Built - in)

User Guide

Installation

The following commands will install relevant Astra Pro library.

  $ sudo apt-get install ros-kinetic-rgbd-launch ros-kinetic-libuvc-camera
  $ cd ~/catkin_ws/src
  $ git clone https://github.com/orbbec/ros_astra_camera.git
  $ git clone https://github.com/ROBOTIS-GIT/ros_astra_launch.git
  $ cd ~/catkin_ws && catkin_make
  $ roscd astra_camera && ./scripts/create_udev_rules

Execution

Run the following command.

  $ sudo chmod a+rw /dev/bus/usb/${USB}/${PORT}
  $ roslaunch ros_astra_launch astra_pro.launch

You can use rviz or image_view to verify driver. You can select data topic name related to Astra Pro from drop down menu at the top of the application.

  $ rqt_image_view

Reference

Realsense D435

Overview

The Intel® RealSense™ Depth Camera D435 is a USB-powered depth camera and consists of a pair of depth sensors, RGB sensor, and infrared projector. It is ideal for makers and developers to add depth perception capability to their prototype development. The D435 is designed to best fit your prototype.

Specifications

Items Specifications
Use Environment Indoor/Outdoor
RGB Sensor Resolution and Frame Rate 1920 x 1080 at 30 fps
RGB Sensor FOV 69.4°(H) x 42.5°(V) x 77°(D) (+/- 3°)
Depth Stream Output Resolution Up to 1280 x 720
Depth Stream Output Frame Rate Up to 90 fps
Depth Field of View (FOV) 85.2°(H) x 58°(V) x 94°(D) (+/- 3°)
Minimum Depth Distance (Min-Z) 0.2m
Maximum Range Approx.10 meters
Dimension 90 mm x 25 mm x 25 mm
Connectors USB 3.0 Type - C

User Guide

Installation

The following commands will install relevant Intel® RealSense™ Depth Camera D435 library.

  $ sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main" -u
  $ sudo apt-get install librealsense2-dev ros-kinetic-rgbd-launch
  $ cd ~/catkin_ws/src
  $ git clone https://github.com/intel-ros/realsense.git
  $ cd ~/catkin_ws && catkin_make

Execution

Run the following command.

  $ roslaunch realsense2_camera rs_camera.launch

You can use rviz or image_view to verify driver. You can select data topic name related to Intel® RealSense™ Depth Camera D435 from drop down menu at the top of the application.

  $ rqt_image_view

Reference

Raspberry Pi Camera V2

Overview

Please refer the detailed description of Raspberry Pi Camera V2

Specifications

Please refer the detailed Specification of Raspberry Pi Camera V2

User Guide

Installation

Warning!
Raspberry pi must be installed before setting up the Raspberry Pi Camera V2.
Please check this link out. Raspberry Pi 3 Setup

[Raspberry Pi] Setting up the camera hardware

$ sudo raspi-config

Select 3 Interfacing Options

Select P1 Camera

Enable camera interface

After reboot Raspberry Pi, to test that the system is installed and working, try the following command:

$ raspistill -v -o test.jpg

The display should show a five-second preview from the camera and then take a picture, saved to the file test.jpg

The following commands will install relevant Raspberry Pi Camera packages on your ROS system.

$ cd ~/catkin_ws/src
$ git clone https://github.com/UbiquityRobotics/raspicam_node.git
$ cd ~/catkin_ws && catkin_make

Execution

Warning!
Before you run rqt_image_view in Remote PC, check your Raspberry Pi and Remote PC whether they are connected. Please check this link out.
Raspberry Pi 3 Setup
Remote PC Setup

[Remote PC] Run the following command

$ roscore
$ rqt_image_view

[Raspberry Pi] Run the following command.

$ roslaunch raspicam_node camerav2_1280x960.launch

Reference

AR Marker

NOTE:

  • This instructions were tested on Ubuntu 16.04 and ROS Kinetic Kame.
  • The open_manipulator_perceptions package requires ar_track_alvar package.
  • Make sure to run the Open Manipulator controller instructions before running the instructions below.

Installation

NOTE:

  • To use the Raspberry Pi Camera V2, install it on the Remote PC
  $ sudo apt-get install ros-kinetic-ar-track-alvar ros-kinetic-ar-track-alvar-msgs
  $ cd ~/catkin_ws/src
  $ git clone https://github.com/ROBOTIS-GIT/open_manipulator_perceptions.git
  $ cd ~/catkin_ws && catkin_make

Execution

You have to change the parameters according to the type of camera. Run the following command.

Astra Pro

  $ roslaunch open_manipulator_ar_markers ar_pose.launch camera_model:=astra_pro

Realsense D435

  $ roslaunch open_manipulator_ar_markers ar_pose.launch camera_model:=realsense_d435

Raspberry Pi Camera V2

[Raspberry Pi]

  $ roslaunch raspicam_node camerav2_1280x960.launch 

[Remote PC]

  $ roslaunch open_manipulator_ar_markers ar_pose.launch camera_model:=raspicam

Rviz

When the camera recognizes the AR marker, the pose of the AR marker is shown on Rviz.

Tool Modification

Vacuum Gripper

Video

Hardware Setup

Part List

  Part Name Quantity Link
3D Printed Tool Part Vacuum Holder 1 Download Link
Vacuum System ARDUINO 4 RELAYS SHIELD 1 shop Link
. 12V Air Pump Motor 1 shop Link
. UD0640-20-C (Air Tube 6Ø) 1 shop Link
. UD0860-20-C (Air Tube 8Ø) 1 shop Link
. MSCNL6-1 (Coupling 6Ø) 1 shop Link
. MSCNL8-1 (Coupling 8Ø) 2 shop Link
. MVPKE8 (Suction Cup) 1 shop Link
. MHE3-M1H-3/2G-1/8 (Control Valve) 1 shop Link
. NEBV-Z4WA2L-P-E-2.5-N-LE2-S1 (Cable for Valve) 1 shop Link

Software Setup

Please refer the detailed description of How to Control on OpenCR
Download Arduino IDE and load OpenCR board on it

Find example source codes.

Go to ExamplesOpenManipulatorexampleChainopen_manipulator_chain_vacuum on Arduino IDE for OpenCR.

Pen Holder

Video

Hardware Setup

  Part Name Quantity Link
3D Printed Tool Part Pen Holder 1 Download Link

Software Setup

Please refer the detailed description of How to Control on OpenCR
Download Arduino IDE and load OpenCR board on it

Find example source codes.

Go to ExamplesOpenManipulatorexampleChainopen_manipulator_chain_pen on Arduino IDE for OpenCR.

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
  $ sudo apt-get install ros-kinetic-smach*
  $ 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

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 Quantity 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

Download the OpenCR and open_manipulator_processing libraries.

OpenCR

Go to ExamplesOpenManipulatorexampleArduinoScaraopen_manipulator_scara on Arduino IDE for OpenCR.

Processing

Open processing source code file (open_manipulator_processingScaraScara.pde) on Processing IDE.

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 Quantity Link
Plate Base Plate-02 1 Shop Link
Chassis Parts 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 2 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

Download the OpenCR and open_manipulator_processing libraries.

OpenCR

Go to ExamplesOpenManipulatorexampleArduinoLinkopen_manipulator_link on Arduino IDE for OpenCR.

Processing

Open processing source code file (open_manipulator_processingLinkLink.pde) on Processing IDE.

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

Video

OpenManipulator Planar

Specification

Items Unit  
Actuator   Dynamixel XM430-W350-T
Input Voltage V 12
DOF - 3
Speed(Joint) RPM 46
Communication - TTL (Level Multidrop BUS)
Software - Dynamixel SDK, Arduino, Processing
Main Controller - PC, OpenCR

Dimension

Hardware Setup

Part Lists

  Part Name Quantity Link
Chassis Parts BASE FRAME 1 Download Link
. laser_gripper 1 Download Link
. link_100 3 Download Link
. link_120 3 Download Link
. HN12_I101 3 Shop Link
Actuators Dynamixel XM430-W350-T 3 Shop Link
Cables CABLE_3P_240MM 3 Shop Link
Miscellaneous WB_M2_5X12 24 Shop Link
. FHS_M2_5X14 12 Shop Link
. NSFMR6-24 6 Shop Link
. Ball Bearing(O.D 10mm / I.D 6mm) 24 Shop Link

3D Printed Parts

CAD Files (Onshape, Thingiverse)

Software Setup

Download the OpenCR and open_manipulator_processing libraries.

OpenCR

Go to ExamplesOpenManipulatorexampleArduinoPlanaropen_manipulator_planar on Arduino IDE for OpenCR.

Processing

Open processing source code file (open_manipulator_processingPlanarPlanar.pde) on Processing IDE.

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

Video

OpenManipulator Delta

Specification

Items Unit  
Actuator   Dynamixel XM430-W350-T
Input Voltage V 12
DOF - 3
Speed(Joint) RPM 46
Communication - TTL (Level Multidrop BUS)
Software - Dynamixel SDK, Arduino, Processing
Main Controller - PC, OpenCR

Dimension

Hardware Setup

Part Lists

  Part Name Quantity Link
Chassis Parts BASE FRAME 1 Download Link
. Delta_centre 1 Download Link
. Delta_gripper 1 Download Link
. link 3 Download Link
. HN12_I101 3 Shop Link
Actuators Dynamixel XM430-W350-T 3 Shop Link
Cables CABLE_3P_240MM 3 Shop Link
Miscellaneous WB_M2_5X12 24 Shop Link
. FHS_M2_5X14 12 Shop Link
. NSFMR6-24 6 Shop Link
. Rod End Bearing(D 3mm) 12 Shop Link

3D Printed Parts

CAD Files (Onshape, Thingiverse)

Software Setup

Download the OpenCR and open_manipulator_processing libraries.

OpenCR

Go to ExamplesOpenManipulatorexampleArduinoDeltaopen_manipulator_delta on Arduino IDE for OpenCR.

Processing

Open processing source code file (open_manipulator_processingDeltaDelta.pde) on Processing IDE.

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

Video

OpenManipulator Stewart

Specification

Items Unit  
Actuator   Dynamixel XM430-W350-T
Input Voltage V 12
DOF - 6
Speed(Joint) RPM 46
Communication - TTL (Level Multidrop BUS)
Software - Dynamixel SDK, Arduino, Processing
Main Controller - PC, OpenCR

Dimension

Hardware Setup

Part Lists

  Part Name Quantity 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 2 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

CAD Files (Onshape, Thingiverse)

Software Setup

OpenCR

Go to ExamplesOpenManipulatorexampleArduinoStewartopen_manipulator_stewart on Arduino IDE for OpenCR.

Processing

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

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

Video

OpenManipulator Linear

Specification

Items Unit  
Actuator   Dynamixel XM430-W350-T
Input Voltage V 12
DOF - 3
Speed(Joint) RPM 46
Communication - TTL (Level Multidrop BUS)
Software - Dynamixel SDK, Arduino, Processing
Main Controller - PC, OpenCR

Dimension

Hardware Setup

Part Lists

  Part Name Quantity 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 2 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

CAD Files (Onshape, Thingiverse)

Software Setup

OpenCR

Go to ExamplesOpenManipulatorexampleArduinoLinearopen_manipulator_linear on Arduino IDE for OpenCR.

Processing

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

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

Video