在ROS上运行的RTAB-MAP(基于即时外观建图)

2024-05-09 14:06:00

        在之前的blog中,我分享了Quanser QCar2DLidar巡线功能。在QCar正式发布即将来到的一周年之际,我想再次与大家分享我在QCar上做的新研究。我想说说使用RTAB-MAP(基于即时外观建图)的过程以及对比于创建2D地图,创建3D地图的优势,我还将展示如何在ROS中实现这一技术。

        什么是RTAB-MAP

        RTAB-MAP Real-Time Appearance-Based Mapping)是用RGBD相机、立体相机或3D激光雷达的同时定位与地图构建。这些传感器被用作基于外观的增量式闭环探测器。这个过程使用词袋模型方法来决定每一帧新获取的图像(或激光雷达扫描)是来自之前的位置还是新的位置,然后应用图像优化器最小化每一帧里的错误。在整个过程中,将用储存管理方案来限制用于闭环检测和图像优化的位置数量,这是为了保证在处理大规模环境时的实时性能。

        为什么使用RTAB-MAP

        3D绘图相对于2D的一个好处是三维图像能够更好地呈现对象本身。在二维地图中,我们仅仅知道激光雷达所位于高度的距离信息,该位置通常位于自动驾驶汽车的顶部。然而在地面水平上或激光雷达与地面之间的距离信息是未知的,这就是为什么自主导航系统很少使用二维占据栅格地图。这就是为什么我们的QCar添加了四个CSI广角摄像头,在顶部的RGBD摄像头确保能够包含全面的视觉信息。

        比如在地下煤矿中运行的自动驾驶汽车,它的工作空间通常是狭窄的隧道并带着各个方向的急弯。车辆需要有关前方车辆的足够信息,以便可以相应地规划速度和行车轨迹。在这个例子中,车辆位于地下所以无法进行GPS导航,车轮下方打滑从而导致里程表数据不准确。RTAB-MAP在这个时候就变得非常有用,只要车辆安装了指向前方的RGBD摄像头来收集3D图像信息,基于RTAB-MAP的算法,车辆能够计算视觉里程表数据,该数据可以和车轮的数据表进行传感器数据融合。

        QCar上的应用

        我决定通过使用rtabmap_ros软件包进行三维同时定位与地图构建,在QCar上使用RGBD相机,实现起来非常简单直接。

        ●运行RGBD相机来手机深层数据

        ●使用游戏手柄驾驶QCar

        ●绘制三维地图及车辆轨迹

        启动RGBD相机,您只需要为Intel Realsense相机运行ROS软件包:

        以下为运行指令:

        roslaunch realsense2_camera rs_camera.launch align_depth:=true

        最后一个参数是将深度相机的信息与彩色相机信息整合,确保深度信息与彩色相机中的每个像素对齐。使用ROS最大的好处之一就是强大的ROS社区提供了许多现有的软件包,他们能让您快速启动并运行软件,一旦您启动了RGBD相机,下一步就是用游戏手柄来驱动QCar。我用的工具是Simulink以及Quanser强大的实时控制软件QUARC,我们的软件工程师花费了大量的时间用QUARC来创建不同的自动驾驶应用程序。如果你想要知道如何在Simulink中实现手动驱动,请访问我们的Quanser官网进入QCar页面进行下载。

        最后一步是实行以下指令来实现数据可视化:

        roslaunch rtabmap_ros rtabmap.launch \

            rtabmap_args:=”–delete_db_on_start” \

            depth_topic:=/camera/aligned_depth_to_color/image_raw \

            rgb_topic:=/camera/color/image_raw \

            camera_info_topic:=/camera/color/camera_info \

        approx_sync:=false \

        rtabmapviz:=false \

        rviz:=true

        主要指令后的参数是通知ratbmap的算法来接收来自RGBD相机的话题并打开可视化工具。空间中显示了来自RGBD相机的三维地图,在计算距离信息之后,它还将在地面上绘制二维占据栅格地图。

        下面的视频就是这个应用的实时演示(视频请点击阅读原文)。当我驾驶QCar时,地图的更新基于对闭合环路的检测,并根据数据里程表来计算轨迹。就算在QCar遇到急转时,算法也依然可以更新视觉数据,当QCar回到出发的位置时,你会看到三维视觉地图没有改变,这也就证明了三维地图及其生成的位置信息非常准确。


        我们还能改进什么?

        考虑到RGBD相机的本质,默认刷新率设置为60赫兹,所以当相机画面移动太快,光流量传感器会丢失信息。而且,环境中的照明条件需要非常充足,否则算法会难以检测到相机画面是否有更新,且有可能难以与上一帧的相机画面进行比较。这个问题的解决方法就是我们可以将里程表数据和雷达技术融合在一起。由于我是ROS用户,为了提升这个应用的性能,我的下一个目标是将来自hecto slam的位置数据与里程表数据融合。基于激光雷达不受照明条件的限制,而且我们之前已经测试了激光雷达的性能,我能够相信来自它的位置数据。

        无人驾驶技术如今蓬勃发展。单单一个RGBD相机能应用于不同领域,那么集合所有传感器后的应用将会有无限的可能。我希望这篇推文能够让用户或未来的用户了解到在QCar上能够有无数的应用,而我只说了一种。如果您对QCar的应用兴趣浓厚,请在微信后台给我们留言,谢谢!

        阅读原文:https://mp.weixin.qq.com/s/6s__gKY6QGyXziJX5nxFYw