上层控制解耦:研究人员只要管阻抗参数(Kp、Kd)和轨迹,不用管电流、电机常数。
柔顺控制方便:可以快速切换刚性 → 柔性,让机器人能“又硬又软”,比如腿落地时要柔顺吸收冲击。
跨平台统一接口:任何电机(无刷、关节电机)只要支持 MIT 模式,就能被同样的高层控制器使用。
实时性保证:阻抗计算在驱动器本地完成(高速),而上层只需在较低频率更新命令。
上面是AI说的
上层控制解耦 和 跨平台统一接口 这个好理解
柔顺控制方便 更多是指在机器人上,轮足上的问题。太精确反而是问题
类比是机床,绝对精确,绝对不能动。
p_des
→ desired position(期望位置),你希望电机转到的角度(单位 rad)。
例子:你要电机转到 90°,那 p_des = π/2 rad。
θm
→ measured position(实际位置),电机编码器测到的角度(单位 rad)。
它跟 p_des 一比较,就知道有没有偏差。
v_des
→ desired velocity(期望速度),你希望电机转的角速度(单位 rad/s)。
例子:你要电机以 10 rad/s 转动,那 v_des = 10。
dθm
→ measured velocity(实际速度),电机编码器测到的角速度(单位 rad/s)。
t_ff
→ torque feedforward(前馈力矩),相当于“提前给电机一点力气”,用来补偿外部负载或者预期的惯量影响。
Kp
→ position gain(位置增益)。
它的作用是:当位置有误差时,乘上 Kp,把这个误差变成一个需要的力矩输出。
p_des - θm 越大,力矩越大。
Kp 越大,电机会更“刚性”,更快贴近目标位置,但太大会抖动。
Kd
→ velocity gain(速度增益)。
它的作用是:当速度有误差时,乘上 Kd,把速度误差也变成一个力矩输出。
v_des - dθm 越大,力矩越大。
Kd 越大,电机速度跟随能力越强,但太大会震荡。
Kp(pdes−p) (期望位置 - 实际位置) x 位置增益
期望位置离实际位置越远,扭矩越大。 位置增益是放大这个效果。
比如我期望位置是 100 ,实际位置是 20, 位置增益是2。
那么 160 的扭矩
但是 位置增益 就是 Kp 位置不能设置太大,否则可能导致电机一直无法到正确的位置
如期望位置 - 实际位置 = 1. 已经很下小了 但是 kp 是100.
电机就会出现怎么都无法到的情况,就在那里反复转动。
所以kp的设置正确很重要,很多时候0就可以了。
(期望位置 - 实际位置) x 位置增益
这点已经可以解决电机扭动的问题了。
位置环(p_des vs θm):
误差 × Kp → 力矩补偿
👉 确保电机到达你要的位置。
Kd(vdes−v) = 速度增益 x (目标速度 - 当前速度)
这个东西就是用来补偿 位置环 的误差问题
比如我刚才 目标位置是1000, 当前位置是 0, 那么我就需要用大扭矩,大速度去。
但是等靠近了,速度起来了,就要慢下来。
甚至当位置已经过了,就需要有一个力拉回来。
我已经到 1100了,我的目标速度是就应该是0,然后往回拉。
通过这两个公式交替作用,让你的电机不会一直无法到达位置。
速度环(v_des vs dθm):
误差 × Kd → 力矩补偿
👉 确保电机按你要的速度转。
前馈力矩
比如我的电机是默认有一个轮子,他有多大摩擦力或者他要挂什么东西。
他是1kg。那就要在 t_ff 中默认给一个扭矩。
没有这个其实ok。但是会因为不设置 t_ff 变慢
因为默认的有阻力,会导致达到目标位置的速度变慢,至少比预想中的慢,所以需要这 t_ff.