CH2 初识SLAM
目录:
内容简述:
1.SLAM框架的简要理解
2.Linux基础与cmake使用
学习笔记
相关概念
-
机器人能够在环境中较为自由的行走至少需要两个功能:定位 建图
在感知方面,机器人要“内外兼修”,要知道自身状态(定位)也要了解外在环境(建图)
-
传感器分为环境传感器和本体携带的传感器
环境传感器:张贴的二维码、导轨等。能够直接测量到机器人的位置信息
本体携带的传感器:激光传感器、相机、轮式编码器、惯性测量单元(IMU)等。测量到的一般是间接的物理量而不是直接的位置数据。需要通过一些手段推算出自己的位置。 -
按照相机的工作方式将相机分为三类:单目(Monocular)、双目(stereo)、深度相机(RGB-D)
单目相机:需要移动才能估计其运动和距离。具有尺度不确定性。
双目相机:视差的计算非常消耗计算资源。
深度相机:红外结构光,物理上测量距离。主要用于室内。
经典SLAM框架
-
视觉里程计
只计算相邻图像间的相机运动,像一种只有很短时间记忆的动物。与计算机视觉研究领域较为相关。造成漂移。
-
后端优化
主要指处理噪声的问题。如何从带有噪声的数据中估计整个系统的状态,以及这个状态估计的不确定性有多——最大后验概率估计(MAP)。与滤波和非线性优化算法较为相关。
-
回环检测
判断图片间的相似性,识别曾到达过的场景,解决漂移问题。
-
建图
度量地图:精确表示地图中物体的位置关系。按稠密和稀疏分类,稀疏地图只关注路标;稠密地图按分辨率由许多小块组成,每个小块有占据、空闲、未知三个状态。
拓扑地图:是一个图(graph)由节点和边组成。
SLAM问题的数学表述
{ x k = f ( x k − 1 , u k , w k ) z k , j = h ( y j , x k , v k . j ) \begin{cases} x_k=f(x_{k-1},u_k,w_k)\\ z_{k,j}=h(y_j,x_k,v_{k.j})\\ \end{cases} {xk=f(xk−1,uk,wk)zk,j=h(yj,xk,vk.j)
运动方程:
x
k
(
k
时
刻
位
置
)
=
f
(
x
k
−
1
(
前
一
时
刻
位
置
)
,
u
k
(
运
动
传
感
器
读
数
)
,
w
k
(
噪
声
)
)
x_k(k时刻位置)=f(x_{k-1}(前一时刻位置),u_k(运动传感器读数),w_k(噪声))
xk(k时刻位置)=f(xk−1(前一时刻位置),uk(运动传感器读数),wk(噪声))
已知前一时刻位置和运动传感器读数求当前时刻位置
观测方程:
z
k
,
j
(
观
测
数
据
在
位
置
x
k
看
到
路
标
y
j
)
=
h
(
y
j
(
路
标
)
,
x
k
(
位
置
)
,
v
k
.
j
(
噪
声
)
)
z_{k,j}(观测数据 在位置x_k看到路标y_j)=h(y_j(路标),x_k(位置),v_{k.j}(噪声))
zk,j(观测数据在位置xk看到路标yj)=h(yj(路标),xk(位置),vk.j(噪声))
已知观测数据和当前位置求路标
将SLAM建模成了一个状态估计问题