
1. 环境准备Ubuntu 22.04基础配置刚接触SLAM的朋友可能会被ORB-SLAM3的部署吓到其实只要跟着步骤走完全可以在半小时内搞定。我最近在联想小新Pro16i7-12700H上实测从零开始到成功运行数据集只用了28分钟。先确保你的Ubuntu 22.04系统已经完成基础配置首先更新软件源这个步骤能避免后续90%的依赖问题sudo apt update sudo apt upgrade -y接着安装开发工具链这里有个小技巧——一次性安装所有基础组件sudo apt install -y git vim gcc g build-essential cmake遇到过不少新手卡在文本编辑环节推荐使用nano替代vi更友好sudo apt install -y nano2. 关键依赖库安装实战2.1 OpenCV 4.5编译指南ORB-SLAM3需要OpenCV支持但Ubuntu 22.04默认仓库的版本可能不兼容。我测试过4.5.5版本最稳定先安装依赖项注意比20.04多了一些新包sudo apt install -y libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev \ libjpeg-dev libswscale-dev libtiff-dev libpng-dev libopenexr-dev \ libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev python3-dev python3-numpy下载并编译OpenCV建议用国内镜像加速wget https://ghproxy.com/https://github.com/opencv/opencv/archive/4.5.5.tar.gz tar -xvf 4.5.5.tar.gz cd opencv-4.5.5 mkdir build cd build cmake -D CMAKE_BUILD_TYPERelease -D OPENCV_GENERATE_PKGCONFIGYES .. make -j$(nproc) sudo make install验证安装时有个常见坑点——新版pkg-config路径变化export PKG_CONFIG_PATH/usr/local/lib/pkgconfig pkg-config --modversion opencv42.2 Pangolin安装的避坑要点可视化工具Pangolin的安装最容易出问题特别是GLFW冲突。实测以下方法最可靠先卸载可能冲突的旧版sudo apt purge -y libglfw3-dev然后安装特定版本依赖sudo apt install -y libglew-dev libpython3.10-dev \ libwayland-dev libxkbcommon-dev wayland-protocols从源码编译安装必须加-DCPP11_NO_BOOST1参数git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake -DCPP11_NO_BOOST1 .. make -j$(nproc) sudo make install测试时如果出现黑屏试试这个修复命令sudo apt install -y mesa-utils libgl1-mesa-glx3. ORB-SLAM3源码编译详解3.1 获取和修改源码推荐使用带详细注释的改进版仓库git clone https://gitee.com/mirrors_ORB_SLAM3/ORB_SLAM3.git cd ORB_SLAM3必须修改的三个关键文件CMakeLists.txt将find_package(OpenCV 3.2)改为find_package(OpenCV 4.5 REQUIRED)删除find_package(Eigen3 3.1.0 REQUIRED)中的版本号Thirdparty/DBoW2/CMakeLists.txt同样修改OpenCV版本号为4.5Examples/Monocular/mono_euroc.cc将第83行false改为true启用可视化3.2 编译技巧与排错使用build.sh脚本编译前需要赋予权限chmod x build.sh ./build.sh如果遇到boost_thread报错试试这个解决方案sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_thread.so /usr/lib/x86_64-linux-gnu/libboost_thread-mt.so编译成功后建议测试Vocabulary加载./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt4. 数据集运行实战演示4.1 EuRoC数据集测试下载小型测试数据集约200MBwget http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_01_easy/MH_01_easy.zip unzip MH_01_easy.zip -d ~/Datasets/EuRoC运行单目示例注意修改yaml路径./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt \ Examples/Monocular/EuRoC.yaml ~/Datasets/EuRoC/MH_01_easy \ Examples/Monocular/EuRoC_TimeStamps/MH01.txt4.2 TUM数据集技巧对于RGB-D测试需要先生成关联文件python3 Examples/RGB-D/associate.py \ rgbd_dataset_freiburg3_walking_xyz/rgb.txt \ rgbd_dataset_freiburg3_walking_xyz/depth.txt associations.txt运行时注意相机参数匹配./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt \ Examples/RGB-D/TUM3.yaml \ rgbd_dataset_freiburg3_walking_xyz \ associations.txt常见问题排查如果出现段错误尝试禁用GPU加速export OMP_NUM_THREADS1可视化窗口卡顿时可以降低图像分辨率vim Examples/Monocular/EuRoC.yaml # 修改Camera.width和Camera.height为640x480最后提醒大家首次运行建议在终端前加gdb调试gdb --args ./Examples/Monocular/mono_euroc [参数...]