第二章 运动学基础:D-H参数法、正运动学求解、逆运动学求解、双臂闭链运动学约束
各位工程师朋友,大家好。欢迎来到《人形机器人双臂协作抓取技术实战》的第二讲。
今天我们要啃的这块骨头,是机器人学里最核心、也最绕不开的内容——运动学。说白了,就是研究机器人怎么动、动到哪里去的问题。我当年刚入行时,觉得这东西就是一堆矩阵乘法,枯燥得很。直到第一次调试双臂协作时,两个手臂互相打架,我才意识到——嗯,运动学没搞透,后面全是坑。
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分别是左右手到物体的固定变换。这个等式必须时刻成立。
我刚开始做双臂协作时,犯过一个低级错误:分别求解左右臂的逆运动学,然后直接让它们同时运动。结果呢?两个手臂各走各的,物体被扯得七零八落。后来我才意识到,必须把闭链约束纳入运动学求解中。
具体做法是:
- 选定一个主臂(比如左臂),按单臂方式规划轨迹
- 根据闭链约束,推导从臂(右臂)的末端位姿
- 求解从臂的逆运动学,得到关节角度
- 验证约束是否满足,必要时进行修正
核心思想:双臂闭链运动学,本质上是一个带等式约束的优化问题。自由度从两个臂的独立自由度之和,降为它们的和减去闭链约束的自由度。对于人形机器人,这个约束通常有6个(3个位置+3个姿态),所以总自由度会减少6。
知识体系总览
下面这张图是我自己整理的本章知识结构,方便大家对照学习:
本章小结
运动学是双臂协作的基石。D-H参数是描述工具,正运动学是正向映射,逆运动学是反向求解,闭链约束是双臂协作的核心。这四个知识点环环相扣,缺一不可。
我个人建议的学习路径是:先拿一个简单的2自由度臂练手,手算D-H参数和正运动学。然后扩展到6自由度,用代码实现逆运动学求解。最后再挑战双臂闭链约束。别一上来就搞复杂的,容易劝退。
好了,这一章就到这里。记住:运动学搞扎实了,后面的轨迹规划、力控制才能站得住脚。咱们下一章见。
小提示:如果你在推导D-H参数时拿不准,可以先用一个已知构型的机器人(比如UR5)来验证。网上有现成的D-H参数表,对照着做一遍,很快就能找到感觉。
可可精品资料库