力矩限幅
Torque Limiting (Saturation)常用把控制器算出的力矩截断在电机允许的范围内,超出部分不执行。
力矩限幅是控制链路最后一道裁剪:不管上层算出多大力矩,送给电机前都截到 [−τmax, τmax] 之间。τmax 由电机峰值扭矩、驱动器电流上限和减速器强度决定,实际上还会随转速升高而下降。它防止烧电机、打坏齿轮,也让仿真里的机器人不能「无限用力」。副作用是,一旦饱和,控制器以为发出去的和实际执行的不一致:PID 的积分项会越攒越大(积分饱和),脱离饱和后产生大超调,需要做抗饱和处理;仿真训练用的限幅值也应与真机一致,否则策略学到的动作上机会走样。除了幅值,有的系统还会限制力矩的变化率。
例子legged_gym 的 _compute_torques 函数:策略输出关节目标角,经 PD 公式算出力矩后,最后一行用 torch.clip 截到 ±torque_limits 再交给仿真器;libfranka 则额外限制力矩变化率,每个关节约 1000 N·m/s。
- 也叫
- 力矩饱和、输出限幅、扭矩限幅、Torque clipping、Actuator saturation
- 相关
- 峰值扭矩、额定扭矩、扭矩-转速曲线(T-N 曲线)、积分饱和与抗饱和、软限位、力矩控制
- 来源
- legged_gym: legged_robot.py(_compute_torques 中的 torch.clip)
Isaac Lab Docs: Actuators(ideal PD actuator clipping)
libfranka rate_limiting.h(kMaxTorqueRate)