真正让它们在工程上产生天壤之别的,恰恰就是观测量不一样。在控制理论中,观测什么和控制什么直接决定了系统的物理本质和稳定性边界。本文从纯数学、控制架构、物理本质三个维度来拆解。
- 阻抗控制(测的是位置,控的是力):机器人假装自己是一根弹簧,推它,它因为变形(位置变化)而自动产生一个推力。
- 导纳控制(测的是力,控的是位置):机器人假装自己是一个带力传感器的滑块,推它,它先测到推力,然后根据推力大小决定往后退多少。
1. 纯数学对比:微分与积分的因果倒置
先看两个公式,假设目标都是建立 F 和 X 的线性关系:
阻抗公式:
导纳公式: Y 是导纳,如果简化为质量-阻尼系统,X 是通过对 F 的二次积分得到)
如果仅从数学视角考虑,它们互为逆矩阵,在数学上是完全等价的:阻抗是 F=Z⋅ΔX,导纳是 ΔX=Y⋅ΔF,而 Y=Z−1。
如果从控制角度,会问一个的问题:在当前的采样周期里,能立刻算出来的是什么?
- 阻抗控制的算力要求: 要算出 F,需要知道 X 和 X˙,甚至 X¨。X 可以直接测,X˙可以通过编码器差分得到,X¨通常很难测准(需要加速度计或二次差分)。因此,阻抗控制是一个代数运算(虽然含有微分项,但在数字控制里是差分),它把测量到的位置误差,瞬时、直接地映射成力。
- 导纳控制的算力要求: 要算出 X,我需要知道 F,力可以直接测(六维力传感器)。因此,导纳控制是一个动态滤波(积分运算),当测到一个力误差 ΔF 时,不能瞬间变出一个位置,必须让这个力误差驱动一个虚拟的质量块,经过两次积分(产生加速度,积分成速度,再积分成位置),才能得出位置指令。
一句话总结:阻抗是看位置,瞬间给力;导纳是看力,慢慢给位置(通过积分)。
2. 阻抗控制 vs 导纳控制
基于位置的阻抗控制正是混淆的根源,因为很多工业机器人底层没有力矩环,工程师只能把阻抗控制硬塞进位置环里。
假设底层只有位置环,工程师想把阻抗控制改造成基于位置的形式,他会把阻抗公式 F=KΔX反解出来:ΔX=K−1F,此时,基于位置的阻抗控制公式变成了:Xc=Xd−K−1Fext,看起来和导纳控制 Xc=f(Fd−Fext) 一模一样了,本质区别在于“动态阶数”和“力的来源”:
- 基于位置的阻抗控制(通常特指静态刚度控制):往往只使用了弹簧(K),忽略了质量和阻尼,计算是现在测到的力大了 10N,刚度是 1000N/m,那么位置立刻后退 1cm。这是一个比例控制器(P 控制),位置和力是瞬时线性对应的。
- 导纳控制:完整质量-阻尼-弹簧系统(M, B, K),计算现在力误差是 10N,质量是 2kg,那么加速度是 5m/s²,系统积分一下,速度增加了,再积分一下,位置才开始变化,这是一个二阶滤波器。
核心区别: 如果突然施加一个冲击力,基于位置的阻抗会让机器人瞬间跳开(因为 ΔX 瞬间产生);而导纳控制下的机器人因为有一个虚拟质量 M,它会表现得像个很重的东西,先产生加速度,然后才缓慢移动。
3. 观测量不同的本质区别(物理底层逻辑)
在物理世界里,测量位置输出力 和 测量力输出位置,面临的物理约束是完全不同的。
阻抗控制(测位置,控力矩):想象手(机器人)是一根弹簧。
机器人底层电流环控制的是力矩(电流),底层的摩擦、惯量都被力矩环补偿掉了(理论上)。
- 当环境推的时候,关节编码器感觉到了微小的位置变化(ΔX)。
- 大脑(控制器)根据胡克定律 F=KΔX瞬间算出要施加多大的反作用力,底层电流环瞬间输出对应的电流。
- 优点: 力的响应极快(只受电流环带宽限制),即使环境是块铁板(刚性极大),只要力矩环稳定,系统就稳定,因为弹簧压不动铁板,但弹簧不会自己震荡。
- 缺点: 自由空间里,如果力矩环有摩擦没补偿干净,机器人推不动,它就动不了,位置精度差。
导纳控制(测力,控位置):想象手(机器人)是一根由伺服电机带动的巨大铁棍,底层是位置环,增益极高(非常硬)。
- 当环境推的时候,铁棍(位置环)纹丝不动(因为位置环极硬),但是,手腕上的六维力传感器感觉到了力 Fext。
- 大脑(控制器)根据导纳公式算出:既然这么大的力,应该往后让一让,于是发送一个新的位置指令给伺服电机,电机转动,到达新位置,环境施加的力减小了。
- 优点: 自由空间位置极准(因为本质是位置控制)。
- 缺点: 力的响应慢(要经过力传感器采样、计算、位置环跟踪)。如果环境是块铁板,位置环的微小跟踪延迟或超调,都会导致力急剧增加,很容易引发剧烈的震荡(这就是为什么导纳控制碰硬环境需要加大阻尼的原因)。
4. 区别对比
| | |
|---|
| | |
| F=f(X)F=f(X)代数运算(主要是比例/微分) | X=f(F)X=f(F)动态运算(主要是积分/滤波) |
| | |
| | |
| | |
| | |
| 自由空间位置不精准,硬件要求高(需要低摩擦/力控) | |
只要面对的是直驱电机机器人,如果想做高精度的力控(比如精密轴孔装配),就必须回到最原始的阻抗控制(测位置,控电流),因为导纳控制的延迟在硬接触下是致命的。
5、工程选型
到了工厂或者实验室,选哪种算法,由机器人的底层能力决定。
1. 选导纳控制(最常见)
条件:用的是市面上 90% 的成熟工业/协作机器人(如 UR、库卡、发那科、ABB 等)。
- 底层能力:这些机器人只开放位置控制接口(或者速度接口),发个位置指令,内部伺服系统拼命让关节转到那个位置,没法直接控制电机电流/力矩。
- 落地动作:在末端法兰盘上加装一个六维力传感器,写一个外环(通常在工控机或机器人控制器二次开发接口里):读力传感器数据 -> 跑导纳公式 -> 输出位置修正量给机器人。
- 适用场景:打磨、去毛刺、拖动示教、简单装配。如果接触面是硬邦邦的金属,必须把虚拟阻尼调大,否则会哒哒哒地抖。
2. 选阻抗控制
条件:用的是直驱电机机械臂、液压机械臂,或者带关节力矩传感器(如 Franka、KUKA iiwa、DLR 机械臂)的机器人。
- 底层能力:这些机器人底层开放了力矩/电流环控制,并且机械本体摩擦小、反向驱动性好,可以直接下发关节扭矩指令。
- 落地动作:不需要额外的六维力传感器(靠关节编码器测量位置误差即可算出力,关节电流环直接执行)。写一个控制律:读取编码器 -> 计算位置误差 -> 根据刚度/阻尼公式算出期望关节力矩 -> 直接下发力矩指令。
- 适用场景:精密轴孔装配、需要极快力响应的打磨、腿足机器人足底柔顺、康复机器人。优势是不怕硬环境,力控带宽极高,反应极快。