orbslam2基础

2024-05-08 06:52
文章标签 基础 orbslam2

本文主要是介绍orbslam2基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一、 内容概要
  • 二、 orbslam2基础介绍
  • 三 、 orbslam2安装
    • 3.1 安装依赖
    • 3.2 安装orbslam2
    • 3.3 下载Kitee数据集
  • 四、 进行ORBSLAM2仿真
  • 五、 心得体会
  • 六、 参考链接

一、 内容概要

  1. orbslam2基础介绍
  2. orbslam2安装
  3. orbslam2使用案例:orbslam2+kitti数据集序列图像

二、 orbslam2基础介绍

ORB-SLAM2是一种用于单目、双目和RGB-D摄像头的实时视觉定位与地图构建系统。它是由伦敦帝国学院的Raul Mur-Artal、Juan D. Tardós和J. M. M. Montiel等人开发的,是ORB-SLAM的改进版本。ORB-SLAM2结合了特征提取、跟踪、建图和定位的功能,可以在实时性和鲁棒性之间取得平衡,适用于各种环境和场景。它在计算机视觉和机器人领域得到广泛应用,可以用于自主导航、增强现实、室内导航等多个领域。
优点:
· 实时性:ORB-SLAM2能够在实时性要求较高的情况下进行定位和地图构建,适用于实时应用。
· 鲁棒性:它采用了ORB特征点描述符和RANSAC等方法,对于光照变化、视角变化等场景具有一定的鲁棒性。
· 支持多种摄像头:ORB-SLAM2支持单目、双目和RGB-D摄像头,具有较好的适用性。
· 开源:作为开源项目,ORB-SLAM2具有广泛的用户群体和社区支持,用户可以自由获取和修改源代码。
缺点:

· 对动态场景不稳定:在存在大量动态物体的场景中,ORB-SLAM2可能会出现定位漂移或者地图构建不准确的情况。
· 对重复纹理区域敏感:在具有重复纹理的区域,ORB-SLAM2可能会出现匹配错误的情况,影响定位和地图构建的准确性。
· 对于大规模环境的处理有限:在大规模环境下,ORB-SLAM2可能会受限于内存和计算资源的限制,无法有效处理大规模地图构建和定位任务。

三 、 orbslam2安装

3.1 安装依赖

依赖列表:

  1. Pangolin0.5
  2. Eigen3.1以上
  3. Sophus
  4. Ceres
  5. OpenCV
  6. g2o
  7. DBoW3
    可以从此链接下载:
    https://github.com/Gongkaka/slambook2/tree/master/3rdparty

注意!安装过程中出现虚拟机无响应或报错:

在这里插入图片描述
请扩充虚拟机内存后重试
在这里插入图片描述

下面是具体安装流程

  • Pangolin
#若没有从上面链接下载则使用:git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install
  • Ceres
#安装依赖
sudo apt-get install  liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-devgit clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
mkdir ceres-solver-build
cd ceres-solver-build
cmake ..
make -j8
sudo make install
  • opencv安装
    我多次测试发现orbslam2在opencv版本号为2.-的环境下报错率较低,所以我建议下载opencv2
    进入opencv官方下载链接选择2.-版本下载,我下载的是2.4.13.6
cd opencv-2.4.13.6
mkdir build
cd build
cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

漫长的等待

make
sudo make install

完成后开始配置环境

sudo gedit ~/../../etc/ld.so.conf.d/opencv.conf

在里面添加:

/usr/local/lib

保存后

sudo ldconfig

再进入另一个文件

sudo gedit ~/../../etc/bash.bashrc

添加以下两行

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

如果之前安装过其他版本的opencv,添加过这个配置可以不用添加
多版本opencv可以参考这个链接https://blog.csdn.net/learning_tortosie/article/details/80594399

  • g2o
#安装依赖:
sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3
#若没有从上面链接下载则使用:git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build
cd build
cmake ..
make -j8
sudo make install
  • DBoW3
#若没有从上面链接下载则使用:git clone https://github.com/stevenlovegrove/Pangolin.git
cd DBoW3
mkdir build
cd build/
cmake ..
make
sudo make install

3.2 安装orbslam2

  1. 首先新建一个ros工作区(也可以用现有的)
mkdir -p ~/ws_orbslam/src
cd ~/ws_orbslam
catkin_init_workspace src
catkin_make
source devel/setup.bash

然后将orb_slam2下载到主目录

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

然后编译一下

sudo chmod +x build_ros.sh
./build_ros.sh

看到进度为100%和拥有这三个文件即视为安装成功
在这里插入图片描述
在这里插入图片描述

3.3 下载Kitee数据集

官方网站
在这里插入图片描述

官网下载过程比较繁琐,而且下载速度慢,可以进入以下链接选择下载
https://blog.csdn.net/wyy13273181006/article/details/107686370
可以选择其中一个数据集
在这里插入图片描述
任选

四、 进行ORBSLAM2仿真

进入ORB_SLAM2根目录
最后就是训练集,根据自己文件设置

#执行命令:ORB-SLAM2支持单目、双目和RGBD数据,这里选择mono_kitti的单目数据集来运行和调试。
#运行命令格式为:
./mono_kitti path_to_vocabulary path_to_settings path_to_sequence
#该命令共有4个参数:#mono_kitti:为ORB-SLAM2编译生成的针对MONO_KITTI数据集的可执行文件,一般路径为ORB-SLAM2工程目录下Examples/Monocular/mono_kitti;#path_to_vocabulary为所选词典的路径,路径为ORB_SLAM2/Vocabulary/ORBvoc.txt;#path_to_settings为配置文件,存放在ORB-SLAM2/Examples/Monocular下,运行时选择了KITTI00-02.yaml(可选择别的),该配置文件中存放的相机的内参和外参,提取特征时候图像金字塔相关参数,可视化过程中用到的参数;
./mono_kitti ~/ORB_SLAM2/Vocabulary/ORBvoc.txt KITTI00-02.yaml ~/ws_orbslam/src/data_odometry_gray/00/

效果:
在这里插入图片描述
0929
常见报错可以参考:
ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决

五、 心得体会

在深入研究和仿真ORB-SLAM2的过程中,我深刻体会到了这个开源视觉SLAM(Simultaneous Localization and Mapping)系统的强大和复杂性。通过实际操作和测试,我对ORB-SLAM2的实时性、鲁棒性和对多种摄像头的支持有了更直观的理解。

首先,ORB-SLAM2的实时性给我留下了深刻的印象。在仿真过程中,系统能够快速地处理输入的图像序列,并实时输出相机的位姿和构建的地图。这对于需要快速响应的应用场景,如自动驾驶和机器人导航,是非常关键的。实时性的实现得益于ORB-SLAM2高效的特征提取和匹配算法,以及优化的地图管理和更新策略。

其次,ORB-SLAM2的鲁棒性也让我感到赞叹。在仿真中,我尝试了各种光照条件、视角变化和动态场景,ORB-SLAM2都能够较好地应对。特别是在光照变化较大的场景中,ORB-SLAM2仍然能够稳定地跟踪和定位,这得益于ORB特征点描述符对光照变化的鲁棒性。此外,ORB-SLAM2还采用了RANSAC等方法来过滤错误的匹配,进一步提高了系统的鲁棒性。

此外,ORB-SLAM2对多种摄像头的支持也让我感到非常满意。在仿真中,我分别测试了单目、双目和RGB-D摄像头的数据,ORB-SLAM2都能够适应并稳定地运行。这种广泛的适用性使得ORB-SLAM2可以应用于各种不同的场景和设备,极大地扩展了其应用范围。

然而,在仿真过程中,我也遇到了一些问题和挑战。首先,ORB-SLAM2对动态场景的处理能力有限。在存在大量动态物体的场景中,ORB-SLAM2可能会出现定位漂移或者地图构建不准确的情况。这需要我们在实际应用中结合其他方法,如语义分割或光流法等,来提高对动态场景的处理能力。

其次,ORB-SLAM2对重复纹理区域敏感。在具有重复纹理的区域,ORB-SLAM2可能会出现匹配错误的情况,影响定位和地图构建的准确性。这需要我们在实际应用中注意选择合适的特征点和匹配策略,以减少这种情况的发生。

最后,ORB-SLAM2在处理大规模环境时可能会受限于内存和计算资源的限制。这需要我们在实际应用中采用一些优化策略,如分块处理、地图压缩等,来降低系统的资源消耗。

总的来说,ORB-SLAM2是一个强大而复杂的视觉SLAM系统,具有实时性、鲁棒性和对多种摄像头的支持等优点。通过仿真和测试,我对其有了更深入的理解,也发现了一些问题和挑战。我相信在未来的研究和应用中,ORB-SLAM2将会得到更广泛的应用和发展。

六、 参考链接

  1. https://blog.csdn.net/learning_tortosie/article/details/80594399
  2. https://blog.csdn.net/wakeup_high/article/details/138011781?spm=1001.2014.3001.5502
  3. https://blog.csdn.net/weixin_56566649/article/details/124355140
  4. ubuntu 上 opencv2 的安装与配置
  5. ROS melodic 安装运行 ORB_SLAM2过程及遇到的问题与解决

这篇关于orbslam2基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969621

相关文章

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas