Edit on GitHub

Basic Operation

Please note that this instruction is written for the ROBOTIS official OpenMANIPULATOR-X package. If you are operating a home made OpenMANIPULATOR-X, make sure to configure each DYNAMIXEL as below before operating.

WARNING The gripper module(ID 15) requires Current based Position Control Mode. Please make sure your DYNAMIXEL model supports the required Operating Mode.

FAQ

Launch Controller

After running this section, software controller that controls the OpenMANIPULAOTR-X will be launched and each joint of the OpenMANIPULATOR-X will be locked (Torque On).

  • When operating with U2D2
    Close all terminal and enter the command below in the new terminal.
    $ roslaunch open_manipulator_controller open_manipulator_controller.launch
    
  • When operating with OpenCR
    Close all terminal and enter the command below in the new terminal.
    $ roslaunch open_manipulator_controller open_manipulator_controller.launch usb_port:=/dev/ttyACM0 baud_rate:=1000000
    

WARNING :
Please check each joint position before running OpenMANIPULATOR-X. If joints are set inappropriately, OpenMANIPULATOR-X might not start operating. The picture of OpenMANIPULATOR-X below is showing you the ideal pose of OpenMANIPULATOR-X. Please adjust each joints along with the following picture when DYNAMIXEL torque is not enabled.

Launch result on the terminal will look like below.

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

After running this section, software controller that controls the OpenMANIPULAOTR-X will be launched and each joint of the OpenMANIPULATOR-X will be locked (Torque On).

  • When operating with U2D2
    Close all terminal and enter the command below in the new terminal.
    $ roslaunch open_manipulator_controller open_manipulator_controller.launch
    
  • When operating with OpenCR
    Close all terminal and enter the command below in the new terminal.
    $ roslaunch open_manipulator_controller open_manipulator_controller.launch usb_port:=/dev/ttyACM0 baud_rate:=1000000
    

WARNING :
Please check each joint position before running OpenMANIPULATOR-X. If joints are set inappropriately, OpenMANIPULATOR-X might not start operating. The picture of OpenMANIPULATOR-X below is showing you the ideal pose of OpenMANIPULATOR-X. Please adjust each joints along with the following picture when DYNAMIXEL torque is not enabled.

Launch result on the terminal will look like below.

SUMMARY
========

PARAMETERS
 * /open_manipulator_controller/control_period: 0.01
 * /open_manipulator_controller/using_platform: True
 * /rosdistro: noetic
 * /rosversion: 1.15.9

NODES
  /
    open_manipulator_controller (open_manipulator_controller/open_manipulator_controller)

auto-starting new master
process[master]: started with pid [5454]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to da579122-f0fa-11eb-9d7a-0790f3842b2b
process[rosout-1]: started with pid [5464]
started core service [/rosout]
process[open_manipulator_controller-2]: started with pid [5467]
port_name and baud_rate are set to /dev/ttyUSB0, 1000000 
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] Succeeded to init /open_manipulator_controller

After running this section, software controller that controls the OpenMANIPULAOTR-X will be launched and each joint of the OpenMANIPULATOR-X will be locked (Torque On).

  • When operating with U2D2
    Close all terminal and enter the command below in the new terminal.
    $ ros2 launch open_manipulator_x_controller open_manipulator_x_controller.launch.py
    
  • When operating with OpenCR
    Close all terminal and enter the command below in the new terminal.
    $ ros2 launch open_manipulator_x_controller open_manipulator_x_controller.launch.py usb_port:=/dev/ttyACM0
    

WARNING :
Please check each joint position before running OpenMANIPULATOR-X. If joints are set inappropriately, OpenMANIPULATOR-X might not start operating. The picture of OpenMANIPULATOR-X below is showing you the ideal pose of OpenMANIPULATOR-X. Please adjust each joints along with the following picture when DYNAMIXEL torque is not enabled.

Launch result on the terminal will look like below.

port_name and baud_rate are set to /dev/ttyUSB0, 1000000 
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] Succeeded to Initialise OpenManipulator-X Controller

TIP:

  • If you can’t load DYNAMIXEL, please check firmware to use ROBOTIS software (R+ Manager 2.0 or DYNAMIXEL Wizard 2.0)
  • If you would like to change DYNAMIXEL ID, please check open_manipulator_x.cpp in the open_manipulator_lib folder. The default ID is 11, 12, 13, 14 for joints and 15 for the gripper

After running this section, software controller that controls the OpenMANIPULAOTR-X will be launched and each joint of the OpenMANIPULATOR-X will be locked (Torque On).

  • When operating with U2D2
    Close all terminal and enter the command below in the new terminal.
    $ ros2 launch open_manipulator_x_controller open_manipulator_x_controller.launch.py
    
  • When operating with OpenCR
    Close all terminal and enter the command below in the new terminal.
    $ ros2 launch open_manipulator_x_controller open_manipulator_x_controller.launch.py usb_port:=/dev/ttyACM0
    

WARNING :
Please check each joint position before running OpenMANIPULATOR-X. If joints are set inappropriately, OpenMANIPULATOR-X might not start operating. The picture of OpenMANIPULATOR-X below is showing you the ideal pose of OpenMANIPULATOR-X. Please adjust each joints along with the following picture when DYNAMIXEL torque is not enabled.

Launch result on the terminal will look like below.

[INFO] [launch]: All log files can be found below /home/willson/.ros/log/2021-10-07-17-05-57-688562-willson-XPS-15-9560-112659
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [open_manipulator_x_controller-1]: process started with pid [112661]
[open_manipulator_x_controller-1] port_name and baud_rate are set to /dev/ttyUSB0, 1000000 
[open_manipulator_x_controller-1] Joint Dynamixel ID : 11, Model Name : XM430-W350
[open_manipulator_x_controller-1] Joint Dynamixel ID : 12, Model Name : XM430-W350
[open_manipulator_x_controller-1] Joint Dynamixel ID : 13, Model Name : XM430-W350
[open_manipulator_x_controller-1] Joint Dynamixel ID : 14, Model Name : XM430-W350
[open_manipulator_x_controller-1] Gripper Dynamixel ID : 15, Model Name :XM430-W350
[open_manipulator_x_controller-1] [INFO] [1633593958.804918277] [open_manipulator_x_controller]: Succeeded to Initialise OpenManipulator-X Controller

TIP:

  • If you can’t load DYNAMIXEL, please check firmware to use ROBOTIS software (R+ Manager 2.0 or DYNAMIXEL Wizard 2.0)
  • If you would like to change DYNAMIXEL ID, please check open_manipulator_x.cpp in the open_manipulator_lib folder. The default ID is 11, 12, 13, 14 for joints and 15 for the gripper

WARNING :
Please check each joint position before running OpenMANIPULATOR-X. It might stop operation because of joint position out of range.
The picture on the below is showing you the ideal pose of OpenMANIPULATOR-X. Please adjust each joints along with the following picture when DYNAMIXEL torque isn’t enabled.

WARNING : Please refer to below default DYNAMIXEL configuration for OpenMANIPULATOR-X chain if you have a custom manipulator.

Joint ID Baudrate
1 11 1 Mbps
2 12 1 Mbps
3 13 1 Mbps
4 14 1 Mbps
Gripper 15 1 Mbps

WARNING : OpenCR 1.0 must be connected to OpenMANIPULATOR-X before launching Processing. Press Reset Button of OpenCR 1.0 to enable torque for OpenMANIPULATOR-X.

  1. Connect OpenCR to PC with a micro USB cable, and connect OpenMANIPULATOR-X to OpenCR, then supply 12V Power to OpenCR as shown below.

  2. Turn on the OpenCR 1.0 power switch.

  3. Press the Reset Button of OpenCR 1.0 and check if OpenMANIPULATOR-X is torque enabled(stiff joints).

  4. Open the downloaded processing file in Processing IDE : open_manipulator_processing > Chain > Chain.pde.


  5. Run the processing source code, and the following graphical GUI will be displayed.

FAQ
If the processing console displays an error message and the GUI does not run normally, check the following:

  • Check if ControlP5 is properly installed.
  • Check if the graphics driver is installed properly.
  • Check if the Java library is properly installed.

Keyboard Teleoperation

Open another terminal and enter below command.

$ roslaunch open_manipulator_teleop open_manipulator_teleop_keyboard.launch

You will see below interface on the terminal window after a successful launch.

  ---------------------------
  Control Your OpenMANIPULATOR-X!
  ---------------------------
  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
  ---------------------------

Open another terminal and enter below command.

$ roslaunch open_manipulator_teleop open_manipulator_teleop_keyboard.launch

You will see below interface on the terminal window after a successful launch.

  ---------------------------
  Control Your OpenMANIPULATOR-X!
  ---------------------------
  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
  ---------------------------

Open another terminal and enter below command.

$ ros2 run open_manipulator_x_teleop open_manipulator_x_teleop_keyboard

You will see below interface on the terminal window after a successful launch.

  ---------------------------
  Control Your OpenMANIPULATOR-X!
  ---------------------------
  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
  ---------------------------

Open another terminal and enter below command.

$ ros2 run open_manipulator_x_teleop teleop_keyboard

You will see below interface on the terminal window after a successful launch.

Control Your OpenManipulator!
---------------------------
Task Space Control:
         (Forward, X+)
              W                   Q (Upward, Z+)
(Left, Y+) A     D (Right, Y-)    Z (Downward, Z-)
              X 
        (Backward, X-)

Joint Space Control:
- Joint1 : Increase (Y), Decrease (H)
- Joint2 : Increase (U), Decrease (J)
- Joint3 : Increase (I), Decrease (K)
- Joint4 : Increase (O), Decrease (L)
- Gripper: Increase (F), Decrease (G) | Fully Open (V), Fully Close (B)

INIT : (1)
HOME : (2)

CTRL-C to quit

Joint Angle(Rad): [0.000, 0.000, 0.000, 0.000, 0.000]
Kinematics Pose(Pose X, Y, Z | Orientation W, X, Y, Z): 0.000, 0.000, 0.000 | 0.000, 0.000, 0.000, 0.000

Not supported.