Ubentu18.0+ORB-SLAM2+摄像头
引言:
在视觉同步定位与地图构建(Simultaneous Localization and Mapping, SLAM)领域,ORB-SLAM2系统的出现标志着重要的技术进步。这个著名的SLAM系统由Juan D. Tardós、Raúl Mur-Artal等人开发,引入了多项创新技术,能够在不同环境下实现高精度和高效率的实时定位和地图构建。ORB-SLAM2不仅在科学研究中扮演着关键角色,它的高灵活性和广泛的适用性也使其在自动驾驶、机器人导航以及增强现实等多个行业中有着广泛的应用前景。
本次实验的主要任务是了解和掌握ORB-SLAM2的核心内容、搭建ORB-SLAM2环境、并成功运行TUM数据集,进一步扩展到使用标定摄像头采集的数据进行实时环境检测。通过这一系列的实验步骤,不仅可以深入理解ORB-SLAM2的工作原理和强大功能,而且对于未来在更复杂的实际场景中的视觉SLAM应用有重要的启示和指导意义。
希望你在本次学习过后,能够有一定的收获!!!
推荐歌曲—Falling Down
冲啊!!!! ٩(͡๏̯͡๏)۶ ٩(͡๏̯͡๏)۶ ٩(͡๏̯͡๏)۶
文章目录
一、任务介绍
- 了解ORBSLAM2的相关内容
- 使用ORBSLAM2跑通TUM数据集
- 使用将标定后的摄像头,进行数据采集,使用摄像头的数据进行环境检测
二、ORB-SLAM2相关介绍
ORB-SLAM2是一个著名的视觉SLAM(Simultaneous Localization and Mapping,即同时定位与地图构建)系统,由Juan D. Tardós、Raúl Mur-Artal等人开发。它在多种环境下都能实现高精度的实时定位和地图构建,以及大规模环境中的持久定位能力。作为ORB-SLAM系列的第二代,ORB-SLAM2在其前代的基础上做出了重要改进,让我们逐一了解。
1. 特点
- ORB特征
ORB-SLAM2使用ORB(Oriented FAST and Rotated BRIEF)特征来从图像中提取特征点。ORB特征相对于其他特征如SIFT、SURF,具有计算效率高、性能稳定的优势,特别是在实时应用和计算资源有限的环境中表现突出。
- 三种模式的地图初始
ORB-SLAM2提供了三种地图初始化模式:单目、双目和RGB-D。这让ORB-SLAM2能够适用于更广泛的应用场合,满足不同硬件配置和环境需求,极大地提升了其灵活性和通用性。
- 回环检测
回环检测是ORB-SLAM2中的一个关键特性,它使系统能够识别出当前视野与先前访问过的场地之间的关联。通过这种方式,ORB-SLAM2能够纠正累积的定位误差,确保长时间操作的精度。它采用了DBOW2来实现高效的回环检测。
- 局部地图
ORB-SLAM2引入了局部地图的概念,这使它在处理大规模环境时更加高效。系统会仅优化当前视野内及其附近的关键帧和地图点,而不是整个地图,这显著提高了计算效率。
- 全局优化
通过**全局BA(Bundle Adjustment)**实现了对整个地图的优化,这个过程通常在检测到回环后触发。它能够进一步提高系统的定位和地图重建精度。
2. 应用
ORB-SLAM2作为一个先进的视觉SLAM系统,通过创建精确的实时地图并实现实时定位,使得其在许多技术领域内均有广泛的应用前景。下面对各个领域的应用进行更为详细的探讨。
- 自动驾驶
ORB-SLAM2在自动驾驶领域至关重要。它对车辆的环境进行3D建模,提供了准确的定位,支持车辆理解周围环境,并预测其他交通参与者的动作。进一步地,ORB-SLAM2能够帮助自动驾驶车辆在没有详细预先加载的地图情况下导航,增强车辆在复杂城市或乡村环境下的适应性和安全行驶能力。
- 机器人导航
在机器人导航中,ORB-SLAM2被利用来实现室内外机器人的自主定位与路径规划。无论是用于家庭清洁机器人还是工业级探索机器人,ORB-SLAM2都能够提供精确的地图信息和位置估计,使得机器人避开障碍物、优化路径,并且完成复杂的任务。对于搜救机器人,ORB-SLAM2能够帮助它们在灾难现场进行有效的地图构建和快速导航,从而救出生还者。
- 增强现实
在增强现实(AR)应用中,ORB-SLAM2的地图创建和定位能力为真实世界与虚拟内容的无缝融合提供了基础。它可应用于手机AR游戏,提供实时的环境跟踪,以便动态渲染虚拟对象。此外,在AR头盔和眼镜中,ORB-SLAM2可用于稳定跟踪用户的视角,增强用户体验和互动性。
- 移动增强现实应用
在移动设备上,ORB-SLAM2允许应用通过实时的相机数据理解用户周围的环境,为例如室内导航和家具布局等应用提供准确的空间信息。通过手机或平板电脑,用户可以可视化地看到3D地图的创建过程,这也为实时地图绘制和室内设计等功能奠定了基础。
3. 发展
ORB-SLAM2之后,研究团队又推出了ORB-SLAM3,进一步扩展了系统的能力,包括对多传感器系统的支持等,体现了视觉SLAM技术的持续发展和完善。
ORB-SLAM2不仅因其卓越的性能和广泛的应用受到认可,也为视觉SLAM的研究和发展提供了重要的基石。随着技术的进步和研究的深入,视觉SLAM将在未来的智能系统中扮演着更加重要的角色。
三、ORB-SLAM2 环境搭建
1、安装工具
配置前需要下载cmake、gcc、g++和Git工具。
下载cmake
sudo apt-get install cmake
下载git
sudo apt-get install git
下载gcc和g++
sudo apt-get install gcc g++
2、安装Pangolin
在安装pangolin之前,先安装依赖项。
sudo apt-get install libglew-dev
sudo apt-get install libpython2.7-dev
下载安装Pangolin。可能会有点慢,如果因为网不太好断开了,再重新执行一次下列命令即可。
git clone https://github.com/stevenlovegrove/Pangolin.git
下载好后,进入Pangolin文件夹。
cd Pangolin
创建编译文件夹,命名为build。
mkdir build
进入文件夹进行配置。
cd build
执行如下命令,编译过程有点慢,需要花费较长的时间。
但是这里也可以使用make -j等命令速度会稍快一些,但如果电脑性能不佳,还是使用make命令较好。
sudo make -j8
编译安装。
sudo make install
3、安装Eigen
使用下列命令来安装eigen
sudo apt-get install libeigen3-dev
4、安装ORB_SLAM2
如果你打算在ROS(Robot Operating System)环境中运行ORB_SLAM2,进行视觉SLAM的实验和研究,那么将源代码放置在工作空间的src
目录下通常是最佳做法。这里提供了一个详细的步骤,将帮助你顺利完成ORB_SLAM2的下载和安装。
- 环境准备:
首先,我们假设你已有一个名为catkin_ws
的ROS工作空间,你可以通过如下命令进入到其src
目录下:
cd ~/catkin_ws/src/
确保你位于工作空间的src
文件夹内,这是ROS建议的源代码存放目录,以保持整体结构组织清晰。
- 下载ORB_SLAM2源代码:
接着,我们将通过Git来克隆ORB_SLAM2的官方仓库,这将确保你获得最新的稳定版本:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
该命令将会创建一个名为ORB_SLAM2
的目录,其中包含了必要的所有文件。
- 准备编译环境:
之后,我们需要进入到ORB_SLAM2
文件夹中,进行编译准备:
cd ORB_SLAM2
一旦进入该目录,我们必须确保build.sh
脚本文件具有执行权限。通过以下命令,你可以修改文件权限:
chmod +x build.sh
- 编译ORB_SLAM2:
编译ORB_SLAM2是通过执行build.sh
脚本实现的。在开始编译之前,请确保所有依赖已正确安装。执行以下命令开始编译过程:
./build.sh
如果在编译过程中遇到包含usleep
未声明的错误,说明你需要查看ORB_SLAM2文档中的“问题2”解决方法,通常这涉及到一些与系统兼容性相关的修改。
- 在ROS中编译ORB_SLAM2:
为了在ROS环境中使用ORB_SLAM2,你需要运行它的ROS封装包。首先,给予build_ros.sh
脚本文件执行权限,然后将ORB_SLAM2例子的路径添加到你的ROS包路径中,最后运行封装包的编译脚本:
chmod +x build_ros.sh
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
./build_ros.sh
- 加速构建过程:
最后的编译过程可能需要一些时间,你可以使用如下命令以允许编译过程使用多线程,加快速度:
make -j8
这里的-j8
表示允许同时运行8个编译任务。根据你的机器性能,你可以选择一个适当的线程数;如果你的电脑性能有限,请注意不要设置过高的线程数,以避免过高的负载。相应地,你可能需要编辑build.sh
和build_ros.sh
脚本文件中指定并行任务数的部分。
完成这些步骤后,ORB_SLAM2就已经成功安装在你的ROS环境中了。现在,你可以开始探索视觉SLAM的强大功能了。祝你在SLAM项目上有所创新和突破!
四、跑通TUM数据集
- 下载数据集
- 首先,需要下载TUM数据集。可以从以下链接下载:TUM RGB-D 数据集。确保下载的是
rgbd_dataset_freiburg1_desk2
数据集。 - 将下载的数据集放置在ORB-SLAM2目录下的一个名为
Data
的文件夹中。如果最初将数据集下载到了其他地方(如“下载”文件夹),请将其复制到Data
文件夹中。 - 打开终端,导航到ORB-SLAM2文件夹。可以通过在文件夹上右键点击并选择“在终端打开”来实现。
- 按照ORB-SLAM2的README中的说明,在终端中执行以下命令:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
注意,上述命令中的PATH_TO_SEQUENCE_FOLDER
应替换为您下载的数据集所在的路径,以及选择正确的TUM.yaml配置文件。根据我的文件路径,我使用以下命令:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ~/Desktop/rgbd_dataset_freiburg1_desk2
确保在运行上述命令之前进入ROS的环境,可以使用以下命令启动roscore:
roscore
这将启动ROS核心服务,以确保ORB-SLAM2正常运行。
-
运行结果展示
五、摄像头实时检测
1. 修改标定文件
在之前的实验中,我们进行了海康威视摄像头的标定,在这个地方我们便使用到了
2.查看摄像头话题
-
启动ROS
roscore
-
启动摄像头驱动节点:
roslaunch usb_cam usb_cam-test.launch
-
查看话题
rostopic list
3.修改代码
在/home/lx567/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ros_mono.cc 下进行代码修改
重新编译
./build_ros.sh
4.运行指令
rosrun ORB_SLAM2 Mono ~/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
等待数据加载一会,就能够看到对应的效果。
下面展示我的检测效果,我对我的笔记本还有一个小玩具进行建模展示
QQ录屏20240426130808
七、心得总结
首先,我对ORB-SLAM2系统有了更深入的了解。通过下载和配置TUM数据集,我亲身体验到了从理论到应用的过渡。实际操作中的每一个步骤——从环境搭建到参数调整,都让我对ORB-SLAM2系统的复杂性有了更直观的认识。我特别对ORB特征提取的高效性和系统的地图初始化模式留下了深刻印象,这些功能在算法准确快速地完成地图构建和相机定位方面发挥了关键作用。
+
其次,实验过程中遇到的种种挑战,如环境配置的问题、编译错误的解决,也是宝贵的学习机会。每当我碰到难题,深入阅读文档、论坛和相关资料,最终找到解决方案时,我都会感到无比的成就感。这不仅锻炼了我的问题解决能力,也增强了我在面对未知和挑战时的自信心。
+
通过监视摄像头数据的实时处理,我了解到了在现代自动化系统中,如何将摄像头校准、数据采集与实时环境检测相结合的重要性。这样的应用让我认识到视觉SLAM技术在真实世界中的广泛适用性,尤其是在机器人、自动驾驶车辆和增强现实等前沿技术领域。
最后感谢大佬友情链接:
- https://blog.csdn.net/wowbing2/article/details/106318191
- https://blog.csdn.net/weixin_44436677/article/details/105587986