1. 环境准备与依赖安装在开始之前我们需要确保系统环境已经准备就绪。Ubuntu 20.04作为长期支持版本提供了稳定的基础环境。我建议使用全新安装的系统避免之前安装的软件包造成冲突。首先更新系统软件包sudo apt update sudo apt upgrade -yROS Noetic是官方推荐的Ubuntu 20.04配套版本安装完整桌面版sudo apt install ros-noetic-desktop-fullORB-SLAM3的编译依赖较多需要提前安装sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev特别提醒OpenCV版本需要3.2以上但不要超过4.5否则可能会出现兼容性问题。我实测过OpenCV 4.2和4.4都能正常工作。2. USB摄像头驱动配置市面上常见的USB摄像头大多使用uvc驱动但要让它在ROS中工作顺畅还需要一些额外配置。先安装usb_cam包cd ~/catkin_ws/src git clone https://github.com/ros-drivers/usb_cam.git cd .. catkin_make测试摄像头是否被识别ls /dev/video*如果能看到类似/dev/video0的设备说明系统已经识别摄像头。接下来创建测试用的launch文件launch node nameusb_cam pkgusb_cam typeusb_cam_node outputscreen param namevideo_device value/dev/video0/ param nameimage_width value640/ param nameimage_height value480/ param namepixel_format valueyuyv/ param namecamera_frame_id valueusb_cam/ param nameio_method valuemmap/ /node /launch保存为usb_cam-test.launch后可以用以下命令测试roslaunch usb_cam usb_cam-test.launch rostopic echo /usb_cam/image_raw3. ORB-SLAM3编译与ROS集成ORB-SLAM3的GitHub仓库经常更新建议使用稳定分支git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3 cd ORB_SLAM3 chmod x build.sh ./build.shROS支持需要额外编译chmod x build_ros.sh ./build_ros.sh这里有个常见坑点如果遇到Eigen3版本冲突可以尝试指定路径export Eigen3_DIR/usr/include/eigen3编译完成后需要配置环境变量。编辑~/.bashrc文件在末尾添加export ROS_PACKAGE_PATH${ROS_PACKAGE_PATH}:/home/你的用户名/ORB_SAM3/Examples/ROS4. 实时SLAM系统联调现在到了最关键的整合环节。我们需要三个终端窗口分别运行不同组件第一个窗口启动ROS核心服务roscore第二个窗口启动摄像头节点roslaunch usb_cam usb_cam-test.launch第三个窗口启动ORB-SLAM3rosrun ORB_SLAM3 Mono PATH_TO_VOCABULARY/ORBvoc.txt PATH_TO_SETTINGS_FILE/Asus.yaml实际使用中我发现几个优化点摄像头帧率最好设置在30fps以上图像分辨率640x480是个不错的平衡点环境光照要充足ORB特征点对光线敏感5. 参数调优与性能提升要让SLAM系统跑得流畅参数调优必不可少。首先是摄像头参数编辑Asus.yaml文件Camera.fps: 30 Camera.width: 640 Camera.height: 480ORB-SLAM3的关键参数ORBextractor.nFeatures: 1000 ORBextractor.scaleFactor: 1.2 ORBextractor.nLevels: 8我在实际测试中发现对于USB摄像头适当降低nFeatures可以提升实时性800-1000是个不错的范围。如果CPU性能较强可以适当增加。6. 常见问题排查遇到问题不要慌这里分享几个我踩过的坑问题1启动ORB-SLAM3时报错Failed to load vocabulary 解决方法检查路径是否正确特别注意ORBvoc.txt文件路径要绝对路径问题2摄像头图像显示但SLAM不工作 解决方法确认话题名称匹配默认应该是/usb_cam/image_raw问题3系统运行卡顿 解决方法尝试关闭其他程序或者降低摄像头分辨率和帧率问题4特征点跟踪不稳定 解决方法检查环境光照避免纯色墙面或反光表面7. 进阶技巧与扩展当基础功能跑通后可以尝试以下进阶操作保存地图和轨迹rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Settings/Asus.yaml map.bin加载已有地图rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Settings/Asus.yaml false map.bin使用RGB-D摄像头 只需要修改启动命令和配置文件原理相同多机协同 可以通过ROS的分布式功能实现多机器人SLAM我在实际项目中发现USB摄像头的延迟问题可以通过硬件加速缓解。如果预算允许考虑使用带硬件编码的摄像头模组。另外定期校准摄像头内参也能显著提升定位精度。