我们需要解释涉及到的类和变量:
mpViewer: 可视化线程对象,需要停止。
mpAtlas: 多地图管理器。
pMap: 当前地图。
bLocMap: 是否仅重置局部地图?实际调用时可能为true时跳过局部建图线程的重置。
mpLocalMapper: 局部建图线程对象。
mpLoopClosing: 闭环线程对象。
mpKeyFrameDB: 关键帧数据库(用于重定位和闭环的词袋数据库)。
clearMap(pMap): 清除数据库中该地图的关键帧。
mpAtlas->clearMap(): 清除当前地图中的关键帧和地图点。
mnLastInitFrameId, mnFirstFrameId, mnInitialFrameId, mnLastRelocFrameId: 帧ID相关。
mlbLost: 记录每帧是否丢失的列表。
mvIniMatches: 初始化时的匹配?
mbVelocity: 速度模型标志。
原理部分阐述:
地图重置的必要性:当跟踪失败或系统需要重新开始时,清理当前地图,回到初始状态。
多线程同步:需要通知局部建图线程和闭环线程停止当前地图