RobotLocomotion / drake

Model-based design and verification for robotics.
https://drake.mit.edu
Other
3.27k stars 1.26k forks source link

MultibodyPlant doesn't document its default collision filtering behavior #13672

Closed SeanCurtis-TRI closed 2 years ago

SeanCurtis-TRI commented 4 years ago

Problem

A recent question came up:

If I have two bodies A and B connected by a prismatic joint, are collisions between geometries on A and B ignored by default?

The documentation on collision filtering in SceneGraph discusses the mechanisms for introducing filters on collisions, but doesn't provide any insight into this particular question.

Proposal

As outlined in the slack thread (linked above), SceneGraph shouldn't know about "adjacent bodies". And, in reality, it can't. MultibodyPlant presents the bodies as a flat array of frames, all posed relative to the world frame. So, it would be impossible for SceneGraph to make any decisions about the geometries based on opaque relationships between those frames. That is clearly the province of MultibodyPlant.

rpoyner-tri commented 2 years ago

Perhaps adding some text to multibody/plant/contact_model_doxygen.h is the right way to resolve this.

rpoyner-tri commented 2 years ago

Having looked at contact_model_doxygen, I am shying away from it for now. It is mostly point-contact-era theory, AFAICT, and may want a general revisiting. I think for now, I'll just add some doc to the description of Finalize(), which is where the magic collision filters are created.