Edit on GitHub

Manipulation

NOTE : This instruction was tested on Ubuntu 16.04, Linux Mint 18.1 and ROS Kinetic Kame.

NOTE : If you want more specfic information about OpenManipulator, please refer to the OpenManipulator e-Manual

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.

Software Setup

Install dependent packages for the Open-Manipulator.

$ 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-ar-track-alvar 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/turtlebot3.git
$ cd ~/catkin_ws && catkin_make

If catkin_make command is completed without any errors, the preparation for Open-Manipulator is done.

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 open_manipulator_with_tb3_rviz.launch

Hardware Setup

First, detach lidar sensor and shift it front of TurtleBot3 (Red circle represents position of bolts)

Second, attach OpenManipulator on the TurtleBot3 (Yellow circle represents position of bolts)

OpenCR Setup

Before you following step, please setup Arduino IDE

OpenCR1.0 firmware (or the source) for TurtleBot3 with Openmanipulator is to control DYNAMIXEL and sensors in the ROS. The firmware is located in OpenCR example which is downloaded by the board manager.

Go to FileExamplesTurtleBot3turtlebot3_with_open_manipulatorturtlebot3_with_open_manipulator_core.

Click Upload button to upload the firmware to OpenCR1.0.

NOTE : If error occurs while uploading firmware, go to ToolsPort and check if correct port is selected. Press Reset button on the OpenCR1.0 and try to upload the firmware again.

When firmware upload is completed, jump_to_fw text string will be printed on the screen.

Bringup

Bringup TurtleBot3 with OpenManipulator

And launch open_manipulator_with_tb3_model

Tip : TB3_MODEL = waffle, waffle_pi

  $ export TURTLEBOT3_MODEL=${TB3_MODEL}
  $ roslaunch open_manipulator_with_tb3 open_manipulator_with_tb3_model.launch use_gazebo:=false

SLAM

Tip : TB3_MODEL = waffle, waffle_pi

$ export TURTLEBOT3_MODEL=${TB3_MODEL}
$ roslaunch open_manipulator_with_tb3_tools open_manipulator_with_tb3_slam.launch use_gazebo:=false open_rviz:=true

Tip : TB3_MODEL = waffle, waffle_pi

$ export TURTLEBOT3_MODEL=${TB3_MODEL}
$ roslaunch open_manipulator_with_tb3_tools open_manipulator_with_tb3_navigation.launch use_gazebo:=false open_rviz:=true

Find AR marker

$ roslaunch open_manipulator_perception ar_pose.launch

MoveIt!

In order to run MoveIt!, open a new terminal window and enter below command

Tip : TB3_MODEL = waffle, waffle_pi

$ export TURTLEBOT3_MODEL=${TB3_MODEL}
$ roslaunch open_manipulator_with_tb3_tools open_manipulator_with_tb3_manipulation.launch use_gazebo:=false open_rviz:=true

In order to control gripper, please use topic publish with below command in a new terminal window.

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

Pick and Place

We provide example for mobile manipulation as pick and place. This example is launched by controller that is to automatically start and stop navigation stack, MoveIt!, pick and place launch file by communicating ROS messages.

User can modified this node to apply their environments.

Tip : TB3_MODEL = waffle, waffle_pi

$ roslaunch open_manipulator_with_tb3_tools open_manipulator_with_tb3_controllerunch 

Simulation

Gazebo

Load an TurtleBot3 with OpenManipulator on Gazebo simulator and click Play button

Tip : TB3_MODEL = waffle, waffle_pi

$ export TURTLEBOT3_MODEL=${TB3_MODEL}
$ roslaunch open_manipulator_gazebo open_manipulator_with_tb3_gazebo.launch

Type rostopic list to check which topic is activated

/camera/parameter_descriptions
/camera/parameter_updates
/camera/rgb/camera_info
/camera/rgb/image_raw
/camera/rgb/image_raw/compressed
/camera/rgb/image_raw/compressed/parameter_descriptions
/camera/rgb/image_raw/compressed/parameter_updates
/camera/rgb/image_raw/compressedDepth
/camera/rgb/image_raw/compressedDepth/parameter_descriptions
/camera/rgb/image_raw/compressedDepth/parameter_updates
/camera/rgb/image_raw/theora
/camera/rgb/image_raw/theora/parameter_descriptions
/camera/rgb/image_raw/theora/parameter_updates
/clock
/cmd_vel
/gazebo/link_states
/gazebo/model_states
/gazebo/set_link_state
/gazebo/set_model_state
/grip_joint_position/command
/grip_joint_position/pid/parameter_descriptions
/grip_joint_position/pid/parameter_updates
/grip_joint_position/state
/grip_joint_sub_position/command
/grip_joint_sub_position/pid/parameter_descriptions
/grip_joint_sub_position/pid/parameter_updates
/grip_joint_sub_position/state
/imu
/joint1_position/command
/joint1_position/pid/parameter_descriptions
/joint1_position/pid/parameter_updates
/joint1_position/state
/joint2_position/command
/joint2_position/pid/parameter_descriptions
/joint2_position/pid/parameter_updates
/joint2_position/state
/joint3_position/command
/joint3_position/pid/parameter_descriptions
/joint3_position/pid/parameter_updates
/joint3_position/state
/joint4_position/command
/joint4_position/pid/parameter_descriptions
/joint4_position/pid/parameter_updates
/joint4_position/state
/joint_states
/odom
/rosout
/rosout_agg
/scan
/tf

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

$ rostopic pub /joint4_position/command std_msgs/Float64 "data: 0.21" --once