之前作者在今年年初写了激光与摄像头混合的博客《从LVI-SAM来看激光与视觉的紧耦合系统》,当时一直想写R3LIVE的。但是一直苦于没有时间好好地去深入钻研探索。这段时间正好有比较充裕的时间做这个事情,所以这里我们对《R3LIVE: A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation and mapping package》这篇文章进行学习与解析。这篇文章中中有很多值得我们借鉴和学习的地方。与LVI-SAM一样,它也是一个激光-惯性-视觉融合的传感器融合框架,利用激光雷达、惯性和视觉传感器的测量来实现鲁棒性和准确性的状态估计。由于R3LIVE是由R2LIVE进一步拓展来的。这里我们放上其他博主翻译的R2LIVE的论文。
【搬】基于r3live的低成本手持式 3D 激光雷达扫描仪欣赏
如上面所说,我们要了解学习R3LIVE之前,我们需要先学习R2LIVE。
我们可以看到R2LIVE的激光雷达测量部分,主要继承了Fast-LIO的面元特征思想,
u
u
u为面法向量,
q
/
p
q/p
q/p为代表面的特征点,残差如下:
r
l
(
X
ˇ
k
+
1
,
L
p
j
)
=
u
j
T
(
G
p
j
−
q
j
)
r_l(\check{X}_{k+1},^Lp_j)=u^T_j(^Gp_j-q_j)
rl(Xˇk+1,Lpj)=ujT(Gpj−qj)
IMU部分主要涉及到离散IMU状态向量使用。这部分其实也是Fast-LIO里面的相关知识。然后及可以根据ESKF完成与雷达数据的融合。
x i = [ G R I i T G P I i T I R C i T I P C i T G v i T b g i T b a i T ] T x_i=\left[^GR^T_{I_i} \\\\ ^GP^T_{I_i}\\ ^IR^T_{C_i}\\ ^IP^T_{C_{i}}\\ ^Gv^T_{i} \\ b^T_{g_i}\\ b^T_{a_i}\right]^T xi=[GRIiTGPIiTIRCiTIPCiTGviTbgiTbaiT]T
δ X ^ i = X i ⊟ X ^ i = [ G R ^ I i T G P ^ I i T I R ^ C i T I P ^ C i T G v ^ i T b ^ g i T b ^ a i T ] T = ( X i ⊞ ( Δ t ∗ f ( X i , u i , w i ) ) ) ⊟ ( x ^ i ⊞ ( Δ t ∗ f ( x ^ i , u i , 0 ) ) ) \delta\hat{X}_i=X_i\boxminus\hat{X}_i\\ =\left[^G\hat{R}^T_{I_i}\\ \\ ^G\hat{P}^T_{I_i}\\ \\ ^I\hat{R}^T_{C_i}\\ \\ ^I\hat{P}^T_{C_{i}}\\ \\ ^G\hat{v}^T_{i}\\ \\ \hat{b}^T_{g_i}\\ \\ \hat{b}^T_{a_i}\right]^T\\ =(X_i\boxplus(\Delta t*f(X_i,u_i,w_i)))\boxminus(\hat{x}_i\boxplus(\Delta t*f(\hat{x}_i,u_i,0))) δX^i=Xi⊟X^i=[GR^IiTGP^IiTIR^CiTIP^CiTGv^iTb^giTb^aiT]T=(Xi⊞(Δt∗f(Xi,ui,wi)))⊟(x^i⊞(Δt∗f(x^i,ui,0)))
视觉测量信息理论上与LiDAR数据相同,如果第k+1帧是相机帧,那么误差就为重投影误差:
(
C
P
s
=
(
G
R
ˇ
I
k
+
1
I
R
ˇ
C
k
+
1
)
T
G
P
s
−
(
I
R
ˇ
C
k
+
1
)
T
G
p
ˇ
I
_
k
+
1
−
I
p
ˇ
C
k
+
1
(^CP_s=(^G\check{R}_{I_{k+1}}\ ^I\check{R}_{C_{k+1}})^T\ ^GP_s-(^I\check{R}_{C_{k+1}})^T\ ^G\check{p}_{I\_{k+1}}-^I\check{p}_{C_{k+1}}
(CPs=(GRˇIk+1 IRˇCk+1)T GPs−(IRˇCk+1)T GpˇI_k+1−IpˇCk+1
因子图优化,总体来说和VINS-MONO一样,不过就是多了一个雷达位姿节点,用IMU预积分将雷达位姿节点和相机位姿节点进行关联。

下面是R2LIVE的代码结构。

与R2LIVE类似,R3LIVE系统也是以IMU作为核心,利用激光雷达和相机的观测修正系统状态。算法相当于不断以imu的预测为基础,每当得到了新的相机或激光的观测,就对系统状态进行更新,实现了多传感器信息融合。其中激光雷达的观测与LIO相同,相机的观测则分为两步:先是用跟踪点的重投影误差,再基于更新结果用跟踪点的光度误差再次进行状态更新。

这里我们找到了stella博主的一篇文章,非常清晰的阐述了R3LIVE的整个流程。
