3、机器人运动学基础:正运动学与逆运动学、DH参数法、四足机器人腿构型分析
各位好,欢迎来到第三章。
这一章,我们聊聊机器人运动学。说白了,就是研究机器人怎么动,而不关心它为什么动。你想想看,要让四足机器人站稳、走路,首先得知道它的腿在什么位置,关节该转多少度。这就是运动学干的事。
我个人习惯把运动学分成两块:正运动学和逆运动学。正运动学是已知关节角度,求末端位置;逆运动学正好反过来。这两块是后续所有控制算法的基础,绕不开。
3.1 正运动学:从关节到足端
正运动学,听起来高大上,其实逻辑很简单。你给每个关节一个角度值,通过几何关系算出足端在空间中的坐标。
我记得刚入行时,带我的老工程师说:“正运动学就是一条链,从基座一路传到末端。” 四足机器人的每条腿,本质上就是一个开链连杆机构。从髋关节到膝关节,再到踝关节(或者直接到足端),每个关节的转动都会改变足端的位置。
核心思路: 从基座坐标系出发,依次经过每个关节的旋转和平移变换,最终得到足端在基座坐标系下的坐标。
数学上,我们用齐次变换矩阵来描述这种关系。每个关节对应一个矩阵,把所有矩阵乘起来,就得到了末端位姿。
举个例子,一个简化的二自由度腿(髋关节+膝关节):
// 伪代码:二自由度腿正运动学
// 输入:髋关节角度 q1,膝关节角度 q2,连杆长度 L1, L2
// 输出:足端位置 (x, z)
x = L1 * sin(q1) + L2 * sin(q1 + q2);
z = L1 * cos(q1) + L2 * cos(q1 + q2);
嗯,这里要注意,实际四足机器人的腿是三维的,还有侧摆关节(髋关节的偏航自由度)。但原理完全一样,只是多了一个旋转轴。
3.2 逆运动学:从足端到关节
逆运动学就有点意思了。它解决的是:我知道足端该踩到哪,关节该转多少度?
这在实际控制中更常用。比如,你想让机器人迈一步,足端轨迹规划好了,然后通过逆运动学反算出每个关节的目标角度,发给电机去执行。
逆运动学比正运动学难,因为解不唯一,甚至可能无解。我曾在项目中遇到过一个问题:足端目标点超出了机械臂的工作空间,逆运动学直接报错。当时排查了半天,才发现是轨迹规划时没做可达性检查。
避坑指南: 做逆运动学求解时,一定要先判断目标点是否在可达空间内。否则,轻则算法报错,重则机器人关节撞到限位。
求解方法主要有两种:
- 解析法: 通过几何关系直接推导出角度公式。速度快,精度高,但只适用于特定构型。
- 数值法: 比如牛顿-拉夫森法、雅可比迭代法。通用性强,但计算量大,且可能陷入局部最优。
对于四足机器人,我建议优先用解析法。因为每条腿的构型相对固定,解析法效率高,适合实时控制。
3.3 DH参数法:标准化的建模工具
说到运动学建模,就不得不提DH参数法。这是机器人学里最经典的建模方法之一。
DH参数法,说白了,就是一套标准流程,用来定义相邻连杆之间的坐标变换。它用四个参数来描述:
| 参数 | 符号 | 含义 |
|---|---|---|
| 连杆长度 | ai-1 | 沿xi-1轴,从zi-1到zi的距离 |
| 连杆扭角 | αi-1 | 绕xi-1轴,从zi-1到zi的转角 |
| 连杆偏距 | di | 沿zi轴,从xi-1到xi的距离 |
| 关节角 | θi | 绕zi轴,从xi-1到xi的转角 |
有了这四个参数,你就可以机械地建立每个关节的变换矩阵。我个人习惯用改进型DH参数(Craig版本),因为它在处理树形结构时更直观。
注意: DH参数有两种主流版本——标准型(Classic)和改进型(Modified)。两者的坐标系定义顺序不同,千万别混用。我见过有人把两种版本混在一起,结果算出来的运动学全是错的。
3.4 四足机器人腿构型分析
四足机器人的腿构型,直接决定了运动学模型的复杂度和控制难度。常见的构型有以下几种:
- 哺乳动物型: 膝关节向后弯曲(如狗、马)。这种构型爆发力强,适合奔跑。
- 爬行动物型: 膝关节向两侧伸展(如蜥蜴)。稳定性好,但速度慢。
- 昆虫型: 多关节,自由度多。灵活,但控制复杂。
目前主流四足机器人(如Spot、ANYmal、我们的仿生狗)大多采用哺乳动物型。每条腿通常有3个自由度:
- 髋关节侧摆: 控制腿在横向的摆动。
- 髋关节前摆: 控制腿在纵向的前后摆动。
- 膝关节前摆: 控制小腿的屈伸。
这种构型,说白了,就是模仿真实动物的运动方式。我在做早期原型机时,试过用4自由度腿,结果控制算法复杂度翻倍,效果还没3自由度好。后来我学乖了,够用就好。
下面这张图,展示了四足机器人单腿的典型构型和坐标系定义:
从图中可以看到,每个关节都对应一个坐标系。通过DH参数法,我们可以建立从基座到足端的完整变换链。这就是运动学建模的物理基础。
总结一下本章要点:
- 正运动学:关节角度 → 足端位置,直接相乘即可。
- 逆运动学:足端位置 → 关节角度,优先用解析法。
- DH参数法:标准化建模工具,注意版本统一。
- 腿构型:3自由度哺乳动物型是主流,够用就好。
嗯,运动学基础就聊到这儿。这些内容看起来简单,但实际写代码时很容易出错。我建议你动手推导一遍自己机器人的正逆运动学,哪怕只是纸上画一画,也比光看强。