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

How to use CollisionDetectorAllValid for planning?

asked 2019-07-09 09:25:22 -0500

ssnover gravatar image

I am attempting to plan movements with Moveit in ROS Melodic. Temporarily I would like to disable collisions and have found an implementation of the collision detector built-in to Moveit that achieves just that: CollisionDetectorAllocatorAllValid.

In my node, I construct a move group interface, from that get the robot model, and use this robot model to construct a planning scene object. Then I'm setting the planning scene with:

auto collision_detector_status =
    scene.setActiveCollisionDetector(collision_detection::CollisionDetectorAllocatorAllValid::create(), false);

However, this doesn't appear to work as the planning is being done in a separate process. Do I need to package this up into a CollisionPlugin based object and use PLUGINLIB_EXPORT_CLASS?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2019-08-14 20:59:32 -0500

Dave Coleman gravatar image

The MoveGroup interface does not directly support this use case, AFAIK. Your attempt to reach deeper into MoveIt to modify the collision checker will not work in the current abstraction of MoveGroup - we'd likely need to add something like 'no_collision' flags to moveit_msgs and through several abstraction layers. Side note: this frustration is my thesis of this Discourse post.

However, there may be a workaround that might work: you can disable all link to link collision checking via the "Allowed Collision Matrix" in the PlanningSceneMonitor. Just set everything to allowed, which is a bit hacky and you won't want to manually do this as you'll likely miss some of them.

Overall all though, there is no easy solution currently without digging through the code.

edit flag offensive delete link more


I guess I'm not sure what the purpose of the CollisionDetectorAllValid class is then, is this something that can be done at a lower layer if instead the lower level Moveit libraries were linked in and used in my node instead of running a separate move_group node?

ssnover gravatar image ssnover  ( 2019-08-15 10:34:05 -0500 )edit

Question Tools



Asked: 2019-07-09 09:25:22 -0500

Seen: 140 times

Last updated: Aug 14 '19