Spot's joints Failed to update when a set of sensor of sensors `rack` is mounted by a fixed joint

Note: For any Isaac Lab topics, please submit your topic to its GitHub repo ( GitHub - isaac-sim/IsaacLab: Unified framework for robot learning built on NVIDIA Isaac Sim ) following the instructions provided on Isaac Lab’s Contributing Guidelines ( Contribution Guidelines — Isaac Lab Documentation ).

Please provide all relevant details below before submitting your post. This will help the community provide more accurate and timely assistance. After submitting, you can check the appropriate boxes. Remember, you can always edit your post later to include additional information if needed.

Isaac Sim Version

5.0.0
X 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

X Ubuntu 22.04

Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: Quadro RTX 5000
  • Driver Version: 550.144.03

Topic Description

Detailed Description

in a stand alone set up, I am loading the spot model and a set of sensors from USD file. I am connection the set of sensors to the body of spot with a fixed joint. The set of sensor is define as a RigidPrim(…) . The Spot model is controlled by the default controller provided by NVIDIA.

It seems to work but after a few moments pieces of the Spot’s don’t fully update and a error message is displayed. This message seems to show that it can’t write to the object such as : “ Cannot set attribute value. Failed to create attribute spec </World/Spot/fr_uleg/fr_kn.state:angular:physics:position> “

Over time it gets really low and all legs have gotten stock somewhere around. See the images.

Any ideas why would the be happening?

Would this be something related to the my the Rigid body of the sensors are associated to the body of Spot (the body link)? I tried a few iterations of joint the set of sensor to the Spot but all resulted in the same issue.

Steps to Reproduce

(Add more steps as needed)

Error Messages

[python.sh-1]
[python.sh-1] 2025-08-21 22:11:45 [98,560ms] [Error] [omni.usd] Runtime Error: in _SetValueImpl at line 6214 of /builds/omniverse/usd-ci/USD/pxr/usd/usd/stage.cpp – Cannot set attribute value. Failed to create attribute spec </World/Spot/fr_uleg/fr_kn.state:angular:physics:position> in layer @anon:0x18246cf0:World0.usd@
[python.sh-1]
[python.sh-1] 2025-08-21 22:11:52 [105,707ms] [Warning] [omni.usd] Coding Error: in _CreateSpec at line 4385 of /builds/omniverse/usd-ci/USD/pxr/usd/sdf/layer.cpp – Cannot create spec </World/Spot/hr_uleg/hr_kn.state:angular:physics:position> because it already exists in @anon:0x18246cf0:World0.usd@
[python.sh-1]
[python.sh-1] 2025-08-21 22:11:52 [105,708ms] [Warning] [omni.usd] Coding Error: in CreateSpec at line 101 of /builds/omniverse/usd-ci/USD/pxr/usd/sdf/childrenUtils.cpp – Failed to create spec of type ‘SdfSpecTypeAttribute’ at </World/Spot/hr_uleg/hr_kn.state:angular:physics:position>
[python.sh-1]
[python.sh-1] 2025-08-21 22:11:52 [105,708ms] [Error] [omni.usd] Runtime Error: in _SetValueImpl at line 6214 of /builds/omniverse/usd-ci/USD/pxr/usd/usd/stage.cpp – Cannot set attribute value. Failed to create attribute spec </World/Spot/hr_uleg/hr_kn.state:angular:physics:position> in layer @anon:0x18246cf0:World0.usd@
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:05 [118,643ms] [Warning] [omni.usd] Coding Error: in _CreateSpec at line 4385 of /builds/omniverse/usd-ci/USD/pxr/usd/sdf/layer.cpp – Cannot create spec </World/Spot/hl_hip/hl_hy.state:angular:physics:velocity> because it already exists in @anon:0x18246cf0:World0.usd@
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:05 [118,643ms] [Warning] [omni.usd] Coding Error: in CreateSpec at line 101 of /builds/omniverse/usd-ci/USD/pxr/usd/sdf/childrenUtils.cpp – Failed to create spec of type ‘SdfSpecTypeAttribute’ at </World/Spot/hl_hip/hl_hy.state:angular:physics:velocity>
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:05 [118,643ms] [Error] [omni.usd] Runtime Error: in _SetValueImpl at line 6214 of /builds/omniverse/usd-ci/USD/pxr/usd/usd/stage.cpp – Cannot set attribute value. Failed to create attribute spec </World/Spot/hl_hip/hl_hy.state:angular:physics:velocity> in layer @anon:0x18246cf0:World0.usd@
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:11 [124,758ms] [Warning] [omni.usd] Coding Error: in _CreateSpec at line 4385 of /builds/omniverse/usd-ci/USD/pxr/usd/sdf/layer.cpp – Cannot create spec </World/Spot/fl_lleg.xformOp:orient> because it already exists in @anon:0x18246cf0:World0.usd@
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:11 [124,759ms] [Warning] [omni.usd] Coding Error: in CreateSpec at line 101 of /builds/omniverse/usd-ci/USD/pxr/usd/sdf/childrenUtils.cpp – Failed to create spec of type ‘SdfSpecTypeAttribute’ at </World/Spot/fl_lleg.xformOp:orient>
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:11 [124,759ms] [Error] [omni.usd] Runtime Error: in _SetValueImpl at line 6214 of /builds/omniverse/usd-ci/USD/pxr/usd/usd/stage.cpp – Cannot set attribute value. Failed to create attribute spec </World/Spot/fl_lleg.xformOp:orient> in layer @anon:0x18246cf0:World0.usd@
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:21 [134,543ms] [Warning] [omni.usd] Coding Error: in _CreateSpec at line 4385 of /builds/omniverse/usd-ci/USD/pxr/usd/sdf/layer.cpp – Cannot create spec </World/Spot/hl_uleg/hl_kn.state:angular:physics:position> because it already exists in @anon:0x18246cf0:World0.usd@
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:21 [134,543ms] [Warning] [omni.usd] Coding Error: in CreateSpec at line 101 of /builds/omniverse/usd-ci/USD/pxr/usd/sdf/childrenUtils.cpp – Failed to create spec of type ‘SdfSpecTypeAttribute’ at </World/Spot/hl_uleg/hl_kn.state:angular:physics:position>
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:21 [134,543ms] [Error] [omni.usd] Runtime Error: in _SetValueImpl at line 6214 of /builds/omniverse/usd-ci/USD/pxr/usd/usd/stage.cpp – Cannot set attribute value. Failed to create attribute spec </World/Spot/hl_uleg/hl_kn.state:angular:physics:position> in layer @anon:0x18246cf0:World0.usd@
[python.sh-1]
[python.sh-1] 2025-08-21 22:12:23 [137,190ms] [Warning] [omni.usd] Coding Error: in _CreateSpec at line 4385 of /builds/omniverse/usd-ci/USD/pxr/usd/sdf/layer.cpp – Cannot create spec </World/Spot/fr_hip/fr_hy.state:angular:physics:position> because it already exists in @anon:0x18246cf0:World0.usd@

Screenshots or Videos

Additional Information

What I’ve Tried

(Describe any troubleshooting steps you’ve already taken)

Related Issues

(If you’re aware of any related issues or forum posts, please link them here)

Additional Context

(Add any other context about the problem here)

Hi @niconore, thank you for posting the isssue. Can you share the USD you customized?

sorry for the late response. Unfortunately, I cant upload the USD since it has a custom sensor’s rack model.

I tried to use another machine with a newer GPU (GeForce RTX 4090), but I am still getting the same issue.

Here is a picture of the section of the code that attached the spot body frame to the sensor’s rack body frame with a fixed joint.

Would you think the issue something on the actual USD file of the sensors?

Update: I fixed it more less. It had nothing to do with the attaching of the sensor to the platform.

I replace the function call to trigger the frame update from
world.get_world().step(render=True)
to
simulation_app.update()

Also, I reduced the render rate from the World to 30Hz from 50Hz.
and reduced the resolution of the SimulationApp() to the size of SD (854x480)

In summary, This looks to be some internal issue in how the physics and the render are internally updated, I can be totally incorrect. But for now, the settings above solve the issue.

Hi @niconore,

It is actually pretty strange that you changes fixed it. I was suspecting more that there may be an asset with invalid inertia parameters on the sensor rack that may be causing the unstable behavior. Can you confirm if this fix still works?

actually, it didn’t fix the issue. I am still seeing the issue. It is working better than before but all the sudden the limbs start to fall apart.
I am using the base SPOT model provided in Isaac Sim.
How do you suggest I could identify the issue? use it with one sensor a time

Do you recommend for the asset of the rack be place outside of the prim path of the platform?
spot → body_link

spot_rack→ body_fixed_joint

spot_rack→base_link→ sensor1

`body_fixed_joint` transforms from body_link to base_link

Is the sensor rack composed of many parts? Can you start disabling some of the parts and see whether the problem goes away?
Also try to increase the Time Steps Per Second to 120 or 240 in the physics scene properties.

ByTime Steps Per Second, Do you refer to the variable physics_dt ? I guess this is different to set SimulationApp() for the standalone method.

Is there an example in the standalone example that shows the way to set the physics scene properties?

You can either do it in code:

my_world = World(stage_units_in_meters=1.0)
print("Using numpy backend")

# Set the desired time step (240 updates per second for smooth simulation)
desired_time_step = 1.0 / 240.0
my_world.set_simulation_dt(physics_dt=desired_time_step, rendering_dt=desired_time_step)

Or in the GUI through the PhysicsScene prim.

Sorry for the late, response.
So this is equivalent to the physics_dt, I was setting to 1/ 500.0 and the render_dt = 1 / 30.0

I tried setting render_dt = 1 / 240.0 , but it was moving super slow and eventually the same issue occurred.

I am going to try adding one sensor a time, and determine if any of the sensors is causing the issues.

After running some experiences, it seems that the issue occurs when mounting the Realsense asset. I don’t see anything special from this asset.

I used the one from the provided assets , it loading another usd file : ../../../../isaacsim_assets/Assets/Isaac/4.5/Isaac/Sensors/Intel/RealSense/rsd455.usd

Perhaps, I am missing a fixed joint between the camera mount and the body of the sensor. I didn’t add a fixed joint and RSD455 is a rigid body.

In addition, I am seeing the following message: What does this mean? would this be related?

Physics USD Load: RigidBody (/World/Spot_payloads/sensors_rack) appears to be a part of a closed articulation, which is not supported, please exclude one of the joints:
[python.sh-1] /World/Spot/body
[python.sh-1] /World/Spot/fl_lleg/fl_ank
[python.sh-1] /World/Spot/body/fl_hx
[python.sh-1] /World/Spot/fl_uleg/fl_kn
[python.sh-1] /World/Spot/fl_hip/fl_hy
[python.sh-1] /World/Spot/fr_lleg/fr_ank
[python.sh-1] /World/Spot/body/fr_hx
[python.sh-1] /World/Spot/fr_uleg/fr_kn
[python.sh-1] /World/Spot/fr_hip/fr_hy
[python.sh-1] /World/Spot/hl_lleg/hl_ank
[python.sh-1] /World/Spot/body/hl_hx
[python.sh-1] /World/Spot/hl_uleg/hl_kn
[python.sh-1] /World/Spot/hl_hip/hl_hy
[python.sh-1] /World/Spot/hr_lleg/hr_ank
[python.sh-1] /World/Spot/body/hr_hx
[python.sh-1] /World/Spot/hr_uleg/hr_kn
[python.sh-1] /World/Spot/hr_hip/hr_hy
[python.sh-1] /World/Spot_payloads/sensors_rack/joint_body from articulation, the joint will be now excluded from the articulation.
[python.sh-1] 2025-10-09 16:52:16 [28,110ms] [Warning] [omni.physx.plugin] The rigid body at /World/Spot_payloads/sensors_rack has a possibly invalid inertia tensor of {1.0, 1.0, 1.0} and a negative mass, small sphere approximated inertia was used. Either specify correct values in the mass properties, or add collider(s) to any shape(s) that you wish to automatically compute mass properties for.

another interesting messages:
[Error] [omni.physicsschema.plugin] Rigid Body of (/World/Spot_payloads/sensors_rack/base_link/stereo_cam_mount/Realsense/RSD455) missing xformstack reset when child of rigid body (/World/Spot_payloads/sensors_rack) in hierarchy. Simulation of multiple RigidBodyAPI’s in a hierarchy will cause unpredicted results. Please fix the hierarchy or use XformStack reset.

I am thinking the issues has to do the Realsense asset (defined as Rigid Body) and the rack I have defined a Rigid body. So it needs up with a nested Rigid body, which is not allowed in Isaacsim.

On the child rigid body (.../Realsense/RSD455), I have enabled Reset Xform Stack (sets xformOp:resetXformStack as the first op). and then add a fixed joint between the rack body and the camera body to lock them rigidly, but it breaking the pose update of the rack. I don’t see the sensor rack pose change anymore and it is fixed to the starting pose.

@michalin any ideas ? does this sounds like the potential issue and solution. Well If i can figure out how to get to update the pose of the platform as it was doing before,

This seems to be an issue. Make sure you set the inertia parameters of the sensor rack correctly. Inertia tensor of {1.0, 1.0, 1.0} is very large, and of course negative mass is not right.

I tried to connect a fixed joint between a spot 1 and a d455 and don’t see any instability issues. I attached the USD I created.
spot-with-d455.usd (3.3 MB)

Thank you, the example you provided helped resolved some of the errors I was getting. However, I am still seeing the underlying issue.

I am attaching the USD file of the rack with the sensor D455 that is replicating the issue. I am attaching this file to prim path attached to the Spot with a fixed joint. spot_rack_sim_2.zip (3.7 KB)

Here is image of the snip code I used to attached the rack to the platform from the wrapper framework I wrote.

Any idea, Here is another image showing everything, once it is loaded into simulation.

Hi @niconore,

Thanks for your patience on this one. After investigating your USD file and the error messages, I found three compounding issues causing the instability:

1. Closed Articulation Loop

The error RigidBody (/World/Spot_payloads/sensors_rack) appears to be a part of a closed articulation is the key clue. Spot is an articulation (tree of joints). When you attach your rack to Spot’s body link with a fixed joint, PhysX detects a closed loop — which it doesn’t support. It excludes the joint from the articulation, but this leads to corrupted state over time.

2. Nested Rigid Bodies

The RealSense D455 asset has its own RigidBodyAPI, and it’s nested inside your rack which also has RigidBodyAPI. Isaac Sim does not support multiple RigidBodyAPIs in a parent-child hierarchy. This causes the error:

Rigid Body of (.../Realsense/RSD455) missing xformstack reset when child of rigid body

Fix: Remove the RigidBodyAPI from the D455 prim. Since it’s rigidly attached to the rack, it should just be collision/visual geometry under the rack’s rigid body — not its own separate body.

3. Invalid Mass Properties

Your rack has inertia {1.0, 1.0, 1.0} and a negative mass. These are physically invalid and cause the physics engine to use approximations that don’t match your geometry, leading to instability.

Fix: Set realistic mass properties on the rack. For example:

mass_api = UsdPhysics.MassAPI.Apply(rack_prim)
mass_api.GetMassAttr().Set(2.0)  # ~2kg
mass_api.GetDiagonalInertiaAttr().Set(Gf.Vec3f(0.01, 0.01, 0.005))

Recommended Approach

The cleanest solution is to add the rack as a new link within Spot’s articulation tree (not as a separate rigid body connected by a joint that creates a loop). Place the rack prim inside Spot’s hierarchy and create a fixed joint from body to the rack — this extends the articulation tree instead of closing a loop.

I previously attached a working example (spot-with-d455.usd) that connects a D455 to Spot without these issues. Use it as a reference for the correct joint/hierarchy structure.

spot-with-d455.usd (3.3 MB)

Let me know if you need further help!

Hello!

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

If you are still experiencing this issue or have related questions, please create a GitHub Discussion or Issue in the Isaac Sim repository and include a link to this topic along with updated details. Mentioning or linking to this original topic provides helpful 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