FEATURED · 精选文章

四足机器人仿真平台如何从零上手:Cheetah-Software 完整避坑指南

发布时间 / 2026/8/17 23:34:52
来源 / 创域科博编辑部
栏目 / 资讯中心
四足机器人仿真平台如何从零上手:Cheetah-Software 完整避坑指南 四足机器人仿真平台如何从零上手Cheetah-Software 完整避坑指南【免费下载链接】Cheetah-Software项目地址: https://gitcode.com/gh_mirrors/ch/Cheetah-Software四足机器人仿真平台 Cheetah-Software 是 MIT Biomimetics 实验室开源的四足机器人软件栈覆盖动力学仿真、状态估计、运动规划与实时控制最大的价值在于同一套控制代码无需改写即可在仿真与真实机器人之间切换。它支撑了 Mini Cheetah 和 Cheetah 3 两代明星机器人也是许多高校实验室研究 MPC、全身控制WBC的起点。先别急着写代码四足机器人开发的三大痛点在接触任何框架之前不妨先想清楚为什么四足机器人控制这么难答案通常集中在三件事上——代价高、风险大真机一次摔倒可能就是上万元的损失算法迭代不可能每次都在硬件上验证。实时性要求苛刻控制循环以 1kHz 运行腿部关节 PD 甚至跑在 40kHz普通写完再编译的开发节奏完全不适用。仿真与真机脱节很多平台仿真里能跑上了真机就崩中间隔着一层看不见的手。Cheetah-Software 的整套设计正是冲着这三个痛点来的。它到底是什么一个仿真与真机共用内核的软件栈项目的目录结构可以看作一条清晰的流水线模块作用关键位置common动力学、控制器、状态估计、数学工具等公共库common/sim基于 Qt 的 3D 仿真环境唯一依赖 Qt 的程序sim/robot真机与仿真桥接、实时硬件驱动EtherCAT/SPIrobot/user用户控制器MIT 官方控制器与示例都在这user/third-partyOSQP、qpOASES、JCQP 等优化求解器third-party/它的核心哲学只有一句话控制代码只写一遍仿真和真机共用。差异全部收敛在robot/目录下的HardwareBridge与SimulationBridge两个类里——仿真时数据走共享内存真机时走 EtherCAT/SPI控制器本身感知不到区别。核心能力盘点为什么它值得一学开箱即用的控制算法全家桶user/MIT_Controller/里几乎是一份四足机器人控制算法目录convexMPC凸模型预测控制小跑trot步态的主力算法WBC全身控制把力分配、躯干姿态、腿部阻抗统一到一个优化框架BackFlip / FrontJump后空翻与前跳等动态动作FSM 状态机被动、关节 PD、阻抗控制、站立、行走、视觉跟随等十余个状态平滑切换源码见 FSM_States/。步态调度器自带节奏感GaitScheduler.h 内置了从静止、静态走、溜步amble、小跑、快跑、跳步bound到旋转疾驰rotary gallop的一整套步态库相位、周期、切换点全部参数化。想换步态改参数不用重写运动逻辑。状态估计器不必自己造轮子StateEstimatorContainer提供完整的状态估计链接触估计、方向估计、位置/速度估计仿真里还能开cheater_mode直接作弊拿到真值——这在调试控制器时极其好用。仿真环境搭建从克隆到看到机器人站起来安装依赖后Ubuntu 下需要mesa-common-dev、freeglut3-dev、coinor-libipopt-dev、libblas-dev、liblapack-dev、gfortran、Qt 5.10、LCM、Eigen编译流程如下git clone https://gitcode.com/gh_mirrors/ch/Cheetah-Software.git cd Cheetah-Software/scripts ./make_types.sh # 生成 LCM 类型定义报无法删除类错误可忽略 cd .. mkdir build cd build cmake .. make -j4然后开两个终端一个跑仿真器一个跑控制器。# 终端一启动仿真器选择 Mini Cheetah 与 Simulator点击 Start ./sim/sim # 终端二连接仿真mMini Cheetahs仿真模式 ./user/MIT_Controller/mit_ctrl m s让机器人动起来有一个经典的三步调模式流程先在控制面板把控制模式设为 10机器人摆出准备姿态→ 等它停稳后切到1站立→ 最后设为4小跑步态便启动了。这个10→1→4的顺序本身就是很好的安全设计每一步都在确认上一状态稳定后再继续。架构亮点理解三块面板就理解了整个调参哲学仿真器窗口左侧、中间、右侧三块面板分别对应三层参数左侧仿真器参数物理引擎步长、地面刚度、IMU 噪声默认来自 simulator-defaults.yaml。simulation_speed可以加速仿真——按住t键还能跑得比实时更快适合长时段验证。中间机器人参数controller_dt决定控制循环频率cheater_mode让状态估计直接取真值默认来自 mini-cheetah-defaults.yaml。右侧用户参数你自定义控制器里暴露出来的可调量运行时就能拖拽无需重新编译。这套参数与代码分离的设计让控制器调参从改代码-重编译-重启变成面板上拖一下。自定义控制器的正确打开方式写一个新控制器并不需要碰硬件层。在 user/ 下新建文件夹参考最简单的 JPos_Controller 即可。核心只需继承RobotController见 RobotController.h实现runController()——它会被以 1kHz 自动调用里面你能拿到_legController腿部命令与反馈支持关节 PD、笛卡尔 PD、力矩前馈三种下发方式命令是叠加的_stateEstimate估计出的躯干位置、姿态与速度_driverCommand手柄输入_visualizationData往仿真窗口画调试图形的接口。腿部编号顺序是前右腿 0、前左腿 1、后右腿 2、后左腿 3关节顺序统一为 ab/ad 外展、髋、膝。记住这个约定能省下大量排查时间。典型应用场景从课堂到真机教学与研究在不碰硬件的情况下复现 MPC、WBC 论文算法common/下还有 18 个单元测试common/test-common可作为算法正确性的参照算法验证记录 LCM 数据回放分析launch_lcm_spy.sh可以实时监控和绘制状态流是调试控制算法的利器真机部署cmake -DMINI_CHEETAH_BUILDTRUE编译后用 send_to_mini_cheetah.sh 传程序真机跑./run_mc.sh。因为仿真与真机共用控制代码仿真里验证过的逻辑可以直接带到硬件。最常见的三个配置陷阱用户参数不匹配控制器拒绝启动右侧面板加载的 YAML 必须与代码里声明的参数一一对应多一个少一个都会出问题JPosUserParameters.h 是标准模板。修改了参数定义却不重新编译仿真器明确要求新增或删除参数后必须重编sim否则新参数不生效甚至崩溃。use_spring_damper改了不生效这个参数要重启仿真器才会应用——项目文档里白纸黑字写着的坑值得提前记住。下一步从哪里继续深入完整流程文档在 documentation/getting_started.md真机部署细节见 documentation/running_mini_cheetah.md想动手实践就从改造JPos_Controller开始先加一个用户参数再试试笛卡尔 PD最后挑战给MIT_Controller加一个新 FSM 状态想理解底层从RobotRunner入手看它如何把控制器同时接到HardwareBridge和SimulationBridge上——这是整个一套代码两头跑架构的核心。从仿真里看机器人第一次站起来到把它搬到真机上小跑Cheetah-Software 把这条路上最难的仿真与真机鸿沟替你填平了。剩下的交给你的控制算法。【免费下载链接】Cheetah-Software项目地址: https://gitcode.com/gh_mirrors/ch/Cheetah-Software创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻