6.4 精细操作与力控:阻抗/导纳控制与接触丰富任务


文档摘要

6.4 精细操作与力控:阻抗/导纳控制与接触丰富任务 自由空间里机械臂可以「想怎么动就怎么动」,但一旦接触物体(擦拭、装配、按压),就不能纯位置控制——硬碰硬会撞坏东西或卡死。这一节讲清怎么让机器人「柔顺」地接触世界。 6.4.1 接触任务的挑战 考虑「擦桌子」任务: 纯位置控制:让抹布按预设轨迹移动。但桌面不平、抹布厚度变化时,要么脱离接触(擦不到),要么硬压(损坏)。 力控需求:希望保持恒定的法向按压力,同时让抹布贴合桌面形状。 再考虑「轴孔装配」: 纯位置控制:让轴沿预设路径插入。但制造公差让孔位置有偏差,硬插会卡死甚至损坏。 力控需求:根据接触力反馈微调位置,让轴自然滑入孔。 核心矛盾:位置控制要求精确跟踪轨迹,力控要求顺应接触——两者不能同时同方向满足。需要新的控制范式。 6.4.

6.4 精细操作与力控:阻抗/导纳控制与接触丰富任务

自由空间里机械臂可以「想怎么动就怎么动」,但一旦接触物体(擦拭、装配、按压),就不能纯位置控制——硬碰硬会撞坏东西或卡死。这一节讲清怎么让机器人「柔顺」地接触世界。

6.4.1 接触任务的挑战

考虑「擦桌子」任务:

  • 纯位置控制:让抹布按预设轨迹移动。但桌面不平、抹布厚度变化时,要么脱离接触(擦不到),要么硬压(损坏)。
  • 力控需求:希望保持恒定的法向按压力,同时让抹布贴合桌面形状。

再考虑「轴孔装配」:

  • 纯位置控制:让轴沿预设路径插入。但制造公差让孔位置有偏差,硬插会卡死甚至损坏。
  • 力控需求:根据接触力反馈微调位置,让轴自然滑入孔。

核心矛盾:位置控制要求精确跟踪轨迹,力控要求顺应接触——两者不能同时同方向满足。需要新的控制范式。

6.4.2 阻抗控制:让机器人变成弹簧-阻尼系统

阻抗控制(Impedance Control) 由 Hogan 在 1985 年提出,核心思想:让机器人表现为一个弹簧-阻尼-质量系统,与环境交互。

阻抗控制律

M_d \ddot{x} + B_d (\dot{x} - \dot{x}_d) + K_d (x - x_d) = F_{ext}

其中:

  • x_d, \dot{x}_d:期望位置、速度。
  • x, \dot{x}, \ddot{x}:实际位置、速度、加速度。
  • M_d, B_d, K_d:期望的虚拟质量、阻尼、刚度。
  • F_{ext}:外部接触力。

这个方程描述「机器人对外力的响应」——它像一个虚拟的质量-阻尼-弹簧系统。环境推它时,它顺应地移动;环境不推时,它回到期望位置。

<svg viewBox="0 0 600 280" xmlns="http://www.w3.org/2000/svg"> <!-- 墙(环境) --> <rect x="450" y="60" width="20" height="160" fill="#94a3b8" stroke="#475569"/> <text x="460" y="50" text-anchor="middle" font-size="11">环境</text> <!-- 期望位置 --> <line x1="200" y1="140" x2="380" y2="140" stroke="#16a34a" stroke-width="2" stroke-dasharray="6 4"/> <text x="290" y="130" text-anchor="middle" font-size="10" fill="#16a34a">x_d 期望位置</text> <!-- 弹簧 --> <path d="M 200 140 q 10 -10 20 0 q 10 10 20 0 q 10 -10 20 0 q 10 10 20 0" fill="none" stroke="#dc2626" stroke-width="2"/> <text x="240" y="170" text-anchor="middle" font-size="10" fill="#dc2626">K_d 弹簧</text> <!-- 阻尼 --> <rect x="290" y="125" width="40" height="30" fill="none" stroke="#2563eb" stroke-width="2"/> <line x1="295" y1="140" x2="325" y2="140" stroke="#2563eb" stroke-width="2"/> <text x="310" y="170" text-anchor="middle" font-size="10" fill="#2563eb">B_d 阻尼</text> <!-- 末端(机器人) --> <rect x="380" y="115" width="50" height="50" fill="#fde68a" stroke="#ca8a04" stroke-width="2"/> <text x="405" y="145" text-anchor="middle" font-size="11">末端</text> <text x="405" y="200" text-anchor="middle" font-size="11" fill="#ca8a04">实际位置 x</text> <!-- 接触力箭头 --> <line x1="430" y1="140" x2="395" y2="140" stroke="#9333ea" stroke-width="2" marker-end="url(#ar3)"/> <text x="460" y="160" font-size="10" fill="#9333ea">F_ext</text> <defs> <marker id="ar3" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"> <path d="M0,0 L6,3 L0,6 Z" fill="#9333ea"/> </marker> </defs> <text x="300" y="250" text-anchor="middle" font-size="10" fill="#6b7280">阻抗控制:机器人表现为 K_d-B_d-M_d 虚拟系统,受外力时顺应移动</text> </svg>

阻抗控制实现

把阻抗律转换为关节力矩(通过雅可比转换):

def impedance_control(x, dx, ddx, x_d, dx_d, M_d, B_d, K_d, F_ext, J): # 操作空间加速度参考 ddx_ref = np.linalg.inv(M_d) @ (-B_d @ (dx - dx_d) - K_d @ (x - x_d) + F_ext) # 转换为关节力矩(操作空间 → 关节空间) tau = J.T @ (M_d @ ddx_ref + B_d @ (dx - dx_d) + K_d @ (x - x_d)) return tau

阻抗参数的含义

  • 高 K_d(刚度):机器人「硬」,对偏差强力纠正,类似位置控制。
  • 低 K_d(柔顺):机器人「软」,受外力时轻易让步。
  • 高 B_d(阻尼):抑制振荡,运动平稳但响应慢。
  • 低 B_d:响应快但可能振荡。

关键应用:通过调节 K_d 和 B_d,让同一机器人表现出「硬如钢」(精确装配)或「软如棉」(与人协作)的不同特性。

6.4.3 导纳控制:阻抗的双胞胎

导纳控制(Admittance Control) 与阻抗控制目标相同(让机器人柔顺),但实现路径相反:

维度 阻抗控制 导纳控制
输入 位置偏差 外力测量
输出 力矩 位置修正
控制律 F = M \ddot{x} + B \dot{x} + K x \ddot{x} = M^{-1}(F_{ext} - B \dot{x} - K x)
适用 位置控制型机器人(Cobot 工业臂) 力控制型机器人(直驱关节)
优点 响应快 稳定性好

简单说:

  • 阻抗控制:「我感觉到位置偏差,输出力」。
  • 导纳控制:「我测量外力,调整我的位置」。

工业协作机器人(UR、Franka)多用阻抗控制,因为它们本质是位置控制型。人形机器人(Atlas、Optimus)多用导纳控制,因为准直驱关节天然力控。

6.4.4 力位混合控制

力位混合控制(Hybrid Force/Position Control) 解决「位置 vs 力」的根本矛盾:在不同方向上分别用位置控制和力控制。

核心思想

把任务空间分为两个正交子空间:

  • 位置控制方向:自由空间(如垂直于接触面的运动方向)。
  • 力控制方向:约束方向(如接触面法向)。

选择矩阵 S 描述哪些方向用力控,哪些用位置控:

\tau = J^T [S F_{position\_control} + (I-S) F_{force\_control}]

应用:擦拭任务

擦拭任务中:

  • 沿桌面方向(X-Y):位置控制,让抹布按轨迹移动。
  • 法向(Z):力控制,保持恒定按压力。
def hybrid_wipe(position_error, velocity_error, force_error, S): # S = diag(1, 1, 0):XY 位置控制,Z 力控制 F_pos = position_PD(position_error, velocity_error) # XY 方向 F_force = force_PID(force_error) # Z 方向 F_total = S @ F_pos + (np.eye(3) - S) @ F_force tau = J.T @ F_total return tau

6.4.5 装配任务的力位混合

轴孔装配(Peg-in-Hole) 是经典力控任务。难点:

  • 公差极小(微米级)。
  • 位置不可精确预知。
  • 硬插会卡死。

解决方案:搜索 + 力反馈

策略:

  1. 接近孔口,向下接触,检测法向力(确认接触)。
  2. 在 X-Y 平面搜索,根据力反馈判断是否对中。
  3. 对中后向下推进,保持力控(防止卡死)。
  4. 持续到完全插入。

这种 Search-and-Insert 策略依赖高灵敏度的力反馈(第 2.3 节六维力传感器)。

远程中心柔顺(RCC)

更高档的方案是远程中心柔顺装置(Remote Center Compliance, RCC)——一种纯机械的被动柔顺装置,安装在腕部。它让机械臂在接触时自然顺应,无需控制环路。RCC 在汽车装配线等场景广泛使用。

6.4.6 主动 vs 被动柔顺

类型 实现方式 优势 劣势
被动柔顺 机械结构(RCC、柔性关节、软体指) 快(无延迟)、简单 不可调、有限
主动柔顺 控制(阻抗、力位混合) 可编程、灵活 受控制频率限制、可能不稳定

实际系统常两者结合:被动柔顺作为安全兜底,主动柔顺提供精细控制。例如 Franka Panda 的关节有 7 个谐波减速器提供一定被动柔顺,再加上阻抗控制实现精细操作。

6.4.7 触觉反馈与精细操作

第 2.3 节讨论的视触觉传感器(GelSight、DIGIT)在精细操作中扮演关键角色:

任务 触觉作用
插拔 检测接触/对准/插入
按压 检测按压力分布
滑动检测 防止物体从手中滑落
布料操作 检测布料层数、纹理
柔顺抓取 防止压碎易碎物(鸡蛋、水果)

触觉 + 力控结合,是当前精细操作的「黄金组合」:

视触觉 → 接触/滑动事件 → 力控调节 → 精细操作

6.4.8 双手协调操作

人形机器人很多任务需要双手协调(折衣服、拧瓶盖、组装)。双手协调的力控挑战:

  • 内力 vs 外力:双手共持物体时,要区分「双手之间的内力」和「对外做功的外力」。
  • 力分配:怎么把总任务力分配到两只手。
  • 协同 vs 主从:哪只手主导,哪只手辅助。

代表方法如 对象级阻抗控制(Object-level Impedance Control)——把被抓物体作为整体,控制物体的虚拟阻抗,双手自然分配力。

6.4.9 VLA 与力控的结合

VLA 模型(第 5 章)输出动作通常不含力信息。但精细操作需要力控,怎么结合?

方案 描述 优劣
VLA 出轨迹 + 力控执行 VLA 输出位置轨迹,底层阻抗控制执行 简单,但 VLA 不知道力
VLA 含力输出 训练 VLA 同时输出力目标 需要力标注数据
触觉作为 VLA 输入 触觉图像进入 VLA VLA 能感知接触
混合架构 VLA 决策 + 力控执行 + 触觉反馈 当前主流

💡 当前共识:纯 VLA 难以处理精细力控(数据稀缺 + 物理约束硬)。VLA + 传统力控 + 触觉 的混合架构是当前精细操作的工程现实。这也是第 8 章会强调的——VLA 不是替代传统控制,而是与传统控制协作。

6.4.10 学习型力控

最近用 RL 学习力控策略的工作增加:

  • Sim-to-Real RL 装配:在仿真中用 RL 学 peg-in-hole,迁移到真机。
  • Diffusion Policy + 力信号:扩散策略输入图像 + 力信号,输出力位混合动作。
  • VLA + 力反馈微调:VLA 基础上微调力控能力。

这些方法在 数据充足的仿真任务 上有效,但真机部署仍依赖传统力控的兜底。

6.4.11 精细操作的工程实践

总结精细操作系统的工程要点:

要点 说明
高灵敏度力觉 六维力传感器 + 视触觉指尖
可编程柔顺 阻抗/导纳控制,参数可调
力位混合 任务相关方向选择控制模式
被动柔顺兜底 RCC 或柔性夹爪防撞
闭环搜索 装配时主动搜索 + 力反馈
触觉事件检测 接触、滑动、对准事件触发
VLA + 力控分层 VLA 高层决策,力控底层执行

⚠️ 生产箴言精细操作是「最后一厘米」难题。VLA 让机器人能从房间一头走到桌前,但要让机器人把 USB 插进孔里、把鸡蛋打进碗里、把衣服叠整齐,仍依赖精细的力控与触觉。这是当前具身智能最难攻克的工程前线之一。

6.4.12 当前挑战与未来方向

挑战 描述 当前应对
微小力检测 微牛级力传感器成本高 视触觉 + 算法增强
高频响应 接触事件毫秒级 实时控制 + FPGA
多接触协调 双手 + 多指 WBC + 对象级控制
可迁移性 不同物体需要不同参数 自适应阻抗、元学习
安全保证 力控不稳可能伤人 被动柔顺兜底 + 力限制

本节小结

  • 接触丰富任务不能纯位置控制,需要力控——这是「柔顺控制」的舞台。
  • 阻抗控制让机器人表现为虚拟弹簧-阻尼-质量系统,参数 K_d/B_d 决定「硬度」。
  • 导纳控制是阻抗的双胞胎,从外力推导位置修正,适合准直驱关节。
  • 力位混合控制用选择矩阵在不同方向分别用位置/力控制。
  • 装配任务(peg-in-hole)用 Search-and-Insert 策略 + 力反馈。
  • 被动柔顺(RCC)+ 主动柔顺(控制)结合是工程实践。
  • 触觉反馈在精细操作中是关键(接触/滑动/对准检测)。
  • 双手协调用对象级阻抗控制。
  • VLA + 力控分层架构是当前精细操作的工程现实。
  • 精细操作是「最后一厘米」难题,是当前具身智能最难攻克的工程前线。

至此第 6 章结束。你已经理解了从运动规划到底层力控的完整技术栈:规划(6.1)、轨迹(6.2)、控制(6.3)、力控(6.4)。下一章《第 7 章 数据与仿真:Sim-to-Real 与遥操作》将进入「进化」层——机器人怎么获得学习所需的大规模数据。


发布者: 作者: 灏天文库 转发
评论区 (0)
U