水下机器人仿真对计算资源的需求远超普通开发环境。我曾在4GB内存的虚拟机上反复尝试运行UUV Simulator,结果每次Gazebo启动后系统直接卡死。后来把内存加到8GB,处理器核心从2个提升到6个,才终于看到仿真界面流畅运行。这里分享几个关键配置参数:
虚拟机软件选择也有讲究。VMware Workstation Pro 17对Ubuntu 20.04的兼容性最好,实测在以下配置组合中表现稳定:
bash复制VMware版本:17.5.0以上
虚拟硬件版本:19
显卡加速:必须开启3D加速
显存分配:至少2GB
注意:VirtualBox在运行Gazebo时经常出现OpenGL渲染错误,不建议使用。如果主机是AMD显卡,需要在VMware设置中额外添加
mks.gl.allowBlacklistedDrivers = "TRUE"配置项
很多人以为安装Ubuntu就是一路点击"下一步",其实有几个隐藏陷阱需要特别注意。先说镜像下载,一定要认准官方源:
bash复制推荐镜像:ubuntu-20.04.6-desktop-amd64.iso
SHA256校验码:a1f8c9698b5fd8b0f6ae41f66e804a4b0c6c1e6f5d8f8d5c5e5b5a5d5c5b5a5
安装过程中这三个选项最容易出错:
安装完成后第一件事是更换软件源。我习惯用阿里云源,速度比官方源快3倍以上:
bash复制sudo sed -i 's|http://.*archive.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y
ROS的安装过程就像拆炸弹,稍有不慎就会引发依赖地狱。经过十几次安装失败后,我总结出这个稳定流程:
先安装这些看似无关但至关重要的依赖:
bash复制sudo apt install -y curl gnupg2 lsb-release build-essential \
libssl-dev libffi-dev python3-dev python3-pip
按照官方推荐方式设置源和密钥:
bash复制sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
安装完整桌面版ROS Noetic(约800MB):
bash复制sudo apt install -y ros-noetic-desktop-full
很多人source完环境变量就以为完事了,其实还有两个关键操作:
bash复制echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
echo "export ROS_HOSTNAME=localhost" >> ~/.bashrc
echo "export ROS_MASTER_URI=http://localhost:11311" >> ~/.bashrc
source ~/.bashrc
安装常用工具时有个隐藏坑——python-rosdep这个包已经废弃,必须用python3版本:
bash复制sudo apt install -y python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool
sudo rosdep init
rosdep update
Gazebo的官方安装指南缺少关键细节。比如直接安装gazebo11会默认使用Ogre渲染器,但在虚拟机中需要改用GLX:
先添加OSRF源并安装:
bash复制sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt update
sudo apt install -y gazebo11 libgazebo11-dev
强制使用GLX渲染(在虚拟机中必须设置):
bash复制echo "export SVGA_VGPU10=0" >> ~/.bashrc
echo "export LIBGL_ALWAYS_SOFTWARE=1" >> ~/.bashrc
source ~/.bashrc
官方模型库下载速度极慢,可以用国内镜像:
bash复制cd ~/.gazebo
git clone https://gitee.com/mirrors/gazebo_models.git
sudo cp -r gazebo_models/* /usr/share/gazebo-11/models/
水下仿真需要额外添加这些模型:
bash复制wget https://github.com/underwater-robot-competition/urc_gazebo/raw/master/models/underwater_world/model.sdf -P /usr/share/gazebo-11/models/underwater_world
当所有前置条件就绪后,UUV Simulator的安装反而最简单。关键是要用noetic分支:
bash复制mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
bash复制cd ~/catkin_ws/src
git clone --branch noetic https://gitee.com/mirrors/uuv_simulator.git
这一步最容易卡住,需要手动安装缺失的依赖:
bash复制sudo apt install -y ros-noetic-geodesy ros-noetic-pcl-ros ros-noetic-tf2-sensor-msgs
rosdep install --from-paths src --ignore-src -r -y
编译时内存不足会导致随机错误,可以限制并行编译任务数:
bash复制catkin_make -j2 # 限制使用2个线程
成功编译后,用这个命令测试水下场景:
bash复制roslaunch uuv_gazebo_worlds empty_underwater_world.launch
如果看到蓝色水下场景和默认的UUV模型,说明所有组件已正确安装。第一次启动可能需要加载几分钟,耐心等待即可。