[ORB_SLAM2]运行

本文详细描述了在Ubuntu20.04ROSNoetic环境中配置和安装ORB_SLAM2时遇到的编译问题,包括usleep、staticassertionerror和Eigen库链接错误的解决方法,以及如何下载和运行TUM数据集进行测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章参考:链接: link.

设备配置

  • Ubuntu 20.04
  • ROS版本:noetic
  • OpenCV:3.4.5

安装 ORB_SLAM2

创建环境

如果需要在ROS环境下运行ORB_SLAM,最好将工程放在catkin_ws/src文件夹下:

mkdir -p xxx_ws/src(必须得有 src)
cd xxx_ws
catkin_make

下载并尝试编译

进入src文件,git下,然后尝试编译:

cd src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

编译报错处理

1.usleep

请添加图片描述
图片来源于博客:链接: link.

解决方法: 在报错对应的每个c++文件中或直接在system.h文件中加入

#include <unistd.h>

2.error:static assertion failed:std::map must have the same value_type as its allocator

解决方法: 在ORB_SLAM2的安装路径下打开 /include 文件夹,在 LoopClosing.h 中修改第49-50行,将

    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
        Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;

修改成:

    typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
            Eigen::aligned_allocator<std::pair<KeyFrame* const, g2o::Sim3> > > KeyFrameAndPose;

3.找不到 -lEigen3::Eigen error ld returned 1 exit status请添加图片描述解决方法:

请添加图片描述我就只有这三种错误,至此编译成功!

运行ORB_SLAM2

编译完成后会在ORB_SLAM2/Examples文件夹下生成各种可执行文件。我们以单目情况为例,展示如何运行ORB_SLAM2程序。

下载数据集

可以从这个网址下载 Tum数据集.

下载完成后解压缩,最好放到 ORB_SLAM2 的路径下。

本文采用的就是第一条数据集(如图)。

请添加图片描述

是时候运行了!

首先进入ORB-SLAM2环境中,然后输入代码

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz

其中TUM1可以改为TUM2和TUM3.
最后那个地址是你的data的地址。

### ORB_SLAM2 使用 KITTI 数据集 的运行配置教程 #### 一、环境准备 为了成功运行 ORB_SLAM2 和 KITTI 数据集,需确保开发环境中已正确安装必要的依赖项。这包括但不限于 OpenCV、Eigen 库以及其他可能涉及的第三方库[^1]。 #### 二、编译与安装 ORB_SLAM2 在开始之前,需要完成 ORB_SLAM2 的本地化构建过程。如果遇到任何错误或者希望重新初始化项目,则可以按照以下方法清理旧有构建文件并重新执行 CMake 构建流程: ```bash rm -rf Thirdparty/DBoW2/build/ rm -rf Thirdparty/g2o/build/ rm -rf ORB_SLAM2/build/ rm -rf Examples/ROS/ORB_SLAM2/build/ mkdir build && cd build cmake .. make -j8 ``` 上述命令会彻底清除之前的构建缓存,并通过 `CMake` 配置新的构建目标[^4]。 #### 三、下载 KITTI 数据集 KITTI 是一个广泛使用的自动驾驶场景数据集合,其中包含了多种传感器采集到的信息(如摄像头图像)。对于本案例而言,主要关注的是单目相机序列部分。可以从官方站点获取对应的数据包,并将其解压至指定目录下以便后续加载使用。 #### 四、启动 ORB_SLAM2 单目模式处理 KITTI 数据流 当一切准备工作就绪之后,在 ROS 环境中可以通过如下指令来调用预定义好的参数设置文件以及词典资源来进行 SLAM 处理操作: ```bash rosrun ORB_SLAM2 Mono \ Vocabulary/ORBvoc.txt \ Examples/Monocular/KITTI00-02.yaml ``` 此命令中的各个选项分别代表不同的功能模块或输入源设定值;具体来说,“Mono”表示采用单一镜头作为视觉输入方式之一;而“.yaml”格式文档则存储着关于摄像机内参等相关属性的关键数值信息表单[^2]。 #### 五、常见问题排查指南 尽管遵循以上步骤通常能够顺利完成整个实验环节,但在实际应用过程中仍可能出现某些异常状况导致进程终止等问题发生。针对这种情况可参照已有经验总结出来的解决方案尝试修复——例如调整时间戳匹配逻辑等措施均有助于克服此类障碍物带来的困扰[^3]。 ```python # 示例 Python 脚本用于验证时间同步机制是否正常工作 import numpy as np timestamps = np.loadtxt('times.txt') # 加载时间戳列表 if timestamps.size != expected_size: raise ValueError("Timestamp mismatch detected!") ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值