定位
定位是让无人车知道自身确切位置的方法,这是一个美妙但是十分艰难的任务,同时也对无人驾驶车十分重要。定位不仅仅是找出自身的大概方位,而是要以10cm级别,将车感信息与高精地图信息进行比较来精确的位置寻找。
定位简介
- GPS对于无人车来说还不够精确
- 精度差
- 受信号条件影响
- 必须找到另一种方法来更准确地确定车辆在地图上的位置
- 最常用的方法是将汽车传感器所看到的内容与地图上所显示的内容进行比较
- 在车的坐标系中,汽车的前进方向始终向前,坐标系正方向始终与车头保持一致
- 车的坐标系与地图坐标系保持一致是解决定位问题的关键
GNSS RTK
三角定位
- 假设现在有一个世界地图标注了这三个地标在世界上的确切位置,且知道自身距离这三个地标的长度,那么就可以知道自身的确切位置了
GPS(全球导航卫星系统或GNSS)
- GPS的工作原理就是使用了三角定位
- 但参照物并不是地标而是卫星
- 三颗卫星再加上一颗用来定位高度的卫星,4颗卫星就可以知道自身的确切位置了。
GPS 分为三部分
- 卫星
- 在任何特定时间大约有 30 颗 GPS 卫星在外层空间运行,它们各自距离地球表面约 2 万公里
- 控制站
- 控制站用于监视和控制卫星,其主要目的是让系统保持运行并验证 GPS 广播信号的精确度
- 接收器
- GPS 接收器存在于手机、电脑、汽车、船只以及许多其他设备中
- 卫星
GPS 接收器实际上并不直接探测你与卫星之间的距离
- 距离为光速乘以信号传播的时间
- 减少误差
- 每颗卫星都配备了高精确度的原子钟
- 实时运动定位(RTK)
- 高楼和其他障碍物可能阻挡 GPS 信号
- 距离为光速乘以信号传播的时间
惯性导航
根据汽车的传感器得到的物理信息来计算汽车在任何时间点的车速和位置
- 加速度的测量
- 三轴加速度计传感器
- 三种不同类型的三轴加速度计
- 采用不同的方法
- 但共同的目标是精确测量加速度
- 陀螺仪传感器
- 三轴加速度计传感器
- 惯性测量单元 IMU
- 刷新频率高,提供实时信息
- 缺点
- 其运动误差随时间增加而增加
- 结合 GPS 和 IMU 来定位汽车
激光雷达定位
- 过点云匹配来对汽车进行定位
- 激光雷达传感器的检测数据与预先存在的高精地图之间匹配
- 计算出在地图上的精确位置
- 点云匹配算法,对两次点云扫描进行匹配
- 迭代最近点(ICP)
- 激光雷达传感器的检测数据与预先存在的高精地图之间匹配
- 滤波算法是另一种LiDAR 定位方法
- 滤波算法可消除冗余信息
- Apollo使用了直方图滤波算法
- 该方法有时也被称为误差平方和算法(或SSD)
- 卡尔曼滤波是另一种LiDAR 定位方法
- 卡尔曼滤波用于根据我们在过去的状态和新的传感器测量结果预测我们当前的状态
- 使用概率规则将不完美的测量结果与现有位置匹配起来
- LiDAR定位的主要优势在于稳健性
视觉定位
- 图像是要收集的最简单的数据类型,摄像头便宜且种类繁多、易于使用
- 但通过图像实现精确定位却非常困难
- 可通过与其他传感器的数据相结合以准确定位车辆
- 例如将摄像头数据与地图和 GPS 数据相结合
- 通过概论来确定目前所处的位置
- 该过程称为粒子滤波
- 可以使用相同的粒子滤波原理对车道线进行拍照,并与地图进行比较
Apollo定位
Apollo使用基于GPS、IMU、激光雷达的多传感器融合定位系统,这种方法利用了不同传感器的互补优势,也提高了稳定性和准确性。
感知
了解车辆如何利用感知元件感知周围环境,了解不同的感知任务,例如分类、检测和分割,并学习对感知而言至关重要的卷积神经网络。
计算机视觉
四个感知世界的核心任务
- 检测
- 指找出物体在环境中的位置
- 分类
- 指明确对象是什么
- 跟踪
- 指随时间的推移观察移动物体
- 语义分割
- 将图像中的每个像素与语义类别进行匹配如道路、汽车、天空
- 检测
以分类为例子
图像分类器是一种将图像作为输入,并输出标识该图像的标签的算法
- 交通标志查看停车标志并识别它是停车标志、让路标志、限速标志、其他标志
- 行为识别分类器识别一个人是在走路还是在跑步
- 步骤:
- 计算机接收类似摄像头等成像设备的输入
- 预处图像,常见的预处理包括调整图像大小、旋转图像、将图像从一个色彩空间转换为另一个色彩空间,比如从全彩到灰度
- 提取特征,特征有助于计算机理解图像,例如将汽车与自行车区分开来的一些特征,汽车通常具有更大的形状并且有四个轮子而不是两个,形状和车轮将是汽车的显著特征
- 将特征输入到分类模型中
摄像头图像
摄像头图像是最常见的计算机视觉数据
从计算机的角度来看
- 图像只是一个二维网格被称为矩阵
- 矩阵中的每个单元格都包含一个值
- 数字图像全部由像素组成,其中包含非常小的颜色或强度单位
以上是一个二维灰度图像,而彩色照片更复杂一些
- 彩色图像被构建为值的三维立方体
- 每个立方体都有高度、宽度和深度,深度为颜色通道数量
- 大多数彩色图像以三种颜色组合表示红色、绿色、蓝色,称为RGB图像
- 彩色图像被构建为值的三维立方体
LiDAR图像
激光雷达传感器创建环境的点云表征,提供了难以通过摄像头图像获得的信息如距离和高度。
激光雷达传感器使用光线尤其是激光来测量与环境中反射该光线的物体之间的距离,通过这种方式来构建世界的视觉表征。
激光雷达的输出
- 激光雷达通过发射光脉冲来检测汽车周围的环境
- 蓝色点表示反射激光脉冲的物体
- 中间的黑色区域为无人驾驶车本身占据的空间
- 这些数据提供了足够的对象检测、跟踪、分类信息
- 例如图中红点为行人,绿点表示其他汽车
机器学习
机器学习是使用特殊算法来训练计算机从数据中学习的计算机科学领域
机器学习涉及使用数据和相关的真值标记来进行模型训练
- 例如输入车辆与行人的两组图片,并告诉计算机:这两组图片分别代表汽车辆与行人
- 计算机通过监督学习,从中数据获取到如何分辨车辆与行人的信息
如果不告诉计算机,这两组图片分别代表什么,这样则称为无监督学习
- 计算机则会通过分析输入的数据,自行学习找到如何分辨车辆与行人的信息
半监督学习是将监督学习和无监督学习结合在一起,使用少量的标记数据和大量的未标记数据来训练模型
强化学习是另一种机器学习
强化学习涉及允许模型通过尝试许多不同的方法来解决问题,然后衡量哪种方法最为成功,计算机将尝试许多不同的解决方案,最终使其方法与环境相适应。
起初车辆可能无法找到执行转弯的方法,然而就像人类那样,车辆最终会从一些成功的右转经验中学习,最后学会如何完成任务
神经网络
人工神经网络用于无人驾驶车,受到构成人类神经系统的生物神经元启发,生物神经元通过相互连接构成了神经元网络或神经网络,通过类似的方式将人工神经元层连接起来以创建用于机器学习的人工神经网络。
- 人工神经网络是通过数据来学习复杂模式的工具
- 神经网络由大量的神经元组成,人工神经元负责传递和处理信息,也可以对这些神经元进行训练
- 人脑的识别:
- 对于车辆,某些特征触发了你的反应,如车轮、车灯、车窗,然后大脑将使用这些特征对图像进行检测和分类
- 神经网络的识别:
- 同样,神经网络也会从图像中提取许多特征,但这些特征可能是我们人类无法描述或甚至无法理解的特征。但我们最终并不需要理解,计算机将调整这些特征的权重,以完成神经网络的最终任务。
反向传播算法
神经网络的学习由三步循环组成:
前馈
- 随机分配初始权重即人工神经元的值,通过神经网络来馈送每个图像产生输出值
误差测定
- 误差是真值标记与与前馈过程所产生输出之间的偏差
反向传播
- 通过神经网络反向发送误差,此过程类似前馈过程,只是以相反方向进行
- 基于通过神经网络后向传播的误差,每个人工神经元都对其值进行微调
为了训练网络,通常需要数千个这样的周期,最终结果应该是模型能够根据新数据做出准确预测。
卷积神经网络
卷积神经网络CNN是一种人工神经网络,它对感知问题特别有效,CNN接受多维输入包括定义大多数传感器数据的二维和三维形状。
标准神经网络处理图片存在缺陷
- 会将二维图像“展开”为一维像素阵列
- 这样会丢失图像中的空间信息
CNN通过维持输入像素之间的空间关系来解决这个问题
- CNN通过将过滤器连续滑过图像来收集信息
- 每次收集信息时,只对整个图像的一小部分区域进行分析,称为卷积
当在整个输入图像上对一个过滤器进行卷积时,将该信息与下一个卷积层相关联
- 例如CNN识别第一个卷积层中的基本边缘和颜色信息,然后通过在第一层上卷积新过滤器
- CNN使用边缘和颜色信息来归纳更复杂的结构如车轮、车门、挡风玻璃
- 而另一个卷积可使用车轮、车门、挡风玻璃识别整个车辆
- 最后神经网络可使用这一高阶信息对车辆进行分类
检测与分类
感知任务中,首先是障碍物检测和分类,在驾驶过程中会遇到许多障碍物,静态障碍物包括墙壁、树木、杆子、建筑物;动态障碍物包括行人、自行车、汽车。
计算机首先需要知道障碍物的位置,然后进行分类,并根据所感知的物体类型来确定路径和速度
- 如果感知到前方有一辆自行车,汽车可能会决定减速和变道,以便安全驶过自行车
- 如果感知到前方有另一辆车,并预测到前方车辆也将以接近限速的速度行驶,可能会保持其速度和车道
- 交通信号灯检测分类
- 使用计算机视觉对图像中的交通信号灯进行定位,然后根据灯光显示颜色对交通信号灯进行分类
经典体系结构为 R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD等。
跟踪
追踪在检测失败时是至关重要的
- 如果你在运行检测算法时,对象被其他对象遮挡一部分,则检测算法可能会失败,但追踪可以解决遮挡问题
- 且追踪可以保留身份,使对象与其身份关联
追踪的第一步为确认身份,通过查找特征相似度最高的对象,将在之前的帧中检测到的所有对象与在当前的帧中检测到的对象进行匹配。
在确定身份后,可以使用对象的位置并结合预测算法以估计在下一个时间步的速度和位置,该预测可帮助识别下一帧中的相应对象。
分割
语义分割涉及对图像的每个像素进行分类,用于尽可能详细地了解环境并确定车辆可驾驶区域。
语义分割依赖于一种特殊类型的CNN,被称为全卷积网络FCN。
FCN用卷积层来替代传统CNN体系结构末端的平坦层
网络中的每一层都是卷积层,因此名称为“全卷积网络”
网络的前半部分通常被称为编码器
- 这部分网络对输入图像的特征进行了提取和编码
网络的后半部分通常被称为解码器
- 这部分网络对这些特征进行了解码并将其应用于输出
Apollo 感知
Apollo 开放式软件栈可感知障碍物、交通信号灯、车道。对于三维对象检测,Apollo 在高精度地图上使用感兴趣区域ROI来重点关注相关对象。
- Apollo将ROI过滤器应用于点云和图像数据,以缩小搜索范围并加快感知。
- 然后通过检测网络馈送已过滤的点云,输出用于构建围绕对象的三维边界框。
- 最后使用被称为检测跟踪关联的算法来跨时间步识别单个对象,该算法先保留在每个时间步要跟踪的对象列表,然后在下一个时间步中找到每个对象的最佳匹配。
对于交通信号灯的分类,Apollo先使用高精度地图来确定前方是否存在交通信号灯:
- 如果前方有交通信号灯,则高精度地图会返回灯的位置
- 后续根据位置,摄像头搜索范围,从摄像头捕获交通信号灯图像
- Apollo使用检测网络对图像中的灯进行定位,然后从较大的图像中提取交通信号灯
- 将裁剪的交通灯图像提供给分类网络以确定灯颜色,如果有许多灯则系统需要选择哪些灯与其车道相关。
Apollo使用 YOLO 网络来检测车道线、动态物体其中包括车辆、卡车、骑自行车的人、行人
在经过YOLO网络检测后,在线检测模块会并入来自其他传感器的数据对车道线预测进行调整,车道线最终被并入名为“虚拟车道”的单一数据结构中。同样也通过其他传感器的数据对YOLO网络所检测到的动态对象进行调整,以获得每个对象的类型、位置、速度、前进方向。虚拟通道和动态对象均被传递到规划与控制模块。
传感器数据比较
感知通常依赖于摄像头、激光雷达、雷达,如图显示了这三种传感器的优缺点
- 摄像头非常适用于分类,在Apollo中摄像头主要用于交通信号灯分类、车道检测
- 激光雷达的优势在于障碍物检测,即使在夜间仍能准确地检测障碍物
- 雷达在探测范围和应对恶劣天气方面占优势
- 通过融合这三种传感器的数据可实现最佳聚合性能,被称为“传感器融合”。
感知融合策略
Apollo使用激光雷达和雷达来检测障碍物,用于融合输出的主要算法为卡尔曼滤波
卡尔曼滤波有两个步骤:
- 预测状态
- 更新测量结果
传感器融合可提高感知性能,因为各传感器相辅相成,融合也可以减少跟踪误差。