-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Description
I am trying to retrieve the actual actuator torques produced by the ImplicitDrive (PD drives) in IsaacSim / IsaacLab (Humanoid environment).
Currently, I can retrieve:
joint command torque (PD target torque)
→ via my own logging (joint_torque from IsaacLab robot.data.joint_effort)
joint reaction forces / torques
→ via
articulation.root_physx_view.get_link_incoming_joint_force()
and logged as body_joint_wrench
(Fx, Fy, Fz, Tx, Ty, Tz)
However, I cannot retrieve the actual actuator torque produced by the drive.
The API get_dof_actuation_forces() always returns 0.0, regardless of stiffness/damping/target.
📌 What I have tested
- get_dof_actuation_forces()
Always returns zeros:
forces = articulation.get_dof_actuation_forces()
print(forces) # → all zeros
Even when:
ImplicitDrive (PD) is enabled
non-zero stiffness / damping
position or velocity targets are set
queried after the physics step
- Forum discussion suggests it should work
PeterL (NVIDIA) mentions that get_dof_actuation_forces() “should reflect actuation forces”, and that 0.0 may come from a timing or configuration issue.
But IsaacSim Python docs say:
set_dof_actuation_forces() applies external force override,
not internal PD drive forces.
So behavior seems different between documentation, forums, and actual IsaacLab behavior.
- Reaction force is retrievable
get_link_incoming_joint_force() works correctly, but this is the joint reaction force/torque (environment + contacts + inertia), not the muscle-like drive torque.
❓ My actual question
How can I retrieve the actual actuator torque generated by ImplicitDrive (the PD controller)?
I want the net torque the drive generates each step, before the physics solver combines it with reaction forces.
Is there an API such as:
get_measured_joint_effort()
get_dof_drive_forces()
get_dof_internal_forces()
or any PhysX API that exposes joint drive output?
Or is this currently not exposed in IsaacSim/IsaacLab?
If it's not exposed yet, could you clarify:
whether it is possible at the PhysX level
if there are plans to expose actuator output torque in future releases
or recommended workarounds to estimate the actual actuator torque
🙏 Request
Could you clarify:
How to retrieve the actual actuator torque?
Whether this is supported in PhysX / OmniDynamics?
If not available, is it planned to be exposed?
Any recommended workaround in IsaacLab?
Thank you very much!