宇树四足机器人仿真实战:从运动控制到自主导航
1. 环境搭建从零开始的准备工作第一次接触宇树四足机器人仿真时我花了整整三天时间才把环境搭好。不是因为我笨而是网上的教程大多只说安装这个那个却没人告诉你哪些坑会让人崩溃。下面我就把踩过的坑都填平让你半小时内搞定所有准备工作。基础依赖安装就像盖房子打地基缺一不可。我建议先执行这条全能命令sudo apt install libeigen3-dev build-essential libglib2.0-dev cmake default-jdk python-all-dev liblua5.1-dev golang doxygen别被这一长串吓到它们分别是数学库、编译工具、LCM通信库的依赖项。有次我偷懒只装了前三个结果编译LCM时各种报错最后发现是缺了python-all-dev。LCM通信库是宇树机器人的神经中枢负责各个模块间的数据传输。安装时有个小技巧git clone https://github.com/lcm-proj/lcm.git cd lcm mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX/usr/local # 指定安装路径避免找不到 make -j$(nproc) # 使用所有CPU核心加速编译 sudo make install测试是否成功时别用官方文档里的lcm-tester这个经常报错改用更靠谱的方法lcm-gen --list # 能显示帮助信息就说明安装成功ROS导航功能包安装也有讲究。很多人直接sudo apt install ros-noetic-navigation结果发现缺了很多组件。我推荐用这个组合拳sudo apt install ros-noetic-navigation ros-noetic-gmapping ros-noetic-amcl \ ros-noetic-map-server ros-noetic-move-base ros-noetic-dwa-local-planner这样一次性把路径规划、定位、建图等核心组件都装齐了。2. ROS工作空间配置少走弯路的秘诀创建catkin工作空间时90%的教程都让你直接catkin_make但没人告诉你后续可能遇到的路径问题。我的做法是mkdir -p ~/unitree_ws/src cd ~/unitree_ws catkin config --init --mkdirs --extend /opt/ros/noetic --cmake-args -DCMAKE_BUILD_TYPERelease这个catkin config命令比传统方法更智能它会自动处理ROS环境继承和编译类型设置。有次我用默认Debug模式编译仿真时帧率直接掉到10fps改成Release后流畅度翻倍。源码下载要注意版本匹配问题。宇树的GitHub有多个仓库必须按这个顺序克隆cd ~/unitree_ws/src git clone https://github.com/unitreerobotics/unitree_ros.git git clone https://github.com/unitreerobotics/unitree_ros_to_real.git git clone https://github.com/unitreerobotics/unitree_guide.git特别提醒unitree_legged_msgs现在已合并到unitree_ros_to_real里不需要单独下载了。我去年还傻乎乎地找这个包找了一下午...环境变量配置也有门道。别直接往.bashrc里塞内容先检查是否已存在grep -q unitree_ws ~/.bashrc || echo source ~/unitree_ws/devel/setup.bash ~/.bashrc这行命令会智能判断是否需要添加避免重复导入导致终端启动变慢。3. 运动控制仿真让机器狗活起来第一次看到机器狗在Gazebo里站起来时我激动得差点把咖啡洒在键盘上。但在此之前你需要知道这些关键操作启动仿真环境时别用默认参数加个gui:true让界面更友好roslaunch unitree_guide gazeboSim.launch gui:true paused:false那个paused:false特别重要有次我忘了加等了十分钟机器狗都瘫在地上不动还以为安装出问题了。控制器启动后在终端输入数字2让机器狗站立。但新手常遇到的问题是怎么知道连接成功了我教你个诊断技巧rostopic echo /unitree_guide/state如果能看到实时数据流说明通信正常。要是没反应大概率是LCM没装好回去检查第一章的内容。运动控制模式切换时有个隐藏技巧先按2进入站立模式等3秒稳定后再按4进入trot步态。直接按4会导致机器狗抽搐别问我怎么知道的...键盘控制对应关系W/S前进/后退速度0.1m/s步进A/D左右平移J/L原地旋转注意要轻按长按会转晕空格急停救命键建议先找好位置4. 自主导航仿真从A点到B点的魔法导航仿真才是真正展现技术实力的部分。首先确保你的move_base配置正确// 修改unitree_move_base/param/move_base_params.yaml controller_frequency: 20.0 # 控制频率不要超过50Hz planner_patience: 5.0 # 规划器等待时间我见过有人设为100Hz结果CPU直接跑满机器狗反而走不动路。建图启动顺序很重要错误的顺序会导致TF树断裂先启动Gazeboroslaunch unitree_move_base gazebo_move_base.launch再开控制节点rosrun unitree_guide junior_ctrl最后启动导航roslaunch unitree_move_base rvizMoveBase.launch在RViz里设置目标点时有个90%的人都会踩的坑点击2D Nav Goal后要先拖方向再松手。直接点击会导致目标角度为0机器狗可能会倒着走。如果发现路径规划异常检查激光雷达数据rostopic echo /scan应该能看到连续的180度扫描数据。如果只有零星几个点可能是openni驱动没装好。避障实测技巧在Gazebo里按Insert键可以添加障碍物。建议先用简单方块测试等确认避障正常后再用复杂地形。有次我直接放了个楼梯模型结果机器狗卡在台阶上疯狂抽搐...