非线性优化:协方差

2021-07-21  本文已影响0人  循梦渡

前置知识:

手写BA中,损失函数是:

整体目标函数是:

而在更一般的SLAM优化的最小二乘中,整体目标函数是:

我们可以看到,在BA中,目标函数是损失的平方,而在更一般的SLAM中,目标函数是损失在∑范数意义下的平方

这是为什么呢?

首先,在BA中,我们在写观测方程的时候,是没有考虑噪声的,所以有:

z(k,j) = h(yj,xk)

所以我们可以不加证明的说:这时Zjk满足的是均值为h(yj,xk),方差为0的高斯分布

从而取最大似然(实际就是展开高斯分布为指数形式),以及之后的最小化负对数时,都没有∑项,从而我们要找到一个x状态变量使得负对数最小(也就是似然最大)的时候,就直接在欧式距离下评估

而在更一般的SLAM中,我们的观测方程和运动方程其实都是要考虑噪声的,所以有:

注意这个Q是噪声的方差

所以在求最大似然以及最小化负对数的时候,得在马氏距离下评估,也就是考虑∑的情况,在这里,∑其实就是Q也就是噪声的方差

考虑最后的式子,我们发现其中Q和R(运动方程的噪声)总是以逆的形式出现,所以我们定义信息矩阵为Q的逆,也就是协方差的逆

所以,在视觉SLAM14讲中进行图优化的时候。

首先我们构造一组数据,这组数据是在真实数据的基础上加上一个噪声来构建的如下:

注意看,y的值是在计算值的基础上加上一个方差为w_sigma的高斯噪声得到的

然后在优化的时候,我们加入边

注意看,每个边edge都有一个setInformation,也就是设置协方差的操作

这个协方差就是用来计算这条边的误差的时候,使用来计算马氏距离的,我们注意到,这里设置的信息矩阵,其实就是w_sigma*w_sigma*Indetity所表征的噪声协方差的逆,和我们预想的完全一样

而在用g2o去实现BA的时候,edge也要set一个information,而在那里,这个矩阵被设置为单位阵,从而计算的实际上就是欧式距离

这也和我们预想的完全一样

上一篇 下一篇

猜你喜欢

热点阅读