有些别的事情中断了学习,现在重新拾起来哈。
果然,很多事情还是一鼓作气的好,不然节奏会乱掉。
注:
1)学习视频:【高翔】视觉SLAM十四讲。
第6讲
6.1 理论部分
本讲主要是状态估计的问题,大佬以非线性优化为主,也是现在视觉SLAM主流的方向。
此外,公式编辑的问题,有些量是向量或矩阵,但不太好加粗,所以以书上公式为主。
最后,太难了,高斯牛顿和L-M太难了,听都听不进去。
1)状态估计
- 前面我们得到了运动方程(由 S E ( 3 ) SE(3) SE(3)描述【讲3】,李代数优化【讲4】)和观测方程(由针孔模型给定【讲5】),其中涉及到相机位姿 x x x、地标点 y y y(前2者合称位姿)、输入量 u u u、观测量 z z z。而如何由这2个方程获得我们需要的状态量,即如何由输入和观测量获得相机位姿和地标点,就是状态估计(【讲6】)的工作;
- 状态估计有2类方法:增量法(滤波器)和批量法(以非线性优化为主);
- 非线性优化求状态估计,实际是求状态的条件概率分布,对应公式 P ( x , y ∣ z , u ) = P ( z , u ∣ x , y ) P ( x , y ) P ( z , u ) ∝ P ( z , u ∣ x , y ) P ( x , y ) P({x,y}|{z,u})=\frac{P({z,u}|{x,y})P(x,y)}{P(z,u)}\propto{P({z,u}|{x,y})P(x,y)} P(x,y∣z,u)=P(z,u)P(z,u∣x,y)P(x,y)∝P(z,u∣x,y)P(x,y),其中公式左边称为后验概率,右边 P ( z , u ∣ x , y ) P({z,u}|{x,y}) P(z,u∣x,y)称为似然, P ( x , y ) P(x,y) P(x,y)称为先验;
- 直接求后验分布很难,因此一般有2种方法。a)若有先验信息,求最大后验估计MAP: ( x , y ) M A P ∗ = a r g m a x P ( x , y ∣ z , u ) = a r g m a x P ( z , u ∣ x , y ) P ( x , y ) (x,y)^*_{MAP}=argmaxP(x,y|z,u)=argmaxP(z,u|x,y)P(x,y) (x,y)MAP∗=argmaxP(x,y∣z,u)=argmaxP(z,u∣x,y)P(x,y),等价于似然和先验的乘积的最大值;b)若无先验信息,求最大似然估计MLE: ( x , y ) M L E ∗ = a r g m a x P ( z , u ∣ x , y ) (x,y)^*_{MLE}=argmaxP(z,u|x,y) (x,y)MLE∗=argmaxP(z,u∣x,y),即确定什么状态下最可能产生现在的观测;
- 而实际情况中,无后验信息较多,因此大多使用最大似然估计,那么如何求最大似然估计呢,就引出了最小二乘问题。
2)最小二乘
- 由于高斯噪声情况更简单,因此介绍最大似然估计时,以高斯噪声分布为例;
- 直接求最大似然估计,其含有乘法和指数项,且在多时刻(含有很多独立的运动和观测方程)数据处理时不容易。因此对其作负对数处理,将乘法变为加法,略去与状态无关的项,对某一时刻的最大似然估计,就变为求最小二次型项(二次型称为马氏距离);
- 由运动方程和观测方程定义2种误差: e u , k = x k − f ( x k − 1 , u k ) e_{u,k}=x_k-f(x_{k-1},u_k) eu,k=xk−f(xk−1,uk), e z , j , k = z k , j − h ( x k , y j ) e_{z,j,k}=z_{k,j}-h(x_k,y_j) ez,j,k=zk,j−h(xk,yj)。在非线性优化时,会处理批量时刻的数据,因此求所有数据的最大似然估计转换为求最小二乘(即误差和的最小值),对应公式 m i n J ( x , y ) = ∑ k e u , k T R k − 1 e u , k + ∑ k ∑ j e z , k , j T Q k , j − 1 e z , k , j minJ(x,y)=\sum_ke^T_{u,k}\pmb{R}^{-1}_ke_{u,k}+\sum_k\sum_je^T_{z,k,j}\pmb{Q}^{-1}_{k,j}e_{z,k,j} minJ(x,y)=∑keu,kTRRRk−1eu,k+∑k∑jez,k,jTQQQk,j−1ez,k,j;
- 最小二乘有线性与非线性2种情况,若为线性则一般容易求解,不方便或非线性,一般用迭代的方法,将求解导函数为零变为寻找下降增量;
- 求下降增量,书中介绍了3种方法:1)梯度下降法;2)高斯牛顿法;3)列文伯格-马夸尔特法;
- 梯度下降法。简单来说就2条,一阶梯度最速下降,二阶梯度牛顿法。但都有相应的问题,最速下降有zigzag(贪婪)问题,牛顿法的海塞矩阵太难,所以一般高斯牛顿和列文伯格-马夸尔特法更实用一点;
- 高斯牛顿法。用 J J T JJ^T JJT近似替代海塞矩阵,核心变为求解增量方程;
- 列文伯格-马夸尔特法。
6.2 实践部分
待续ing