I’m trying to integrate a roller conveyor onto a mobile robot, or build a movable roller system. However, the rigid bodies and static colliders required for the conveyor conflict with the dynamic collision setup of the robot itself due to nested rigid body restrictions. I’m stuck on how to resolve this—are there any viable workarounds or official solutions?
Hi @YuQingShun,
The root of the conflict is that USD doesn’t allow a RigidBodyAPI nested inside another RigidBodyAPI, so the conveyor’s body can’t live inside your robot’s base body. The fix is to keep the conveyor as a separate structure attached by a joint, not nested — and for a roller robot there’s a clean, fully-dynamic way to do it.
Model the conveyor as its own articulation and fix-joint it to the robot:
- Build the conveyor as a self-contained articulation — a
frame(root link, withArticulationRootAPI) plus your rollers, where each roller is a link joined to the frame by a revolute joint with an angular-velocity drive so it physically spins. - Attach the conveyor’s frame to your robot’s base link with a fixed joint. A fixed joint between the two articulations (robot + conveyor) holds them rigidly together, so the conveyor rides with the robot.
- Items on top are transported by ordinary friction from the spinning rollers — no
PhysxSurfaceVelocityAPI, and no nested rigid body.
Here is an example. Not an official one, but one I implemented locally.
conveyor_C_rollers.py (6.6 KB)
Hello!
We noticed that this topic hasn’t received any recent updates from anyone reporting this issue, so we are closing it for now to help keep the forum organized.
If you are still experiencing this issue or have related questions, please create a GitHub Discussion or Issue in the Isaac Sim repository and include a link to this topic along with updated details. Mentioning or linking to this original topic provides helpful context and makes it easier for others to assist you.
Thank you for being part of the NVIDIA Isaac Sim community.
Best regards,
The NVIDIA Isaac Sim Forum Team