Applied torques on Unitree Go1 return zero measured values in effort control mode

Isaac Sim Version

[o] 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

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

Topic Description

Detailed Description

I’m trying to control the Unitree Go1 quadruped in Isaac Sim using torque (effort) control. I compute an optimal torque vector and apply it to the joints using the Dynamic Control (DC) interface.

The issue is: although the torques are being computed and sent, the measured joint torques always return zero. I verified this using get_dof_effort().

I also want to confirm:
🔹 Is there an explicit setting in Isaac Sim to switch the control mode for joints (e.g., from "position" to "effort")?

Steps to Reproduce

  1. Load Go1 .usd into the scene via add_reference_to_stage(…)
  2. Use DynamicControlInterface.get_articulation(…) and apply torques using set_dof_effort(...).
  3. Read back with get_dof_effort(...) → all zero.

Solved

Hi @Marwah_Al_Sakkaf, thanks for posting this issue and great to hear you found a solution. Would you mind sharing what the issue was and the solution to it?

I was trying to apply torque on joints using
self.robot.set_joint_efforts(tau)
but this method did not apply torques and my torques are always zeros (I don’t know why)

So I used the low level commands using:
self.dc.get_articulation_dof(self.articulation, i)
self.dc.set_dof_effort(dof_handle, tau_reordered[i])

I am not sure if this will have any implications.

1 Like

This topic was automatically closed after 11 days. New replies are no longer allowed.