SLAM学习——后端(一)
2017-07-22 13:54
218 查看
1.概述
对于里程计而言,只有短暂的记忆。而在后端优化中,我们更加考虑一段更长时间内(或所有时间内)的状态估计问题。与之前略有不同,我们令xkxk为k时刻的所有未知量,包含了当前位姿与m个路标点,则写成表达式可为:
xk=Δ{xk,y1⋯ym}xk=Δ{xk,y1⋯ym}
现在考虑第k时刻的情况,希望用过去0到k的数据来估计现在的状态分布:
P(xk|x0,u1:k,z1:k)P(xk|x0,u1:k,z1:k)
下标0:k表示从0时刻到k时刻的所有数据。zkzk表示所有在k时刻的观测数据。按照贝叶斯法则,我们可得:
P(x|x0,u1:k,z1:k)∝P(zk|xk)P(xk|x0,u1:k,z1:k−1)P(x|x0,u1:k,z1:k)∝P(zk|xk)P(xk|x0,u1:k,z1:k−1)
在前面已经讲过,第一项称为似然,第二项为先验。对于先验部分,明白xkxk是基于过去所有的状态估计得来的。至少会受xk−1xk−1影响,于是按照xk−1xk−1时刻为条件概率展开得:
P(xk|x0,u1:k,z1:k−1)=∫P(xk|xk−1,x0,u1:k,z1:k−1)P(xk−1|x0,u1:k,z1:k−1)dxk−1P(xk|x0,u1:k,z1:k−1)=∫P(xk|xk−1,x0,u1:k,z1:k−1)P(xk−1|x0,u1:k,z1:k−1)dxk−1
基于上式,有若干种选择:
1.马尔可夫性,该假设认为k时刻状态只有k-1时刻状态有关,而与再之前的无关,得到扩展卡尔曼滤波(EKF)。
2.考虑k时刻状态与之前所有状态的关系,得到非线性优化为主体的优化框架。SLAM主流为非线性优化。
2.线性系统和KF
如果我们假设马尔可夫性,从数学角度来讲,该方程P(xk|x0,u1:k,z1:k−1)=∫P(xk|xk−1,x0,u1:k,z1:k−1)P(xk−1|x0,u1:k,z1:k−1)dxk−1P(xk|x0,u1:k,z1:k−1)=∫P(xk|xk−1,x0,u1:k,z1:k−1)P(xk−1|x0,u1:k,z1:k−1)dxk−1
右边第一项 P(xk|xk−1,x0,u1:k,z1:k−1)=P(xk|xk−1,uk)P(xk|xk−1,x0,u1:k,z1:k−1)=P(xk|xk−1,uk)
化简原因:基于马尔科夫性,xkxk 状态只与 xk−1xk−1 有关,因此可以把 x0x0 拿掉,同时与观测方程无关,因此可以把他给拿掉,而且输入数据
相关文章推荐
- ORBSlam2学习研究(Code analysis)-ORBSlam2中的闭环检测和后端优化LoopClosing
- 梳理一下最近了解到,需要深入学习和使用的前后端技术
- RGBD-SLAM V2的学习和测试(一)
- 视觉slam学习资料
- SLAM学习资料整理(转载)
- SLAM 的初步学习(一)--ubuntu14.04 下安装 opencv3.2
- 网站前后端交互学习有感
- ORB_SLAM2学习记录1-ORB_SLAM2的安装与运行
- 【后端】Java学习笔记
- 【MySQL学习笔记】3:使JDBC后端程序和MySQL数据库在局域网内分离
- Re0:从零开始的后端学习(1)
- 学习hector_slam(三)随手记录:hector_mapping
- Javaweb开发(前端和后端学习资料)
- SLAM学习资料整理
- Java后端工程师学习大纲
- 一个后端的前端学习之旅——4.第一个demo上线以及关于前端框架我的看法
- Node-Blog整套前后端学习记录
- 深度学习与SLAM,SLAM的未来
- 从零开始做微信小程序后端---学习日记