IndexError loading custom URDF

Greetings.
We are Attempting to import a Robotic arm assembly from Solidworks via the URDF import mechanism (mainly due to the lack of a direct mechanism). The Custom URDF importer appears to parse the URDF correctly, however the importer fails to load the model with a rather cryptic error, after (seemingly) importing the root part.

2021-01-12 08:36:03 [1,227,292ms] [Error] [omni.ui.python] IndexError: map::at

At:
  /home/orion/Downloads/isaac_sim_2020.2/_build/linux-x86_64/release/exts/omni.isaac.urdf/omni/isaac/urdf/scripts/extension.py(467): _load_robot


Hello,

Did you try the step importer to import the CAD model instead of converting it to URDF?

Kindly,
Liila

What I have resorted to is having the robot exported to STEP files and using that import mechanism; then doing all the manual rigging work. It works but is sub-optimal.

where do you do the rigging?

I Did the rigging in Omniverse Isaac Sim following https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/rigging.html

Hello,

Unfortunately the STEP file format does not contain vital information to build the full kinematic trees for robots (Mates / Joint mates). The suggestion for now is to arrange the assembly hierarchy and parts placement to facilitate breaking down the moving parts and aligning the joint axes (e.g set a rotating wheel with origin at the center of rotation and one axis aligned with the rotating axis).

We are working on a solution to connect to the CAD apps directly instead of exporting as STEP/ Import into Isaac Sim to make this process more streamlined and allow changes to the assembly to be directly reflected on the simulation part.

If you want to try the URDF route for now, I’d be happy to evaluate what the issue is when importing your file. If you can post the file to this thread it would be greatly appreciated, or you can DM it to me so I can try it here. Please remember to include all files that the URDF refers to with it.

Thanks for the response @rgasoto, I have sent you a DM with the URDF sources.

In the mean time, I have successfully rigged the arm via the step sources, though im confused on how one is supposed to generate the .kinematic.json for the motion planning components in the Isaac SDK. Would it be possible for you to elaborate on how one would go about achieving this?

Thank you for sharing the file. It helped me identify an issue with name parsing from urdf. Basically SDF paths do not allow spaces or elements that start with numerals.

The URDF importer worked the joint and link names, but missed the joint child and parent relations. It will be fixed for future releases, but for the moment you can edit the URDF to remove spaces from the link names and it should import correctly.

Hi! I’m similarly confused on the origins of .kinematic.json file and its uses (I’m working on manipulation of a custom robot):

  1. Should it be created manually (based on the “home” position of the robot) or can it be generated from usd simulation file? (When I make changes to the kinematic json, it doesn’t seem to affect the home position, be it in simulation or the robot)

  2. Does it represent the “home” position of the robot or just informs other components (EndEffectorGlobalPlanner, MultiJointPlanner, MultiJointController, etc) of the kinematic chain structure?

It’d be of great help if you can help with the kinematic json, since the Manipulation documentation says almost nothing of its significance.

1 Like