【小白冲冲冲!!!】补2:SLAM中最小二乘问题的引入及求解

这一部分是我自己加的, 对于理解非线性优化以及那些常用的优化算法有很大的帮助,所以有时间也可以看看,互相交流;

我们都已经知道SLAM中的问题求解其实就是要求出一个位姿,使得噪声项的平方,即误差最小化。 因此, 对于所有的运动和任意的观测, 都可以定义数据与估计值之间的误差:

运动方程的误差:                                              e_{\emph{v,k}} = \textit{x}_{k} - f(x_{k-1},u_{k})

观测方程的误差:                                              e_{\emph{y,j,k}} = \textit{z}_{k,j} - h(x_{k},y_{j})

对这两项误差做平方并求和,也就的到了一个经典的最小二乘问题。

直观地讲,由于噪声的存在, 当我们把估计的轨迹与地图带入SLAM的运动,观测方程中时,他们并不会完美地成立。这时怎么办呢?我们对状态的估计值进行微调,使得整体的误差下降了一些,当然这个下降也是有限度的, 他一般会达到一个最小值。

上面这段话,其实也就阐明了整个最小二乘求解的关键,也就是求解一个增量值\Delta x,x基于该增量的变化,使得误差方程达到一个极小值。以下面的非线性最小而成为例,

                                                                                min_{x}\frac{1}{2}\left \| f(x) \right \|_{2}^{2}

如果f(x)是一个简单的函数, 那么我们就可以用解析式求解, 令目标函数导数为0, 求x的最优解即可;即

                                                                               \frac{d(\frac{1}{2}\left \| f(x) \right \|_{2}^{2})}{dx} = 0

解了这个方程,就得到了令导数为0的极值,它可能是极大,极小或者鞍值,将他们带入到函数中,算一下结果,比较一下就可以; 但是如果这个函数不方便求解呢?我们就可以用迭代的方法,从一个初始值出发,不断地更新当前的优化变量,使得目标函数的值下降, 具体步骤可以列写如下:

  1. 给定某个初始值x_{0}
  2. 对于第k次迭代,寻找一个增量\Delta x_{k},使得\left \| f(x_{k}+\Delta x_{k}) \right \|_{2}^{2} 达到极小值
  3. \Delta x_{k}足够小,则停止;
  4. 否则,令x_{k+1} = x_{k} + \Delta x_{k}, 则返回2步;

上面这四个步骤就是得一个求解导函数为零的问题变成了一个不断寻找梯度并下降的过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值