Adding Articulation Root destroys functionality of fixedJoint

Hello,

I am trying to rig a Kuka robot from a .stp file. Importing it, creating XForm groups and adding physics and joints works fine. But when I create an Articulation Root on my base, my robot starts to float in the air even though my base is fixed with a FixedJoint. As soon as I deactivate the Articulation Root, my robot has a fixed base again.
Adding mass to the different parts of the robot reduces the problem, but does not fix it.

I’d appreciate any help.

Thanks
Nico

This looks like to be a bug in the USD parsing code, please would it be possible to share the USD file with me? Through a private msg for example.
Regards,
Ales

The problem is with ArticulationRoot placement. Based on the UsdPhysics specification:
https://openusd.org/release/api/usd_physics_page_front.html

Earlier we mentioned that we support reduced coordinate joints, which require some additional specification. We decided to do this with a minimal extension of the above maximal joints. Any prim of the USD scene graph hierarchy may be marked with an UsdPhysicsArticulationRootAPI. This informs the simulation that any joints found in the subtree should preferentially be simulated using a reduced coordinate approach. For floating articulations (robotics jargon for something not bolted down, e.g. a wheeled robot or a quadcopter), this API should be used on the root body (typically the central mass the wheels or rotors are attached to), or a direct or indirect parent prim. For fixed articulations (robotics jargon for e.g. a robot arm for welding that is bolted to the floor), this API can be on a direct or indirect parent of the root joint which is connected to the world, or on the joint itself. If there are multiple qualifying bodies or joints under an UsdPhysicsArticulationRootAPI prim, each is made into a separate articulation root.

The articulationroot was placed directly on a body, hence a floating articulation was created. If you remove the ArticulationRootAPI and move it to the fixed joint, it will work as expected. Or you create some Scope/Xform and put all the parts below it, then apply the ArticulationRootAPI on the top level prim, then the automatic root finder will find correctly the articulation.

Regards,
Ales

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.