作为一个机器人爱好者,第一次接触宇树Go1机器狗仿真时,最头疼的就是环境配置。我当初在虚拟机里折腾了整整两天才把ROS环境跑通,这里把踩过的坑都总结成保姆级教程。Ubuntu 20.04是ROS Noetic的官方支持系统,建议直接使用这个版本避免兼容性问题。
安装前记得先配置软件源,这个步骤很多教程会忽略。打开终端输入以下命令:
bash复制sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu focal-security main"
这样能加速后续的下载速度,特别是国内用户。接着安装ROS的核心组件:
bash复制sudo sh -c 'echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) 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
安装完成后,千万别忘了配置环境变量:
bash复制echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
我遇到过好几次重启终端后ros命令失效的情况,都是因为漏了这步。验证安装是否成功可以运行roscore,看到master节点启动就说明基础环境OK了。
创建工作空间是另一个容易出错的地方。建议严格按照以下顺序操作:
bash复制mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
source devel/setup.bash
这里特别要注意python3的路径指定,因为ROS Noetic默认使用Python3,而有些系统可能还存在Python2的残留配置。第一次编译建议加上-DPYTHON_EXECUTABLE参数确保一致性。
宇树的仿真资源其实分散在两个GitHub仓库,新手很容易漏掉关键组件。进入工作空间的src目录后,需要同时克隆以下两个仓库:
bash复制cd ~/catkin_ws/src
git clone https://github.com/unitreerobotics/unitree_ros.git
git clone https://github.com/unitreerobotics/unitree_ros_to_real.git
克隆完成后,第二个仓库只需要保留unitree_legged_msgs这个包,其他文件可以删除。这个msg包定义了机器狗运动控制的核心数据结构,缺少它会导致后续编译失败。
安装依赖项时要注意版本匹配:
bash复制sudo apt-get install ros-noetic-controller-interface \
ros-noetic-gazebo-ros-control \
ros-noetic-joint-state-controller \
ros-noetic-effort-controllers \
ros-noetic-joint-trajectory-controller
实测发现Gazebo模型加载失败是最常见的问题,主要是路径配置错误。需要修改unitree_gazebo/worlds/stairs.world文件中的模型路径:
xml复制<!-- 将默认路径 -->
model:///home/unitree/catkin_ws/src/unitree_ros/unitree_gazebo/worlds/building_editor_models/stairs
<!-- 改为你的实际路径 -->
model:///home/[你的用户名]/catkin_ws/src/unitree_ros/unitree_gazebo/worlds/building_editor_models/stairs
第一次编译十有八九会遇到各种报错,这里分享几个典型问题的解决方案。最常见的是LCM报错,这个通信库需要单独安装:
bash复制git clone https://github.com/lcm-proj/lcm.git
cd lcm
mkdir build && cd build
cmake ..
make
sudo make install
如果遇到draw_force_plugin.cc编译错误,需要修改源码中的两处问题:
#include <gazebo/gazebo.hh>改为#include <gazebo/gazebo_client.hh>this->dataPtr->node = transport::NodePtr(new transport::Node())Gazebo模型加载异常也是个高频问题。建议预先下载官方模型库:
bash复制git clone https://github.com/osrf/gazebo_models.git ~/.gazebo/models
如果模型还是显示异常,可能需要彻底重装Gazebo:
bash复制sudo apt-get remove gazebo11 gazebo11-common gazebo11-plugin-base libgazebo11:amd64 libgazebo11-dev:amd64 ros-noetic-gazebo-*
sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control
当所有环境就绪后,激动人心的时刻到了。启动仿真场景使用以下命令:
bash复制roslaunch unitree_gazebo normal.launch rname:=go1 wname:=stairs
这个命令会同时启动Gazebo仿真环境和ROS控制器。参数rname指定机器人型号(go1/go2),wname指定场景(stairs/empty等)。第一次加载可能需要几分钟,取决于电脑性能。
让机器狗站立的控制命令是:
bash复制rosrun unitree_controller unitree_servo
这个控制器会发送默认的站立姿态指令。如果想自定义姿态,需要修改unitree_controller/src/servo.cpp中的关节角度值。实测发现机器狗在仿真中的物理响应和真实设备略有差异,建议先从小幅度动作开始测试。
调试时我习惯用RViz观察关节状态:
bash复制rosrun rviz rviz
在RViz中添加RobotModel和TF显示,可以实时查看机器狗的骨骼结构和坐标系变换。当遇到异常姿态时,优先检查各关节的TF树是否完整。