ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

四足机器人仿真从0到1:带你把 Cheetah-Software 跑通、调通、改造通

四足机器人仿真从0到1:带你把 Cheetah-Software 跑通、调通、改造通 四足机器人仿真从0到1带你把 Cheetah-Software 跑通、调通、改造通【免费下载链接】Cheetah-Software项目地址: https://gitcode.com/gh_mirrors/ch/Cheetah-SoftwareCheetah-Software 是麻省理工学院MIT仿生学实验室开源的四足机器人仿真与控制平台专门服务于 Mini Cheetah 与 Cheetah 3 两款机器人。这篇文章不打算按部就班地罗列操作手册而是站在一个第一次拿到压缩包的新手视角用六个你最想问的问题做线索把环境搭建、仿真试跑、问题排查、自定义控制器这一整条链路串起来。读完你不仅能亲眼看着机器人小跑起来还能动手写一个属于自己的控制器。一、它到底能做什么——先看清手里这套四足全家桶在动手之前值得花两分钟搞明白你下载的到底是个什么东西。一句话概括这是一套仿真 控制双栖的机器人开发框架。你在电脑里看到的灰色机器狗其背后每一帧的姿态、每个关节的力矩都是真实物理模型算出来的而控制它的那套代码将来可以直接烧进真机的主板里几乎不用改动。项目内部按职责分成几大块就像一辆车的不同总成目录扮演的角色common/公共零件库动力学模型、状态估计、腿部控制接口、数学工具、MPC 求解器等sim/3D 仿真驾驶舱也是全项目唯一依赖 Qt 的模块robot/真机程序硬件桥接、EtherCAT/SPI 实时驱动、RC 遥控接口user/你真正要动刀的地方——各种用户控制器都住在这里config/一堆 yaml 参数文件机器人、仿真器、地形、用户参数全靠它们喂third-party/打包好的第三方库OSQP、qpOASES、Eigen、yaml-cpp、SOEM 等 如果非要用一个比喻sim/是驾校的模拟驾驶舱user/里的控制器是坐在方向盘前的司机而robot/则是把同一套驾驶习惯搬到真车上的那套线束。你在模拟舱里练出的手感上了真车依然有效——这正是这套框架最值钱的地方。二、装环境劝退吗——四样依赖一跑就通很多新手倒在了装依赖这第一步其实这里没有玄学拢共四件事系统包、通信库、界面库、数学库。① 系统包Ubuntu/Debian 系sudo apt install mesa-common-dev freeglut3-dev coinor-libipopt-dev \ libblas-dev liblapack-dev gfortran libglib2.0-dev \ cmake gcc build-essential② 三个关键组件用大白话认识它们LCM版本 1.3.1可以理解成机器人世界里的对讲机协议进程之间、机器与机器之间靠它喊话传数据。Qt5.10负责把 3D 仿真窗口画出来的界面框架仿真器没它转不动。Eigen数学工具箱矩阵运算、向量变换这些体力活全交给它。 在 Ubuntu 18.10 / 19.04 上Qt 也可以用sudo apt install libqt5 libqt5gamepad5直接装省去手动下载安装包的麻烦。③ 克隆与编译全流程如下git clone https://gitcode.com/gh_mirrors/ch/Cheetah-Software.git cd Cheetah-Software cd scripts ./make_types.sh # 生成 LCM 数据类型的 C 头文件报 rm 错误可忽略 cd .. mkdir build cd build cmake .. make -j4编译结束后跑一下自检程序确认零件都装好了./common/test-common看到结尾出现[ PASSED ] 18 tests.之类的一行就说明公共库工作正常。顺带一提如果你是要把程序拷到 Mini Cheetah 的板载电脑上运行把cmake ..换成cmake -DMINI_CHEETAH_BUILDTRUE ..即可这个开关决定了代码里是否带桌面端图形相关的东西。新手最容易踩的三个坑提前预警现象原因对策make_types.sh报rm: cannot remove...首次生成旧文件本来就不存在忽略属正常输出OSQP 相关测试偶尔失败求解器本身带随机性重跑一次即可通过CASADI 测试失败运行时动态库路径没找到暂可忽略当前控制链路还用不到它三、第一次点火——让机器人从趴着到小跑的完整动作环境就绪后最激动人心的时刻来了让机器人在屏幕上活过来。整个过程需要两个终端窗口配合一个开仿真器一个开控制器。终端 A先拉起仿真驾驶舱./sim/sim窗口里选择Mini Cheetah和Simulator点击Start。此时应该能在终端输出里看到一行[GameController] Found 1 joystick说明手柄已被识别没有手柄也不影响先看它走路。终端 B再启动司机./user/MIT_Controller/mit_ctrl m s这里的两个参数值得记一下m代表 Mini Cheetah换成3则是 Cheetah 3s代表连接仿真器换成r就是连真机。控制器会通过共享内存与仿真器通信所以顺序必须是先仿真、后控制。接下来是模式切换仪式在仿真窗口中间一栏操作控制模式设为10机器人会缓缓摆出一个准备姿态——这其实是让关节 PD 先接管、机器人安全热身的过程等它完全静止后切到1最后切到4机器人开始以 trot 小跑步态前进。 这三个数字对应的其实是底层 FSM有限状态机里的不同状态从被动模式10到关节 PD 站立1再到步态运动4。中间每一步切换都带着安全检查别一上来就直奔 4机器人会吓一跳。连上手柄Logitech F310背面开关拨到X档、正面 LED 熄灭摇杆推一推它就会跟着你的意图走。你会看到画面里有灰、红两个机器人灰色是仿真真实位置红色是状态估计器推算出来的位置。打开cheater_mode作弊模式两者会完全重合——这是调试状态估计算法时的利器。视角与速度的小技巧按住t键可以让仿真以最快速度推进按空格进入自由相机模式用 WASD 键移动、鼠标拖拽调整视角。四、跑不动、乱跳、找不到手柄——问题该怎么定位机器人不会说话但框架给了你充足的仪表盘。仿真窗口的三块面板对应三套参数文件是排查问题的主战场左侧仿真器面板控制simulation_speed仿真速度、噪声大小等对应config/simulator-defaults.yaml中间机器人面板controller_dt控制更新频率、cheater_mode作弊模式对应config/mini-cheetah-defaults.yaml右侧用户参数面板每个控制器专属的可调旋钮由你自己的代码定义。地形也能改。config/default-terrain.yaml里默认是一块平地文件里注释掉了网格、盒子、楼梯等元素的写法还支持直接设置地面摩擦系数——想让它走斜坡、上台阶从这里开始改。当问题藏在数据流里时就该请出LCM这套对讲机的监控工具了./scripts/launch_lcm_spy.shLCM Spy 会把仿真器和控制器之间互喊的每一条消息都列出来点击任意数据流就能实时画曲线观察关节角度、机体姿态的波形变化比盯着画面猜高效得多。配合lcm-logger还能把数据存成日志文件回放分析。几个高频症状与处方直接对号入座症状常见病因处置手柄没反应开关不在 X 档或插拔后未重连拨到 X 档重新插拔确认 LED 熄灭机器人纹丝不动控制模式没按 10→1→4 顺序走回到模式 10 重新热身一运行就崩参数文件与代码期望的字段不匹配确认加载的 yaml 与代码参数一一对应改过参数要重编译sim估计位置乱飘状态估计噪声参数不合适调cheater_mode先排除估计器问题再回头调噪声项五、把它改成你自己的——照着 JPos_Controller 写肌肉记忆能跑通官方控制器只是热身真正的乐趣在于把机器人的行为改造成你想要的样子。好消息是框架把这事简化成了填模板。5.1 五个步骤挂上一个新控制器在user/下新建一个文件夹比如user/MyController/把文件夹登记进user/CMakeLists.txt写一个继承自RobotController的类.hpp .cpp仿照main.cpp写一个入口函数编译后像官方控制器一样启动它。user/JPos_Controller/是公认的最简范例它只有关节位置控制这么一件事非常适合当脚手架。5.2 你只需要关心一个函数框架会在1kHz每秒 1000 次的频率下自动调用runController()你的所有控制逻辑都写在这里面。函数内部可以拿到一整套手和眼睛_legController直接指挥四条腿的接口commands[leg_id]下发期望关节角度qDes、力矩tauFeedForward、足端力forceFeedForward等datas[leg_id]读回编码器实测值_stateEstimate状态估计结果——机器人当前在世界坐标里的位置、速度、姿态腿接触地面的判断也归它管_driverCommand手柄输入读它就知道玩家想往哪走_quadruped/_model机器人常量参数与动力学模型算正运动学、雅可比都靠它们_visualizationData往仿真窗口画调试图形箭头、线条的画笔。记住四条腿的编号排布写循环遍历时最常用FRONT前 1 0 \ / 1、0 在右侧 3 2 BACK后如果你暂时用不到用户参数面板记得让getUserControlParameters返回nullptr否则控制器会因为找不到匹配的参数文件而拒绝启动。 想让机器人记住某种动作本质上就是在这里写出一套从当前状态到目标动作的映射——所谓肌肉记忆不过是把这条映射写得足够快、足够稳。六、想让它更聪明——状态估计、MPC 与全身控制速览官方MIT_Controller是一台完整的多功能战车它的秘密藏在user/MIT_Controller/FSM_States/里。这里的每一个状态都对应一种行为FSM_State_Passive被动模式、FSM_State_StandUp起身、FSM_State_BalanceStand原地平衡、FSM_State_Locomotion小跑、FSM_State_BackFlip后空翻、FSM_State_FrontJump前跳……状态之间通过checkTransition判断条件、transition执行切换。更进阶的算法则集中在user/MIT_Controller/Controllers/convexMPC凸模型预测控制。通俗讲就是走一步看三步——每一帧都基于当前状态滚动预测未来一小段时间的最优落脚点和力分配WBC全身控制Whole-Body Control。把四条腿、躯干、甚至重心当成一个整体协同优化适合做更精细的躯干姿态和抗扰动底层发力靠的是third-party/里打包好的二次规划求解器OSQP、qpOASES 等它们负责在毫秒级时间内解出最优解。关于状态估计再补两句大白话机器人没有 GPS它只能靠 IMU 惯性测量和腿部编码器猜自己现在在哪、朝哪个方向、速度多快。common/Controllers/里的PositionVelocityEstimator和OrientationEstimator就是干这个的猜得准不准直接决定上层控制好不好使。这套代码上真机的路径同样清晰用scripts/send_to_mini_cheetah.sh把编译好的程序拷贝到机器人SSH 登录后在板上运行./run_mc.sh即可。仿真与真机的唯一区别是真机上没有灰色参考模型、作弊模式失效一切以传感器实测为准。结尾别看了动手吧到这里你手里已经有了完整的地图认识项目 → 装好环境 → 看着它小跑 → 学会排障 → 动手改造 → 理解进阶算法。接下来真正拉开差距的是你自己敲下的那几行代码。给你的行动清单按顺序来今晚就跑通一次仿真亲眼确认 10→1→4 的切换手感通读user/JPos_Controller/的源码把runController()里每一行都问一遍为什么改一个参数比如mini-cheetah-defaults.yaml里的stand_kp_cartesian刚度看机器人姿态的变化最后试着在user/里新建你自己的控制器让它做一个官方没有的动作。四足机器人的乐趣从来不在看它走而在让它按你的想法走。Cheetah-Software 已经把最难的基础设施铺好了剩下的舞台交给你。【免费下载链接】Cheetah-Software项目地址: https://gitcode.com/gh_mirrors/ch/Cheetah-Software创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表