在大兴和凯翔进行了一次长谈,关于以后找工作、实验室的优势以及劣势,发现没有一技之长的话那么知名可靠的私企就很难进了。在广泛地观察与询问之后,我决定将学习方向锁定在C++与SLAM上,一方面因为前后端、算法这些岗位没有学习成本,就业人口基数过大;另一方面因为SLAM结合了计算机视觉、传感器基础、后端的滤波、算法优化等,这些都还算是本科都有涉及,最后还可以和嵌入式集成开发。

  S.L.A.M.全称为Simultaneous Localization and Mapping,是以定位和建图两大技术为目标的一个研究领域。目前主流的slam技术应用为激光slam(基于激光雷达)和视觉slam(基于单/双目摄像头),实现上主要分为基于滤波 (Filter-Based) 的SLAM,和基于图优化(Graph-Based)的SLAM。归结其本质,其实就是—-State Estimation in Robotics。

SLAM做的主要是以下几件事:

传感器信息读取:在视觉SLAM中主要为相机图像信息的读取和预处理。如果是机器人中,还可能是码盘、惯性传感器等信息的读取和同步。

前端视觉里程计(Visual Odometry,VO):视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子,又称为前端(Front End)。

后端非线性优化(Optimization):后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对他们进行优化,得到全局一致的地图。由于在VO之后,又被称为后端(Back End)。

回环检测(Loop Closure Detection):回环检测机器人是否到达过先前的位置,如果检测到回环,它会把信息提供给后端进行处理。

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

  其中前端前端相当于VO(视觉里程计),研究帧与帧之间变换关系。首先提取每帧图像特征点,利用相邻帧图像,进行特征点匹配,然后利用RANSAC去除大噪声,然后进行匹配,得到一个pose信息(位置和姿态),同时可以利用IMU(Inertial measurement unit惯性测量单元)提供的姿态信息进行滤波融合后端则主要是对前端出结果进行优化,利用滤波理论(EKF、UKF、PF)、或者优化理论TORO、G2O进行树或者图的优化。最终得到最优的位姿估计。
  后端这边难点比较多,涉及到的数学知识也比较多,总的来说大家已经慢慢抛弃传统的滤波理论走向图优化去了。因为基于滤波的理论,滤波器稳度增长太快,这对于需要频繁求逆的EKF(扩展卡尔曼滤波器),PF压力很大。而基于图的SLAM,通常以keyframe(关键帧)为基础,建立多个节点和节点之间的相对变换关系,比如仿射变换矩阵,并不断地进行关键节点的维护,保证图的容量,在保证精度的同时,降低了计算量。

SLAM十四讲理论部分主要分为以下几个部分:

第三讲 三维空间的刚体运动
![四元数的可视化:]https://www.bilibili.com/video/BV1SW411y7W1/?spm_id_from=333.999.0.0&vd_source=293eb9377444f6b649cc1019a16b1a8a
![欧拉角万向死锁现象:]https://www.bilibili.com/video/BV1Nr4y1j7kn/?spm_id_from=333.999.0.0

第四讲 李群和李代数

第五讲 相机与图像

第六讲 非线性优化