Home
/
机器人经典基础
/
Denavit–Hartenberg:把一台机械臂写成一串坐标变换
# 001|Denavit–Hartenberg:把一台机械臂写成一串坐标变换 [系列首页](README.md) · [时间线](00-发展时间线总览.md) · [下一篇](002-kalman.md) **原论文**:Jacques Denavit、Richard S. Hartenberg,*A Kinematic Notation for Lower-Pair Mechanisms Based on Matrices*,1955,Journal of Applied Mechanics 22(2):215–221。[出版记录](https://doi.org/10.1115/1.4011045)。网页后来的数字化日期不应替代1955年的发表年份。 **证据范围**:原出版记录和摘要可核对;原版PDF的完整文字与图式未取得稳定解析。以下明确分开原文可确认的主张与采用现代标准D-H记号的教学推导,不对原论文两个空间机构示例的具体数值作未核实转述。 ## 一、一分钟理解 机械臂关节编码器给出若干角度,但任务描述通常是“夹爪位于桌面上的某一点”。两者之间需要一个几何模型。困难不是三角函数本身,而是每根连杆都有自己的方向,旋转和平移的顺序不能任意交换。 论文建立了用矩阵描述低副机构运动关系的统一记号。它的贡献属于表示方法:把空间机构的连接关系转换为可以系统组合的代数关系。原摘要确认包含两个空间机构应用例子,但这不是现代意义上的训练集或机器人成功率实验。 一句话:在由低副连接的机构中,通过规范坐标关系和矩阵组合,改善运动学建模的系统性,代价是必须严格维护坐标约定,且几何模型本身不描述受力与控制误差。 ## 二、问题定义:角度怎样变成末端位姿 考虑一条串联运动链,输入是关节变量 $q=(q_1,\ldots,q_n)) 与固定连杆参数,输出是末端相对基座的位姿 (T_0^n$。位姿包括位置和姿态,不能用三个位置坐标替代六维刚体关系。 | 要素 | 几何建模中的含义 | |---|---| | 状态输入 | 转动关节角或移动关节位移 | | 固定信息 | 相邻关节轴的相对位置与方向 | | 输出 | 基座到末端的刚体变换 | | 优化目标 | 正向运动学本身是求值问题,没有训练损失 | | 前提 | 刚体连杆、明确的关节连接、统一单位与坐标方向 | 刚体模型不等于物理系统完全刚硬。它是忽略弹性变形后的近似。制造误差、减速器回差和温度变化都会使理论末端位置与实测位置不同,这些偏差需要标定或更丰富模型处理。 ## 三、方法与公式:把局部关系按顺序组合 以下使用现代常见的标准D-H约定:关节 $i) 的运动轴为 (z_{i-1}),(a_i$ 是公共法线方向的距离,$\alpha_i$ 是相邻轴的扭转角,$d_i$ 和 $\theta_i$ 分别是轴向平移与绕轴转角。 $$ A_i=R_z(\theta_i)T_z(d_i)T_x(a_i)R_x(\alpha_i),\qquad T_0^n=A_1A_2\cdots A_n. $$ 每个 $A_i$ 都是4×4齐次变换。左上3×3块表示旋转,右上3×1列表示平移,最后一行为 $[0,0,0,1]$。平移加入齐次坐标后,也能与旋转一起通过矩阵乘法组合。 转动关节通常把 $\theta_i$ 作为变量,其余参数固定;移动关节通常把 $d_i$ 作为变量。这里的“固定”是相对当前机构设计与标定值而言,并不意味着它们没有估计误差。 为什么只需要四个参数?任意两个坐标系的关系一般需要六个自由度,但D-H并不允许随意选择两个系:坐标轴按照相邻关节轴及其公共法线建立,利用了机构结构。减少参数来源于约定,不是减少真实机构的空间自由度。 ```text 输入:每个关节类型、a、alpha、d、theta,以及当前关节变量q T = 单位齐次矩阵 按基座到末端的顺序遍历关节i: 若为转动关节,将qi与角度零偏组合成theta_i 若为移动关节,将qi与位移零偏组合成d_i Ai = Rz(theta_i) * Tz(d_i) * Tx(a_i) * Rx(alpha_i) T = T * Ai 输出:T,以及需要时保存的所有中间连杆变换 ``` 这段伪代码是教学实现。标准D-H和改进D-H使用不同的坐标附着及变换顺序,不能把其中一种参数表塞进另一种代码。判断约定是否一致,应检查关节轴、索引和变换方向,而不能只看变量名相同。 ## 四、证据怎样理解 | 可定位内容 | 支持什么 | 不支持什么 | |---|---|---| | 原摘要关于记号不足的讨论 | 作者试图补足完整运动学描述 | 不能据此判断所有既有记号都不可用 | | 原摘要关于矩阵代数的说明 | 机构关系可统一组织成矩阵方程 | 不意味着逆运动学必有唯一闭式解 | | 原摘要说明两个空间机构例子 | 方法不是只针对平面链条 | 例子的具体参数、图号和误差尚未核实 | | 现代齐次变换的直接代数检验 | 给定约定可验证正向求值 | 不是原论文硬件实验结果 | 这类奠基表示论文的证据重点是表达范围、特殊几何情况与等价性,训练步数和随机种子不适用。原文两个空间机构示例的具体设置与数值尚未核实。 ## 五、教学例子:两根平面连杆 设两根连杆长度都为1,两个关节均绕垂直纸面的轴旋转。忽略基座和工具偏移,末端位置为: $$ x=\cos q_1+\cos(q_1+q_2),\quad y=\sin q_1+\sin(q_1+q_2). $$ 取 $q_1=90^\circ,q_2=-90^\circ$,第一根连杆向上,第二根相对第一根向右转90度,所以末端为 $(1,1)$。第二项用的是角度之和,而非单独的 $q_2$,因为第二关节角描述相对运动。 这个例子还说明两个不同问题:正向运动学给定角度求位置;逆运动学给定位置找角度。相同位置可能对应肘上与肘下构型,D-H只提供方程,并不替你选择逆解分支。 ## 六、代价、边界与实现检查 相邻轴平行、重合或相交时,坐标选择可能不唯一。不同参数表可以描述同一机构,但参数随几何变化的连续性可能较差。因此用于数值标定时,表示紧凑并不自动意味着条件数良好。 另一个常见错误是混淆主动运动与坐标变换。记号 $T_a^b$ 应先明确究竟把哪一坐标系的向量映到哪一坐标系。最直接的检查是拿一个已知点,通过变换后再乘逆变换,看是否回到原点,同时检查旋转块满足正交性且行列式为1。 对闭链机构,沿不同链条抵达同一刚体得到的变换必须一致,因而还需要闭环约束。对柔性机械臂、齿隙和接触变形,单一刚体运动链只能描述理想几何,不能预测实际负载下的偏移。 理解这篇文章最需要的五个概念是:刚体变换描述位置与朝向;坐标系规定数值的参照;齐次坐标统一旋转和平移;关节变量描述允许运动;矩阵乘法顺序对应链条中的组合顺序。 | 原有问题 | 作者改动 | 为什么有效 | 证据 | 代价与局限 | |---|---|---|---|---| | 空间机构关系难系统表示 | 用统一记号组织矩阵关系 | 局部关系可组合 | 原摘要及机构例证说明 | 约定必须一致,不能替代标定与动力学 | ## 七、自测与参考答案 **问题1:为什么D-H只有四个参数,却没有丢掉必要的相邻连杆信息?** 参考答案:它不是描述任意给定的两个坐标系,而是按照关节轴结构选择坐标系。选择约定消除了部分任意性,留下描述相邻轴关系和关节运动的参数。若坐标系未按该规则建立,四参数形式未必适用。 **问题2:两个程序使用同一张参数表却得到不同末端位置,首先应该检查什么?** 参考答案:先检查标准与改进D-H、变换方向、角度单位、轴索引及基座/工具偏移。不要立即归因于浮点误差。用单关节与两连杆可手算情形逐项验证,可以定位是约定不同还是计算错误。 **问题3:正向运动学完全正确,末端仍偏了5毫米,是否说明论文方法失效?** 参考答案:不一定。代码可能准确计算了理想模型,但实际连杆长度、零位和工具坐标有误,或负载导致变形。应比较测量与模型假设,先标定,再判断是否需要弹性模型;几何求值准确与硬件定位准确是两层结论。