本文对SLAM中常见的传感器做出总结,以对SLAM输入端有一个比较全面的理解,分为相机类和非相机类
此处先给出需要的几个概念:
运动Motion:表示相机的位姿变换
结构Structure:场景中物体的远近和大小
尺度Scale:恢复的场景和真实场景相差的比例
相机按照最常用的可以分为单目相机、深度相机和双目相机;
除此之外还有全景相机和事件相机等,由于本人没深入了解过,后续再补充;
特点:结构简单、成本低
数据:3D场景在相机平面的投影
原理:需要移动相机视角,本质上基于:
①图像中的物体移动会和相机视角移动方向相反,例如:相机朝左移动,画面中的静止物体会向右移动
②根据视差判断物体距离的远近(相对),例如:近处物体移动快,远处物体移动慢,即三角化
缺点:失去了3D场景的深度信息,因此恢复出的结构只有相对大小关系,与真实情况之间相差了一个尺度!
双目相机采集同一时刻的两张照片帧数据,在恢复深度的时候由于采集信息的相机之间距离(基线Baseline)固定,即解决了尺度的问题,因为有一个确切的距离是真实尺度下的,将所有信息与该尺度对齐即可恢复真实尺度的结构。
特点:没有尺度问题;双目的探测距离与基线距离有关,基线距离越大探测深度越大,可以理解为:对于相同距离的点,基线距离越大对应的观测角越大,恢复的深度就越准确,因此自动驾驶场景下需要基线距离较大的双目相机;
数据:3D场景在左右目相机平面的投影
原理:根据左右目固定的视差,推断场景中物体的距离以获得深度;如下图所示,本质上是两个相似三角形的关系,
Δ
P
O
R
O
T
≃
Δ
P
p
p
′
\Delta PO_RO_T \simeq \Delta Ppp'
ΔPOROT≃ΔPpp′
缺点:双目相机需要准确标定,标定过程较为复杂+探测距离受到分辨率和基线距离的限制+视差计算比较耗时(计算是主要问题)
特点:硬件层面直接输出深度,不需要像双目一样计算
数据:图片+深度图(由红外结构光产生的)
原理:利用红外结构光和time of light原理,通过发射出去和接收回来的光计算距离
缺点:测量范围小,误差大,受光线影响大,无法探测透射材质等,因此主要应用在室内