SLAM文献之-Multi-input Multi-scale Surfel-Based Lidar-Inertial Continuous-Time Odometry and Mapping

《SLICT: Multi-input Multi-scale Surfel-Based Lidar-Inertial Continuous-Time Odometry and Mapping》是一种针对复杂环境与高频传感器数据设计的连续时间 LiDAR-IMU SLAM 系统。下面是该算法的核心原理、主要创新点和关键推导细节:


一、算法核心原理概述

SLICT 是一种连续时间(continuous-time)SLAM 框架,结合了多输入传感器(主要为 LiDAR + IMU)和多尺度 surfel 表示(Surfel:surface element,面元),其设计目标是实现:

  • 在高速运动和大视场环境下的鲁棒里程计与建图;
  • 高效建图:支持异步、多源数据输入;
  • 高精度对齐:使用 surfel-based 表示解决点云间非同步和尺度不一致问题。

二、主要创新点

1. 多输入融合(Multi-input Fusion)

  • 支持异步接入多个 LiDAR(如多个 Velodyne、Livox)及 IMU;
  • 系统通过轨迹节点管理机制(continuous-time trajectory nodes)融合多个传感器数据,消除异步带来的误差。

2. 多尺度 surfel 表示(Multi-scale Surfel Representation)

  • 点云数据在建图时以不同尺度的 surfel 表示,支持增量更新与高效的全局地图查询;
  • surfel 模型包括局部法线、协方差、置信度等统计量,有利于提高匹配精度;
  • 多尺度机制可自适应处理稠密或稀疏区域。

3. 连续时间轨迹建模(Continuous-time Trajectory Optimization)

  • 系统采用B-spline轨迹表示器建模位姿随时间变化的连续函数;
  • 支持通过时间插值从轨迹中获取精确位姿,用于点云去畸变与配准;
  • 在优化过程中,将 surfel 误差项加入优化目标函数。

三、系统结构与关键模块

1. 输入数据处理

  • 支持任意时间顺序的异步输入(IMU、LiDAR)。
  • 点云时间戳通过轨迹插值得到相应位姿,用于去畸变(dewarping)与配准。

2. Surfel 构建与匹配

  • 每个 surfel 包含:

    • 中心点位置;
    • 法线方向;
    • 局部协方差;
    • 时间戳与置信度。
  • 匹配目标为最小化 surfel-to-surfel 的残差,包含如下形式的 cost:

    E surf = ∑ i w i ⋅ ∥ n i ⊤ ( T ( t i ) p i − p ^ i ) ∥ 2 E_{\text{surf}} = \sum_i w_i \cdot \| n_i^\top (T(t_i)p_i - \hat{p}_i) \|^2 Esurf=iwini(T(ti)pip^i)2

    其中:

    • T ( t i ) T(t_i) T(ti):时间 t i t_i ti 处的位姿;
    • p i p_i pi:源点;
    • p ^ i , n i \hat{p}_i, n_i p^i,ni:目标 surfel 中心点与法线;
    • w i w_i wi:权重(通常来自匹配置信度或协方差矩阵)。

3. 连续时间轨迹优化

  • 使用 cubic B-spline 建模每段轨迹段之间的连续姿态变化;

  • 将 surfel 匹配误差 + IMU 预积分误差一同加入优化:

    min ⁡ CtrlPts E surf + E imu \min_{\text{CtrlPts}} E_{\text{surf}} + E_{\text{imu}} CtrlPtsminEsurf+Eimu

  • 优化变量为 B-spline 控制点构成的轨迹表示,求解一般采用 Ceres Solver 或 GTSAM。


四、重点部分相关推导

1、SE(3) 空间中的 B-spline 位姿建模推导

SLICT 使用三次 B-spline(cubic B-spline)在李代数空间中插值连续时间轨迹。基本思想是:

1.1 轨迹表示

在时间 t ∈ [ t k , t k + 1 ] t \in [t_k, t_{k+1}] t[tk,tk+1] 区间内,轨迹通过 4 个控制点 T i , T i + 1 , T i + 2 , T i + 3 \mathbf{T}_{i}, \mathbf{T}_{i+1}, \mathbf{T}_{i+2}, \mathbf{T}_{i+3} Ti,Ti+1,Ti+2,Ti+3 来插值生成:

T ( t ) = exp ⁡ ( Ω ( t ) ) ⋅ T i + 1 \mathbf{T}(t) = \exp(\Omega(t)) \cdot \mathbf{T}_{i+1} T(t)=exp(Ω(t))Ti+1

其中:

  • Ω ( t ) ∈ s e ( 3 ) \Omega(t) \in \mathfrak{se}(3) Ω(t)se(3) 是李代数空间中以 T i + 1 \mathbf{T}_{i+1} Ti+1 为参考帧的相对运动;
  • Ω ( t ) \Omega(t) Ω(t) 通过 B-spline 基函数和控制点间的相对运动(李代数量)加权得到。
1.2 B-spline 插值构造(在李代数空间)

令:

  • ξ 1 = log ⁡ ( T i + 1 − 1 ⋅ T i + 2 ) \xi_1 = \log(\mathbf{T}_{i+1}^{-1} \cdot \mathbf{T}_{i+2}) ξ1=log(Ti+11Ti+2)
  • ξ 2 = log ⁡ ( T i + 2 − 1 ⋅ T i + 3 ) \xi_2 = \log(\mathbf{T}_{i+2}^{-1} \cdot \mathbf{T}_{i+3}) ξ2=log(Ti+21Ti+3)
  • ξ 0 = log ⁡ ( T i − 1 ⋅ T i + 1 ) \xi_0 = \log(\mathbf{T}_{i}^{-1} \cdot \mathbf{T}_{i+1}) ξ0=log(Ti1Ti+1)

定义插值系数(B-spline 基函数) β j ( u ) ∈ [ 0 , 1 ] \beta_j(u) \in [0,1] βj(u)[0,1],其中 u = t − t i t i + 3 − t i u = \frac{t - t_i}{t_{i+3} - t_i} u=ti+3titti,是归一化时间。常见三次 B-spline basis 为:

β 0 ( u ) = ( 1 − u ) 3 6 β 1 ( u ) = 3 u 3 − 6 u 2 + 4 6 β 2 ( u ) = − 3 u 3 + 3 u 2 + 3 u + 1 6 β 3 ( u ) = u 3 6 \begin{aligned} \beta_0(u) &= \frac{(1 - u)^3}{6} \\ \beta_1(u) &= \frac{3u^3 - 6u^2 + 4}{6} \\ \beta_2(u) &= \frac{-3u^3 + 3u^2 + 3u + 1}{6} \\ \beta_3(u) &= \frac{u^3}{6} \end{aligned} β0(u)β1(u)β2(u)β3(u)=6(1u)3=63u36u2+4=63u3+3u2+3u+1=6u3

最终轨迹可以表示为:

T ( t ) = exp ⁡ ( β 3 ( u ) ξ 2 ) ⋅ exp ⁡ ( β 2 ( u ) ξ 1 ) ⋅ exp ⁡ ( β 1 ( u ) ξ 0 ) ⋅ T i \mathbf{T}(t) = \exp(\beta_3(u)\xi_2) \cdot \exp(\beta_2(u)\xi_1) \cdot \exp(\beta_1(u)\xi_0) \cdot \mathbf{T}_{i} T(t)=exp(β3(u)ξ2)exp(β2(u)ξ1)exp(β1(u)ξ0)Ti

这样就构造出了 连续的 SE(3) 轨迹函数,可以对任意时间点的 LiDAR 点进行插值定位。


2、Surfel 残差项 Jacobian 推导

考虑目标是最小化 surfel 残差(在局部帧中):

2.1 残差项形式

对于一个点 p i ∈ R 3 \mathbf{p}_i \in \mathbb{R}^3 piR3,在时间 t i t_i ti 对应的轨迹位置为:

p i world = T ( t i ) ⋅ p i \mathbf{p}_i^{\text{world}} = \mathbf{T}(t_i) \cdot \mathbf{p}_i piworld=T(ti)pi

将其投影到 surfel 平面(由 n j , q j \mathbf{n}_j, \mathbf{q}_j nj,qj 表示)上,构造点到面的误差:

r i = n j ⊤ ⋅ ( T ( t i ) p i − q j ) r_i = \mathbf{n}_j^\top \cdot \left(\mathbf{T}(t_i)\mathbf{p}_i - \mathbf{q}_j\right) ri=nj(T(ti)piqj)

目标是最小化:

E = ∑ i w i ⋅ r i 2 E = \sum_i w_i \cdot r_i^2 E=iwiri2

2.2 残差对 B-spline 控制点的导数(雅可比)

为进行优化,需要对每个控制点 T k \mathbf{T}_k Tk 的李代数扰动求导。关键是:

  • T ( t i ) \mathbf{T}(t_i) T(ti) 是由多个控制点的组合形成的;
  • 使用链式法则求导,将误差对位姿的导数,乘以上游导数。

先定义:

∂ r i ∂ T ( t i ) = n j ⊤ ⋅ [ ∂ T ( t i ) ⋅ p i ∂ T ( t i ) ] \frac{\partial r_i}{\partial \mathbf{T}(t_i)} = \mathbf{n}_j^\top \cdot \left[\frac{\partial \mathbf{T}(t_i) \cdot \mathbf{p}_i}{\partial \mathbf{T}(t_i)}\right] T(ti)ri=nj[T(ti)T(ti)pi]

注意:

  • 在 SE(3) 空间内,扰动使用李代数:

    T ⋅ exp ⁡ ( δ ξ ) ≈ T ⋅ ( I + [ δ ξ ] ∧ ) \mathbf{T} \cdot \exp(\delta \xi) \approx \mathbf{T} \cdot (I + [\delta \xi]^\wedge) Texp(δξ)T(I+[δξ])

于是导数可展开为:

∂ r i ∂ δ ξ = n j ⊤ ⋅ [ T ( t i ) ⋅ [ p i ] × ] \frac{\partial r_i}{\partial \delta \xi} = \mathbf{n}_j^\top \cdot \left[ \mathbf{T}(t_i) \cdot [\mathbf{p}_i]_\times \right] δξri=nj[T(ti)[pi]×]

接下来,对每个控制点 T k \mathbf{T}_k Tk 的导数(链式求导):

∂ r i ∂ δ ξ k = ∂ r i ∂ T ( t i ) ⋅ ∂ T ( t i ) ∂ δ ξ k \frac{\partial r_i}{\partial \delta \xi_k} = \frac{\partial r_i}{\partial \mathbf{T}(t_i)} \cdot \frac{\partial \mathbf{T}(t_i)}{\partial \delta \xi_k} δξkri=T(ti)riδξkT(ti)

其中,后者是 B-spline 插值函数对控制点的雅可比,通常通过自动微分或数值导数实现。


3. IMU预积分误差

  • 采用 Forster 预积分模型,引入 bias 校正项;
  • 残差项基于速度、位姿、bias 三者间的协同关系。

五、总结

模块贡献
多输入融合灵活应对多个异步 LiDAR/IMU 数据输入
多尺度 surfel增强稀疏区域匹配精度,提升地图分辨率适应性
连续时间轨迹优化消除非同步畸变,提升帧间注册精度
高效优化模型将 surfel 匹配误差与 IMU预积分融合于一体
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云SLAM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值