提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
# 激光slam学习笔记1
前言
提示:这里可以添加本文要记录的大概内容:
bz学习slam应该有半年左右了,刚开始阅读高博的14讲,读了几遍发现还是没有理解和记住什么知识点,期间在B站上学习过一点ros的课程,没有跟着动手去做,好像也没学习到什么,后来开始阅读经典的激光slam源码,loam/lego loam/a loam,gmapping和cartographer看过一点点。后来没有耐心去看就放弃了,之后又阅读任佬的文章以及代码学习,发现自己好像还是对于整个slam的过程不怎么熟悉,故决定还是要基于slam的经典框架进行学习,对于每个框架逐个击破。
提示:以下是本篇文章正文内容,下面案例可供参考
一、SLAM是什么?
SLAM主要用于解决移动机器人在未知环境中运行时定位导航与地图构建的问题。SLAM更像是一个概念而不是一个算法。
这里说的同步定位和地图构建,其中的定位是指机器人对自身的定位,包括当前的位姿(位置和姿态)。地图构建是对周围环境的的重建,一般是3D环境。同步定位和建图是同步进行的,没有先后顺序。这里就存在一个先有鸡还是现有蛋的问题。
二、SLAM基本框架
一个完整的SLAM系统分为:传感器数据处理、前端视觉里程计、后端优化、建图和回环检测。
传感器数据模块中一般包含如下几个步骤:
1.Sensor data的的接收
2.多传感器数据同步;
3.传感器数据预处理(无效值去除、序列检查、点云遮挡点与平行点去除、坐标系处理,etc);
4.点云去畸变处理(运动畸变,重力对齐,etc);
前端(里程计):
主要用于不同时刻间移动目标相对位置的估算。包括特征匹配、直接配准等算法的应用。
后端(非线性优化)
主要用于优化视觉里程计带来的累计误差。包括滤波器、图优化等算法应用。
建图:用于三维地图构建。
回环检测:主要用于空间累积误差消除
总结
本文仅仅是对SLAM基本框架的一个概述,SLAM五大模块中包含着许许多多的内容,具体内容我会在学习的过程中进行更新,文章仅仅是为了自己的学习而记录的笔记。
文章参考:
https://blog.csdn.net/jiankangyq/article/details/125438325?spm=1001.2014.3001.5502
https://zhuanlan.zhihu.com/p/501102444
https://blog.csdn.net/YOULANSHENGMENG/article/details/125046501