读书笔记
文章目录
- 1. 经典视觉SLAM框架
- 2. 数学表述
- 2.1 运动方程
- 2.2 观测方程
- 2.3 问题抽象
1. 经典视觉SLAM框架
- 传感器信息读取:相机图像、IMU等多源数据;
- 前端视觉里程计(Visual Odometry,VO):估计相机的相对运动,生成局部地图,VO又称为前端(Front End);
- 后端非线性优化(Optimization):接收不同时刻VO测量的相机位姿、回环检测信息,进行联合优化,得到全局一致的轨迹和地图,又称为后端(Back End);
- 回环检测(Loop Closure Detection):判断机器人是否到达过先前的位置,若检测到回环,则把信息交由后端处理(对VO轨迹产生的累积漂移(Accumulating Drift)误差进行校正);
- 建图(Mapping):根据估计的轨迹,建立与任务要求对应的地图。
SLAM中地图的形式主要分为度量地图和拓扑地图两种:
- 度量地图(Metric Map):强调精确表示地图中物体的位置关系,通常用稀疏(Sparse)与稠密(Dense)对其分类。选择一部分具有代表意义的物体称为路标(Landmark)(特征点、点云?);
- 拓扑地图(Topological Map):强调地图元素之间的关系,它是一个图(Graph),由节点和边组成,只考虑节点间的连通性。
2. 数学表述
对于由相机和各类传感器如IMU组成的机器人来说,其在环境中的运动数据可通过两个途径获得:①由传感器数据估计,称为运动;②由相机图像数据估计,称为观测。为了对这两个过程进行数学表述,做如下定义:
- 在机器人的连续时间运动内取离散时刻 t = 1 , ⋯ , K t=1, \cdots, K t=1,⋯,K;
- 用 x x x 表示机器人自身位置,则其各时刻位置记为 x 1 , ⋯ , x K x_1, \cdots, x_K x1,⋯,xK;
- N N N个路标点表示为 y 1 , ⋯ , y N y_1, \cdots, y_N y1,⋯,yN;
分别用运动方程 f ( ⋅ ) f(\cdot) f(⋅) 和观测方程 h ( ⋅ ) h(\cdot) h(⋅) 来描述上述两个过程,这两个函数都是一种通用方程表示,这里不用纠结其具体表达式。
2.1 运动方程
x k = f ( x k − 1 , u k , ω k ) x_k=f(x_{k-1},u_k,\omega_k) xk=f(xk−1,uk,ωk)
其中, u k u_k uk为运动传感器的输入, ω k \omega_k ωk为该过程的噪声。
2.2 观测方程
机器人在 x k x_k xk位置看到路标 y j y_j yj时,产生观测数据 z k , j z_{k,j} zk,j:
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为观测噪声。
2.3 问题抽象
上述两方程描述了最基本的SLAM问题:已知运动测量读数 u u u、传感器读数 z z z时,如何求解定位问题(估计 x x x)和建图问题(估计 y y y)?
这时,可把SLAM问题建模成一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏的状态变量。
按照运动和观测方程是否为线性、噪声是否服从高斯分布进行分类,上述状态估计问题可分为线性/非线性和高斯/非高斯系统。其中线性高斯系统(Linear Gaussian,LG)最简单,其无偏的最优估计可由卡尔曼滤波(Kalman Filter,KF)给出;而复杂的非线性非高斯系统(Non-Linear Non-Gaussian,NLNG)中,可使用扩展卡尔曼滤波器(Extended Kalman Filter,EKF)和非线性优化两大类方法求解。