2. 运动学基础(一)
各位同学,欢迎来到第二章。
说实话,做四足机器人这么多年,我最大的体会就是:运动学是步态规划的基石。你想想看,想让机器人走起来,首先得知道它的腿能伸到哪儿、关节怎么转。这就是正运动学要干的事。
这一章,咱们就啃下这块硬骨头。我会用DH参数法,把四足机器人那条复杂的腿,拆解成一个个清晰的数学关系。
2.1 为什么我们需要正运动学?
正运动学,说白了就是:给定关节角度,求末端位置。
举个例子。你让机器人的髋关节转30度,膝关节转45度,那它的脚底到底在空间哪个点?这就是正运动学要回答的问题。
我在做早期原型机时,遇到过这么个坑:电机反馈的角度明明是对的,但机器人走路就是踉踉跄跄。后来一查,是运动学模型里一个符号搞反了。嗯,从那以后,我每次建模都会手算一遍末端位置,再跟仿真对比。
2.2 DH参数法:机器人学界的“通用语言”
DH参数法,全称Denavit-Hartenberg参数法。它提供了一套标准流程,让你能把任意复杂的连杆机构,用四个参数描述清楚。
我个人习惯把DH参数法比作“搭积木”。每个关节和连杆就是一块积木,四个参数就是积木的接口尺寸。你只要按顺序搭好,末端位置自然就出来了。
2.2.1 四个参数的含义
对于四足机器人的单腿,我们通常把它简化成一个三连杆机构(髋关节、大腿、小腿)。每个连杆对应一组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的转角 | 这就是我们控制的电机角度 |
2.3 四足机器人单腿的DH建模实战
好,理论说完了,咱们直接上手。以最常见的串联式腿部构型为例,它有三个旋转关节:横滚(侧摆)、俯仰(前摆)、膝关节(后摆)。
2.3.1 建立坐标系
坐标系怎么建?我有个笨办法:从基座开始,一个关节一个关节地画。
- 基坐标系 {0}:固定在机身与腿的连接处。z0轴竖直向上,x0轴指向机器人前进方向。
- 坐标系 {1}:固定在髋关节横滚轴。z1轴沿横滚轴方向(前后方向)。
- 坐标系 {2}:固定在髋关节俯仰轴。z2轴沿俯仰轴方向(左右方向)。
- 坐标系 {3}:固定在膝关节。z3轴沿膝关节轴方向(与z2平行)。
- 末端坐标系 {4}:固定在脚底。z4轴与z3平行,x4轴指向脚底前方。
你可能会问:“为什么z轴要这么定义?” 因为DH参数法要求z轴必须沿着关节旋转轴。这是规则,别问为什么,照做就行。
2.3.2 填写DH参数表
坐标系建好了,参数就水到渠成了。假设大腿长度L1,小腿长度L2,髋关节偏距为H:
| 连杆 i | ai-1 | αi-1 | di | θi |
|---|---|---|---|---|
| 1 | 0 | 0° | H | θ1 |
| 2 | 0 | -90° | 0 | θ2 |
| 3 | L1 | 0° | 0 | θ3 |
| 4 | L2 | 0° | 0 | 0 |
2.4 从参数到变换矩阵
有了DH参数表,我们就可以写出相邻坐标系之间的变换矩阵。标准公式如下:
i-1T_i = Rot(x, α<sub>i-1</sub>) · Trans(x, a<sub>i-1</sub>) · Rot(z, θ<sub>i</sub>) · Trans(z, d<sub>i</sub>)
展开成4x4矩阵就是:
| cosθ<sub>i</sub> -sinθ<sub>i</sub> 0 a<sub>i-1</sub> |
| sinθ<sub>i</sub>·cosα<sub>i-1</sub> cosθ<sub>i</sub>·cosα<sub>i-1</sub> -sinα<sub>i-1</sub> -d<sub>i</sub>·sinα<sub>i-1</sub> |
| sinθ<sub>i</sub>·sinα<sub>i-1</sub> cosθ<sub>i</sub>·sinα<sub>i-1</sub> cosα<sub>i-1</sub> d<sub>i</sub>·cosα<sub>i-1</sub> |
| 0 0 0 1 |
看着有点吓人,对吧?别怕。你把上面那张DH参数表里的数值代进去,算一遍就发现,很多项都变成0或1了。
2.5 正运动学最终公式
把四个变换矩阵连乘,就得到从基座到脚底的完整变换:
0T_4 = 0T_1 · 1T_2 · 2T_3 · 3T_4
最终,脚底在基坐标系下的位置 (x, y, z) 为:
x = cosθ<sub>1</sub>·(L<sub>1</sub>·cosθ<sub>2</sub> + L<sub>2</sub>·cos(θ<sub>2</sub>+θ<sub>3</sub>))
y = sinθ<sub>1</sub>·(L<sub>1</sub>·cosθ<sub>2</sub> + L<sub>2</sub>·cos(θ<sub>2</sub>+θ<sub>3</sub>))
z = H - L<sub>1</sub>·sinθ<sub>2</sub> - L<sub>2</sub>·sin(θ<sub>2</sub>+θ<sub>3</sub>)
这个公式,就是四足机器人单腿的正运动学模型。你给它三个关节角度,它就能告诉你脚底在哪儿。
2.6 知识体系总览
为了让你对本章内容有个整体把握,我画了张图。它把从“物理腿”到“数学公式”的整个流程串起来了。
这张图把整个流程分成了六个步骤。从物理结构出发,经过坐标系、参数表、矩阵计算,最终得到公式,最后一定要回到仿真验证。这是一个闭环。
2.7 写在后面
正运动学是基础中的基础。这一章的内容,你不仅要看懂,更要能手推一遍。
我记得自己刚入行时,总觉得有现成的库可以用,何必自己算。结果有一次,库的版本升级,接口变了,整个项目卡了两天。从那以后,我坚持所有核心模型都自己推导一遍。这不是固执,这是基本功。