Skip to content

Testing Jaco with MoveIt

Jennifer Buehler edited this page Mar 1, 2019 · 13 revisions

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

1. Test the demo

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.

2. Test MoveIt! with Gazebo and RViz

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.

Notes and troubleshooting

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.

MoveIt! for your Jaco robot

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.

Clone this wiki locally