第10章 正向运动学计算

码枢沄社 · 嵌入式体系化教程平台
进阶 👤 已理解机器人关节与坐标系变换的开发者 🔧 计算机器人末端执行器的精确位置
本章你将学到
  • 正向运动学的定义与核心作用
  • DH参数法的原理与建模步骤
  • 串联机器人正向运动学的计算流程
核心概念DH参数变换矩阵链乘

想象一下,你告诉一个机械臂“关节1转30度,关节2转45度”,它如何知道自己手掌(末端)最终伸到了哪里?正向运动学就是回答这个问题的数学工具。它根据已知的机器人关节角度,计算出末端执行器在空间中的位置和姿态。

技术定义:正向运动学(Forward Kinematics, FK)是机器人学中,通过已知的机器人连杆几何参数和关节变量(如旋转角度、平移距离),求解机器人末端执行器相对于基座坐标系的位置和姿态的过程。

正向运动学是机器人控制、路径规划和仿真的基石。没有它,我们就无法将关节指令映射为末端在三维空间中的实际运动。

DH参数法:描述机器人结构的标准语言

要计算正向运动学,首先需要一种标准化的方法来描述机器人连杆和关节之间的几何关系。Denavit-Hartenberg(DH)参数法就是最广泛使用的建模工具。它用四个参数来唯一确定相邻连杆坐标系之间的变换关系。

连杆 i-1
关节 i
连杆 i
DH参数描述此变换
坐标系 {i-1}
坐标系 {i}

四个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轴的角度

对于旋转关节,关节转角θi是变量,其他三个是固定常数。对于平移关节,关节偏距di是变量。这四个参数定义了一个从坐标系{i-1}到坐标系{i}的标准变换。

常见误区

  • 坐标系定义混乱:DH参数法的前提是严格按照规则建立每个连杆坐标系。如果坐标系建错了,后续所有计算都是错的。我在一个六轴机械臂项目上,曾因为一个坐标系的Z轴方向设反,导致仿真中末端轨迹完全错乱。
  • 参数a和α的下标混淆:注意连杆长度ai-1和扭角αi-1的下标是“i-1”,它们描述的是连杆i-1本身的几何特征。而di和θi的下标是“i”,与关节i相关。
  • 忽略零位定义:关节转角θi的零位(零点)必须明确定义,通常对应于机器人“归零”或“标定”时的位置。所有角度计算都基于这个零位。

从DH参数到变换矩阵

一旦获得了相邻坐标系间的四个DH参数,就可以构造出齐次变换矩阵 i-1iT。这个矩阵描述了如何将坐标系{i}中的点,变换到坐标系{i-1}中表示。

标准DH参数法对应的变换由四个顺序变换组成:

绕Zi-1转θi
沿Zi-1移di
沿Xi移ai-1
绕Xi转αi-1

将这四次变换的矩阵按顺序相乘,就得到了最终的 i-1iT 矩阵。其通用形式如下(其中cθ表示cosθ,sθ表示sinθ,cα表示cosα,sα表示sinα):

i-1T = [
[ cθ<sub>i</sub>,   -sθ<sub>i</sub>*cα<sub>i-1</sub>,    sθ<sub>i</sub>*sα<sub>i-1</sub>,     a<sub>i-1</sub>*cθ<sub>i</sub> ],
[ sθ<sub>i</sub>,    cθ<sub>i</sub>*cα<sub>i-1</sub>,   -cθ<sub>i</sub>*sα<sub>i-1</sub>,     a<sub>i-1</sub>*sθ<sub>i</sub> ],
[ 0,         sα<sub>i-1</sub>,          cα<sub>i-1</sub>,           d<sub>i</sub>      ],
[ 0,         0,               0,            1      ]
]

这个矩阵的左上角3x3部分是旋转矩阵,描述了姿态变换;右边3x1部分是位置向量,描述了原点平移。对于每个关节i,你只需要代入其DH参数和当前的关节变量(θi或di),就能算出这个变换矩阵。

编者提示:实际开发中,大部分团队会选择成熟的机器人库(如ROS的KDLTRAC-IKpybullet)来处理运动学计算,而不是自己从头实现矩阵乘法。但理解底层原理至关重要,尤其是当你需要集成非标机械臂或排查奇异点问题时。我曾遇到一个案例,库函数计算的结果在某个姿态附近跳动,最后排查发现是提供的DH参数中某个α角符号错了,库只管计算,不管参数对错。

串联机器人正向运动学计算流程

对于一个由n个关节串联而成的机器人(如常见的六轴机械臂),其末端执行器坐标系{n}相对于基座坐标系{0}的变换,就是所有相邻连杆变换矩阵的连续乘积。

计算公式为:

0nT = 01T * 12T * 23T * ... * n-1nT

计算步骤非常清晰:

  1. 建模:为机器人每个连杆建立坐标系,确定所有DH参数(常数a, α, d和变量θ或d)。
  2. 获取关节状态:读取当前所有关节的位置(角度或位移)。
  3. 计算单步变换:对每个关节i,根据其DH参数和关节状态,计算 i-1iT。
  4. 矩阵链乘:将所有单步变换矩阵按顺序相乘,得到 0nT。
  5. 提取位姿:从 0nT 中提取出末端的位置向量(矩阵第4列前3行)和旋转矩阵(矩阵左上角3x3部分)。

让我们通过一个极简的例子——一个在平面内运动的2连杆机械臂(RR机构),来直观感受这个过程。

2连杆平面机械臂模型

  • 关节:两个旋转关节(J1, J2)
  • DH参数:a1=连杆1长度, a2=连杆2长度, 其余α,d均为0。
  • 变量:关节角θ1, θ2

计算单步变换

  • 01T:仅含绕Z0转θ1,沿X1移a1。
  • 12T:仅含绕Z1转θ2,沿X2移a2。

链乘结果

  • 位置X = a1*cθ1 + a2*c(θ1+θ2)
  • 位置Y = a1*sθ1 + a2*s(θ1+θ2)
  • 姿态:绕Z轴旋转(θ1+θ2)

这个结果非常直观:末端点的X坐标是两段连杆在X方向投影之和,Y坐标同理,而最终姿态就是两个关节角度的叠加。对于更复杂的6轴空间机械臂,虽然矩阵运算复杂,但原理完全相同。

正向运动学的应用与局限

正向运动学计算是机器人众多功能的基础模块。

然而,正向运动学有一个核心局限:它是单向的。给定关节角,它能唯一确定末端位姿;但给定一个期望的末端位姿,它无法直接告诉你关节角应该怎么转。这就是逆向运动学要解决的问题。此外,正向运动学本身不处理关节限位、连杆碰撞、奇异点等问题,这些需要在应用层额外处理。

性能考虑:在实时控制循环中(如500Hz频率),正向运动学的计算速度必须足够快。优化方法包括预先计算三角函数、利用矩阵的稀疏性、或使用固定点运算。对于标准6轴工业机器人,其正向运动学公式往往被优化成解析形式,直接代入关节角计算末端坐标,而不是进行通用的6次4x4矩阵乘法。

动手试一试

假设你有一个简单的3自由度机械臂,所有关节轴线平行(类似于SCARA机器人的前三个关节)。已知DH参数如下表(长度单位:米):

关节 iai-1αi-1diθi
1000.3θ1 (变量)
20.2500θ2 (变量)
30.1500θ3 (变量)
  1. 请写出从基座{0}到连杆3末端{3}的总变换矩阵 03T 的表达式(用θ1, θ2, θ3表示)。
  2. 如果当前关节角度为 θ1=30°, θ2=45°, θ3=-15°,请计算末端执行器原点在基座坐标系{0}中的(X, Y, Z)坐标。(提示:只需计算位置部分,可使用计算器)。
  3. 思考:这个机器人的末端姿态(旋转矩阵)有什么特点?为什么?

检验你的理解

  1. 判断题:正向运动学是指根据机器人末端期望位姿,求解所需关节角度的过程。
  2. 选择题:在标准DH参数法中,描述“连杆i-1”自身几何特征的参数是:
    A. ai 和 αi
    B. ai-1 和 αi-1
    C. di 和 θi
    D. di-1 和 θi-1
  3. 判断题:对于一个6轴旋转关节机械臂,其末端相对于基座的位置只与前三个关节的角度有关。

本章小结

  • 正向运动学是已知关节变量求末端位姿的“正向”计算过程,是机器人控制的起点。
  • DH参数法用四个参数(a, α, d, θ)标准化描述了相邻连杆坐标系的变换关系,是运动学建模的通用语言。
  • 变换矩阵链乘是正向运动学的核心计算,将各个关节的局部变换连续相乘,得到末端相对于基座的整体变换。
  • 正向运动学计算结果是唯一的,但它不能解决“如何到达某个位姿”的问题,那是逆向运动学的范畴。
  • 在实际应用中,理解原理有助于正确使用运动学库、调试参数和排查异常。
← 上一章 返回目录 下一章 →