2. 运动学基础

各位工程师朋友,大家好。欢迎来到《人形机器人双臂协作抓取技术实战》的第二讲。

今天我们要啃的这块骨头,是机器人学里最核心、也最绕不开的内容——运动学。说白了,就是研究机器人怎么动、动到哪里去的问题。我当年刚入行时,觉得这东西就是一堆矩阵乘法,枯燥得很。直到第一次调试双臂协作时,两个手臂互相打架,我才意识到——嗯,运动学没搞透,后面全是坑。

2.1 D-H参数法:给机器人关节“上户口”

先聊聊D-H参数法。这个方法由Denavit和Hartenberg两位老前辈提出,目的是用四个参数来唯一确定相邻两个关节之间的坐标变换关系。

我个人习惯把D-H参数理解为给每个关节“上户口”。四个参数分别是:

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

你可能会问:为什么是四个参数?少一个行不行?我在项目中遇到过类似的问题。有一次为了简化模型,我试图用三个参数来描述一个旋转关节,结果算出来的末端位置总是差那么几毫米。后来才发现,少了一个参数,自由度就不完整了。四个参数,一个都不能少。

关键点:D-H参数有两种约定——标准D-H和改进D-H。我个人更推荐改进D-H(也叫Craig版),因为它在处理树形结构(比如人形机器人)时更直观。记住:选一种,从头用到尾,别混着用。

2.2 正运动学求解:从关节空间到工作空间

正运动学,说白了就是:我知道每个关节转了多少度,求末端执行器在哪儿。

对于单臂来说,正运动学就是一连串的齐次变换矩阵相乘:

T_0^n = T_0^1 * T_1^2 * ... * T_{n-1}^n

其中每个T矩阵由D-H参数构建:

T_i^{i+1} = Rot_x(α_i) * Trans_x(a_i) * Rot_z(θ_i) * Trans_z(d_i)

写成矩阵形式就是:

| cosθ_i   -sinθ_i   0     a_i     |
| sinθ_i*cosα_i  cosθ_i*cosα_i  -sinα_i  -d_i*sinα_i |
| sinθ_i*sinα_i  cosθ_i*sinα_i   cosα_i   d_i*cosα_i  |
| 0          0          0     1        |

我记得第一次手算这个矩阵时,算了三遍才得到正确结果。后来我写了个Python脚本自动生成,省了不少时间。这里给大家一个建议:别手算,用符号计算工具(比如SymPy)来验证你的推导。

实战技巧:在调试双臂协作时,我习惯先单独验证每条臂的正运动学。让每个关节依次运动一个已知角度,观察末端位置是否与预期一致。这一步看似简单,但能帮你发现80%的配置错误。

2.3 逆运动学求解:从工作空间回到关节空间

逆运动学就更有意思了。已知末端位置和姿态,求每个关节的角度。这玩意儿没有通用解析解,尤其是对于人形机器人这种高自由度系统。

常用的方法有几种:

  • 解析法:适用于特定构型(如PUMA 560),速度快但通用性差
  • 数值法:基于雅可比矩阵的迭代求解,通用性强但可能陷入局部最优
  • 几何法:利用几何关系直接求解,适合低自由度系统

我曾经在一个双臂搬运项目中吃过亏。当时用了纯数值法求解逆运动学,结果在奇异点附近算法直接发散,机器人差点把自己拧成麻花。后来我改用解析法+数值法混合策略:先用解析法得到一个初始解,再用数值法微调。效果好了很多。

注意:逆运动学解不唯一!对于7自由度的人形臂,通常有无穷多组解。你需要额外约束(比如最小关节运动、避障等)来选出最优解。我一般用二次规划来加约束,效果还不错。

2.4 双臂闭链运动学约束:两只手怎么不打架

单臂运动学搞定了,双臂协作才是真正的挑战。闭链约束,说白了就是两只手同时抓住一个物体时,它们之间不能有相对运动。

假设左臂末端位姿为TL,右臂末端位姿为TR,物体坐标系为TO。那么约束条件就是:

T_L * T_{L2O} = T_R * T_{R2O}

其中TL2O和TR2O分别是左右手到物体的固定变换。这个等式必须时刻成立。

我刚开始做双臂协作时,犯过一个低级错误:分别求解左右臂的逆运动学,然后直接让它们同时运动。结果呢?两个手臂各走各的,物体被扯得七零八落。后来我才意识到,必须把闭链约束纳入运动学求解中。

具体做法是:

  1. 选定一个主臂(比如左臂),按单臂方式规划轨迹
  2. 根据闭链约束,推导从臂(右臂)的末端位姿
  3. 求解从臂的逆运动学,得到关节角度
  4. 验证约束是否满足,必要时进行修正

核心思想:双臂闭链运动学,本质上是一个带等式约束的优化问题。自由度从两个臂的独立自由度之和,降为它们的和减去闭链约束的自由度。对于人形机器人,这个约束通常有6个(3个位置+3个姿态),所以总自由度会减少6。

知识体系总览

下面这张图是我自己整理的本章知识结构,方便大家对照学习:

双臂协作运动学知识体系 D-H参数法 a, α, d, θ 正运动学 关节→末端位姿 逆运动学 末端位姿→关节 双臂闭链约束 T_L * T_{L2O} = T_R * T_{R2O} 解析法 数值法(雅可比迭代) 几何法 混合策略(推荐) 实战建议 先验证单臂正运动学 → 再求解单臂逆运动学 → 最后加入闭链约束 遇到问题先检查D-H参数,80%的错误都出在这里

本章小结

运动学是双臂协作的基石。D-H参数是描述工具,正运动学是正向映射,逆运动学是反向求解,闭链约束是双臂协作的核心。这四个知识点环环相扣,缺一不可。

我个人建议的学习路径是:先拿一个简单的2自由度臂练手,手算D-H参数和正运动学。然后扩展到6自由度,用代码实现逆运动学求解。最后再挑战双臂闭链约束。别一上来就搞复杂的,容易劝退。

好了,这一章就到这里。记住:运动学搞扎实了,后面的轨迹规划、力控制才能站得住脚。咱们下一章见。

小提示:如果你在推导D-H参数时拿不准,可以先用一个已知构型的机器人(比如UR5)来验证。网上有现成的D-H参数表,对照着做一遍,很快就能找到感觉。

可可精品资料库