01.
初识SLAM
SLAM 是Simultaneous Localization and Mapping 的缩写,中文译作”同时定位与地图构建”,于1986年首次被提出。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动状态。
首先,作为自动驾驶车辆或自主移动机器人领域的热门技术,SLAM要解决的问题有两个:定位—我在什么地方?,建图—周围环境是什么样子?
用于定位与感知周围环境的方法有很多,例如:室内的仓储物流AGV在地板上铺设导引线或粘贴识别二维码,室外的汽车安装有GPS位置接收器。有了这些东西,定位问题是否都解决了呢?安装于环境中的设备与标识必须严格由人工布置,在一定程度上限值了机器人的使用范围,而GPS信号在高楼、隧道内信号误差变大。这时,SLAM就应运而生了。
02.
SLAM的工作原理
对于无人车来说,如果要实现自主导航控制,必须要解决三个问题,即“我在哪”、“我要去哪”、“我该如何过去”。这三个问题分别对应于无人驾驶技术中的自定位、路径规划和控制策略。首先需利用各个传感器感知无人车周围环境,然后通过里程计算法对各传感器观测的数据进行计算,求解无车人位姿信息,再根据无人车内部的里程计、陀螺仪、加速度计等传感器的数据,利用优化算法推算出位姿误差,并对无人车进行精准的定位。与此同时,通过无人车当前时刻的定位信息以及传感器在当前时刻的观测值,对地图进行增量式更新,把已经建好的地图作为先验信息进行下一帧的定位与建图,周而复始,完成建图。在这个过程中无人车得到环境地图的同时也对自身位置做出了准确判断,将无人车建好的地图作为原始数据输入给无人车的导航系统,并将三维点云地图转换成为二维栅格地图,进行可行区域划分,再通过路径规划模块设计出从 A 到 B 点的最优路径并合理避障,最后控制无人车进行路径跟踪,完成整个无人车自主导航系统。
经典的SLAM 框架和流程主要包括以下步骤:
(1)传感器数据采集。SLAM系统集成多种先进的传感器组件,包括但不限于三维激光雷达(LiDAR)的点云数据读取和预处理、立体或多目摄像头(用于视觉SLAM,VSLAM)图像信息的读取和预处理、惯性导航系统(INS,含IMU陀螺仪和加速度计)、超声波测距仪以及轮速编码器等,以捕获丰富的环境几何特征和动态运动参数。
(2)里程计(Odometry)。里程计的任务是估算两个不同位姿的运动关系,以及局部地图的样子。里程计又称为前端(Front End)。在视觉SLAM中,前端处理阶段涉及特征点检测、描述符提取、特征匹配和跟踪,进而运用光束平差法、直接法等视觉里程计技术,从连续的图像序列中精确估计位姿变化。而对于LiDAR SLAM,前端处理通常聚焦于点云分割、边缘检测和点云配准,通过对扫描数据进行聚类和匹配,准确估计传感器平台的相对运动。
(3)后端优化(Optimization)。后端接受不同时刻里程计测量的相对位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于在里程计之后,又称为后端(BackEnd)。为了联合优化机器人位置姿态估计与地图构建,SLAM系统通常采用先进的概率统计框架下的状态估计器,如扩展卡尔曼滤波(EKF-SLAM)、粒子滤波(PF-SLAM)或基于图优化的非线性最小二乘法(如G2O、g2o、Ceres Solver等实现的Graph SLAM)。这些方法通过递归或批量优化的方式,迭代更新系统的状态变量,其中包括机器人的轨迹(即位置、方向、速度等)以及地图中特征点的全局坐标,力求降低观测噪声、减小累积误差,并保持状态估计的一致性和收敛性。
(4)回环检测(Loop Closing)。回环检测判断自动驾驶车辆或机器人是否到达过先前的位置。SLAM系统内嵌有强大的闭环检测机制,利用环境不变特征、基于图像检索的哈希表或拓扑地图匹配等技术,在机器人回到先前已知区域时检测出闭环路径。如果检测到回环,它会把信息提供给后端进行处理。一旦闭环被成功识别,系统会触发全局重定位并执行闭环修正优化,通过BA(Bundle Adjustment)或其他非线性优化手段,整体重构和优化整个轨迹,有效地抵消因长期运行造成的漂移效应,提高全局一致性。
(5)建图(Mapping)。它根据估计的轨迹,建立与车辆驶过所对应的周围环境地图。地图构建模块负责将传感器感知到的环境信息转化为可理解的地理参考框架内的空间模型,该模型可能表现为具有拓扑关系的特征点云图、二维栅格地图或三维网格地图。高效的地图更新策略确保了在机器人持续探索过程中,地图能实时反映环境变化,并通过维护地图的连贯性和完整性来增强SLAM的整体性能。
03.
SLAM的解决方案
SLAM技术在过去几十年中取得了丰富的研究成果,在SLAM发展过程中,各种传感器承担着至关重要的角色,为定位与建图算法提供全局或局部的测量信息。如果SLAM的传感器主要为相机,那就称为“视觉SLAM”, 若传感器主要为激光雷达,那就称为“激光SLAM”。
视觉SLAM的优点包括:
(1)成本优势:相比于激光雷达,视觉传感器(尤其是单目或双目相机)的成本更低廉,更容易获得。
(2)信息丰富:视觉传感器可以提供丰富的颜色和纹理信息,有利于识别和跟踪场景中的动态目标,适用于需要更高语义理解和环境适应性的应用。
(3)轻便小巧:视觉传感器体积小、重量轻,适合安装在小型移动平台上,尤其是在消费级市场和空间受限的场合。
(4)自然光照适应:在某些情况下,视觉系统能在自然光照条件下良好工作,无需额外光源。
同时,视觉SLAM具有下述缺点:
(1)光照依赖性强:视觉SLAM对光照条件要求较高,在弱光、无纹理区域、快速变化光照下性能会大幅下降。
(2)精度受环境影响:图像匹配和特征提取的精度易受到环境因素干扰,例如在纹理不明显或重复性高的地方,定位和建图的精度会降低。
(3)计算复杂度高:视觉SLAM涉及到图像处理和特征匹配,计算量较大,实时性相对较差,特别是在处理高清视频流时。
(4)尺度不确定性:纯视觉SLAM通常面临尺度不确定性问题,即无法确定绝对距离,需结合其他传感器信息才能获得绝对尺度。
激光SLAM具有以下优点:
(1)精度高:激光雷达可以提供高精度的距离测量,构建的地图精度通常优于视觉SLAM,尤其在平面和结构化环境中表现优秀。
(2)稳定性好:不受光照和色彩等因素影响,即使在无纹理或低光照环境下也能稳定工作。
(3)实时性好:激光SLAM因其点云数据结构简单,实时处理能力较强,能够快速构建可靠的空间模型。
(3)距离测量直接:激光雷达可以直接测量到障碍物的距离,无需像视觉那样通过复杂的图像处理来间接估计。
激光SLAM的缺点包括:
(1)成本高昂:相较于视觉传感器,激光雷达的价格较高,这限制了其在某些低成本应用领域的普及。
(2)硬件体积大、功耗高:激光雷达设备相对于视觉传感器往往更大、更重,且能耗较高。
(3)缺乏颜色和语义信息:激光雷达只能提供距离信息,难以获得丰富的视觉信息,不利于对环境进行细致的语义理解。
(4)部分材质反射率影响:对于某些材质如镜面或吸光材料,激光雷达的点云数据可能会受到影响。
但由于精度和鲁棒性的不足,以及场景的复杂性,使用单一传感器(如相机、激光雷达)的SLAM 系统往往无法适应任务需求,故多源融合的SLAM 解决方案成为更优的选择。
总体来看,多源融合SLAM的现有解决方案主要分为3种类型:
(1)多传感器融合。由两种及以上传感器组成的混合系统,如相机、激光雷达和IMU惯性测量单元,根据传感器数据的组合方式可进一步分为松耦合、紧耦合方案。
(2)多特征基元融合。这里的特征是物体表面轮廓的表示方法,包括点、线、面以及其他高维几何特征等。
(3)多维度信息融合。几何、语义、物理信息和深度神经网络的推理信息等相融合。惯性测量单元和视觉、激光雷达的融合可以解决视觉里程计的漂移和尺度丢失问题,提高系统在非结构化或退化场景中的鲁棒性。此外,不同几何特征基元的融合,可以大大减少有效约束的程度,并可为自主导航任务提供更多的有用信息。另外,数据驱动下的基于深度学习的策略为SLAM 系统开辟了新的道路。监督学习、无监督学习和混合监督学习等逐渐应用于SLAM 系统的各个模块,如相对姿势估计、地图表示、闭环检测和后端优化等。学习方法与传统方法的结合将是提升SLAM 系统性能的有效途径。
04.
SLAM的应用场景
SLAM技术在多个领域展现出卓越的应用价值和广阔前景,在无人驾驶汽车领域,SLAM技术是实现自动驾驶核心功能的关键技术之一,SLAM系统能实时构建车辆周围的高精度三维地图,同时准确估计车辆在该地图中的位置,对于路径规划、障碍物识别与规避、车道保持等功能至关重要。在无人机飞行控制中,SLAM技术允许无人机在未知环境中自主飞行,通过实时构建地形地貌与环境特征的地图,结合自身飞行姿态数据,实现自主定位、避障和路径规划。无论是测绘、搜救还是农业植保等领域,SLAM技术都能显著提升无人机的智能化水平和操作效率。家庭服务机器人(如扫地机器人)和商业服务机器人(如仓库物流机器人)也广泛应用SLAM技术实现自主定位和导航。在AR应用中,SLAM用于实现实时环境感知与虚拟内容的精确叠加。手机或AR头盔上的摄像头捕捉真实环境信息,通过VSLAM(视觉SLAM)算法建立用户视角下的局部地图,从而在用户的视野中无缝融入虚拟物体,提供沉浸式体验。在地下矿井与洞穴探索、城市空间管理与智慧城市建设、智能家居等等行业领域,SLAM均有效推动上述行业的智能化水平。总之,SLAM技术作为智能移动系统的基础支撑技术,持续推动着无人驾驶、机器人技术、智慧城市、物联网等领域的创新发展,不断扩展着自主导航和环境理解的应用范围和深度。