Fatal Python error: Segmentation fault running (play) USD stage after URDF import

Hi everyone,

I implemented custom sceneries to make some simulations. These sceneries were created from Isaac Sample sceneries “just” replacing the robots by .usd models (for Kuka iiwa and PR2) created from URDF files.

When I run the Kuka stage it works! (I can modify the drive:angular:target of a join, for example…)

But when I run (play) the PR2 stage doesn’t work… Omniverse Kit Remote freezes and I get the next error in Isaac Sim headless:

2020-07-22 09:21:47 [426,761ms] [Error] [carb.livestream.plugin] nvstPushStreamData error for eye 0, stream 0x7f392c3114b0: 0x800b0000

Fatal Python error: Segmentation fault

Thread 0x00007effd9818740 (most recent call first):
2020-07-22 09:25:14 [39,255ms] [Error] [carb.livestream.plugin] nvstPushStreamData error for eye 0, stream 0x7efde03114b0: 0x800b001c
/isaac-sim/_build/linux-x86_64/release/isaac-sim-headless.sh: line 4:  5308 Segmentation fault      (core dumped) "$SCRIPT_DIR/../../target-deps/kit_sdk_release/_build/linux-x86_64/release/omniverse-kit" --config-path "$SCRIPT_DIR//experiences/isaac-sim-headless.json" --no-window $@

Any idea,
Thanks in advance

Hi myself,

There is a solution after trying some things… It is necessary to enable the “Merge Fixed Joints” in URDF Importer tab before loading the file.

Now, I can import the pr2.urdf and run (play) the generated USD stage without problems. Also, note that it is not necessary to enable this checkbox for Kuka iiwa URDF.

Seem that PR2 description is more complex than Kuka iiwa description. And, in this case, the fixed joins break the simulation…

Even if this solves this particular case, there is a remained question: WHY DO NOT MERGE THE FIXED JOINTS BREAK THE SIMULATOR?

2 Likes

Hi! Great work! I apologize for the lack of useful debug messages in this case. Yes, the use of many fixed joints in URDF is a problem. The concept of a ‘fixed joint’ in URDF is not the same as that of a ‘fixed joint’ in PhysX, the physics system underlying Isaac Sim. In PhysX, a fixed joint is a way to couple two rigid bodies, usually because the joint is expected to be broken at some point during the simulation, so that the rigid bodies become independent. In URDF a fixed joint seems to be a notation for a way to identify a reference frame (‘link’) relative to another reference frame, with no separate physical body associated with it, for example to identify where a camera is mounted on a link. Also in URDF it seems that fixed joints are used to specify multiple collision meshes on a single rigid body link, and this is where the ‘Merge Fixed Joints’ option comes in. In PhysX a single rigid body can have multiple collision shapes, in what is known as a ‘compound collision shape’ or ‘aggregate collision shape’. When you select the Merge Fixed Joints option, any fixed joints specified in the URDF are considered to specify collider sub-shapes to be combined into a single rigid body. The PR2 URDF is quite complex, and contains many of these ‘fixed joints’. If you attempt to import the PR2 URDF without the ‘Merge Fixed Joints’ option you will wind up with a huge set of PhysX rigid bodies joined together with ‘fixed joint’ constraints, which presents a very difficult problem for the constraint solver system.