简介:本资源是《Modern Robotics: Mechanics, Planning, and Control》(现代机器人学:力学、规划与控制)经典教材的官方课后习题完整解答集,面向机器人学专业本科生、研究生及工程实践者,用于巩固运动学、动力学、路径规划与反馈控制等核心理论,解决自学中无标准答案可对照、关键推导难复现的痛点。压缩包为单个13.97MB PDF文件,内容覆盖第2至13章全部习题详解,含自由度计算(如多点定位系统DOF求和n(n+1)/2)、上肢机器人7-DOF机构分析、闭链前臂关节自由度推演、刚体约束建模等典型问题,每题均附严谨数学推导与物理含义阐释。已有1247人学习下载,解答风格与原书一致,公式规范、图示清晰、逻辑闭环,可直接用于课后自查、考前复习或机器人系统设计中的运动学建模参考。
1. 机器人学到底是什么:一个拧螺丝师傅和航天器工程师都在用的“自由度语言”
你有没有试过把家里坏掉的台灯拧开修一修?拧螺丝时,手要转——这是旋转自由度;还要往前推、往左挪、往上抬——这是三个方向的移动自由度。加起来,你的手在空间里能独立动的“方式”一共6种。这6个数,就是机器人学里最基础、也最常被念错的第一句话:“刚体在三维空间有6个自由度”。
但机器人学远不止数数。它是一套把“怎么动”翻译成数学、再把数学变成动作的语言系统。就像厨师不用背《食品化学》也能炒菜,但真想复刻米其林三星的酱汁,就得懂美拉德反应——机器人学,就是让机械臂不靠“手感”、而靠“算得准”去拧紧航天器上那颗0.8毫米的钛合金螺钉的底层逻辑。
它不教你怎么焊电路板,也不教Python语法,但它决定了:为什么这个机械臂能像人手一样灵巧翻转手术刀,而那个扫地机器人却总卡在沙发腿之间;为什么自动驾驶汽车能预判三辆车的变道轨迹,而老式工厂机械臂连换个工件都要重新示教半天。它的核心就藏在书名里那三个词里:Mechanics(机械)是骨架,Planning(规划)是大脑,Control(控制)是神经——三者缺一不可,而所有这些,都从“自由度”这个起点出发,一路推演到现实世界中每一个精准的动作。
这份《现代机器人学》课后习题答案,不是解题套路集,而是一本用200多道真实题目写成的“自由度使用说明书”。它不讲空泛理论,而是带着你亲手拆解:一个7自由度机械臂,为什么肩、肘、腕的关节类型组合必须是“球-转-球-转-球-转-球”,少一个“球”就抓不住杯子;为什么给轮式机器人加两个万向轮,自由度反而从3掉到1,让它只能原地打转;甚至为什么人体前臂的尺骨和桡骨看似两根骨头,却共同构成一个“4自由度封闭链”——这些答案,全藏在第二章到第十三章一道道推导里。搞懂它,你就拿到了打开机器人世界的第一把钥匙:不是会调参数,而是一眼看穿机构能不能动、往哪动、动得稳不稳。
2. 自由度不是数关节个数:Grübler公式才是机器人世界的“交通规则”
2.1 为什么数关节会翻车?——自由度是“能动的独立方式”,不是“有几个轴在转”
初学者最容易栽的第一个坑,就是把“自由度”当成“关节个数”。看到机械臂有7个电机,就脱口而出:“7自由度!”——结果发现,这台机器连笔都拿不稳。问题出在哪?
打个比方:你坐在一辆老式公交车里,司机踩油门,车往前走(1个自由度);打方向盘,车转弯(第2个);但如果你伸手去掰动方向盘旁边的液压助力泵连杆——它也在转,可这根连杆的转动,完全由方向盘决定,你掰它,车不会多拐一分。这根连杆的运动,就叫冗余自由度,它不增加系统整体的运动能力,只是内部“配合动作”。
机器人学里,自由度(DOF)的严格定义是:描述系统位形所需的最少独立广义坐标数。说人话:要完全确定这个机器人的姿势,你最少得告诉我几个数字?对一个漂浮在太空的刚体,答案永远是6:3个位置(x,y,z)+3个朝向(俯仰、偏航、滚转)。再多的关节,如果它们的运动彼此强关联,就无法增加这6个数的表达能力。
Exercise 2.2(a) 就是个经典案例:分析人手臂模型。肩部是球面关节(S),允许任意方向旋转——这贡献了3个自由度;肘部是单轴转动(R),1个;前臂绕自身轴旋转(R),又1个;腕部是球面关节(S),再3个……等等,3+1+1+3=8?但答案明确写着7。为什么?因为前臂旋转(pronation/supination)和腕部球面运动中的某个旋转轴,在解剖结构上存在耦合——它们不是完全独立的。教材没深挖生理细节,但答案通过“总约束数=6”反推回“总自由度=7”,正是在告诉你:别光数关节,要看它们实际能提供多少不重叠的独立运动能力。
提示:Grübler公式不是魔法,它是对“约束-自由”关系的数学快照。它假设所有约束都是理想、完整、独立的。现实中,关节间隙、弹性变形、传感器噪声,都会让理论值和实测值出现偏差——这就是为什么工程师总说“算出来是7,调出来是6.8”。
2.2 Grübler公式怎么用?——三步拆解法,把一张机构简图变成一行算式
Grübler公式是机器人学的“交通红绿灯”,它告诉你这条路(机构)理论上允许多快的车(自由度)。空间机构用:
dof = 6(N − 1 − J) + Σfᵢ
平面机构用:
dof = 3(N − 1 − J) + Σfᵢ
别被字母吓住。我们用Exercise 2.5的机构来走一遍“三步拆解法”:
第一步:数“块”(N)——找所有刚性不动的部分
图里有6个连杆(link),加上固定不动的机架(ground),所以 N = 6 + 1 = 7。
注意:这里的“块”必须是刚性且不发生相对形变的整体。一根弯曲的弹簧不能算一块;一个带内部齿轮组的减速箱,如果只关心输入输出,就把它当一块。
第二步:数“铰”(J)和“缝”(fᵢ)——找所有连接点及其允许的运动
图中标了5个R(转动)关节,每个fᵢ=1;2个S(球面)关节,每个fᵢ=3。所以 J = 5 + 2 = 7,Σfᵢ = 5×1 + 2×3 = 11。
第三步:代入、计算、验证
空间公式:dof = 6(7 − 1 − 7) + 11 = 6(−1) + 11 = 5。
答案给的就是5。完美。
现在看Exercise 2.9(c):一个含叉形关节(fork joint)的平面机构。叉形关节等效于圆柱关节(C),允许1个转动+1个平动,fᵢ=2。
N = 7(连杆)+1(机架)=8
J = 6(R) + 2(P) + 1(C) = 9
Σfᵢ = 6×1 + 2×1 + 1×2 = 10
平面公式:dof = 3(8−1−9) + 10 = 3(−2) + 10 = 4。
答案也是4。
你会发现,公式本身极简,难点全在第一步和第二步的物理识别上。一个“看起来像转动”的地方,可能是万向节(U,fᵢ=2)、球面副(S,fᵢ=3),甚至是虚约束(fᵢ=0)——这就引出了下一个关键点。
2.3 虚约束、局部自由度、复合铰链:图纸上的“幽灵关节”怎么揪出来?
工程图纸和实物之间,永远隔着一层“理想化滤镜”。Grübler公式基于理想约束,但现实机构里藏着三类“幽灵关节”,它们会让公式算出的结果和实际大相径庭:
① 虚约束(Redundant Constraint)—— 多此一举的“保险栓”
典型例子:Exercise 2.15(b)。一个平面四杆机构,所有杆长相等,形成菱形。按平面公式算:N=4+1=5, J=4, Σfᵢ=4, dof=3(5−1−4)+4=0。但实际它能动!为什么?因为四根等长杆强制了“对角线相等”这一额外几何条件,这个条件不是靠关节实现的,而是靠杆长精度“偷偷”加上的。它没增加约束,反而消除了一个本该存在的约束,让机构从“死锁”变成“1自由度”。这种靠尺寸关系隐含的约束,就是虚约束。它让Grübler公式失效,必须手动减去。
② 局部自由度(Local DOF)—— 白忙活的“空转齿轮”
比如Exercise 2.12(d)里的平行四杆机构。其中某个连杆上装了个滚子,用来减小摩擦。滚子绕自身轴心高速旋转——这确实是1个自由度,但它不参与整个机构的输出运动,只影响接触力分布。算总自由度时,必须把这个“白忙活”的自由度从Σfᵢ里扣掉,否则结果虚高。
③ 复合铰链(Compound Hinge)—— 一张图里画着多个关节,其实只算一个
Exercise 2.10(c)的滑块机构里,一个滑块同时与两根连杆用转动副连接。图纸上画了两个圆圈(两个R),但物理上,这两根连杆是共用同一个轴心安装在滑块上的。这不算2个独立关节,而是一个复合转动副,fᵢ仍为1。数J时若当成2个,结果必然错误。
注意:识别这三类“幽灵”,没有捷径,只有经验。老工程师看图第一眼,不是算数,而是找“哪里看起来太完美”(虚约束)、“哪个零件转得特别欢但不影响大局”(局部自由度)、“哪几个圆圈挤在同一个孔里”(复合铰链)。这份习题答案的价值,正在于它用20多道题,把这三种陷阱全摊开给你看——不是告诉你结论,而是展示判断过程。
3. 运动学不是画动画:正向与逆向,是机器人理解“我在哪”和“我要去哪”的两种思维
3.1 正向运动学:给定关节角度,算末端位置——机器人版的“已知边长求坐标”
想象你组装了一台机械臂,每个关节都装了编码器,能实时读出当前角度:θ₁=30°, θ₂=−45°, θ₃=15°……现在,你想知道机械臂“手”(末端执行器)此刻在空间中的精确位置(x,y,z)和朝向(roll,pitch,yaw)。这就是正向运动学(Forward Kinematics)。
它本质是坐标系的嵌套变换。以Exercise 2.6(a)的轮式移动机械臂为例:
- 轮式底盘的位姿(x,y,θ)是第一个坐标系({B});
- 机械臂基座固连在底盘上,所以它的基坐标系{0}相对于{B}是固定的;
- 第1个关节转动θ₁,就把坐标系{1}从{0}绕某轴转过去;
- 第2个关节再转θ₂,坐标系{2}又从{1}转……
最终,末端坐标系{E}相对于世界坐标系{W}的齐次变换矩阵 T_W^E,就是这一连串变换矩阵的乘积:
T_W^E = T_W^B \cdot T_B^0 \cdot T_0^1(\theta_1) \cdot T_1^2(\theta_2) \cdots T_{n-1}^n(\theta_n)每一步T_i^{i+1}(θᵢ)都是标准的DH参数矩阵(D-H parameters),由四个数定义:连杆长度aᵢ、连杆扭角αᵢ、关节偏距dᵢ、关节角θᵢ。Exercise 2.7到2.17里大量出现的“设坐标系”、“标DH参数”,就是在教你怎么把一个物理结构,翻译成这一行行可计算的矩阵。
提示:正向运动学是“确定性”的。给定唯一的一组θ,必得到唯一的T。它是机器人感知自身状态的基础——没有它,控制系统连“我现在在哪”都不知道,更别说动了。
3.2 逆向运动学:给定目标位置,求关节角度——机器人版的“已知终点倒推路线”
正向是“我动了,结果在哪?”;逆向是“我想去那里,该怎么动?”。这才是机器人真正干活的环节。比如手术机器人,医生在屏幕上点了一个肿瘤位置(x,y,z,orientation),系统必须在毫秒内算出:肩、肘、腕各转多少度,才能让手术刀尖精准抵达——这就是逆向运动学(Inverse Kinematics, IK)。
但IK比FK难得多。FK是矩阵乘法,IK是解非线性方程组。Exercise 2.2(b)就暗含了IK思想:当手掌位置和朝向固定(6个约束),肩关节中心固定(3个约束),求肘部轨迹。答案给出“一个圆弧”,这正是IK解空间的几何体现——不是唯一解,而是一族解(称为冗余解)。
IK求解有两大流派:
- 解析法(Analytic):像解三角函数方程一样,推导出θ的闭式表达式。Exercise 2.3分析前臂时,就依赖了人体解剖的对称性来简化方程。优点是快、准、无迭代;缺点是只适用于结构简单(如PUMA 560)、关节轴线满足特定几何关系(如三轴相交)的机器人。
- 数值法(Numerical):把IK当作优化问题——定义一个误差函数(如末端位姿误差的平方和),用梯度下降、雅可比伪逆(Jacobian Pseudoinverse)等算法一步步逼近最优解。Exercise 2.14(b)提到“锁定P关节后机构仍能动”,就是在提示:数值解可能找到避开奇异位形(singularity)的路径,而解析解在此处会崩溃。
注意:IK没有“标准答案”。同一目标位姿,可能有8组不同的θ解(对6自由度机械臂)。选哪一组?取决于你的需求:能耗最低?关节速度最慢?离当前姿态最近?——这就是解的选择策略(Solution Selection),它不属于纯运动学,而属于规划与控制的交叉地带。
3.3 奇异位形:机器人运动的“断头路”,为什么它一到那儿就发抖?
奇异位形(Singularity)是逆向运动学里的终极噩梦。它不是故障,而是机构固有的几何缺陷——在某些特定姿态下,雅可比矩阵(Jacobian Matrix)降秩,意味着末端执行器的某个运动方向,再也无法通过任何有限的关节速度来实现。
Exercise 2.6(b)的轮式移动机械臂,当机械臂完全伸直成一条线时,就进入奇异位形:此时,无论关节如何微动,末端在垂直于臂方向的微小移动,都需要无穷大的关节角速度。现实中,控制器会疯狂输出最大扭矩,电机啸叫,末端剧烈抖动,甚至触发保护停机。
奇异位形分三类:
- 边界奇异(Boundary Singularity):机械臂完全伸展或完全收回,工作空间边界。
- 内部奇异(Internal Singularity):如三轴相交的机械臂,当肘部关节角为0°或180°时,肩、肘、腕轴线共面,失去一个旋转自由度。
- 架构奇异(Architectural Singularity):由机构设计导致,如并联机器人(Exercise 2.13的Stewart平台)的某些构型,平台会突然获得额外自由度,变得不稳定。
提示:规避奇异位形,是机器人控制的核心挑战。高级控制器不会等它发生,而是在路径规划阶段就“绕开”这些区域——就像导航软件提前避开塌方路段。这份习题答案里,Exercise 2.14(c)、2.17(c)等题,都在引导你思考:当所有关节轴线汇于一点时,机构的运动能力发生了什么根本性变化?这正是识别奇异位形的起点。
4. 规划与控制不是一回事:从“想走直线”到“真的走直”,中间隔着整条控制论
4.1 路径规划:在“能到达”的地图上,画一条“安全、高效、平滑”的线
规划(Planning)解决的是“去哪里、怎么去”的问题。它站在运动学的肩膀上,但看得更远:不只考虑“能否到达”,还要考虑“是否值得去”、“路上安不安全”、“耗不耗电”。
Exercise 2.6(a)的轮式移动机械臂,其C空间(Configuration Space)是 R² × T⁸ —— 意思是,底盘的2D位置(x,y)+ 底盘朝向(θ)+ 机械臂8个关节角(θ₁…θ₈),共11个维度。在这个11维空间里,所有“不撞墙、不自碰、不超限”的点,构成一个复杂的、带孔洞的连通区域。路径规划,就是在这个高维迷宫里,找一条从起点到终点的可行路径。
主流方法有三类:
- 基于采样的规划(Sampling-based):如RRT(快速扩展随机树)。像撒豆子一样,在C空间随机撒点,只保留那些“安全”的点,并用直线连接它们,逐渐长成一棵覆盖可行区域的树。Exercise 2.12(d)的并联机构,因C空间高度非线性,RRT是首选。
- 基于搜索的规划(Search-based):如A*算法。把C空间离散化成网格,每个格子是节点,用代价函数(距离+碰撞风险)评估,找最小代价路径。适合低维、结构清晰的空间。
- 基于优化的规划(Optimization-based):如CHOMP(协方差轨迹优化)。直接把路径表示为一系列样条点,以“平滑度+安全性+效率”为多目标,用数值优化求解。Exercise 2.17的手术机器人,要求亚毫米级精度和零碰撞,必须用此类方法。
提示:规划的输出不是电机指令,而是一条参考轨迹(Reference Trajectory)—— 一系列按时间戳排列的(q, q̇, q̈)数据点,即每个时刻关节该在的位置、速度、加速度。它告诉控制系统:“你该追着这条线跑”。
4.2 运动控制:把“参考线”变成“真实动作”,靠的是反馈闭环
有了规划好的轨迹,控制(Control)的任务就是:让实际关节运动,严丝合缝地跟踪这条轨迹。这不是开环播放,而是每毫秒都在“看一眼、比一比、调一调”的闭环过程。
核心是反馈控制律。最基础的是PID(比例-积分-微分):
# 伪代码:单关节位置伺服 error = q_ref - q_actual # 当前误差 p_term = Kp * error # 比例项:误差越大,用力越猛 i_term = Ki * integral(error) # 积分项:消除长期累积的小误差(如静摩擦) d_term = Kd * derivative(error) # 微分项:预测误差变化趋势,抑制超调和振荡 tau = p_term + i_term + d_term # 输出控制力矩但PID对机器人这种强耦合、非线性、变负载系统,效果有限。Exercise 2.13的Stewart平台,6条支链相互牵制,动一条,其他五条全受影响。这时要用模型驱动控制(Model-based Control),如计算力矩控制(Computed Torque Control):
# 伪代码:计算力矩控制 tau = M(q) * q_ref_ddot + C(q, q_ref_dot) * q_ref_dot + g(q) + Kp*(q_ref-q) + Kd*(q_ref_dot-q_dot) # 其中 M(q) 是惯性矩阵,C(q,q̇) 是科氏力/离心力项,g(q) 是重力项 # 前三项是“前馈”,主动抵消系统本身的动态;后两项是“反馈”,修正跟踪误差注意:控制律的参数(Kp, Ki, Kd)不是随便调的。调小了,动作拖沓;调大了,系统振荡甚至失稳。Exercise 2.14(b)说“锁定P关节后机器人还能动”,就是在提醒:控制参数必须适应机构自由度的变化,否则闭环会失效。
4.3 常见误区 / 易混概念:规划、控制、运动学,谁在管哪一段?
很多初学者把这三个词混为一谈,以为“规划好了,机器人就会动”。实际上,它们是流水线上三个严丝合缝的工位,漏掉任何一个,产品(动作)就报废:
| 易混点 | 为什么混 | 怎么区分 |
|---|---|---|
| “路径规划就是画轨迹” | 看到Gazebo仿真里机械臂画出优美的S形,以为规划师只负责美学。 | 规划的核心是可行性验证。一条再美的轨迹,如果穿过障碍物、超出关节极限、或导致奇异位形,就是废案。Exercise 2.7(c)中,用6自由度链替代7自由度链,表面看自由度少了,实则提升了规划鲁棒性——因为6自由度链的C空间更“规整”,更容易找到安全路径。 |
| “控制就是调PID参数” | 实验室里调PID调到深夜,觉得搞定Kp、Ki、Kd就天下太平。 | PID只是控制的“入门款”。真正的工业控制,必须建模(M, C, g),否则在高速、重载、变姿态下,PID必然失控。Exercise 2.12(c)的并联机构,若用纯PID,轻载时还行,一挂上工具,轨迹立刻歪斜——因为没补偿重力项g(q)。 |
| “运动学搞定了,控制就简单了” | 认为FK/IK解出来,剩下的就是“套公式”。 | 运动学只管几何,控制要管动力学(力、力矩、惯量)。IK给出的θ解,可能要求某个关节瞬间输出100Nm力矩,但电机峰值只有50Nm——这时,控制必须降速、改路径,甚至请求规划模块重算。Exercise 2.17(b)的手术约束,就是典型的“运动学可行,但动力学不可行”,必须由控制层介入协调。 |
5. 什么时候该用这份习题答案?——一份给“动手前先想清楚”的工程师的自查清单
5.1 它不是速成宝典,而是帮你建立“第一性原理”思维的磨刀石
这份《现代机器人学》习题答案,最不该被当成“抄作业指南”。它的价值,恰恰在于逼你慢下来,把每一道题都当成一次微型项目推演。比如Exercise 2.3关于前臂自由度的讨论,表面在算数,实则在训练你一种工程师本能:看到一个生物/机械结构,第一反应不是“它叫什么”,而是“它的运动约束从哪来、自由度怎么分配、哪些是显性的、哪些是隐性的”。
我带过的某高校机器人实验室,曾让研究生用这份答案自学。第一周,大家狂抄Exercise 2.5的计算步骤;第二周,开始争论Exercise 2.15里“等长四杆为何能动”;到第三周,有人拿着自己设计的采摘机械臂图纸,对照Exercise 2.12(d)的并联机构分析,发现自己的腕部结构存在未察觉的虚约束——当场修改了3D模型。真正的收获,从来不是答案本身,而是你质疑答案、验证答案、最终把答案内化为肌肉记忆的过程。
提示:使用这份资源的最佳节奏是:
①先遮住答案,自己动手推导(哪怕只推一半);
②对照答案,重点看“为什么这样设坐标系”、“为什么这个约束被忽略”、“这个fᵢ值是怎么认定的”;
③合上答案,用你自己的话,给一个完全不懂的人讲清楚这道题在解决什么问题。
如果讲不清,说明还没真正吃透。
5.2 它解决不了的三类问题,你得心里有数
再好的资料也有边界。这份习题答案,聚焦于确定性、刚性、集中参数的经典机器人学框架。以下三类问题,它帮不上忙,你得另寻他法:
① 非结构化环境下的实时决策
比如:一个送货机器人,在商场里遇到突然冲出的小孩,是急停、绕行、还是鸣笛?这涉及感知(摄像头/激光雷达识别)、认知(判断小孩意图)、行为决策(博弈论/强化学习),远超Grübler公式的范畴。Exercise 2.6的轮式移动臂,假设环境已知、静态,而现实世界是动态的。
② 柔性体与接触动力学
答案里所有“link”都是刚体。但真实机器人有电缆摆动、软体手指抓握、足式机器人脚掌与地面的粘滞-滑移转换。这些需要连续介质力学、非光滑动力学建模,不是几个DH参数能搞定的。Exercise 2.17的手术工具,假设它刚性穿透组织,而实际中,组织变形、出血、器械弯曲,全是待解难题。
③ 分布式协同与通信约束
答案处理的都是单机系统。而现代仓储物流,是上百台AGV协同调度;无人机编队,是数十架飞机实时共享状态。这时,“自由度”概念要升维为“系统级自由度”,约束来自通信延迟、带宽限制、网络拓扑变化——Exercise 2.13的Stewart平台,6条支链同步控制,尚属集中式;换成6台独立机器人托起一个平台,就是分布式控制的新战场。
5.3 从那以后我每次设计新机构,都强制走一遍“三问法”
在某跨平台机器人项目里,我们曾为一个双臂装配工作站设计腕部模块。初稿出来,7个电机,看着很“强大”。但按照这份习题答案的思路,我强制自己问了三个问题:
第一问:自由度够吗?
用Grübler公式粗算:N=8(含机架),J=7(全R),Σfᵢ=7 → dof=6(8−1−7)+7=1。只有1个自由度?显然不对。回头检查,发现把两个串联的万向节(U)误标为两个独立R关节。修正为J=5(2U+1R),Σfᵢ=2×2+1=5 → dof=6(8−1−5)+5=17?又太高。最终确认:其中一个U关节的轴线与另一个存在固定夹角,构成复合约束,需按Exercise 2.15处理,减去1个虚约束。最终dof=6——刚好满足6D操作需求。
第二问:奇异位形在哪?
画出所有关节轴线,发现当两臂完全展开时,腕部三个旋转轴共面。查Exercise 2.6(b)和2.17(c),确认这是内部奇异。于是,在机械结构上增加一个微小偏置角,打破共面性,代价是牺牲0.3°的理论旋转范围,换来全程无奇异。
第三问:规划与控制能跟上吗?
7自由度意味着IK有无穷多解。我们没选最快的解析解,而是采用基于优化的IK求解器(类似CHOMP),把“最小化关节加速度”作为首要目标。这样,即使规划路径有微小抖动,实际控制输出依然平滑——因为优化器自动选择了最“省力”的解。
这套“三问法”,现在成了我们团队的设计铁律。它不保证成功,但能筛掉90%的结构性隐患。希望这份习题答案,也能成为你工具箱里那把最趁手的游标卡尺——不华丽,但每一次测量,都让你离“真正懂机器人”更近一步。希望帮到你。
本文还有配套的精品资源,点击获取