整理一下SLAM的内容:
20200514
论文地址:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.232.7301&rep=rep1&type=pdf

Graph-based SLAM(基于图优化的算法)

A Tutorial on Graph-Based SLAM
这个论文写的很好。

看了:https://blog.csdn.net/plateros/article/details/103498039 的文章,写的很好。稍微总结一下:
这个文章把主要的point列了出来:https://blog.csdn.net/cyjwcbe/article/details/86666239

1、用图G(V, E)的方式表述了SLAM问题,
论文A Tutorial on Graph-Based SLAM 学习笔记

  • 图优化中,顶点是优化项,而边是约束项。
  • Pose(x)与Landmark(m)构成了图的顶点集。
  • 边(Edge)存在两种构成。第一种是Pose到Pose,另一种是Pose到Landmark。
  • 状态转移:g(control,pose)g(control,pose) ,即g(u1,x0)g(u_1,x_0), 该值与“真实”的Pose x1x_{1}的差,构成了这条边的约束。
  • 约束写成马氏距离:论文A Tutorial on Graph-Based SLAM 学习笔记
  • 完整的约束为前两个约束的和,(SLAM的图优化问题就是寻找合适的Pose(x), Landmark(m),让如下的公式最小)论文A Tutorial on Graph-Based SLAM 学习笔记

2、信息矩阵

论文A Tutorial on Graph-Based SLAM 学习笔记
分解上面的信息矩阵,消去了landmark节点(m)

论文A Tutorial on Graph-Based SLAM 学习笔记
3、 节点定义为机器人的Pose

  • x={x1,...,xn}令节点x=\left \{ x_{1},...,x_{n} \right \}表示节点向量。

4、边可以统称为一种"虚拟观测"(virtural measurement)
边有两种,

  • 时间上相邻的节点存在一条边e(i,i+1)e_{(i, i+1)}。这条边通常是运动模型提供的约束(如里程计,轮速仪等)。

  • 如果在xixjx_{i}和x_{j}看到了同样的路标,那么在这两个节点之间存在一条边e(i,j)e_{(i, j)}。这条边的约束由对路标的观测模型提供。

  • z(i,j)z_{(i, j)}是虚拟观测的均值,

  • 方差由信息矩阵Ωi,j\Omega _{i,j}表示。

  • z^i,j(xi,xj)\hat z_{i,j}(x_{i}, x_{j})是已知xixjx_{i}和x_{j},对观测的预测。

5、l(i,j)z(i,j)l_{(i, j)}是z_{(i, j)}似然函数的对数。
可由预测的观测与观测的实际值的差求出

论文A Tutorial on Graph-Based SLAM 学习笔记
简化这个公式
论文A Tutorial on Graph-Based SLAM 学习笔记
论文A Tutorial on Graph-Based SLAM 学习笔记
论文A Tutorial on Graph-Based SLAM 学习笔记

问题的求解变成了寻找合适的节点向量x^{*}以使得F(x)得值最小。非线性最优化可采用最小二乘,牛顿高斯,Levenberg-Marquardt法。

Define a operator map 3D transformation to manifold

论文A Tutorial on Graph-Based SLAM 学习笔记

  • 平移变量t显然是欧式空间,
  • 而旋转变量的表达式(通常是欧拉角)属于非欧式空间。

简单地讲,就是旋转或者旋转平移矩阵对加法不封闭(两个旋转矩阵相加不是旋转矩阵,两个旋转平移矩阵相加不是旋转平移矩阵)

  • 牛顿高斯的最优求解遇到了问题

  • 可以使用四元组替代欧拉角表示3维旋转。

  • 借用流形的概念(Manifolds),再结合四元组的表达

    • 例如,当计算两个点在流形(非欧式空间)上的距离时,首先在其中一个点的附近建立欧式空间的映射,然后把另一个点映射过去,再计算他们的距离。只需要在原算法中定义“加”,“减”两个操作(映射),将两个操作封装,而这两个封装可以使用四元组的对数实现。更详细的内容可以参考[4]。[5]给出了关于Smooth Manifold的详细说明。[4] A Framework for Sparse, Non-Linear Least Squares Problems on Manifolds [5] INTRODUCTION TO SMOOTH MANIFOLDS
    • 流形(Manifolds)是局部欧几里得空间化的一个拓扑空间。欧式空间就是最简单的流形。

SLAM(1)概率模型与EKF

该博主写的很好:https://blog.csdn.net/plateros/article/details/103461233
论文A Tutorial on Graph-Based SLAM 学习笔记

需要注意:数据关联(data association),此处需要额外的算法将预测的观测和传感器的观测建立对应关系。常见的算法有基于2D/3D点的NN, ICP算法,基于图像的特征匹配算法(Sift, Surf, ORB)等。

MonoSLAM

[3]MonoSLAM采单目摄像机,基于上文的EKF算法,实现了实时的SLAM。
[3] MonoSLAM: Real-Time Single Camera SLAM
https://github.com/hanmekim/SceneLib2

其中星标最多的是Hanme Kim的版本。

https://github.com/hanmekim/SceneLib2.git

由于MonoSLAM是一个典型的EKF算法

SLAM资料整理

这个写的不错:https://blog.csdn.net/hiddleson/article/details/25914569
可以:https://www.jianshu.com/p/43706a18ddc0

大杂烩:http://www.coin163.com/it/3768835166305779491/SLAM

g2o的实现:

论文A Tutorial on Graph-Based SLAM 学习笔记

文献资料:

Globally Consistent Range Scan Alignment for Environment Mapping.

Efficient Sparse Pose Adjustment for 2D Mapping.

A Tutorial on Graph-Based SLAM.:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.232.7301&rep=rep1&type=pdf

相关文章: