Closed Batou1406 closed 7 months ago
I tried with Go2 also, The Go2 don't jump but the joints are indeed assigned a velocity and a torque
Orbit uses actuators models. The Aliengo is configured with DCMotor
actuators who belong to the category of explicit actuators. These actuators have a PD controller enabled and can take three input :
joint_efforts
: $\tau_{ff}$joint_positions
: $q_{des}$joint_velocities
: $\dot q_{des}$To compute the final Torque as follow $\tau_{j, computed} = kP * (q - q{des}) + kD * (\dot{q} - \dot q{des}) + \tau_{ff}$
With $K_P$ the stiffness
and $K_D$ the damping
of the DCMotor
.
Eventhough, I only used the function set_joint_effort_target
, it still had the PD controller active and the position and velocity reference set as None
were treated as zeros. The short term solution will be to set the damping
and stiffness
to zero in the Aliengo ArticulationCfg
definition. However, one should consider changing the type of actuator for the long term solution.
The issue is now fixed and the correct behaviour when no torque are applied can be observed : Screencast from 08. 05. 24 16:14:34.webm.
Robot is assigned initial Torque or Velocity when reseted
After long investigation of the robot's behaviour, I couldn't explain why the robot was jumping after a reset. For sure this causes problem during training and prevent the policy to reach the maximum episode length every time.
I deactivated every actions the model base action could have on the robot : ie. I removed that line which applied the computed Torques to the asset.
self._asset.set_joint_effort_target(self.u)#, joint_ids=self._joint_ids)
The following behaviour can then observed which don't make sense since absolutly no torque are supposed to be applied to the robot : Screencast from 08. 05. 24 14:19:18.webmNext step
This is clearly a error in the implementation or a bug of some kind. I have to find where it comes from and fix it.