具身智能机器人ORB-SLAM3核心源码解析与升级部署_第1页
具身智能机器人ORB-SLAM3核心源码解析与升级部署_第2页
具身智能机器人ORB-SLAM3核心源码解析与升级部署_第3页
具身智能机器人ORB-SLAM3核心源码解析与升级部署_第4页
具身智能机器人ORB-SLAM3核心源码解析与升级部署_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

具身智能机器人ORB-SLAM3核心源码解析与升级部署1主要内容23ORB-SLAM3源码解析ORB-SLAM3代码升级ORB-SLAM3相机连接4ORB-SLAM3docker封装1ORB-SLAM3源码解析ORB-SLAM3算法基本原理4ORB-SLAM3,一个能够使用单眼、双目和RGB-D相机,使用针孔和鱼眼镜头模型执行视觉、视觉惯性和多地图SLAM的系统ORB-SLAM3架构及流程ORB-SLAM3文件综述5ORB-SLAM3文件夹Examples:该文件夹包含各种示例程序和演示代码,展示如何使用ORB-SLAM3库来实现不同相机的SLAM功能。Examples_old:旧版本的示例代码,用于保留以前版本的示例程序,供参考和对比。include:包含头文件(.h或.hpp文件),定义了ORB-SLAM3库中使用的各种类、函数和数据结构。src:包含源代码文件(.cpp、.c等),实现了ORB-SLAM3的核心算法和功能。Thirdparty:包含ORB-SLAM3依赖的第三方库和工具,即运行所需的外部依赖。Vocabulary:包含用于SLAM系统中的ORB词典,用于特征匹配和回环检测。evaluation:包含评估和测试系统性能的脚本和工具,用于测试ORB-SLAM3算法在不同数据集上的表现。lib:存放编译生成的库文件(.so、.dll、.a等),这些库文件在程序运行时会被动态链接。ORB-SLAM3初始化6"Tracking.h":定义了跟踪线程的类和函数,实时地从视频帧中提取特征点并跟踪这些特征点的位置变化,实现相机的定位;"FrameDrawer.h":定义了绘制帧的类和函数,将跟踪结果、特征点、关键帧等信息绘制在图像上;"MapDrawer.h":定义了绘制地图的类和函数,用于将3D地图信息可视化,包括关键帧和地图点等;"Atlas.h":管理和存储多个地图的类和函数,支持多地图的处理和切换;"LocalMapping.h"定义了局部建图模块的类和函数,负责在局部范围内添加和优化地图点,提高地图的精度和一致性;"LoopClosing.h":定义了回环检测和闭环处理的类和函数,用于检测系统是否回到了之前的位置,并进行闭环优化以消除累计误差。"KeyFrameDatabase.h":定义了关键帧数据库的类和函数,用于存储和检索关键帧信息,支持快速的关键帧匹配和回环检测。"ORBVocabulary.h":定义了ORB词典的类和函数,用于描述子词典的构建和特征匹配。"Viewer.h":定义了可视化模块的类和函数,用于实时显示跟踪和建图的结果,提供友好的用户界面。"ImuTypes.h":定义了与惯性测量单元(IMU)相关的数据类型和函数,用于处理和融合IMU数据,增强系统的鲁棒性和精度。"Settings.h":定义了配置和参数设置的类和函数,用于读取和管理系统配置。ORB-SLAM3初始化函数System.cc,其对应头文件为System.h。ORB-SLAM3初始化7conststring&strVocFile:ORB词典文件的路径。词典文件包含了ORB特征的描述子,用于特征匹配和回环检测;conststring&strSettingsFile:系统设置文件的路径。设置文件包含了相机参数、图像处理参数等系统初始化所需的配置;consteSensorsensor:传感器类型。eSensor是一个枚举类型,用于指定传感器的类型,如单目、双目、RGB-D相机等;constboolbUseViewer:是否使用可视化界面。布尔类型参数,决定是否启动系统的可视化界面,用于实时显示跟踪和建图的结果。constintinitFr:初始化帧的编号,整数类型参数,用于指定从哪一帧开始初始化系统。conststring&strSequence:序列名,字符串类型参数,用于指定当前处理的序列的名称。ORB-SLAM3初始化函数System.ccORB-SLAM3初始化8ORB-SLAM3初始化函数System具体内容:检查SLAM传感器初始化类型,需要用到sensor;检查传感器配置文件,也就是相机标定参数等,需要用到strSettingsFile;实例化ORB词典对象,并加载ORB词典;根据ORB词典实例对象,创建关键帧DataBase;创建Altas,也就是多地图系统;IMU传感器初始化设置(如果需要);利用Atlas创建Drawer,包括FrameDrawer和MapDrawer;初始化Tracking线程;初始化局部地图LocalMapping线程,并加载;初始化闭环LoopClosing线程,并加载;初始化用户可视化线程,并加载;将上述实例化的对象指针,传入需要用到的线程,方便进行数据共享;ORB-SLAM3Tracking线程9生成关键帧需要满足如下条件:距离上一次全局重定位,已经超过20帧;局部建图处于空闲状态,或上一个关键帧插入时,已经超过20帧;当前帧跟踪大于50个特征点;当前帧至少跟踪参考帧的90%特征点。ORB-SLAM3LocalMapping线程10一个地图点必须满足以下2个条件:跟踪到该地图点的帧数与预计可观测到该地图点云的帧数的比值应该大于25%;从该地图点云创建起,到现在已经过了不小于2个关键帧,但观测到该地图点的关键帧不超过N个。若相机类型是单目,N取2,否则N取3;利用ORB算法分别对共视图中的相邻关键帧进行特征提取,通过DBoW3对特征点进行匹配,然后通过三角化两相邻帧匹配后的ORB特征点,生成新的地图点ORB-SLAM3LoopClosing线程11LoopClosing线程主要作用:每当加入一个新的关键帧,将该关键帧在整个Atlas地图中检测公共区域;如果该公共区域属于ActiveMap,它就会执行闭环校正;如果该公共区域属于Non-active

Map,就会把它们融合为一个地图,并把这个融合地图作为新的激活地图;在闭环校正以后,一个独立线程就会进行全局BA,进一步优化地图,同时并不影响实时性能。LoopClosing线程的代码在LocalClosing.cc中,核心函数操作包括:boolLoopClosing::CheckNewKeyFrames():检查是否有新的关键帧需要处理;boolLoopClosing::NewDetectCommonRegions():检测新关键帧与历史关键帧之间的公共区域(闭环检测);voidLoopClosing::MergeLocal():将局部地图进行整合;voidLoopClosing::MergeLocal2():进一步优化整合后的局部地图;voidLoopClosing::CorrectLoop():最终进行回环修正,确保地图的一致性。2ORB-SLAM3代码升级ORB-SLAM3稠密化13ORB-SLAM3生成的地图是一种稀疏点云地图,这种地图主要由少量的特征点组成,密度较低,无法提供足够的信息。因此,需要对其生成的稀疏点云进行稠密化处理,以构建更加详尽和丰富的稠密地图。稠密化处理通常包括将稀疏点云与相机帧的深度信息或图像信息相结合,生成更加完整的环境表示。这一过程可以通过多种方法实现,如深度学习技术、立体视觉算法或多视图立体重建技术。稀疏点云点云稠密化地址:/huashu996/ORB_SLAM3_Dense_YOLO./Examples/Monocular/mono_euroc

./Vocabulary/ORBvoc.txt

./Examples/Monocular/EuRoC.yaml

./datasets/MH_01_easy

./Examples/Monocular/EuRoC_TimeStamps/MH01.txt

dataset-MH01_monoORB-SLAM3深度学习14YOLO_ORB_SLAM3:ORB-SLAM3的改进版本,增加了一个使用YOLOv5实现的目标检测模块,以实现动态环境中的SLAM。地址:/YWL0720/YOLO_ORB_SLAM33ORB-SLAM3相机连接ROS2安装16Ubuntu和ROS2版本对应关系Ubuntu22.04安装ROS2Humble:1.设置编码:sudoaptupdatesudoaptinstalllocalessudolocale-genen_USen_US.UTF-8sudoupdate-localeLC_ALL=en_US.UTF-8LANG=en_US.UTF-8exportLANG=en_US.UTF-8ROS2安装17Ubuntu22.04安装ROS2Humble:2.添加源:通过检查此命令的输出,确保已启用UbuntuUniverse存储库。apt-cachepolicy|grepuniverse输出应如下:500/ubuntujammy-security/universeamd64Packagesreleasev=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=amd643.添加解析:sudogedit/etc/hosts##################### localhost iron-virtual-machine###增加下面的解析334.执行如下命令:sudoaptupdate&&sudoaptinstallcurlgnupglsb-releasesudocurl-sSL/ros/rosdistro/master/ros.key-o/usr/share/keyrings/ros-archive-keyring.gpgecho"deb[arch=$(dpkg--print-architecture)signed-by=/usr/share/keyrings/ros-archive-keyring.gpg]/ros2/ubuntu$(source/etc/os-release&&echo$UBUNTU_CODENAME)main"|sudotee/etc/apt/sources.list.d/ros2.list>/dev/nullROS2安装18Ubuntu22.04安装ROS2Humble:2.添加源:通过检查此命令的输出,确保已启用UbuntuUniverse存储库。apt-cachepolicy|grepuniverse输出应如下:500/ubuntujammy-security/universeamd64Packagesreleasev=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=amd643.添加解析:sudogedit/etc/hosts##################### localhost iron-virtual-machine###增加下面的解析334.执行如下命令:sudoaptupdate&&sudoaptinstallcurlgnupglsb-releasesudocurl-sSL/ros/rosdistro/master/ros.key-o/usr/share/keyrings/ros-archive-keyring.gpgecho"deb[arch=$(dpkg--print-architecture)signed-by=/usr/share/keyrings/ros-archive-keyring.gpg]/ros2/ubuntu$(source/etc/os-release&&echo$UBUNTU_CODENAME)main"|sudotee/etc/apt/sources.list.d/ros2.list>/dev/nullROS2安装19Ubuntu22.04安装ROS2Humble:5.安装ROS2:sudoaptupdatesudoaptupgrade##安装桌面版sudoaptinstallros-humble-desktop6.设置环境变量:source/opt/ros/humble/setup.bashecho"source/opt/ros/humble/setup.bash"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论