打印

一文带你了解汽车定位和构图技术SLAM

[复制链接]
327|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2023-11-20 10:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 keer_zu 于 2023-11-20 10:56 编辑

SLAM(Simultaneous Localization and Mapping)同步定位与地图构建,一种同时实现设备自身定位和环境地图构建的技术。
原理是使用相机、激光雷达、惯性测量单元等传感器,来收集环境信息,然后用算法将这些信息融合起来,以确定设备在未知环境中的位置,并构建一张环境地图。
通俗解释为:
    用眼睛观察周围地标如建筑、大树、花坛等,并记住他们的特征(特征提取)

    在自己的脑海中,根据双目获得的信息,把特征地标在三维地图中重建出来(三维重建)

    当自己在行走时,不断获取新的特征地标,并且校正自己头脑中的地图模型(bundle adjustment or EKF)

    根据自己前一段时间行走获得的特征地标,确定自己的位置(trajectory)

    当无意中走了很长一段路的时候,和脑海中的以往地标进行匹配,看一看是否走回了原路(loop-closure detection)。




使用特权

评论回复

相关帖子

沙发
keer_zu|  楼主 | 2023-11-20 10:56 | 只看该作者
SLAM包括以下几个方面

    传感器:激光雷达、摄像头、惯性测量单元(IMU)、里程计等。这些传感器可以提供设备在运动过程中所需要的信息,如距离、角度、速度、方向等。

    设备运动模型:运动模型用于估计设备的位姿,例如里程计模型、速度模型、加速度模型等。

    视觉算法:视觉算法主要用于设备在环境中的感知和定位,如特征提取、特征匹配、图像配准等。

    滤波算法:滤波算法用于估计设备的位姿和地图中不同位置的概率分布,如卡尔曼滤波器、粒子滤波器等。

    优化算法:优化算法用于优化设备的位姿和地图,如扩展信息滤波器、位姿图优化等。

    地图表示:地图表示方式可以有多种,如栅格地图、拓扑地图、点云地图等。



使用特权

评论回复
板凳
keer_zu|  楼主 | 2023-11-20 10:56 | 只看该作者
常用的SLAM传感器

    激光雷达:激光雷达是一种通过发射激光束来探测目标并测量距离的传感器。它可以提供高精度、高分辨率的距离和角度信息,被广泛应用于SLAM中。

    摄像头:摄像头可以通过拍摄环境中的图像来获取场景的信息,如特征点、轮廓等。在SLAM中,摄像头可以用于实现视觉SLAM或者辅助其他传感器进行定位。摄像头种类有单目、双目、单目结构光、双目结构光、ToF。

    惯性测量单元(IMU):IMU可以测量机器人的加速度和角速度等信息,通过积分可以得到机器人的位姿信息。IMU通常与其他传感器结合使用,用于实现多传感器融合。

    里程计:里程计是一种通过测量轮子旋转的信息来推算机器人位移的传感器。虽然里程计的精度较低,但在SLAM中仍然是一个非常重要的传感器。

此外,还有其他一些传感器,如GPS、磁力计等,可以用于SLAM中。不同的传感器有不同的特点和适用场景,根据具体的应用需求选择合适的传感器非常重要。


使用特权

评论回复
地板
keer_zu|  楼主 | 2023-11-20 10:57 | 只看该作者
覆盖栅格地图(Occupany Grid Map)

一种常见的地图表示方式,主要用于描述环境中每个位置的占据状态。在覆盖栅格地图中,环境被分成一个个网格单元,每个网格单元表示一个位置,并记录该位置的占据状态,一般用二进制值表示,例如0表示空闲,1表示占据。
覆盖栅格地图可以通过激光雷达等传感器获得环境中障碍物的位置信息,将障碍物所在的网格单元标记为占据状态。同时,通过机器人的位姿信息,可以将机器人所在的网格单元标记为占据状态,并在地图中绘制出机器人的轨迹。
覆盖栅格地图的优点在于简单、易于实现和可视化,可以用于快速构建地图和进行导航。但是,由于覆盖栅格地图要求环境被划分为网格单元,因此地图的精度和分辨率可能会受到限制。同时,覆盖栅格地图还需要消耗大量的存储空间和计算资源,因为需要维护大量的网格单元。
需要注意的是,覆盖栅格地图只记录了占据状态,并没有记录障碍物的形状和大小等信息。如果需要更精确的地图表示方式,可以使用其他地图表示方法,如点云地图、边缘地图等。

点云地图(Point Cloud Map)

主要用于描述环境中物体的三维形状和位置信息。在点云地图中,环境被表示为一组三维点云,每个点表示一个位置,并记录该位置的属性信息,如颜色、方向量、反射率等。
点云地图可以通过激光雷达、摄像头等传感器获得环境中物体的位置和形状信息,通过点云配准和滤波等算法,可以将多个点云融合成一个完整的地图,用于机器人的定位、导航和避障等任务。
相对于覆盖栅格地图等二维地图表示方式,点云地图的优点在于可以提供更加真实的环境信息,可以描述物体的三维形状和位置信息,同时也可以用于识别和分类物体。但是,点云地图的缺点在于数据量较大,需要消耗大量的存储空间和计算资源,同时对点云数据的处理和配准等算法也比较复杂。
需要注意的是,点云地图的精度和分辨率取决于传感器的精度和采样率等因素,而点云地图的质量对机器人的定位和导航等任务影响很大,因此需要对点云地图进行精细的处理和优化。


使用特权

评论回复
5
keer_zu|  楼主 | 2023-11-20 10:57 | 只看该作者
SLAM工作原理

不同的SLAM算法,实现的具体细节会有所不同,但一般都包含前端和后端。
前端
从传感器中获取原始数据,并将这些数据与已有地图进行关联,从而确定机器人轨迹的过程。

    数据采集:通过传感器获取机器人周围环境的数据,如激光点云数据、图像数据等。

    数据时空同步:将从不同传感器或不同时间戳接收到的数据进行同步,以便后续配准。

    特征提取:从采集的数据中提取用于建图的特征点,如关键点、特征描述等。

    数据融合:将不同传感器获取的数据融合起来,提高建图的准确性和稳定性。

    数据关联:将当前帧的特征与之前的地图,或者其他帧之间的特征进行匹配,以确定机器人的运动轨迹。

    运动估计:通过数据关联得到机器人的运动轨迹,可以是平移、旋转等运动。

后端
根据前端获取的运动轨迹和地图信息,对机器人的状态、地图和传感器误差等进行估计和优化的过程。

    非线性优化:通过非线性最小二乘法等,对机器人姿态和地图进行优化,使得机器人的位置和地图更加准确。

    回环检测:识别机器人经过的相似位置,避免累积误差的产生。可以有效降低机器人的定位误差,提高SLAM算法的精度和鲁棒性。

根据传感器的不同,SLAM算法可以分为二维激光SLAM、三维激光SLAM,以及视觉SLAM。
二维激光SLAM常用的有Cartographer、Karto,三维激光SLAM较流行的是LIO-SAM和LOAM系列,视觉SLAM主流的方案为ORB-SLAM3、VINS-Fusion。

使用特权

评论回复
6
keer_zu|  楼主 | 2023-11-20 10:58 | 只看该作者
本帖最后由 keer_zu 于 2023-11-20 10:59 编辑

视觉SLAM
使用从相机和其他图像传感器采集的图像。视觉 SLAM 可以使用普通相机(广角、鱼眼和球形相机)、复眼相机(立体相机和多相机)和 RGB-D 相机(深度相机和 ToF 相机)。视觉 SLAM 所需的相机价格相对低廉,因此实现成本较低。此外,相机可以提供大量信息,因此还可以用来检测路标(即之前测量过的位置)。
路标检测还可以与基于图的优化结合使用,这有助于灵活实现 SLAM。使用单个相机作为唯一传感器的 vSLAM 称为单目 SLAM,此时难以定义深度。这个问题可以通过以下方式解决:检测待定位图像中的 AR 标记、棋盘格或其他已知目标,或者将相机信息与其他传感器信息融合,例如测量速度和方向等物理量的惯性测量单元 (IMU) 信息。
vSLAM 相关的技术包括运动重建 (SfM)、视觉测距和捆绑调整。视觉 SLAM 算法可以大致分为两类。稀疏方法:匹配图像的特征点并使用 PTAM 和 ORB-SLAM 等算法。稠密方法:使用图像的总体亮度以及 DTAM、LSD-SLAM、DSO 和 SVO 等算法。


视觉SLAM整体流程大致可以概括为五步
(1)传感器信息读取
在视觉SLAM中主要为相机图像信息的读取和预处理。如果是在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。
(2)视觉里程计(Visual Odometry,VO)
视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子。VO又称为前端(FrontEnd)。
(3)后端优化(Optimization)
后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于接在VO之后,又称为后端(Back End)。
(4)回环检测(Loop Closing)
回环检测判断机器人是否到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
(5)建图(Mapping)
它根据估计的轨迹,建立与任务要求对应的地图。
其整体流程图大致如下


使用特权

评论回复
7
keer_zu|  楼主 | 2023-11-20 11:00 | 只看该作者
SLAM算法实现4要素

    地图表示,比如dense和sparse都是它的不同表达方式,这个需要根据实际场景需求去抉择

    信息感知,需要考虑如何全面的感知这个环境,RGBD摄像头FOV通常比较小,但激光雷达比较大

    数据关联,不同的sensor的数据类型、时间戳、坐标系表达方式各有不同,需要统一处理

    定位与构图,就是指怎么实现位姿估计和建模,这里面涉及到很多数学问题,物理模型建立,状态估计和优化

其他的还有回环检测问题,探索问题(exploration),以及绑架问题(kidnapping)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1314

主题

12271

帖子

53

粉丝