ORB-SLAM2代码阅读笔记:优化

2019-08-27  本文已影响0人  liampayne_66d0

ORBSLAM是一种基于优化方法的SLAM方法,工程中引入了第三方库g2o,g2o是基于图优化的优化算法库。图优化是将普通的优化问题用图的方式(变量用节点表示,关系用边来表示)来表示。

图优化中的鲁棒核函数

SLAM中可能给出错误的边。SLAM中的数据关联让科学家头疼了很长时间。出于变化、噪声等原因,机器人并不能确定它看到的某个路标,如果出现错误,就会出现一条误差很大的边,然后试图调整这条边所连接的节点的估计值,使它们顺应这条边的无理要求。由于这个边的误差真的很大,往往会抹平了其他正确边的影响,使优化算法专注于调整一个错误的值。
核函数作用就是保证每条边的误差不会大的没边,掩盖掉其他的边。具体的方式是,把原先误差的二范数度量,替换成一个增长没有那么快的函数,同时保证自己的光滑性质(不然没法求导啊!)。因为它们使得整个优化结果更为鲁棒,所以又叫它们为robust kernel(鲁棒核函数)。很多鲁棒核函数都是分段函数,在输入较大时给出线性的增长速率,例如cauchy核,huber核等等。当然具体的我们也不展开细说了。

这段摘自 深入理解图优化与g2o:图优化篇

高斯牛顿法

上式为一维的情况,扩展到多维时牛顿法的迭代式为:

其中H为海塞矩阵, 为梯度

相反,如果λ为0,就变成了高斯牛顿法。
Levenberg-Marquardt方法的好处在于可以调节:
如果下降太快,使用较小的λ,使之更接近高斯牛顿法
如果下降太慢,使用较大的λ,使之更接近梯度下降法

此外,高斯牛顿法中涉及求逆矩阵的操作,(J^TJ) 加入λ 也可以保证该矩阵为一个正定矩阵。

上一篇 下一篇

猜你喜欢

热点阅读