宇树机器狗Go2 Gazebo仿真环境搭建全攻略
1. 环境准备从零搭建仿真基础第一次接触宇树Go2机器狗的Gazebo仿真时我也被各种依赖关系搞得头大。经过多次重装系统验证发现Ubuntu 20.04ROS Noetic的组合最稳定。这里分享我的装机清单操作系统建议使用实体机安装的Ubuntu 20.04虚拟机可能遇到显卡驱动问题ROS版本必须选择Noetic这是ROS1最后一个LTS版本硬件配置至少8GB内存推荐SSD硬盘Gazebo加载模型很吃资源安装ROS时有个小技巧先配置清华源加速下载。在终端执行以下命令sudo sh -c . /etc/lsb-release echo deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ lsb_release -cs main /etc/apt/sources.list.d/ros-latest.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update安装桌面完整版时建议用这个命令避免漏装组件sudo apt install ros-noetic-desktop-full python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential2. 关键依赖安装避开99%的编译坑很多人在编译宇树官方模型时会报错根本原因是漏装了这些隐藏依赖Gazebo插件依赖sudo apt install libgazebo11-dev ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control控制模块必备库sudo apt install ros-noetic-ros-control ros-noetic-ros-controllers ros-noetic-joint-state-publisher-guiPython3兼容层关键sudo apt install python3-catkin-pkg-modules python3-rospkg-modules实测发现不装第三个依赖会导致catkin_make时报ImportError: No module named rospkg错误。有次我重装三次系统才发现是这个原因建议把这组命令保存为脚本一次性执行。3. 模型部署让Go2在Gazebo中动起来宇树官方提供的模型需要特殊处理才能正常加载。按这个流程操作能避免模型丢失创建工作空间mkdir -p ~/unitree_ws/src cd ~/unitree_ws/src git clone https://github.com/unitreerobotics/unitree_ros_to_real.git修改模型路径关键步骤 找到unitree_ros_to_real/unitree_gazebo/worlds下的.world文件将所有model://开头的路径改为绝对路径例如!-- 修改前 -- urimodel://go2_description/meshes/base_link.STL/uri !-- 修改后 -- uri/home/你的用户名/unitree_ws/src/unitree_ros_to_real/unitree_gazebo/models/go2_description/meshes/base_link.STL/uri编译时的隐藏技巧cd ~/unitree_ws catkin_make -DPYTHON_EXECUTABLE/usr/bin/python3必须指定Python3路径否则会默认调用系统Python2导致编译失败4. 常见问题排雷指南问题一Gazebo打开黑屏解决方案先运行gazebo --verbose查看日志通常是显卡驱动问题。N卡用户需要安装专有驱动sudo ubuntu-drivers autoinstall sudo reboot问题二模型加载后立即摔倒根本原因PD参数未正确初始化修复步骤打开unitree_controller的launch文件找到param namekp valueXXX/和param namekd valueXXX/参考官方建议值修改为param namekp value40/ param namekd value0.5/问题三ROS与Gazebo时间不同步典型表现机器狗动作卡顿解决方法在launch文件中添加param name/use_sim_time valuetrue/有次调试时机器狗像喝醉了一样原地转圈后来发现是IMU插件的时间戳没有对齐。建议首次运行时先用rostopic echo /imu检查数据频率是否稳定在100Hz左右。