Skip to content
srahms edited this page Sep 2, 2015 · 23 revisions

Collision in URDF, MARS, SMURF and Phobos

In URDF, any collision object will collide with any other collision object - there is no inherent collision avoidance between links. This poses a problem if collision geometries are approximations and might sometimes collide even though the real robot wouldn't. A classic case may be box geometries used for limbs of a robot that will collide at the joint if turned. For this reason, it is in most cases necessary to define which collision objects of a model can collide with which other collision objects. In the ROS community, the solution for this problem comes in the form of SRDF and Phobos does support export of this format (even though it remains experimental as of mid-2015). However the MARS simulation does not currently read SRDF and therefore the same information is by default exported to SMURF.

Important Note: As a default, Phobos (and MARS, for that matter) assumes that no collision objects of a link can collide with collision objects of its parent link or child link. If you need such close collisions, consider using additional joints.

Collision Groups

MARS internally uses collision bitmasks to efficiently exclude collisions between objects. This makes it easy to assign multiple objects to the same "group" of collision behaviour, For instance, this can be used if all limbs on the left side of a robot should be able to collide with all limbs on the right side of the robot, but not with the main body. This feature is also helpful to exclude such parts of the robot from collision which can kinematically never collide in the first place, thereby speeding up the simulation by avoiding unnecessary collision checks. While SRDF explicitly excludes pairs of links from colliding, Phobos allows to group together collision properties, effectively recreating the bitmasks used in MARS anyways.

Editing Collision Groups

The Set Collision Group operator allows to select multiple 'layers' on which an object can collide. Clicking the respective fields, the bits of the underlying collision bitmask are flipped which gets exported to SMURF.

edit collision groups

Phobos uses Blender's existing functionality to define collision groups for physics simulation. Thus its operator simply displays the collision 'layers' that can be found in the physics tab of the Properties GUI area:

edit collision groups

Clone this wiki locally