不论是刚入门SLAM的小白,还是导航相关专业的同学,都对“非线性优化”这个词不陌生,如果你说你没听过这个词,那“因子图”一词总该略有耳闻吧,如果还是不知道,那就只能拿SLAM14讲敲你了。
自我进入SLAM领域以来,就再也没有逃出非线性优化的魔掌了,业界神书SLAM十四讲上还单独分出来一章对非线性优化进行了基础且详细的讲解,不过上了这么多年学的我们,早已经看透了这一切,书上写着“1+1=2”,实际操作中就开始解N个参数的方程组了。[一脸苦笑.gif]。如果你想耍滑头溜过非线性优化的大门,也可以,但你们会重逢的,在第七章重逢,第八章重逢,第九章重逢……在第十四章重逢。是的,非线性优化占据了SLAM的大半壁江山,于是,便有了这个专题——《非线性优化系列讲解》。
这个专题主要分为两大部分:Ceres和g2o,这两个是用于非线性优化的C++库,很常用,每个部分我都会由浅入深,结合代码逐行讲解,并在后续录制讲解视频供大家深度掌握,敬请关注。
非线性优化之G2O:基础理论知识
在这部分主要进行SLAM14讲中的基础知识讲解,若已熟读过的同学可以绕道下一步,在后续部分推导用到的公式我都会再次给出,并标记。
★问题一:什么是非线性最小二乘?
先举个简单的例子,在大家考试过程中,会有一个理想目标分数和实际分数以及满分,每次考试后,我们会得到实际分数,然后对实际分数和目标分数之间的差值进行评估,再对相应的学科进行难关攻克,以争取在下次考试中得到更好的成绩。
这便构成了最简单的最小二乘问题。可以想到,要使得有最小值,即找到函数极值点,而极值点往往在导数为零的点,对于易求解的,使用求导的方式,但在SLAM中,往往导数不易求解,无法找到极值点。
因此,选择使用一种很原始的方法,迭代试验法:
★问题二:高斯牛顿法求解非线性最小二乘