IMU Preintegration On Manifold(1)

本文详细介绍了IMU预积分的数学原理,包括SO(3)群的概念,以及IMU预积分的测量、噪声传播和偏置更新。通过对角速度和加速度的积分,计算出姿态变化,并探讨了预积分测量的噪声特性。同时,文章讨论了如何通过一阶更新来校正偏置,以提高预积分的精度。

1 SO(3) Group

关于SO(3)的介绍略过,这里只列出几个近似的公式:
Exp(δθ)I+[θ]×(1)
Exp(θ+δθ)Exp(θ)Exp(Jr(θ)δθ)(2)
Exp(θ)Exp(δθ)Exp(θ+J1r(θ)δθ)(3)

Exp(δϕ)Exp(δθ)Exp(δϕ+J1r(δϕ)δθ)Exp(δϕ+δθ)(4)

以及Adjoint表示:

Exp(θ)R=RExp(RTθ)(5)

2 IMU Preintegration measurements

2.1 Integration measurements

给定初值,在i和j时刻对imu的角速度和加速度进行积分,可以计算j时刻相对于i时刻的姿态:
Rjvjpj=Rik=ij1Exp((w̃ kbgiηgdk)Δt)=vi+k=ij1(g+Rk(ã kbaiηadk))Δt=pi+k=ij1vkΔt+12k=ij1(g+Rk(ã kbaiηadk))Δt2(6)

2.2 Preintegration measurements

在preintegration理论中需要将初值(Ri,vi,pi)和常数项(包含重力g的项)分离出来:
ΔRijΔvijΔpij=RTiRj=k=ij1Exp((w̃ kbgiηgdk)Δt)=RTi(vjvigΔt(ji))=k=ij1ΔRik(ã kbaiηadk)Δt=RTi(pjpiviΔt(ji)12gΔt2(ji)2)=k=ij1[ΔvikΔt+12ΔRik(ã kbaiηadk)Δt2](7)

ΔRij,Δvij,Δpij即为preintegration measurements,即不考虑初值以及重力加速度项的相对测量。注意到这些项包含有噪声η,我们也需要将它们分离出来。在分离的过程中发现preintegration measurements是近似服从高斯分布的,即:
ΔR̃ ijΔṽ ijΔp̃ ijΔRijExp(δϕij)Δvij+δvijΔpij+δpij(8)

其中ΔR̃ ij,Δṽ ij,Δp̃ ij为我们可以计算的测量值,不包含噪声η
ΔR̃ ijΔṽ ijΔp̃ ij=k=ij1Exp((w̃ kbgi)Δt)=k=ij1ΔR̃ ik(ã kbai)Δt=k=ij1[Δṽ ikΔt+12ΔR̃ ik(ã kbai)Δt2](9)

定义ηΔij=[δϕTij,δpTij,δvTij]T9×1(09×1,ij)为noise preintegration vector,它们是和噪声η相关的项。这里不会对ηΔij进行求解,因为事实上我们仅需要其递推形式。

2.3 Iterative preintegration measurements

首先给出包含噪声的递推公式:
ΔRi,k+1Δvi,k+1Δpi,k+1=ΔRi,kExp((w̃ kbgiηgdk)Δt)=Δvi,k+ΔRi,k(ã kbaiηadk)Δt=Δpi,k+Δvi,kΔt+12ΔRi,k(ã kbaiηadk)Δt2(10)

接着给出不含噪声的递推公式:
ΔR̃ i,k+1Δṽ i,k+1Δp̃ i,k+1=ΔR̃ i,kExp((w̃ kb

### 实时视觉惯性里程计中的流形上预积分技术 在实时视觉惯性里程计(VIO)中,为了提高计算效率并保持状态估计的一致性和准确性,在流形上的预积分技术被广泛应用。该方法通过将IMU测量数据在局部流形空间内累积,从而减少重复计算。 #### 预积分理论基础 预积分的核心在于利用李群和李代数来描述旋转和平移的变化过程。具体来说,SO(3)用于表示三维空间中的旋转矩阵,而se(3)则对应于六维的空间变换向量[^1]。通过对这些几何结构的理解,可以更精确地处理传感器噪声以及非线性误差传播问题。 对于加速度计读取值$a$ 和陀螺仪读取值$\omega$, 可以定义如下微分方程: $$ \dot{R}(t)= R(t)\hat{\omega} \\ \ddot{p}(t)=a $$ 其中 $R\in SO(3)$ 表示姿态, $\hat{\cdot}$ 是斜对称算子操作符. #### 流形上预积分实现细节 当考虑时间间隔内的连续运动时,传统欧氏空间下的简单累加会引入较大偏差。因此采用指数映射的方式将在短时间内近似为常速率变化: $$ \Delta p=\int_{0}^{T}\exp([\Omega]\tau)d\tau a_0+\frac{T^2}{2}g\\ v_T=v_0+\int_{0}^{T}\exp([\Omega]\tau)a_0d\tau+Tg \\ R_T=R_0\exp(\Omega T) $$ 这里$\Omega=[\omega_x,\omega_y,\omega_z]^T-\beta_b$ , 并且$\beta_b$代表偏置项;上述公式展示了如何基于初始条件$(p_0,v_0,R_0)$ 计算经过时间段T后的位姿更新 $(\Delta p,v_T,R_T)$ 。这种做法不仅提高了数值稳定性还简化了后续优化流程的设计[^2]. ```cpp // C++ code snippet demonstrating pre-integration on manifold. Eigen::Matrix<double, 9, 1> PreIntegrate( const Eigen::Vector3d& acc, const Eigen::Vector3d& gyro, double dt, const Eigen::Vector3d& gravity) { // Implementation of the equations mentioned above... } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值