2. 视觉SLAM基础
视觉SLAM(Simultaneous Localization and Mapping,同时定位与建图)要解决的核心问题是:一台搭载相机的移动平台,在未知环境中运动时,如何仅凭图像序列,实时估计自身的运动轨迹,并同时构建出环境的地图。这个定义里藏着两个互相耦合的任务——定位需要地图作为参照,建图又需要准确的位姿作为基础,二者互为条件,这正是SLAM区别于单纯里程计或单纯三维重建的关键难点。
从概率角度看,SLAM是一个后验估计问题:给定观测数据(图像特征、像素亮度等)和运动输入(轮速、IMU),求机器人状态(位姿、速度、路标点)的联合后验分布。工程上通常把它拆解为若干可实现的模块,形成一条从传感器到地图的完整数据链路。
2.1 传感器类型:视觉SLAM的输入从哪来
视觉SLAM的“视觉”二字决定了相机是主传感器,但不同相机配置带来的信息维度差异很大。单目相机成本最低,却存在尺度不确定性——仅凭单目图像无法区分“小物体近距离”和“大物体远距离”;双目相机通过左右目视差恢复绝对尺度,但需要精确标定和同步;RGB-D相机直接输出深度图,在室内近距离场景中非常方便,但受红外结构光或ToF的测量范围与光照干扰限制。此外,IMU提供高频角速度和加速度,可在图像帧间填补运动信息,视觉惯性SLAM(VIO)已成为主流方案;轮式编码器则常用于地面机器人,提供平面运动的粗略约束。
2.2 前端里程计:帧间运动如何估计
前端里程计负责从相邻图像帧中估计相机的相对运动,是整条链路的“心跳”。主流方法分为特征点法和直接法。特征点法先提取ORB、SIFT等关键点并计算描述子,再通过描述子匹配建立帧间对应关系,最后用对极几何或PnP求解位姿;直接法则跳过描述子,直接最小化像素光度误差,在纹理弱、特征少的场景中更有优势,但对光照变化敏感。
前端输出的位姿是“增量式”的,误差会随帧数累积,形成漂移。因此前端通常还会维护一个局部地图或滑动窗口,通过局部BA(Bundle Adjustment)对最近若干帧的位姿和路标点做联合优化,抑制短期漂移。前端的关键指标包括跟踪成功率、位姿估计精度和实时性,通常要求在30Hz以上运行。
2.3 后端优化与回环检测:消除累积误差
后端优化是SLAM的“大脑”,它把前端产生的位姿和路标点作为初值,构建一个大规模非线性最小二乘问题,用图优化方法求解。图中节点是待优化的位姿和路标点,边是观测约束(重投影误差、IMU预积分误差等)。常用的求解器包括g2o、Ceres Solver和GTSAM,核心算法是高斯-牛顿或列文伯格-马夸尔特迭代。
回环检测则是“记忆”机制:当相机重新经过曾经到过的地方时,识别出这一事实并建立当前帧与历史帧的约束,从而把累积漂移一次性拉回。回环检测通常用词袋模型(BoW)或深度学习描述子做场景识别,再通过几何验证排除误匹配。一个错误的回环会严重破坏地图,因此回环检测的准确率比召回率更重要。
2.4 建图模块:地图不只是给人看的
建图的输出形式取决于下游任务。稀疏特征点地图适合定位与重定位,但无法用于避障;稠密点云或TSDF(截断符号距离场)地图能恢复场景几何,适合导航和三维重建;栅格地图和八叉树地图则更贴近移动机器人路径规划的需求。在视觉SLAM中,建图通常与后端优化共享同一套路标点,回环修正后地图会整体更新,因此地图的一致性依赖于后端和回环的准确性。
2.5 模块协同与典型误区
五个模块并非线性流水线,而是存在多条反馈路径:前端局部BA的结果会送入后端作为初值,回环检测的约束会反馈到后端改变全局位姿,后端优化后的位姿又会更新建图结果。理解这些反馈关系,是排查SLAM系统问题的关键。
| 模块 | 核心输入 | 核心输出 | 常见问题 |
|---|---|---|---|
| 传感器 | 图像、IMU、轮速 | 同步后的观测数据 | 时间戳不同步、标定误差 |
| 前端里程计 | 相邻帧图像 | 相对位姿、局部地图 | 快速运动跟踪丢失、纹理弱 |
| 后端优化 | 位姿与路标初值、约束边 | 全局一致位姿 | 计算量过大、陷入局部最优 |
| 回环检测 | 历史帧与当前帧 | 回环约束 | 误回环导致地图扭曲 |
| 建图 | 优化后位姿、深度信息 | 点云/栅格/TSDF地图 | 地图漂移、动态物体污染 |
# 典型视觉SLAM运行日志片段(示意)
[INFO] Frontend: tracked 312 features, inliers 287
[INFO] Frontend: PnP pose solved, reproj_err=0.42px
[INFO] Backend: local BA window=10, cost=1.83e+03
[INFO] Loop: candidate frame 142 matched, score=0.87
[INFO] Loop: geometric verification passed, adding constraint
[INFO] Backend: global BA converged, cost=4.21e+02
[INFO] Mapping: updated 58,432 points, TSDF integrated
掌握这五个模块的职责边界与数据流向,是后续学习回环检测与图优化工程实践的基础。只有先建立系统级认知,才能在面对具体算法和代码时,清楚每一步在整条链路中的位置与作用。