-
Notifications
You must be signed in to change notification settings - Fork 37
Testing Jaco with MoveIt
The package jaco_on_table_moveit provides an example set-up for using the Jaco arm on the table (jaco_on_table) with MoveIt!.
Note that you need to have the MoveIt! packages installed as described in the installation instructions.
If you would like to set up your own Robot with the Jaco hand, please follow the instructions on this wiki page.
Note: If you haven't installed it already, you will need the MoveIt simple controller manager and the moveit RViz visualization package:
sudo apt-get install \
ros-<distro>-moveit-simple-controller-manager \
ros-<distro>-moveit-ros-visualization
You may run the MoveIt! demo with RViz to see if everything works.
roslaunch jaco_on_table_moveit demo.launch
this will launch MoveIt! and RViz. You may set the end effector target pose with the visual marker and use the MoveIt! control panel in RViz to plan the joint trajectory.
If all worked fine, exit the demo.

The launch file jaco_on_table_moveit/launch/demo.launch is only an example. Separate launch files are provided in package jaco_on_table_moveit to launch the individual components (MoveIt, RViz) separately.
You can now try to plan a path using the RViz MoveIt! control panel and let the robot in Gazebo execute it.
Step 1: Launch Gazebo
roslaunch jaco_on_table jaco_on_table_gazebo_controlled.launch

Step 2: Launch MoveIt!
In a new terminal:
roslaunch jaco_on_table_moveit jaco_on_table_moveit.launch
No error messages should be printed, and you should see the message
"All is well! Everyone is happy! You can start planning now"
Step 3: Launch RViz
In a new terminal:
roslaunch jaco_on_table_moveit jaco_on_table_rviz.launch
The robot in RViz should have the same state as it currently is in Gazebo!

If the robot does not have the same state as in Gazebo, check for possible error messages on the terminals. Are the /tf transforms correct?
Now you can drag the visual marker of the Hand anywhere, and click "Plan & Execute" in the MoveIt! control panel. The robot in Gazebo should be executing the path, and the current robot state in RViz should be updated.
If you get no problems with executing a few random trajectories, you are good to go using the Jaco on the table and MoveIt!.
Hint:
By default, the official MoveItSimpleControllerManager moveit_plugins/moveit_simple_controller_manager
is used to control the execution from within RViz.
You may also try the package moveit_controller_multidof which you need to install
separately: it supports the virtual joint and therefore mobile robots.
The virtual joint movement will be sent on as a path to be navigated by the robot.
Switch between both options by uncommenting/commenting the line in this file:
rosed jaco_on_table_moveit JacoOnTable_moveit_controller_manager.launch.xml
Step 2 and 3 together
You can also run step 2 and 3 together in one launch file:
roslaunch jaco_on_table_moveit jaco_on_table_moveit_rviz.launch
Be careful though with trying to launch all 3 steps from one launch file, in the past I have experienced TF errors in MoveIt! if Gazebo was not fully loaded before MoveIt! was.
Sometimes the trajectory may not finish executing, and an error message is printed on the MoveIt! terminal that the action hash timed out.
This is because velocity limiations beyond what is specified in the URDF are
applied to trajectory execution. This is a feature to ensure safe use with the
real Jaco hand, and the same trajectory execution is applied in Gazebo.
This slows down the execution compared to the pre-computed duration by MoveIt!.
Also, the fine-grained trajectory control can cause the execution
to be a bit slower than expected.
You can change the default timeout factor in
rosed jaco_on_table_moveit trajectory_execution.launch.xml
with the field allowed_goal_duration_margin.
Also, if you would like to adjust the parameters for the trajectory execution:
rosed jaco_gazebo JointTrajectoryParams.yaml
For more details about the trajectory execution, please also refer to the wiki page for jaco_gazebo.
If you want to use your own URDF and put the Jaco model on it, please refer to the jaco_description wiki. You will then also have to add MoveIt! support for it, which is documented in the jaco_moveit wiki.