Skip to content

How to retrieve actual actuator torque (ImplicitDrive output), not joint reaction forces? #4136

@SHO252

Description

@SHO252

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

  1. 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

  1. 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.

  1. 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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions