Replies: 4 comments
-
Thanks for posting this. Joint drives apply a force to the joint in order to maintain a position and/or a velocity, you can find the details here. The docs for Isaac Sim 4.2.0 describe about tunning joint drive gains here. It is not clear why Isaac Sim 4.5.0 docs do not lead to a similar page. And there is something about the URDF importer that needs to be more clear. I will review with the Isaac Lab and Isaac Sim teams to provide more details soon. Thanks for your interest in Isaac Lab. |
Beta Was this translation helpful? Give feedback.
-
To me this sounds like exactly what the actuators do when the policy has a position or velocity action space. In the legged locomotion examples, the action space of the policy is a position offset on some default (usually stance) configuration. For explicit actuators, this produces the control law It is still unclear to me how the joint drive is factored into this setup:
Thank you for the clarification. |
Beta Was this translation helpful? Give feedback.
-
I think this code answer this question:
In both cases, the joint gains defined in the model before adding the actuators have no effect. @RandomOakForest Can you please confirm or infirm this analysis ? |
Beta Was this translation helpful? Give feedback.
-
Thanks for following up. Here is a summary that may address your comments above. I will move this post to our Discussions section for follow up. In NVIDIA Isaac Lab and Isaac Sim, and thus the URDF importer, joint drives and actuators are somewhat distinct components with different roles in joint control. 1. Joint Drive Definition
2. Actuator Interactions
3. Default Behavior with
|
Component | Role in Explicit Actuators | Default Behavior (No Configuration) |
---|---|---|
Joint Drive | Physics engine’s internal PD controller | Disabled (stiffness/damping = 0.0) |
Actuator | Explicit torque computation via control law | Full control over torque output |
- (1) Joint Drives + Implicit Actuators:
Joint drives only apply when using implicit actuators (physics-engine PD control). In this case, joint drive gains must match the actuator’s configured stiffness/damping. - (2) Explicit Actuators:
Joint drives are disabled (stiffness/damping = 0.0) because the actuator computes torque independently.
5. Code in articulation.py
if self._actuator_root.has_actuators:
# Write actuator gains to sim for implicit actuators
if self._actuator_root.is_implicit():
self._write_joint_gains_to_sim()
else:
# Explicit actuators: Zero out joint gains
self._write_joint_gains_to_sim(stiffness=0.0, damping=0.0)
- Implicit Actuators:
self._write_joint_gains_to_sim()
transfers the actuator's configuredstiffness
anddamping
to the PhysX joint's internal PD controller.- The physics engine then uses these gains to compute joint efforts
- Pre-existing joint gains (from URDF or other configurations) are overwritten by actuator parameters.
- Explicit Actuators:
stiffness=0.0
anddamping=0.0
are explicitly set, disabling the PhysX joint's internal PD controller.- The actuator computes torque independently (e.g., via motor models or custom control laws) and applies it directly.
- Any pre-configured joint gains are ignored because the physics engine's PD terms are zeroed out.
In summary:
- Implicit Actuators: Actuator gains → PhysX joint gains.
- Explicit Actuators: PhysX joint gains →
0.0
, actuator torque dominates. - Pre-existing joint gains: Always overridden by actuator configuration.
For implementation details, please refer to Isaac Lab's actuator documentation and joint tuning guide.
References
Footnotes
-
https://isaac-sim.github.io/IsaacLab/main/source/api/lab/isaaclab.sim.schemas.html ↩ ↩2 ↩3
-
https://nvidia-omniverse.github.io/PhysX/physx/5.1.3/docs/Articulations.html ↩ ↩2 ↩3
-
https://isaac-sim.github.io/IsaacLab/main/source/overview/core-concepts/actuators.html ↩ ↩2 ↩3
-
https://docs.isaacsim.omniverse.nvidia.com/4.5.0/robot_setup/import_urdf.html ↩ ↩2 ↩3
-
https://isaac-sim.github.io/IsaacLab/main/source/api/lab/isaaclab.actuators.html ↩ ↩2
-
https://isaac-sim.github.io/IsaacLab/main/source/tutorials/01_assets/add_new_robot.html ↩
-
https://docs.omniverse.nvidia.com/isaacsim/latest/features/environment_setup/ext_omni_isaac_urdf.html ↩ ↩2 ↩3
-
https://isaac-sim.github.io/IsaacLab/main/source/api/lab/isaaclab.sim.converters.html ↩ ↩2
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Question
in the URDF importer, actuators can be configured with stiffness and damping. the importer also requires a joint_drive configuration which includes a stiffness and damping in PD mode. what is the physical meaning of the joint drive? it seems people have asked on the isaacsim forms but no clear answer is given. should the joint drive be configured with the same gains as the actuators, or do they correspond to different things? what value is set if None is passed for both the stiffness and damping? any additional information or documentation would be hugely appreciated, as the current documentation is not very clear on what the joint_drive is doing.
Beta Was this translation helpful? Give feedback.
All reactions