☰
机器人自由度计算总出错?《Modern Robotics》习题解答精讲
2026/11/4 9:44:54 网站建设 项目流程

简介:这份资源是《Modern Robotics: Mechanics, Planning, and Control》教材的课后习题解答,面向机器人专业学生、工程师及自学者,用于对照练习、巩固运动学与机构分析等核心知识。压缩包内共1个PDF文件,约13.97MB,按章节组织答案,覆盖第2章至第13章,从自由度计算、关节约束到动力学、路径规划与控制理论逐章展开。内容包含典型习题的完整推导,如Exercise 2.1以多点定位系统说明自由度求和为n(n+1)/2并讨论旋转与线性自由度的空间拓扑,Exercise 2.2则分析七自由度上肢机构在位置与姿态约束下的剩余运动。读者可借此核对解题思路、理解机构运动特性与约束条件的影响,并借助章节索引快速定位薄弱环节。目前已有1248人学习,适合作为课程配套练习与工程实践的参考材料。

1. 自由度算不对,多半是没搞清“约束”和“关节数”的关系

做机器人机构分析的人,几乎都经历过这样的场景:对着一个并联平台或者多指手,数完连杆数、关节数,套进 Grübler 公式,算出来的自由度和实际能动的方向对不上。翻教材例题觉得都懂,一换机构就翻车。这份《Modern Robotics》课后习题解答,恰好就是冲着这类“公式会背、机构不会看”的痛点来的。它覆盖第 2 章到第 13 章,从自由度计算、螺旋理论、运动学正逆解,一路到轨迹规划和控制,每道题都给出完整的推导过程,而不是只丢一个答案。适合正在啃这本书的自学者、上机器人学课程要交作业的学生,以及需要把机构自由度判断落到工程里的从业者。下面我按“怎么用这份答案 → 每类题的核心方法 → 容易踩的坑”拆开讲。

2. 自由度计算:Grübler 公式的平面与空间两套用法

2.1 先分清平面公式和空间公式,别混用

这份答案第 2 章几乎全是自由度题,而最容易出错的地方就是公式选错。平面机构和空间机构用的是两个版本的 Grübler 公式,混用会直接得到荒谬结果。答案里 Exercise 2.16 就是一个典型反例:一个球面四杆机构,用空间公式算出来 dof = -2,看起来机构根本不能动,但实际它有 1 个自由度。原因在于所有连杆都被约束在球面上运动,应该用二维版本。

两个公式的形式如下:

平面版本:dof = 3(N - 1 - J) + Σfi 空间版本:dof = 6(N - 1 - J) + Σfi

其中 N 是连杆总数(含机架),J 是关节数,fi 是第 i 个关节的自由度数。平面公式前面的系数是 3,空间是 6,这个系数来自刚体在对应空间里的自由度。判断用哪个版本的依据不是“机构看起来立不立体”,而是“所有连杆的运动是否被限制在一个低维子空间里”。球面机构、平面机构都属于后者。

答案里 Exercise 2.9 到 2.12 连续给了多组平面和空间的对照,建议按顺序做一遍,重点看每道题开头对 N、J、Σfi 的取值说明。我一般会要求自己先把这三个量单独列出来再代公式,因为绝大多数算错不是公式记错,而是 N 或 J 数漏了。

2.2 N、J、Σfi 怎么数:以 Exercise 2.5 为例

拿 Exercise 2.5 走一遍完整流程,这是答案里比较干净的一道空间机构题。题目给出 6 个连杆加 1 个机架,5 个转动副(R)加 2 个球副(S)。按答案的拆法:

N = 6(连杆)+ 1(机架)= 7 J = 5(R 关节)+ 2(S 关节)= 7 Σfi = 5×1 + 2×3 = 11 dof = 6(N - 1 - J) + Σfi = 6×(7-1-7) + 11 = 5

这里有两个参数细节值得说清楚。第一,机架必须算进 N,很多人漏掉机架导致 N 少 1,结果整体偏 6。第二,球副的自由度是 3,不是 1,答案里所有 S 关节都按 3 计,U 关节(万向节)按 2 计,C 关节(圆柱副)按 2 计。这份答案在 Exercise 2.9 里专门演示了把 R+P 组合当成一个 C 关节来简化计数,又在同一题的 (b) 问里把所有关节拆开单独数,两种数法得到同一个 dof = 3。这个对照非常有价值——它说明关节合并与否不影响结果,但合并能减少数错的概率。

我的习惯是:机构里出现 R 和 P 共轴的情况,先合并成 C 再数;出现多个关节轴线交于一点的情况,考虑是否该退到球面公式。答案 Exercise 2.17 的外科工具题就是轴线全部过一点的情形,(c) 问明确要求改用二维公式,N 和 J 的取法跟 (a)(b) 完全不同,值得单独精读。

2.3 闭链与开链混合时,把开链整体当成一个“关节”

Exercise 2.7 和 2.8 是这份答案里方法最巧的两道。题目是多个开链手臂抓取同一个物体,如果老老实实把每条手臂的每个关节都数进去,N 和 J 会非常大,极易出错。答案的处理方式是:把每条 7 自由度开链整体视为连接物体与机架的一个 7 自由度“关节”。

N = 1(物体)+ 1(机架)= 2 J = n(开链手臂条数) Σfi = n × 7 dof = 6(N - 1 - J) + Σfi = 6(2-1-n) + 7n = 6 + n

这个结果说明:n 条 7 自由度手臂协同抓取时,系统总自由度是 6 + n。Exercise 2.8 进一步推广到每条腿 α 自由度的情况,得到 dof = 6 + (α - 6)n,并指出当 α = 6 时总自由度恒为 6,与腿数无关。这个结论在并联机构设计里很实用——六自由度支链无论加多少条,都不会增加平台自由度,只会增加约束冗余。

用这个方法时要注意一个前提:开链与物体、开链与机架之间的连接必须被完整地“吸收”进那个等效关节里。答案在 Exercise 2.12(d) 里对 RFRRPR 子链做了同样处理,把每条子链等效成一个 6 自由度关节,再对整体套公式。如果你照着做却发现结果和答案对不上,先检查等效关节的自由度数是否等于子链各关节自由度之和。

3. 螺旋理论与运动学:从答案反推解题路径

3.1 第 3、4 章的题,答案本身就是推导模板

第 3 章讲刚体运动与螺旋理论,第 4 章讲正运动学,这两章的习题答案价值不在于最终数值,而在于每一步的中间量怎么来。比如用指数积(PoE)公式求正运动学时,答案会先写出每个关节的螺旋轴,再逐个构造矩阵指数,最后连乘。这个顺序不能乱,因为螺旋轴的参考位形一旦选错,后面全错。

我建议的用法是:先自己写螺旋轴,再对照答案的螺旋轴,如果这一步一致,后面的矩阵运算基本只是体力活;如果不一致,说明对关节轴在参考位形下的方向向量理解有偏差。答案里每道 PoE 题都会明确标出螺旋轴的角速度分量和线速度分量,这两个分量是分开写的,照着核对很快能定位问题。

3.2 逆运动学题:看答案怎么处理多解和奇异

第 6 章的逆运动学题是很多人卡住的地方。这份答案的处理方式是先解析求解,再讨论解的存在条件。以常见的 6R 串联臂为例,答案会先通过几何关系分离出腕部三个关节,再解前三个关节,最后指出哪些位形下会出现解的分支切换。

这里有个参数细节:答案在讨论多解时,会明确写出每个解的关节角范围,而不是只给一组数值。做工程实现时,这组范围直接决定了你选哪组解——比如避障时选肘部朝上的那组,或者选关节行程最短的那组。我一般会在代码里把逆解的所有分支都算出来,再按行程代价排序,这份答案给的范围正好可以用来做这个筛选。

# 伪代码:按行程代价从多组逆解中选一组 def select_ik_solution(solutions, q_current): best = None best_cost = float('inf') for q in solutions: cost = sum(abs(q[i] - q_current[i]) for i in range(len(q))) if cost < best_cost: best_cost = cost best = q return best

这段逻辑的关键在于q_current必须是上一周期的实际关节角,而不是指令角,否则在接近奇异位形时会来回跳变。答案里对奇异位形的讨论集中在第 6 章后半部分,建议配合第 5 章的雅可比矩阵一起看,因为奇异判断本质上就是雅可比降秩。

4. 规划与控制章节:答案里的数值怎么验算

4.1 轨迹规划题:先确认时间缩放方式

第 9、10 章的轨迹规划题,答案给出的往往是多项式系数或者时间节点上的位置、速度、加速度值。这类题最容易出的错是时间缩放约定不一致——有的题用归一化时间 s ∈ [0,1],有的直接用物理时间 t。答案在每道题开头会写明用的是哪种,但如果你跳着看很容易忽略。

验算方法很简单:把答案给的多项式系数代回端点条件,看位置、速度、加速度是否满足题目要求。如果端点对得上但中间段不对,多半是分段点的速度连续性没处理。答案在处理三次和五次多项式时,会显式列出连续性方程,照着方程逐项核对即可。

4.2 控制题:增益和稳定性条件要对着特征方程看

第 11 到 13 章涉及控制,答案里出现大量增益矩阵和稳定性判据。以计算力矩控制为例,答案会先写出误差动态方程,再给出使误差指数收敛的增益条件。这里的参数不是随便取的,答案通常会写成 Kp 和 Kd 满足某个正定条件的形式。

我的做法是把答案给的增益代回闭环特征方程,用数值方法算一遍特征根实部,确认全为负再往下走。这一步花不了几分钟,但能避免把答案里的符号条件误当成数值条件直接用。答案在 Exercise 11 系列里对 PD 增益和重力补偿项的配合讲得比较细,值得逐题过。

5. 避坑:这份答案用错方式反而会拖慢进度

5.1 现象:对着答案抄推导,考试换个数就不会

原因:这份答案的推导是完整的,完整到容易让人产生“我看懂了”的错觉。实际上自由度题和螺旋题的核心能力是“从机构图里提取 N、J、Σfi 和螺旋轴”,这个提取过程答案替你做了,你只看到了结果。

解决:每道题先自己写提取结果,再翻答案对。对不上就停在那一步,不要往下看推导。我一般会要求自己把第 2 章的题做两遍,第一遍只看题目图自己数,第二遍才看答案。

5.2 现象:平面题和空间题公式混用,dof 出现负数

原因:看到机构有立体感就用空间公式,或者反过来看到画在纸上就用平面公式。Exercise 2.16 的球面机构就是典型,用空间公式得 -2。

解决:判断依据是连杆运动所在的空间维度,不是图的画法。所有转动副轴线交于一点、或者所有连杆被约束在一个平面上,就用低维公式。答案里每道题都会在开头暗示这一点,注意看“constrained to move on the surface of”这类表述。

5.3 现象:闭链题 N 数漏机架,结果整体偏 6

原因:机架在机构图里往往画成阴影或者不标注,数连杆时被跳过。

解决:数 N 时先把机架单独记 1,再数活动连杆。答案里所有题的 N 都写成“活动连杆数 + 1(机架)”的形式,照着这个格式写就不会漏。

5.4 现象:逆运动学多解只取一组,实机运行到奇异位形附近抖动

原因:答案给的多组解没有标注适用区间,直接取第一组在部分位形下接近奇异。

解决:把答案里所有分支解都算出来,按关节行程和雅可比条件数排序选取。答案第 6 章对奇异位形的讨论要配合第 5 章雅可比一起看。

5.5 现象:控制题增益直接照抄,仿真发散

原因:答案里的增益是以符号条件给出的,比如“Kp 正定”,直接取单位阵在部分模型参数下不满足收敛条件。

解决:代回特征方程验算特征根实部,或者先用小增益跑仿真再逐步加大。答案里的符号条件要翻译成数值约束再用。

6. 把答案当校验器:一个我常用的反向验算流程

这份答案最被低估的用法,不是拿来对答案,而是拿来当校验器。具体做法是:自己先独立完成一道题的建模和推导,把中间量(N、J、Σfi、螺旋轴、雅可比、增益矩阵)全部列出来,然后只翻答案的中间量部分做比对,不直接看最终结果。中间量全对,最终结果基本不会错;中间量有偏差,就定位到具体那一步重做。

以第 2 章为例,我会建一张自己的核对表,每道题填三列:我数的 N/J/Σfi、答案的 N/J/Σfi、差异原因。跑完第 2 章全部题目后,差异原因会收敛到两三类,比如“球副按 1 计了”“机架漏了”“闭链等效关节自由度算少了”。这三类一旦固化下来,后面第 3 章之后的题基本不会再犯。

校验项我填的值答案的值差异原因
N(含机架)待填待填机架是否计入
J(关节总数)待填待填合并关节是否拆开
Σfi待填待填S/U/C 关节自由度取值
公式版本平面/空间平面/空间运动子空间维度

这张表看着笨,但跑完一遍之后,我对“什么机构该用哪个公式”的判断从靠感觉变成了靠条件。血泪经验是:第 2 章偷懒跳过的题,到第 5 章雅可比和第 6 章逆解时会以更隐蔽的方式回来找你。从那以后我每次碰新的机构图,都强制先填一遍 N、J、Σfi 再动笔,这个习惯帮我省掉了大量返工。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询