机器人运动学基础:正运动学与逆运动学、DH参数模型、关节空间与笛卡尔空间

各位工程师朋友,大家好。今天我们来聊聊机器人运动学。说实话,这是机器人控制里最基础、也最绕不开的一块。我当年刚入行时,觉得这东西就是套公式,后来在调试一个六轴协作臂时,才真正体会到——运动学没搞透,后面标定、轨迹规划全是空中楼阁。

咱们这一章,就围绕三个核心问题展开:正运动学(给定关节角度,求末端位姿)、逆运动学(给定末端位姿,求关节角度)、以及DH参数模型(怎么用最少的参数描述机器人构型)。最后再聊聊关节空间和笛卡尔空间的区别——这两个概念搞混了,调试时容易出大问题。

核心观点:运动学是机器人控制的地基。地基不稳,上层算法再花哨也没用。

1. 正运动学:从关节到末端

正运动学,说白了就是:我知道每个关节转了多少度,求出手臂末端在空间里的位置和姿态。这其实是个“正向推导”的过程。

我习惯用齐次变换矩阵来串联每个关节的变换。每个关节对应一个4x4矩阵,把相邻两个坐标系的变换关系写进去。然后从基座开始,一路乘到末端,就得到了末端位姿。

举个例子,一个简单的两连杆平面臂:

// 伪代码:两连杆正运动学
// 关节角度 theta1, theta2,杆长 L1, L2
x = L1 * cos(theta1) + L2 * cos(theta1 + theta2)
y = L1 * sin(theta1) + L2 * sin(theta1 + theta2)
// 末端姿态角 phi = theta1 + theta2

嗯,这里要注意:实际工业机器人往往有6个关节,矩阵乘法会变得很繁琐。但核心逻辑不变——从基座到末端,逐层变换。

我的经验:写正运动学代码时,建议先用MATLAB或Python的sympy做符号推导,验证无误后再转成C++。我在项目里吃过一次亏——手算的矩阵乘法漏了一个负号,导致机器人画圆时轨迹偏了5mm。

2. 逆运动学:从末端到关节

逆运动学就麻烦多了。给定末端位姿,反求每个关节的角度。你想想看,正运动学是唯一的,但逆运动学往往有多解,甚至无解。

为什么会这样?因为机器人构型决定了关节空间的映射关系。比如一个六轴臂,给定同一个末端位姿,可能有8组关节角度解。你需要根据关节限位、避障、能耗等因素选一组。

我常用的解法分两类:

  • 解析法:针对特定构型(如PUMA 560),通过几何关系推导出封闭解。速度快,适合实时控制。
  • 数值法:用迭代优化(如牛顿-拉夫森法)逼近解。通用性强,但计算量大,且可能陷入局部最优。

我个人习惯:能解析就解析,解析不了再用数值法。曾经在调试一个七轴冗余臂时,解析法搞不定,最后用了带阻尼的最小二乘法才稳住。

避坑指南:逆运动学求解时,一定要检查奇异位形。比如腕部关节对齐时,雅可比矩阵会降秩,导致解不稳定。我曾经在产线上遇到过——机器人走到某个位置突然“抽搐”,就是因为没处理奇异点。

3. DH参数模型:标准化描述

DH参数(Denavit-Hartenberg)是描述机器人连杆和关节关系的标准方法。它用4个参数就能唯一确定相邻两个坐标系的关系:

参数 含义 我的理解
ai-1 连杆长度 两个关节轴之间的公垂线距离
αi-1 连杆扭转角 两个关节轴之间的夹角
di 连杆偏距 沿关节轴方向的偏移
θi 关节角 绕关节轴的旋转角度(对旋转关节是变量)

建立DH模型时,有个关键点:坐标系怎么摆。标准DH和改进DH的区别就在于坐标系附着的位置。我建议初学者先统一用一种(比如标准DH),别混着用,否则矩阵乘出来全是错的。

小技巧:画DH坐标系时,用不同颜色标出X轴和Z轴。Z轴沿关节旋转方向,X轴沿公垂线方向。我在白板上画了不下50遍才彻底搞明白。

4. 关节空间 vs 笛卡尔空间

这两个概念,说白了就是:你在哪个坐标系里思考问题。

  • 关节空间:每个关节的角度/位置组成一个向量。比如六轴臂的关节空间是6维的。控制简单,每个关节独立运动。
  • 笛卡尔空间:末端执行器在三维空间中的位置(x,y,z)和姿态(roll,pitch,yaw)。直观,但控制复杂。

我遇到过不少新手,上来就想在笛卡尔空间里规划轨迹。结果发现:末端走直线时,关节角度变化是非线性的,很容易超出关节限位或碰到奇异点。

我的建议是:路径规划在笛卡尔空间做,轨迹插补在关节空间做。先规划出末端路径,然后逆解到关节空间,再对关节角度做平滑插值。

实战经验:在焊接机器人项目中,我们要求焊枪末端走直线。但直接做笛卡尔空间插值,关节速度会突变。后来改成:笛卡尔空间采样路径点,逆解到关节空间,再用五次多项式插值关节角度。效果立竿见影。

5. 知识体系总览

下面这张图,是我自己梳理的运动学知识框架。你可以把它当作本章的“地图”:

机器人运动学知识体系 正运动学 关节角度 → 末端位姿 齐次变换矩阵乘法 唯一解,直接计算 逆运动学 末端位姿 → 关节角度 多解/无解/奇异点 解析法 vs 数值法 DH参数模型 a, α, d, θ 四参数 标准DH / 改进DH 坐标系建立规则 关节空间 每个关节角度组成向量 控制简单,适合轨迹插补 笛卡尔空间 末端位置+姿态 直观,适合路径规划 核心:正运动学是基础,逆运动学是难点,DH参数是桥梁,空间选择看场景

这张图把本章的核心逻辑串起来了。你从正运动学入手,理解关节到末端的映射;然后攻克逆运动学,学会从末端反推关节;再用DH参数把机器人构型标准化;最后根据任务需求,在关节空间和笛卡尔空间之间灵活切换。

好了,这一章的内容就到这里。运动学是机器人控制的“内功”,练好了后面学标定、学动力学都会轻松很多。希望你能动手推导一遍DH矩阵,哪怕只是两连杆的模型——纸上得来终觉浅。

最后说一句:运动学公式看着多,但核心逻辑就一条——坐标系变换。把这条线抓住了,万变不离其宗。

可可精品资料库