简介:面向机器人学专业学生、工程师及自学者,《现代机器人学:力学、规划与控制》课后习题解答以单份PDF整理成册,聚焦教材第2至第13章练习的参考推导与结论,可用于课程复习、概念核对和自学查漏。压缩包内共1个PDF文件,约13.97MB,内容按章节顺序编排,便于从运动学、动力学到规划与控制逐章对照。正文对自由度、约束与机构分析等核心题型给出较完整的推演,例如多点定位系统的自由度求和与空间拓扑、上肢七自由度构成、固定掌心位姿后肘尖可移动圆弧等,也涉及闭链关节数目讨论。读者可借助这些解答理解刚体约束、关节运动相互影响及机构运动特性,并据此检验自己的推导过程。已有1247人学习,适合希望借习题巩固机器人机构、运动学及控制基础,并需要清晰解答作参考的读者。
1. 机器人学知识地图:机械、规划、控制三块拼成什么
学现代机器人学有一个反直觉的地方:真正拉开差距的不是后面的控制算法,而是第二章的自由度计算。很多人看到 n(n+1)/2 这种公式觉得太简单直接跳过,结果到并联机构、闭链分析、抓取规划的时候,连 N 和 J 都数不对。整本教材的骨架可以拆成三块:构型空间和刚体运动回答“机器人能摆成什么样”,正逆运动学和动力学回答“关节怎么动”,轨迹规划和控制回答“怎么动到目标”。课后习题答案的价值不在于给你一个数字对错,而是把每道题钉在这张地图的对应节点上,让你看到公式从哪来、用在哪、什么时候会失效。
2. 构型空间与自由度:整本书的第一道分水岭
2.1 构型空间是什么:每个位姿都是一个点
构型(configuration)是描述机器人所有可动部件位置的一组独立数。把这组数看成一个高维空间里的坐标,这个空间就是构型空间(C-space)。机器人学的第一课,就是把“机器人能摆成什么样”这个物理问题,翻译成“C-space 里哪些点可达”的几何问题。这个翻译一旦完成,后面所有分析——运动学、规划、控制——都有了统一的语言。
梳理下来会发现,C-space 的维数就是自由度,而它的拓扑形状决定了能不能直接用欧氏距离做规划。一个 6R 机械臂的 C-space 是 T⁶(六个环面的乘积),末端位姿是 SE(3) 里的一个点;一个轮式移动底座是 R² × T²,加上机械臂后整个系统的 C-space 就是 R² × T⁸。前者是纯环面,后者是欧氏空间和环面的混合——这个差别直接决定了路径规划算法能不能用直线插值。
最容易忽略的是:C-space 不是物理空间,它只是一个数学抽象。同一个物理位姿在 C-space 里可能有多个表示(比如关节角加 2π 不变),这就是拓扑带来的麻烦。教材第二章 Exercise 2.1 讨论的“在空间中放置 k 个点”本质上就是在反复练这个翻译过程:第一个点有 n 个自由度,第二个点受一个约束剩 n−1 个,第三个受两个约束剩 n−2 个,依此类推,总数是 n + (n−1) + … + 1 = n(n+1)/2。
这个求和里,n 个是第一个点的线性自由度,剩下 n(n−1)/2 个是旋转自由度。拓扑结构是 Rⁿ × Sⁿ⁻¹ × Sⁿ⁻² × … × S¹。每一层球面来自“下一个点必须与已放置的点保持距离”这个约束。把这条链子理清楚,后面算任何机构的自由度都不会乱。
2.2 自由度怎么数:n(n+1)/2 背后的约束逻辑
自由度的严格定义是:描述系统构型所需的独立参数个数。在 C-space 里,它就是维数。但教材第二章反复练的不是定义,而是具体计数的方法——给定一个机构,数出 N(连杆数,含机架)、J(关节数)、Σfi(所有关节自由度之和),然后套 Grübler 公式。
Exercise 2.2 提供了一个好例子。一个上肢机器人:肩部看作球关节(4 自由度)、肘部 1 自由度、腕部 2 自由度,加上前臂绕自身轴线的旋转 1 自由度,总共 7 自由度。当手掌的位置和姿态被固定时,相当于加了 6 个约束(刚体在空间的 6 个自由度),只剩 1 个自由度——肘尖在圆弧上滑动。这说明 7 − 6 = 1,逻辑上自洽。
这里容易翻车的地方是:约束不是关节。固定手掌是外部约束,不是机构本身的关节,所以它不出现在 N、J、Σfi 里,而是直接扣自由度。Exercise 2.4 的双臂握方向盘是同一个逻辑:每只手臂在方向盘固定时有 n−6 自由度,方向盘本身可转又加 1 自由度,总共 2n−11。如果数关节的时候把“手和方向盘的接触”当成一个关节,结果就完全错了。
2.3 拓扑结构:Rⁿ × T^k 的混合空间
C-space 的拓扑形状不是随便写的。Exercise 2.6 的轮式移动机械臂是一个典型:底座是滚动轮式平台,C-space 是 R² × T²;6R 机械臂是 T⁶;整个系统是 R² × T² × T⁶ = R² × T⁸。这里 R² 来自底座在平面上的位置,T² 来自底座的朝向和轮子转角,T⁶ 来自六个关节角。
拓扑的意义在于:它决定了 C-space 是不是单连通的,以及能不能用全局的欧氏坐标做规划。纯环面 T⁶ 上不能直接用减法算角距离(0° 和 360° 是同一个点),混合空间 R² × T⁸ 上欧氏部分可以用直线,环面部分必须用模运算。这个细节在轨迹规划章节会反复出现。
另一个容易漏的是:闭链机构的 C-space 不是简单的乘积空间。Exercise 2.15 的五个正方形组成的闭链,空间版本 Grübler 公式给出 0 自由度,但机构实际上可以动。原因是 Grübler 公式假设所有约束独立,而闭链里存在冗余约束。C-space 在这里是一条低维曲线,嵌在 T⁶ 里,不是整个环面。只看公式不验证物理可行性,是这个方向最经典的坑。
3. Grübler 公式:平面与空间两套算法的逐项对照
3.1 平面公式 3(N−1−J) + Σfi 的逐项拆解
平面机构的 Grübler 公式是:
dof = 3(N − 1 − J) + Σfi其中 N 是连杆数(包括机架),J 是关节数,Σfi 是所有关节自由度之和。3 来自平面刚体的 3 个自由度(两个平移加一个旋转),N − 1 是活动连杆数(去掉机架),N − 1 − J 是独立闭环数。
以 Exercise 2.9(a) 为例:N = 7 个连杆 + 1 个机架 = 8;J = 7 个 R 关节 + 1 个 P 关节 + 2 个 C 关节 = 10;Σfi = 7×1 + 1×1 + 2×2 = 12。代入:
dof = 3(8 − 1 − 10) + 12 = 3(−3) + 12 = 3这里 C 关节是圆柱关节,自由度为 2(一个转动加一个移动)。如果把 C 关节拆成 R + P 两个独立关节来数,N 和 J 都会变,结果必须一致——Exercise 2.9(b) 就是验证这件事:N = 13 + 1 = 14,J = 16 + 2 = 18,Σfi = 18,代入 3(14 − 1 − 18) + 18 = 3。
平面公式的适用边界很明确:所有关节轴线必须平行,或者所有运动都限制在同一个平面里。一旦机构有空间运动,比如轴线不平行、有球面运动,平面公式直接失效。
3.2 空间公式 6(N−1−J) + Σfi 的套用流程
空间机构的 Grübler 公式是:
dof = 6(N − 1 − J) + Σfi6 来自空间刚体的 6 个自由度。其余变量含义不变。以 Exercise 2.5 为例:N = 6 + 1 = 7;J = 5 个 R 关节 + 2 个 S 关节 = 7;Σfi = 5×1 + 2×3 = 11。代入:
dof = 6(7 − 1 − 7) + 11 = 6(−1) + 11 = 5注意 S 关节(球关节)的自由度是 3,U 关节(万向节)是 2,C 关节(圆柱关节)是 2,R 和 P 是 1。这套数值必须记牢,否则 Σfi 一定错。
空间公式的坑在于“关节自由度”的认定。有些关节在特定构型下会退化,比如 U 关节在某些角度下等效于 R 关节。Grübler 公式给的是全局自由度,不是瞬时自由度。如果题目问的是某个特定构型下的瞬时自由度,需要额外考虑雅可比矩阵的秩。
3.3 关节自由度速查表
下表是教材第二章反复用到的关节自由度对照,数错了 Σfi 基本就是从这里开始的:
| 关节类型 | 符号 | 自由度 fi | 运动描述 |
|---|---|---|---|
| 转动关节 | R | 1 | 绕单轴旋转 |
| 移动关节 | P | 1 | 沿单轴平移 |
| 圆柱关节 | C | 2 | 绕轴旋转 + 沿轴平移 |
| 万向节 | U | 2 | 绕两个正交轴旋转 |
| 球关节 | S | 3 | 绕三个正交轴旋转 |
注意:平面机构中不会出现 S 关节和 U 关节,因为它们的运动不在同一平面内。如果题目里出现了 S 关节却用平面公式,结果一定错。
Exercise 2.9(d) 是一个好例子:N = 5 + 1 = 6,J = 6 个 R + 1 个 P = 7,Σfi = 7,平面公式给出 3(6 − 1 − 7) + 7 = 1。如果误用空间公式,6(6 − 1 − 7) + 7 = −5,显然荒谬。判断用哪套公式的第一步,就是看所有关节的轴线是否共面。
3.4 公式背后的假设:什么时候不能直接用
Grübler 公式有一个隐含假设:所有约束都是独立的。但闭链机构里经常出现冗余约束——某些约束被其他约束隐含了,实际独立的约束比数出来的少。Exercise 2.15 是教材里最直接的例子:五个正方形通过转动关节连接,空间公式给出 dof = 6(6 − 1 − 6) + 6 = 0,但机构实际可以动。原因是所有正方形边长相等这个几何条件引入了额外约束,Grübler 公式分辨不出来。
类似的还有 Exercise 2.16:三个连杆加机架,四个 R 关节,所有连杆被约束在球面上运动。如果用空间公式,dof = 6(4 − 1 − 4) + 4 = −2,结论是“不能动”;但用平面(二维球面)公式,dof = 3(4 − 1 − 4) + 4 = 1,正确。这说明公式的维数选择必须匹配机构实际运动的子空间,不能看到“空间机构”就无脑套 6。
梳理下来会发现,Grübler 公式的正确用法是三步:先判断运动子空间(平面、球面、空间),再数 N、J、Σfi,最后用物理直觉验证结果。如果算出来是负数或者零但机构明显能动,就是公式失效了,需要换维数或者用其他方法(比如分析闭环约束的秩)。
4. 并联机构与闭链:公式最容易失效的重灾区
4.1 并联机构的自由度分析
并联机构的自由度计算是第二章的重点题型。Exercise 2.7 给出了一个通用框架:n 个开链手臂抓取同一个物体,每个手臂的自由度为 α,整个系统的自由度是 6 + (α − 6)n。当 α = 7(7 自由度手臂)时,dof = 6 + n;当 α = 6 时,dof = 6,与手臂数量无关。Exercise 2.8 进一步推广:无论多少条腿,只要每条腿是 6 自由度开链,整个并联机构就是 6 自由度。
这个结果的直觉是:每条 6 自由度腿给物体贡献 6 个约束,但同时物体本身有 6 个自由度,所以净效果是每条腿“锁死”物体的 6 个自由度,n 条腿多出来的约束全是冗余的。如果腿的自由度不是 6,冗余约束的数量就变了,总自由度也跟着变。
4.2 闭链约束与冗余自由度
闭链机构的自由度计算比开链复杂,因为闭环会产生冗余约束。Exercise 2.3 的前臂模型是一个典型:肩部看作球关节(3 自由度),前臂由桡骨和尺骨组成闭链,连接肱骨和腕骨。如果前臂闭链有 4 个关节,整个手臂是 7 自由度;如果有 6 个关节,整个手臂还是 7 自由度,但每个关节的平均自由度变了——4 关节时需要总共 10 个自由度(平均 2.5),6 关节时需要 25 个(平均超过 4)。这说明闭链的关节数和自由度之间不是一一对应,必须结合解剖约束来讨论。
Exercise 2.12(b) 的另一个例子:N = 8 + 1 = 9,J = 4 个 R + 5 个 P = 9,Σfi = 9,空间公式给出 6(9 − 1 − 9) + 9 = 3。这里 3 个自由度来自三个独立的闭环,每个闭环贡献一个约束。如果关节数或连杆数数错一个,结果就完全变了。
4.3 Grübler 公式的三个失效场景
第一个场景是冗余约束:闭链里有几何约束被重复计算,导致公式给出的自由度偏低。Exercise 2.15 的正方形机构是标准案例——空间公式给 0,实际是 1。
第二个场景是维数选错:机构实际运动限制在低维子空间(球面、平面),但用了高维公式。Exercise 2.16 的球面四杆机构,空间公式给 −2,二维公式给 1。判断依据是所有关节轴线的几何关系,不是机构名字里有没有“空间”。
第三个场景是关节退化:某些关节在特定构型下失去自由度,但 Grübler 公式按全局自由度算。比如 U 关节在两条轴线共线时等效于 R 关节,瞬时自由度从 2 降到 1。Exercise 2.14(b) 提到:三个 P 关节锁死时,按公式机器人应该变成结构,但实际上还能动——这就是局部构型下的约束退化。
4.4 闭链分析的最佳实践
做闭链分析时,先画拓扑图,标出每个连杆和关节,再数 N 和 J。数完之后用两种方式验证:一是换一种关节拆分方式重新数(比如把 C 关节拆成 R + P),结果应该一致;二是用物理直觉判断结果是否合理——自由度是负的说明约束过多,是零但机构能动说明有冗余约束,是正数但比预期大说明漏了约束。
提示:Exercise 2.17 的手术工具机构是综合题。工具在基座孔里自由移动时,相当于没有关节约束,dof = 4;工具必须穿过固定点时,相当于加了一个 4 自由度的 SP 关节,dof = 2;所有转动轴线交于一点时,运动限制在球面上,必须用二维公式。同一道题里三种情况用了三种不同的建模方式,这是闭链分析最完整的练习。
5. 易漏点与易错点:自由度计算里五个最常见的坑
5.1 第一个坑:平面/空间/球面公式选错
易漏点:看到“空间机构”就直接套 6(N−1−J) + Σfi,不检查所有关节轴线是否真的在三维空间里独立。
为什么漏:教材把平面公式和空间公式放在一起讲,题目描述里不会明确写“用平面公式”。Exercise 2.16 的球面机构就是一个典型——名字看起来像空间机构,但所有连杆被约束在球面上,必须用二维公式。
怎么补:拿到题先画关节轴线。如果所有轴线平行或共面,用平面公式;如果所有轴线交于一点(球面运动),用二维球面公式;只有轴线在三维空间里独立分布时,才用空间公式。不确定的时候两种都算一遍,看哪个结果符合物理直觉。
5.2 第二个坑:把外部约束当成关节
易漏点:手按住物体、工具穿过孔、轮子在地面上滚动——这些是外部约束,不是机构内部的关节,不出现在 N、J、Σfi 里。
为什么漏:题目描述里经常写“固定”“保持”“接触”,这些词容易被理解成关节。Exercise 2.2 的手掌固定、Exercise 2.4 的方向盘握持都是这种情况。
怎么补:把机构本身的连杆和关节单独列出来,外部约束单独列一行,直接扣自由度。公式里的 N 和 J 只算机构内部的元素。固定一个刚体相当于扣 6 个自由度(空间)或 3 个自由度(平面),不要把它折算成关节。
5.3 第三个坑:重叠关节没算进去
易漏点:多个连杆在同一轴线上的转动副,几何上看起来是一个关节,但拓扑上是多个关节。Exercise 2.10(c) 和 (d) 明确出现了“overlapping R joints”这个概念。
为什么漏:图上画的是一个点,视觉上容易数成一个关节。但每个连杆对之间都有一个独立的转动副,哪怕它们共享同一根轴线。
怎么补:数关节时按“连杆对”数,不按“图上的点”数。N 个连杆如果首尾相连成闭环,关节数至少是 N;如果多个连杆共享轴线,关节数还要加上重叠的部分。Exercise 2.10(c) 里 2 个 P 关节 + 10 个 R 关节 + 6 个重叠 R 关节 = 18 个关节,这个“+6”就是最容易漏的。
5.4 第四个坑:冗余自由度被公式吞掉
易漏点:闭链机构里存在几何冗余约束时,Grübler 公式给出的自由度偏低,甚至给出负数。
为什么漏:公式假设所有约束独立,但实际机构里经常有“这个约束被另一个约束隐含”的情况。Exercise 2.15 的五个正方形就是标准案例。
怎么补:算完之后一定做物理验证。如果结果是零或负数但机构明显能运动,说明有冗余约束。处理方法有两种:一是换一种建模方式(把闭链拆成开链加约束),二是用雅可比矩阵的秩来分析独立约束数。
5.5 第五个坑:闭链关节数不唯一
易漏点:同一个闭链机构,关节数可能有一个范围,不是唯一值。Exercise 2.3 的前臂闭链可以是 4 个关节,也可以是 6 个关节,取决于解剖假设。
为什么漏:题目问的是“分析”,不是“求唯一解”。很多人默认每个机构只有一个正确答案,遇到范围就懵了。
怎么补:把所有可能的关节数都列出来,分别代入公式,说明每种假设下的结果。Exercise 2.3 的答案明确写了“如果假设最多 6 个关节……如果假设最少 4 个关节……”,这就是标准做法。闭链分析的重点是推理过程,不是最终数字。
6. 复习清单与查漏流程:把答案当镜子用
复习第二章的正确方式不是把答案抄一遍,而是拿一张白纸,自己先算,再对照答案找差异。下面是我梳理出来的查漏流程,按顺序走一遍,基本能覆盖所有高频错误。
第一步,判断运动子空间。拿到机构图,先看所有关节轴线的几何关系:共面用平面公式,共点用球面公式,独立分布用空间公式。这一步错了后面全错,所以放在最前面。
第二步,数 N、J、Σfi。N 包括机架,J 按连杆对来数,Σfi 查关节自由度表。数完之后换一种拆分方式验证:把 C 关节拆成 R + P,把 U 关节拆成两个 R,结果应该一致。
第三步,套公式算 dof。平面用 3(N−1−J) + Σfi,空间用 6(N−1−J) + Σfi。算完检查结果是否合理:负数说明约束过多或公式选错,零但机构能动说明有冗余约束。
第四步,物理验证。用直觉判断结果是否符合机构实际运动能力。如果答案和直觉矛盾,优先怀疑公式失效,而不是直觉错了。
| 检查项 |
本文还有配套的精品资源,点击获取