ORB-SLAM3在windows下的编译使用
Euroc数据集包含室内的MAV场景,有两个场景(Machine Hall + Vicon Room),码运每个场景提供2个下载链接。码运数据集包含IMU数据和其他可用数据。码运
ORB_SLAM3的码运官方git库推荐使用ubuntu .系统,但本实验在Windows 下进行测试,码运php项目源码使用特定的码运git仓库编译ORB_SLAM3,成功运行。码运
编译ORB_SLAM3前需准备以下第三方包:DBoW2用于SLAM回环检测,码运需要配置OpenCV环境;g2o用于图优化框架;Pangolin用于3D视觉和导航交互,码运应用于ORB_SLAM3库实例。码运
编译ORB_SLAM3主要步骤包括安装第三方依赖,码运然后在官方git库下执行编译命令。码运
测试案例stereo_inertial_euroc使用双目与惯导的码运Euroc数据集,展示ORB_SLAM3在Windows下的码运完整编译与运行过程。
ORB-SLAM3 源码剖析:IMU 预积分
IMU的数据结构在ORB-SLAM3中用于表示机体坐标系中的测量值。在特定时刻,加速度计测量线加速度和陀螺仪测量角速度。假设这些测量值包含高斯白噪声,且偏置建模为随机游走,其导数也是高斯白噪声。将重力转换到机体坐标系后,得到连续视觉帧间的IMU预积分结果。这些预积分包括旋转、速度和位置测量,以及整个测量向量的协方差矩阵。
在ORB-SLAM3中,每帧的IMU预积分在tracking线程中计算,具体由Tracking::PreintegrateIMU()函数执行。每帧间的IMU测量通过src/ImuTypes.cc中的Preintegrated::IntegrateNewMeasurement()进行积分。主要步骤如下:首先进行偏置校正,然后计算位置、速度的增量,接着计算旋转的增量。旋转变化量以李代数中的旋转向量表示,并通过指数映射转换为旋转矩阵。一源码论坛旋转矩阵按旋转顺序右乘。最后,更新协方差矩阵,并调整与偏置修正相关的位置、速度和旋转雅可比。
IMU的偏置校正、测量、标定和预积分类定义在include/ImuTypes.h文件中。
值得注意的是,对于初学者,了解GDB调试方法是提高ORB-SLAM3源码理解效率的重要步骤。GDB提供了一系列功能,允许开发者在运行程序时设置断点、查看变量值、追踪程序执行流程等,从而深入分析代码行为和潜在问题。
视觉slam实践之orbslam3
一、概述
Orbslam3 是一款面向单目、双目、RGB-D相机的视觉 SLAM 解决方案。它在三维空间中实时构建环境地图,追踪相机运动。
二、依赖安装
2.1 Eigen3 安装(3.1.0以上版本)
确保安装了Eigen3的最新版本,否则可能遇到找不到Eigen/Dense文件的错误。解决办法是确保安装的Eigen3版本符合要求。
2.2 Pangolin 安装
安装Pangolin依赖并完成安装。使用sudo make install命令执行安装。
2.3 OpenCV 安装
安装编译/构建工具,下载源文件,编译并构建OpenCV。在Vscode中配置环境,通过运行example.cpp文件检查OpenCV安装是否成功。
三、Orb-slam3 安装
直接下载安装包,合约币源码避免使用git clone操作。如遇错误,检查build.sh文件,调试安装过程。特别注意,使用Eigen3版本3.3.1时,安装较为顺利。避免使用3.3.0及以下版本,因其可能缺少eigen3config.cmake文件。
四、测试
下载数据库用于example测试,解压并按照指示操作。将所有文件放置于指定目录下。通过修改路径和运行example下的euroc_examples.sh文件,进行环境地图构建与相机运动追踪的测试。
ROSRTABMAP+ORBSLAM3环境搭建步骤
实现 RTABMAP 结合 ORBSLAM3 的环境搭建步骤
首先,对于 ORBSLAM3 环境搭建,推荐直接在 GitHub 上获取 0.5 版本的 Pangolin,解压并编译安装。接着,安装 OpenCV 3.4.3 版本,从 opencv.org/releases/ 下载源码,解压并编译安装。确保安装前下载好所需的环境配置。最后,对安装 ORBSLAM3 进行配置。
安装 ORBSLAM3 时,建议将工作目录设为 rtab_ws。有时编译 ORBSLAM3 时可能会出现卡顿现象,此时调整 build.sh 文件中的 `make -j` 参数为 `make -j4` 或其他较小的数字即可解决,其中 `-jx` 表示同时执行的编译命令数量。
完成编译后,在 ~/.bashrc 文件中添加如下配置,确保执行 `source` 命令。
接下来,源码资金盘安装 RTABMAP 时,需将其安装在工作目录之外的位置,以避免工作目录编译时报错。配置 RTABMAP 后,安装其 ROS 包,确保安装在工作目录下,并在 ~/.bashrc 文件中添加 RTABMAP_DIR,然后执行 `source`。
使用 RGBD 数据集测试,可从 Dataset Download 下载相关数据集,运行测试。测试结果将提供反馈。
在实现过程中可能会遇到 RTABMAP_ROS catkin_make 失败的问题,这通常是由于卸载了 ros-melodic-rtabmap 导致的,需要重新设置 RTABMap_DIR。报错“OdometryORBSLAM.cpp:::computeTransform() RTAB-MAP is not built with ORB_SLAM support!Select another visual odometry approach.” 表明 RTABMAP 并未正确检测到 ORBSLAM3。检查 cmake 结果显示 ORBSLAM 为 yes 并不意味着成功检测,需要确保 cmake 输出显示为 true 才能确认成功检测到 ORBSLAM3。
ORBSLAM 2 + Ubuntu . + ROS Kinetic 安装全过程
在学习SLAM过程中,使用ORBSLAM 2与Ubuntu .和ROS Kinetic进行安装,以下是详细步骤:
首先,下载并编译OpenCV 3.2.0,确保在编译CMake时设置正确的安装路径。如果已安装OpenCV,建议更改安装位置以避免版本冲突。
接下来,安装ROS Kinetic。具体操作参照相关教程,确保在使用zsh终端时执行source /opt/ros/kinetic/setup.zsh,对于bash终端则需要执行source setup.zsh。
然后,配置ORB SLAM2。参考相关资源建立工作空间,设置ros工作区,准备USB CAM和ORB_SLAM。特殊的源码直到完成编译,若无问题,即可进行测试。
如遇编译失败,需检查错误信息。常见错误包括“undefined reference to symbol '_ZN5boost6systemsystem_categoryEv”和“Cannot Launch node image_view”。解决方法通常是安装缺少的依赖包或手动编译相关节点。
遇到OpenCV相关问题,如“Bad argument (Invalid pointer to file storage) in cvGetFileNodeByName”,则需检查ROS和OpenCV版本是否兼容。可通过手动编译cv_bridge,并在CMakeLists.txt中调整opencv版本路径,以确保与编译环境一致。
总结来说,此过程涉及OpenCV、ROS和ORB SLAM2的安装与配置,需要细心处理依赖关系和版本兼容性问题。通过上述步骤,可成功完成安装并解决常见问题。祝SLAM学习之路顺利。
视觉SLAMORB-SLAM:让人Orz的SLAM
ORB-SLAM,在视觉SLAM领域享有盛誉,其源码在GitHub上已有4.4K+Star,充分彰显了西班牙小哥的出色贡献。近期深入研究其论文并结合源码,体验了一番酸爽,发现它在SLAM领域确实有着独特的魅力与贡献。
ORB-SLAM的核心框架由三个并发进程组成:跟踪、局部建图和回环检测,系统结构清晰,功能分明。跟踪是主进程,负责定位和跟踪相机运动,通过特征匹配实现定位与优化。局部建图则负责关键帧与地图点的插入、删除及局部优化。回环检测则通过搜索回环关键帧,实现位姿图优化,确保系统鲁棒性。
特征提取是ORB-SLAM的关键之一,它采用ORB特征,兼顾性能与效率。与SURF、SIFT等相比,ORB提取速度快,每张仅需.3ms,适用于实时操作。ORB在FAST角点基础上加入方向信息,使BRIEF描述子旋转不变,同时利用图像金字塔和灰度质心法提取特征,实现尺度不变性。此外,通过网格划分与四叉树结构,ORB-SLAM确保特征点分布均匀,即使特征点不足,也可通过调整FAST阈值增加。
单目初始化是ORB-SLAM的另一大亮点,它通过特征点匹配计算基础矩阵和单应矩阵,自动判断场景类型,无需人工设定模型。共视图与本质图结构则加强了关键帧间的联系,实现高效回环检测。相机重定位策略确保了系统在跟踪失败时能快速恢复,关键帧与地图点的删增策略则优化了系统性能。
ORB-SLAM提供多样化的Bundle Adjustment方式,包括初始化阶段的全BA、跟踪过程的运动BA及局部建图阶段的局部BA,适应不同场景需求。整个系统庞大复杂,通过总结主要特性,虽有其精髓,但仍需深入研究,以充分理解其工作原理与优化策略。
总之,ORB-SLAM在视觉SLAM领域展现出了其独特魅力与贡献,从其高效的特征提取到灵活的系统框架,再到多样化的优化策略,无不体现其在SLAM技术中的卓越地位。向所有SLAM领域的先驱者致以崇高的敬意。
实操指南:ORB-SLAM3的编译运行
ORB-SLAM3,作为视觉SLAM领域的明星技术,因其强大的多相机支持和卓越的性能,是机器人建图与定位的必备技能。为了帮助大家深入了解和实践,我们将分享一系列深度技术内容,从理论到实践,包括算法流程、关键模块解析以及编译与运行指导。
首先,我们会一步步引导您进行ORB-SLAM3的编译和运行,解决常见问题。例如,您可能遇到的环境配置问题,如安装GLEW库和处理找不到libpango_image.so的错误。指南中详细介绍了下载代码的步骤,以及针对不同传感器的运行方法,如使用EuROC和TUM VI数据集进行测试。
在非ROS环境中,我们提供了详细的操作指南,包括使用微型飞行器采集的EuROC数据集和TUM VI数据集的运行命令。对于ROS环境,也给出了对应的数据包播放命令,让您能在ROS环境中无缝运行ORB-SLAM3。
尽管本文仅是系列课程的开端,但它为初学者提供了一份实用的编译运行指南。后续还将深入探讨ORB-SLAM3的各个核心模块,如跟踪线程、局部建图线程和闭环检测。所以,如果您对视觉SLAM感兴趣,这将是一个很好的起点。
基于ORB-SLAM3库搭建SLAM系统
基于ORB-SLAM3库搭建SLAM系统,本文将详细指导如何进行系统搭建与配置,包括基础部分和扩展部分。基础部分涉及以下步骤:
注意事项与准备工作:确保环境适合系统搭建,下载ORB-SLAM3库。 创建文件夹(homework_exercise)并执行下载命令。 使用终端输入命令或直接从GitHub下载ORB-SLAM3库。 下载Pangolin库。 下载Eigen3库。 安装所需库: 安装Eigen3库。 安装Pangolin。 安装Pangolin依赖工具。 下载并安装。 安装OpenCV3.4.3。 从官网下载。 解压并配置环境变量。 安装boost库。 安装libssl-dev。 编译和安装ORB-SLAM3。 修改CMakeLists.txt文件。 编译与安装。扩展部分包括:
基于Gazebo搭建移动机器人进行定位和建图。 创建功能包,导入依赖项。 编写URDF或Xacro文件。 封装惯性矩阵算法的xacro文件。 设置相关参数。 启动Gazebo并显示机器人模型。 运动控制与仿真。 添加机器人传动装置。 集成控制器与传动配置。 启动gazebo控制运动。 Rviz查看里程计信息。 雷达、摄像头及kinect信息仿真与显示。附录部分涉及:
git安装。 vi编辑器安装。最后的Q&A部分解答了在搭建过程中可能遇到的问题,包括git、catkin_make、make和cmake等工具的安装与使用问题。参考资料提供了相关的解决办法,以帮助解决搭建过程中可能遇到的技术难题。
ORB-SLAM2源码系列--局部建图线程(MapPointCulling和KeyFrameCulling)
ORB-SLAM2源码系列--局部建图线程详解
MapPointCulling模块负责筛选新加入的地图点,确保地图质量。在ProcessNewKeyFrame函数中,新点被暂存于mlpRecentAddedMapPoints。筛选过程包括:根据相机类型设定不同的观测阈值
遍历新点,若点已标记为坏点则直接从队列中移除
若点的观察帧数少于预期值的%,或者观察相机数量少于阈值cnThObs,即使过了两个关键帧也会被删除
只有经过三个关键帧且未被剔除的点,才会被认定为高质量点,仅从队列移除
另一方面,KeyFrameCulling则针对共视图中的关键帧进行冗余检测。步骤如下:提取当前关键帧的共视关键帧,并遍历它们
对于每个共视关键帧,检查其地图点:若至少有3个其他关键帧观测到,被认为是冗余点
对于双目或RGB-D,仅考虑近距离且深度值大于零的地图点
若关键帧%以上的有效地图点被判断为冗余,该关键帧将被标记为冗余并删除
这样的筛选机制确保了地图数据的准确性和效率。ORB-SLAM2 的编译运行(ubuntu.)以及ROS1安装
在 Ubuntu . 环境中,编译并运行 ORB-SLAM2 需要一系列的准备工作和库的安装。首先,确保已安装了所需的依赖项,然后按照指定链接从 GitHub 下载并安装 Pangolin-0.6 稳定版。
接着,进行 OpenCV-3.4.5 的安装,包括下载、配置编译环境和查询版本信息以验证安装是否成功。对于 Eigen3,建议源码安装默认的 Eigen 版本(3.3.9),并将其头文件复制到相应目录以确保正常工作。若需要使用特定版本(如3.3.7),需手动安装并调整位置。
在编译 ORB-SLAM2 时,需处理常见的报错,例如在 `System.h` 中添加 `#include` 以解决 `usleep` 报错,并根据特定链接调整 `LoopClosing.h` 文件中的代码以解决第二个报错。第三个报错需删除 `CMakeCache.txt` 文件并重新执行 `cmake ..` 和 `make` 命令。
成功编译后,需在特定目录下运行 ORB-SLAM2,确保使用正确的终端打开以找到可执行文件。此外,安装 ROS1 可以通过一键安装工具完成,注意管理日志目录的大小以避免警告。在安装完成后,启动 ROS Master、小海龟仿真器和海龟控制节点,以验证 ROS1 是否已成功安装。
安装过程中可能遇到的问题包括 ROS 目录的位置和库查找问题,以及如何在编译 ORB-SLAM2 时指定依赖目录。通过将 ROS 目录添加到环境变量(如 `PYTHONPATH` 或 `LD_LIBRARY_PATH`)中,可以解决这些问题并确保库的正确查找。
2024-12-23 23:46
2024-12-23 23:21
2024-12-23 23:12
2024-12-23 22:46
2024-12-23 22:17