【机器人学习】小白学习第15讲:力控制
🦉 猫头鹰都在卷机械臂逆解了,你确定不关注一下?
【机器人学习】小白学习第15讲:力控制 —— 柔顺、阻抗、混合力/位置控制
一句话核心:拧螺丝、擦玻璃、插孔这类活儿,位置控制会"较劲"到把零件顶坏;正确姿势是让机器人末端表现得像一个弹簧-阻尼-质量系统,或者干脆在某些方向控位置、另一些方向控力。
- 本讲目标:理解为什么位置控制不够;讲透阻抗控制的物理直觉;看懂自然/人工约束与混合力位控制的选择矩阵
一、为什么需要这个
小讲 1:位置控制在装配任务里为什么会滚成死循环
为什么说接触任务会翻车
前面 14 讲都在干一件事:让末端精确到达某个位置。碰到"抛光、去毛刺、机加工、装配"这类任务,这条路会翻车。
举的例子:要用纯位置方式完成轴孔装配,两个零件的相对定位精度必须比零件本身的机械公差高一个数量级。而环境的几何和力学特性,恰恰是最难精确建模的那一半。
误差 → 力 → 更大误差:五步滚成死循环
死循环是怎么形成的:
- 规划有一点误差 → 末端"多走了一点";
- 多走的这一点撞上环境 → 产生接触力;
- 接触力把末端推离期望轨迹;
- 位置控制器看到偏差,加大力矩把它推回去;
- 于是接触力更大…… 直到电机饱和或者零件被顶坏。
常见误区
**反直觉的一点:**明确指出——环境越硬、位置控制越准,这个死循环越容易发生。因为"准"意味着控制器一定会死磕那点偏差。想破局,就必须让机器人在接触时表现出柔顺(compliance)。
交互控制两大类:间接力控制与直接力控制
接触力 he是描述交互状态最完整的物理量。据此把交互控制分成两大类:
间接力控制
不闭合力反馈环,通过运动控制间接影响力。包括本讲的柔顺控制和阻抗控制。直接力控制
闭合力反馈环,可以把接触力控制到指定值。包括的力控制和的混合力/位控制。
停下来想一想:为什么"环境越硬 + 位置控制越准"反而越容易出事?为什么本讲讲的间接力控制不闭合力反馈环?
二、核心概念
小讲 2:带接触力的动力学模型,以及被动/主动柔顺这根"广义弹簧"
1. 带接触力的动力学模型
在有接触力时,模型多出一项:
B(q)q¨+C(q,q˙)q˙+Fq˙+g(q)=u−JT(q)he B(q) \ddot{q} + C(q, \dot{q}) \dot{q} + F \dot{q} + g(q) = u - J^{T}(q) h_{e} B(q)q¨+C(q,q˙)q˙+Fq˙+g(q)=u−JT(q)he
| 符号 | 含义 |
|---|---|
| h_e | 末端施加在环境上的接触力/力矩(6×1)。本约定 h 表示"力+力矩"组合 |
| −Jᵀ h_e | 末端接触力折算成的关节力矩。就是你在学的力雅可比 |
2. 柔顺控制:让机器人变成一根弹簧
先看看"本来只想控位置"时会发生什么。用上一讲的操作空间 PD + 重力补偿,在接触后的稳态满足(、9.3):
x~=KP−1hA ⟺ hA=KPx~ \tilde{x} = K_{P}^{-1} h_{A} \iff h_{A} = K_{P} \tilde{x} x~=KP−1hA⟺hA=KPx~
看清楚:偏差和接触力成正比,比例系数就是 KP。这意味着位置控制器本身就已经是一根"广义弹簧"——KP是刚度,KP-1是柔顺。
被动柔顺
靠机械装置实现。两个刚体之间垫一个六维弹簧:h_s = K dx。Kf平移刚度、Kμ旋转刚度、Kc耦合刚度。
典型器件:RCC(Remote Centre of Compliance,远端柔顺中心)——装在末端和最后一个连杆之间,插入方向刚度高、其余方向很软,插孔时孔壁反力会自动把销"导正"。
缺点:换任务就得换硬件,通用性差。主动柔顺
靠控制软件实现,改几个数就能换任务。
关键改进:把操作空间误差定义在期望坐标系里,这样得到的柔顺关系才不随末端姿态乱变(、9.20):
h_e = K_P dx→主动刚度;dx = K_P⁻¹ h_e→主动柔顺。
和环境耦合之后,接触力的稳态值:
he=(I6+KKP−1)−1K⋅dxr,d h_{e} = ( I_{6} + K K_{P}^{-1} )^{-1} K \cdot dx_{r,d} he=(I6+KKP−1)−1K⋅dxr,d
| 符号 | 含义 |
|---|---|
| K | 环境的刚度矩阵(通常半正定,因为接触力只出现在某些方向) |
| K_P | 机器人的主动刚度(由控制增益决定) |
| dx_r,d | 期望位姿相对环境自然位置的偏离量 —— 也就是"你多走了多少" |
直觉上:**接触力 = 两个弹簧串联后的等效刚度 × 你多走的距离。**谁软谁就变形多、谁硬谁说了算。 的操作建议:环境该让的方向把 KP取大,机器人该让的方向把 KP取小。
小讲 3:阻抗控制与导纳控制——给末端"捏"出一个弹簧性格
3. 阻抗控制:本讲最重要的概念
柔顺控制只管"停下来时是什么样"(静态关系)。阻抗控制管的是整个动态过程:撞上去的那一瞬间,机器人怎么反应。
思路:在上讲的操作空间逆动力学控制上,额外加上力测量并补偿(、9.31):
u=B(q)y+n(q,q˙)+JT(q)he u = B(q) y + n(q, \dot{q}) + J^{T}(q) h_{e} u=B(q)y+n(q,q˙)+JT(q)he
代入后得到:
Mdx~¨+KDx~˙+KPx~=hA M_{d} \ddot{x\tilde{}} + K_{D} \dot{x\tilde{}} + K_{P} \tilde{x} = h_{A} Mdx~¨+KDx~˙+KPx~=hA
提示
这就是那句最重要的话:阻抗控制不直接控制力,而是让末端表现得像一个"质量-弹簧-阻尼"系统。
你给它一个力 h,它就按
M_d ẍ̃ + K_D ẋ̃ + K_P x̃ = h这条规律"让"出一个位移 x̃。·**Md**决定"惯性感"——你推它,它多重、响应多迟钝;
·**KD**决定"阻尼感"——你推它,它多黏、会不会来回晃;
·**KP**决定"软硬"——你推到底,它能让多少。
**生活比喻:**不是"我一定要用 10 N 的力擦玻璃",而是"我把手变成一根软硬适中的弹簧,玻璃高一点我就退一点,低一点我就进一点"。
特别指出两点:
- **必须测力。**不测力的话,右边会多出一个
M_d B_A⁻¹(q),而操作空间惯量 BA随构型变,系统又耦合起来了。力传感器通常装在腕部,见。 +Jᵀh_e这一项让机器人对外部作用无限刚,而−J_A⁻¹ M_d⁻¹ h_A这一项才把它重新"变软"成有限阻抗。两者配合才能得到。
停下来想一想
**阻抗参数不好选:**取 Md= 100I,KD= 500I,KP= 2500I。结果——
·自由运动方向(竖直):ωn= 5 rad/s,ζ = 0.5,很稳;
·受约束方向(水平):环境刚度 kx= 10³ N/m 时 ωn≈ 5.9、ζ ≈ 0.42;kx= 10⁴ N/m 时 ωn≈ 11.2、ζ 掉到 0.22。
**结论:环境越硬,接触方向越容易振荡。**同一个阻抗参数,在自由方向和接触方向的表现完全不同——这就是阻抗控制的本质困难。
导纳控制(Admittance Control,):把"运动控制"和"阻抗控制"拆成两层。先用阻抗方程
KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at end of input: …lde{z} = h_{e}
积分出一个"柔顺坐标系"(理想中末端该在哪),再把它交给逆动力学运动控制去执行。好处:运动控制环的增益可以取很大(抗扰动强),阻抗环的增益可以取很软(接触力小),两者互不干扰。稳定性条件:运动控制环的带宽必须大于阻抗环的带宽。
小讲 4:直接力控制、约束运动与自然/人工约束的填表法

图 1:阻抗控制的物理模型。阻抗控制不去直接指定力,而是把末端"捏"成一个质量–弹簧–阻尼系统:KP 是挂在期望位置 xd 上的弹簧(软硬),KD 是并联的阻尼器(黏滞),Md 是末端表现出的惯性。环境从右边压过来的接触力 he 作用在这个系统上,产生偏差 x̃。调阻抗,就是调这三个元件。
4. 力控制:直接把力控到指定值
阻抗控制只能"间接"影响力。要精确指定"用 10 N 擦",得闭合力反馈环。
常见误区
为什么力控制里一般不用 D(微分)?:力测量通常噪声很大,微分会把噪声放大到没法用。所以镇定作用靠速度阻尼项来提供。力控制律里往往是"力测量 + 速度测量",必要时再加位置测量。
三种实现(都基于已有的逆动力学位置控制):
9.4.1 内环位置
力控制器算出一个位置参考xF= CF(fd− fe) 送给位置环。
CF必须含积分(PI),否则稳态时 fe达不到 fd,而且环境自然位置 xr会一直影响结果。
代价:闭环变三阶。9.4.2 内环速度
把位置反馈环断开,xF就变成速度参考,位置是速度的积分。
好处:力控制器用纯 P 就能做到稳态无差,而且闭环只有二阶,设计简单。
代价:没有积分作用,对未建模动态没有抑制能力。9.4.3 并联力/位控制
在上一条基础上并联一个位置作用:位置项 KPx̃ 与力项 KPCF(fd−fe) 直接相加。
效果:不受约束的方向能走到 xd;受约束的方向把 xd当成一个额外扰动,牺牲位置去换力。
5. 约束运动:有些方向根本由不得你
的核心事实:**不可能在同一个方向上同时任意指定位姿和力。**环境说不许动,你就只能在那个方向上施力;环境说不许施力,你就只能在那儿动。
**刚性环境:**约束写成代数方程:
ϕ(q)=0,Jϕ(q)q˙=0,he=Sf(q)λ,Sf=J−T(q)JϕT(q) \phi(q) = 0\text{,} J_{\phi}(q) \dot{q} = 0\text{,} h_{e} = S_{f}(q) \lambda\text{,} S_{f} = J^{-T}(q) J_{\phi}^{T}(q) ϕ(q)=0,Jϕ(q)q˙=0,he=Sf(q)λ,Sf=J−T(q)JϕT(q)
| 符号 | 含义 |
|---|---|
| ϕ(q) = 0 | 完整约束(holonomic),m 个,m < n |
| J_ϕ | 约束雅可比,m×6 |
| S_f | 力选择矩阵:把 m 个独立"约束力幅值" λ 映射成 6 维末端力 he |
| R(S_f) | 力控子空间,维数 m |
| S_v | 速度选择矩阵,满足S_fᵀ S_v = O;R(Sv) 是速度控子空间,维数 6−m |
直觉上:6 个自由度被切成两半——m 个归"力"(环境定位置,你定力),6−m 个归"运动"(环境无力,你定位置)。Sf和 Sv就是把这 6 维空间劈开的那把刀,通常称为选择矩阵(selection matrices)。
停下来想一想
特意纠正的一个混淆:力和速度之间的关系叫互易性(reciprocity),
h_eᵀ v_e = 0,不是正交!因为力和速度属于不同的向量空间(量纲都不同),谈"正交"没有意义。物理含义是:在刚性无摩擦接触下,约束力对一切满足约束的位移不做功。
**柔顺环境:**此时"力"和"变形"通过柔顺矩阵 C 联系,等效刚度:
K′=Sf(SfTCSf)−1SfT,C′=(I6−Pv)C K' = S_{f} ( S_{f}^{T} C S_{f} )^{-1} S_{f}^{T}\text{,} C' = ( I_{6} - P_{v} ) C K′=Sf(SfTCSf)−1SfT,C′=(I6−Pv)C
6. 自然约束与人工约束
把上面的抽象说法变成"填表"操作。先建立一个约束坐标系Oc–xcyczc,让它的轴正好贴着任务几何。
自然约束(Natural)
由任务几何直接决定,不是你选的。
· 速度约束:这个方向不许你动(如墙面不许你穿过去);
· 力约束:这个方向不许你施力(如光滑墙面切向无力)。人工约束(Artificial)
由你的控制策略决定的参考值。
只能指定那些不受自然约束的量。
两组约束互补:每个自由度恰有一个归自然、一个归人工,合起来覆盖全部 6 个变量。
给了三个典型案例,这里列出两个:
| 任务 | 自然约束(环境说了算) | 人工约束(你来指定) | m |
|---|---|---|---|
| 平面上滑动 | żc、ωx、ωy、fx、fy、μz | fz、μx、μy、ẋc、ẏc、ωz | 3 |
| 圆柱销插孔 | ẋc、ẏc、ωx、ωy、fz、μz | fx、fy、μx、μy、żc、ωz | 4 |
| 摇曲柄 | ẋc、żc、ωx、ωy、fy、μz | fx、fz、μx、μy、ẏc、ωz | 4 |
插孔任务里,人工约束中ż_c ≠ 0表示"往里插",其余(fx、fy、μx、μy、ωz)通常取 0——径向力和力矩给 0,就是"我不用力顶孔壁,让孔壁自己把我导向正确位置"。这正是 RCC 被动柔顺装置的思路,只不过现在用控制实现。
7. 混合力/运动控制
有了 Sf和 Sv,就可以把 6 维任务"劈"成两半,各用各的控制律。先把动力学写在你已经熟悉的末端形式:
Be(q)v˙e+ne(q,q˙)=γe−he,Be=J−TBJ−1 B_{e}(q) \dot{v}_{e} + n_{e}(q, \dot{q}) = \gamma_{e} - h_{e}\text{,} B_{e} = J^{-T} B J^{-1} Be(q)v˙e+ne(q,q˙)=γe−he,Be=J−TBJ−1
然后用逆动力学 + 按子空间分解的输入:
α=Svαν+C′Sffλ ⟹ ν˙=αν,λ¨=fλ \alpha = S_{v} \alpha_{\nu} + C' S_{f} f_{\lambda} \implies \dot{\nu} = \alpha_{\nu}\text{,} \ddot{\lambda} = f_{\lambda} α=Svαν+C′Sffλ⟹ν˙=αν,λ¨=fλ
看结果:**速度通道和力通道被彻底解耦,变成两个互不干扰的小问题。**然后各自配一个线性控制律(、9.81):
αν=ν˙d+KPν(νd−ν)+KIν∫(νd−ν)dς|速度通道:PIfλ=λ¨d+KDλ(λ˙d−λ˙)+KPλ(λd−λ)|力通道:PD \begin{aligned} \alpha_{\nu} = \dot{\nu}_{d} + K_{P\nu}(\nu_{d} - \nu) + K_{I\nu} \int (\nu_{d} - \nu) dς | \text{速度通道:}PI \\ f_{\lambda} = \ddot{\lambda}_{d} + K_{D\lambda}(\dot{\lambda}_{d} - \dot{\lambda}) + K_{P\lambda}(\lambda_{d} - \lambda) | \text{力通道:}PD \end{aligned} αν=ν˙d+KPν(νd−ν)+KIν∫(νd−ν)dς|速度通道:PIfλ=λ¨d+KDλ(λ˙d−λ˙)+KPλ(λd−λ)|力通道:PD
刚性环境下更简单:直接用f_λ = λ_d,或加 P / 加 I 反馈(–9.94),其中 I 项专门对付常值偏置扰动。
停下来想一想:稳态时阻抗方程退化成哪个式子,从而和主动柔顺控制完全一致?插孔任务里力控子空间 R(Sf) 的维数 m = 4,那么留给速度控制的是哪几个自由度?
三、关键公式
小讲 5:阻抗公式链、三个矩阵的"手感",以及它的稳态退化
阻抗控制的完整公式链
阻抗控制(/9.31/9.32):u=B(q)y+n(q,q˙)+JT(q)hey=JA−1(q)Md−1[Mdx¨d+KDx~˙+KPx~−MdJ˙Aq˙−hA] ⟹ Mdx~¨+KDx~˙+KPx~=hA \begin{aligned} \text{阻抗控制(}/ 9.31 / 9.32\text{):} \\ u = B(q) y + n(q, \dot{q}) + J^{T}(q) h_{e} \\ y = J_{A}^{-1}(q) M_{d}^{-1} [ M_{d} \ddot{x}_{d} + K_{D} \dot{x\tilde{}} + K_{P} \tilde{x} - M_{d} \dot{J}_{A} \dot{q} - h_{A} ] \\ \implies M_{d} \ddot{x\tilde{}} + K_{D} \dot{x\tilde{}} + K_{P} \tilde{x} = h_{A} \end{aligned} 阻抗控制(/9.31/9.32):u=B(q)y+n(q,q˙)+JT(q)hey=JA−1(q)Md−1[Mdx¨d+KDx~˙+KPx~−MdJ˙Aq˙−hA]⟹Mdx~¨+KDx~˙+KPx~=hA
Md、KD、KP 分别管什么手感
| 符号 | 含义 |
|---|---|
| M_d | 期望惯性矩阵(正定对角)——你希望末端"感觉起来多重" |
| K_D | 期望阻尼矩阵——你希望末端"感觉起来多黏" |
| K_P | 期望刚度矩阵——你希望末端"感觉起来多硬" |
| h_A | 等效接触力(在解析雅可比意义下的表达) |
| x̃ | 操作空间位姿误差x_d − x_e |
直觉上:**这三个矩阵就是你给机器人"捏"出来的性格。**想让它擦玻璃时温柔一点,就把 KP调小、KD调大;想让它钻孔时顶得住,就把 KP调大。
稳态时退化:阻抗控制的静态行为就是柔顺
提示
一个重要的退化关系:稳态时(ẍ̃ = 0, ẋ̃ = 0),阻抗方程退化成
K_P x̃ = h_A—— 这跟主动柔顺的关系完全一样。 也是这么说的:静态时,阻抗控制的表现和主动柔顺控制一致;阻抗控制多的,是那一段"撞上去的过程"。
停下来想一想:想让末端擦玻璃时更软,该把 KP调大还是调小?三个矩阵取 Md= 100、KD= 500、KP= 2500 时,自由运动方向的 ωn和 ζ 各是多少?
小讲 6:两张图——阻抗的物理模型,与插孔任务里的选择矩阵

图 2:混合力/位控制的选择矩阵示意(插孔任务,对应与表 9.2)。孔轴方向 zc 自由,所以控速度 żc;径向 xc、yc 被孔壁卡死,位置由不得你,所以改控力并令 fx、fy ≈ 0,让孔壁反力自动把销导正。
图 2:插孔任务里 Sf 与 Sv 怎么分工
停下来想一想:图 1 里 KP、KD、Md三个元件分别挂在什么位置?图 2 里为什么 zc方向控速度、xc/yc方向改控力?
四、例题 / 动手
例 1:机器人刚度 vs 环境刚度,谁说了算?
例 9.1 的一维版本。销沿 x 方向顶一个弹性平面,环境自然位置x_r = 1.0 m,控制器给的期望位置x_d = 1.1 m(即"多走了" 0.1 m)。
稳态接触力:f=(kPxkx/(kPx+kx))⋅(xd−xr)稳态位置:xe=(kPxxd+kxxr)/(kPx+kx) \begin{aligned} \text{稳态接触力:}f = ( k_{Px} k_{x} / (k_{Px} + k_{x}) ) \cdot (x_{d} - x_{r}) \\ \text{稳态位置:}x_{e} = ( k_{Px} x_{d} + k_{x} x_{r} ) / ( k_{Px} + k_{x} ) \end{aligned} 稳态接触力:f=(kPxkx/(kPx+kx))⋅(xd−xr)稳态位置:xe=(kPxxd+kxxr)/(kPx+kx)
情形 A —— 机器人硬(kPx= 105N/m,kx= 103N/m,比值 100 ≫ 1):
xe=(105×1.1+103×1.0)/1.01×105=111000/101000≈1.099mf=(105×103/1.01×105)×0.1≈990×0.1≈99N \begin{aligned} x_{e} = (10^{5} \times 1.1 + 10^{3} \times 1.0) / 1.01 \times 10^{5} = 111000/101000 \approx 1.099 m \\ f = (10^{5} \times 10^{3}/1.01 \times 10^{5}) \times 0.1 \approx 990 \times 0.1 \approx 99 N \end{aligned} xe=(105×1.1+103×1.0)/1.01×105=111000/101000≈1.099mf=(105×103/1.01×105)×0.1≈990×0.1≈99N
末端几乎走到了 xd,接触力几乎完全由环境的弹簧产生(kx× 0.1 = 100 N)。机器人赢了。
情形 B —— 环境硬(kPx= 100 N/m,kx= 104N/m,比值 0.01 ≪ 1):
xe=(100×1.1+104×1.0)/10100=10110/10100≈1.001mf=(100×104/10100)×0.1≈99×0.1≈9.9N \begin{aligned} x_{e} = (100 \times 1.1 + 10^{4} \times 1.0) / 10100 = 10110/10100 \approx 1.001 m \\ f = (100 \times 10^{4}/10100) \times 0.1 \approx 99 \times 0.1 \approx 9.9 N \end{aligned} xe=(100×1.1+104×1.0)/10100=10110/10100≈1.001mf=(100×104/10100)×0.1≈99×0.1≈9.9N
末端几乎停在环境的自然位置 xr,接触力几乎完全由机器人自己的弹簧产生(kPx× 0.1 = 10 N)。环境赢了。
提示
**工程含义:**想让接触力小、又不至于把零件顶坏?把机器人做软(K_P 取小)。想让定位准、环境该让路?把机器人做硬(K_P 取大)。这就是"主动柔顺"的全部操作——改一个数,就能切换机器人的"软硬性格"。
例 2:用阻抗方程反推"手感"
假设末端等效为一维阻抗,M_d = 100,K_D = 500,K_P = 2500。
**第 1 步 —— 自由运动方向:**没有接触力,方程是M_d ẍ̃ + K_D ẋ̃ + K_P x̃ = 0。对比标准二阶型:
ωn=KP/Md=2500/100=5rad/sζ=KD/(2MdKP)=500/(2×250000)=500/1000=0.5 \begin{aligned} \omega_{n} = \sqrt{K_{P}/M_{d}} = \sqrt{2500/100} = 5 rad/s \\ \zeta = K_{D} / (2\sqrt{M_{d} K_{P}}) = 500 / (2 \times \sqrt{250000}) = 500/1000 = 0.5 \end{aligned} ωn=KP/Md=2500/100=5rad/sζ=KD/(2MdKP)=500/(2×250000)=500/1000=0.5
和给出的 ωny= 5、ζy= 0.5 完全一致。
**第 2 步 —— 接触方向:**环境弹簧 kx与 KP并联,于是刚度变成K_P + k_x:
kx=103:ωn=3500/100≈5.9,ζ=500/(2350000)≈0.42kx=104:ωn=12500/100≈11.2,ζ=500/(21250000)≈0.22 \begin{aligned} k_{x} = 10^{3}\text{:}\omega_{n} = \sqrt{3500/100} \approx 5.9\text{,} \zeta = 500/(2\sqrt{350000}) \approx 0.42 \\ k_{x} = 10^{4}\text{:}\omega_{n} = \sqrt{12500/100} \approx 11.2\text{,} \zeta = 500/(2\sqrt{1250000}) \approx 0.22 \end{aligned} kx=103:ωn=3500/100≈5.9,ζ=500/(2350000)≈0.42kx=104:ωn=12500/100≈11.2,ζ=500/(21250000)≈0.22
同样和一致。环境越硬,接触方向越"欠阻尼"——撞上去更容易来回振荡。
**动手想一想:**如果接触方向振荡太厉害,你该调哪个参数?
提示:ζ = KD/ (2√(Md(KP+kx)))。环境刚度 kx你改不了,所以要么加大 KD(多给点阻尼),要么减小 KP(软一点),要么加大 Md(但响应会变慢)。 正是这么说的:越想把接触力压小(KP越小),系统抗扰动能力就越差——这就是阻抗控制的核心取舍。
停下来想一想:情形 A 里机器人比环境硬 100 倍,接触力约 99 N 是由谁的刚度乘出来的?接触方向上环境刚度 kx变大时,ζ 为什么会掉下去?
五、常见误区
柔顺只描述静态,阻抗描述整个过程
常见误区
误区 1:以为"柔顺"和"阻抗"是一回事。
柔顺只描述静态关系
h = K_P x̃,回答"停稳之后力多大"。阻抗描述完整的动态关系M_d ẍ̃ + K_D ẋ̃ + K_P x̃ = h,回答"撞上去的整个过程怎么走"。前者是后者的稳态特例。
阻抗控制不闭合力反馈环
常见误区
误区 2:以为阻抗控制"能精确控制力"。
不能。 把它归为间接力控制——它是不闭合力反馈环的。虽然公式里出现了 h,那是为了测力补偿,不是力反馈。要精确指定"用 10 N",得用的直接力控制。
互易性不等于正交
常见误区
误区 3:把互易性当成正交。
特意纠正:
h_eᵀ v_e = 0叫互易(reciprocity),不是正交。力和速度属于不同向量空间(量纲都不一样),"正交"在这里没有定义。它的物理含义是刚性无摩擦接触下约束力不做功。
接触任务里"准"不是美德
常见误区
误区 4:以为位置环越准越好。
本讲开头的死循环说明:**环境越硬 + 位置控制越准 = 越容易出事。**接触任务里"准"不是美德,"该软的时候能软"才是。
停下来想一想:heTve= 0 的物理含义是什么,为什么不能叫"正交"?要精确指定"用 10 N 擦玻璃",该用本讲哪一节的方案?
七、本讲小结
停下来想一想:插孔任务的人工约束里,fx、fy、μx、μy通常取什么值?这样取是为了让谁把销"导正"?
要点回顾
- **为什么需要力控制:**接触任务下,纯位置控制会陷入"误差→力→更大误差→更大力"的死循环,直到电机饱和或零件损坏。接触力 he才是描述交互状态最完整的量。
- **柔顺控制:**位置控制本身就是一根广义弹簧(
h_A = K_P x̃)。被动柔顺靠 RCC 这类机械装置,插入方向硬、其余方向软,缺点是换任务要换硬件;主动柔顺靠改 KP,改软件即可。 - 阻抗控制(本讲核心):
M_d ẍ̃ + K_D ẋ̃ + K_P x̃ = h_A。**不直接控力,而是给末端"捏"出一个质量–弹簧–阻尼性格。**Md定惯性感、KD定阻尼感、KP定软硬。稳态时退化为柔顺关系。 - **直接力控制:**内环位置时 CF必须含积分才能稳态无差;内环速度时位置环断开、xF变成速度参考,纯 P 即可无差;并联力/位控制则把位置作用和力作用直接相加。
- 约束运动与混合控制:刚性环境用选择矩阵 Sf(力控子空间,维数 m)和 Sv(速控子空间,维数 6−m)把 6 维空间劈开,
S_fᵀ S_v = O;任务描述用自然约束(任务几何决定)+人工约束(你指定),两者互补且覆盖全部变量。
**一句话总结:**接触任务里,该硬的方向控位置,该软的方向控力;而"软得有多自然",就靠给末端装一个虚拟的弹簧–阻尼–质量系统——这就是阻抗控制。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)