Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

3.4 冗余分析

奇异是「列不够」,冗余是「列太多」:关节数一旦超过任务所需维数,同一个末端速度就有无穷多种关节速度实现。这些「多余」的自由度不是浪费——它们是避障、回避奇异、优化姿态的资本。本节先给出任务相关的冗余判据,再说明怎样把这份「多余」用起来。录播 1:47:01–1:56:39。

定义 3.4.1 · 冗余(任务相关)

当机械手自由度个数 nn 大于描述给定任务所必需的变量个数 rr 时,就称该机械手对给定任务冗余。操作空间维度 m<nm&lt;n 时一定冗余(如 7 关节在三维空间操作,7>67&gt;6);而任务维度恒有 r≤m≤6r\le m\le6——一个任务可能只用得上其中两个、三个分量。

冗余是任务相关的概念:同一台机械手,对某个任务可能冗余、对另一个任务却可能非冗余;甚至 m=nm=n 时,只要特定任务只涉及 r<mr&lt;m 个操作空间分量,机械手也是(功能上)冗余的——2.10 讲过的本质 / 功能冗余,在这里正式落地。一个最小的例子见 例 3.4.A。

分析工具:判断冗余不必展开正运动学方程,而是直接分析雅可比(1:50:17)——它把任务速度与关节速度线性地联系起来:

ve=J(q) q˙,ve∈Rr (任务速度),J∈Rr×n,q˙∈Rnv_e=J(q),\dot q,\qquad v_e\in\mathbb R^{r}\ (\text{任务速度}),\quad J\in\mathbb R^{r\times n},\quad \dot q\in\mathbb R^{n}

这里的 vev_e 是与任务相关的速度向量:JJ 并非完整的几何雅可比,而是从中提取任务用到的行得到的。于是当 r<nr&lt;n 时,机械手对该任务冗余,多出 n−rn-r 个冗余自由度——它们很快就会以零空间的形式登场。

例 3.4.A(新增)· 三连杆平面臂的功能冗余

三连杆平面臂 n=3n=3,平面操作空间 m=3m=3(x,yx,y 两个平动 + 绕 zz 转动),本质不冗余。但若任务只做平面内 xyxy 定位、不关心末端姿态(如平面画线 / 搬运),则 r=2<3r=2&lt;3——这就是功能冗余:肘部姿态可以自由摆动,笔尖却保持不动(1:51:25)。反过来,若任务要求位置 + 姿态(r=3r=3),同一台臂便立刻非冗余。

谈冗余离不开两个子空间(1:52:35–1:53:50):

  • 值域空间 R(J)\mathcal R(J):回答「哪些末端速度能做到」——不在 R(J)\mathcal R(J) 里的末端速度不可能用关节速度线性表出(方程无解);
  • 零空间 N(J)\mathcal N(J):回答「哪些关节速度不惊动末端」——它与冗余直接相关:末端速度为零时,关节空间中仍有速度(「内部运动」:臂在动、末端不动)。若机械手冗余,N(J)\mathcal N(J) 就必定非空:存在 n×(n−r)n\times(n-r) 矩阵 NN,其列张成零空间(JN=0JN=0,NN 列满秩)。
定理 3.4.B · 解族与零空间投影

沿用上面的零空间矩阵 NN,取

P=NNT(秩 n−r)P=N N^{\mathrm T}\qquad(\text{秩}\ n-r)

若 q˙∗\dot q^* 是微分运动方程 ve=Jq˙v_e=J\dot q 的一个解(特解),而 q˙0\dot q_0 是任意向量,则

q˙∗+P q˙0仍是方程的解.\dot q^*+P\,\dot q_0\quad\text{仍是方程的解}.

证明(课堂口述,1:54:07–1:56:07)

证明只需一步:验证 JPq˙0=0JP\dot q_0=0;只要这一项为零,解族就自动成立。由 JN=0JN=0 得 JNNTq˙0=(JN)NTq˙0=0JNN^{\mathrm T}\dot q_0=(JN)N^{\mathrm T}\dot q_0=0。□

直观地说:Pq˙0P\dot q_0 落在 PP 的值域里,而 P=NNTP=NN^{\mathrm T} 的值域正是 NN 的列空间 =N(J)=\mathcal N(J)——零空间里的运动不惊动末端。

□

「臂在动、末端不动」长什么样,可以直接画出来(见下图):三连杆平面臂的笔尖 PP 钉在纸上不动,臂的其余部分却还在动——腕心沿一段圆弧滑动,肘部随之摆动。这就是零空间里的内部运动:q˙∗+Pq˙0\dot q^*+P\dot q_0 的第二项,正是沿着这条弧滑动的那一份。

零空间自运动:末端不动、臂在动 三连杆平面臂基座在左下,末端点 P 固定不动;三幅臂形共享同一个 P,腕心 W 沿以 P 为圆心、半径 a3 的虚线圆弧移动,肘部随之摆动。主臂(蓝)对应特解 q′*,两幅浅色臂对应叠加零空间项 P q′0 后的不同位形。 零空间自运动:末端不动、臂在动(a1 = a2 = a3) W 的圆轨迹(|PW| = a3) 内部运动 P q′0:腕心沿虚线弧滑动 基座 肘 P:末端固定不动 + P q′0 的不同取值 → 一族臂形(浅色) 末端速度恒为 v_e:J(q′* + P q′0) = J q′* = v_e 自运动的三个用途:避障 · 回避奇异 · 远离关节极限 「末端执行器没有速度时,机械臂仍可以有位形的改变」(1:48:44)——浅色两支的腕心分别位于 ψ = 30° 与 ψ = 118°
零空间内部运动(本教程绘):笔尖 P 不动,肘与腕沿零空间流动。主臂是 ve=Jq˙v_e=J\dot q 的一个特解 q˙∗\dot q^*;叠加 Pq˙0P\dot q_0 后臂形改变而末端速度不变(定理 3.4.B),于是可以「顺便」完成避障、回避奇异与姿态优化。

冗余的用途(1:55:41–1:56:32):Pq˙0P\dot q_0 描述的是结构内部运动,即不改变末端位置与方向的「自运动」;它的价值在于让机械手在执行任务的同时重新配置自身。典型用途有三:

  1. 提升灵巧性:手术机器人用可操作度(3.5.1)让手腕更灵活;
  2. 避障:「一个姿态到不了,转一下(自运动)就到了」;
  3. 回避奇异、远离关节极限。

这些用途最终都归结为同一个问题:q˙0\dot q_0 该怎么设计(3.5.1 的三种取法)。

默写点 · 合上书再写(主动回忆)

合上正文与速查卡,先把下面几条默写出来,再展开核对。写不出来,就说明这一节还没真正「拿走」。

  1. 冗余的判据是什么(用 n,m,rn,m,r 说)?
  2. 写出零空间投影 PP 与解族。
  3. 证明 Pq˙0P\dot{\boldsymbol q}_0 不惊动末端。
核对

n>rn&gt;r(任务相关冗余)——注意是 rr(任务实际用到的维数),而不是操作空间维数 mm。

P=NNTP=NN^{\mathrm T}(秩 n−rn-r,NN 为零空间矩阵);解族为 q˙=q˙∗+Pq˙0\dot{\boldsymbol q}=\dot{\boldsymbol q}^*+P\dot{\boldsymbol q}_0。

由 JN=0JN=0 得 JPq˙0=JNNTq˙0=(JN)NTq˙0=0JP\dot{\boldsymbol q}_0=JNN^{\mathrm T}\dot{\boldsymbol q}_0=(JN)N^{\mathrm T}\dot{\boldsymbol q}_0=0——该项落在 N(J)\mathcal N(J) 里,故对末端速度的贡献恒为零。

3.4 小结与常见错误

  • 一条主线:n>rn&gt;r(任务相关)⇒ N(J)\mathcal N(J) 非空 ⇒ 解 = 特解 + 零空间通解(Pq˙0P\dot q_0)⇒ 用零空间做「不惊动末端」的内部运动,从而完成机械手再配置。
  • 一句话:「末端执行器没有速度时,机械臂仍可以有位形的改变」(1:48:44)——这就是零空间运动。
常见错误清单 · 自查三条
  1. 用 mm 而不是 rr 判冗余——冗余总是相对任务而言:n=m=3n=m=3 的平面臂对定位任务(r=2r=2)已经是冗余的;
  2. 忘了 JJ 要先「按任务取行」,再谈零空间——零空间维度是 n−rn-r,而不是 n−mn-m;
  3. 把 Pq˙0P\dot q_0 当作「误差修正项」——它对末端速度的贡献恒为零,改变的只是内部姿态。