人形机器人和双臂工作站把一个老问题重新推到了台前:两条机械臂共同抓着一个物体时,控制问题和单臂有本质区别。区别不是“变成两倍”,而是变了性质——两臂通过物体连成一个闭运动链,此后任何一臂的指令错误都不再表现为位置误差,而是变成看不见的内力,大到可以捏碎工件或者触发力矩保护。
前面单臂的地基——运动学、动力学、力控——在这里全都要用上,但要先补一块双臂特有的数学:协同任务空间和抓取矩阵。本文把这块补齐,每一步推导都走完。
双臂协同分两档,难度完全不同:
- 松耦合(goal-coordinated):两手各拿各的零件去装配、一手扶一手拧。两臂只共享工作空间,不构成闭链——难点在规划(维度翻倍、臂间避碰),控制上仍是两个独立单臂;
- 紧耦合(bimanual,物理耦合):两手刚性共抓同一个物体。这是本文的主题。
紧耦合难在哪,一笔自由度账就能看出来。两台 6 轴臂共 12 个驱动自由度;被抓物体是刚体,只有 6 个运动自由度。刚性抓取意味着两个末端的位姿都被物体位姿完全决定——12 个末端速度坐标被压进一个 6 维子空间里。那么剩下的 12−6=6 个自由度去哪了?
它们没有消失,而是从“运动”变成了“力”:6 个对物体运动毫无贡献、只在闭链内部互相较劲的力旋量方向——内力(internal wrench)。双臂控制的全部特殊性就浓缩在这 6 个维度上:用得好,它是夹持力,帮你抓稳物体;控不住,它是两台机器人在拔河。下面把这句话变成可计算的数学。
最朴素的描述是两个末端位姿 (x1,x2) 各自给轨迹。问题在于任务语义和这组坐标是拧着的:“把箱子搬到那边”约束的是两手的共同运动,“别把箱子捏碎、别把它撕开”约束的是两手的相对运动——每一条任务约束都同时牵扯 x1 和 x2。
Uchiyama 与 Dauchez 提出的对称式(symmetric formulation)换了一组坐标,让任务语义与坐标一一对应:
- 绝对位姿 xa:物体(或两末端连线中点)在世界系下的位姿——“搬到哪去”住在这里;
- 相对位姿 xr:末端 2 在末端 1 坐标系下的位姿——“捏多紧、会不会撕开”住在这里。刚性共抓时它理应恒定,它的任何变化都意味着物体变形或抓取滑动。
把 12 维的两末端坐标换成 6+6 的绝对/相对坐标:搬运任务只写在绝对坐标上,夹持约束只写在相对坐标上
相对位姿的平移部分是 pr=R1⊤(p2−p1)(世界系差矢量转到末端 1 系)。求导需要 R1⊤ 的导数:由姿态运动学 R˙1=[ω1]×R1 转置得 R˙1⊤=−R1⊤[ω1]×(反对称矩阵转置变号)。乘积法则:
p˙r=R˙1⊤(p2−p1)+R1⊤(p˙2−p˙1)=R1⊤[(p˙2−p˙1)−ω1×(p2−p1)]
多出来的 −ω1×(p2−p1) 一项说明:末端 1 自转也会让“末端 2 相对我”的位置变化,即使两者在世界系里都没有平移——观察者转身了。姿态部分 Rr=R1⊤R2,同样求导并用恒等式 R⊤[a]×R=[R⊤a]× 整理:
R˙r=R1⊤([ω2]×−[ω1]×)R2=[R1⊤(ω2−ω1)]×Rr⟹ωr=R1⊤(ω2−ω1)
把两式按 vi=(p˙i,ωi) 堆叠,记 p21=p2−p1:
vr=Ψ1[−R1⊤0R1⊤[p21]×−R1⊤]v1+Ψ2[R1⊤00R1⊤]v2
代入各臂的几何雅可比 vi=Jiq˙i,就得到相对雅可比:
vr=Jr[q˙1q˙2],Jr=[Ψ1J1Ψ2J2]∈R6×12
这个 6×12 的矩阵是双臂版的“雅可比”:插装、开瓶盖、双手掰弯钢筋这类只关心相对运动的任务,直接对 xr 做闭环(伺服律、DLS、零空间处理全部照搬单臂数值 IK 的那套),12 个关节自动分工。主从控制(leader-follower)是它的退化形式——冻结 q˙1 当领导,只用后 6 列解随动臂。
现在让两手刚性抓住同一个刚体,闭链正式形成。它在速度侧和力侧各有一个表达,而且互为对偶。
物体系原点(取质心)的 twist 为 vo=(p˙o,ω),抓取点 i 相对质心的臂矢量为 ri。刚性抓取时末端与物体是同一个刚体,末端速度由刚体速度场给出(与雅可比列公式是同一个公式):抓取点线速度 =p˙o+ω×ri,角速度直接等于 ω。用 ω×ri=−[ri]×ω 写成矩阵:
vi=Wivo,Wi=[I0−[ri]×I],i=1,2
两个末端共 12 个速度坐标,全部由 6 维的 vo 决定——第 1 节那笔自由度账的速度侧兑现。
两臂经抓取点施加给物体的力旋量为 hi=(fi,mi)。对物体写牛顿-欧拉平衡:合力是两个力直接相加;对质心的合力矩除了 mi 还有力的搬移项 ri×fi:
\underbrace{\begin{bmatrix} \mathbf I & \mathbf 0 & \mathbf I & \mathbf 0 \ [\mathbf r_1]\times & \mathbf I & [\mathbf r_2]\times & \mathbf I \end{bmatrix}}_{\mathbf G ,\in, \mathbb R^{6\times 12}}
\begin{bmatrix} \mathbf f_1 \ \mathbf m_1 \ \mathbf f_2 \ \mathbf m_2 \end{bmatrix}
= \mathbf G, \mathbf hho=[f1+f2m1+m2+r1×f1+r2×f2]=G∈R6×12[I[r1]×0II[r2]×0I]f1m1f2m2=Gh
G 就是抓取矩阵(grasp matrix)。对照速度侧会发现 G=[W1⊤W2⊤](注意 [r]×⊤=−[r]×),这不是巧合,是虚功原理的要求:功率在两种描述下必须相等,
ho⊤vo=h⊤[v1v2]=h⊤G⊤vo对一切 vo 成立⟹ho=Gh
速度用 G⊤ 正着分发,力用 G 反着汇总——和单臂的 τ=J⊤F 是同一种对偶。
G 是 6×12 且行满秩,零空间维数 12−6=6——第 1 节那笔账的力侧兑现。零空间里的 h 满足 Gh=0:对物体的合力合力矩皆零,物体运动完全感觉不到它。它甚至可以写出显式参数化:取任意 (f,m)∈R6,
hint(f,m)=fm−f−m−(r1−r2)×f
代入验证:合力 f−f=0;合力矩 m+r1×f−m−(r1−r2)×f−r2×f=0。两个特例值得记住:f 沿两抓取点连线、m=0,是对挤(夹持);f=0、m 任意,是对扭(一手正拧一手反拧)。
于是任何一组末端力旋量都可以唯一分解为“干活的”和“较劲的”两部分:
h=运动有效分量G+ho+内力分量Nε
其中 N 的列张成 null(G),ε∈R6 是内力坐标。伪逆解 G+ho 是欧氏最小范数解,与零空间正交——它是“完成同样的物体运动,内力为零”的那组分配。
(a) 最小范数分配恰好平衡重力、内力为零;(b) 叠加零空间对力后合外力不变,多出的是纯夹持。摩擦抓取(吸盘、夹爪没夹死)时必须主动加内力才抓得住——内力不是敌人,失控的内力才是
一个诚实的脚注:h 里力(N)和力矩(N·m)单位不齐,“最小范数”依赖度量选择,伪逆分配在力矩维度上可能给出不符合直觉的结果(Erhart & Hirche 对此有系统分析)。工程上常用几何意义明确的虚杆法(virtual sticks)或加权伪逆代替裸伪逆,但“有效 + 内力”的分解结构不变。
理想世界里两臂指令完全一致,内力全程可控。真实世界里,任何让两臂“对物体形状的理解”不一致的因素,都在闭链里转化为内力:
- 基座互标定误差:两臂各自的运动学都准,但 B1TB2 差一点,两手就朝着差一点的两个位姿使劲——这是最大头,见标定;
- 时钟不同步:两个控制器插补时刻错开 Δt,搬运速度 v 下等效相对误差 vΔt——1 m/s 下错 5 ms 就是 5 mm,比标定误差还大,所以双臂必须共主站或用分布式时钟;
- 轨迹生成不一致:两臂各自做笛卡尔插补,中间点的姿态插值路径不同(四元数 slerp 与欧拉角插值的差异就够了);
- 物体并非完全刚性、抓取微滑——这些反而是天然的“减压阀”。
量一下有多大。设每臂笛卡尔刚度 k(位置环很硬的工业臂典型 105∼106 N/m),两臂夹着刚性物体、指令相对误差 δ:物体不可拉伸,两臂各让一半,各自偏离指令 δ/2,内力
Fint=k⋅2δ=k1+k2k1k2δk1=k2=k
取 k=2×105 N/m、δ=2 mm:Fint=200 N——足以压弯薄壁件、让吸盘脱开、或触发碰撞检测急停。纯位置控制的双臂刚性共抓在工程上不成立,这不是调参能解决的,是结构问题。
出路和力控那篇的结论一致:在相对方向上放弃刚度。最简单的版本是给其中一臂加相对导纳——测得内力 F 后让参考位置以 x˙off=F/D 退让。代入 F=keff(δ−xoff) 得一阶闭环:
F˙=keff(δ˙−DF)⟹τ=keffD,Fsteady=Dδ˙
时间常数 τ 由导纳阻尼与闭链刚度之比决定;稳态内力只正比于误差的增长速度而不是误差本身。同样 2 mm 的误差斜坡,D=2000 N·s/m 时内力峰值约 2 N,比纯位置控制低两个数量级:
同样 2 mm 的相对指令误差:纯位置控制的内力爬到 200 N 并永久保持;相对方向加导纳后内力被压在个位数,误差停止增长后自动泄掉。注意纵轴是对数
把前面的零件拼成完整控制器。业界主流是物体级阻抗(object-level impedance)加内力回路的分层结构,思路是把单臂阻抗控制整体提升一个层级——受控的“末端”从法兰变成被抓物体:
**第一层:物体阻抗。**给物体规划轨迹 xo∗(t),让物体对环境呈现期望阻抗:
ΛdΔv˙o+DdΔvo+KdΔxo=henv
由物体的牛顿-欧拉方程反解出两臂需要共同施加的旋量 hocmd(含物体重力与惯性前馈——物体质量属性可以让双臂自己辨识,方法同动力学参数辨识)。
**第二层:旋量分配。**用第 3 节的分解合成各臂指令:
hcmd=G+hocmd+Nεcmd
εcmd 由内力回路给出:从两个腕部力传感器读数中投影出实测内力(用 I−G+G 投影到零空间),对夹持设定值做 PI——摩擦抓取时设定值由摩擦锥算出(吸盘/平行爪需要多大正压力才不滑),刚性工装夹持时设定为小的正值防松。
**第三层:单臂执行。**力矩控制臂直接 τi=Ji⊤hicmd+动力学前馈;只有位置接口的臂退化为导纳实现(第 4 节),性能差一档但结构相同。
flowchart TB
A["物体轨迹 xo*(t)"] --> B["物体级阻抗<br/>输出物体指令旋量 ho"]
E["夹持设定 ε*<br/>(摩擦锥 + 余量)"] --> F["内力 PI"]
S2["腕部 F/T ×2"] --> P["零空间投影<br/>提取实测内力"] --> F
B --> D["旋量分配<br/>h = G⁺ho + Nε"]
F --> D
D --> G1["臂 1:τ = J₁ᵀh₁ + 前馈"]
D --> G2["臂 2:τ = J₂ᵀh₂ + 前馈"]
G1 --> H["物体 / 环境"]
G2 --> H
H --> S2
H --> S1["编码器 + 物体位姿估计"] --> B
这套结构的美妙之处在于关注点分离:搬运精度归物体阻抗层管,抓取安全归内力层管,两层通过 G 的值域/零空间正交分解互不打架——正是第 1 节那笔自由度账在控制架构上的投影。
理论之外,双臂系统还有几件必须做对的事:
- 基座互标定:让两臂末端互相接触共同的标定球/规,或共同观测同一标定板,解 B1TB2(数学同手眼标定的 AX=XB)。精度预算直接从内力反推:想把纯位置段的内力压在 20 N 以下、闭链刚度 105 N/m,互标定就要好于 0.2 mm——比单臂应用的标定要求高一个档次,这也是“共享躯干的人形构型更容易做协同”的原因之一(两臂外参变成同一条运动学链的一部分,但躯干柔性会顶替它成为新误差源);
- 同步:两臂必须在同一实时域里插补——同一控制进程,或 EtherCAT 分布式时钟下的同一主站。“两台各自跑 TCP 通信的控制柜”做不了紧耦合协同;
- 臂间避碰:规划空间从 6 维变 12 维,采样式规划照常工作但自碰撞检查对数暴涨,臂-臂对要用扫掠体或距离场加速;在线层面用两臂距离触发速度尺度化兜底;
- 负载分摊:G+ 默认均摊,接近奇异或力矩饱和的那条臂应该少扛——把伪逆换成加权伪逆 GW+=W−1G⊤(GW−1G⊤)−1,权重取各臂的可操作度或力矩余量。
- 双臂紧耦合的全部特殊性来自一笔自由度账:12 个驱动自由度对 6 个物体自由度,多出的 6 维不是运动而是内力。
- 协同任务空间把任务语义对齐到坐标上:绝对位姿管搬运,相对位姿管夹持;相对雅可比 [Ψ1J1Ψ2J2] 让 12 个关节对相对任务自动分工。
- 抓取矩阵 G 从力平衡推出、与速度约束 G⊤ 虚功对偶;其 6 维零空间就是内力空间,可显式参数化、可投影测量、可闭环控制。
- 纯位置双臂共抓在结构上不成立:毫米级标定误差 × 闭链刚度 = 数百牛内力。相对方向必须有柔性,导纳是最低配置。
- 完整方案 = 物体级阻抗(管运动)+ 零空间内力 PI(管夹持)+ G 的正交分解(保证两者不打架)。
- M. Uchiyama, P. Dauchez. A Symmetric Hybrid Position/Force Control Scheme for the Coordination of Two Robots. ICRA 1988.(对称式协同任务空间的出处)
- P. Chiacchio, S. Chiaverini, B. Siciliano. Direct and Inverse Kinematics for Coordinated Motion Tasks of a Two-Manipulator System. ASME JDSMC, 1996.
- F. Caccavale, M. Uchiyama. Cooperative Manipulation. Springer Handbook of Robotics, 2nd ed., ch. 39.(本领域最好的综述)
- A. Erhart, S. Hirche. Internal Force Analysis and Load Distribution for Cooperative Multi-Robot Manipulation. IEEE T-RO, 2015.(内力分解的度量问题)
- C. Smith et al. Dual Arm Manipulation — A Survey. RAS, 2012.