打印

SLAM技术综述(二)--- 视觉SLAM

[复制链接]
255|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
3. 视觉SLAM主流方案

以视觉传感器作为主要感知方式的SLAM称为 视觉SLAM 。按照建图稀疏程度来分,视觉SLAM技术可以分为稀疏SLAM,半稠密SLAM和稠密SLAM。虽然同为SLAM系统,但它们的侧重点并不完全一样。
SLAM 系统最初的设想是为机器人提供在未知环境中探索时的定位和导航能力,其核心在于实时定位。以定位为目的,需要建立周围环境的路标点地图,进而确定机器人相对路标点的位置,这里的路标点地图即稀疏地图,地图服务于定位。
但随着算法和算力的进步,SLAM逐渐被用于对环境的重建,也即把所有看到的部分都完整的重建出来,此时,SLAM所建立的地图必须是稠密的,而SLAM系统的首要任务也从定位转变为了建立环境的精确稠密地图。这种首要任务的差异最终会反映在SLAM系统的技术方案上,稠密SLAM系统对精度的评价也从“定位精度”转变为“建图精度”。此外,相比于稀疏SLAM系统,稠密SLAM的建图部分要消耗大得多的算力,通常都需要GPU加速来达到实时性。

使用特权

评论回复
沙发
keer_zu|  楼主 | 2023-7-5 13:50 | 只看该作者
3.1、LSD-SLAM 方案
LSD-SLAM 即 Large-Scale Direct SLAM,兼容单目相机和双目相机。LSD-SLAM是一种基于光流跟踪的直接法SLAM,但是实现了半稠密建图,建图规模大,可以在线实时运行。作者有创见地提出了像素梯度与直接法的关系,并利用这种关系实现了简单直接法所无法实现的半稠密重建。作为一种基于关键帧的SLAM系统,LSD-SLAM的主要处理流程为:
  • 通过直接法对相机位姿进行追踪,当当前帧所包含的信息与最后一个关键帧有足够差别时,建立新的关键帧。
  • 对当前关键帧的深度信息进行估计,对于双目LSD-SLAM,首先根据左右图像的视差估计深度,然后结合不同时序的帧优化深度。
  • 对全局的关键帧进行位姿图优化,获得全局一致的地图。


LSD-SLAM 在 CPU 上实现了半稠密场景的重建,这在当时(2014)是非常有创见的工作,是作者(TUM 计算机视觉组)多年对直接法进行研究的成果。LSD-SLAM 的半稠密追踪使用了一些精妙的手段,来保证追踪的实时性与稳定性。
另一方面,由于 LSD-SLAM 使用了直接法进行跟踪,所以它既有直接法的优点(对特征缺失区域不敏感),也继承了直接法的缺点。例如,LSD-SLAM 对相机内参和曝光非常敏感,并且在相机快速运动时容易丢失。


使用特权

评论回复
板凳
keer_zu|  楼主 | 2023-7-5 14:04 | 只看该作者
3.2、ORB-SLAM2 方案
ORB-SLAM 系列是最为经典的SLAM 方案之一,ORB-SLAM2 发表于2017年,是ORB-SLAM的升级版,同时支持单目、双目、RGB-D相机。ORB-SLAM2的算法流程与ORB-SLAM几乎相同,共包含三个模块(线程),如下所示。
需要注意的是,重定位和回环检测都是基于DBoW2词袋实现的,而词袋需要预先建立好,通常可以通过一个大型图片数据集离线建立起词袋,数据集数据越广泛,建立的词袋越实用。


使用特权

评论回复
地板
keer_zu|  楼主 | 2023-7-5 14:07 | 只看该作者
3.3、ORB-SLAM3 方案

在前作的基础上,西班牙Zaragoza大学于2020年7月最新开源了ORB-SLAM3的论文和源码。ORB-SLAM3支持的设备和功能更多,支持单目、双目、RGB-D相机,针孔、鱼眼,视觉惯性里程计,多地图SLAM等,几乎全覆盖了视觉SLAM各个分支。总体来说,ORB-SLAM3 基本框架、代码结构都是ORB-SLAM2的延伸,但是加入了很多新的方法,实现了更好的效果,体现在以下三个方面:
  • 构建了基于特征的高度集成视觉-惯导SLAM系统,更加鲁棒,适应于室内/外的大/小场景,精度提升2~5倍。
  • 是一个多地图系统,VO丢失时,会建立新的地图,当找回场景后,会与之前的地图自动融合。
  • 系统鲁棒性与state-of-the-art相当,但精度更高,在四轴飞行器数据集上平均精度3.6cm,室内数据集平均精度9mm。




使用特权

评论回复
5
keer_zu|  楼主 | 2023-7-5 14:08 | 只看该作者
3.4、DSM 方案:Direct Sparse Mapping
DSM 方案由西班牙的学者(作者之一同为ORB系列的作者)于2019年发表,这是一个基于直接法的完整单目SLAM系统。直接法SLAM系统通常采用光度误差进行BA优化,但直接法不能依赖自身解决相同场景的 reobservation问题和相同点的融合问题(因此直接法的回环检测多依赖特征点解决,如LSD-SLAM);DSM则解决了这一问题,是首个完全基于直接法实现回环检测和地图重用的SLAM系统,并在 EuRoC 数据集上取得了直接法SLAM中最高的精度。
DSM设计了独特的“局部窗口选择策略”来选择共视点,通过 coarse-to-fine 的策略来实现 reobservation,并以此实现回环检测;在优化方面,仍然基于光度误差做BA优化。
基于以上特点,DSM 具有较快的运行速度(无需计算特征点描述子),精度很高;除了直接法自身的缺点之外,其缺点还在于单目无法恢复出尺度信息。

使用特权

评论回复
6
keer_zu|  楼主 | 2023-7-5 14:13 | 只看该作者
3.5、VINS-Fusion 方案
VINS系列由港科大沈劭劼课题组发表和公开,其中VINS-Fusion 是继 VINS-Mono (单目视觉惯导 SLAM 方案)后的双目视觉惯导 SLAM 方案,VINS-Fusion 是一种基于优化的多传感器状态估计器,可实现自主应用(四轴飞行器,无人车, AR / VR)的精确自定位。 VINS-Fusion 是 VINS-Mono 的扩展,支持多种视觉惯性传感器类型(单目相机+ IMU,双目相机+ IMU,双目相机-only),但两者的技术框架是相同的,如下图所示。其主要技术模块有:
  • 轻量级前端(视觉光流跟踪+IMU预积分)
  • 传感器在线标定+视觉惯导联合初始化
  • 紧耦合滑窗优化(同时具有快速重定位功能)
  • 回环检测
  • 全局四自由度位姿优化
(注:红色加粗表示核心工作)

VINS方案本身是基于特征点的,因此只能用于稀疏建图。VINS的优点在于实现了很高的定位精度,这种精度来源于视觉+IMU融合以及紧耦合滑窗优化算法。VINS对计算资源的消耗比较小,在普通CPU上既可以实现在线实时运行,适合于对实时性有要求的移动设备。



使用特权

评论回复
7
keer_zu|  楼主 | 2023-7-5 14:52 | 只看该作者
3.6、ElasticFusion 方案
ElasticFusion (2016) 是由帝国理工发表的一项优秀RGB-D SLAM系统,具有稠密建图、在线实时运行、轻量级等显著特点。如前文所述,ElasticFusion 以稠密建图为主要目标(而非定位),建图的精度和质量是主要指标。ElasticFusion 的技术特点如下:
  • 基于 RGB-D 的稠密三维重建一般使用网格模型融合点云,ElasticFusion 是为数不多使用 surfel 模型的方案。
  • 传统的 SLAM 算法一般通过优化位姿或者路标点来提高精度,而 ElasticFusion 采用优化 deformation graph 的方式。
  • 融合了重定位算法(当相机跟丢时,重新计算相机的位姿)。
  • ElasticFusion 算法融合了 RGB信息(颜色一致性约束) 和深度信息(ICP 算法)进行位姿估计。

ElasticFusion首先根据RGB-D图像配准估算位姿,根据位姿误差决定进行重定位还是回环检测;若存在回环,则首先优化Deformation graph 然后优化 surfel地图;若不存在,则更新和融合全局地图,并估算当前视角下的模型,用于下一帧图像配准。总体来说,ElasticFusion具有较高的重建精度,在重建房间大小的场景时效果很好;但没有对代码做特别的优化,在大场景重建时效果不佳




使用特权

评论回复
8
keer_zu|  楼主 | 2023-7-5 14:54 | 只看该作者
3.7、InfiniTAM 方案
InfiniTAM 是牛津大学于2016年发表的稠密 SLAM 方案,该方案基于 KinectFusion 和 体素块哈希表(voxel block hashing)发展而来。首先,InfiniTAM 方案在建图部分利用 TSDF 模型(截断符号距离场)进行建模,只是在建模的时候,不是对整个空间都划分等大小的网格,而是只在场景表面的周围划分网格(voxel blocks),且只为待重建的表面上的Voxel block分配显存,并使用哈希表这一结构来管理GPU对Voxel block的内存分配和数据访问。通过这样的方法,InfiniTAM 大大减小了稠密建图对 GPU 的内存消耗,提升了算法效率。
InfiniTAM 的 算法流程 如右图所示,InfiniTAM 系统的前端与KinectFusion较为相似,主要分为三个阶段:
  • 跟踪阶段:对新输入的图像进行定位,估算对应的相机位姿;
  • 融合阶段:用于将新数据集成到现有的3D世界模型当中(更新voxel中存储的SDF值);
  • 渲染阶段:利用光线投影算法(Raycasting)从世界模型中提取与下一个跟踪步骤相关的模型区域,用于下一帧的位姿估算;
在后端部分,InfiniTAM 维护一个 Active Submaps List(基于Voxel block + Hashing),从而实现轻量级的后端优化。
InfiniTAM 是一个完整的稠密SLAM系统,包括前端位姿估计,回环检测,重定位,后端优化等全部SLAM功能。InfiniTAM使用哈希表来管理体素(voxel),大大节约了GPU内存占用,因此可以构建更大规模场景的地图。

使用特权

评论回复
9
keer_zu|  楼主 | 2023-7-5 14:57 | 只看该作者
3.8、BundleFusion 方案
斯坦福大学2017年提出的BundleFusion技术,被认为可能是目前基于RGB-D相机进行稠密三维重建效果最好的方法。BundleFusion的整体流程是比较清晰的:输入的color+depth的数据流首先需要做帧与帧之间的匹配信息搜索,然后基于“稀疏特征+稠密特征”融合匹配以求得精确位姿变化;把连续相邻帧聚合为“帧段”并在帧段内做局部位姿优化,获得帧段地图/Chunk;然后基于“帧段”做全局位姿优化,将整体的漂移矫正;融合相邻Chunk,得到全局位姿和地图。整个过程持续动态更新。
【融合匹配】在匹配方面,论文使用的是一种sparse-then-dense的并行全局优化方法。也就是说,先使用稀疏的SIFT特征点来进行比较粗糙的配准,因为稀疏特征点本身就可以用来做loop closure检测和relocalization。然后使用稠密的几何和光度连续性进行更加细致的配准。图1展示了sparse+dense这种方式和单纯sparse的对比结果。
【优化】在位姿优化方面,论文使用了一种分层的 local-to-global 优化方法,如图2所示。总共分为两层,在第一层,每连续10帧组成一个chunk,第一帧作为关键帧,然后对chunk内所有帧做局部位姿优化。在第二层,只使用所有的chunk的关键帧进行互相关联然后进行全局优化。通过这种分层处理技巧,一方面可以剥离出关键帧,减少存储和待处理的数据;另一方面,分层优化方法减少了每次优化时的未知量,保证该方法可扩展到大场景而漂移很小。
local-to-global 优化策略

稀疏匹配与融合匹配效果对比


BundleFusion 方案在算法上具有明显的优点:
  • 使用持续的local to global分层优化,去除了时域跟踪的依赖。
  • 不需要任何显示的loop closure检测。因为每一帧都和历史帧相关,所以其实包含了持续的隐式的loop closure。
  • 支持在GPU上实时鲁棒跟踪,可以在跟踪失败时移动到重建成功的地方进行relocalization,匹配上后继续跟踪。
实验表明,BundleFusion的重建效果确实是目前该领域效果最好的方法,下图是和其他方法的对比,重建优势明显。
BundleFusion 的良好效果除了算法的功劳,还必须有强大硬件算力的支撑。当使用两块GPU(GTX Titan X + GTX Titan Black)时,BundleFusion在各大数据集上可以达到 36 fps 左右的处理深度;当使用一块 GTX Titan X 时,处理速度则是 20 fps 左右。也即:目前算法需要两块GPU才能实时运行,因此算法的优化和加速仍是可改进的地方。


使用特权

评论回复
10
keer_zu|  楼主 | 2023-7-5 14:57 | 只看该作者

使用特权

评论回复
11
keer_zu|  楼主 | 2023-7-5 14:57 | 只看该作者

使用特权

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

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1338

主题

12373

帖子

53

粉丝