1. 环境准备搭建ROS2 Humble的基础舞台第一次接触机器人仿真时最头疼的就是环境配置。去年帮学生调试水下机器人项目光是处理依赖冲突就花了三天。后来总结出这套标准化流程现在从零到Gazebo界面弹出最快只要18分钟。操作系统选择推荐Ubuntu 22.04 LTS这是ROS2 Humble的官方支持版本。我试过在20.04上强行安装结果编译时各种库版本冲突。如果你用Windows建议直接上WSL2实测性能损失不到7%。先来更新基础工具链sudo apt-get update sudo apt-get install -y \ lsb-release \ curl \ gnupg \ git \ python3-pip注意所有apt操作建议挂上-y参数避免交互式确认打断自动化流程。曾经在批量部署时忘了加这个参数导致脚本卡住三小时没人发现。国内用户可能会遇到下载速度慢的问题这里分享两个实测有效的镜像源配置技巧修改/etc/apt/sources.list将archive.ubuntu.com替换为mirrors.aliyun.com对于ROS官方源可以用清华镜像站替代sudo sh -c . /etc/lsb-release echo deb https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/ lsb_release -cs main /etc/apt/sources.list.d/ros2.list2. 核心安装ROS2 Humble的三种部署方案2.1 官方推荐安装方式最稳妥的方法是按照ROS官网的指导sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null sudo apt-get update sudo apt-get install ros-humble-desktop这个方案会安装完整的桌面环境包括RVIZ2、Gazebo等工具占用约3.5GB磁盘空间。如果只是做仿真开发可以改用ros-humble-ros-base版本能节省40%空间。2.2 鱼香ROS一键安装国内开发者王斌维护的鱼香ROS脚本确实方便特别适合快速验证场景wget http://fishros.com/install -O fishros . fishros运行后会出现交互菜单选择安装ROS2 Humble即可。这个脚本会自动处理时区设置、镜像源配置等细节实测比手动安装快30%。不过要注意脚本会修改你的.bashrc文件如果已有ROS1环境可能会产生冲突。上周有个同事的项目就因为这个导致rosrun命令混乱后来发现是PATH变量被覆盖了。2.3 容器化部署方案对于需要环境隔离的场景推荐使用Docker方案。这是我常用的启动命令docker run -it --nethost \ --envDISPLAY \ --volume$HOME/.Xauthority:/root/.Xauthority:rw \ --device/dev/dri \ osrf/ros:humble-desktop这种方式的优势是可以随时销毁重建环境特别适合教学演示。不过要注意显卡直通配置否则Gazebo会报GLX错误。3. Gazebo Garden的特别配置VRX仿真环境需要Gazebo Garden原Ignition Gazebo这是很多新手容易踩坑的地方。去年参加VRX比赛时有队伍因为版本不匹配导致浮筒物理参数全部失效。关键安装步骤sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/gazebo-stable.list /dev/null sudo apt-get update sudo apt-get install gz-garden安装完成后务必检查版本兼容性gz sim --versions输出应该包含Garden字样。如果显示Fortress等旧版本需要先执行sudo apt remove gz-fortress等清理命令。VRX专用桥接包安装sudo apt-get install ros-humble-ros-gz-sim这个包负责ROS2与Gazebo之间的通信转换缺少它会导致话题无法互通。曾经有个水下机械臂项目就因为这个包版本不对关节控制指令全部丢失。4. VRX工作空间构建实战4.1 创建工作区建议单独为VRX创建workspace避免与其他项目冲突mkdir -p ~/vrx_ws/src cd ~/vrx_ws/src git clone -b humble https://github.com/osrf/vrx.git如果GitHub克隆太慢可以用Gitee镜像git clone -b humble https://gitee.com/mirrors_osrf/vrx.git4.2 解决依赖问题VRX的依赖项比较多推荐使用rosdep自动处理sudo apt install python3-rosdep sudo rosdep init rosdep update rosdep install --from-paths . --ignore-src -y常见问题处理如果报错Unsupported OS编辑/etc/ros/rosdep/sources.list.d/20-default.list将ubuntu改为debian对于PROJ库缺失错误需要手动安装sudo apt-get install libproj-dev4.3 编译技巧使用merge-install参数可以优化部署结构cd ~/vrx_ws colcon build --merge-install --symlink-install加上--symlink-install能在开发时实时反映代码修改省去重复编译的麻烦。编译完成后别忘记source环境source ~/vrx_ws/install/setup.bash建议把这行加入.bashrc但要注意source顺序ROS2环境要在最前面。5. 启动VRX仿真环境的那些坑5.1 模型下载问题第一次启动时会自动下载约2.3GB的3D模型国内用户经常卡在这一步。这里有个取巧方案python3 download_collection.py -o OpenRobotics -c vrx如果下载中断可以手动创建缓存目录mkdir -p ~/.gz/fuel/fuel.gazebosim.org/ cp -r 已下载的模型 ~/.gz/fuel/fuel.gazebosim.org/5.2 比赛场景启动标准启动命令ros2 launch vrx_gz competition.launch.py world:sydney_regatta如果Gazebo界面黑屏可能是显卡驱动问题试试加上export LIBGL_ALWAYS_SOFTWARE15.3 性能优化技巧关闭阴影提升30%帧率gui shadows0/shadows /gui降低水体质量export GZ_SIM_RESOURCE_PATH~/vrx_ws/src/vrx/vrx_gazebo/worlds使用headless模式节省资源ros2 launch vrx_gz competition.launch.py headless:true6. 调试与可视化工具链6.1 RViz2插件配置在RViz中添加Gazebo连接Display: - Class: rviz2/RobotModel Description: 3D model of the robot Name: RobotModel Topic: /robot_description6.2 话题监控技巧查看所有活跃话题ros2 topic list监控船只姿态数据ros2 topic echo /wamv/sensors/imu/imu/data6.3 自定义传感器配置修改相机参数示例sensor namecamera typecamera update_rate30/update_rate camera horizontal_fov1.047/horizontal_fov image width1280/width height720/height /image /camera /sensor7. 进阶开发指南7.1 添加自定义机器人在vrx_gazebo/models目录下新建文件夹需要包含model.config - 元数据描述model.sdf - 物理参数定义meshes/ - 3D模型文件7.2 修改比赛规则调整得分规则示例scoring_plugin ScoringPlugin() scoring_plugin.set_param(time_limit, 300) # 5分钟赛制7.3 多船对抗仿真启动多智能体环境ros2 launch vrx_gz multi_robot.launch.py num_robots:4需要提前在world文件中定义spawn_points。去年调试多船通信时发现一个典型问题当超过6艘船同时发布TF数据时会出现时间戳同步错误。后来通过给每艘船设置独立的namespace解决robot_namespacewamv_{id}/robot_namespace