视觉SLAM十四讲学习(初识SLAM)

1. 常见传感器的分类与特点

1.1 激光雷达(LiDAR)
  • 分类
    在这里插入图片描述

  • 机械式激光雷达

    • 具有体积大、成本较高和装配难的特点,它通过旋转实现横向360度的覆盖面,通过内部镜片实现垂直角度的覆盖面,同比有着更耐用稳定的特点,所以现在无人驾驶和移动机器人大多采用这种类型,雷达不停的旋转以完成横向扫描,通过增加激光束来实现纵向宽泛的扫描。虽然机械式激光雷达满足了360度全视野覆盖,但受到激光束角度和数量的限制,要增加分辨率和有效感知距离只能以增加激光模块的方式增加线束,这就导致机械式激光雷达在发展的过程中体积不断增大,并且在装调过程中为所有激光器准直的难度也直线上升
  • 混合半固态激光雷达

    • 按照扫描方式又分为转镜式、棱镜式和 MEMS(Micro-Electro-Mechanical System,微机电系统)式:
      (1)转镜分为一维转镜和二维转镜。一维转镜通过旋转的多面体反射镜,将激光反射到不同的方向;二维转镜顾名思义内部集成了两个转镜,一个多边棱镜负责横向旋转,一个负责纵向翻转,实现一束激光包揽横纵双向扫描。转镜激光雷达体积小、成本低,与机械式激光雷达效果一致,但机械频率也很高,在寿命上不够理想
      (2)棱镜激光雷达也称为双楔形棱镜激光雷达,内部包括两个楔形棱镜,激光在通过第一个楔形棱镜后发生一次偏转,通过第二个楔形棱镜后再一次发生偏转,控制两面棱镜的相对转速便可以控制激光束的扫描形态
      (3)MEMS 式将机械机构进行微型化、电子化的设计,将原本体积较大的机械结构通过微电子工艺集成在硅基芯片上。主要是通过MEMS微镜来实现垂直方面的一维扫描,整机360度水平旋转来完成水平扫描,而其光源是采用光纤激光器,这主要是由于905纳米的管子重频做不高,重频一高平均功率就会太大,会影响激光管的寿命。MEMS式激光雷达并没有完全消除内部机械结构,而是将机械结构微型化,扫描单元变成了MEMS微振镜,结构比较脆弱可靠性低
  • 全固态激光雷达

    • 是指激光雷达中没有机械式旋转装置,而是将机械式激光雷达集成到一块芯片上,因此体积更小、性能更好、寿命更长,目前主要有两种技术:
      (1)基于OPA(Optical Phased Array,光学相控阵)技术
      该技术主要是采用多个光源组成阵列,通过控制各光源发光时间差,合成具有特定方向的主光束,然后再加以控制,主光束便可以实现对不同方向的扫描。基于OPA技术具有扫描速度快、精度高、可控性好、体积小等优点,缺点是易形成旁瓣,影响光束作用距离和角分辨率,同时生产难度高
      (2)基于 Flash 快闪技术
      该技术不像MEMS或OPA的方案会去进行扫描,而是短时间内直接发射出一大片覆盖探测区域的激光,利用光阵构建图像,再以高度灵敏的接收器,来完成对环境周围图像的绘制。基于Flash快闪技术没有了转动与镜片磨损,相对更为稳定,不过缺陷也很明显,比如:探测距离较近、对处理器要求较高以及对应的成本较高
  • 机械式和固态式哪个更适合定位或建图?
    机械旋转式雷达由于拥有360度的视场,激光点空间分布均匀,有利于配准算法收敛,故定位效果好;固态激光雷达如livox,具有非重复扫描特性,相比与机械式雷达更容易构建稠密三维点云地图,故建图效果好
  • 什么是激光雷达的线数?
    对于机械旋转式和一维转镜式的激光雷达来说,有几组激光收发模块,垂直方向上就有几条线,被称为线数。这种情况下,线数就等同于激光雷达内部激光器的数量
  • 优缺点
    • 优点:测距精度高、测距范围远、对温度和光照的适应性很好
    • 缺点:价格贵,在长廊、隧道及空旷场所等存在结构退化问题,受雨/雪/雾等天气影响
1.2 相机
  • 分类

    • 单目相机(深度不可观测)、双目相机(基于基线测距)、深度相机(也称RGB-D相机,TOF/结构光类型)、全景相机(鱼眼)、事件相机(只要有一个像素值变化,就会回传一个事件,响应速度非常快)、红外相机(晚上比较好用,主要用于军工航天)
    • 目前,有两种类型的相机,CCD和CMOS。CCD具有复杂的制造工艺、更高的量化效率、更低的噪声、高动态范围和低光条件下的高图像质量。与CCD传感器相比,CMOS牺牲了一些性能以降低成本。它们之间的差异将更大,预计CMOS将取代CCD
  • 优缺点

    • 优点:对环境细节信息提取能力很强、没有累计误差、成本较低,
    • 缺点:光照影响太大、不适于高速运动场景、无法应对纹理缺失环境(白墙)
1.3 毫米波雷达(millimeter-wave radar)
  • 毫米波雷达,是工作在毫米波波段(millimeter wave )探测的雷达。通常毫米波是指30~300GHz(千兆赫兹)频域(波长为1~10mm)的。主要用来探测距离、角度以及通过不同时间的距离计算相对速度

  • 分类

    • 远距离雷达(LRR)是用来实现自动巡航(ACC)
    • 中距离雷达(MRR)用来实现侧向来车报警和车道变道辅助
    • 近距离雷达(SRR)则是用来实现停车辅助、障碍物和行人检测

    目前,毫米波雷达的主流频段包括24GHZ(中短距离)、60GHZ、77GHZ(远距离)和79GHZ。最流行的是77GHZ,而60GHZ是仅在日本采用的频段,24GHZ频段将在未来逐步废除,79GHZ波段雷达具有更高的距离、速度和角度分辨率,并将成为未来车载雷达的主流频带

  • 优缺点

    • 优点:穿透力强(不受烟、雾、灰尘影响)、抗干扰性强性能稳定、价格较低
    • 缺点:分辨率和精度跟不上,受大气衰减和吸收作用的影响明显、无法识别物体颜色、视场角较小(需要多个雷达组合使用)
1.4 超声波雷达
  • 分类
    在这里插入图片描述

  • 优缺点

    • 优点:在介质中传播的距离比较远、穿透性强、成本低
    • 缺点:容易受天气情况影响、超声波散射角度大(不利于较远距离的回收信号传播)、对温度敏感(激光雷达和毫米波雷达波速为光速,而超声波雷达波速和温度有关)
1.5 IMU(Inertial Measurement Unit,惯性测量单元)
  • 主要用来检测和测量加速度与旋转运动的传感器。原理是采用惯性定律实现的,从超小型的MEMS(Micro-Electro-Mechanical System,微机电系统)传感器,到测量精度非常高的激光陀螺,无论尺寸只有几毫米的MEMS传感器,还是直径近半米的光纤器件采用的都是这一原理

  • 分类

    • (1)6轴:3轴(XYZ)加速度计+ 3轴(XYZ)陀螺仪(gyroscope,角速度传感器)
      • IMU:可以输出加速度和角速度,但不可输出姿态角等其他信息
      • VRU:垂直参考单元,IMU的基础上内置姿态解算算法,可以输出姿态信息
    • (2)9轴:6轴 + 3轴(XYZ)磁力计
      • AHRS:航姿参考系统,基于VRU改进,可解算被测物体全姿态,包括绝对的航向角
  • 优缺点

    • 优点:输出频率较高(能够捕捉剧烈变化的运动)、效果稳定(可以从容应对:环境光照变化、运动模糊、纹理缺失和结构退化等)
    • 缺点:IMU 获取的测量通过积分得到(存在误差累积)、存在bias(零偏,紧耦合的LIO或者VIO都会实时估计IMU的零偏)
1.6 GNSS 与 RTK
  • GNSS(Global Navigation Satellite System,全球导航卫星系统)
    • 测量出已知位置的卫星到地面GPS接收器之间的距离,然后接收器通过与至少4颗卫星通讯,计算与这些卫星间的距离,就能确定其在地球上的具体位置。普通GPS的定位精度 ≥ 1米,另外,GPS无法支持精准定高,误差可能高达十几米,室内信号差
  • RTK(Real Time Kinematic,实时动态载波相位差分技术)
    • 基于载波相位差分技术,是实时处理两个测量站载波相位观测量的差分方法,将基准站采集的载波相位发给用户接收机,进行求差解算坐标,这是一种新的常用的卫星定位测量方法。在RTK作业模式下,基站采集卫星数据,并通过数据链将其观测值和站点坐标信息一起传送给移动站,而移动站通过对所采集到的卫星数据和接收到的数据链进行实时载波相位差分处理(历时不足一秒),得出厘米级定位结果
1.7 UWB
  • UWB(Ultra-Wide Band,超宽带)技术是一种无线载波通信技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽

  • 优缺点

    • 优点:定位精度高(10cm)、工作时间短(设备功耗低)、对其他设备干扰小
    • 缺点:不能有遮挡无线电发射的障碍物;需要有完善的定位网络,而且在任何一个定位点上都需要有3个定位基站的支持,UWB定位算法是基于三点定位的,如果基站的数量降低会大大的影响定位的精度,因此造价较高
1.8 编码器/轮速计
  • 编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备,编码器把角位移(码盘)或直线位移(码尺)转换成电信号。轮速计就是安装在底盘驱动电机、驱动轴或者轮子上的编码器,用于测量电机、轮子转动速度和位置的传感器,根据单位时间的脉冲个数或者单位脉冲的时间差即可计算出轮子单位时间的转动速度,从而计算机器人所走过的距离与角度

  • 分类

    • (1)模拟量编码器
      旋转变压器:用来测量旋转物体的转轴角位移和角速度的电磁式传感器
    • (2)数字编码器
      增量式编码器:就是每转过单位的角度就发出一个脉冲信号
      绝对式编码器:每一个位置对应一个确定的数字码,因此它的数值只与测量的起始和终止位置有关,而与测量的中间过程无关
  • 优缺点

    • 优点:成本低,使用方便,精度高,速度反馈准确、及时
    • 缺点:对于非电机自带的传感器,安装较为麻烦,机械设计要求较高

2.经典视觉 SLAM 框架

在这里插入图片描述

  • 整个视觉 SLAM 流程包括以下步骤
    • 传感器信息读取
      • 在视觉 SLAM 中主要为相机图像信息的读取和预处理。如果是在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。
    • 前端视觉里程计 (Visual Odometry,VO)
      • 视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子。VO又称为前端 (Front End)
    • 后端(非线性)优化(Optimization)
      • 后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于接在 VO 之后又称为后端 (Back End)
    • 回环检测 (Loop Closure Detection)
      • 回环检测判断机器人是否到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
    • 建图 (Mapping)
      • 它根据估计的轨迹,建立与任务要求对应的地图
2.1 视觉里程计
  • 视觉里程计能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构。称它为“里程计”是因为它和实际的里程计一样,只计算相邻时刻的运动,而和过去的信息没有关联

  • 假定我们已有了一个视觉里程计,估计了两张图像间的相机运动

    • 那么,一方面,只要把相邻时刻的运动“串”起来,就构成了机器人的运动轨迹,从而解决了定位问题
    • 另一方面我们根据每个时刻的相机位置,计算出各像素对应的空间点的位置,就得到了地图
  • 然而,仅通过视觉里程计来估计轨迹,不可避免的出现累计漂移

    • 这是因为每次估计都带有一定的误差,而由于里程计的工作方式,先前时刻的误差将会传递到下一时刻,导致经过一段时间之后,估计的轨迹将不再准确
    • 漂移将导致我们无法建立一致的地图,为了解决漂移问题,我们还需要两种技术:后端优化和回环检测。回环检测负责把机器人回到原始位置的事情检测出来,而后端优化则根据该信息校正整个轨迹的形状
2.2 后端优化
  • 笼统地说,后端优化主要指处理 SLAM 过程中的噪声问题。现实中,再精确的传感器也带有一定的噪声,除了解决“如何从图像估计出相机运动”,我们还要关心这个估计带有多大的噪声,这些噪声是如何从上一时刻传递到下一时刻的,而我们又对当前的估计有多大的自信
  • 后端优化要考虑的问题:就是如何从这些带有噪声的数据中估计整个系统的状态,以及这个状态估计的不确定性有多大一一这称为最大后验概率估计(Maximum-a-Posteriori,MAP)。这里的状态既包括机器人自身的轨迹,也包含地图
  • 早期的 SLAM 问题是一个状态估计问题——正是后端优化要解决的
  • SLAM 问题的本质:对运动主体自身和周围环境空间不确定性的估计。为了解决 SLAM 问题,我们需要状态估计理论,把定位和建图的不确定性表达出来,然后采用滤波器或非线性优化,估计状态的均值和不确定性(方差)。
2.3 回环检测
  • 回环检测,又称闭环检测,主要解决位置估计随时间漂移的问题
  • 地图存在的主要意义是让机器人知晓自己到过的地方。为了实现回环检测,我们需要让机器人具有识别到过的场景的能力

在检测到回环之后,我们会把“ A 与 B 是同一个点”这样的信息告诉后端优化算法。然后后端根据这些新的信息,把轨迹和地图调整到符合回环检测结果的样子。这样,如果我们有充分而且正确的回环检测,则可以消除累积误差,得到全局一致的轨迹和地图

2.4 建图
  • 建图是指构建地图的过程。地图是对环境的描述,但这个描述并不是固定的,需要视 SLAM 的应用而定
    在这里插入图片描述
  • 地图分类
    • 度量地图
      • 稀疏地图
        • 稀疏地图就是由路标(Landmark)组成的地图
      • 稠密地图
        • 二维占据栅格(grid)
        • 三维方块(voxel)
    • 拓扑地图
      • 拓扑地图是一个图(Graph),由节点和边组成,只考虑节点间的连通性,例如只关注 A、B 点是连通的,而不考虑如何从 A 点到达 B点

3. SLAM 问题的数学表述

  • 两个方程

    • 运动方程(提供对状态x的先验xk-1,正向推理)
      在这里插入图片描述

    其中x位姿,k-1/k时刻,u控制器输入/运动测量,w噪声

    • 观测方程(提供对状态x的后验xk,由果溯因)
      在这里插入图片描述

    其中z传感器读数,y路标,j路标编号,v噪声

  • SLAM 问题

    • 已知量
      上一时刻位姿 xk-1,控制器输入/运动测量 uk,当前时刻对路标 j 的观测 zk,j
    • 估计量
      当前时刻机器人位姿 xk(定位),路标 j 的位置yj(建图)

4. Linux 基本命令

  • Linux 和 Windows 区别

    • Windows 属于单用户、多任务
    • Linux 属于多用户、多任务
  • 目录结构
    在这里插入图片描述

        /bin:
            bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令
        /boot:
            这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
        /dev :
            dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的
        /etc:
            etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录
        /home:
            用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve
        /lib:
            lib 是 Library() 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库
        /media:
            linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下
        /mnt:
            系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了
        /opt:
            opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的
        /proc:
            proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
        /root:
            该目录为系统管理员,也称作超级权限者的用户主目录
        /sbin:
            s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序
        /selinux:
            这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的
        /srv:
            该目录存放一些服务启动之后需要提取的数据
        /sys:
            这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 
        /tmp:
            tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的
        /usr:
            usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录
        /usr/bin:
            系统用户使用的应用程序
        /usr/sbin:
            超级用户使用的比较高级的管理程序和系统守护程序
        /usr/src:
            内核源代码默认的放置目录
        /var:
            var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件
        /run:
            是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
    
  • 常用指令

    $ pwd    # Print current working directory,打印当前终端所在的目录
    $ ls     # List directory contents,列出当前工作目录下的所有文件/文件夹的名称
        $ ls ./        #表示当前目录下
        $ ls ../       #上一级目录下
        $ ls /home     # 绝对路径
    $ cd     # Change directory,切换当前的工作目录
        $ cd ~              # 直接进入当前用户的家目录下
        $ cd ..             # 进入到上级目录下
        $ cd ../local       # 进入到上级目录中的local目录下
        $ cd /usr/local     # 进入到/usr/local目录下
    $ mkdir    # Make directories,创建目录
        $ mkdir myfolder      # 在当前路径下创建出目录“myfolder”
        $ mkdir -p ~/a/b/c    # 一次性创建多层不存在的目录 ~/a/b/c 
        $ mkdir a b c         # 在当前目录分别创建a、b、c三个文件夹
    $ touch    # 创建新文件
        $ touch linux.txt            # 在当前目录下创建linux.txt文件
        $ touch ../linux             # 在上级目录下创建linux文件
        $ touch /home/bing/myfile    # 在/home/bing/目录下创建myfile文件
        $ touch file file.txt        # 在当前目录下创建file file.txt两个文件
    $ rm    # 删除文件/目录
        $ rm myfile               # 删除当前路径下的myfile文件
        $ rm /usr/myfile          # 删除/usr路径下的myfile文件
        $ rm -rf myfolder         # 删除当前路径下的myfolder文件夹
        $ rm -rf /usr/myfolder    # 删除/usr路径下的myfolder文件夹
    $ cp    # 复制文件/文件夹到指定的位置:cp [被复制的文件路径] [文件被复制到的路径]
        $ cp /home/bing/myfile ./        # cp命令来复制一个文件
        $ cp -r /home/bing/myfolder /    # 复制/home/bing/myfolder文件夹到根目录/下 
    $ mv    # 移动文件到新的位置,或者重命名文件:mv [需要移动的文件路径] [需要保存的位置路径]
        $ mv myfile /myfile        # mv [需要移动的文件路径] [需要保存的位置路径]
        $ mv myfolder /myfolder    # 移动当前目录下myfolder文件夹到根目录/下
        $ mv myfile myfile007      # 移动当前目录下myfile到根目录/下,并重命名为myfile007
    $ man    # 包含了Linux中全部命令手册
        $ man ls    # 查看ls命令的手册
    $ reboot      # 重启linux系统
    $ shutdown    # 关机:shut -h [时间]
        $ shutdown -h now    # 立即关机
    
  • 文件编辑器

    • vim
      在这里插入图片描述

    • gedit

    • nano

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值