从零实战SLAM-第九课(后端优化)

在七月算法报的班,老师讲的蛮好。好记性不如烂笔头,关键内容还是记录一下吧,课程入口,感兴趣的同学可以学习一下。


后端的目标:从带噪声的数据估计内在状态------状态估计问题。主流方法分为两大类:

❑ 渐进式(Incremental/Recursive)

❑ 批量式(Batch)

其中,渐进式(Incremental/Recursive)的思想和主流方法如下:

➢ 保持当前状态的估计,在加入新信息时,更新已有的估计(滤波)

➢ 线性系统+高斯噪声=卡尔曼滤波器

➢ 非线性系统+高斯噪声+线性近似=扩展卡尔曼

➢ 非线性系统+非高斯噪声+非参数化=粒子滤波器

➢ Sliding window filter & multiple state Kalman(MSCKF)

批量式(Batch)的思路为:

➢ 给定一定规模的数据,计算该数据下的最优估计(优化)

渐进式的作用是根据观测的结果,修正自己对位姿的估计。没有观测,则随着机器人的移动,自身的位姿误差会越来越大。

与之前保持一致,xk表示位姿,zk表示观测

则k时刻的位姿,与原始位姿、运动序列和观测序列有关

这其中涉及到当前时刻与之前各时刻位姿之间的关系,一般分为两种:

➢ 假设𝑘时刻状态只和𝑘-1时刻有关

➢ 假设𝑘时刻状态与先前所有时刻均相关

常用第一种,也叫作马尔科夫性。

.

其中,卡尔曼滤波用在线性模型、高斯噪声的情况之下

高斯分布的线性变换,仍然属于高斯分布。

计算过程很复杂,最后只要记住这几个公式即可。

当运动函数与观测函数为非线性函数时,用一阶Taylor展开

分析的工具为扩展卡尔曼滤波

扩展卡尔曼滤波的优缺点

❑ Advantage

➢ 推导简单清楚,适用各种传感器形式

➢ 易于做多传感器融合

❑ Disadvantage

➢ 一阶马尔可夫性过于简单

➢ 可能会发散(要求数据不能有 outlier)

➢ 线性化误差

➢ 需要存储所有状态量的均值和方差,平方增长

批量法的思路

Bundle Adjustment问题与图结构的关系:

➢ BA虽然是个纯优化问题,但亦可以用图模型清晰地表述出来

➢ 顶点为优化变量,边为运动/观测约束

➢ 本身还有一些特殊的结构

BA使用高斯-牛顿或者L-M算法计算

这里的雅可比矩阵为一个稀疏阵。

目标函数与雅可比矩阵的情况

雅可比矩阵与H矩阵的稀疏性特点

图模型结构与H矩阵之间的映射关系

利用H矩阵的特点,可以加速计算过程。

迭代法与批量发之间的区别

在SLAM中使用Bundle Adjustment,用来做关键帧和地图的管理

批量方法:

➢ 用BA优化一部分图

➢ 其余的固定

递归方法:

➢ 保留一定数量的关键帧

➢ 使用BA来优化窗口内的关键帧

➢ 新的关键帧到来时,边缘化老的关键帧

位姿图与BA之间的关系

实际当中Bundle Adjustment的计算量很大:

➢ 通常放在单独的后台线程中计算而无法实时

➢ 主要计算来自于大量的特征点

Pose Graph 即是省略了特征点的 Bundle Adjustment。

位姿图的计算过程

相关推荐
猿人谷1 小时前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络3 小时前
Stable Diffusion 视觉大模型微调技术深度调研
算法
复杂网络3 小时前
基于 Stable Diffusion 架构的视觉大模型代表性工作与原理深度解析
算法
MrZhao4003 小时前
Agent Loop 如何用 Hook 扩展:权限、日志与工具拦截
算法
MrZhao4003 小时前
Agent 为什么需要 Skills:别把所有知识都塞进 system prompt
算法
兵慌码乱16 小时前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
JieE2122 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2123 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack203 天前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法
小小杨树3 天前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色