IMU预积分-旋转残差求雅可比

目录

[1. 残差定义](#1. 残差定义)

[2. 雅可比推导](#2. 雅可比推导)

[3. 右乘BCH近似雅可比的逆的实现](#3. 右乘BCH近似雅可比的逆的实现)


1. 残差定义

根据IMU预积分(VINS)中的推导,帧间imu积分项的残差定义如下:

其中,旋转残差项的形式来源为:

中的q代表四元数。假设为旋转误差对应的旋转向量,则:

等于虚部的2倍:

IMU预积分(VINS)中以四元数 的形式对残差的雅可比进行了推导,本篇笔记该用以旋转矩阵R李群)的形式推导该残差对下述扰动量的雅可比:

推导过程会用到李群的BCH公式与伴随性质:

(1)BCH公式

其中,分别代表两个旋转向量(李代数),代表对李代数进行指数映射得到李群(旋转矩阵),分别代表左乘BCH近似雅可比的逆和右乘BCH近似雅可比的逆。

(2)伴随

其中,代表旋转矩阵。

2. 雅可比推导

**求导过程采用右乘扰动模型,因为误差(扰动)定义在载体b系。**雅可比的推导过程如下:

1. 对 i 时刻无关量求导

2. 对 i 时刻旋转误差向量求导

3. 对 i 时刻陀螺仪bias误差求导

4. 对 j 时刻无关量求导

5. 对 j 时刻旋转误差向量求导

3. 右乘BCH近似雅可比的逆的实现

右雅可比

其中,代表一个旋转向量,代表将旋转向量转为反对称矩阵,代表旋转角的大小(旋转向量的模长)。

右雅可比的逆

代码实现:

cpp 复制代码
#include <Eigen/Core>
#include <Eigen/Geometry>

/**
 * @brief 计算 SO(3) 右雅可比的逆 J_r^{-1}(phi)
 * @param phi 旋转向量 (李代数 so3)
 * @return 3x3 的右雅可比逆矩阵
 */
Eigen::Matrix3d RightJacobianInv(const Eigen::Vector3d& phi) {
    const double theta = phi.norm();
    Eigen::Matrix3d I = Eigen::Matrix3d::Identity();
    
    // 1. 计算反对称矩阵 phi^
    Eigen::Matrix3d phi_hat;
    phi_hat << 0, -phi(2), phi(1),
               phi(2), 0, -phi(0),
               -phi(1), phi(0), 0;

    // 2. 根据角度大小选择计算方式
    if (theta < 1e-6) {
        // 小角度近似:J_r^{-1} ≈ I + 0.5 * phi^
        return I + 0.5 * phi_hat;
    } else {
        // 正常角度:使用闭式公式
        double theta2 = theta * theta;
        double sin_theta = sin(theta);
        double cos_theta = cos(theta);

        // 计算系数: [1/theta^2 - (1+cos(theta))/(2*theta*sin(theta))]
        double coeff = (1.0 / theta2) - (1.0 + cos_theta) / (2.0 * theta * sin_theta);

        // 组合公式: I + 0.5*phi^ + coeff * (phi^)^2
        return I + 0.5 * phi_hat + coeff * phi_hat * phi_hat;
    }
}

代码中对数值稳定性进行了处理。当旋转角很小,趋近于0时,直接使用上面的闭式公式会导致分母为 0 或数值不稳定。此时需要使用泰勒展开近似

相关推荐
行智科技1 小时前
FAST-LIVO2 源码精读(二):环境搭建与编译避坑
算法·ubuntu·自动驾驶·slam
大江东去浪淘尽千古风流人物2 天前
【PromptStereo】零样本立体匹配新范式:用结构与运动Prompt驱动迭代优化(CVPR 2026)
深度学习·3d·slam·视觉定位·dust3r·3d重建·mast3r
吾名招财2 天前
开源可SLAM的3D扫描仪硬件方案(成本低至6000元)
slam·3d扫描仪·mid360
暂未成功人士!3 天前
简单了解李群和李代数的相关概念以及典型应用
人工智能·机器人·slam·姿态·李群李代数
MIXLLRED5 天前
Ubuntu 22.04 + ROS2 Humble 上部署 ScaRF‑SLAM指南
ubuntu·slam·ros2·离线建图
大江东去浪淘尽千古风流人物6 天前
【VGGT-Ω】前馈式3D重建的规模化之路:Register Attention、自监督训练与10B参数Scaling Law深度解析
深度学习·计算机视觉·transformer·slam·vio·3d重建
大江东去浪淘尽千古风流人物6 天前
【VGGT】统一3D重建:单网络同时预测相机位姿、深度图、点云与3D轨迹的前馈Transformer架构深度解析
网络·数码相机·3d·transformer·slam·3d重建·cvpr2025
kobesdu10 天前
【ROS2实战笔记-24】ROS2 Launch 实用技巧:条件逻辑与节点动态生成
笔记·ros·slam
大江东去浪淘尽千古风流人物10 天前
【RADIO-ViPE】动态环境下的在线开放词汇语义SLAM:视觉-语言-几何紧耦合BA与自适应鲁棒核深度解析
slam·语义slam·vio·开放词汇·动态场景
大江东去浪淘尽千古风流人物11 天前
【KV-Tracker】Transformer 实时位姿跟踪:KV-Cache 加速多视图几何网络达 27FPS
网络·深度学习·transformer·slam·位姿估计·kv-cache