2. 机械臂运动学基础:正运动学(DH参数法)、逆运动学求解、工作空间分析
好,咱们进入正题。运动学,说白了就是研究机械臂怎么动,但不关心它为什么能动。你给它一组关节角度,它就知道末端在哪儿——这叫正运动学。反过来,你告诉它末端要去哪儿,它算出一组关节角度——这叫逆运动学。这两件事,是机器人学里最基础、也最绕不开的内容。
我个人习惯,每次拿到一个新机械臂,第一件事就是建DH模型。为什么?因为DH参数法把复杂的空间变换,简化成了四个参数。你想想看,本来要算一堆旋转平移矩阵,现在只要填四个数,多清爽。
2.1 正运动学:DH参数法
DH参数法,全称是Denavit-Hartenberg参数法。它用四个参数来描述相邻两个连杆之间的位姿关系:
- θᵢ:绕Z轴旋转的角度(关节角)
- dᵢ:沿Z轴平移的距离(连杆偏距)
- aᵢ:沿X轴平移的距离(连杆长度)
- αᵢ:绕X轴旋转的角度(连杆扭角)
嗯,这里要注意:DH参数有两种约定——标准DH和改进DH。我在项目中遇到过,有人混用了这两种,结果算出来的末端位姿完全不对。我个人建议,初学者先死磕一种,比如标准DH,用熟了再说。
标准DH的变换矩阵长这样:
T = [cosθ -sinθ·cosα sinθ·sinα a·cosθ
sinθ cosθ·cosα -cosθ·sinα a·sinθ
0 sinα cosα d
0 0 0 1]
把每个关节的变换矩阵连乘起来,就得到末端相对于基座的位姿:
T_0n = T_01 · T_12 · T_23 · ... · T_(n-1)n
举个例子,一个六轴机械臂,你给它六个关节角,乘完六个矩阵,末端的位置和姿态就全出来了。这就是正运动学——直接、确定、没有歧义。
核心要点:正运动学是唯一的。给定一组关节角,末端位姿是确定的。这一点和逆运动学完全不同。
2.2 逆运动学求解
逆运动学就麻烦多了。你告诉末端要去(x, y, z),它要算出六个关节角分别是多少。问题是——解可能不存在,可能不唯一,甚至可能有无穷多解。
为什么会这样?因为机械臂的构型决定了它的能力边界。比如一个五轴臂,你让它去一个空间中的点,可能有2种姿势都能到。六轴臂更复杂,有时候同一个位置,肘关节可以朝上也可以朝下。
逆运动学的求解方法,我归纳为三类:
- 解析法:通过几何关系直接推导出公式。速度快,但只适用于特定构型(比如有相邻关节轴相交的臂)。
- 数值法:用迭代逼近的方式求解,比如牛顿-拉夫森法。通用性强,但可能陷入局部最优。
- 查表法:提前算好所有可能的解,运行时直接查。适合固定场景,但精度受限于采样密度。
我曾经在一个焊接项目里,用解析法死活算不出解,后来发现是机械臂的腕部关节设计有偏移。换成数值法,迭代了十几步就收敛了。嗯,这里要提醒一句:数值法一定要设好迭代次数上限和容差,否则可能死循环。
避坑指南:我曾经在调试时,逆解算出来的关节角突然跳变,导致机械臂猛甩了一下。后来发现是解的选择策略有问题——没有做连续性检查。记住:相邻时刻的解要尽量接近,不能随便选。
2.3 工作空间分析
工作空间,就是机械臂末端能到达的所有点的集合。说白了,你画一个三维区域,里面是它能碰到的,外面是它够不着的。
工作空间分析有什么用?我举个例子:你要在一条流水线上放一个机械臂,得先知道它能不能覆盖所有工位。如果工作空间不够,要么换臂,要么重新布局。
工作空间分两种:
- 可达工作空间:末端至少能以一种姿态到达的点集。
- 灵巧工作空间:末端能以任意姿态到达的点集。这个范围通常比可达空间小得多。
分析方法主要有:
- 蒙特卡洛法:随机采样关节角,计算末端位置,画点云。简单粗暴,适合快速可视化。
- 边界搜索法:在关节空间里搜索边界点,然后拟合曲面。精度高,但计算量大。
- 解析法:对特定构型,可以直接推导出工作空间的边界方程。
我个人习惯用蒙特卡洛法做初步分析。随机生成几万个关节角组合,算末端位置,然后画成三维散点图。一眼就能看出工作空间的形状和空洞。
注意:工作空间分析时,一定要考虑关节限位。很多机械臂的关节不是能转360度的,比如J2关节可能只有-135°到+135°。忽略限位,算出来的工作空间会偏大,实际用起来会出问题。
知识体系总览
下面这张图,是我自己画的知识结构。你看一眼,就能把正运动学、逆运动学、工作空间的关系理清楚。
你看这张图,从左到右,逻辑很清晰。先学会正运动学,才能理解逆运动学。有了逆运动学,才能分析工作空间。这三者是递进关系,缺一不可。
总结一下:正运动学是基础,逆运动学是核心,工作空间是约束。做机械臂项目,这三块必须吃透。我见过太多人,上来就调PID、写轨迹规划,结果连末端位姿都算不对——那后面的工作全是白费。
好了,这一章的内容就到这里。运动学是机械臂的「语言」,你掌握了它,才能和机械臂好好沟通。下一章我们会聊动力学——那又是另一番天地了。