导纳控制

在机器人控制里,很多人一开始接触“位置控制”“速度控制”比较容易理解,但一听到“导纳控制”“阻抗控制”,就会觉得有点抽象。其实,这两个概念都和一个核心问题有关:

机器人在和外界接触时,应该怎样“表现得像一个有弹性、有阻尼的物体”?

尤其是在协作机器人、打磨装配、康复机器人、外骨骼这些场景中,机器人不是单纯地“按轨迹跑”,而是要能够“感受到外力,并作出柔顺反应”。这时候,导纳控制就很有价值。


一、什么是导纳控制

先用一句最通俗的话概括:

导纳控制,就是“你推我一下,我就动一点”。

也就是说,机器人把外部作用力作为输入,再根据预先设定好的“虚拟质量—阻尼—弹簧模型”,计算出机器人应该产生多大的位移速度

所以它的本质是:

力输入 → 位移/速度输出

这点非常关键。

生活中的类比

你可以把导纳控制想成一个带弹簧和阻尼的小车:

  • 你用手推它一下,相当于施加了一个力;
  • 小车不会无限制飞出去,因为它有“质量”;
  • 小车也不会来回震荡太厉害,因为它有“阻尼”;
  • 如果它偏离平衡位置太多,弹簧还会把它拉回来。

机器人在导纳控制下,就会表现出类似这种感觉:
受力后产生运动,但运动是“有分寸”的。

这不是说机器人真的有一个物理弹簧,而是控制器故意让机器人表现得像有这个弹簧—阻尼—质量系统一样


二、力输入 → 位移/速度输出,到底怎么理解

这部分是导纳控制最核心的地方。

1. 外力是“命令信号”

在普通位置控制中,控制器通常会说:“去某个位置。”
但在导纳控制中,控制器会说:“先看看外界对你施加了多大的力,再决定该往哪里动。”

比如:

  • 人手推一下机械臂末端;
  • 力传感器测到 10N 的推力;
  • 控制器根据导纳模型计算出应该往后退 2mm,或者以 20mm/s 的速度移动;
  • 最后把这个位移/速度命令发给机器人底层伺服系统。

所以导纳控制通常并不是直接控制电机电流,而是位于外层,生成一个柔顺的运动参考。

2. 为什么这很有用

因为现实中的接触任务,往往不能只靠“死板的位置跟踪”。

举几个典型例子:

(1)装配

比如插销插孔、连接器插装。
如果只靠精确位置控制,一旦位置稍微有偏差,机器人就会“顶住”,甚至卡死。

用了导纳控制后,机器人接触到阻力时,会自动微调位置,沿着受力方向适当让步或修正,更容易完成插入。

(2)打磨抛光

打磨时,关键不是某个绝对位置,而是接触力要合适
表面有高低起伏,机器人如果太刚,力会忽大忽小,效果很差。

导纳控制可以根据接触力变化,让机器人上下浮动一点,从而尽量维持稳定接触。

(3)人机协作

协作机械臂被人手推着走时,导纳控制可以让它表现出“轻推即动”的感觉,手感很自然。


三、导纳控制与阻抗控制的区别

这是最容易混淆的地方。

很多教材会说它们“互为对偶”,这句话没错,但对初学者不够直观。我们直接用工程语言来区分。


1. 最本质的区别

导纳控制:

输入是力,输出是运动。

也就是:

  • 测量外力
  • 计算位移/速度
  • 再驱动机器人运动
阻抗控制:

输入是运动偏差,输出是力。

也就是:

  • 机器人看到当前位置和目标位置有偏差
  • 按照设定的弹簧阻尼关系,计算应该输出多大的力/力矩去对抗偏差

2. 一个非常好记的理解方式

  • 导纳控制:机器人“比较听力的安排”
    你给它一个力,它决定怎么动
  • 阻抗控制:机器人“像个弹簧一样反抗”
    你让它偏离了位置,它会产生一个恢复力

3. 为什么工业里常说导纳更实用

因为很多机器人本体本来就是高刚度的位置控制型平台,底层已经很擅长做位置伺服,而不一定方便直接做高质量的力控制。

这时,最自然的方式是:

  • 在外层测力;
  • 算出一个新的位置或速度参考;
  • 内层还是用成熟的位置控制器去跟踪。

这就是典型的导纳控制架构。

所以在工程实现上:

  • 导纳控制更适合“位置控制性能好、但想增加柔顺性”的机器人
  • 阻抗控制更适合“本体就能较好地直接控制力/力矩”的系统

4. 两者的应用区别

更适合导纳控制的情况
  • 协作机械臂拖动示教
  • 装配中的接触修正
  • 打磨抛光
  • 上层做柔顺控制,底层仍保持位置伺服
更适合阻抗控制的情况
  • 本体具有高性能力矩控制能力
  • 需要直接塑造交互力学特性
  • 双足机器人、灵巧手、部分高端力控平台

四、导纳控制的典型实现结构

工程上,导纳控制通常是一个“双层结构”。

外层:导纳模型

内层:位置/速度伺服

结构上可以理解为:

力传感器 → 导纳模型 → 位置/速度指令 → 伺服控制器 → 机器人执行

这个结构的好处是:

  • 容易接入现有机器人控制系统
  • 对底层驱动器改动较小
  • 调参逻辑清楚
  • 工程落地性强

五、导纳控制的离散实现

真正上控制器时,不可能直接连续计算,必须变成离散时间形式。
也就是说,控制器每隔一个采样周期算一次。

这部分虽然听起来偏理论,但其实很实用。


1. 连续模型回顾

在这里插入图片描述

在每个采样周期,我们根据当前的力、速度和位置,算出新的加速度,再积分得到速度和位置。


2. 最常见的离散递推方法

在这里插入图片描述

这就是一个非常经典、也很容易编程实现的离散导纳控制器。


3. 工程实现伪代码

可以写成这样:

读取力传感器 F
去除零偏和噪声
a = (F - B*v - K*x) / M
v = v + a * Ts
x = x + v * Ts
把 x 或 v 作为参考命令发送给机器人

如果是多维空间,比如末端六维力/位移控制,那么上面的标量就会变成向量和矩阵:

  • 力变为 6 维广义力 [Fx,Fy,Fz,Mx,My,Mz]
  • 位移变为 6 维位姿偏差
  • M,B,K 也可以是对角矩阵或完整矩阵

4. 离散实现中最容易踩的坑

(1)力信号噪声太大

力传感器噪声会直接影响输出运动,导致机器人抖动。

常见处理方法:

  • 低通滤波
  • 滑动平均
  • 设置死区阈值
  • 对突变力做限幅
(2)采样周期过大

如果 TsT_sTs 太大,系统更新不够快,柔顺效果会变差,甚至出现振荡。

通常控制周期越小越好,工程中常见 1ms、2ms、5ms 这样的量级。

(3)参数设置不合理
  • M 太小:系统太敏感,容易窜动
  • B 太小:阻尼不足,容易振荡
  • K 太大:系统太“硬”,失去柔顺性
  • K 太小:可能偏移太多,不利于稳定接触
(4)没有做饱和限制

如果外力突然很大,而又没有对速度、位移做限制,机器人可能动作过猛。

工程上通常要加:

  • 最大位移限制
  • 最大速度限制
  • 最大加速度限制
  • 安全边界限制

六、参数怎么调,才更实用

导纳控制好不好用,很大程度取决于 MMM、BBB、KKK 的选择。

1. 虚拟质量 M

决定“推一下后动起来难不难”。

  • M 大:动作稳,但显得迟钝
  • M 小:反应快,但容易敏感

2. 虚拟阻尼 B

决定“运动时刹不刹得住”。

  • B 大:更平稳,不容易振荡
  • B 小:更灵活,但容易晃

3. 虚拟刚度 K

决定“偏离后想不想回到原位”。

  • K 大:更像硬弹簧,不容易偏离太多
  • K 小:更柔软,更容易被推开

4. 一个实用调参思路

如果你是第一次上手,不要一开始就追求“最优”,可以按下面思路:

  1. 先把 K 设小一点
    先让系统有柔顺性
  2. 把 B 设大一点
    优先保证不振荡
  3. 再慢慢减小或调整 M
    找到反应速度和稳定性的平衡
  4. 最后根据任务增加 K
    保证不会偏离过大

工程上,通常是先调出“稳”的系统,再调“快”和“柔”。


七、导纳控制适用场景

导纳控制之所以重要,正是因为它非常适合接触型任务和人机交互任务。


1. 协作机器人拖动示教

这是最典型的场景之一。

操作员用手推着机械臂走,机械臂根据受力自动运动,记录轨迹。
这种方式比手工编程更直观,特别适合:

  • 小批量生产
  • 频繁换工艺
  • 非专业编程人员使用

在这个场景里,导纳控制的目标是:

让人感觉机器人“轻、顺、跟手”。


2. 精密装配

如:

  • 插销插孔
  • 连接器装配
  • 轴孔配合
  • 电池包插装
  • 手机或电子产品组装

这些任务常常存在微小位置误差。
如果机器人太刚,接触后会横向受力增大,导致卡住、磨损甚至损坏零件。

导纳控制可以让机器人根据接触力自动做小范围让步和修正,提高装配成功率。


3. 打磨、抛光、去毛刺

这类任务的核心不是精确走到某个点,而是:

  • 接触要连续
  • 力要稳定
  • 表面质量要均匀

工件表面可能并不完全平整,导纳控制能够使末端自动“贴着表面走”,从而提升加工一致性。


4. 医疗与康复机器人

在康复训练中,机器人不能像工业设备那样“硬推着人动”,而要根据患者的用力情况做柔顺响应。

导纳控制适合实现:

  • 助力训练
  • 主被动切换
  • 柔顺交互
  • 安全保护

比如患者稍微一用力,机器人就顺势带动关节运动,既自然又安全。


5. 外骨骼与助力设备

外骨骼系统中,设备需要根据人体施加的力来判断意图。
导纳控制能让设备“顺着人走”,而不是“拽着人走”。

这种体验差别非常大。


6. 遥操作与主从控制

在遥操作系统中,从端机器人与环境接触时,测得的接触力可以通过导纳模型转化为运动修正,使系统整体更平稳,减少刚性碰撞。


八、导纳控制特别适合哪些机器人系统

从工程角度说,以下类型系统特别适合导纳控制:

1. 底层是位置控制的工业机器人

这种最典型。
因为原有控制系统已经很成熟,增加一个外层导纳模块就能明显提升柔顺性。

2. 协作机械臂

天然需要人机交互和安全接触,导纳控制是常见方案。

3. 末端安装了六维力传感器的系统

有了可靠力反馈,导纳控制就更容易实现高质量效果。

4. 对接触过程“容错性”要求高的任务

如装配、打磨、检测、引导操作等。


九、导纳控制不是万能的

虽然导纳控制很好用,但也不是所有场景都适合。

1. 没有可靠力测量时,效果会打折扣

如果力传感器漂移大、噪声大,或者通过电机电流估算外力不准,那么导纳控制的稳定性会受影响。

2. 超高速强碰撞场景要慎用

导纳控制本质上还是“测到力再响应”,若碰撞特别剧烈,对采样频率、延迟和执行器性能要求很高。

3. 如果底层位置环很慢,导纳效果也会差

外层算得再好,内层跟不上,也无法表现出理想柔顺性。

所以导纳控制的落地效果,取决于整套系统:

  • 传感器质量
  • 采样频率
  • 底层伺服带宽
  • 参数整定
  • 安全限幅策略

十、一个工程师视角的总结

如果用一句话来概括导纳控制:

它是一种把“接触力”转成“柔顺运动”的控制方法。

它的核心逻辑非常清晰:

  • 感知外力
  • 用虚拟质量—阻尼—刚度模型进行计算
  • 生成位移或速度参考
  • 让机器人表现得既能动,又不会乱动

和阻抗控制相比,导纳控制更适合许多底层以位置伺服为主的机器人平台,因此在工业应用中非常常见,也更容易落地。

它特别适用于:

  • 人机协作
  • 拖动示教
  • 精密装配
  • 打磨抛光
  • 康复与助力设备

最重要的一点:

导纳控制关注的是:机器人受到多大力,就应该对应地“让出多少位移”或“给出多大速度”。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐