ORB-SLAM3 核心功能与关键配置项
三、核心功能与关键配置项
ORB-SLAM3 的能力可以拆成下面几块,每一块都对应一组配置参数。
| 功能模块 | 能力说明 | 相关配置项 |
|---|---|---|
| 跟踪线程 | 逐帧估计位姿,决定当前帧是否升为关键帧 | ORBextractor.nFeatures / scaleFactor / nLevels |
| 局部建图线程 | 三角化新点、剔除坏点、局部 BA | 在代码常量中控制,如关键帧插入阈值 |
| 回环与合并线程 | DBoW2 粗筛 + 几何校验 + 位姿图优化 | IMU 版本的 minScore 等门限 |
| Atlas 多地图 | 跟踪丢失后新建子图,重访时合并 | System.LoadAtlasFromFile / SaveAtlasToFile |
| IMU 初始化与预积分 | 估计重力方向、速度、偏置 | IMU.NoiseGyro / NoiseAcc / GyroWalk / AccWalk / frequency |
| 可视化 | Pangolin 显示当前帧、地图点、轨迹 | Viewer.On / Viewer.KeyFrameSize |
| 地图持久化 | 运行时保存与加载 Atlas | System.SaveAtlasToFile 指向的文件名 |
配置文件 YAML 是整个系统的入口,分成三段。相机段描述成像模型:Camera.type 取 PinHole 或 KannalaBrandt8(鱼眼),Camera.fx Camera.fy Camera.cx Camera.cy 是内参,Camera.k1 k2 p1 p2 k3 是畸变系数,双目还要给 Camera.bf(基线乘焦距)和 Camera.RGB(是否 BGR 排列)。分辨率段给出 Camera.width 与 Camera.height,以及两个 Camera.newWidth / newHeight(想要降采样时用,写成和原图一致即不缩放)。ORB 段给出特征提取参数:ORBextractor.nFeatures 是每帧提取的特征数,室内小场景几百到一千够用,室外大场景可上千;ORBextractor.scaleFactor 通常是 1.2,ORBextractor.nLevels 通常是 8,ORBextractor.iniThFAST 与 ORBextractor.minThFAST 是 FAST 角点阈值,弱纹理场景可下调 minThFAST 以保住特征数量。
IMU 段的参数直接决定视觉惯性融合的质量。IMU.NoiseGyro 与 IMU.NoiseAcc 是陀螺与加速度计的测量噪声密度,IMU.GyroWalk 与 IMU.AccWalk 是随机游走偏置,这四个值必须来自真实的 Allan 方差标定,随手填一个数量级会导致优化结果不可信。IMU.frequency 要填 IMU 的实际输出频率,填错会让预积分的积分步长失真。IMU.InsertKFsWhenLost 控制跟踪丢失时是否继续插入关键帧,室内弱纹理场景可以打开以提升恢复能力。
还有两个容易被忽略但很实用的开关。System.LoadAtlasFromFile 与 System.SaveAtlasToFile 配合使用,可以让机器人第一次跑完建图后把地图落盘,第二次启动直接加载已有地图做纯定位,这对固定场景的重复作业非常关键。System.thFarPoints 用于过滤掉过远的、深度不可靠的地图点,室外场景下打开能明显减少外点。

