想象一下,你正和朋友一起搭一座乐高机器人。两个人各拿一本示意图:你说“先转三十度再插上去”,朋友坚持“插上之后再拧角度”。图纸画法完全不同,你们对着同一堆积木吵得不可开交。这时你俩终于达成协议:从今天起,每两块积木的连接说明都统一写成四个数字——“伸出多远、歪斜几度、垫高几许、旋转多少”。只要这四个数不变,谁照着搭,结果都一模一样。这就是DH参数法的灵魂。 机器人世界里的机械臂,就是由一根根金属“积木”(连杆)和一个个电机“关节”串起来的。1955年,Denavit和Hartenberg两位学者发明了这套标准化“搭积木语言”:只需四个参数——连杆长度 \(a\)、连杆扭转 \(\alpha\)、关节距离 \(d\)、关节角度 \(\theta\)——就能精确描述相邻两块“积木”之间怎么连接。有了这套语言,工程师可以把每一段关系写成矩阵,再连乘起来,轻松算出机械臂末端的手在哪儿、朝哪个方向;反过来推每个关节转多少,就是逆运动学。从汽车工厂的六轴焊接臂到手术机器人,DH参数法都是机器人运动学的地基。这篇文章,就带你用搭乐高的直觉,读懂机器人的“内部地图”。
掌握DH参数法,你就握住了机器人的“通用语言”——它是机器人算法工程师做运动规划、仿真与标定的基本功,也是通往高级机器人控制的第一把钥匙。
可视化演示
分步展示DH参数坐标系建立、齐次变换矩阵推导与多关节机器人正向运动学求解过程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
步骤1:DH坐标系建立 Zi轴沿关节i旋转方向 Xi轴沿公垂线指向下一关节 a_i, α_i, d_i, θ_i 四个参数描述相邻坐标系变换关系。
DH参数起源
想象一下这样的场景:你和朋友合伙搭乐高机器人,你习惯“先转三十度再插上”,朋友却坚持“插上之后才拧角度”。图纸各画一套,两个人对着同一个机器人吵得不可开交。直到有一天你们达成共识:从今天起,每一块积木的连接说明书都统一写成“伸出多远—歪斜几度—垫高几许—旋转多少”四个数字。世界一下子清净了。
机器人学也经历了同样的“混战”。20世纪50年代,机械臂开始走进工厂,每个团队都用自己的方式描述连杆位置,文档之间很难对接。1955年,Denavit和Hartenberg发表了那篇里程碑论文,提出一套标准化连杆参数表示法:用四个参数唯一确定相邻两个关节坐标系之间的位姿关系。从此,描述机械臂就像填写统一格式的乐高说明书,任何团队拿到图纸都能复现同一台机器。
这套方法的精髓是把机械臂拆成一段段“连杆”和一个个“关节”,在每个关节处固定一个坐标系。四个参数——连杆长度 \(a\)、连杆扭转 \(\alpha\)、关节距离 \(d\)、关节角度 \(\theta\)——恰好决定了相邻两个坐标系如何相对放置。于是,每个关节都被浓缩成一个数学公式,整条手臂变成一串可以计算的“坐标转换器”。
有了统一说明书,团队不再为“你的图纸还是我的图纸”内耗。任何两块积木之间的连接,都被锁进四个数字的标准化描述里。DH参数法在机器人圈的地位,就相当于那本大家都认可的统一乐高手册——简单、通用、几十年不过时。
- 变换矩阵符号\(T_i^{i-1}\) 读作“第 \(i\) 个坐标系相对第 \(i-1\) 个坐标系”,它是一个 \(4\times4\) 的坐标转换器,把机械臂上某点的坐标从一个关节换算到上一个关节。
- 连杆算子\(A_i\) 是第 \(i\) 段连杆对应的变换算子,像乐高说明书上的一块“积木卡片”,封装了这一段积木的全部连接信息。
- 四个参数\((\theta_i, d_i, a_i, \alpha_i)\) 正是DH四参数,它们按固定顺序参与运算,任何顺序颠倒都会得到错误的位姿。
- 等号的含义该式描述了“相邻坐标系的关系完全由四个数字锁死”。你看,整个公式没有一个多余的符号,这就是标准化语言的简洁力量。
四个核心参数
拿起一块积木,想把它装到前一块上面。你心里默默回答四个问题:第一,它要向前伸出多长?第二,装上去后要不要歪着脖子?第三,它和前一块之间要垫多高?第四,它自己还要转多少度?这四个答案写在纸上,别人就能100%还原你的动作。这就是DH四参数给你的“物理手感”。
数学家把这四个问题翻译成了四个符号:连杆长度 \(a\)、连杆扭转 \(\alpha\)、关节距离 \(d\)、关节角度 \(\theta\)。其中 \(a\) 像积木“伸出去的距离”,\(\alpha\) 像积木“歪脖子的角度”,\(d\) 像两块积木之间“垫块的高度”,\(\theta\) 像积木“转角的度数”。它们共同构成从第 \(i-1\) 个关节坐标系走到第 \(i\) 个坐标系的两段平移和两段旋转。
标准DH定义更精确:\(\theta_i\) 是绕 \(z_{i-1}\) 轴从 \(x_{i-1}\) 轴旋转到 \(x_i\) 轴的角度;\(d_i\) 是沿 \(z_{i-1}\) 轴从 \(x_{i-1}\) 轴到 \(x_i\) 轴的距离;\(a_i\) 是沿 \(x_i\) 轴从 \(z_{i-1}\) 轴到 \(z_i\) 轴的距离;\(\alpha_i\) 是绕 \(x_i\) 轴从 \(z_{i-1}\) 轴旋转到 \(z_i\) 轴的角度。一句话:\(a\) 和 \(\alpha\) 描述“连杆本身长什么样”,\(d\) 和 \(\theta\) 描述“关节怎么动”。
这四条“组合拳”就像乐高说明书上的四步标准动作:转一下、垫一下、伸一下、歪一下。顺序不能乱,每一下都有固定的对象。理解了它们在空间几何中的含义,后面所有公式都只是把这四步精确地“算出来”而已。
- 绕z转θ\(\operatorname{Rot}(z_{i-1}, \theta_i)\) 描述“关节转动”——沿着前一个坐标系 \(i-1\) 的 \(z\) 轴旋转关节角 \(\theta_i\),相当于拧动积木的转轴。
- 沿z移d\(\operatorname{Trans}(z_{i-1}, d_i)\) 描述“垫高或缩回”——沿着同一个 \(z\) 轴平移 \(d_i\) 距离,相当于在积木之间塞入不同厚度的垫片。
- 沿x移a\(\operatorname{Trans}(x_i, a_i)\) 描述“向前伸臂”——沿着新坐标系 \(i\) 的 \(x\) 轴平移连杆长度 \(a_i\),相当于把积木往前伸出。
- 绕x扭转α\(\operatorname{Rot}(x_i, \alpha_i)\) 描述“歪脖子”——绕新的 \(x_i\) 轴扭转角度 \(\alpha_i\),相当于把积木斜着插紧。
坐标系建立
搭积木前,你得先定义清楚“前”和“上”。对一块楔形乐高,你说“往前装”,到底往哪边?DH法做了一件很聪明的事:给每个关节贴一张坐标标签,规定 \(z\) 轴沿着关节的转动轴,\(x\) 轴沿着两根相邻转轴之间的“最近连线”,\(y\) 轴按右手定则补齐。标签贴法全世界统一,谁来了都不会搞混。
具体规则是这样的:先把坐标系的 \(z\) 轴放在关节轴上;然后观察相邻两个关节轴 \(z_{i-1}\) 和 \(z_i\),它们大多是空间中既不平行也不相交的“异面直线”,在几何上存在一条唯一的公垂线(同时垂直于两条直线的最短连线),就让 \(x_i\) 轴沿着这条公垂线、指向 \(z_i\) 那一侧;最后用右手定则 \(y_i = z_i \times x_i\) 补上 \(y\) 轴。
这套规则的巧妙之处在于:\(a_i\) 和 \(\alpha_i\) 正好“隐身”在坐标系的几何关系里——\(z_{i-1}\) 与 \(z_i\) 的公垂线长度就是 \(a_i\),两轴夹角就是 \(\alpha_i\)。原点设在 \(x_i\) 轴与 \(z_i\) 轴的交点。基座坐标系记为第0号,末端工具坐标系记为第 \(n\) 号,中间每个关节对应一个编号,像乐高工厂给每块积木喷上的序列号。
给积木贴“坐标标签”不再是个人风格问题,而是有严格考试答案的:先找两根转轴的最短距离,把 \(x\) 标签贴在那条最短连线上,再用右手定则划出 \(y\) 标签。所有人都贴同一个位置,机械臂的“坐标系地图”才是唯一的。
- 公垂线距离\(\operatorname{dist}(z_{i-1}, z_i)\) 是两关节轴之间的最短距离,数值上等于连杆长度 \(a_i\),且方向沿 \(x_i\) 轴正向。
- 空间夹角\(\angle(z_{i-1}, z_i)\) 是两轴之间的空间夹角,绕 \(x_i\) 轴测量,数值上等于连杆扭转 \(\alpha_i\)。
- 异面直线公垂线空间中两条不平行也不相交的直线,存在唯一一条公垂线同时垂直于它们,这就是 \(x_i\) 轴存在的几何依据。
- 右手定则补y\(y_i = z_i \times x_i\) 由向量叉乘给出,保证每个坐标系的 \(x\)、\(y\)、\(z\) 三轴构成标准右手系。
变换矩阵
每块积木上都贴了一张“转换纸条”,正面写着四步动作,背面是一个 \(4\times4\) 的数表。想知道末端积木相对底座在哪,就把从底座到末端的所有纸条按顺序叠乘。千万不要拿错顺序——先放底座那张,再放中间那张,最后才是手那张。
把第2节的四次基本变换代入并整理,就得到DH法最核心的公式——相邻坐标系的齐次变换矩阵。它把“转、垫、伸、歪”四个动作融进一个矩阵:
若关节是旋转关节,矩阵里的 \(\theta_i\) 是变量;若是移动关节,\(d_i\) 是变量;其余参数在机械臂设计定型后就是常数。整条手臂的末端变换等于这些矩阵按顺序连乘。每个变换矩阵就像一张乐高“转换纸条”,把四步动作打包成一个黑盒。工程师不必时刻盯着里面的三角函数,只需要正确调用它——就像你不需要重学几何也能拼好积木。
- 姿态旋转块左上角 \(3\times3\) 矩阵由 \(\theta_i\) 和 \(\alpha_i\) 混合构成,负责描述坐标系 \(i\) 相对坐标系 \(i-1\) 的姿态旋转。
- 位置平移列右上角 \(3\times1\) 向量存放坐标系 \(i\) 的原点在坐标系 \(i-1\) 中的位置,由 \(a_i\) 和 \(d_i\) 贡献。
- 第三行特殊结构第三行前两列为0,第三、四列为 \(\sin\alpha_i\)、\(\cos\alpha_i\),体现绕 \(x\) 轴扭转 \(\alpha_i\) 对姿态的影响。
- 齐次底行最后一行 \([0\ \ 0\ \ 0\ \ 1]\) 是齐次坐标的“缩放因子占位”,有了它,旋转和平移才能统一到一次矩阵乘法里。
正运动学求解
你照着说明书从底座一块一块往手上搭,搭完全程,末端那块积木落在桌上哪个位置、指向哪个方向,自然就知道了。正运动学就是这个“顺着搭”的过程:已知每个关节转了多少,求手在哪里。
标准做法分三步:第一步,填一张DH参数表,把每个关节的 \(a\)、\(\alpha\)、\(d\)、\(\theta\) 一行行写清楚,就像列乐高零件清单;第二步,把每一行参数带入变换矩阵公式,写出每个 \(T_i^{i-1}\);第三步,把矩阵从左到右连乘,得到末端相对基座的位姿 \(T_n^0\)。以常见的六轴机械臂为例,末端位姿就是六张“转换纸条”的乘积:
拿到 \(T_6^0\) 后,左上 \(3\times3\) 块是旋转矩阵,可用来提取姿态角;右上 \(3\times1\) 列就是手腕位置坐标。仿真、离线编程、轨迹规划都会反复调用这段“从角度到位姿”的映射。正运动学就是“按图施工”:每一步都由DH四参数严格规定,最后一块积木的空间位置透明可算。这也是为什么工业界敢先在虚拟仿真里验证动作——因为正解公式和真实几何严格一致。
- 末端位姿矩阵\(T_6^0\) 是工具坐标系 \(\{6\}\) 相对基座坐标系 \(\{0\}\) 的位姿,既包含末端位置,也包含末端朝向。
- 相邻矩阵链\(T_1^0, T_2^1, \ldots, T_6^5\) 依次表示“第1关节相对底座”、“第2关节相对第1关节”……“第6关节相对第5关节”,一环扣一环。
- 连乘顺序矩阵按关节索引从小到大连乘,顺序严格固定;一旦交换顺序,得到的是另一条完全不存在的“幻影手臂”位姿。
- 末行检查最终 \(T_6^0\) 的最后一行仍为 \([0,0,0,1]\),乘积是合法齐次变换矩阵,可以直接提取位置和姿态。
逆运动学分析
现在把剧本反过来:你想让乐高机器人的手抓住桌上的水杯,却不能直接把手挪过去——你只能拧动肩、肘、腕这些关节。于是要倒着推算:每个关节各转多少度,手才能刚好落在杯子上?你很快就意识到,可能有几种姿势都能碰到杯子,比如“直臂够”和“弯腰够”。逆运动学就是这种“倒推关节角”的过程。
数学上,正运动学是函数 \(f(\boldsymbol{\theta}) = \boldsymbol{p}\),逆运动学则是已知末端位置 \(\boldsymbol{p}\) 和姿态 \(R\),反解关节角 \(\boldsymbol{\theta}\)。难点在于:解可能不存在、可能不唯一、还可能有无穷多组。目标点必须在机械臂的工作空间内才有解;同一个末端位姿常常对应多组关节角(比如肘在左还是肘在右);而冗余机械臂(自由度超过6)则存在无数种摆放方式。
求解方法分两大类:解析法要求机械臂满足特定几何条件,例如Pieper准则——相邻三轴交于一点,此时六轴臂的逆解可以写成封闭代数式,速度快、精度高;数值法则用牛顿-拉夫森迭代或雅可比伪逆,对任意结构都通用,但需要好的初值,可能陷入局部最优或奇异位形。
逆运动学就像“倒放乐高搭建视频”:只看到最后一帧手的姿态,却要猜每一步怎么拧。猜法不止一种,聪明的工程师会结合“手臂别撞东西”“姿势别太怪”等约束,挑一个最稳妥的姿势执行。
- 正运动学映射\(f(\boldsymbol{\theta})\) 是把一组关节角 \(\boldsymbol{\theta}\) 映射到末端位置向量 \(\boldsymbol{p}\) 的函数,前面几节算的就是它。
- 期望位置\(\boldsymbol{p}_{\text{desired}}\) 是希望末端到达的目标坐标,比如“水杯在桌面上的三维坐标”。
- 逆映射符号\(f^{-1}\) 表示“反推关节角”的逆映射,它不像普通函数的反函数那样单值,而通常是一对多的关系。
- 多解与约束工程中会额外加上关节限位、避碰、姿态偏好等约束,再在众多候选解中挑出唯一合理的那个。
工程应用实践
工厂里的机械臂实际上是“自动搭积木机”,但它有个现实问题:搭上几万次之后,积木可能磨小了一点,说明书却没有更新,手抓零件的误差就越攒越大。怎么破?定期“量尺寸、改说明书”——这就是工程中的运动学标定。
工程实践中,DH参数有三个关键用途:一是正运动学用于实时显示末端位姿、做碰撞检测和可视化;二是逆运动学用于轨迹规划,把目标点变成关节角的运动序列;三是标定,利用外部测量设备实测末端位置,反过来修正DH参数中的结构误差。
标定通常这样做:让机械臂走一组标定点,用激光跟踪仪或视觉系统测出末端实际位置,再与DH模型预测位置对比。这里的偏差既来自连杆长度误差,也来自扭转角误差和关节零点偏移。通过最小化所有标定点上预测与实测的偏差平方和,就能辨识出真实的参数误差:
标定就是给乐高机器人“重新量尺寸”:积木旧了、变形了,把新尺寸写回说明书,机械臂就重新精准了。DH参数法不仅是纸上公式,更是贯穿机器人出厂、调试、维护全生命周期的基础设施——它让“自动搭积木机”日复一日地稳、准、快。
- 误差向量\(\Delta\boldsymbol{\xi}\) 是所有DH参数微小误差的集合,例如各连杆长度误差、扭转角误差和关节零点偏移。
- 模型预测位置\(\boldsymbol{p}_k^{\text{sim}}\) 是第 \(k\) 个标定点上,由当前DH模型计算的末端位置——“说明书说它应该在这”。
- 实测真实位置\(\boldsymbol{p}_k^{\text{meas}}\) 是第 \(k\) 个标定点上由测量设备得到的真实末端位置——“尺子说它实际在这”。
- 平方和最小化外层 \(\min\) 表示不断调整误差参数,让“说明书预测”与“现实测量”在全部 \(N\) 个点上的总偏差最小。
AI 应用场景
工业机械臂的离线轨迹规划
阶段:运动规划与仿真验证
解决的问题:传统示教编程需要人工拖拽机械臂逐点记录路径,换产时停机好几天;人工示教还难以保证姿态平滑与避障合理。基于DH参数的正逆运动学模型,让工程师在虚拟环境里直接规划末端轨迹,再自动换算成关节角序列,大幅缩短部署时间。
具体案例:某汽车焊装车间的一台六轴点焊机器人要完成128个焊点。工程师导入工件CAD模型,基于DH模型为每个焊点调用逆运动学求关节角,并在仿真中校验无碰撞。整个换产从3天缩短到4小时,焊点位置误差低于0.6mm。
手术机器人运动学标定
阶段:参数辨识与精度优化
解决的问题:微创手术机器人结构紧凑、装配误差敏感,直接使用理论DH参数会导致末端偏移达到毫米级,这在手术中完全不可接受。借助DH标定方法,用外部测量设备采集末端位置,以模型预测与实测的残差最小化为目标,优化出真实的 \(a\)、\(\alpha\)、\(d\)、\(\theta\) 参数。
具体案例:某手术机器人研发团队用激光跟踪仪采集了100组末端位姿,完成DH参数辨识后,末端定位误差从2.3mm降至0.4mm,达到临床使用的精度门槛。
Python 演示
import numpy as np def dh_matrix(a, alpha, d, theta): """根据DH四参数构造相邻坐标系变换矩阵""" ct, st = np.cos(theta), np.sin(theta) ca, sa = np.cos(alpha), np.sin(alpha) return np.array([ [ct, -st * ca, st * sa, a * ct], [st, ct * ca, -ct * sa, a * st], [0, sa, ca, d], [0, 0, 0, 1] ]) def forward_kinematics(dh_params): """把各个关节的DH参数拼成矩阵并依次连乘""" T = np.eye(4) for a, alpha, d, theta in dh_params: T = T @ dh_matrix(a, alpha, d, theta) return T def main(): # 三段式机械臂: 腰部旋转 + 大臂 + 小臂 dh_params = [ (0, np.pi / 2, 0.3, np.pi / 6), (0.6, 0, 0.0, np.pi / 4), (0.5, 0, 0.0, np.pi / 5), ] T_end = forward_kinematics(dh_params) pos = T_end[:3, 3] print("末端位置: ({:.3f}, {:.3f}, {:.3f})".format(*pos)) print("末端旋转矩阵:") print(T_end[:3, :3]) if __name__ == "__main__": main()
def dh_matrix(a, alpha, d, theta):定义DH四参数的变换矩阵构造器,是全文核心矩阵公式的代码化身。ct, st = np.cos(theta), np.sin(theta)提前算好三角函数,避免在矩阵字面量里重复计算。T = np.eye(4)初始化4×4单位矩阵,作为矩阵连乘的“起点底座”。T = T @ dh_matrix(...)把当前矩阵与下一关节矩阵相乘,这就是“转换纸条依次叠乘”。pos = T_end[:3, 3]取出矩阵右上角的3×1平移列,即末端位置坐标。
常见误区
误区很多初学者以为移动关节没有关节角,所以在填DH参数表时直接把移动关节的θ写成0或者留空,甚至跳过这个参数。
正解DH模型里每个关节都定义完整的一组 \((a, \alpha, d, \theta)\)。旋转关节以θ为变量、移动关节以d为变量,但另一个参数依然存在,只是固定为常量。跳过或留空都会导致变换矩阵少一块,末端位置完全算错。就像搭积木时每一块连接都要回答四个问题,不能因为“这块不会转”就不回答“转了多少度”——答案可以是固定的0度。
为何常见:因为旋转关节给人印象最深的就是“转动角度”,而移动关节的θ不变化,容易被误认为不存在。
误区新手在做正运动学连乘时觉得“反正都是乘,先乘哪个都一样”,于是把矩阵顺序打乱,结果得到错误的末端位姿。
正解矩阵乘法不满足交换律,\(A \times B\) 与 \(B \times A\) 通常完全不同。DH变换矩阵必须严格按“从基座到末端”的关节索引顺序连乘。这就像搭乐高不能先搭第三层再搭第一层——顺序错了,积木就悬空了。
为何常见:小学算术里数字乘法交换律太根深蒂固,人们习惯性以为“乘法都可以换位置”。
误区看到 \(\alpha\) 和 \(\theta\) 都是角度,以为两个角都是绕同一个轴转,于是把DH矩阵中的旋转方向搞混。
正解\(\theta\) 是绕前一个坐标系的 \(z_{i-1}\) 轴旋转,\(\alpha\) 是绕新坐标系的 \(x_i\) 轴扭转。一个管“关节转动”,一个管“连杆歪斜”,旋转轴完全不同。就好比乐高里“拧连接栓”和“掰弯连接杆”是两个不同动作,不能混为一谈。
为何常见:四个参数中两个是长度、两个是角度,缩写又都是希腊字母,记混旋转轴是常见错因。
误区只要给了一个末端位姿,就一定能算出一组唯一的关节角。
正解逆解可能无解(目标超出工作空间)、多解(肘上/肘下、腕翻转)、甚至无穷解(冗余机械臂)。实际工程必须结合关节限位、避障、姿态偏好等约束来挑选最优解。就像伸手够杯子,可以直臂够、弯腰够、踮脚够,每种姿势都是解,但要选最舒服不撞墙的那个。
为何常见:正运动学是“角度到位姿”的确定映射,容易让人以为反方向也是唯一确定的。
误区机械臂末端不准时,初学者第一反应是“关节角零点没调好”,于是只调θ,忽略其他参数误差。
正解末端误差由 \(a\)、\(\alpha\)、\(d\)、\(\theta\)(零点)四个参数的误差共同贡献。尤其连杆长度误差和扭转误差在远距离处会被几何放大,专业标定必须同时辨识全部DH参数。就像一本乐高图纸,如果积木本身尺寸印错了,你光改“角度”那栏,依然拼不出精准的模型。
为何常见:关节角是唯一时时变化的量,人们容易把一切误差归咎于“看起来最活跃”的那个参数。
面试题
Q1. DH参数法中,描述相邻两关节轴之间夹角的是哪个参数?
- A.连杆长度a
- B.连杆扭转α← 正确答案
- C.关节距离d
- D.关节角度θ
答案:B。连杆扭转α定义的是相邻两个关节轴 \(z_{i-1}\) 与 \(z_i\) 的空间夹角,绕新的x轴测量。a是两轴的最短距离,d是沿z轴的平移量,θ是绕z轴的旋转角。好比乐高积木“歪脖子”的程度由α决定。
Q2. 在标准DH模型中,旋转关节的变量是哪个参数?
- A.连杆长度a
- B.连杆扭转α
- C.关节角度θ← 正确答案
- D.关节距离d
答案:C。旋转关节通过电机改变的是关节角θ,所以θ是变量;d是移动关节的变量,而a和α由机械臂结构决定、通常是常量。就像拧乐高转轴时,变的只有“旋转角度”这一栏。
Q3. 齐次变换矩阵的维度是多少?
- A.二行二列的方阵
- B.三行三列的方阵
- C.四行四列的方阵← 正确答案
- D.六行六列的方阵
答案:C。DH变换矩阵是4×4齐次矩阵,最后一行固定为[0,0,0,1]。它把三维旋转和平移统一到一次矩阵乘法中。就像一张乐高“转换纸条”恰好有16个格子,能同时记下“方向”和“位置”。
Q4. 正运动学求解的数学本质是:
- A.多个变换矩阵求逆
- B.多个变换矩阵连乘← 正确答案
- C.单个矩阵做转置
- D.多个矩阵逐元素相加
答案:B。正运动学把每个关节的DH矩阵按顺序连乘,得到末端位姿。求逆是逆运动学或反向变换的工具,转置和逐元素加和与位姿合成无关。这就像把一路上的乐高“转换纸条”按顺序叠起来。
Q5. 标准DH法中,x_i轴的方向通常取为:
- A.沿关节i的旋转轴方向
- B.沿z_{i-1}和z_i的公垂线方向← 正确答案
- C.沿竖直向下的重力方向
- D.沿连杆末端的外法线方向
答案:B。x_i轴沿z_{i-1}与z_i的公垂线方向,这是坐标系建立规则的核心。z轴才沿关节轴方向;重力和外法线与DH定义无关。好比乐高标签中“前后”方向由两根转轴的最短连线决定。
Q6. 六轴机械臂相邻三轴交于一点时,可用什么方法封闭求解逆运动学?
- A.使用Pieper准则求解← 正确答案
- B.使用牛顿法迭代求解
- C.使用梯度下降迭代求解
- D.使用蒙特卡洛随机采样
答案:A。Pieper准则指出,当六轴臂相邻三轴交于一点时(大多数工业六轴臂都满足),逆运动学可写成封闭代数式,快速精确。牛顿法、梯度下降和蒙特卡洛属于数值或随机方法,通用但速度慢、需要初值。
Q7. 下列哪些属于DH四参数的组成部分?
- A.确定坐标系的连杆长度← 正确答案
- B.描述连杆扭曲的扭转角← 正确答案
- C.关联关节运动的旋转角← 正确答案
- D.实测末端的直线速度
答案:ABC。DH四参数是连杆长度a、连杆扭转α、关节距离d、关节角度θ。末端速度属于运动学中的速度分析范畴,不是DH参数。就像乐高说明书四个数字里,不会包含“末端积木速度”这一项。
Q8. 逆运动学求解可能遇到哪些困难?
- A.目标点超出工作空间导致无解← 正确答案
- B.同一个末端位姿对应多组关节角← 正确答案
- C.每个关节角必然有且仅有一个解
- D.奇异位形附近雅可比矩阵病态← 正确答案
答案:ABD。逆运动学无解(目标不可达)、多解(肘上肘下)、奇异位形数值不稳定都是典型困难。C的说法是理想化误解——事实上逆解常常不唯一。如同一个乐高姿势往往有多种搭法,且某些极限角度会让计算“卡壳”。
Q9. 关于DH参数标定,下列说法正确的是:
- A.只需修正θ参数就能消除全部误差
- B.用实测末端位置优化DH参数← 正确答案
- C.标定后减小模型与实机的偏差← 正确答案
- D.标定过程完全无需测量设备
答案:BC。标定用外部测量设备采集末端真实位置,以模型预测与实测的残差为目标优化DH参数,从而减小模型与实际机械臂的偏差。A只修正θ无法消除a、α、d的误差,D没有测量就无法辨识参数。就像改乐高说明书不能只改角度,还要拿尺子量才行。
Q10. 变换矩阵连乘时,如果交换两个相邻关节矩阵的顺序,会发生什么?
- A.结果不变,矩阵乘法可交换
- B.得到另一组完全不同的末端位姿← 正确答案
- C.矩阵变成单位矩阵
- D.矩阵维数变成3×3
答案:B。矩阵乘法不满足交换律,交换相邻关节矩阵会得到完全不同的末端位姿。这是因为旋转和平移的合成与顺序强相关。好比搭乐高先装手臂再装底座与先装底座再装手臂,得到的结构完全不同。