Spatial tendons rest length

Isaac Sim Version

[1] 4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

[1] Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

Topic Description

Detailed Description

As shown in Figure 1, a linear actuator (block) is used to pull a tendon. The green circle highlights a universal joint, and the configuration of the root and leaf joints is illustrated in the diagram.

According to the setup:

  • The tendon’s rest length is set to its initial length (or manually assigned based on CAD measurements).
  • The rod should remain stationary when the simulation starts, as the tendon should maintain its rest length.

Actual Behavior (Figure 2):
The rod is unexpectedly lifted during simulation, even when the rest length is explicitly defined. This suggests that the effective distance between the root and leaf joints in Isaac Sim is longer than expected, causing the tendon to generate unanticipated tension.

Screenshots or Videos




hi @546574881, thank you for the question. I am looking into this and trying to replicate it, but if you can share your setup it would speed things up.

spatial_tendon_test_usd.zip (7.1 MB)
Thank you for noticing the thread I created. I will do my best to provide a detailed description of the attempts I’ve made in Isaac Sim and will attach my usd test files.


Within the uploaded ZIP file, there are two files as shown in the screenshot above: LU and simple_cube. LU corresponds to the model displayed in the screenshot when creating this thread, while simple_cube contains additional tests I conducted by creating some basic cubes.
(1) LU

In Isaac Sim, after opening the highlighted USD file from the LU folder shown in the screenshot, I configured two LU robots with different parameters:

  1. The second robot’s Rest Length is set to the initial length
  2. The first robot’s Rest Length has a manually configured value (0.308) to maintain static positioning at simulation start
    Note: This manual setting differs from the CAD model’s actual value of 0.22427


As demonstrated in the screenshot, upon simulation initialization, the right-side LU robot (configured with Rest Length = set to the initial length) exhibits unexpected arm elevation behavior.

However, when I actuate the control cube positioned above the left LU robot to displace and pull the tendon, the arm achieves the correct elevation angle (calculated based on CAD model dimensions). This suggests an artificial distance appears to exist between the root and leaf attachments in the simulation, for which the manually configured Rest Length (0.308 vs CAD’s 0.22427) serves as a compensatory parameter.

(2) simple_cube



Similar to the LU robot’s structure, the simple_cube robot shown in the screenshot also incorporates a cardan joint (cross-hinge) at the marked coordinate system. This mechanical configuration enables the middle size cube to rotate around the large size cube with two rotational degrees of freedom.

Following the same methodology:

  1. For the leftmost simple_cube robot, I configured Rest Length to ‘Set to Initial Length’
  2. The second simple_cube robot has Rest Length explicitly set to 1.21158 (matches the measured value from my CAD model)

Observed behavior:
Both configurations remain nearly static upon simulation initialization.

Core questions:
A) Why does this simple_cube implementation not exhibit the artificial distance phenomenon observed in the LU robot scenario, while achieving the same static stability as demonstrated in official examples?
B) In the third simple_cube robot, after modifying the principal inertia axes of the lower small cube (as annotated in the screenshot):

  • Upon simulation start, the middle-sized cube and small cube experience an abrupt pulling motion
  • When disabling the tendon, both cubes remain static
    Why does this seemingly unrelated inertia parameter modification induce dynamic instability?