Skip to content

Latest commit

 

History

History
40 lines (40 loc) · 1.38 KB

File metadata and controls

40 lines (40 loc) · 1.38 KB

1. ORB-SLAM3中为什么要进行三次IMU初始化

1.1 三次初始化的概述

1.1.1 第一次初始化 (IMU第一阶段)

  • 发生在InitializeIMU()函数中
    • 主要目标:
      • 估计初始重力方向
      • 计算初始速度
      • 获得IMU偏置的初始值
      • 对尺度进行粗略估计
    • 条件:
      • 关键帧数量要足够(>10帧)
      • 时间跨度要足够(单目>2s,其他>1s) 1.1.2 第二次初始化 (VIBA 1)
  • 代码中称为Visual-Inertial BA 1
    • 主要目标:
      • 优化第一次初始化的结果
      • 进一步改善重力方向、速度和尺度估计
    • 条件:
      • 地图已经完成第一次IMU初始化
      • 跟踪状态正常(Tracking::OK)
      • 累计时间差大于5s(mTinit>5.0f) 1.1.3 第三次初始化 (VIBA 2)
  • 代码中称为Visual-Inertial BA 2
    • 主要目标:
      • 进行最终的精细优化
      • 得到最准确的状态估计
    • 条件:
      • 已完成VIBA 1
      • 累计时间差大于15s(mTinit>15.0f)

1.2 为什么需要三次初始化

1.2.1 渐进式优化的需要 1.2.2 数据积累的需要

  • 第一次:使用最少的数据快速获得初始值
  • 第二次:有了更多数据后进行优化
  • 第三次:积累足够多的数据后进行最终优化 1.2.3 稳定性考虑
  • IMU数据容易受噪声影响
  • 多次优化可以逐步提高估计的准确性
  • 避免初始化不稳定导致的系统崩溃 1.2.4 精度提升的需要