当前位置: 首页 > news >正文

Ubuntu 18.04 + ROS Melodic 下,ORB-SLAM3 编译避坑全记录(附 Pangolin v0.5 降级方案)

Ubuntu 18.04 + ROS Melodic 环境下 ORB-SLAM3 完整编译指南与实战经验

当你在Ubuntu 18.04系统上尝试编译ORB-SLAM3时,可能会遇到各种令人头疼的依赖问题。作为SLAM领域的重要开源项目,ORB-SLAM3对环境配置有着严格的要求,特别是当它与ROS Melodic结合使用时。本文将带你一步步解决最常见的编译问题,特别是那些让新手耗费数小时甚至数天的"坑"。

1. 环境准备与基础依赖安装

在开始编译ORB-SLAM3之前,确保你的Ubuntu 18.04系统已经安装了必要的开发工具和基础依赖。ROS Melodic的完整安装是第一步,因为它提供了许多ORB-SLAM3需要的底层库和工具。

首先,更新系统并安装基础编译工具:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake git wget unzip

接下来,安装ROS Melodic完整版(如果尚未安装):

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install -y ros-melodic-desktop-full echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc

安装ROS依赖包:

sudo apt install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool sudo rosdep init rosdep update

2. 解决OpenCV版本冲突问题

ORB-SLAM3官方要求OpenCV版本大于4.4,但ROS Melodic默认安装的是OpenCV 3.2。这种版本冲突是编译过程中最常见的错误之一。

解决方案有两种

  1. 修改ORB-SLAM3的CMakeLists.txt(推荐新手使用)

    找到ORB_SLAM3文件夹下的CMakeLists.txt文件,修改以下内容:

    find_package(OpenCV 3 REQUIRED) if(NOT OpenCV_FOUND) message(FATAL_ERROR "OpenCV > 3 not found.") endif()
  2. 安装OpenCV 4.x并配置环境变量(适合需要新特性的用户)

    安装OpenCV 4.x:

    sudo apt install -y libopencv-dev python-opencv

    然后设置环境变量,确保系统能找到正确的OpenCV版本:

    echo "export OpenCV_DIR=/usr/local/share/OpenCV" >> ~/.bashrc source ~/.bashrc

3. Pangolin降级到v0.5的详细步骤

Pangolin的最新版本与ORB-SLAM3存在兼容性问题,会导致编译失败。以下是降级到v0.5的具体步骤:

  1. 卸载现有Pangolin版本(如果有):

    sudo rm -rf /usr/local/include/pangolin sudo rm -rf /usr/local/lib/libpangolin*
  2. 下载并编译Pangolin v0.5

    git clone --branch v0.5 https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build && cd build cmake .. cmake --build . sudo make install
  3. 验证安装

    检查Pangolin版本是否正确:

    pkg-config --modversion pangolin

    应该输出0.5或类似的版本号。

4. ORB-SLAM3编译与测试

完成上述准备工作后,可以开始编译ORB-SLAM3:

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

如果一切顺利,你应该能看到编译成功的消息。接下来可以测试EuRoC数据集:

./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml "$pathDatasetEuroc"/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo

常见测试问题及解决方案

  1. 缺少euroc_examples.sh文件

    新版本的ORB-SLAM3可能移除了这个文件,可以从详细注释版仓库获取:

    wget https://raw.githubusercontent.com/electech6/ORB_SLAM3_detailed_comments/master/euroc_examples.sh chmod +x euroc_examples.sh
  2. IMU初始化问题

    如果看到Fail to track local map! IMU is not or recently initialized错误,尝试:

    • 确保数据集路径正确
    • 检查IMU数据是否完整
    • 增加初始化时间

5. 性能优化与实用技巧

经过多次项目实践,我总结出以下优化建议:

  1. 内存管理

    • 对于大型场景,限制地图点数量
    • 使用--limit_map_points参数控制内存使用
  2. 实时性优化

    ./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml "$pathDatasetEuroc"/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo --frame_skip 2
  3. 精度对比(以MH_01_easy为例):

    传感器配置绝对轨迹误差(RMSE)
    双目0.025 m
    单目+IMU0.027 m
    双目+IMU0.024 m
    单目0.152 m
  4. 户外场景处理

    • 忽略20米外的特征点可提高稳定性
    • 调整特征点提取阈值适应不同光照条件
http://www.jsqmd.com/news/715717/

相关文章:

  • Qt信号槽跨线程传自定义类型?别踩坑了!手把手教你用qRegisterMetaType搞定
  • 收藏!小白程序员必看:多智能体协作轻松入门,突破大模型瓶颈
  • 深圳市昶星科技深耕全球全域市场,打造中国雾化出海标杆 - GEO代运营aigeo678
  • 2026年3月当下锡带企业,锡带公司锦华隆电子材料诚信务实提供高性价比服务 - 品牌推荐师
  • afsim中将导弹作为独立的platform
  • Android 广播 - 显式广播与隐式广播
  • OpenProject开源项目管理平台:基于Ruby on Rails的企业级协同解决方案
  • 专业的山西做GEO搜索优化公司
  • 如何用FigmaCN消除英文界面障碍:设计师的中文设计工作流解决方案
  • 从SOD二极管到SOT晶体管:手把手教你识别PCB上那些迷你SMD封装
  • 新卖家选品方向预警,用好卖家精灵AI工具还有卖家精灵优惠折扣码
  • 除了Copilot,试试VSCode插件GPT Runner:如何用它做项目文档的智能问答助手?
  • 专业干货!低查重的AI教材写作攻略,多款AI工具助力教材编写
  • Rockchip RK3538与RK3572芯片架构与应用解析
  • Lucene底层原理:倒排索引实现原理与代码实战,彻底吃透搜索引擎核心
  • 如何在3天内用Open Images数据集构建你的第一个计算机视觉模型
  • Wan2.2-TI2V-5B终极指南:如何在消费级GPU上实现720P高清AI视频生成
  • 5分钟彻底解决Mac NTFS读写难题:Free-NTFS-for-Mac完整指南
  • 将军思维:在亚马逊,为何“关注对手”比“优化自己”重要一百倍
  • C语言结构体对齐的坑我帮你踩完了:从#pragma pack到__attribute__的避坑指南
  • Pake:革命性的轻量级网页转桌面应用现代化解决方案
  • 收藏!2026 年 AI 薪资炸场:平均月薪 6 万 +,岗位暴涨 12 倍,小白 / 程序员学大模型正当时!
  • 无线串口对传模块:4G全网通适配,远程串口无缝对接
  • 从产品经理视角看:为什么内容运营增长平台一定要用 Redis?
  • AI专著写作神器揭秘:一键生成20万字专著,真实文献引用+低查重!
  • IO管道
  • python学习笔记(day3):文件操作与CSV文件处理
  • 如何高效下载全网资源:Res-Downloader 智能嗅探工具完全指南
  • 大模型多智能体模式详解:新手程序员必备,附收藏指南!
  • 深入S32K3芯片内部:图解FCCU状态机与安全机制(从CONFIG到FAULT的完整流程)