【Basalt】measure 中关键帧管理与滑动窗口梳理
measure 中关键帧管理与滑动窗口梳理一、核心数据结构二、measure 的完整流程三、关键帧的生命历程每帧进入 │ ▼ frame_states[t]创建PoseVelBias 完整状态 │ ├─ take_kffalse→ 普通帧frames_after_kf│ │ │ └─ 边缘化时states_to_marg_all → frame_states 直接删除 │ 位姿、速度、bias 全部丢弃 │ └─ take_kftrue→ 关键帧kf_ids.insert(t)建路标 │ └─ 边缘化时states_to_marg_vel_bias → 速度bias 边缘化掉 → 位姿降级保留到 frame_poses[t]PoseOnly │ └─ 当 frame_poses.size()max_kfs → poses_to_marg → frame_poses 删除 kf_ids.erase(t)lmdb.removeKeyframes(...)四、边缘化触发与选帧策略五、窗口规模总结这里是引用┌─────────────────────────────────────────────────────────┐│ 滑动窗口全貌 ││ ││ frame_poses (≤ max_kfs) ││ ┌────┬────┬────┬────┐ ││ │KF₁ │KF₂ │KF₃ │… │ ← 仅位姿已边缘化速度/bias ││ └────┴────┴────┴────┘ ││ ││ frame_states ( max_states) ││ ┌────┬────┬────┬────┬────┐ ││ │KFₙ │F │F │KFₘ │F_cur│ ← 完整状态位姿VB ││ └────┴────┴────┴────┴────┘ ││ 关键帧 普通帧 最新帧 │└─────────────────────────────────────────────────────────┘