• 经典文献阅读之--R3LIVE


    0. 简介

    之前作者在今年年初写了激光与摄像头混合的博客《从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 激光雷达扫描仪欣赏

    1. R2LIVE回顾

    如上面所说,我们要了解学习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(Gpjqj)

    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=XiX^i=[GR^IiTGP^IiTIR^CiTIP^CiTGv^iTb^giTb^aiT]T=(Xi(Δtf(Xi,ui,wi)))(x^i(Δtf(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+1IpˇCk+1

    因子图优化,总体来说和VINS-MONO一样,不过就是多了一个雷达位姿节点,用IMU预积分将雷达位姿节点和相机位姿节点进行关联。

    在这里插入图片描述
    下面是R2LIVE的代码结构
    在这里插入图片描述

    2. R3LIVE学习

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

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

    …详情请参照古月居

  • 相关阅读:
    【多线程进阶】--- 常见锁策略,CAS,synchronized底层工作原理,JUC,线程安全的集合类,死锁
    LeetCode(力扣)53. 最大子数组和Python
    销帮帮CRM与电商运营增效的关系?
    CS5801 HDMI转4K 4lane_DP/eDP方案
    FastAPI 快速入门
    STL-stack、queue和priority_queue的模拟实现
    如何用Flask中的Blueprints构建大型Web应用
    【C++】差分
    9.4语言是一种实践2
    OkHttp网络框架深入理解-SSL握手与加密
  • 原文地址:https://blog.csdn.net/lovely_yoshino/article/details/126536581