-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
In IsaacLab, the actuator model calculates torque limits based on a velocity based rule:
def _clip_effort(self, effort: torch.Tensor) -> torch.Tensor:
# save current joint vel
self._joint_vel[:] = torch.clip(self._joint_vel, min=-self._vel_at_effort_lim, max=self._vel_at_effort_lim)
# compute torque limits
torque_speed_top = self._saturation_effort * (1.0 - self._joint_vel / self.velocity_limit)
torque_speed_bottom = self._saturation_effort * (-1.0 - self._joint_vel / self.velocity_limit)
# -- max limit
max_effort = torch.clip(torque_speed_top, max=self.effort_limit)
# -- min limit
min_effort = torch.clip(torque_speed_bottom, min=-self.effort_limit)
# clip the torques based on the motor limits
clamped = torch.clip(effort, min=min_effort, max=max_effort)
return clampedIt would be nice to implement this behaviour in the sim node as well.
Metadata
Metadata
Assignees
Labels
No labels