Link Creation Order - Isaac Sim

Hello,

I have been using Isaac Sim for a while now mainly with Gym for Deep Learning but I am now working on creating new robots using the provided graphical interface as well as the USD Composer. My question pertains to the hierarchy in the tree stage and how it affects the behavior of joints. My understanding was that there was no relationship between this hierarchy and the behavior of the joints/articulations, as pointed out in the documentation [1]. However, I observed a peculiar behavior that seems to contradict that statement. I created a very simple world with a “robot” inside as follows:

test-link-01.usd
robot (XForm, Articulation Root)

  • link1 (XForm, Rigid Body with Mass)
    – cube1 (Mesh)
    – RevoluteJoint (between link2 and link1)
  • link2 (XForm, Rigid Body with Mass)
    – cube2 (Mesh)

In this case, if I use the Lula Robot Descriptor or an angular drive on the joint, Link2 will rotate around Link1 (see movie1 for an illustration).

Then I deleted link1 and recreated it exactly the same, meaning my new tree stage structure will look like that:

test-link-02.usd
robot (XForm, Articulation Root)

  • link2 (XForm, Rigid Body with Mass)
    – cube2 (Mesh)
  • link1 (XForm, Rigid Body with Mass)
    – cube1 (Mesh)
    – RevoluteJoint (between link2 and link1)

In this case actuating the joint will lead to link1 rotating around itself (as illustrated in movie2).

I thought that there was a parent-child relationship in the joint definition that could explain this behavior but the order did not seem to impact the observed behavior. I hypothesized that maybe the lula descriptor was relying on the usd hierarchy but using a drive seems to produce the same result.

I am still inexperienced with this simulator and the PhysX engine so I am sure it is probably a very simple mistake but it would be helpful if you could clarify this point. For reference, I am using Isaac Sim v4.0.0.

Thank you.

PS: I cannot seem to upload usd file at this stage but the files are really simple


[1] From the Articulation documentation: “The tree structure is created solely by the Body 0 and Body 1 relationships of the joints connecting the articulation links (i.e. rigid bodies) - the USD hierarchy has no impact on the articulation structure other than during parsing, see below. Therefore, you may organize the joints and links in the stage tree as you see fit.”