SLAM

SLAM

Simultaneous Localization And Mapping, 同步定位与构图

简述

  1. Simultaneous Localization And Mapping, 同步定位与构图, 参考链接bilibili

  2. 输入

    1. 可见光视觉
    2. IMU, 用于 VR
    3. 激光雷达
    4. 声呐, 水下
  3. 应用领域

    1. 无人驾驶
    2. 虚拟现实(VR)
    3. 增强现实(AR)
    4. 无人机
    5. 自主服务机器人
  4. 算法

    1. EKF-SLAM
    2. FAST-SLAM, 需要现有常见的地图
    3. Graph-SLAM
    4. Scan matching
    5. RGTBD-SLAM
    6. ORB-SLAM
    7. LSD-SLAM
    8. LOAM, Ji Zhang
  5. 数据集

    1. KITTI

刚体运动

1. 相机位姿
  	
  	1. 平移
  	2. 旋转
  1. 3D 坐标系的平移旋转

    1. 原点的平移, 本质上就是两个坐标系原点的向量 (t)

    2. X, Y, Z 轴的旋转, 在坐标系中的同一个向量左乘一个旋转矩阵((R))得到

      1. 旋转矩阵的定义

      2. (R) 的特性

      3. 角轴/旋转向量

      另外一种表示旋转的方式

      上图中, 红色的 w 为角轴, 向量 a 绕轴 n 旋转 theta 角度之后, 变换到了向量 b, w 称之为角轴或者旋转向量, n 表示旋转的方向, theta 表示旋转的大小

      1. 旋转向量与旋转矩阵的区别

      2. 四元数

      另外一种表示旋转的方法, 在实际应用中比较广泛

      a 与 b 向量的叉乘为, a 与 b 组成的平面的法向量的方向, 而长度是 a 与 b 向量组成的平行四边形的面积, 虚部之间的关系在上面的图片中有介绍到

    3. 刚体运动表示为: (a'=Ra+t)

    4. 再高一层次, 如果遇到多次变换, 则 3 会显得复杂繁琐, 可以将平移和旋转放到一个矩阵中, 这个矩阵称之为变换矩阵 ((T)), 之后就可以在两个坐标系中通过 (a = Tb) 计算

      1. 变换矩阵

      1. 反向计算 (T)

        • 在实际应用中, 总是先得到世界坐标, 再通过计算得到相机位姿
    5. 一个集合再加上一个运算符且满足如下性质即为一个群

相机模型

  1. 相机记录的是真实世界在成像平面上的投影
  2. 在投影的过程中, 丢失了距离, 深度的信息

物理平面到像素平面

  1. 相机在拍摄图片的时候, 得到的是图像是在物理成像平面上的, 如果要得到其像素坐标(一般图像的基本单位是像素), 需要对单位进行映射

    1. P 为实际的点, P' 为成像平面上的点
    2. 以相机光心为原点的相机坐标系, 一般 Z 轴指向相机的正前方
    3. f 为 focal length, 表示焦距
    4. 通过三角形的相似公式可以得到像素平面的坐标, 但是因为是单目的, 无法得到几何信息
    5. Alpha 和 beta 表示比率, cx 和 cy 表示偏移量, 最终得到的 u 和 v 就是新的坐标系下的 P' 的坐标
    6. 最后一个公式, fx 和 fy 分别为 alpha 和 beta 与 f 混合的数
    1. 对上面的公式进行变换得到相机的内参数

      一般相机的内参数在生成之后就已经固定了, 一般来说可以将其当做已知条件, 但是如果对图片进行 resize, clip, 或者 copy 等操作可能导致内参数改变

      内参数包括

      1. 相机成像平面在 x 和 y 轴方向上到像素平面的比率
      2. 相机物理平面到像素平面的偏移量
      

      上面的内参数可以简单的理解为相机的分辨率

    2. 相机的外参数

    相机的外参数, 即相机的位姿(camera poses)

    1. 平移
    2. 旋转

双目模型

模拟人眼两只眼睛的工作

双目模型下 3D 坐标计算

  • 参考链接

特征匹配

特征点

一般角点是特征点

FAST 与 SIFT 算法十分类似

FAST 计算特征点的方法

  1. 在 4x4 的区域内选择一个像素作为中心点, 如果在该区域内的像素值 P 与中心像素点 C 的差的绝对值大于一个阈值 T, 则认为该中心点可能为角点, 只要出现连续的 N 个这样的点, 就认为该中心点为角点, 这里的计算的实质就是计算像素的差, 判断是否为边界
  2. 对原图进行多尺度变换构成图像金字塔, 在重复 1 步骤, 得到 FAST 的多尺度信息
  3. 为每一个特征点计算出质心, 一般来说, 选取一块区域, 根据该区域的零阶矩和一阶距计算出质心, 几何中心到质心的方向就是该特征点的方向, 可以定义为 theta
  4. 计算 BRIEF 描述符
    1. 用来描述一个特征点额外的信息
    2. 将每张图片中的每一个特征点的特征点领域中的随机像素进行比较, 比如选出 128 对(a, b), 每一对比较大小, 如果 a>b 则输出1, 如果 a<b 则输出0, 最后每一个特征点会得到一个 1x128 维度的向量, 对另外一张图也是如此, 每一个特征点得到一个 1x128 的向量, 比较他们的汉明距离
原文地址:https://www.cnblogs.com/megachen/p/11155749.html