3、DH参数法:标准DH与改进DH、连杆参数定义、建立连杆坐标系

聊到机械臂的运动学,DH参数法是个绕不开的话题。说实话,我刚入行那会儿,也被标准DH和改进DH搞得有点晕。后来在项目里踩过几次坑,才真正搞明白它们之间的区别。

今天我就把这块内容掰开了讲。你跟着我走一遍,保证能理清楚。

3.1 什么是DH参数法?

DH参数法,说白了就是用四个参数来描述两个相邻连杆之间的相对位置关系。你想想看,一个六轴机械臂有六个关节,每个关节连接两个连杆。如果我们能把这六个关节的关系都描述清楚,那整个机械臂的运动学模型就建立起来了。

这四个参数分别是:

  • 连杆长度 ai-1:沿着 xi-1 轴,从 zi-1 到 zi 的距离
  • 连杆扭角 αi-1:绕着 xi-1 轴,从 zi-1 到 zi 的转角
  • 连杆偏距 di:沿着 zi 轴,从 xi-1 到 xi 的距离
  • 关节角 θi:绕着 zi 轴,从 xi-1 到 xi 的转角

核心要点:这四个参数中,a 和 α 是连杆的固定属性,d 和 θ 则与关节运动相关。对于旋转关节,θ 是变量;对于移动关节,d 是变量。

3.2 标准DH vs 改进DH

这里有个容易混淆的点。标准DH(Standard DH)和改进DH(Modified DH)到底差在哪?

我个人的理解是这样的:

  • 标准DH:坐标系 i 固定在连杆 i 的远端(靠近关节 i+1 那一端)。变换顺序是:绕 xi-1 转 αi-1 → 沿 xi-1 移 ai-1 → 绕 zi 转 θi → 沿 zi 移 di
  • 改进DH:坐标系 i 固定在连杆 i 的近端(靠近关节 i 那一端)。变换顺序是:绕 zi-1 转 θi → 沿 zi-1 移 di → 绕 xi 转 αi → 沿 xi 移 ai

我在项目中遇到过一个问题:用标准DH建模时,如果两个相邻关节的轴线平行,会出现参数奇异。后来换成改进DH,这个问题就解决了。所以我现在做项目,基本都用改进DH。

我的建议:如果你刚开始学,建议先用改进DH。它更符合直觉,而且处理平行轴时更稳定。等熟练了,再回头看看标准DH,理解它们的区别。

3.3 建立连杆坐标系的步骤

建立坐标系是DH参数法中最关键的一步。我总结了一个四步法,你照着做就行:

  1. 找轴线:画出所有关节的旋转轴线(z 轴)
  2. 定原点:相邻两轴线的交点作为坐标系原点
  3. 定 x 轴:沿着两轴线的公垂线方向
  4. 定 y 轴:用右手定则确定

嗯,这里要注意:如果两轴线平行,公垂线不唯一,这时候取过前一坐标系原点的公垂线。

我曾经在调试一个六轴协作机器人时,就是因为坐标系建立不规范,导致正解算出来的位置总是差几毫米。后来重新梳理了一遍坐标系,问题就解决了。所以这一步千万别马虎。

3.4 知识体系结构图

下面这张图展示了DH参数法的核心逻辑,我建议你多看几遍:

DH参数法知识体系 DH参数法 四个连杆参数 建立连杆坐标系 标准DH vs 改进DH a:连杆长度 α:连杆扭角 d:连杆偏距 θ:关节角 找轴线(z轴) 定原点(交点) 定x轴(公垂线) 定y轴(右手定则) 坐标系在远端 坐标系在近端 先旋转后平移 先平移后旋转 应用:建立变换矩阵 → 正解计算

3.5 变换矩阵的推导

有了坐标系和参数,下一步就是推导变换矩阵。以改进DH为例,相邻连杆的变换矩阵为:

T = Rot(z, θ) · Trans(z, d) · Trans(x, a) · Rot(x, α)

写成矩阵形式:

T = [cosθ   -sinθ·cosα   sinθ·sinα   a·cosθ]
    [sinθ    cosθ·cosα  -cosθ·sinα   a·sinθ]
    [0        sinα        cosα        d     ]
    [0        0           0           1     ]

这个矩阵就是连接两个相邻连杆的桥梁。把六个关节的变换矩阵连乘起来,就得到了末端执行器相对于基座标系的位姿。

注意:标准DH和改进DH的变换矩阵顺序不同,千万别混用。我曾经看到有人把标准DH的参数套进改进DH的矩阵里,结果算出来的位置完全不对。记住:参数和矩阵必须配套使用。

3.6 一个简单的例子

假设我们有一个两连杆机械臂,两个关节都是旋转关节。用改进DH建立参数表:

连杆 i ai-1 αi-1 di θi
1 0 0 0 θ1
2 L1 0 0 θ2

把参数代入变换矩阵,然后连乘,就能得到末端位置。这个过程虽然看起来繁琐,但一旦你理解了矩阵乘法的几何意义,就会发现其实很直观。

小技巧:写代码实现时,建议先把变换矩阵封装成一个函数,输入四个参数,输出4x4矩阵。这样代码会干净很多,也方便调试。

好了,DH参数法的核心内容就这些。你先把坐标系建立和参数定义搞明白,后面正解逆解的计算就水到渠成了。


专注资料整理