在搜资料时看到有人推荐了Course on SLAM这本书,博客上搜了一下看了这篇博客https://blog.csdn.net/cxsydjn/article/details/81450297,感觉值得一看。上午用了一个半小时,下午用了一个半小时,晚上又花了一个半小时来写总结,总共花了将近五个小时,今天一天也就干了这一件事,花的时间还是有些长。看了个大概,重点看了graphSLAM,第五章的矩阵分解就没怎么看,自己这一块还不是很了解。
总的来说,这本书把SLAM中的每个环节中的重要部分都讲了一遍,算是整个框架都有了。看过《SLAM十四讲》又没有完全看懂的人,或者对于后端还没有一个宏观的认识的人,可以看一下这本书。
再说目前对自己来说,最重要的是学会怎么使用g2o,gtsam库,和Ceres库,原来这些后端优化的东西不需要自己写的,我之前怎么就没有想到呢?理论原理自己大概早都懂了,缺的是实践。真要硬刚推公式的话,那肯定是推不出来的。抓住主要矛盾,就是想做一些东西,道理我都懂,但就是不能上手做不出结果,归根结底就是看的太多,真正编程太少,不会熟练用工具库。
读一本书,你记住的那部分就是你印象最深的,读一本书的意义就在于邂逅这1%。你不需要一次就记住并掌握书中所有的东西,只要你从中获得了一些知识,一些灵感,就够了。总比你看都没看过强。开卷有益指的就是这。
第二章 机器人运动
1、刚体坐标转换
坐标系确定,讲了坐标系变换
2、机器人运动建模
主要讲了机器人运动模型,固定速度模型,里程计模型,差分驱动模型,扭转控制模型,IMU模型。
我比较关注的是IMU-driven model (3D only) 这里。不过这里没有详细讲,只是列了几个公式,还是不太懂。其他的几个模型由于暂时没有遇到,所以也没看。
第三章 环境感知
环境感知建模:
这里,x由几个小的部分组成,比如下面这两种,Xr是机器人的位姿,XL是环境中的路标
3.3常见的传感器和相应的模型
2D laser ,3D laser(还没看,需要细看3D模型)
Monocular camera ,Stereo camera,Vision+depth cameras(RGBD)
GPS fixes, compasses, altimeters, and the like
第四章Graph-based SLAM
这一章算是看这本书最大的收获,总算搞懂了Graph SLAM是什么了。看《概率机器人》中讲的Graph SLAM,讲的太细了,还看不懂,看完这一章是懂了。其实要我现在回想一下今天看这个pdf的感悟,我会直接选择我最感兴趣的这章开始看,而不是从头开始看,这都是学习方法,需要多阅读,慢慢体会。
4.1问题表述
什么是SLAM?
4.1.1 SLAM as a Dynamic Bayes Network
这里表述了了最大后验的概率公式是怎么一步步得来的,有机器人的控制量u,环境观测z,路标观测l。
这里是通过概率公式表示的,求最大后验对应的X(位姿)和L(路标)
4.1.2 SLAM as a factor graph
首先是因子图的表示:
因子图的因子指的就是上面的φi和φk ,就是每次运动模型或者观测跟真实值之间的误差
这里就将由动态贝叶斯概率表示的公式转变为了真正可以求解的数学公式
所以,最后就转变成了优化问题。
4.2迭代非线性优化
非线性优化方法的步骤是:
1、给定初始值
2、寻找一个比较好的步长Δx
3、更新X,X=X+Δx
4、循环迭代,直到Δx足够小,就收敛了
然后分别介绍了几种优化方法。
1、牛顿法,就是对F(x+Δx)在x处进行泰勒二阶展开,然后对Δx求导,令导数为零,求得Δx。
2、高斯牛顿法,没有太看懂。貌似和《SLAM十四讲》中讲的不太一样。还是等后面再看看吧。
3、 列文伯格-马夸特法,待看。。
4、SLAM问题中的稀疏结构,在最后的总的雅可比矩阵中,只有相关的因子直接之间的雅可比矩阵块才不为零,这就造成了总的雅可比的稀疏性,正是有了这个稀疏性,SLAM中的图优化才能做到速度快。
5、Optimization on a manifold(流形)
如果状态在非欧式空间,就需要把问题转换到上,比如朝向问题。
列举了三种3D朝向非欧式,旋转矩阵,四元数,欧拉角。流行还有别的名字,optimization in the error-space, optimization in the tangent space, or optimization through local parametrization
第五章 通过矩阵分解求解
1、QR分解
2、增量操作,这里提到了iSAM算法
3、the sparse Cholesky factorization method