Collision Filtering
碰撞过滤(碰撞组)AdvancedDeclaring in advance which object pairs should never count as colliding, saving computation and avoiding contact that shouldn't exist.
Not every pair of objects in a simulation needs its collisions computed: a robot's adjacent links are naturally touching right at a joint, and thousands of parallel training environments running at once shouldn't collide with each other either. Collision filtering discards these pairs after the broad phase but before the narrow phase. A common technique is a bitmask attached to each geometry. In MuJoCo, every geom has two integers, contype and conaffinity, and a pair is only checked if one's contype shares at least one set bit with the other's conaffinity — a mechanism borrowed from the ODE engine, with both defaulting to 1; MuJoCo also skips collisions within the same rigid body and between parent and child bodies by default, and pairs can be explicitly excluded with exclude. PhysX implements similar grouping through a filter shader. Getting this wrong leads to problems like a gripper failing to hold an object or a foot passing through the ground.
ExampleIsaac Lab's InteractiveSceneCfg defaults to filter_collisions=True, so cloned environments never collide with each other, while all of them can still collide with global objects such as the ground.
- Also called
- Collision Groups, contype/conaffinity, Collision Mask, Collision Layers
- Related
- Broad-phase / Narrow-phase Collision Detection · Collision Detection · Self-Collision Checking · Collision Geometry (Collider) · MJCF (MuJoCo XML Format) · Vectorized Environments
- Sources
- MuJoCo Documentation: Computation - Collision detection (Selection)
NVIDIA PhysX 5 SDK Documentation: Rigid Body Collision - Collision Filtering
Isaac Lab API: isaaclab.scene (InteractiveSceneCfg.filter_collisions) - As of
- 2026-09