跳到正文
孔乙己

阻抗控制与力控:从接触力灵敏度到力位混合的工程实现

力控的工程实现篇:先算出接触力对位置误差的灵敏度,再讲清阻尼比设计、六维力传感器的处理链、显式力控与 Raibert–Craig 力位混合框架,以及插孔任务的完整柔顺策略。

机器人,控制1分钟阅读

装配、打磨、插拔、擦桌子——机器人真正有用的任务大多要和环境接触,而接触任务恰恰是纯位置控制的死穴。

阻抗、导纳、柔顺与 MIT 控制那篇回答的是“选哪条路线、为什么”:从因果性约束出发推导阻抗与导纳的对偶性、无源性与接触稳定性边界,以及 MIT 控制器为什么长成那样。这篇是配套的工程实现篇,只讲落地时真正会卡住的地方——接触力对位置误差到底有多敏感、阻尼该怎么设计才能在接触瞬间不弹跳、六维力传感器的数据要怎么处理才可用、以及任务同时要力又要位置时该怎么分派。

工业机械臂的位置控制做得极硬——重复精度 0.05 mm 靠的就是高增益位置环。现在让它把工件压在钢制台面上,保持 20 N 接触力。

接触后力由变形决定:F=ke δF = k_e\,\delta,钢对钢接触刚度 kek_e 轻松到 106 N/m10^6\ \mathrm{N/m} 量级。20 N 对应的变形是

δ=Fke=20106=20 μm\delta = \frac{F}{k_e} = \frac{20}{10^6} = 20\ \mu m

也就是说,末端参考位置只要往台面里多给 20 μm,接触力就翻倍;差 20 μm,就脱离接触。而 20 μm 已经逼近臂的绝对定位精度,工件本身的位置公差通常还要大一个量级。结论是定量的:接触力对位置误差的灵敏度是 kek_e,环境越硬,位置控制越是在做一件系统上不可能的事。

出路不是“更准的位置”,而是改变机器人呈现给环境的动力学。这是 Hogan 在 1985 年提出阻抗控制时的核心洞见:不要控制位置,也不要控制力,控制二者之间的动态关系。

力控的实现结构只有两种,区别就在因果方向:

flowchart TD subgraph 阻抗控制(力矩型) A1[位姿偏差] --> B1[虚拟弹簧阻尼<br/>K、D] --> C1[J 转置 → 关节力矩] --> D1[力矩/电流环] end subgraph 导纳控制(位置型) A2[F/T 传感器测力] --> B2[虚拟质量弹簧阻尼<br/>Mv、Dv、Kv 积分] --> C2[修正参考轨迹 xv] --> D2[高刚度位置环] end
  • 阻抗控制(力源):进位移、出力。有关节力矩接口(直驱、准直驱,或带关节力矩传感器的臂,如 Franka、KUKA iiwa)时走这一路,控制律 τ=J⊤(−Kd x~−Dd x~˙)+G(q)+C(q,q˙)q˙\boldsymbol\tau = \mathbf J^\top(-\mathbf K_d\,\tilde{\mathbf x} - \mathbf D_d\,\dot{\tilde{\mathbf x}}) + \mathbf G(\mathbf q) + \mathbf C(\mathbf q,\dot{\mathbf q})\dot{\mathbf q} 就够用,重力与科氏项用动力学模型补偿,雅可比转置用的是运动学里的静力学对偶;
  • 导纳控制(位置源):进力、出位移。工业臂不开放力矩接口时走这一路——末端装六维力传感器,测得的 Fext\mathbf F_{ext} 驱动一个虚拟二阶系统积分出参考轨迹修正量,再喂给内层高刚度位置环。

至于两条路线各自什么时候失稳、期望阻抗该怎么给、惯量整形为什么必须有力传感器,都在《阻抗、导纳、柔顺与 MIT 控制》里。下面只讲实现细节。

碰上刚度 kek_e 的环境后,闭环等效刚度是 Kd+ke\mathbf K_d + k_e,等效阻尼还是 Dd\mathbf D_d——接触让系统变硬,阻尼比却被动下降。按自由空间设计的阻尼,接触瞬间可能直接欠阻尼:

阻抗控制建立接触力时不同阻尼比的响应 同一刚度下不同阻尼比的建力过程:欠阻尼在接触瞬间力超调近一倍,配合接触面弹性就变成粘滑弹跳;临界阻尼是稳妥默认

所以接触任务的阻尼要按接触后的等效刚度设计,或者干脆在检测到接触时切换阻尼参数。力超调不是美观问题:脆性工件、精密插配,超调一次就是废品。

导纳控制和显式力控的成败一半在传感器处理链上:

  1. 去皮与工具重力补偿:传感器读数包含工具自重和安装预紧。标定出工具质量 mtm_t 和质心 rt\mathbf r_t(拿几个不同姿态的静态读数做最小二乘),运行时实时扣除 R⊤mtg\mathbf R^\top m_t \mathbf g 及其力矩。姿态变化大的任务不做这一步,“接触力”里全是重力伪装的鬼影;
  2. 惯性力:加速运动时传感器测到 mtx¨m_t \ddot{\mathbf x}。高动态任务要么用加速度计补偿,要么承认力信号在加减速段不可用;
  3. 滤波:接触振动和机械共振(几十到几百 Hz)必须滤,但每一阶低通都在吃导纳环的相位裕度。折中方案:低通截止频率不低于期望力控带宽的 5~10 倍,共振尖峰用窄带陷波器点杀,而不是无脑压低通;
  4. 接触检测:阈值 + 消抖(连续 N 拍超阈才算接触),阈值要盖过运动中的惯性力包络。接触/非接触的状态切换是控制参数切换(第 3 节)的触发器。

打磨任务的需求是:法向保持 20 N,切向沿轨迹走。单纯阻抗只能间接控力(调 xd\mathbf x_d 压进表面,力由刚度换算),要闭环控力就在法向套一个显式力环:

Δxn=(Kfp+Kfis)(Fd−Fn)\Delta x_n = \left(K_{fp} + \frac{K_{fi}}{s}\right)(F_d - F_n)

力误差积分成法向位置修正(导纳框架)或直接前馈成力矩(阻抗框架)。积分项是刚需——库仑摩擦和传感器偏置都会造成稳态力误差。

方向的分派用 Raibert–Craig 混合力位框架:在任务坐标系里定义选择矩阵 S=diag⁡(s1…s6)\mathbf S = \operatorname{diag}(s_1 \dots s_6),si=1s_i = 1 的方向走位置控制、si=0s_i = 0 的方向走力控制,两条支路的输出在互补投影下叠加。关键工程点是任务坐标系要随接触几何走(曲面打磨时法向在变),坐标系估计错了,力控方向怼在约束方向上,两边打架。

插孔(peg-in-hole)是把这些拼起来的经典案例:接近段位置控制,搜索段在孔平面内画螺旋 + 法向小力压紧(导纳),入孔段侧向低刚度阻抗让孔壁“引导”销钉自动对中——让环境几何替你完成最后 0.1 mm 的对准,这正是柔顺控制的全部哲学。

问题 答案
位置控制为什么碰不得硬环境 力对位置误差的灵敏度是 ke∼106k_e \sim 10^6 N/m,超出定位精度的物理能力
接触瞬间怎么不弹跳 阻尼按接触后等效刚度 Kd+ke\mathbf K_d + k_e 设计,或接触触发参数切换
力传感器怎么才可用 去皮与工具重力补偿、惯性力前馈、滤波留够相位裕度、阈值消抖做接触检测
要精确力值怎么办 法向显式力环(PI),混合力位框架分派方向,任务系随接触几何更新
硬件前提 力矩环必须透明(摩擦可预测、力矩可信赖),否则再好的算法也装不像软弹簧

力控的层级和动力学的“模型换性能”一样清晰:重力补偿给你拖动示教,阻抗给你安全接触,显式力控给你工艺力精度——而这一切的地基,是一个摩擦可预测、力矩可信赖的关节。硬件不透明,算法替不了。

  • N. Hogan. Impedance Control: An Approach to Manipulation, Parts I–III. ASME J. Dyn. Sys., Meas., Control, 1985.
  • A. Albu-Schäffer, C. Ott, G. Hirzinger. A Unified Passivity-based Control Framework for Position, Torque and Impedance Control of Flexible Joint Robots. IJRR, 2007.
  • M. H. Raibert, J. J. Craig. Hybrid Position/Force Control of Manipulators. ASME J. Dyn. Sys., Meas., Control, 1981.
  • C. Ott. Cartesian Impedance Control of Redundant and Flexible-Joint Robots. Springer, 2008.
  • B. Siciliano, L. Villani. Robot Force Control. Kluwer, 1999.

评论