视觉Slam理论篇 (一) Slam概述

一、定义

slamslamSlam是同时定位与地图构建(Simultaneous Localization and Mapping)的简称,搭载特定传感器的主体(机器人、无人机、无人车、XR眼镜等)在未知环境中从一个未知位置开始移动,在移动过程中根据位置和地图进行自身定位(位姿估计),同时在自身定位的基础上建造增量式地图。
而视觉slam (visual-slam),搭载的传感器是相机,通过一张张连续的图像推断相机的位姿变化和周围环境情况。由于各种噪声(传感器、环境等)造成的不确定性,为了避免误差累积,需要不断进行数据优化。

二、经典框架

视觉slam的经典框架:
在这里插入图片描述

1、传感器信息读取

主要是相机传感器,包括单目、双目、RGBD等,有时还包括惯性传感器(IMU:陀螺仪+加速度传感器),对这些传感器的信息进行读取和预处理

2、前端视觉里程计(Visual Odometry,VO)

根据传感器的信息估算相邻图像间相机的运动,以及局部地图的构建,VO又称为前端(Front End)。VO只有简单的位姿估计功能,不具备定位、导航、交互等复杂功能,只能存储局部状态。

3、后端优化(Optimization)

后端(Back End)接受VO测量的相机位姿及回环检测的信息,并对他们进行优化,得到一个全局一直的轨迹和地图,简单来说就是用来减小累积误差。后端优化又分为滤波(KF、EKF等)和非线性优化(BA和图优化)。

4、回环检测(Loop Closure Detection)

回环用来判断机器人是否达到过先前的位置,如果检测到回环则发送给后端处理,是减小累积误差的关键。回环监测的方法包括随机检测、基于里程计的几何关系、基于外观的几何关系,而随着机器学习的发展,回环检测算法将会有进一步完善,比如直接从图像计算采集时刻相机的位姿来检测回环。

5、建图(Mapping)

根据估计的轨迹建立相应的地图,来完成定位、导航、避障、交互等任务

三、知识体系

Slam的知识体系十分庞大,涉及的学科和实践能力种类多并需要有一定深度,其中数学原理和C++编程更是理解slam理论和完成实践的难点和关键。

1、数学知识

①矩阵:
四则运算、求逆、反对称矩阵、矩阵分解(SVD、QR、Cholesky)
②李群和李代数:
指数对数映射、李代数求导、扰动模型
③非线性优化:
最速下降法、牛顿法、高斯牛顿法、LM算法、Dog-Leg算法、BA等

2、编程

①Linux操作
②C++基础
C++语法、cmake(编译)、Kdevelop(开发环境)
③第三方库
OpenCV(计算机视觉)
Eigen(几何变换)
Sophus(李代数)
Ceres(非线性优化)
G2o(图优化)
OpenGL(计算机图形学)

3、文档编辑

Gvim、vim等

4、计算机视觉

传感器、相机、特征点、多视角几何等,如下图所示,图源计算机视觉life公众号。
在这里插入图片描述

5、知识树

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值