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-dev

git 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过程及遇到的问题与解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/607034.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python3安装教程

1.下载python 百度网盘下载python-3.12.3-amd64.exe 链接:https://pan.baidu.com/s/1MV3kvVdjCdS_G-_KgefwLw?pwdpgzu 提取码:pgzu 官网下载:Welcome to Python.org 有很多版本,选择需要的版本下载 2.安装python 双击python-…

作为餐饮行业HR,怎么选择一套合适的HCM人事管理系统?

在餐饮业这个行业中,人员流动性较高,特别是对于服务员和厨师这类基层员工,招聘一直是一个难题。根据艾瑞数据测算,到2024年,中国餐饮行业的年收入将超过6万亿元,年复合增长率高达8.8%。作为餐饮企业的品牌战…

RV32I指令集及其编码方式解读

文章目录 前言RISCV指令集的模块化RV32IR型指令I型指令load指令 (I型) S型指令B型指令 (S型指令变体)PC相对地址B型指令简单举例 U型指令LUI指令li伪指令 AUIPC指令 J型指令(U型指令变体)JAL指令JALR指令(I型指令) 注参考 前言 R I S C − V RISC-V RISC−V 表示精简指令集计算…

汽车IVI中控开发入门及进阶(十七):IVI的功耗管理

汽车人机界面(HMI)系统旨在使驾驶员能够在不分心的情况下与车辆互动。HMI可以通过触摸板、按钮或语音系统在人和机器之间建立更自然的互动。对连接解决方案、低成本HMI软件和增强的用户体验(UX)的需求不断增加,使得平视显示器(HUD)、后座娱乐系统、基于转向的控制、仪表…

第42天:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作

第四十二天 一、PHP-MYSQL-SQL注入-常规查询 1.PHP-MYSQL-Web组成架构 MySQL(统一管理) ​ root(自带默认) ​ 网站A testA ​ 网站B testB MySQL(一对一管理) ​ testA用户 ​ 网站A testA ​ testB用户 ​ 网站B testB access无数据库用户 m…

使用海外云手机为亚马逊店铺引流

在全球经济一体化的背景下,出海企业与B2B外贸企业愈发重视海外市场的深耕,以扩大市场份额。本文旨在探讨海外云手机在助力亚马逊店铺提升引流效果方面的独特作用与优势。 海外云手机,一种基于云端技术的虚拟手机,能够在单一硬件上…

html--瀑布效果

<!doctype html> <html> <head> <meta charset"utf-8"> <title>瀑布效果</title><style> body {background: #222;color: white;overflow:hidden; }#container {box-shadow: inset 0 1px 0 #444, 0 -1px 0 #000;height: 1…

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Slider的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 输入类控件 | Slider的使用及说明 文章编号&#xff1a;…

已经有 Prometheus 了,还需要夜莺?

谈起当下监控&#xff0c;Prometheus 无疑是最火的项目&#xff0c;如果只是监控机器、网络设备&#xff0c;Zabbix 尚可一战&#xff0c;如果既要监控设备又要监控应用程序、Kubernetes 等基础设施&#xff0c;Prometheus 就是最佳选择。甚至有些开源项目&#xff0c;已经内置…

QGraphicsView实现简易地图12『平移与偏移』

前文链接&#xff1a;QGraphicsView实现简易地图11『指定层级-定位坐标』 提供地图平移与偏移功能。地图平移是指将地图的中心点更改为给定的点&#xff0c;即移动地图到指定位置。地图偏移是指将当前视口内的地图向上/下/左/右/进行微调&#xff0c;这里偏移视口宽/高的四分之…

压缩机继电器EOCRDS-30NY7Q升级后型号:EOCRDS3-30S

EOCR-DS3系列型号&#xff1a; EOCRDS3-05S EOCRDS-05S EOCRDS1-05S EOCRDS3-30S EOCRDS-30S EOCRDS1-30S EOCRDS3-60S EOCRDS-60S EOCRDS1-60S EOCRDS3-05W EOCRDS-05W EOCRDS1-05W EOCRDS3-30W EOCRDS-30W EOCRDS1-30W EOCRDS3-60W EOCRDS-60W EOCRDS1-60W EOCR-DS3T-…

extern关键字的使用。keil中编译时,出现error:identifier xxx is undefined

问题 编译时&#xff0c;出现error&#xff1a; identifier “Reg_Flag” is undefined extern Reg_Flag reg_flag; 很奇怪&#xff0c;我明明已经定义了。无非就是定义是在extern的下面&#xff0c;会不会是这个原因&#xff1f; 解决 果然&#xff0c;把extern的部分放到…

3D模型如何实现拖拽打开?---模大狮模型网

在当今数字化时代&#xff0c;3D技术的应用已经深入到各行各业&#xff0c;为用户带来了更加丰富、生动的体验。然而&#xff0c;对于一些用户来说&#xff0c;打开和查看3D模型可能会面临一些困难&#xff0c;特别是在无法拖拽打开时。本文将为您揭示解决这一问题的方法&#…

智能商品计划系统:引领未来零售业的革新之路

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;和大数据技术已成为推动各行业革新的关键动力。在零售行业中&#xff0c;智能商品计划系统的出现&#xff0c;正逐步改变着传统的商品规划与管理方式&#xff0c;为品牌注入新的活力与竞争力。本文将对智能商…

TMS320F280049 CLB模块--总览(0)

CLB模块是可配置的逻辑块&#xff0c;和FPGA的CLB有些不同。 下图是CLB模块在系统中的交互&#xff0c;图中CLB XBAR和TILE是CLB。从049中有4个CLB&#xff0c;也就是TILE1-4。 下图是CPU和CLB交互的示意图。 下图是CLB的时钟。 参考文档&#xff1a; TMS320F28004x Real-Tim…

欢乐钓鱼大师内置辅助,游戏脚本!自动操作!

在《欢乐钓鱼大师》游戏中&#xff0c;探索珍稀鱼类成为钓鱼大师的过程充满了乐趣和挑战。下面是一些特殊鱼类的钓鱼技巧和详细攻略&#xff0c;助你在游戏中获得更好的成绩和丰厚的奖励。 一、碘化之齿 碘化之齿是游戏中一种珍稀的鱼类&#xff0c;它的出现需要一定的条件和技…

STC8增强型单片机开发 【GPIO的理解⭐⭐】

目录 一、引言 二、GPIO概述 三、GPIO的功能 1. 输入功能&#xff1a; 2. 输出功能 四、GPIO的配置方法 1. 选择GPIO端口和引脚&#xff1a; 2. 设置GPIO模式&#xff1a; 3. 配置GPIO参数&#xff1a; 五、GPIO应用实例 1. 硬件连接&#xff1a; 2. 编程实现&…

探索精酿啤酒:从经典到创新

Fendi club啤酒一直以来都以其卓着的品质和与众不同的口感深受消费者喜爱。而随着时代的变迁和消费者口味的不断变化&#xff0c;Fendi club啤酒也在不断地探索和创新&#xff0c;以满足市场的多样化需求。 在经典的口感和风味基础上&#xff0c;Fendi club啤酒不断地尝试新的原…

sql Server2015安装——参考的教程

1.sql Server安装包来自&#xff1a;https://mp.weixin.qq.com/s/Pe_YbWw_MgwjzzZhQWIYfA 2.需要的替换文件和补丁&#xff1a;https://blog.csdn.net/Auspicious_air/article/details/108315154 https://blog.csdn.net/m0_60477996/article/details/126748477 3.安装manger…

MybatisPlus 构造器wrapper的使用与原理

系列文章目录 MyBatis缓存原理 Mybatis plugin 的使用及原理 MyBatisSpringboot 启动到SQL执行全流程 数据库操作不再困难&#xff0c;MyBatis动态Sql标签解析 Mybatis的CachingExecutor与二级缓存 使用MybatisPlus还是MyBaits &#xff0c;开发者应该如何选择&#xff1f; My…