旋转、合成、角度表示、齐次变换——这些积木已经备齐,本节就来回答运动学的第一个主问题:给定关节变量,求末端位姿。两连杆的情形靠几何直觉就能算出来(原书例 2.4);可一旦面对真实机械手,我们需要的是一套系统化、参数最少的算法,这就是 Denavit–Hartenberg(DH)法。本节对应录播 0:39:43–1:13:00(其中 0:47:16–0:52:47 为课间)。
图解读图:DH 把「两根相邻关节轴之间的相对位姿」压缩成四个数:沿 x 平移 a、绕 x 转 α、沿 z 平移 d、绕 z 转 θ。转动关节只有 θ 是变量;四个参数排成一张表,整条机械臂的几何就写完了。
定义 2.8.1 · 开链机械手的编号
开链机械手由 n+1 个连杆(刚体)经 n 个关节串联而成:连杆 0 固定在基座上,末端连杆上装有末端执行器;关节 i 则把连杆 i−1 与连杆 i 连接起来。关节只有两类(原书图 2.12):转动型(revolute,符号 →圆柱铰)和移动型(prismatic,符号 →方块滑轨)。
录播 0:40:51 老师用讲台打比方:杆 0 就是基座(「讲台就是固定的」),从它开始依次长出关节 1、杆 1……直到关节 n、杆 n。换句话说,关节 i 的前一根是杆 i−1,后一根是杆 i;于是 n 自由度开链 = n 个关节 + n+1 根杆。
定义 2.8.2 · 正运动学方程
正运动学(direct kinematics)回答的是:已知关节变量向量 q=[q1 ⋯ qn]T(转动关节 qi=ϑi,移动关节 qi=di),求末端执行器的位姿。取基坐标系 Ob-xbybzb 与末端执行器坐标系,这一位姿可以写成齐次变换(原书式 2.48)
Teb(q)=[ne(q)0se(q)0ae(q)0pe(q)1],
式中 pe 是末端坐标系原点的位置;ae 为接近向量(approach,指向抓取 / 工作方向),se 落在钳口滑动平面内、且与 ae 垂直;ne=se×ae 则保证 (ne,se,ae) 构成右手系。
(图中同时给出了原书例 2.4:两连杆平面臂用三角法直接写出 Teb,其中 s12=sin(ϑ1+ϑ2),其余依此类推。)
例 2.4(原书)· 几何法与它的天花板
对两连杆平面臂(关节角 ϑ1,ϑ2,杆长 a1,a2),末端位置可以看成两段投影之和:先是 a1 的投影,再加上 a2 在「已抬起 ϑ1 的方向」上的投影(录播 0:44:00–0:44:57,老师逐项指认「ne 垂直于臂平面所以是 [0,0,1]、pe 就是 [a1c1+a2c12, a1s1+a2s12, 0]T」),于是得
Teb=0010s12−c1200c12s1200a1c1+a2c12a1s1+a2s1201.
几何法的天花板(原书 + 录播 0:45:03:「如果多了之后……那就不好算了」):这类算法依赖变量的选取和几何直觉,结构一复杂、关节一多就不再直观。
原理 2.8.A · 正运动学的连乘(原书式 2.50–2.51)
从连杆 0 到连杆 n,给每一根杆都固连一个坐标系,则坐标系 n 相对坐标系 0 的位姿为
Tn0(q)=A10(q1)A21(q2)⋯Ann−1(qn),
其中每个 Aii−1(qi) 都只是单个关节变量的函数。至于末端执行器的位姿,只需再串接两个(典型情况下的)常值变换:
Teb(q)=Tb0Tn0(q)Ten.
结构决定算法:先描述相邻两杆的相对关系,再沿链递归合成(原书)。于是问题只剩一个——相邻坐标系究竟怎么建才算规范?
为什么需要 DH:6 → 4 的账(录播 0:46:41–0:47:16、0:53:22–0:53:59)
随意建两个坐标系、再去描述它们的相对位姿,需要 3+3=6 个量(原点 3 个 + 姿态 3 个)。但相邻两坐标系被同一根刚性杆钉死,彼此并不独立——「你可能直观想象可能有 5 个参数」;DH 建系法则证明,只要 4 个参数就足以完整描述任意相邻关系,「参数是最少,而且最方便、很直观」。省下来的那部分自由度,全部来自建系规则对坐标系的「对齐」。
先把「系到底挂在哪」说透:看守模型(本编补充)
四条规则里最容易卡住读者的,是「zi 沿关节 i+1 的轴」这个编号错位——下标 i 配不上关节 i,对着图找半天才发觉配错了对。这里把挂靠关系一次说透,之后再看四条规则就只是操作细节。
DH 约定只有一句话:杆 i 上固连坐标系 i,其 z 轴放在关节 i+1 的轴线上。把下标换个方向读,更顺口——
坐标系 i−1 是「看守关节 i」的坐标系:它的 z 轴 zi−1 与关节 i 的轴线重合。
| 要找的东西 |
去哪里找 |
| 关节 i 的轴线 |
就是 zi−1(看守它的那根轴) |
| 杆 i 的固连系 |
系 i(原点 oi 落在关节 i+1 的轴线上) |
| 关节 i 的运动 |
绕 / 沿 zi−1:转 ϑi 或移 di |
| Aii−1 里的变量 |
只有关节 i 的那一个(「3 常 1 变」的出处) |
为什么这样挂:zi−1 与关节 i 的轴对齐后,关节 i 转动或伸缩时,杆 i(连同系 i)相对杆 i−1(连同系 i−1)的运动就纯粹是绕 / 沿 zi−1,一个参数即可装进矩阵;若 z 轴随手乱放,描述同一段运动就要好几个参数——「6 压到 4」的第一笔节省正来自这里。
一句话防混:本教程与原书用标准 DH(zi 沿关节 i+1);Craig《机器人学导论》用改进 DH(zi 沿关节 i)。两套各自自洽,混用必错(勘误 E2.4)。
DH 建系四规则(原书 §2.8.2,录播 0:54:05–0:58:00)
约定:轴 i 指关节 i 的轴线。操作永远从「定轴」开始——先把所有轴线画成贯穿直线,看清它们两两之间的关系(相交?平行?还是异面?),再逐系落位。给系 i 落位时依次回答三问(z 放哪、原点放哪、x 指哪),y 自动补齐:
- zi 放哪:沿轴 i+1(看守模型:系 i−1 才是看守关节 i 的那个系);
- 原点 oi 放哪:取 zi−1 与 zi 的公垂线和 zi 的交点(垂足 oi′ 则是公垂线与 zi−1 的交点);
- xi 指哪:沿公垂线,由关节 i 指向关节 i+1;
- yi:右手系补齐(不引入参数)。
两类特殊轴对的处理(建系时最常遇到,动作先背下来):
- 平行轴对(下文例解④的轴2、轴3):公垂线有无穷多条,取穿过前一原点 oi−1 的那一条 ⇒di=0;
- 相交轴对(例解③的轴1、轴2):公垂线退化为交点本身 ⇒ai=0,xi 取同时垂直于两轴的任一方向(选定后 αi 的正负也就定了)。
规则是抽象的,必须在一台真实结构上走一遍才能落地。下面选一台三维的三转动拟人臂(肩回转 + 肩俯仰 + 肘俯仰)做例解——平面两连杆太退化(αi、di 全为 0,公垂线从头到尾没真正「干过活」),而拟人臂同时含有「相交轴对」与「平行轴对」,四条规则全部用得上。
例解 · 在拟人臂上四步建系(本编补充,逐格对照下图)
结构:关节1轴线竖直(过肩点),关节2轴线水平(过肩点),关节3轴线与关节2平行(过肘点)。记住这三句话,参数表其实已经定了一半。
① 定轴线(格一)。 先不建任何坐标系,把三根轴线画成贯穿直线,然后问:它们两两什么关系?——轴1 与轴2 相交于肩点;轴2 与轴3 平行。后面每个参数都从这两句话里读出来。
② 放系 0(格二)。 z0 沿关节1轴线(竖直;沿轴的正方向任选,定下不再变);o0 本可取在轴线上任一点,按「能零则零」取在轴1与轴2的交点(肩心),垂足 o1′=o0,下一行 d1 直接为 0;x0 水平任选(习惯取零位时上臂的指向)。系 0 从此固连在基座上。
③ 放系 1(格三)。 z1 沿关节2轴线。轴1、轴2 相交 ⇒a1=0;x1 必须同时垂直于两条轴 ⇒ 沿水平(臂平面内垂直于两轴的那个方向),指向零位上臂。判 α1 的动作:把 x1 当螺丝柄,看从 z0 拧向 z1 是不是右手旋进方向——是,转角 +π/2,故 α1=π/2(符号错误大多栽在这里,务必动手比划)。y1 右手补齐后恰好竖直向上、与 z0 同向——这正是「两轴扭了 90°」的直接可视化。
④ 放系 2、3(格四)。 z2 沿关节3轴线,与 z1 平行 ⇒α2=0;这对平行轴的公垂线就是上臂本身 ⇒a2= 上臂长,x2 沿上臂指向肘部,o2 取垂足(肘点,穿过 o1 的那条公垂线)⇒d2=0。系 3 同理:z3 取与 z2 平行(末端系约定),公垂线 = 前臂 ⇒a3= 前臂长,d3=0。剩下的 ϑ1,ϑ2,ϑ3 就是三个关节变量——分别是 x0 到 x1 绕 z0、x1 到 x2 绕 z1、x2 到 x3 绕 z2 的转角。
填表时逐格「问一句」,每个数都有来历:
| 连杆 i |
ai |
αi |
di |
ϑi |
填这格时问自己 |
| 1 |
0 |
π/2 |
0 |
ϑ1 |
轴1、轴2 相交 ⇒a1=0;从 z0 绕 x1 转到 z1 是 +π/2 |
| 2 |
a2 |
0 |
0 |
ϑ2 |
轴2、轴3 平行 ⇒α2=0;公垂线 = 上臂 ⇒a2 |
| 3 |
a3 |
0 |
0 |
ϑ3 |
z2∥z3⇒α3=0;公垂线 = 前臂 ⇒a3 |
这张表与 2.9.4 逐字相同——2.9 的九张参数表,都是这条四步流水线在不同骨架上的重复。
拟人臂的 DH 建系全过程(本教程绘,等轴测投影)。格一先画轴线:轴线的两两关系(相交 / 平行)已决定参数表的全部取值;格二放系 0(z0 = 关节1轴,原点取在两轴交点,d1=0);格三放系 1(相交轴对:a1=0,从 z0 绕 x1 转到 z1 为 +90∘,故 α1=π/2;注意 y1 恰与 z0 同向);格四放系 2、3(平行轴对:公垂线就是连杆本身,a2、a3 即杆长)。拖动下方实验的角度滑杆,可以看到这套坐标系如何随关节运动。
动手实验 · 把四个坐标系亲手拖出来
上面四格是快照,这个实验让它动起来。拖动 ϑ1,ϑ2,ϑ3 与视角方位角,重点观察三件事:其一,关节1转动时整条臂平面带着系 1、2、3 一起绕 z0 转,而系 0 纹丝不动——每个关节只「指挥」自己下游的坐标系;其二,无论姿态怎么变,α1=π/2、a2 等几何量始终不变——「3 常 1 变」一眼可见;其三,转到侧面视角时,z1、z2 两根平行轴与公垂线(上臂)的立体关系一目了然——这正是静态图最难画清的部分。
不唯一的五种情形(原书;录播 0:58:06–0:59:21 老师逐条点名)
① 系 0:o0、x0 均可任选(前面没有公垂线),工程上尽量与基坐标系重合;② 系 n:后面没有关节 n+1,zn 不唯一,典型做法是取与 zn−1 同向;③ 相邻两轴平行:公垂线不唯一(例解④已给出标准动作:取穿过 oi−1 的那条);④ 相邻两轴相交:无公垂线,xi 方向任意(例解③);⑤ 关节 i 为移动型:zi−1 方向任意。不唯一 ≠ 随便:所有自由度都按「能零则零」(总原则:让参数尽量为零)去用,同一结构的不同合法选系给出的 Tn0 完全相同。
同一套流程再拿平面两连杆做一遍快检(见下图):三个 z 轴全部指出纸面、互相平行。正是「平行」这一个几何事实,一次性解释了参数表里成片的 0 与仅有的两个变量——建议先遮住右表,照着 例解 的四步自己走一遍,再对答案。
DH 建系的第一个完整实例(本教程绘):俯视下三个 z 轴全部指出纸面且互相平行,于是 αi=0;原点取在同一平面,di=0;xi 沿连杆方向,ai 恰为杆长;相邻 x 轴的夹角就是仅有的两个变量 ϑ1,ϑ2。把左图的几何逐条「翻译」成右表——这就是 DH 法的全部动作;「让 0 尽量多」的选系原则见下文(总原则:让参数尽量为零)。
总原则:让参数尽量为零(录播 0:59:31–1:00:04,课堂提炼)
凡是可自由选取之处,都「选择让参数尽量为零的方案」。道理很简单:参数本身是常数,选得好就能让一大批参数为 0,代入 A 矩阵时「都是零的乘来乘去」,计算量骤减。2.9 节每个算例的参数表里成片的 0,正是这条原则的兑现。
上面两例的轴线两两「相交 / 平行」,是教学里的乖巧情形;一般情形下相邻两轴异面(既不相交也不平行,工业臂的肩部偏置很常见),此时公垂线唯一。四个参数在这种一般位置下的几何定义如下图——例解里的每一步,都是这张图在特殊轴对上的退化版本:
DH 建系四规则不是并列的口诀(本教程绘):每条规则各管一个参数——z 轴规则管变量(ϑi 或 di),公垂线规则管常数(ai),两轴的方向关系管 αi,右手系补 yi 不引入参数。左图中 oi 取在公垂线与 zi 的交点、xi 沿公垂线——这两条决定了 Aii−1 第 4 列的 (aicϑi, aisϑi, di)。
定义 2.8.3 · DH 参数
建立连杆坐标系后,系 i 相对系 i−1 的位姿就由 4 个参数完全确定:
| 参数 |
名称(课堂助记) |
几何含义 |
属性 |
| ai |
杆件长度 |
oi′ 与 oi 间距离(公垂线长度,沿 xi) |
恒为常数 |
| di |
关节距离 |
oi′ 沿 zi−1 的坐标 |
移动关节时为变量 |
| αi |
杆件扭角 |
轴 zi−1 与 zi 的夹角(绕 xi 逆时针为正) |
恒为常数 |
| ϑi |
关节转角 |
轴 xi−1 与 xi 的夹角(绕 zi−1 逆时针为正) |
转动关节时为变量 |
3 常 1 变:ai,αi 永远是常数(由杆的几何决定);di,ϑi 中恰有一个是关节变量,统一记作 qi(录播 1:04:31–1:05:04:「后面用的最多的是叫 Q……转动关节就是 ϑ,移动关节就是 d」)。换言之,相邻两坐标系之间只需要一个量就能描述。
规则 → 参数:每条建系规则「为谁服务」
四条规则不是并列的口诀,而是每条各管一个参数——这既是「建系为什么这样建」的答案,也是填表时自查的依据:
| 规则 |
服务的参数 |
为什么恰好是它 |
| zi−1 沿关节 i 的轴 |
ϑi、di(变量) |
关节 i 的运动物理上就是「绕 / 沿自己的轴」;zi−1 与该轴重合后,这场运动在 Aii−1 里恰好表现为绕 zi−1 的转角 ϑi(旋转块)或沿 zi−1 的位移 di(第 4 列)——这就是「转动 ϑ 当变量、移动 d 当变量」的全部出处 |
| 原点 oi 取在公垂线上、xi 沿公垂线 |
ai(常数) |
两根 z 轴的相对位置被这段公垂线一锤定音:ai = 公垂线长,沿 xi 度量——第 4 列的 (aicϑi, aisϑi) 由此而来 |
| 同一对 z 轴的方向关系 |
αi(常数) |
两轴的方向差只剩绕公垂线 xi 的一个转角:αi = 从 zi−1 绕 xi 转到 zi——旋转块里「绕 x 转 α」那一块由此而来 |
| yi 右手系补齐 |
无 |
只保证 R∈SO(3) 且唯一,不引入参数 |
一句话总结:z 轴规则管变量(ϑ,d),公垂线规则管常数(a,α)。2.9 各参数表里成片的 0 与 ±π/2,全部来自这两条规则对齐之后的「自然归零 / 自然成直角」——不是巧合,而是设计。
Aii−1:从建系几何直接读出两步分解(原书式 2.52;录播 1:05:42–1:09:01)
建系规则不仅告诉我们坐标系放在哪,还把「从系 i−1 走到系 i」的路线规定成了四段各含一个参数的路程。站在 oi−1、以系 i−1 的姿态起步,依次做四个动作(每个都绕 / 沿当前轴):
- 绕 zi−1 转 ϑi——把 x 轴从 xi−1 方向转到公垂线方向 xi(ϑi 的定义);
- 沿 zi−1 移 di——原点落到垂足 oi′(di 的定义;与动作 1 都在 zi−1 上、互不干扰,可并成一步);
- 沿新 x(已对准 xi)移 ai——原点从 oi′ 走到新轴线上的 oi(ai 的定义);
- 绕 xi 转 αi——把 z 轴从 zi−1 方向拧到 zi 方向(αi 的定义)。
四段走完,恰好到达系 i;不多不少,每段恰好消费一个参数。按「当前轴右乘」(原理 2.3.A)把这段路线记成矩阵,就得到原书的两步分解:
- 动作 1+2 合并为绕 zi−1 转 ϑi、沿 zi−1 移 di → 中间系 i′(原点 oi′,z 轴仍沿 zi−1,x 轴已对准 xi):
Ai′i−1=cϑisϑi00−sϑicϑi00001000di1
- 动作 3+4 合并为沿 xi′ 移 ai、绕 xi′ 转 αi → 系 i:
Aii′=10000cαisαi00−sαicαi0ai001
右乘合成(先发生的在左边——原理 2.3.A):
Aii−1(qi)=Ai′i−1Aii′=cϑisϑi00−sϑicαicϑicαisαi0sϑisαi−cϑisαicαi0aicϑiaisϑidi1
验算 · 逐列读回几何 + 两个退化自检(本编补充)
第 4 列(位置):追踪原点的齐次坐标 [0,0,0,1]T 在乘积下的像(矩阵作用在列向量上时从最右因子往左读,与上面建系时序互为镜像,正是 原理 2.3.A/原理 2.3.B 的左 / 右乘对偶)。绕 x 转 αi 不动原点 → 沿 x 移 ai 得 [ai,0,0,1]T → 沿 z 移 di 得 [ai,0,di,1]T → 绕 z 转 ϑi 只旋转前两个分量:
p=[aicϑi aisϑi di]T
di 躺在转轴上原样保留;ai 的方向被 ϑi 旋转——第 4 列三个元素各自的来历,一目了然。
第 3 行(姿态):Ai′i−1 的旋转块是 xy 平面内的事,第 3 行为 [0,0,1],作用在 Aii′ 上不动它的第 3 行;而 Aii′ 的第 3 行是 [0,sαi,cαi]——故乘积第 3 行就是 [0 sαi cαi]。其余两行由平面旋转 Rz(ϑi) 作用到 Rx(αi) 的前两行得出,逐项乘开即得完整矩阵。
自检一(退化为纯转动关节):令 ai=αi=di=0(两轴相交且共原点,如例解③),Aii−1 只剩 Rotz(ϑi)——纯粹的「绕关节轴转 ϑi」。
自检二(退化为纯移动关节):令 ϑi=αi=ai=0,Aii−1=Transz(di)(变量换成 di 沿 zi−1 伸缩,如球形臂的第三关节)。
两个退化情形都对得上物理直觉,说明四个参数各就各位、没有放错地方。□
□
这个矩阵值得默写:第 4 列的 aicϑi, aisϑi, di 就是三个参数的「肉身」(上一框已逐列验算),旋转块则是「绕 z 转 ϑ ⊕ 绕 x 转 α」的复合。整条链的正运动学,无非是把各 Aii−1 依次连乘(原理 2.8.A)。
DH 十步操作流程(原书)
- 给关节轴编号,定出 z0,…,zn−1 的方向;
- 选取系 0(o0 在轴 z0 上;可行时与基坐标系重合);
- 对 i=1,…,n−1 逐个处理:把 oi 放到 zi 与公垂线的交点(平行轴 + 转动关节取 di=0;移动关节取机械参考点);
- 沿公垂线取 xi(方向由关节 i 指向关节 i+1);
- 右手系补 yi;
- 选取系 n(转动关节取 zn∥zn−1;移动关节 zn 任意;xn 按步骤 4);
- 列出 4n 个参数的参数表;
- 逐个算出 Aii−1(qi);
- 连乘得到 Tn0(q);
- 串接常值变换 Tb0,Ten,得到 Teb(q)。
录播 1:11:13 的口诀:「编号、建系(能零则零)、列参数表、代入、连乘」——参数表写对,剩下的就是机械代入。
计算方面(原书 §2.8 末)
正运动学的主要计算开销,来自 Aii−1 连乘中超越函数(sin / cos)的求值;做因式化处理可以减少乘加次数(flops)。另外,末端坐标系的三个单位向量不必都从矩阵里读——第三个用叉积导出即可(ne=se×ae,见 定义 2.8.2)。
动手实验 · 把 DH 表连乘成一条手臂
平面 3R 是 DH 法的最小实例:三个 z 轴都指出纸面且互相平行(αi=0),原点共面(di=0),xi 沿连杆(ai=li),于是 DH 表里只剩下三个变量 ϑ1,ϑ2,ϑ3。拖动它们,观察末端轨迹与闭式 x=l1c1+l2c12+l3c123 如何同步变化——这就是 总原则:让参数尽量为零「让 0 尽量多」带来的收益。
本节定位
录播 0:41:58 老师明确讲过「闭链我们不讲」,所以这一节属于教材补充(原书 §2.8.3),考试不作要求;但它是 2.9.2 平行四边形臂与并联机构的建模基础,故存此备查。
上面这套 DH 法利用的是开链的递归特性。面对含闭运动链的机械手,思路是把它化归为开链:
闭链的 DH 处理(原书 §2.8.3)
设闭链有 n+1 个连杆、关节数 l>n(于是闭环数 = l−n)。
- 虚拟断开:在某个非驱动关节处把闭环「剪开」(设为连接连杆 j 与 k 的关节 j+1),得到一个树状开链;连杆 0⋯i 位于两分支之前(公共段),连杆 j+1⋯n 则被排除;
- 按 DH 建系:对树上各分支分别建连杆坐标系(开链流程照用);
- 写约束:断点两侧坐标系 j 与 k 必须满足原闭环的几何一致条件。当关节 j+1 为转动型时约束为
zji(q′)=zki(q′′),Rij(q′)(pji(q′)−pki(q′′))=[00djk]T
(Rij=(Rji)T,把系 i 中表达的向量投到系 j;原书式 2.55–2.57)——它说的就是「两 z 轴共线 + 相对位置只剩沿轴向的固定偏移」。若关节 j+1 为移动型,则 djk 变为变量,位置约束只保留前两个分量,并追加方向约束 xjiTxki=cosϑjk(原书式 2.58–2.60);两种情形下都恰有 6 个约束方程;
4. 求独立变量:由这 6 个方程解出数目较少的独立关节变量——它们就是驱动关节的自然候选,链中其余关节(含断开关节)通常不作为驱动关节;
5. 连乘出正运动学:Teb(q)=A10A21⋯Ann−1,链路闭合后,变换序列通常从坐标系 j 重新开始(原书式 2.61)。
何时能解出闭式约束
除结构简单的情形(如平面机构)外,约束方程不保证有闭合解;不过若机械手具有特殊几何构形,部分方程会变得不独立、独立方程数少于 6,求解反而更容易(原书)。
默写点 · 合上书再写(主动回忆)
不要翻正文与速查卡,先独立写出下面几条,再展开核对。写不出来,就说明这一节还没真正「拿走」。
- 默写 Aii−1(qi) 的完整矩阵,并指出第 4 列各元素对应哪个参数。
- 看守模型怎么说?——「关节 i 的轴线」是哪根 z?杆 i 固连哪个系?
- DH 四规则各是什么?每条规则「为哪个参数服务」?平行轴对、相交轴对分别怎么处理?
- 四个参数中哪两个永远是常数?变量怎么定?
核对
Aii−1 见公式速查卡 B1。第 4 列 = (aicϑi, aisϑi, di, 1)T——三个参数的「肉身」。
系 i−1 看守关节 i:关节 i 的轴线就是 zi−1;杆 i 固连系 i(原点在关节 i+1 的轴上)。
zi 沿关节 i+1 的轴(服务变量 ϑi,di);原点取公垂线交点、xi 沿公垂线(服务 ai);两 z 轴的方向关系给 αi;yi 右手系补齐(不引入参数)。平行轴对取穿过 oi−1 的公垂线(di=0);相交轴对公垂线退化(ai=0)。
ai(杆件长度)与 αi(杆件扭角)恒为常数;di 与 ϑi 中恰有一个是变量,由关节类型决定(转动 qi=ϑi、移动 qi=di)——这就是「3 常 1 变」。
- 一条流水线:编号 → 建系(四规则 + 能零则零)→ 填 4n 参数表(3 常 1 变)→ 逐个写 Aii−1 → 连乘 Tn0 → 串常值变换。相邻坐标系的 6 个自由度,被杆约束压缩到 4 个参数。
- 一个验证器:填完表先扫一遍——转动关节那一行的 di 应当是常数,移动关节那一行的 ϑi 应当是常数;谁在变量位置上摇摆,谁的关节类型就读错了。
常见错误清单 · 自查四条
- 把 zi 配错了关节——记住 zi−1 沿关节 i 的轴(看守模型见 先把「系到底挂在哪」说透:看守模型;「坐标系 i 挂在关节 i+1 上」最容易和「改进 DH」记法混淆,见勘误 E2.4);
- 丢掉 αi 的符号——绕 xi 逆时针为正,2.9 节球形臂的 −π/2 就是在这里翻的车(录播 1:19:38 老师:「正负号容易错」);
- 移动关节却让 ϑi 当变量——变量只能有一个,判定关节类型的唯一依据是关节本身,而不是杆的形状;
- 把 Ten,Tb0 忘在门外——Tn0 给出的只是「杆 n 坐标系」的位姿,末端执行器坐标系的常值串接(原书式 2.51)不可省。