SLAM 08.后端-非线性优化

视觉里程计能给出一个短时间内的轨迹和地图,但不可避免的误差累积,这个地图在长时间内是不准确的。要想构建一个尺度,规模更大的优化问题,以考虑长时间内的最优轨迹和地图,这时后端优化就出现了。

一、核心任务与问题本质

核心任务:

  • 误差抑制:修正前端(VO/LIO)随时间累积的位姿漂移。
  • 全局一致性:联合优化所有历史位姿与地图路标,使整体误差最小。
  • 回环闭合:检测到 "回到过往位置" 时,加入强约束,一次性修正长期漂移。

数学本质:非线性最小二乘(状态估计)

  • 状态:机器人位姿 x i、地图路标 p j
  • 约束:运动约束(相邻位姿)、观测约束(位姿↔路标)、回环约束
  • 目标:最小化所有约束的残差平方和 min∑∥e∥ 2

二、两大技术路线:滤波 vs 图优化

2.1. 滤波后端(早期主流,轻量场景)

核心假设 :马尔可夫性(当前状态仅依赖前一时刻)。
代表算法

  • EKF-SLAM:扩展卡尔曼滤波,维护状态均值与协方差;计算量 O(n2),仅适用于小场景。
  • UKF / 粒子滤波 PF:处理强非线性 / 非高斯;PF 常见于 2D 激光(如 GMapping)。

优缺点:✅ 计算快、内存小、适合低算力(扫地机)❌ 长期漂移、无法全局修正、精度低

2.2 图优化后端(当前主流,高精度场景)

核心思想 :把 SLAM 建模为因子图(Graph):

节点(Vertex):机器人位姿 x1​,x2​,...xn​、地图点 p1​,p2​,...pm​

边(Edge/Factor):约束(运动、观测、回环),带残差与信息矩阵
优化目标:迭代调整节点,使所有边残差最小。

主流求解器

  • g2o:通用图优化库,视觉 / 激光 SLAM 最常用。
  • Ceres Solver:Google 开发,易用、鲁棒性强。
  • GTSAM:因子图专用,支持 IMU / 相机 / 激光融合。

优化算法 :高斯 - 牛顿(G-N)、列文伯格 - 马夸尔特(L-M)(鲁棒性更好)。
优缺点:✅ 全局最优、精度高、可融合多传感器、支持回环❌ 计算量大、需关键帧 / 位姿图稀疏化。

三、关键模块:位姿图、BA、回环与融合

3.1. 光束平差法(Bundle Adjustment, BA)

视觉 SLAM 核心:联合优化所有相机位姿与 3D 路标,最小化重投影误差。

稀疏化:仅优化关键帧与关键路标,控制计算量(如 ORB-SLAM3)。

3.2. 位姿图优化(Pose Graph Optimization)

激光 / 视觉通用:只优化位姿,不优化路标;节点为位姿,边为相对位姿约束(ICP / 匹配)。

适用场景:激光 SLAM(如 Cartographer)、纯定位、大规模建图。

3.3. 回环检测与闭合

作用 :识别当前帧与历史帧同场景,添加回环约束边,后端一次性修正全局漂移。
主流方法

词袋模型(BoW/DBoW3):视觉常用,图像→特征向量→相似度检索。

几何验证:RANSAC 验证候选回环的几何一致性,剔除误检。

深度学习:NetVLAD、语义匹配,提升动态 / 视角变化鲁棒性。

3.4. 多传感器融合后端

IMU + 视觉(VIO):紧耦合因子图(如 OKVIS、VINS-Mono),IMU 预积分提供高频运动约束。

激光 + IMU(LIO):激光里程计 + IMU 预积分,后端图优化(如 LIO-SAM)。

激光 + 视觉 + IMU:多因子联合优化,提升鲁棒性与精度。

四、主流开源框架对比

五、技术演进与趋势

从滤波到图优化:精度优先,工业界全面转向图优化 / 因子图。

稀疏化与实时性:关键帧筛选、位姿图稀疏化、增量优化(iSAM2),提升大规模场景实时性。

多传感器紧耦合:IMU 预积分、激光 / 视觉 / 雷达融合,适配复杂动态环境。

深度学习赋能:回环检测、特征提取、异常检测,提升鲁棒性与自动化程度。

六、总结

后端本质 :全局非线性优化,核心是图优化 / 因子图,目标是消除累积漂移、输出全局一致轨迹与地图。
选型建议

低算力 / 小场景:粒子滤波(GMapping)

视觉高精度:BA + 图优化(ORB-SLAM3)

激光建图:位姿图优化(Cartographer)

动态 / 复杂环境:多传感器融合因子图(LIO-SAM/VINS)

相关推荐
05候补工程师2 小时前
【ROS 2 具身智能】Gazebo 仿真避坑指南:从“幽灵机器人”到传感器数据流打通
人工智能·经验分享·笔记·ubuntu·机器人
HERR_QQ2 小时前
端到端课程自用 4 规划 基于自规划AR的端到端规划 AI 笔记
人工智能·笔记·自动驾驶·transformer
AI进化营-智能译站3 小时前
ROS2 C++开发系列07-高效构建机器人决策逻辑,运算符与控制流实战
开发语言·c++·ai·机器人
2601_958320575 小时前
【小白零基础上手 】钉钉内部机器人接入 OpenClaw 完整流程讲解(含安装包)
人工智能·windows·机器人·钉钉·open claw·open claw安装
龙亘川5 小时前
具身智能机器人安全深度解析:从风险现状到防护实践(2026)
安全·机器人·具身智能安全技术白皮书
AI进化营-智能译站6 小时前
ROS2 C++开发系列14-Lambda表达式处理传感器数据流|文件IO保存机器人实验日志
开发语言·c++·ai·机器人
HERR_QQ7 小时前
端到端课程自用 5 规划 基于Difussion 的端到端planner AI 笔记
人工智能·笔记·学习·自动驾驶
工业机器人生命周期管理16 小时前
赢胜智能:五一劳动节快乐
机器人
xwz小王子18 小时前
Science Robotics最新研究:检索增强操作(RAM)——让机器人真正理解“放在哪儿、怎么放”
机器人