orbslam2 localMapping流程图

flowchart TB

%% ========== 1. 入口 & 初始化检测 ==========

T0"Track() 入口"

T1{{mState == NO_IMAGES_YET?}}

T2"mState ← NOT_INITIALIZED"

%% ========== 2. 获取地图互斥锁 ==========

LOCK"unique_lock(mpMap-\>mMutexMapUpdate)"

%% ========== 3. 尚未初始化 ==========

INIT_CHK{{mState == NOT_INITIALIZED?}}

STEREO_INIT"StereoInitialization() / MonocularInitialization()"

DRAW_INIT"mpFrameDrawer-\>Update(this)"

RET_NOT_OK{{初始化后 mState != OK?}}

RET_EARLY"return (等待下一帧)"

%% ========== 4. 系统已初始化 ==========

MAIN"-- 进入正常跟踪流程 --"

ONLY_TRACK{{mbOnlyTracking?}}

REPLACED"CheckReplacedInLastFrame()"

MM_EMPTY{{mVelocity.empty()?}}

TRACK_MM"TrackWithMotionModel()"

RELOC"Relocalization()"

BOOL_OR"bOK = bOK_MM ∥ bOK_Reloc"

SET_REF"若缺失, mpReferenceKF → mCurrentFrame.mpReferenceKF"

%% ========== 5. 局部地图跟踪 ==========

LOCAL_TRACK_CHK{{可调用 TrackLocalMap?}}

LOCAL_TRACK"bOK = TrackLocalMap()"

%% ========== 6. 跟踪结果判定 ==========

SET_STATE"mState = (bOK ? OK : LOST)"

DRAW_FRAME"mpFrameDrawer-\>Update(this)"

%% ========== 7. 跟踪成功后的更新 ==========

OK_CHK{{bOK?}}

UPDATE_VEL"mVelocity ← Tcw_now × (Tcw_last)\^-1"

SET_CAMPOSE"mpMapDrawer-\>SetCurrentCameraPose()"

CLEAN_VO"清空仅 VO 匹配点"

DEL_TEMP"删除 mlpTemporalPoints"

NEEDKF{{NeedNewKeyFrame()?}}

NEWKF"CreateNewKeyFrame()"

%% ========== 8. 跟踪失败后的处理 ==========

LOST_CHK{{mState == LOST ∧ Map KFs ≤ 5?}}

SYS_RESET"mpSystem-\>Reset(); return"

%% ========== 9. 收尾:更新 mLastFrame 等 ==========

FILL_REFKF"若仍缺失 → mCurrentFrame.mpReferenceKF = mpReferenceKF"

SAVE_LAST"mLastFrame = Frame(mCurrentFrame)"

STORE_POSE"记录相对位姿 / 时间戳向量"

%% ---------- 连线 ----------

T0 --> T1

T1 -- 是 --> T2 --> LOCK

T1 -- 否 --> LOCK

LOCK --> INIT_CHK

INIT_CHK -- 是 --> STEREO_INIT --> DRAW_INIT --> RET_NOT_OK

RET_NOT_OK -- 是 --> RET_EARLY

RET_NOT_OK -- 否 --> MAIN

INIT_CHK -- 否 --> MAIN

%% ---- 正常跟踪主干 ----

MAIN --> ONLY_TRACK

ONLY_TRACK -- 否 -->|LocalMapping 开启| \

REPLACED --> MM_EMPTY

ONLY_TRACK -- 是 -->|仅跟踪模式| MM_EMPTY

MM_EMPTY -- 否 --> TRACK_MM

MM_EMPTY -- 是 --> TRACK_MM

TRACK_MM --> RELOC

RELOC --> BOOL_OR

BOOL_OR --> SET_REF

SET_REF --> LOCAL_TRACK_CHK

LOCAL_TRACK_CHK -- 可调用 --> LOCAL_TRACK --> SET_STATE

LOCAL_TRACK_CHK -- 不可调用 --> SET_STATE

SET_STATE --> DRAW_FRAME --> OK_CHK

%% ---- 跟踪成功路径 ----

OK_CHK -- 是 --> UPDATE_VEL --> SET_CAMPOSE --> CLEAN_VO --> DEL_TEMP --> NEEDKF

NEEDKF -- 是 --> NEWKF --> LOST_CHK

NEEDKF -- 否 --> LOST_CHK

%% ---- 跟踪失败路径 ----

OK_CHK -- 否 --> LOST_CHK

LOST_CHK -- 是 --> SYS_RESET

LOST_CHK -- 否 --> FILL_REFKF --> SAVE_LAST --> STORE_POSE

相关推荐
学术 学术 Fun3 天前
PDF 转 draw.io:把 PDF 图表恢复成可编辑图形
pdf·流程图·drawio
闻哥3 天前
小表驱动大表——SQL查询优化的核心原则(深度剖析+流程图)
数据库·sql·流程图
学术 学术 Fun6 天前
无需 Microsoft Visio,如何在线打开和编辑 VSDX 文件
流程图·visio
tedcloud1237 天前
diagram-design 怎么安装?用 AI 自动生成更专业的架构图、流程图
linux·运维·前端·人工智能·开源·流程图
醉颜凉9 天前
Elasticsearch 核心基石:倒排索引全解析(原理+结构+流程图+实战)
elasticsearch·jenkins·流程图
Ai-_Man10 天前
希望大家能推荐一款软件,可以直接把文心生成的代码变流程图,提高办公效率
人工智能·ai·小程序·流程图
mycase23verygood14 天前
流程图c 1
流程图
AI导出鸭PC端15 天前
Gemini流程图怎么导出?AI导出鸭一键解决格式兼容难题
人工智能·ai·word·流程图·豆包·ai导出鸭
LayZhangStrive15 天前
后端通识 - 后端工程开发常用的流程图类别
java·流程图·后端开发
DsirNg24 天前
基于拓扑排序的画布自动布局:用最长上游路径决定节点列级
vue·流程图·拓扑排序·状态管理·有向图·自动布局·最长路径