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

相关文章

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应