本文记录 YOPO-ROS2 在 ROS 2 Humble 下的构建和运行步骤:先分别编译控制器和传感器仿真器两个工作空间,再用 5 个终端依次启动仿真器、策略节点和可视化,最后整理了三个编译和运行时的常见问题。
项目地址:https://github.com/dreamer198/YOPO-ROS2.git
环境依赖
| 依赖 |
版本要求 |
| ROS 2 |
Humble |
| CUDA |
12.6+ |
| GCC/G++ |
11 |
| PyTorch |
2.4.1+cu118 |
| Eigen3、PCL、OpenCV、yaml-cpp |
系统安装 |
一、构建
1. Controller 工作空间
1 2 3 4
| cd ~/code/YOPO-ROS2/Controller source /opt/ros/humble/setup.bash colcon build --packages-select cmake_utils --symlink-install colcon build
|
2. Simulator 工作空间
1 2 3
| cd ~/code/YOPO-ROS2/Simulator source /opt/ros/humble/setup.bash colcon build
|
3. YOPO 的 Python 依赖
1 2
| cd ~/code/YOPO-ROS2/YOPO pip install -r requirements.txt
|
二、运行(5 个终端)
终端 1:四旋翼仿真器
1 2 3 4
| cd ~/code/YOPO-ROS2/Controller source /opt/ros/humble/setup.bash source install/setup.bash ros2 launch so3_quadrotor_simulator simulator_attitude_control.launch.py
|
终端 2:CUDA 传感器仿真器
1 2 3 4
| cd ~/code/YOPO-ROS2/Simulator source /opt/ros/humble/setup.bash source install/setup.bash ros2 run sensor_simulator sensor_simulator_cuda
|
终端 3:YOPO 策略节点
1 2 3 4
| cd ~/code/YOPO-ROS2/YOPO source /opt/ros/humble/setup.bash source ~/code/YOPO-ROS2/Controller/install/setup.bash python3 test_yopo_ros.py
|
终端 4:RViz 可视化
1
| rviz2 -d ~/code/YOPO-ROS2/YOPO/yopo2.rviz
|
终端 5:发送目标点
YOPO 的默认目标是 [50, 0, 2],无人机很快就会到达。发送一个新目标点,就能让它重新飞行:
1 2 3
| source /opt/ros/humble/setup.bash ros2 topic pub --once /move_base_simple/goal geometry_msgs/msg/PoseStamped \ "{header: {frame_id: 'world'}, pose: {position: {x: 100.0, y: 20.0, z: 2.0}, orientation: {w: 1.0}}}"
|
目标坐标修改命令中的 x、y、z 即可。
三、常见问题
1. CUDA 版本不匹配
Simulator 的 CMakeLists.txt 默认要求 CUDA 12.8。本机 CUDA 版本不同(如 12.6)时,修改 Simulator/src/CMakeLists.txt 第 46 行:
1 2 3 4
| find_package(CUDA 12.8 EXACT REQUIRED)
find_package(CUDA REQUIRED)
|
2. RViz 报错找不到 uav.dae
源码中写死了原作者的本地路径。修改 Controller/src/so3_quadrotor_simulator/src/quadrotor_simulator_so3.cpp 第 377 行,改用 ament_index_cpp 动态获取包路径:
1 2 3 4 5
| meshROS.mesh_resource = "file:///home/hu/YOPO_backup/YOPO/Controller/src/so3_quadrotor_simulator/config/uav.dae";
std::string pkg_path = ament_index_cpp::get_package_share_directory("so3_quadrotor_simulator"); meshROS.mesh_resource = "file://" + pkg_path + "/config/uav.dae";
|
修改后重新编译:
1 2
| cd ~/code/YOPO-ROS2/Controller colcon build --packages-select so3_quadrotor_simulator
|
3. pip 依赖冲突
安装 Python 依赖时,可能出现 numpy、empy 与 ultralytics、bloom 等包的版本冲突警告。这些警告不影响 YOPO 运行,可以忽略。