Moveit octomap updater not working in multi-robot setup using tf_prefix

asked 2022-01-18 04:45:01 -0500

bkaiser gravatar image

updated 2022-01-18 04:57:37 -0500

Hello,

I have a question about moveit and the octomap updater. We have a multi-robot system with a Kuka KR 420 and a KR 210. The KR420 has a stereo camera on its end effector. We use moveit on both robots. The point cloud is to be used for the octomap in the moveit planning scene of teh KR 420.

We launch both robots with their movegroups and use Gazebo. Since both robots have the same link names, we use tf_prefix in robot_state_publisher to get a tf_tree with two branches from world to the end_effector frames.

For example, the prefixes are /robot1 and /robot2. This works fine so far. However, we have the problem that this causes errors in moveit. I think it is due to the ocotomap updater and octomap self filtering. These are the errors:

[ERROR] [1642501714.793018060, 314.490000000]: Transform error: "platform_402_link_1" passed to lookupTransform argument source_frame does not exist. 
[ERROR] [1642501714.793067252, 314.490000000]: Transform cache was not updated. Self-filtering may fail. If transforms were not available yet, consider setting robot_description_planning/shape_transform_cache_lookup_wait_time to wait longer for transforms

We don't get an octomap in the planning scene because the octomap is never updated. I think setting

robot_description_planning/shape_transform_cache_lookup_wait_time

to wait longer will not fix the problem, as this is not the cause. The Octomap updater is waiting for the "platform_402_link_1" transformation in tf. However, since we are using tf_prefix, it should wait for "robot1/platform_402_link_1".

Is there any way to set the tf_prefix in moveit? Or is there an established way to set up multiple robot systems with multiple movegroups and octomap without tf_prefix?

I would like to avoid setting the prefix in xacro to change the link_names since that would require a manual change for the controllers in moveit for each robot. We want to be able to launch multiple robots of each type.

We are using Ubuntu 18.04 with ROS melodic and the latest moveit package from the binaries.

Any advice or help would be greatly appreciated.

edit retag flag offensive close merge delete