DH参数 · 正运动学 返回
Robotics · Forward Kinematics

Denavit-Hartenberg参数与正运动学计算器

输入DH参数(α, a, d, θ),计算最多6自由度串联机器人臂的正运动学。内置PUMA/SCARA/UR预设。实时显示末端执行器的位置与姿态。

参数设置
预设
DH参数表
关节 α[°] a[mm] d[mm] θ[°]
关节角滑块
计算结果
X [mm]
Y [mm]
Z [mm]
Roll [deg]
Pitch [deg]
Yaw [deg]
工作空间半径 [mm]
自由度数
Dh
理论与主要公式

由各关节的DH参数构建变换矩阵:

$$^{i-1}T_i = \begin{bmatrix}c\theta_i & -s\theta_i & 0 & a_{i-1}\\ s\theta_i c\alpha_{i-1}& c\theta_i c\alpha_{i-1}& -s\alpha_{i-1}& -s\alpha_{i-1}d_i \\ s\theta_i s\alpha_{i-1}& c\theta_i s\alpha_{i-1}& c\alpha_{i-1}& c\alpha_{i-1}d_i \\ 0 & 0 & 0 & 1 \end{bmatrix}$$

正运动学:$T_{0n}= T_{01}\times T_{12}\times \cdots \times T_{(n-1)n}$

什么是DH参数与正运动学

🙋
DH参数是什么?听起来好复杂,是给机器人用的吗?
🎓
简单来说,DH参数就像给机器人手臂的每个关节发一张“身份证”。它用四个数字(a, α, d, θ)就能说清楚一个关节怎么转、怎么摆、离上一个关节有多远。比如在模拟器里,你试着拖动PUMA机器人预设的θ1滑块,就能看到第一个关节转动时,整个机器人的姿态和末端位置都跟着实时变化,这就是正运动学在计算。
🙋
诶,真的吗?那这四个数字具体是怎么决定机器人姿势的呢?
🎓
我们可以把机器人想象成用乐高积木搭的。`a`是这块积木的长度,`α`是这块积木的扭角,`d`是两块积木之间的偏移,`θ`就是关节转动的角度。工程现场常见的是,设计SCARA机器人时,会先设定好前三个参数(a, α, d),然后通过改变θ来控制它抓取东西。你可以在模拟器里切换到SCARA预设,然后只改变θ3,看看末端执行器在垂直方向上是如何移动的。
🙋
我懂了!那把这些关节的“身份证”信息组合起来,就能算出机器人手爪最后在哪,对吗?
🎓
完全正确!这个过程就是正运动学。我们把每个关节的变换矩阵像连乘一样组合起来,$^{0}T_N = ^{0}T_1 \cdot ^{1}T_2 \cdots ^{N-1}T_N$,最终得到的就是末端相对于机器人底座的位置和姿态。你试着在模拟器里为一个6轴机器人填满所有参数,然后改变任意一个θ,右侧的3D模型和位置坐标都会立刻更新,直观地展示这个计算过程。

物理模型与关键公式

Denavit-Hartenberg (DH) 方法的核心是定义相邻连杆坐标系之间的齐次变换矩阵。这个矩阵完全由四个DH参数决定:

$$^{i-1}T_i = \begin{bmatrix}\cos\theta_i & -\sin\theta_i \cos\alpha_{i-1}& \sin\theta_i \sin\alpha_{i-1}& a_{i-1}\cos\theta_i \\ \sin\theta_i & \cos\theta_i \cos\alpha_{i-1}& -\cos\theta_i \sin\alpha_{i-1}& a_{i-1}\sin\theta_i \\ 0 & \sin\alpha_{i-1}& \cos\alpha_{i-1}& d_i \\ 0 & 0 & 0 & 1 \end{bmatrix}$$

$a_{i-1}$ (连杆长度): 沿 $x_{i-1}$ 轴,从 $z_{i-1}$ 移动到 $z_i$ 的距离。
$\alpha_{i-1}$ (连杆扭角): 绕 $x_{i-1}$ 轴,从 $z_{i-1}$ 旋转到 $z_i$ 的角度。
$d_i$ (连杆偏距): 沿 $z_i$ 轴,从 $x_{i-1}$ 移动到 $x_i$ 的距离。
$\theta_i$ (关节角): 绕 $z_i$ 轴,从 $x_{i-1}$ 旋转到 $x_i$ 的角度(对于旋转关节是变量)。

正运动学通过连续相乘所有连杆变换矩阵,计算出末端执行器相对于基座坐标系的位置和姿态:

$$^{0}T_{tool}= ^{0}T_1 \cdot ^{1}T_2 \cdot ... \cdot ^{n-1}T_n \cdot ^{n}T_{tool}$$

这个最终的 $^{0}T_{tool}$ 是一个4x4矩阵。它的左上角3x3子矩阵是旋转矩阵,描述了末端的姿态;最右边一列的前三个元素是位置向量 $(p_x, p_y, p_z)$,描述了末端的位置。这就是模拟器右侧输出的位置和欧拉角的来源。

现实世界中的应用

工业机器人编程与离线仿真:在汽车焊接、喷涂生产线部署机器人前,工程师会在软件中根据DH参数建立虚拟模型,进行轨迹规划和碰撞检测,确保动作精确无误,避免在实际安装后发生昂贵的事故。

机器人操作系统(ROS)模型定义:ROS中广泛使用的URDF机器人描述文件,其关节和连杆的定义本质上就基于DH参数。本工具的计算逻辑可以帮助理解和验证URDF模型的正运动学是否正确。

多体动力学(MBD)与CAE分析:在进行机器人结构强度、振动或疲劳分析时,需要知道各关节在不同姿势下的载荷。通过DH参数和正运动学可以准确确定载荷施加的边界条件和位置,为有限元分析提供输入。

手术机器人及精密操控:像达芬奇手术机器人这样的精密设备,其运动学模型是控制算法的基础。DH参数确保了机械臂末端(手术工具)能够按照医生指令,以亚毫米级的精度在患者体内运动。

常见误解与注意事项

开始使用DH参数时,常常会遇到一些陷阱。首先一个主要的误解是认为“DH参数的定义在全球只有一种”。实际上,存在两种主流的约定:标准DH(Standard DH)和修正DH(Modified DH)。本工具采用标准DH,但其他教材或软件可能使用修正DH。参数值会完全不同,因此务必养成先确认所用约定的习惯。

其次,关于参数“a”和“α”的符号与方向。人们常认为连杆长度“a”总是正值,但根据坐标系设置方式,它也可能为负。例如,当关节旋转轴方向设置相反时就是如此。另外,扭转角“α”的符号由右手法则决定:拇指指向X轴方向,从Y轴向Z轴旋转的方向为正。如果弄错,机器人可能会像镜像一样做出相反的运动。

最后,作为一个实际注意事项,请留意奇异姿态下的计算结果。当机械臂完全伸直或多个关节轴排列在一条直线上时,即处于“奇异姿态”,数学上姿态可能无法唯一确定。在本工具中将PUMA预设模型的第4关节和第6关节设置为特定角度时,可以观察到末端执行器姿态(特别是滚转角)的急剧变化。这是计算上的问题而非工具缺陷,请务必心中有数。