一、绪论与课程概览
1.1 四足机器人发展史:从实验室到野外
四足机器人这玩意儿,最早其实是从生物学家的好奇心开始的。上世纪六七十年代,研究者们就想搞清楚——四条腿的动物到底是怎么走路的?于是有了最早的一批液压驱动原型机,笨重、噪音大、动不动就漏油。我刚开始接触这个领域时,翻到那些老照片,说实话,感觉像在看蒸汽朋克电影。
真正让四足机器人走出实验室的,是 BigDog。2005 年波士顿动力放出了那段视频,一台汽油发动机驱动的铁骡子在雪地里行走,被人踹一脚还能自己稳住。我当时在念研究生,看完视频直接愣住——这玩意儿居然能抗扰动?后来我拆过一台类似的液压关节,里面伺服阀的精度要求高得离谱,稍微进点灰尘就卡死。嗯,这也是为什么后来电机驱动逐渐成了主流。
到了 2010 年代,MIT 的 Cheetah 系列把电机驱动推到了新高度。无框力矩电机加高减速比行星减速器,配合模型预测控制,跑起来真的像猫科动物。我个人觉得,Cheetah 3 的腾空跳跃是里程碑——它证明了纯电机也能做高动态运动。
最近五年,国产四足机器人也起来了。宇树、云深处这些公司把价格打到了消费级,但说实话,很多开源代码里的运动学模型是简化版,真到野外跑一跑,腿就抖得不行。这也是我做这门课的初衷——把运动学建模的坑一个一个填上。
1.2 运动学基础概念:你需要的数学工具
运动学不关心力,只关心位置、速度和加速度。说白了,就是回答一个问题:给定关节角度,脚端在哪?反过来,脚端要去哪,关节该转多少?
这两个问题分别对应:
- 正运动学(Forward Kinematics): 从关节空间 → 工作空间。已知 θ₁, θ₂, θ₃,求脚端坐标 (x, y, z)。
- 逆运动学(Inverse Kinematics): 从工作空间 → 关节空间。已知 (x, y, z),求 θ₁, θ₂, θ₃。
我在项目中遇到过最典型的坑:逆运动学解不唯一。四足机器人的每条腿通常有 3 个自由度,但同一个脚端位置可能对应多组关节角度。比如膝关节可以朝前弯也可以朝后弯——你想想看,如果代码里没做约束选择,机器人站起来的时候腿可能反着拐。我曾经调试一台样机,上电后它直接跪了下去,就是因为逆解选了错误的解。
另一个基础概念是 自由度(DOF)。四足机器人每条腿 3 DOF,4 条腿就是 12 DOF。但别忘了,机身本身还有 6 个自由度(3 平移 + 3 旋转)。所以整个系统是 18 DOF 的欠驱动系统——脚和地面接触时,自由度会减少。这个后面讲步态规划时会反复用到。
| 概念 | 定义 | 典型应用 |
|---|---|---|
| 正运动学 | 关节角 → 脚端位置 | 仿真中验证关节运动范围 |
| 逆运动学 | 脚端位置 → 关节角 | 实时控制中计算关节目标 |
| 雅可比矩阵 | 关节速度 → 脚端速度 | 力控制、奇异点检测 |
| 工作空间 | 脚端可达位置集合 | 步态规划中的落足点选择 |
1.3 课程目标:你能带走什么
这门课不是纯理论推导,也不是纯代码调参。我的目标是让你学完后,能独立完成以下三件事:
- 建立完整的运动学模型——从 D-H 参数到齐次变换矩阵,手写推导一遍,不依赖现成库。
- 在仿真环境中调试——用 Gazebo 或 MuJoCo 搭建四足机器人模型,跑通正逆运动学,验证关节限位和奇异点。
- 把模型部署到实物——至少能在单腿测试台上跑通位置控制,理解仿真和实物的差距在哪里。
说白了,我希望你学完后,拿到任何一款四足机器人的 CAD 图纸,都能在 2 小时内写出它的运动学代码。这个能力,我在面试工程师时特别看重——能徒手推运动学的人,控制逻辑通常不会差。
1.4 仿真环境介绍:我们的战场
本课程选用 Gazebo + ROS 2 作为主仿真环境。为什么选它?
- 开源免费: 没有授权限制,你可以随便改代码。
- 物理引擎成熟: ODE 和 Bullet 双引擎可选,接触动力学模拟够用。
- ROS 2 生态: 话题、服务、动作通信机制,直接对接实物控制架构。
当然,MuJoCo 和 PyBullet 也是好选择。我个人习惯用 Gazebo 做整机仿真,用 MuJoCo 做单腿或单关节的快速验证。后面章节中,我会对比这两种环境在运动学调试中的差异。
下面这张图展示了本课程的知识体系结构,你可以把它当作整个学习路径的地图:
这张图把课程拆成了三个模块。数学基础是地基,模型构建是核心,仿真调试是验证手段。我建议你按这个顺序学,不要跳。曾经有个学员直接跳到仿真部分,结果连旋转矩阵的乘法顺序都搞反了,调了三天没跑通——嗯,基础不牢,地动山摇。
1.5 你需要准备什么
硬件方面:一台能跑 Ubuntu 22.04 的电脑,建议内存 16G 以上,显卡无所谓(Gazebo 主要吃 CPU)。软件方面:ROS 2 Humble、Gazebo Fortress、Python 3.10+。我会在第一周提供一键安装脚本。
数学方面:线性代数(矩阵乘法、逆矩阵)、刚体运动学基础。如果你忘了旋转矩阵怎么推导,别担心——第 2 章我会带着你手算一遍。