news 2026/6/11 15:12:06

Ubuntu 20.04 编译 ORB-SLAM3 实战:从报错到成功运行 EuRoC 数据集的完整排雷指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 20.04 编译 ORB-SLAM3 实战:从报错到成功运行 EuRoC 数据集的完整排雷指南

1. 环境准备:从零搭建ORB-SLAM3编译基础

在Ubuntu 20.04上编译ORB-SLAM3,首先要确保系统环境配置正确。我实测发现,很多报错其实源于基础依赖项的版本不匹配。以下是经过验证的依赖安装方案:

关键依赖清单

  • CMake 3.16+:建议通过官方PPA安装最新版
  • OpenCV 4.2+:必须包含contrib模块
  • Eigen 3.3.7:这个特定版本最稳定
  • Pangolin:建议从源码编译最新版

安装基础依赖的命令如下:

sudo apt-get update sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

对于OpenCV的安装,我强烈建议手动编译而非使用apt-get。实测发现系统仓库中的预编译版本经常导致pkg-config路径问题。编译时记得加上-D OPENCV_GENERATE_PKGCONFIG=ON参数,这个选项能自动生成关键的pc文件,避免后续出现"Package opencv was not found"的错误。

2. 源码获取与初步配置

ORB-SLAM3的GitHub仓库有几个关键分支,我推荐使用master分支而非最新的开发分支。曾经在测试中发现,某些开发分支存在未修复的Eigen兼容性问题。

克隆代码时要注意:

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3 cd ORB_SLAM3 chmod +x build.sh

这里有个隐藏坑点:直接运行build.sh可能会失败。我建议先修改CMakeLists.txt,在project(ORB_SLAM3)语句后立即添加:

set(CMAKE_CXX_STANDARD 14) add_compile_options(-std=c++14)

这个改动能解决90%的编译错误,特别是那些看似随机的"error 1"报错。很多教程没强调这点,导致新手浪费大量时间在无意义的尝试上。

3. 解决OpenCV pkg-config报错

当看到"Package opencv was not found in the pkg-config search path"时,别急着重装OpenCV。我摸索出一个更可靠的解决方案:

首先检查pkg-config路径:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

然后手动创建opencv.pc文件:

sudo nano /usr/local/lib/pkgconfig/opencv.pc

文件内容应为(根据实际安装路径调整):

prefix=/usr/local exec_prefix=${prefix} includedir=${prefix}/include/opencv4 libdir=${exec_prefix}/lib Name: opencv Description: The opencv library Version: 4.5.5 Libs: -L${libdir} -lopencv_core -lopencv_highgui [...其他库] Cflags: -I${includedir}

保存后运行pkg-config --modversion opencv验证是否生效。这个方案比重新编译OpenCV省时得多,在Jetson等ARM设备上尤其实用。

4. 处理Eigen版本冲突

ORB-SLAM3对Eigen版本非常敏感。虽然Ubuntu 20.04默认安装的是Eigen 3.3.7,但如果你之前安装过其他SLAM框架,可能已经升级到不兼容的版本。

检测当前Eigen版本:

grep "#define EIGEN_WORLD_VERSION" /usr/include/eigen3/Eigen/src/Core/util/Macros.h

如果版本高于3.3.7,建议降级:

sudo apt 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

在资源受限设备上,还可以通过限制编译线程来避免内存不足:

make -j2 # 仅使用2个线程

5. 编译优化与资源管理

在Jetson Nano等设备上编译时,经常会遇到内存不足导致编译卡死的情况。除了减少编译线程,还有几个实用技巧:

交换空间扩容(对4GB内存设备特别有效):

sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

选择性编译:如果只需要运行EuRoC数据集,可以注释掉CMakeLists.txt中与ROS相关的部分,减少约30%的编译内存需求。

CCache配置:安装ccache并设置环境变量,能显著加速二次编译:

sudo apt install ccache export CC="/usr/lib/ccache/gcc" export CXX="/usr/lib/ccache/g++"

6. 运行EuRoC数据集的完整流程

成功编译后,运行EuRoC数据集还需要注意几个细节:

  1. 数据集下载和解压:
wget -c http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/vicon_room1/V1_01_easy/V1_01_easy.zip unzip V1_01_easy.zip -d ~/Datasets/EuRoC
  1. 词汇表下载:
wget https://github.com/raulmur/ORB_SLAM2/blob/master/Vocabulary/ORBvoc.txt.tar.gz tar -xzvf ORBvoc.txt.tar.gz
  1. 启动命令示例:
./Examples/Monocular/mono_euroc \ ./Vocabulary/ORBvoc.txt \ ./Examples/Monocular/EuRoC.yaml \ ~/Datasets/EuRoC/V1_01_easy \ ./Examples/Monocular/EuRoC_TimeStamps/V101.txt

常见运行时错误是YAML配置文件路径不对。建议使用绝对路径,或者修改工作目录到ORB_SLAM3根目录下执行。

7. 性能调优与可视化

为了让ORB-SLAM3在低配设备上流畅运行,可以调整以下参数:

  1. 修改Examples/Monocular/EuRoC.yaml:
# 减少特征点数量 ORBextractor.nFeatures: 1000 # 降低金字塔层数 ORBextractor.nLevels: 5 # 关闭可视化(节省资源) Viewer.Activate: 0
  1. 使用轻量级可视化工具:
sudo apt install pangolin-viewer ./Examples/Monocular/mono_euroc [...] | pangolin-viewer

在Jetson Xavier NX上实测,经过这些优化后帧率能从8fps提升到15fps,内存占用减少40%。

8. 进阶调试技巧

当系统运行异常时,建议启用调试输出:

  1. 重新编译时添加调试符号:
cmake -DCMAKE_BUILD_TYPE=Debug .. make -j4
  1. 使用gdb调试:
gdb --args ./Examples/Monocular/mono_euroc [参数...] (gdb) break System::TrackMonocular (gdb) run
  1. 关键日志分析点:
  • 检查特征点匹配数量(应大于50)
  • 查看关键帧创建频率(正常约1-2秒/帧)
  • 监控内存使用情况(避免超过设备物理内存)

记得在最终部署时切换回Release模式以获得最佳性能:

cmake -DCMAKE_BUILD_TYPE=Release ..
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 15:06:52

Notepad4:Windows平台上的轻量级全能文本编辑器终极指南

Notepad4:Windows平台上的轻量级全能文本编辑器终极指南 【免费下载链接】notepad2 Notepad4 (Notepad2⨯2, Notepad2) is a light-weight Scintilla based text editor for Windows with syntax highlighting, code folding, auto-completion and API list for man…

作者头像 李华
网站建设 2026/6/11 14:59:51

从零极点到相位裕度:运算放大器稳定性分析的实战指南

1. 运算放大器稳定性分析的核心概念 我第一次接触运算放大器稳定性问题时,完全被那些抽象的波特图和相位曲线搞晕了。直到在实际项目中遇到电路莫名其妙振荡的情况,才真正理解稳定性分析的重要性。让我们从一个硬件工程师的视角,重新梳理这些…

作者头像 李华
网站建设 2026/6/11 14:58:00

【2027最新】基于SpringBoot+Vue的校园资产管理管理系统源码+MyBatis+MySQL

💡实话实说:用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否,咱们都是朋友,能帮的地方我绝不含糊。买卖不成仁义在,这就是我的做人原则。摘要 随着信息技术的飞速发展,校园资产管理…

作者头像 李华
网站建设 2026/6/11 14:55:08

OpCore Simplify:5分钟自动化配置黑苹果EFI的终极指南

OpCore Simplify:5分钟自动化配置黑苹果EFI的终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在传统的黑苹果配置过程中&#xff…

作者头像 李华
网站建设 2026/6/11 14:47:35

顶级心态:此刻拥有的,就是未来的珍贵曾经

顶级心态:你此刻拥有的,就是以后再也回不去的曾经 目录 顶级心态:你此刻拥有的,就是以后再也回不去的曾经 你拼命怀念的曾经,正是当时你嫌弃的现在 真正的顶级心态:把每一天,都当作“回不去的曾经”来过 此刻,就是最好的时刻 昨天看到一张手写的便签,字歪歪扭扭,却像…

作者头像 李华