Articulation rigging assembly

Hello,

In the first picture below you see a example setup with some Xfroms. Now I want a tf tree of this in ROS (RVIZ).

The first step is to add joints. I figured out how to add joints between Xform1,2,3,4,5. But now my question is how do I get the whole structure of Xform5 in my tf tree (5 is the lonely axis in picture 2 to the right but I want there all the xforms beneath 5)? I can’t put multiple Rigid bodies beneath Xform_5, because Xform_5 is a rigid body so I can’t add joints. How do i rig that with Joints? Is that possible?


image

Hi,
so there are some options, but my question is more if you want to simulate the xforms under the xform5 as a rigid body, why do you nest it? I mean even from USD point of view you have a just a local transformation there, meaning you manipulate the xform5 and it does move all the childs. So simulation would do the same.
Having said that, there is a workaround for this. You can use xformOp reset to specify that each xform does have independent transformation from its parent:
https://openusd.org/dev/api/class_usd_geom_xformable.html#a99c4c768f58d6375edad8c9c7cb4bee2

Now with that you can put rigid bodies on all the childs and connect them with joints.

But in a sense it would be the same as if you changed the hierarchy and bring all the childs at the same level as xform5. If for some reason you cant do that, but still want to simulate the childs of xform5 as rigid bodies, you can use the xformop reset stuff.

Regards,
Ales

Also note, that if you want the simulation to use articulation you need to add ArticulationRootAPI, ideally at the top level Xform to indicate that the topology should be simulated as an articulation RC joints rather then MC joints.

Thank you for your answer :)

This is an example file but in the real situation we have a CAD drawing that we import as a STEP. The CAD drawing has a hierarchy from top assembly → sub assemblys → parts. So when we import the STEP, Isaac Sim will create that hierarchy. So in the example the Xform5 will be the top assembly and the Xforms in between will be the sub assemblys and then the last Xform will be the part.

The advantage of this is that when you want to know the location of the sub assembly you can look at the Xform and you know it and if you then want to go deeper in the sub assembly you can look up the location of the parts from that assembly.

Right, then you can use the xformOp reset and keep the hierarchy, that should do the trick.

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