- ref: 《视觉SLAM十四讲从理论到实践 第2版》
2.1视觉SLAM
- 单目相机
- 通过视差得知物体的相对远近
- 尺度不确定性(Scale Ambiguity)
- 双目相机
- 极几何推算距离
- 计算量大,需要GPU和FPGA等加速
- 深度相机
- 物理测量距离,节省算力
- 范围窄,噪声大,视野小,易受日光干扰,无法测量透射材质
2.2经典视觉SLAM框架
- 传感器信息读取:
- 相机图像(编码器,IMU)信息读取和预处理
- 前端视觉里程计 Visual Odometry:
- 估算相邻图像间相机的运动和局部地图
- 计算机视觉, 图像特征提取匹配
- 后端(非线性)优化 optimization:
- 接受不同时刻视觉里程计相机位姿 & 回环检测信息, 处理噪声问题
- 优化得全局一致的轨迹 & 地图
- 滤波与非线性优化
- 回环检测 Loop closure:
- 判断机器人是否到达过先前位置
- 利用图像间的相似性
- 建图 mapping
- 度量地图 Metric Map: 表示地图中物体位置关系
- 稀疏 Sparse: 抽象路标组成, 忽略非路标, 用于定位
- 稠密 Dense: 重建所有, 用于导航, 小方块/小格子
- 拓扑地图 Topological Map: 节点与边组成, 仅考虑连通性
- 度量地图 Metric Map: 表示地图中物体位置关系
2.3数学建模
- t = 1... K t=1 ... K t=1...K 离散时刻中发生的事件
- x 1 . . . x K x_1 ... x_K x1...xK 各时刻的位置
- y 1 . . . y N y_1 ... y_N y1...yN 路标点
- u k u_k uk 运动传感器的读数/输入
- w k w_k wk 噪声
- O \mathcal{O} O 记录k时刻观察到j路标的集合
建模->状态估计问题
- 运动方程 x k = f ( x k − 1 , u k , w k ) , k = 1... K x_k=f(x_{k-1},u_k,w_k), k=1...K xk=f(xk−1,uk,wk),k=1...K
- 观测方程 z k , j = h ( y j , x k , v k , j ) , ( k , j ) ∈ O z_{k,j}=h(y_j,x_k,v_{k,j}), (k,j)\in\mathcal{O} zk,j=h(yj,xk,vk,j),(k,j)∈O
分类:
- 线性/非线性系统: 运动,观测方程是否为线性
- 高斯/非高斯系统: 噪声是否服从高斯分布
- 线性高斯LG系统->卡尔曼滤波KF得出无偏最优估计
- 非线性非高斯NLNG系统->扩展卡尔曼EKF+非线性优化求解