ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Planning and joint state map cache

asked 2011-03-04 05:43:05 -0600

Hi all,

I've been playing with arm motion planning (OMPL) on a non-PR2 robot for a while now. I am currently working with a Schunk arm and a ShadowRobot hand at the tip. Both devices are controlled on different computers, and a custom made node fuses the joint information from both so that a single robot_description (and robot state) is obtainable. The problem I am having is that OMPL generates a collision-free plan, possibly even the Trajectory Filter, but during the execution move_arm stops crying for collisions that don't exist. The symptoms are:

  • Right after a goal is requested, all of the nodes that use the motion_planning_common stack complain that "Empty joint state map cache" and "Got joint state update but did not update some joints for more than 1 second. Turn on DEBUG for more info"
  • If I send a MoveArmAction request where disable_collision_monitoring is true, somebody (OMPL? TrajectoryFilter?) decides that there are not obstacles and plans a perfect straight line trajectory.

In the past I have successfully generated plans with a hand-less 7dof arm, now I don't understand what I am doing wrong! In particular, the warning messages I receive are really puzzling...

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2011-03-05 13:54:59 -0600

Sachin Chitta gravatar image


the planning stacks currently require joint state information for all joints in the robot. With incomplete information, its not possible to compute the full state of the robot for planning. Its possible that you have joints states for your arm but maybe you are missing a few joints on the hand in the joint states message. That's why the first failure is happening.

disable_collision_monitoring does exactly what it says. It disables the monitoring when executing a trajectory. move_arm is the only node that uses it currently. The fact that you are getting straight line trajectories implies that the planner thinks there is empty space everywhere. How are you adding obstacles to the environment? Do you have sensors that do this? Can you try and visualize your collision_map and the collision_environment using these tutorials -

edit flag offensive delete link more

answered 2011-03-09 21:41:43 -0600

I've finally got the planning up and running. The joint messages are all there in place and published regularly. However, whenever ompl_planning starts it job, the callback that gets called when a new joints_state message is received stops being called until planning is finished (actually all of the messages are queued; it looks like a thread is kept on hold). This is very strange. The same thing happens with trajectory_filter and environment_server. This doesn't seem to affect the behaviour of the nodes anyway.

edit flag offensive delete link more


When a plan is being constructed, the environment (and robot) representation used by the planner is locked for that duration. That's why those callbacks stop being called.
Sachin Chitta gravatar image Sachin Chitta  ( 2011-03-10 08:53:29 -0600 )edit
That explains a lot. Thank you very much!
Lorenzo Riano gravatar image Lorenzo Riano  ( 2011-03-10 22:09:10 -0600 )edit

Question Tools


Asked: 2011-03-04 05:43:05 -0600

Seen: 416 times

Last updated: Mar 09 '11