1. 环境准备与依赖安装在Ubuntu 18.04上部署ORB-SLAM3之前我们需要先搭建好开发环境。这个环节就像盖房子前要打地基一样重要我遇到过不少初学者因为跳过这步导致后续编译失败。下面我会详细列出每个依赖的安装方法以及可能遇到的坑。首先打开终端CtrlAltT更新软件源是个好习惯sudo apt-get update sudo apt-get upgradeORB-SLAM3的核心依赖包括Pangolin3D可视化工具建议安装0.6版本最新版可能有兼容问题Eigen3至少需要3.3.7版本Ubuntu 18.04默认仓库的版本太旧OpenCV推荐3.4.10ROS melodic自带的是3.2.0功能不全DBoW2/g2oORB-SLAM3自带修改版无需单独安装安装Pangolin时最容易出问题的是GLFW依赖sudo apt-get install libglfw3-dev libglew-dev cd ~ git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin git checkout v0.6 mkdir build cd build cmake .. make -j4 sudo make installEigen3需要手动升级这里有个小技巧——先卸载旧版再安装sudo apt-get remove libeigen3-dev wget https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz tar -xzvf eigen-3.3.7.tar.gz cd eigen-3.3.7 mkdir build cd build cmake .. sudo make install sudo ln -s /usr/local/include/eigen3/Eigen /usr/local/include/Eigen注意如果之前安装过ROS melodic可能会遇到OpenCV版本冲突。建议通过cv_bridge使用ROS自带的OpenCV其他部分用自行编译的版本。2. 源码获取与编译现在来到最关键的环节——获取和编译ORB-SLAM3源码。我推荐使用catkin工作空间管理这样方便后续与ROS集成。整个过程就像组装乐高积木需要严格按照步骤进行。创建工作空间名字可自定义mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src获取源码时要注意官方仓库有两个活跃分支master分支稳定版推荐初学者使用develop分支最新功能但可能有buggit clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 chmod x build.sh ./build.sh编译过程中常见问题及解决方案找不到Eigen3检查是否创建了符号链接见1.4节Pangolin报错确认安装的是0.6版本OpenCV版本冲突在CMakeLists.txt中指定路径find_package(OpenCV 3.4 REQUIRED) include_directories(/usr/local/include/opencv4)如果一切顺利最后应该看到类似输出[100%] Built target ORB_SLAM3 [100%] Built target mono_euroc [100%] Built target mono_inertial_euroc ...3. EuRoC数据集配置EuRoC数据集是SLAM领域的MNIST包含微型飞行器在室内环境采集的视觉-惯性数据。官方下载速度感人这里分享我的实战经验。数据集目录结构应该是这样的EuRoC/ ├── MH_01_easy │ ├── mav0 │ │ ├── cam0 │ │ ├── imu0 │ │ └── ... ├── MH_02_medium └── ...推荐使用我整理的百度网盘镜像解压密码slam2023# 创建数据集目录 mkdir -p ~/Datasets/EuRoC cd ~/Datasets # 下载后解压 unzip EuRoC_MH_01_easy.zip -d EuRoC/数据集验证方法ls EuRoC/MH_01_easy/mav0/cam0/data | wc -l # 应该显示268张图像实用技巧使用tree -L 3命令查看目录结构确保数据完整。如果时间戳文件缺失可以从ORB-SLAM3的Examples目录复制对应序列的文件。4. 运行单目-惯性SLAM示例终于来到最激动人心的环节我们将用MH_01_easy数据集测试单目-惯性模式这也是ORB-SLAM3的亮点功能。首先准备词汇表文件约50MBcd ~/catkin_ws/src/ORB_SLAM3 ./Vocabulary/ORBvoc.txt修改启动脚本的路径参数gedit Examples/Monocular-Inertial/mono_inertial_euroc.sh将路径改为你的实际数据集位置例如./Examples/Monocular-Inertial/mono_inertial_euroc \ ./Vocabulary/ORBvoc.txt \ ./Examples/Monocular-Inertial/EuRoC.yaml \ /home/yourname/Datasets/EuRoC/MH_01_easy/mav0 \ ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt \ dataset-MH01_monoi运行时会看到两个窗口Pangolin可视化显示3D地图点和相机轨迹图像窗口显示特征点匹配常见问题排查段错误(Segmentation fault)检查数据集路径是否包含中文或空格找不到时间戳文件确认MH01.txt存在于TimeStamps目录图像加载失败检查数据集目录权限建议chmod 7555. ROS节点集成与实时测试对于机器人开发者ROS集成是必备技能。ORB-SLAM3提供了ROS接口但配置过程有几个隐藏坑点。首先修改环境变量gedit ~/.bashrc # 添加以下内容路径根据实际情况修改 export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:/home/yourname/catkin_ws/src/ORB_SLAM3/Examples_old/ROS source ~/.bashrc编译ROS节点时需要特别注意cd Examples_old/ROS/ORB_SLAM3 mkdir build cd build cmake .. -DROS_BUILD_TYPERelease make -j4实时测试建议使用V1_03_difficult.bag挑战性场景# 终端1启动ORB-SLAM3 rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples_old/Stereo/EuRoC.yaml true # 终端2播放bag文件 rosbag play --pause V1_03_difficult.bag \ /cam0/image_raw:/camera/left/image_raw \ /cam1/image_raw:/camera/right/image_raw \ /imu0:/imu性能优化技巧在EuRoC.yaml中调整特征点数量默认1200可能过多使用--loop参数重复播放bag文件测试闭环检测在rviz中添加/orb_slam3/tracked_points话题可视化6. 深度调优与问题排查经过上百次实验我总结出这些提升ORB-SLAM3性能的秘诀。就像赛车调校合适的参数能让算法发挥最大威力。关键配置文件EuRoC.yaml相机-IMU标定参数Asus.yaml普通相机参数模板TUM1.yaml公开数据集参数重点调整参数# 特征点相关 ORBextractor.nFeatures: 1200 ORBextractor.scaleFactor: 1.2 # IMU噪声参数 IMU.NoiseGyro: 1.7e-4 IMU.NoiseAcc: 2.0e-3 # 关键帧策略 KeyFrameCreation.fastTh: 12常见错误代码解读Error 1IMU数据不同步 → 检查时间戳对齐Error 2特征点不足 → 增加nFeatures或降低fastThError 3地图点漂移 → 重新标定IMU参数调试时建议启用日志./Examples/Monocular-Inertial/mono_inertial_euroc ... log.txt 21 grep ERROR\|WARNING log.txt7. 进阶技巧与扩展应用当你成功运行基础示例后可以尝试这些我实战验证过的进阶玩法让ORB-SLAM3发挥更大价值。多传感器融合方案RGB-D模式使用Realsense D435i等设备./Examples/RGB-D/rgbd_tum \ Vocabulary/ORBvoc.txt \ Examples/RGB-D/TUM1.yaml \ /path/to/associations.txt纯视觉定位模式加载已有地图./Examples/Monocular/mono_tum \ Vocabulary/ORBvoc.txt \ Examples/Monocular/TUM1.yaml \ true # 启用定位模式性能评估工具ATE评估使用EVO工具包evo_ape tum groundtruth.txt estimated.txt -vaRPE评估分析相对位姿误差evo_rpe tum groundtruth.txt estimated.txt -va嵌入式部署技巧交叉编译时添加-marchnative优化使用-DCMAKE_BUILD_TYPERelease编译在Jetson平台启用CUDA加速
从零部署ORB-SLAM3:在Ubuntu 18.04上玩转EuRoC数据集
1. 环境准备与依赖安装在Ubuntu 18.04上部署ORB-SLAM3之前我们需要先搭建好开发环境。这个环节就像盖房子前要打地基一样重要我遇到过不少初学者因为跳过这步导致后续编译失败。下面我会详细列出每个依赖的安装方法以及可能遇到的坑。首先打开终端CtrlAltT更新软件源是个好习惯sudo apt-get update sudo apt-get upgradeORB-SLAM3的核心依赖包括Pangolin3D可视化工具建议安装0.6版本最新版可能有兼容问题Eigen3至少需要3.3.7版本Ubuntu 18.04默认仓库的版本太旧OpenCV推荐3.4.10ROS melodic自带的是3.2.0功能不全DBoW2/g2oORB-SLAM3自带修改版无需单独安装安装Pangolin时最容易出问题的是GLFW依赖sudo apt-get install libglfw3-dev libglew-dev cd ~ git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin git checkout v0.6 mkdir build cd build cmake .. make -j4 sudo make installEigen3需要手动升级这里有个小技巧——先卸载旧版再安装sudo apt-get remove libeigen3-dev wget https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz tar -xzvf eigen-3.3.7.tar.gz cd eigen-3.3.7 mkdir build cd build cmake .. sudo make install sudo ln -s /usr/local/include/eigen3/Eigen /usr/local/include/Eigen注意如果之前安装过ROS melodic可能会遇到OpenCV版本冲突。建议通过cv_bridge使用ROS自带的OpenCV其他部分用自行编译的版本。2. 源码获取与编译现在来到最关键的环节——获取和编译ORB-SLAM3源码。我推荐使用catkin工作空间管理这样方便后续与ROS集成。整个过程就像组装乐高积木需要严格按照步骤进行。创建工作空间名字可自定义mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src获取源码时要注意官方仓库有两个活跃分支master分支稳定版推荐初学者使用develop分支最新功能但可能有buggit clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 chmod x build.sh ./build.sh编译过程中常见问题及解决方案找不到Eigen3检查是否创建了符号链接见1.4节Pangolin报错确认安装的是0.6版本OpenCV版本冲突在CMakeLists.txt中指定路径find_package(OpenCV 3.4 REQUIRED) include_directories(/usr/local/include/opencv4)如果一切顺利最后应该看到类似输出[100%] Built target ORB_SLAM3 [100%] Built target mono_euroc [100%] Built target mono_inertial_euroc ...3. EuRoC数据集配置EuRoC数据集是SLAM领域的MNIST包含微型飞行器在室内环境采集的视觉-惯性数据。官方下载速度感人这里分享我的实战经验。数据集目录结构应该是这样的EuRoC/ ├── MH_01_easy │ ├── mav0 │ │ ├── cam0 │ │ ├── imu0 │ │ └── ... ├── MH_02_medium └── ...推荐使用我整理的百度网盘镜像解压密码slam2023# 创建数据集目录 mkdir -p ~/Datasets/EuRoC cd ~/Datasets # 下载后解压 unzip EuRoC_MH_01_easy.zip -d EuRoC/数据集验证方法ls EuRoC/MH_01_easy/mav0/cam0/data | wc -l # 应该显示268张图像实用技巧使用tree -L 3命令查看目录结构确保数据完整。如果时间戳文件缺失可以从ORB-SLAM3的Examples目录复制对应序列的文件。4. 运行单目-惯性SLAM示例终于来到最激动人心的环节我们将用MH_01_easy数据集测试单目-惯性模式这也是ORB-SLAM3的亮点功能。首先准备词汇表文件约50MBcd ~/catkin_ws/src/ORB_SLAM3 ./Vocabulary/ORBvoc.txt修改启动脚本的路径参数gedit Examples/Monocular-Inertial/mono_inertial_euroc.sh将路径改为你的实际数据集位置例如./Examples/Monocular-Inertial/mono_inertial_euroc \ ./Vocabulary/ORBvoc.txt \ ./Examples/Monocular-Inertial/EuRoC.yaml \ /home/yourname/Datasets/EuRoC/MH_01_easy/mav0 \ ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt \ dataset-MH01_monoi运行时会看到两个窗口Pangolin可视化显示3D地图点和相机轨迹图像窗口显示特征点匹配常见问题排查段错误(Segmentation fault)检查数据集路径是否包含中文或空格找不到时间戳文件确认MH01.txt存在于TimeStamps目录图像加载失败检查数据集目录权限建议chmod 7555. ROS节点集成与实时测试对于机器人开发者ROS集成是必备技能。ORB-SLAM3提供了ROS接口但配置过程有几个隐藏坑点。首先修改环境变量gedit ~/.bashrc # 添加以下内容路径根据实际情况修改 export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:/home/yourname/catkin_ws/src/ORB_SLAM3/Examples_old/ROS source ~/.bashrc编译ROS节点时需要特别注意cd Examples_old/ROS/ORB_SLAM3 mkdir build cd build cmake .. -DROS_BUILD_TYPERelease make -j4实时测试建议使用V1_03_difficult.bag挑战性场景# 终端1启动ORB-SLAM3 rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples_old/Stereo/EuRoC.yaml true # 终端2播放bag文件 rosbag play --pause V1_03_difficult.bag \ /cam0/image_raw:/camera/left/image_raw \ /cam1/image_raw:/camera/right/image_raw \ /imu0:/imu性能优化技巧在EuRoC.yaml中调整特征点数量默认1200可能过多使用--loop参数重复播放bag文件测试闭环检测在rviz中添加/orb_slam3/tracked_points话题可视化6. 深度调优与问题排查经过上百次实验我总结出这些提升ORB-SLAM3性能的秘诀。就像赛车调校合适的参数能让算法发挥最大威力。关键配置文件EuRoC.yaml相机-IMU标定参数Asus.yaml普通相机参数模板TUM1.yaml公开数据集参数重点调整参数# 特征点相关 ORBextractor.nFeatures: 1200 ORBextractor.scaleFactor: 1.2 # IMU噪声参数 IMU.NoiseGyro: 1.7e-4 IMU.NoiseAcc: 2.0e-3 # 关键帧策略 KeyFrameCreation.fastTh: 12常见错误代码解读Error 1IMU数据不同步 → 检查时间戳对齐Error 2特征点不足 → 增加nFeatures或降低fastThError 3地图点漂移 → 重新标定IMU参数调试时建议启用日志./Examples/Monocular-Inertial/mono_inertial_euroc ... log.txt 21 grep ERROR\|WARNING log.txt7. 进阶技巧与扩展应用当你成功运行基础示例后可以尝试这些我实战验证过的进阶玩法让ORB-SLAM3发挥更大价值。多传感器融合方案RGB-D模式使用Realsense D435i等设备./Examples/RGB-D/rgbd_tum \ Vocabulary/ORBvoc.txt \ Examples/RGB-D/TUM1.yaml \ /path/to/associations.txt纯视觉定位模式加载已有地图./Examples/Monocular/mono_tum \ Vocabulary/ORBvoc.txt \ Examples/Monocular/TUM1.yaml \ true # 启用定位模式性能评估工具ATE评估使用EVO工具包evo_ape tum groundtruth.txt estimated.txt -vaRPE评估分析相对位姿误差evo_rpe tum groundtruth.txt estimated.txt -va嵌入式部署技巧交叉编译时添加-marchnative优化使用-DCMAKE_BUILD_TYPERelease编译在Jetson平台启用CUDA加速