赞
踩
LOAM是该方向的开山鼻祖,其主要的贡献在于使用前端里程计和后端建图优化两个线程(可能借鉴了视觉SLAM思想?),实现一个高精度激光SLAM系统, 该系统实际实验中采用的硬件是一个平面激光雷达加一个旋转轴,也取得优异的结果。
困难点:激光数据接收时间不同,运动导致的畸变很明显严重, 不利于后续的定位建图。
解决办法:采用两个线程(前端frame-frame里程计 + 后端frame-map优化)进行定位建图任务。
论文对于激光雷达数据,定义了两个不同的术语:scan和sweep,依据论文,个人理解为前者为平面激光雷达绕本体旋转轴一周形成的点云,频率为10hz,该频率和平面激光雷达的旋转频率是一致的, 后者则是指激光雷达绕外面的轴旋转一个周期(180度)的点云,为1hz,相当于10scans的合成(而不是现在常用的那种昂贵的3D激光雷达)。流程图中,
p
^
\widehat{p}
p
代表一个scan的点云,
p
k
p_k
pk代表一个sweep的点云。每一个scan结束都会进行一次Lidar Odometry, 每一次sweep结束才进行一次Lidar Mapping。
特征提取: 设计下列公式计算一个度量值,用于判断每个点属于平面点或者线段点。注意该过程从每个独立的scan中提取特征(原因可能是由于传感器限制)。
在该度量中,c值较大的为edge point, c值较小的为planar point。此外还有一些工程策略,使得选择的特征分布均匀且可靠。
特征数据关联:采用frame-frame的思想寻找当前帧相对上一帧的匹配, 注意当前帧是随着时间在增长的,采用最近匹配方法寻找点-线和点-面匹配,最后通过最小化他们之间的距离来优化位姿。
整个里程计端的算法如下:
后端mapping采用sweep-local map的方式进行,当前端一个sweep结束时,即启动该过程。
在k+1 sweep结束时,里程计模块生成了一个去畸变后的点云
p
ˉ
k
+
1
\bar{p}_{k+1}
pˉk+1, 该sweep [
t
k
+
1
t_{k+1}
tk+1,
t
k
+
2
t_{k+2}
tk+2]内的位姿变换
T
k
+
1
L
T_{k+1}^L
Tk+1L,mapping阶段将该点云
p
ˉ
k
+
1
\bar{p}_{k+1}
pˉk+1匹配和注册到世界系下。
Mapping阶段的匹配和位姿估计流程和Odometry阶段类似,但做了一些参数上的适应和工程上的优化。这一阶段在当前sweep特征提取的数量是Odometry阶段的10倍,然后根据位姿变换将其投影到世界系,再利用最近匹配方法寻找匹配,不同的地方在于, 寻找匹配线和面时是采用先求点云周围协方差,然后进行特征值分解的方法。对于边缘点,特征值的某一个值会远远大于另外两个值;而对于面点,两个特征值会远远大于另一个值。最后也是通过最小化点-线、点-面距离来估计位姿。
算法简介:先利用视觉里程计估计位姿,并将雷达点云数据进行高频率低精度注册,然后基于雷达里程计的scan匹配同时优化运动估计和点云注册。相较LOAM而言,利用更高频率的视觉里程计提高点云去畸变和匹配的效果,进而提高算法精度。位姿估计过程并没用到视觉特征,是一个典型的视觉辅助激光的方案。算法的流程图如下:
视觉里程计模块,利用视觉特征做帧-帧之间的快速相对位姿估计,从雷达数据中获取部分视觉特征点的深度值。
雷达里程计由两阶段组成: sweep-sweep优化运动估计 + sweep-map在地图上匹配和注册当前sweep。该过程与LOAM的很类似,可看作是LOAM的odometry和mapping的结合,不同之处在于操作对象都是sweep,而不是scan。最后结合视觉里程计,可以输出与视觉相同频率的位姿。
从整体来看,视觉的作用主要是用于点云去畸变和提供后续点云匹配时的初始位姿,而最终的位姿估计并没用上视觉信息,在KITTI上的表现比LOAM好一丢丢。
常见的激光视觉惯性里程计采用卡尔曼滤波或者因子图优化的方法,但作者观察到,本体位姿估计的漂移频率远远低于模块自身的运行频率,因此采用从粗到细的流水线pipeline,该方法采用一种模块化的数据处理流程用于处理图像、imu和雷达数据,并通过多层次的优化来进行运动估计和建图, 该流程如下图所示
主要贡献如下:
这一部分主要涉及相机系下(此处与常用的IMU系下的测量模型不同)的IMU测量模型和bias更新。
VIO子系统主要借鉴作者之前的工作《Real‐time depth enhanced monocular odometry》,流程如下:
该系统是一个基于关键帧和特征点的VIO,不同之处在于只估计位姿,不估计特征点位置,这是因为从雷达获取的深度值足够准确。
该子系统主要参考了作者之前的工作LOAM,参考其中的sweep-map匹配过程,整个子系统的流程如下:
此外还利用voxel对Map进行存储和多线程技术,以加速该匹配过程。
本方法可以有效应对传感器退化问题
整体流程与里程计流程一致,不同点在于雷达匹配阶段匹配的是给定地图,而且是一段时间(2s)内累积的lidar scan与给定地图进行匹配(降低算力考虑)。
其中One-step方法的pipeline如下:
LOAM的限制:计算资源较大, 低算力平台难以满足,因为它需要计算稠密三维点云的每一个点特征;当应用与地面无人车时,地面及其附近元素引起的噪声将一直影响算法。
解决办法:针对地面附近元素带来的干扰,提出使用地面分割的方法以提高对地面附近不稳定元素的适应性;针对算力问题,提出使用两阶段优化法来估计位姿:首先利用地面来估计[
t
z
t_z
tz,
θ
r
o
l
l
\theta_{roll}
θroll,
θ
p
i
t
c
h
\theta_{pitch}
θpitch],然后利用剩下部分的边缘点元素来估计其余的[
t
x
t_x
tx,
t
y
t_y
ty,
θ
y
a
w
\theta_{yaw}
θyaw],使得整个系统可以在嵌入式平台上面实时运行。
整个算法流程框图如下:
采用传统的几何和图像处理方法对激光点云进行分割,以提取地面。特征提取与LOAM的一致,最终只保留使用属于地面部分的平面点和其他部分的边缘点,点云示意如下:
与LOAM的机制一样,采用帧-帧之间的点-线和点-面匹配来估计雷达里程计。不同之处在于,该方法只对属于地面的平面点和非地面点的边缘点进行匹配,且在匹配过程中利用了分割的类别信息以筛出错误的匹配。然后采用两阶段的L-M优化法来估计位姿:首先最小化地平面点到地面的距离来估计[ t z t_z tz, θ r o l l \theta_{roll} θroll, θ p i t c h \theta_{pitch} θpitch],然后利用剩下部分的边缘点元素来估计其余的[ t x t_x tx, t y t_y ty, θ y a w \theta_{yaw} θyaw]。两步优化法可在算力减小35%的情况下获得同样的精度。
该阶段与LOAM的一致,主要不同处在于地图的存储方式:LOAM存储单个点云地图,本方法则存储单个的特征集合。同时改方法还可在回环后使用Pose Graph以纠正漂移。
LOAM的局限:难以回环,难以融合其他传感器,特征丰富区域时难以在线优化,大范围场景中会有漂移。为此提出一种采用因子图+滑窗+紧耦合lidar融合IMU的方法,该融合思路与VINS 和相似。
整个因子图中包含四种因子约束:lidar odometry、IMU预积分、GPS和回环约束。
该约束和VINS中的一样,具体可参考On-Manifold Preintegration for Real-Time Visual-Inertial Odometry 和 VINS
采用关键帧思想,每隔一段距离或角度则选择一个关键帧。在关键帧中提取平面和边缘线的点特征,历史最新的n帧合成sub-keyframes,将其中的特征变换到世界系下形成local voxel map。 特征的匹配采用LOAM的紧邻匹配方法,将帧经过变换与其之前的local voxel map进行匹配,该帧的初始位姿由IMU积分得到
GPS因子可以提供一个全局绝对约束,可减少漂移, 回环因子则与视觉中的回环基本一样, 实验表明回环可以极大地改进高度方向的估计漂移问题。
该方法是LIS与VIS的集成,且两者之间又互相促进,其中VIS为LIS提供初始位姿估计,支持后者的匹配,LIS则为VIS提供更好的初始化和特征深度值,利用VIS做回环检测,利用LIS进行之后的回环校验。这两个系统只要有一个正常,整个系统就可以正常运行,展示了很好的系统鲁棒性。
VIS系统借鉴使用了VINS-MONO,但利用了Lidar数据辅助初始化,并给特征值赋予深度值。
LIS系统则利用LIO-SAM。
简言之,LVI-SAM = VINS-Mono + LIO-SAM + 视觉与激光之间的辅助。
主要贡献:提出一种在MSCKF框架上的雷达-惯性-视觉里程计,同时具有传感器外参标定功能。熟悉MSCKF的就懂,下面会涉及一大堆的数学推倒。
A,系统状态量
系统状态量包括IMU系的位姿、速度和bias;相机、激光雷达的外参;相机、雷达的位姿。
B,IMU递推(运动学)
该部分是常用的IMU运动学
C,状态增广
每当收到新的图像或者雷达数据,IMU就会根据运动学对系统状态进行推算,该过程既是EKF中的状态预测,获得新时刻下的状态及其协方差矩阵。
D, 测量模型
雷达特征测量
参考LOAM的思路,在雷达帧上提取线和面上的点特征,采用最近了匹配的方式实现特征跟踪,可得到线上的点特征残差(点-线距离)为:
上述残差在推算位姿处线性化:
为了进行状态更新, 需要知道上述残差的协方差
C
r
C_r
Cr:
该协方差矩阵取决于传感器测量噪声。对于面上的点特征,可采用相同的流程处理。
视觉特征测量
与MSCKF的一致, 提取FAST交点, 光流跟踪, 残差为重投影误差, 采用零空间投影,只估计sliding window内的位姿,不估计特征点位置。
E, 测量压缩
残差在新位姿处线性化后的方程可提炼为
为降低计算量,对线性化矩阵
H
X
H_X
HX进行QR分解:
有了上述协方差矩阵、预测位姿和协方差和线性化后的残差等,即可采用标准的EKF流程更新得到新的状态及协方差。
参考师兄大佬的论文导读
主要内容是在MSCKF和OpenVINS框架中加入激光测量信息,借鉴了视觉SLAM的pipeline,提出了一种新的激光-惯性-视觉里程计:LIC-Fusion2。它的前身是LIC-Fusion,在此基础上加入了如下特性:
该方法采用LOAM的方法提取平面点,并用平面点拟合得到平面,该版本并没用到LOAM中的边点特征,但在future work中提到会研究基于边缘特征的跟踪。
详情的论文导读可以参考师兄的博客【论文阅读41】LIMO: LiDAR-Monocular Visual Odometry
本方法是一个典型的激光辅助视觉的SLAM方法,主要贡献思想是提出了一种基于LiDAR点云的视觉特征点深度估计方法,如下流程所示,该方法被用于后续的多种视觉-雷达融合方案所借鉴。同时针对关键帧选择,特征点选择等工程优化方面提出许多策略。思路简单,但取得的效果很好。
从雷达数据中获取特征点深度距离的方法:
1)首先寻找该特征点周围的矩形框内的激光点。
2)然后对这些激光点按照深度进行划分。
3)寻找最靠近该特征点的深度区间的点云,拟合平面。
4)我们认为该特征点位于该平面上,根据光心和特征点的连线与平面的交点记为该特征点的深度。
5)检测估计深度的准确性:光心和特征点连线与平面的夹角必须小于某个阈值;拒绝深度高于30m的特征点以防外点。
利用点线特征的激光雷达-视觉里程计,详细论文解读可参考https://zhuanlan.zhihu.com/p/153264331
该方法是一个典型的激光辅助视觉的里程计方案,从视觉图像中提取点线特征,而后从激光数据中获得点线的深度距离信息,用于恢复尺度和执行后续的ICP位姿估计。
主要贡献:
流程图:
该方法由一个基于误差的迭代卡尔曼滤波器和一个基于因子图的图优化模块组成。
迭代卡尔曼滤波器采用标准的卡尔曼流程,IMU作为预测,激光雷达或者视觉作为观测。滑窗优化则借鉴了VINS-Mono的方法,该因子图如下图所示,其中雷达帧位姿和和激光雷达特征在滑窗中保持不变。
该方法包含两个子系统:激光雷达-惯性里程计 (LIO) 和视觉-惯性里程计 (VIO)。其中LIO (FAST-LIO) 利用 LiDAR和惯性传感器的测量数据构建全局地图几何结构(3D 点云位置);VIO 利用视觉-惯性传感器的数据来渲染地图纹理(3D 点云颜色),同时VIO 还通过最小化帧到地图的光度误差来直接、有效地融合视觉数据。
主要贡献:
详细论文解读可参考:【论文阅读16】Stereo Visual Inertial LiDAR SLAM
双目视觉里程计采用的是,采用光流跟踪、滑窗和边缘化思想,类似双目VINS。
雷达建图部分有借鉴LOAM的思路,通过最小化点-线和点-面特征来进行基于雷达的定位建图,使用高频的VIO位姿提供初始位姿进行帧图匹配和点云去畸变。同时,雷达数据被用于回环时提供ICP匹配来提高回环检测的准确率。
不同于之前的视觉雷达slam,将视觉的结果作为雷达的初始值,或者雷达给视觉提供深度测量值,本方法采用BA的方法在后端同时优化视觉残差和雷达残差。为了实现大规模的BA优化,本方法借鉴使用ORB_SLAM2和LOAM,关注后端准确而有效的雷达残差压缩。本方法主要贡献如下:
融合Lidar后的改进:
EKF:R3LIVE, LVIO, LIC-FUSION
因子图优化:TVL-SLAM, LVI-SAM
EKF+因子图优化:R2LIVE
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。