Closed-Loop Kinematic Joints Cause Instability in Isaac Sim

Isaac Sim Version

4.5.0

Operating System

Ubuntu 22.04

GPU Information

  • Model: NVIDIA GeForce RTX 3060
  • Driver Version: 535.230.02

Topic Description

Detailed Description

Hello,

I am currently implementing a four-wheel independent steering mobile robot in Isaac Sim. The robot’s suspension system includes closed-loop joints with shock absorbers.

However, the mobile robot experiences “explosion” or “flying away” issues with even slight impacts. This occurs, for example, when the wheels hit a bump while driving on uneven terrain or during rapid changes of actions in reinforcement learning scenarios using Isaac Lab. The attached video demonstrates this phenomenon by dropping the mobile robot from a specific height.

The joints for this mobile robot were initially configured in Onshape. To prevent potential joint errors from Onshape, the suspension was modeled using two revolute joints, one prismatic joint, and one cylindrical joint. After importing the model into Isaac Sim, I followed the documentation and excluded the cylindrical joint from the articulation.

Despite setting appropriate drives for each joint, the robot still randomly explodes at unpredictable moments.

How can I resolve this issue?

I have attached the USD file containing the model for your reference.

Screenshots or Videos

usd_folder.zip (6.7 MB)

Hi @erlangen416 , thank you for posting the issue. This explosion behavior is not quite caused by the closed-kinematic chain configuration, from looking at the asset it can be caused by other factors. I have attached a half-edited USD file where I disabled all the joints and have been one-by-one enabling them and debugging as I go. I’ll let you continue to fix it. Somethings I noticed:

  1. You need damping on all the passive joints for the joint speed not to explode, so make sure to start with a good amount of damping 5-10 for example.
  2. Some joints had 0 as Maximum force, this effectively disables the joint drive on those joints as any force would cause it to be disabled. You want to keep it as unlimited.
  3. If you are debugging directly on the isaac sim GUI, then everytime you encounter an explosion the high speeds are left as residue in each joint, so make sure to go into the JointState property and clear any high velocities.
  4. You want to make sure that the mass and inertia tensors of each link is not too low. Most of them are auto-computed, I would just make sure to use the Mass Distribution tool (the GUI button with the black weight next to the prim layers as shown in the attached photo) to see that the connected link’s mass is not excessively small (as a ball park no less less than 1 gram or 0 diagonal inertia. If it is you will want to manually set a higher Density in the Mass property of the link.

In general, you don’t want any parameters in the links or joints that will cause a joint to spin very fast, as the physics solver is not fit to handle high speeds (e.g. in the >100 rad/s). If you do need it to handle high speeds, in general the intuition is to increase also the Sim Steps Per Second (in the Physics Scene prim).

Please look into your prim further and make sure to set the correct properties while enabling one joint at a time.

fourswis_new_mk10_modified_flattened_edited.usd.zip (6.7 MB)

1 Like

Hello!

We noticed that this topic hasn’t received any recent responses, so we are closing it for now to help keep the forum organized.

If you’re still experiencing this issue or have additional questions, please feel free to create a new topic with updated details. When doing so, we recommend mentioning or linking to this original topic in your new post—this helps provide context and makes it easier for others to assist you.

Thank you for being part of the NVIDIA Isaac Sim community.

Best regards,
The NVIDIA Isaac Sim Forum Team