第一讲 预备知识

给了slam书籍,还有本书代码。

GitHub - gaoxiang12/slambook2: edition 2 of the slambook

第二讲 初识slam

介绍了经典slam框架:

传感器信息的读取和时间同步

前端视觉里程计VO:用几帧数据,估计局部运动和局部地图

后端(非线性)优化:接受不同时刻的相机位姿,以及回环检测的信息,得到全局轨迹和地图

回环检测:从传感器信息读取那里开始进行的,看看是否到达过先前的位置,如果检测到回环,就把信息提供给后端进行处理

建图:根据估计的轨迹,建立与任务要求对应的地图。

slam的数学描述

第三讲 三维空间刚体运动

介绍了物体刚体运动的表示(旋转+平移)

工程问题:在相机视野里的一个向量在大地坐标系下的坐标是什么?

解决办法是:通过坐标转换,把相机(车)坐标系中的坐标转换到大地坐标系。两个坐标系转换的过程实际上是一个旋转加一个平移,也就是刚体运动(旋转+平移)

解决标定的问题。


对于转换中的旋转,用欧拉角可以直观的进行理解,但是如果工程中用的话,可能会出现万向锁的问题,如何理解万向锁,可以参考下面的视频。

 【无伤理解欧拉角中的“万向死锁”现象】百度安全验证

那么我们一般不用欧拉角,我们用四元数或其他表示方法。


旋转向量(旋转轴+旋转角):方向与旋转轴一致,长度等于旋转角。

转角 \theta =\arccos \frac{tr(R)-1}{2}

转轴 :旋转轴上的向量在旋转后不发生改变,说明Rn = n。那么,转轴是矩阵R特征值1对应的特征向量。

要把书后的实践和课后题写了。


第四讲 李群与李代数

介绍了对刚体运动(位姿们)的估计和优化。我们把这个构建成一个优化问题,求解最优的R,t,使得误差最小化。


李群和李代数是可以对应的,每个李群的元素都可以找到一个李代数的元素对应。但是可能存在多个李代数的元素,对应到同一个李群。对于旋转角\theta,我们知道多转360° 和没有转是一样的。如果我们把角度固定在[-π,π]之间,那么李群和李代数元素是一一对应的。

我可以理解为,李群和李代数就是一个个位姿


\mathbf{SO}(3) 和  \mathfrak{so}(3) 有三个自由度,表示三维旋转。

\mathrm{SE}(3)  和 \boldsymbol{\mathfrak{se}}(3) 有六个自由度,表示三维变换。三维变换是三个方向上的平移加三维旋转。


李代数求导与扰动模型

BCH公式:可以用来描述李群乘法与李代数加法之间的关系。为之后李代数上做微积分提供了理论基础。

我现在要估计我的位姿T准不准,我想让实际的数据与观测数据间的误差尽可能小,来寻找一个最优的T。我们构建的目标函数J是一个关于位姿T的函数。我们经常会构建与位姿有关的函数,然后讨论该函数关于位姿的导数,以调整当前的估计值。

李代数求导结果中有6阶的雅可比矩阵,不好算,所以我们选择更实用的扰动模型。

所以,我们求导结束之后得到的结果是啥呢????我们最终得到我最可能的位姿T了吗?

第五讲 相机与图像

内外参
内参是相机本身的,由针孔模型和畸变模型决定。描述把三维物体投射到二维平面的投影过程
外参是相机的R和t,外参会随着相机运动发生改变,也就是slam待估计中的目标,代表机器人的轨迹。外参也有时解释成相机坐标系到机器人本体坐标系之间的转换,描述“相机安装在什么地方”

去镜头产生的畸变

单目成像原理

实践部分:

opencv

去畸变


 6.非线性优化

以现有的观测结果,估计现在最可能的状态。


特征点法和光流法是视觉slam独有的,可以暂时跳过。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐