经过半年学习SLAM相关知识,对SLAM系统有了一些新的认识,故回看以前的学习记录,做总结和校正。
前三讲学习笔记如下:
视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客
视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客
视觉SLAM十四讲学习笔记-第二讲-开发环境搭建_goldqiu的博客-CSDN博客
视觉SLAM十四讲学习笔记-第三讲-旋转矩阵和Eigen库_goldqiu的博客-CSDN博客
视觉SLAM十四讲学习笔记-第三讲-旋转向量、欧拉角、四元数_goldqiu的博客-CSDN博客
视觉SLAM十四讲学习笔记-第三讲-相似、仿射、射影变换和eigen程序、可视化演示_goldqiu的博客-CSDN博客
第一讲:
总结:SLAM的主要功能就是实时建图和定位,在整个机器人系统中处于感知这一部分,即机器人感知外界环境获得环境地图和自身定位。我的理解是感知分为广义的感知和狭义的感知。狭义的感知即是机器人感知物体(包括动态和静态的物体),能够分辨出物体大小、形状等,为后续相关决策提供数据。而广义的感知不只是分辨物体,还包括感知环境,同时也获得自己在环境中定位,也就是位姿信息。总而言之,广义的感知是离不开SLAM技术的,当然也离开物体感知等。
校正:作者代码有第一讲和第二讲的版本,我更多演示的是第二讲版本的代码。
https://github.com/gaoxiang12/slambook (第一版)
https://github.com/gaoxiang12/slambook2.git (第二版)
第二讲:
总结:
2. 视觉SLAM中,单目相机无法得到尺度信息,而双目相机和深度相机可以获得,但是双目相机的计算量远大于单目和深度相机。
3. 视觉SLAM流程: 传感器信息读取(相机图像信息的读取和预处理)--- 视觉里程计 (Visual Odometry, VO, 估算相邻图像间相机的运动, 以及局部地图的构建。VO 又称为前端(Front End)) --- 后端优化(Optimization , 接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化 , 得到全局一致的轨迹和地图, 称为后端(Back End)) --- 回环检测(Loop Closing, 判断机器人是否曾经到达过先前的位置。如果检测到回环,会把信息提供给后端进行处理 )--- 建图(Mapping,根据估计的轨迹,建立与任务要求对应的地图)
4. 对于建图 , 一般SLAM输出的地图是无序的点云地图, 而对于机器人来说, 进行运动规划需要的地图往往是栅格地图, 包括二维\2.5D高程\三维。
5. 在第二讲的开发环境搭建中演示了如何生成动态库和静态库,这对后面SLAM工程化很有帮助。静态库以.a作为后缀名,共享库以.so结尾。所有库都是一些函数打包后的集合,差别在于静态库每次被调用都会生成一个副本,而共享库则只有一个副本,更省空间。
校正:对于ros的开发环境,我目前推荐vscode, 里面有ros的插件支持。
goldqiu:四.开发记录之ubuntu系统安装ROS和开发环境
我的这篇文章写了vscode如何搭建ros的开发环境, 但是如何debug还没写, 我也没形成笔记。
在我看来 , clion比较适合跨平台的cmake工程,而qt比较适合跨平台的qmake工程, 做界面比较友好, vscode更适合开发ros。
第三讲:
总结: