Ubuntu 20.04上ORB-SLAM3保姆级安装避坑指南(含虚拟机内存优化与OpenCV 3.4.3配置)
Ubuntu 20.04上ORB-SLAM3保姆级安装避坑指南含虚拟机内存优化与OpenCV 3.4.3配置在计算机视觉与机器人领域ORB-SLAM3作为当前最先进的视觉SLAM系统之一凭借其出色的实时定位与建图能力成为众多研究者和开发者的首选工具。然而对于刚接触Ubuntu环境或SLAM技术的新手而言从零开始配置ORB-SLAM3往往伴随着各种坑——从依赖库冲突到编译错误从内存不足到版本兼容性问题。本文将基于Ubuntu 20.04系统特别是虚拟机环境提供一份手把手、避坑导向的完整安装指南涵盖从系统准备到最终运行的每个关键步骤并针对常见错误提供已验证的解决方案。1. 环境准备与系统优化1.1 虚拟机配置建议对于使用VMware或VirtualBox等虚拟化工具的开发者合理的资源分配是成功编译ORB-SLAM3的前提。以下是经过验证的虚拟机配置方案内存分配至少16GB推荐20GBCPU核心数4核及以上交换空间当物理内存不足时可临时扩展交换空间sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile磁盘空间建议分配50GB以上源码及依赖库会占用大量空间提示编译过程中若遇到killed错误通常是由于内存不足导致系统终止了进程。此时应检查内存使用情况并考虑增加分配。1.2 基础依赖安装更新系统并安装必要的开发工具sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config安装版本控制工具和编辑器sudo apt-get install -y git vim2. 关键组件安装与配置2.1 Pangolin安装Pangolin是ORB-SLAM3用于可视化的轻量级库安装步骤如下克隆源码git clone https://github.com/stevenlovegrove/Pangolin.git安装依赖sudo apt-get install -y libglew-dev libpython2.7-dev编译安装cd Pangolin mkdir build cd build cmake .. make -j4 sudo make install2.2 OpenCV 3.4.3定制安装ORB-SLAM3对OpenCV版本有特定要求以下是经过验证的安装流程下载指定版本源码wget -O opencv-3.4.3.zip https://github.com/opencv/opencv/archive/3.4.3.zip unzip opencv-3.4.3.zip解决libjasper-dev依赖问题sudo add-apt-repository deb http://security.ubuntu.com/ubuntu xenial-security main sudo apt update sudo apt install -y libjasper1 libjasper-dev安装其他依赖sudo apt-get install -y libavcodec-dev libavformat-dev libjpeg-dev libtiff5-dev libswscale-dev离线配置ippicv从GitHub下载ippicv_2017u3_lnx_intel64_general_20170822.tgz修改opencv-3.4.3/3rdparty/ippicv/ippicv.cmake将下载URL替换为本地路径编译安装cd opencv-3.4.3 mkdir build cd build cmake -D CMAKE_BUILD_TYPERelease -D CMAKE_INSTALL_PREFIX/usr/local .. make -j4 sudo make install2.3 Eigen3源码安装避免使用apt-get安装Eigen3应采用源码安装确保路径正确git clone https://github.com/eigenteam/eigen-git-mirror cd eigen-git-mirror mkdir build cd build cmake .. sudo make install验证安装路径应为/usr/local/include/eigen33. ORB-SLAM3编译与问题解决3.1 源码获取与准备git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 chmod x build.sh3.2 分步编译策略为避免内存不足问题建议手动执行build.sh中的命令并将make -j改为make -j4# 编译DBoW2 cd Thirdparty/DBoW2 mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease make -j4 # 编译g2o cd ../../g2o mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease make -j4 # 解压词汇表 cd ../../.. cd Vocabulary tar -xf ORBvoc.txt.tar.gz # 编译主程序 cd .. mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease make -j43.3 常见编译错误解决错误1operator/未匹配在报错文件如LocalMapping.cc开头添加namespace cv { templatetypename _Tp, int m, int n static inline Matx_Tp, m, n operator / (const Matx_Tp, m, n a, float alpha) { return Matx_Tp, m, n(a, 1.f / alpha, Matx_ScaleOp()); } }错误2Eigen3路径问题检查CMakeLists.txt中Eigen3路径是否为/usr/local/include/eigen34. 数据集测试与运行验证4.1 EuRoC数据集准备创建数据集目录结构mkdir -p ~/dataset/MH01下载并解压MH01数据集到~/dataset/MH01目录4.2 运行单目示例修改Examples/Monocular/EuRoC.yaml中的相机参数后执行cd ORB_SLAM3 ./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml ../dataset/MH01 Examples/Monocular/EuRoC_TimeStamps/MH01.txt4.3 性能优化建议虚拟机显卡加速启用3D加速并安装VMware Tools/VirtualBox Guest Additions实时性调整在SystemSettings.cc中适当降低KeyFrameDatabase参数内存管理定期清理/tmp目录避免堆积临时文件在完成所有步骤后你应该能看到ORB-SLAM3成功运行并实时显示相机轨迹与地图点。如果遇到段错误或异常终止建议检查数据集路径是否正确以及所有依赖库是否安装完整。