How to fix the root body of a robot in Isaac Sim?

Hi, currently I’m facing an issue that I couldn’t fix. I tried to import a robot from an .usd file and control the velocity of the base. By using get_articulation_root_body() from Dynamic Control [omni.isaac.dynamic_control] — isaac_sim 2021.2.0-beta.121 documentation, I expect to get the root body (in this example is base_footprint), but I always get a random body which isn’t the root (adapter_iso50_kms40_frame_out). So, how can I specify or change the root body?

You can manually place the articulation root at the body of your selection. But first delete the articulation root from the main robot prim.

  1. Select the robot prim on the stage tree, go to the property tab. There should be an "Articulation Root” section under it. Delete it by click on the x.
  2. Select the link you want to be the root, go to the property tab, click on the the +Add button and select Phyics->Articulation Root
1 Like

Can I do it programmatically?

Btw, your solution doesn’t work

can you attach your USD file so we can take a look at it?

Yes please
iai_donbot.usd (37.6 MB)

Attach the new articulation root on “base_link” instead of “base_link_footprint”. The first joint on the articulation tree being a fixed joint is not ideal.

I tried, it still doesn’t work

Which version of Isaac Sim are you using?

The lastest one, 2021.2.1

oh, looking at the error again, it’s saying that once you’ve changed your articulation root, the ros_bridge is still looking for an articulation rooted at “/iai_donbot”. You need to change it that so that it looks for the articulation starting at the new root “/iai_donbot/base_link”

1 Like

Ok your solution works, the tf tree is published correctly. However my code is broken (even with base_link). I followed this tutorial and change the path to my robot 4. Hello Robot — Omniverse Robotics documentation

just to double check, you’ve tried to add the robot (in line 50 of your code in the video) via the articulation root of /iai_donbot/base_footprint, and it doesn’t work?

No, it doesn’t work. I just tested it.

Hi, the current ArticulationAction wrapper is not supporting the scenario where the robot’s articulation root is different from the robot prim. We will fix this in our next release.

If you feel adventurous, you can use the dynamics control extension to directly control the robot joints.

1 Like