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的转角 这就是我们控制的电机角度
小技巧: 刚开始学DH参数时,别死记硬背。你找个四足机器人的CAD模型,对着实物标坐标系,一遍就懂了。

2.3 四足机器人单腿的DH建模实战

好,理论说完了,咱们直接上手。以最常见的串联式腿部构型为例,它有三个旋转关节:横滚(侧摆)、俯仰(前摆)、膝关节(后摆)。

2.3.1 建立坐标系

坐标系怎么建?我有个笨办法:从基座开始,一个关节一个关节地画。

  1. 基坐标系 {0}:固定在机身与腿的连接处。z0轴竖直向上,x0轴指向机器人前进方向。
  2. 坐标系 {1}:固定在髋关节横滚轴。z1轴沿横滚轴方向(前后方向)。
  3. 坐标系 {2}:固定在髋关节俯仰轴。z2轴沿俯仰轴方向(左右方向)。
  4. 坐标系 {3}:固定在膝关节。z3轴沿膝关节轴方向(与z2平行)。
  5. 末端坐标系 {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
避坑指南: 我曾经在α1(扭角)上栽过跟头。四足机器人的髋关节横滚轴和俯仰轴是垂直的,所以α1 = -90°。如果你写成+90°,末端位置会整个镜像翻转,机器人直接“劈叉”。

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>)

这个公式,就是四足机器人单腿的正运动学模型。你给它三个关节角度,它就能告诉你脚底在哪儿。

验证方法: 把θ1=0, θ2=0, θ3=0代入,看看结果是不是 (L1+L2, 0, H)。如果是,恭喜你,模型建对了!

2.6 知识体系总览

为了让你对本章内容有个整体把握,我画了张图。它把从“物理腿”到“数学公式”的整个流程串起来了。

正运动学建模流程(DH参数法) 物理腿结构 建立坐标系 填写DH参数表 计算变换矩阵 末端位置公式 仿真验证与调试 关键:z轴沿关节旋转轴 注意:扭角α的正负号

这张图把整个流程分成了六个步骤。从物理结构出发,经过坐标系、参数表、矩阵计算,最终得到公式,最后一定要回到仿真验证。这是一个闭环。

2.7 写在后面

正运动学是基础中的基础。这一章的内容,你不仅要看懂,更要能手推一遍。

我记得自己刚入行时,总觉得有现成的库可以用,何必自己算。结果有一次,库的版本升级,接口变了,整个项目卡了两天。从那以后,我坚持所有核心模型都自己推导一遍。这不是固执,这是基本功。