SLAM学习(1-2章节)
去年12月份学习SLAM相关内容,到今年三月份,将SLAM的相关内容学习了一边,现在开始写自己的博客,主要是为了复习以下相关的学习内容。相关的学习资料可以在以下git仓库上找到,SLAM讲个人觉得确实有些地方没有详细展开,本人在学习过程中查询了一些资料,将一些内容补充完整了!
github仓库https://github.com/starnetB/CV_learning
以上仓库里面还有PCL点云处理的相关学习资料,可以有助于点云处理的学习。此外还会同步更新pytorch与神经网络的一些相关内容。
第一章 风格约定
这一章没啥好说的个人觉得,只是本章节的一些俗称约定。
第二章 数学基础与框架
首先是通过小萝卜的例子,介绍了两种导航的方法:
- 通过标签或二维码来进行导航
- 通过自带传感器的方式来进行导航
1.自带的传感包括以下种类:
相对于第一种,第二种的优势在于:
- 对环境没有很高的要求,从而可以使得方案适用于未知环境,因此携带式传感器是SLAM发展的正统,也是发展的主要方向。
常用设备相机
个人觉得深度相机,额有点贵,最近本人项目都涉及realscene相机,随随便便一个就得几千,我同事买的,深度相机几万得都有,简直了。
各种相机的优缺点分析
- 单目相机
- 感觉这种相机在三维方便,只有缺点没有优点了,因为只有RGB通道导致他失去了一个维度,也就是没有深度。虽然可以通过相机的三角测量发获取相关的深度,但毕竟是野路子,相对而言,缺陷也比较多
- 双目相机
- 这个深度是算出来的,就是消耗性能,它的优势在于室内外都可以使用
- 深度相机 RGB-D 相机
- 精度高,不需要计算资源
- 在室外,光容易涣散,不适合,一般用于室内比较多
- 我在加一条就是贵
SLAM框架简介
- 传感器信息读取
- 前端视觉里程计
- 通过相机活动,当前的位置状态,并把他们串起来,形成轨迹
- 后端优化
- 这一部分主要用来去除一些噪声和误差
- 优化机器人自身的轨迹,也包含地图数据等
- 还包含一些实时性能等
- 回环检测
- 消除累积误差
- 建图
- 度量地图
- 稀疏地图(定位等)
- 稠密地图(导航等)
- 拓扑地图
- 强调地图元素之间的关系
SLAM问题的数学表述
- 首先介绍两大方程
- 什么是运动方程,从k-1 到k时刻,小萝卜的位置x时如何变化的
- 什么时观测方程,小萝卜在k时刻出
x
k
x_k
xk?处探测到路一个路标
y
j
y_j
yj?,我们要考察如何用数学语言来描述这件事情
运动方程公式
x
k
=
f
(
x
k
?
1
,
u
k
,
w
k
)
x_k=f(x_{k-1},u_k,w_k)
xk?=f(xk?1?,uk?,wk?)
-
u
k
u_k
uk?表示运动传感器的读数
-
w
k
w_k
wk?为该过程中加入的噪声
-
x
k
x_k
xk?就是当前时刻的位置信息
观察方程
z
k
,
j
=
h
(
y
j
,
x
k
,
v
k
,
j
)
z_{k,j}=h(y_j,x_k,v_{k,j})
zk,j?=h(yj?,xk?,vk,j?)
-
v
k
,
j
v_{k,j}
vk,j?表示噪声
-
z
z
z 表示观测数据
-
y
j
y_j
yj?表示第几个路标
将以上两个模型统一以下
H
(
f
)
=
{
x
k
=
f
(
x
k
?
1
,
u
k
,
w
k
)
k
=
1
,
?
,
K
z
k
,
j
=
h
(
y
j
,
x
k
,
v
k
,
j
(
k
,
j
)
∈
O
H(f)= \left\{ \begin{matrix} x_k=f(x_{k-1},u_k,w_k)&&k=1,\cdot,K\\ z_{k,j}=h(y_j,x_k,v_{k,j}&&(k,j) \in O \end{matrix}\right.
H(f)={xk?=f(xk?1?,uk?,wk?)zk,j?=h(yj?,xk?,vk,j???k=1,?,K(k,j)∈O?
噪声处理
主要服从那种分布
- 线性/非线性和高斯/非高斯分布
- 图优化(Graph Optimization)为代表的优化技术进行状态估计
|