slam:定位与建图。
入手SLAM有2个月了,但是还是没入门,只是跑了一下别人的例子,但是想更改就显得十分困难,所以我现在在一步步深入。
1.几个蒙蔽:
首先slam有好多算法,撇开视觉slam,我现在是在用激光雷达做激光slam,但是网上的大多都是视觉slam,所以对于使用激光雷达的我。。。。ROS里的gmapping包构建地图用的是RBPF,书《slam for dummies》用的是EKF,还有什么卡尔曼滤波,看了一天的博客,别人推荐的几个关键算法的论文也有几个,代码openslam网站上也有一大堆,还有一个google开源的slam demo,前几天还听大神交流什么什么开环闭环的问题,我一脸蒙蔽,我得一一将其理清楚,比较其他几个博客所说的,逐步辨别真伪。
得先从slam的历史入手,摸清楚各个阶段slam的数学、算法表示以及相应的代码。
2.slam历史:slam和滤波即定位与建图和滤波有啥关系?和图优化呢?
2.1 根据http://www.leiphone.com/news/201609/iAe3f8qmRHXavgSl.html,
早期,R.Smith把slam当成一个滤波的问题。
”SLAM最早的提出者R. Smith把SLAM建构成了一个EKF(Extended Kalman Filter,扩展卡尔曼滤波)问题。他们按照EKF的形式,把SLAM写成了一个运动方程和观测方式,以最小化这两个方程中的噪声项为目的,使用典型的滤波器思路来解决SLAM问题。“
运动方程:
”当一个帧到达时,我们能(通过码盘或IMU)测出该帧与上一帧的相对运动,但是存在噪声,是为运动方程。“
观测方程:
”同时,通过传感器对路标的观测,我们测出了机器人与路标间的位姿关系,同样也带有噪声,是为观测方程。“
”通过这两者信息,我们可以预测出机器人在当前时刻的位置。同样,根据以往记录的路标点,我们又能计算出一个卡尔曼增益,以补偿噪声的影响。”
“于是,对当前帧和路标的估计,即是这个预测与更新的不断迭代的过程。“
21世纪后:
"21世纪之后,SLAM研究者开始借鉴SfM(Structure from Motion)问题中的方法,把捆集优化(Bundle Adjustment)引入到SLAM中来。优化方法和滤波器方法有根本上的不同。它并不是一个迭代的过程,而是考虑过去所有帧中的信息。通过优化,把误差平均分到每一次观测当中。在SLAM中的Bundle Adjustment常常以图的形式给出,所以研究者亦称之为图优化方法(Graph Optimization)。图优化可以直观地表示优化问题,可利用稀疏代数进行快速的求解,表达回环也十分的方便,因而成为现今视觉SLAM中主流的优化方法。"
2.2根据http://www.opencv.org.cn/forum.php?mod=viewthread&tid=37672
“
未完待续。。。