在Ubuntu 20.04上搞定DAVE和UUV Simulator一个水下机器人开发者的踩坑与填坑实录水下机器人开发是一个充满挑战的领域而仿真环境的搭建往往是开发者们面临的第一道难关。作为一名长期从事水下机器人开发的工程师我在配置DAVE项目和UUV Simulator的过程中踩过不少坑也积累了一些宝贵的经验。本文将分享我在Ubuntu 20.04系统上配置这些工具时的实战经验希望能帮助后来者少走弯路。1. 环境准备与基础配置在开始之前我们需要确保系统环境满足基本要求。Ubuntu 20.04是一个相对稳定的选择它对ROS Noetic的支持也最为完善。以下是基础环境配置的关键步骤系统更新与依赖安装sudo apt update sudo apt upgrade -y sudo apt install -y git python3-pip build-essential cmakeROS Noetic安装sudo sh -c echo deb http://packages.ros.org/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 -y ros-noetic-desktop-full环境变量设置echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc提示建议在开始前创建一个新的工作空间避免与现有ROS项目产生冲突。2. DAVE项目与UUV Simulator安装DAVE项目和UUV Simulator是水下机器人仿真的核心组件它们的安装过程相对复杂需要特别注意依赖关系。2.1 创建工作空间与获取源码首先创建一个专门的工作空间mkdir -p ~/uuv_ws/src cd ~/uuv_ws/src然后获取DAVE项目源码git clone https://github.com/Field-Robotics-Lab/dave.git2.2 安装依赖与子模块使用vcstool工具导入所有必要的仓库sudo pip3 install -U vcstool vcs import --skip-existing --input dave/extras/repos/dave_sim.repos . vcs import --skip-existing --input dave/extras/repos/multibeam_sim.repos .如果网络问题导致下载失败可以手动克隆各个仓库git clone https://github.com/Field-Robotics-Lab/dockwater.git git clone https://github.com/Field-Robotics-Lab/ds_msgs.git git clone https://github.com/Field-Robotics-Lab/ds_sim.git git clone https://github.com/uuvsimulator/eca_a9.git git clone https://github.com/uuvsimulator/rexrov2.git git clone https://github.com/field-robotics-lab/uuv_manipulators git clone https://github.com/field-robotics-lab/uuv_simulator git clone https://github.com/field-robotics-lab/nps_uw_multibeam_sonar git clone https://github.com/apl-ocean-engineering/hydrographic_msgs.git2.3 构建工作空间安装catkin工具并配置工作空间pip3 install -U catkin_tools cd ~/uuv_ws catkin config --install catkin build3. 常见问题与解决方案在实际安装过程中可能会遇到各种问题。以下是我遇到的一些典型问题及其解决方案。3.1 CUDA编译器路径问题在构建nps_uw_multibeam_sonar包时可能会遇到CUDA编译器找不到的错误。解决方法如下确认CUDA已正确安装nvcc --version如果CUDA已安装但仍报错可以手动指定编译器路径gedit ~/uuv_ws/src/nps_uw_multibeam_sonar/CMakeLists.txt在文件中添加if (NOT CMAKE_CUDA_COMPILER) set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc) endif()注意路径中的CUDA版本号需要根据实际安装情况调整。3.2 URDF宏错误在运行某些demo时可能会遇到类似unknown macro name: xacro:cylinder_inertial_matrix的错误。这通常是由于xacro宏定义缺失导致的。解决方法确保所有依赖包都已正确安装检查URDF文件中引用的宏是否存在于相关包中必要时手动添加缺失的宏定义3.3 Gazebo无法正常关闭有时Gazebo客户端或服务器可能无法通过Ctrl-C正常关闭。可以尝试以下命令强制终止pkill gzclient pkill gzserver4. 测试与场景运行完成安装后可以通过运行各种场景来测试配置是否成功。4.1 声呐仿真测试运行基本的声呐仿真测试roslaunch nps_uw_multibeam_sonar sonar_tank_blueview_p900_nps_multibeam.launch4.2 水下世界场景启动不同的水下环境场景海底世界roslaunch uuv_gazebo_worlds auv_underwater_world.launch沉船场景roslaunch uuv_gazebo_worlds herkules_ship_wreck.launch湖泊场景roslaunch uuv_gazebo_worlds lake.launch4.3 其他可用场景DAVE项目还提供了更多丰富的场景场景名称启动命令描述Mangaliaroslaunch uuv_gazebo_worlds mangalia.launch复杂海底地形Munkholmenroslaunch uuv_gazebo_worlds munkholmen.launch岛屿周边环境Ocean Wavesroslaunch uuv_gazebo_worlds ocean_waves.launch带波浪的海洋环境5. 性能优化与调试技巧在实际使用中仿真性能往往是一个关键问题。以下是一些优化建议Gazebo性能优化降低渲染质量关闭不必要的传感器模拟使用--verbose参数启动Gazebo以查看详细日志ROS通信优化rosparam set /use_sim_time true export ROS_MASTER_URIhttp://localhost:11311常见调试命令查看节点列表rosnode list查看话题列表rostopic list查看服务列表rosservice list6. 高级配置与自定义对于需要深度定制的开发者可以考虑以下进阶配置自定义机器人模型修改URDF文件添加新传感器调整水动力学参数开发新场景使用Gazebo的世界文件格式创建自定义环境添加特定的海底地形特征多机器人仿真通过命名空间隔离多个机器人实例使用ROS的多机通信机制在实际项目中我发现最有效的调试方法是逐步验证每个组件。例如先确保基础ROS通信正常再测试Gazebo环境最后集成所有传感器和控制器。这种方法虽然耗时但能准确定位问题所在。
在Ubuntu 20.04上搞定DAVE和UUV Simulator:一个水下机器人开发者的踩坑与填坑实录
在Ubuntu 20.04上搞定DAVE和UUV Simulator一个水下机器人开发者的踩坑与填坑实录水下机器人开发是一个充满挑战的领域而仿真环境的搭建往往是开发者们面临的第一道难关。作为一名长期从事水下机器人开发的工程师我在配置DAVE项目和UUV Simulator的过程中踩过不少坑也积累了一些宝贵的经验。本文将分享我在Ubuntu 20.04系统上配置这些工具时的实战经验希望能帮助后来者少走弯路。1. 环境准备与基础配置在开始之前我们需要确保系统环境满足基本要求。Ubuntu 20.04是一个相对稳定的选择它对ROS Noetic的支持也最为完善。以下是基础环境配置的关键步骤系统更新与依赖安装sudo apt update sudo apt upgrade -y sudo apt install -y git python3-pip build-essential cmakeROS Noetic安装sudo sh -c echo deb http://packages.ros.org/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 -y ros-noetic-desktop-full环境变量设置echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc提示建议在开始前创建一个新的工作空间避免与现有ROS项目产生冲突。2. DAVE项目与UUV Simulator安装DAVE项目和UUV Simulator是水下机器人仿真的核心组件它们的安装过程相对复杂需要特别注意依赖关系。2.1 创建工作空间与获取源码首先创建一个专门的工作空间mkdir -p ~/uuv_ws/src cd ~/uuv_ws/src然后获取DAVE项目源码git clone https://github.com/Field-Robotics-Lab/dave.git2.2 安装依赖与子模块使用vcstool工具导入所有必要的仓库sudo pip3 install -U vcstool vcs import --skip-existing --input dave/extras/repos/dave_sim.repos . vcs import --skip-existing --input dave/extras/repos/multibeam_sim.repos .如果网络问题导致下载失败可以手动克隆各个仓库git clone https://github.com/Field-Robotics-Lab/dockwater.git git clone https://github.com/Field-Robotics-Lab/ds_msgs.git git clone https://github.com/Field-Robotics-Lab/ds_sim.git git clone https://github.com/uuvsimulator/eca_a9.git git clone https://github.com/uuvsimulator/rexrov2.git git clone https://github.com/field-robotics-lab/uuv_manipulators git clone https://github.com/field-robotics-lab/uuv_simulator git clone https://github.com/field-robotics-lab/nps_uw_multibeam_sonar git clone https://github.com/apl-ocean-engineering/hydrographic_msgs.git2.3 构建工作空间安装catkin工具并配置工作空间pip3 install -U catkin_tools cd ~/uuv_ws catkin config --install catkin build3. 常见问题与解决方案在实际安装过程中可能会遇到各种问题。以下是我遇到的一些典型问题及其解决方案。3.1 CUDA编译器路径问题在构建nps_uw_multibeam_sonar包时可能会遇到CUDA编译器找不到的错误。解决方法如下确认CUDA已正确安装nvcc --version如果CUDA已安装但仍报错可以手动指定编译器路径gedit ~/uuv_ws/src/nps_uw_multibeam_sonar/CMakeLists.txt在文件中添加if (NOT CMAKE_CUDA_COMPILER) set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc) endif()注意路径中的CUDA版本号需要根据实际安装情况调整。3.2 URDF宏错误在运行某些demo时可能会遇到类似unknown macro name: xacro:cylinder_inertial_matrix的错误。这通常是由于xacro宏定义缺失导致的。解决方法确保所有依赖包都已正确安装检查URDF文件中引用的宏是否存在于相关包中必要时手动添加缺失的宏定义3.3 Gazebo无法正常关闭有时Gazebo客户端或服务器可能无法通过Ctrl-C正常关闭。可以尝试以下命令强制终止pkill gzclient pkill gzserver4. 测试与场景运行完成安装后可以通过运行各种场景来测试配置是否成功。4.1 声呐仿真测试运行基本的声呐仿真测试roslaunch nps_uw_multibeam_sonar sonar_tank_blueview_p900_nps_multibeam.launch4.2 水下世界场景启动不同的水下环境场景海底世界roslaunch uuv_gazebo_worlds auv_underwater_world.launch沉船场景roslaunch uuv_gazebo_worlds herkules_ship_wreck.launch湖泊场景roslaunch uuv_gazebo_worlds lake.launch4.3 其他可用场景DAVE项目还提供了更多丰富的场景场景名称启动命令描述Mangaliaroslaunch uuv_gazebo_worlds mangalia.launch复杂海底地形Munkholmenroslaunch uuv_gazebo_worlds munkholmen.launch岛屿周边环境Ocean Wavesroslaunch uuv_gazebo_worlds ocean_waves.launch带波浪的海洋环境5. 性能优化与调试技巧在实际使用中仿真性能往往是一个关键问题。以下是一些优化建议Gazebo性能优化降低渲染质量关闭不必要的传感器模拟使用--verbose参数启动Gazebo以查看详细日志ROS通信优化rosparam set /use_sim_time true export ROS_MASTER_URIhttp://localhost:11311常见调试命令查看节点列表rosnode list查看话题列表rostopic list查看服务列表rosservice list6. 高级配置与自定义对于需要深度定制的开发者可以考虑以下进阶配置自定义机器人模型修改URDF文件添加新传感器调整水动力学参数开发新场景使用Gazebo的世界文件格式创建自定义环境添加特定的海底地形特征多机器人仿真通过命名空间隔离多个机器人实例使用ROS的多机通信机制在实际项目中我发现最有效的调试方法是逐步验证每个组件。例如先确保基础ROS通信正常再测试Gazebo环境最后集成所有传感器和控制器。这种方法虽然耗时但能准确定位问题所在。