四足机器人开发入门:Cheetah-Software 从仿真到自定义控制器的上手全攻略
【免费下载链接】Cheetah-Software 项目地址: https://gitcode.com/gh_mirrors/ch/Cheetah-Software
Cheetah-Software 是 MIT 仿生机器人实验室(MIT Biomimetics Lab)面向 Mini Cheetah 与 Cheetah 3 推出的开源四足机器人软件平台,把浮基座动力学建模、状态估计、MPC 控制与 3D 可视化仿真整合进同一套框架。本文将以新手视角带你走完从环境搭建、编译构建、首次仿真到写出自定义控制器的完整路径,全程只讲"是什么、怎么用、能做什么"。
一、先认识一下:这套框架到底能帮你做什么
本部分你将学会:判断 Cheetah-Software 是否适合你的项目,以及它能覆盖哪些开发环节。
四足开发的三座大山,它替你搬走了两座半
做足式机器人的人普遍头疼三件事:动力学模型太复杂、算法调试太费劲、仿真代码和真机代码对不上。Cheetah-Software 的设计思路正是围绕这三点展开:
- 模型不用自己推:浮基座动力学、腿部运动学都由现成模块提供,你直接调用即可。
- 控制算法开箱即用:官方内置凸 MPC、全身控制(WBC)和完整的有限状态机,可以当"参考答案"来学习。
- 一套代码双端复用:控制器代码在仿真和真实硬件上几乎通用,切换成本很低。
适合哪些人使用?
| 使用者 | 你能获得什么 |
|---|---|
| 机器人方向的学生 | 现成的仿真环境与算法示例,快速验证想法 |
| 控制算法研究者 | 模块化接口清晰,方便替换或对比不同控制器 |
| 嵌入式 / 机械工程师 | 完整的硬件桥接与实时驱动示例,少走很多弯路 |
二、开工前备齐环境:一张核对清单
本部分你将学会:用最少的命令装好所有系统依赖,并确认三个关键组件的版本。
系统级依赖,一条命令搞定
在 Ubuntu 终端里执行下面这行即可:
sudo apt install mesa-common-dev freeglut3-dev coinor-libipopt-dev libblas-dev liblapack-dev gfortran libglib2.0-dev cmake gcc build-essential
💡 这行命令覆盖了 OpenGL 图形、IPOPT 优化求解、BLAS/LAPACK 数值库、编译工具链等全部底层依赖,一次装齐。
三个必装组件,缺一不可
| 组件 | 最低版本 | 它负责什么 |
|---|---|---|
| LCM | 1.3.1 | 轻量级通信中间件,仿真器与控制器之间靠它传数据 |
| Qt | 5.10 | 提供 3D 仿真图形界面 |
| Eigen | 较新版本即可 | 线性代数运算的基础库 |
三、编译构建全流程:两种场景一次讲清
本部分你将学会:通用的五步构建流程,以及仿真与真机两种模式的区别。
通用构建五步法
cd scripts
./make_types.sh # 第一步:生成 LCM 通信类型定义
cd ..
mkdir build && cd build
cmake ..
make -j4
💡 每次 LCM 类型文件有改动,都要重新跑一遍
make_types.sh,否则编译阶段会报类型错误。
仿真与真机:怎么选编译参数
| 构建场景 | 命令差异 | 说明 |
|---|---|---|
| 纯仿真开发 | 默认 cmake .. | 最常用,普通电脑即可运行 |
| Mini Cheetah 真机部署 | cmake -DMINI_CHEETAH_BUILD=TRUE .. | 会编译进硬件相关的实时驱动 |
编译完成后,可执行文件会生成在各自的构建目录下,接下来就可以进入最激动人心的环节——第一次仿真。
四、第一次跑起来:从启动到机器人小跑的分步流程
本部分你将学会:用两个终端配合,让仿真中的 Mini Cheetah 从站立进入小跑步态。
第 1 步:开一个终端启动仿真器
./sim/sim
第 2 步:开另一个终端启动控制器
./user/MIT_Controller/mit_ctrl m s
命令中两个参数的含义:m 表示 Mini Cheetah 机器人,s 表示仿真模式(换成 r 则对应真实机器人)。
第 3 步:按节奏切换控制模式
- 在仿真窗口中选择 Mini Cheetah 和 Simulator,点击 Start 按钮。
- 先把控制模式设为 10,等待机器人摆好准备姿态。
- 切换为 1,让机器人进入待命状态。
- 最后切到 4,机器人就会开始小跑步态。
💡 很多新手直接跳到模式 4 发现机器人不动,其实模式切换有固定顺序,10 → 1 → 4 的节奏不能乱。
手柄设置
如果使用 Logitech F310 手柄,记得把背面开关拨到 X 位置,此时正面的 LED 灯应处于熄灭状态,否则按键映射会不对。
五、项目结构地图:找代码不再大海捞针
本部分你将学会:快速定位六大核心模块,知道改什么去哪个目录。
| 目录 | 模块作用 | 典型文件 |
|---|---|---|
common/Dynamics/ | 浮基座动力学模型 | FloatingBaseModel、MiniCheetah |
common/Controllers/ | 控制器接口与状态估计 | LegController、GaitScheduler |
common/Math/ | 数学工具与滤波算法 | orientation_tools、filters |
sim/ | 3D 仿真主程序 | Simulation.cpp、Graphics3D |
robot/ | 硬件与仿真桥接 | HardwareBridge、SimulationBridge |
user/ | 各类用户控制器示例 | MIT_Controller、JPos_Controller |
其中 robot/src/rt/ 目录还封装了 EtherCAT、SPI、遥控器、惯导等实时硬件驱动,需要对接真机时重点看这里。
六、参数调整实战:不改代码也能改变机器人行为
本部分你将学会:通过 YAML 配置文件调整机器人参数和仿真地形。
三份核心参数文件
| 配置文件 | 控制对象 |
|---|---|
config/mini-cheetah-defaults.yaml | Mini Cheetah 本体参数 |
config/cheetah-3-defaults.yaml | Cheetah 3 本体参数 |
config/simulator-defaults.yaml | 仿真器物理参数 |
地形也能自定义
config/default-terrain.yaml 支持添加网格、盒子、楼梯等多种地形元素,还可以调整地面摩擦系数等物理参数。想模拟草地、冰面或者越过台阶,改这里就行,完全不用碰代码。
七、调试与可视化工具箱
本部分你将学会:三个实用技巧,让调试效率翻倍。
用 LCM Spy 实时看数据
./scripts/launch_lcm_spy.sh
LCM Spy 是监控机器人状态数据的利器,可以实时查看并绘制仿真中的各类传感器与状态信息,排查控制问题时非常有用。
看懂仿真窗口里的两个模型
- 灰色模型:仿真的实际机器人位置。
- 红色模型:状态估计器输出的估计位置。
两者贴合说明估计器工作正常,出现明显偏差时就要检查估计算法了。
两个提高效率的小技巧
- 按 空格键 进入自由相机模式,用 WASD 键移动视角。
- 按住
t键可以加速仿真运行,长时间跑数据时省时间。 - 开启 cheater_mode 可以让估计位置直接等于实际位置(仅限仿真),方便单独调试控制器。
八、四步写出你的第一个自定义控制器
本部分你将学会:搭建一个属于自己的控制器工程,并认识五个核心接口。
第 1 步:建立工程目录
在 user/ 下新建一个控制器文件夹,直接参考现成的 JPos_Controller 示例结构,它的工程组织方式是最标准的模板。
第 2 步:实现控制器类
让你的类继承自 RobotController,并实现主控制逻辑。
第 3 步:登记到构建系统
在 user/CMakeLists.txt 中添加你的新目录,让编译系统认识它。
第 4 步:编译并运行验证
回到构建目录重新 cmake 和 make,然后在仿真中验证效果。
五个关键接口速览
| 接口 | 作用 |
|---|---|
runController() | 主控制循环,以 1kHz 频率执行 |
_legController | 腿部控制接口,下发力矩与位置 |
_stateEstimate | 当前状态估计结果 |
_driverCommand | 游戏手柄输入 |
_visualizationData | 调试可视化数据接口 |
九、新手高频问题 FAQ
本部分你将学会:遇到最常见的五个坑,如何快速自救。
Q:编译时提示找不到 Qt? A:运行 ./scripts/find_qt_path.sh 脚本自动探测 Qt 路径。
Q:报 LCM 类型相关的错误? A:重新执行 ./scripts/make_types.sh 再编译,多半是类型定义没有同步。
Q:游戏手柄不被识别? A:先确认手柄模式开关是否在 X 位置、连接是否正常,再看正面的 LED 是否熄灭。
Q:仿真中机器人怎么都不动? A:检查控制模式是否按 10 → 1 → 4 的顺序切换,同时确认参数配置文件格式正确。
Q:要部署到真实 Mini Cheetah 上,网络怎么配? A:依次使用 ./scripts/setup_network_mc.py 配置网络、./scripts/send_to_mini_cheetah.sh 传输程序,最后在机器人端运行 ./run_mc.sh。
十、往深了走:进阶路线图
本部分你将学会:找到下一步的深入学习方向。
控制算法方向
user/MIT_Controller/Controllers/ 下有大量宝藏:convexMPC 凸模型预测控制、WBC 全身控制,以及 FSM_States/ 中完整的有限状态机实现(站立、小跑、空翻、越障等),都是研究四足运动控制的绝佳范例。
数值优化方向
项目内置了多个二次规划求解器:third-party/osqp/ 的算子分裂求解器、third-party/qpOASES/ 以及 common/SparseCMPC/ 的稀疏模型预测控制实现,适合深入算法细节的同学。
数据处理方向
lcm_data/matlab_plot/ 提供了 MATLAB 数据分析脚本,scripts/lcm-log2smat/ 能把 LCM 日志转成 smat 格式,实验数据后处理一条龙。
读完这篇文章,你已经掌握了 Cheetah-Software 从环境搭建、编译构建、首次仿真到自定义控制器的完整链路,也知道了如何通过配置文件调整行为、用调试工具观察状态。这套框架的最大优势在于仿真到硬件的工作流完整、模块化结构清晰、示例代码丰富,无论是课程作业、科研实验还是产品原型,都能帮你把精力集中在真正想研究的问题上。
下一步建议很简单:现在就打开终端,照着第二章把环境装好,然后跑一遍第四章的流程,亲眼看着机器人小跑起来。跑通之后,试着用第六章的知识改几个参数,再按第八章的方法写一个最简单的关节位置控制器——你会发现,四足机器人开发并没有想象中那么遥远。🚀
【免费下载链接】Cheetah-Software 项目地址: https://gitcode.com/gh_mirrors/ch/Cheetah-Software
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



