Apollo×baidu公开课笔记

第二课:高精度地图

高精度地图

  • 厘米级进度。交通灯、限速、路标等信息
  • 搜集的信息与高精度题图匹配——预处理、坐标转换、数据融合——以便知道自己处于什么位置
  • 高精度地图作用,传感器有距离限制,这种情况下由高精度地图提供位置。另一个好处减小传感器检测范围——集中检查感兴趣区域ROI,提高速度进度 减小计算资源。规划软件也需要 靠近中心线,帮助减少决策空间
  • Apollo高精度地图采用了OpenDRIVE格式,行业制图标准
  • 高精度地图5个过程:数据采集(众包采集)、数据处理、目标检测、手动验证、地图发布

第三课 定位

  • GPS进度在1-3米,在信号不好的地方,可以达到数十米。转换坐标系、由传感器得到的标示与 在全局地图上的位置进行匹配

GPS(GNSS)

  • 三角定位(三个圆交点),GPS传送距离
  • gps 卫星、地面的控制站 监视和控制卫星、GPS接收器(手机上、汽车上)。每次至少接收4颗。时间乘以光速(原子钟)。 RTK纠错发给gps接收器。 gps缺点受遮挡物干扰、更新频率低

惯性导航

  • 三轴传感器测加速度。 螺旋仪。 IMU短时间内定位,频率高,短时间定位。要与gps结合。但是仍旧不精确 因为gps有些地形下失效

激光雷达定位

  • 点云匹配——迭代最近点法,点云旋转 减小误差,匹配,传感器得到的位置转化为全局
  • LiDAR:滤波算法;消除冗余,最小平方误差。 卡尔曼滤波,预测新位置,用传感器测量新位置纠正。优点稳健性,只要有高精度地图+传感器更正。难点 地图不可能保持最新

图像定位

  • 粒子滤波(概率)。对车道线拍照。优点 图像数据容易得到。缺点:缺乏三维信息和对三维地图的依赖

第四课 感知

  • 4个核心人物检测:找出位置,分类、跟踪、语义分割
  • 分类器:接收输入,预处理(标准化,调大小、旋转)、提取特征
  • 摄像头图像:RGB图像
  • LiDAR图像:雷达发射,点云
    image
  • 机器学习:使用数据。监督式学习、半监督、无监督。强化学习
  • 神经网络:调整某些特征的权重,得到最终结果
  • 反向传播
  • CNN:接收多维输入。标准神经网络的弄成一维,打破了图像中嵌入的空间信息。在整个图像上对一个过滤器进行卷积操作>

    (什么是卷积:图像中不同数据窗口的数据和卷积核(一个滤波矩阵)作内积的操作叫做卷积。其计算过程又称为滤波(filter),本质是提取图像不同频段的特征。)

  • 检测与分类:CNN中找出图像中对象的位置、定位,发给另一个CNN进行分类,或者直接一个CNN完成。R FastRCNN FasterRCNN ,YOLO SSD
  • 跟踪:解决遮挡物、追踪可以保留身份。前后两帧中对象匹配。计算机视觉可以计算出复杂的图像特征,如局部二值模式和方向梯度直方图。连续帧中,两个障碍物之间的位置和速度
  • 分割:确定汽车可行驶的位置。FCN,每一层都是卷积层。CNN最后输出比原图像小得多。为了分割图像,输出尺寸必须与原始图像的尺寸相匹配,中间输出进行上采用处理。 前半部分encoder对输入图像的特征进行了提取和编码。后半部分解码器对特征进行解码 用于输出。

    上采样可以用来进行图像放大,多采用内插方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素

image

  • 传感器融合

image

  • 激光雷达、雷达,用于融合输出的主要算法是卡尔曼滤波——两个步骤
  1. 预测状态
  2. 更新测量结果(同步异步)

第五课:预测(移动路径)

  • 实时性、准确性。5m内没东西。用多源的数据预测

  • 两种类型:基于模型的(直观,结合了人的物理知识、交通法规)、数据驱动的(数据越多 越准确)

  • 基于车道序列的预测:将道路分成多个区域,车辆如何在这些车道间变换,将车辆的运动描述为一组序列
    image

  • 障碍物状态:车道段内情况 到车道线的横向纵向距离、之前时间间隔的状态信息

  • 预测目标车道:预测问题转为选择问题。通过计算每个车道的概率来选择image

  • 递归神经网络RNN:利用时间序列特征。传统神经网络 多层感知网络MLP。RNN中每个MLP单元将序列的一个元素作为输入,并预测序列的下一个元素作为输出。为了对元素之间的顺序关系建立模型,在每个单元之间建立一个额外的连接——意味着每个单元根据原始输入 和 前一个单元的输出进行预测
    image

  • 为车道序列提供一个RNN模型,为相关对象状态提供了一个RNN模型。Apollo连接这两个RNN的输出并将他们馈送到另一个神经网络,该神经网络估计每个车道序列的概率,具有最高概率的车道序列就是最终预测image

  • 轨迹生成:设置约束条件,去除大多数预选轨迹,考虑速度、加速度进一步去除。注意车辆在原始、结束状态的位置和速度,用这两个条件拟合多项式模型

第六课:规划

  • 规划:路线导航。轨迹由一系列点组成,点还包括速度、何时抵达
  • 通络搜索查找路线:将地图转化为图
    image
  • A*算法,起始节点-候选节点 + 候选节点-目的节点

轨迹

  • 从路由到轨迹:从出发点-目的地——高等级地图(路由)。一条路段上行驶,需要低等级(轨迹)
  • 轨迹生成:生成一系列路径点定义的轨迹,让一条曲线去和路径点拟合,生成轨迹的几何表征
    image
    这些时间戳创建了一个三维轨迹2D position + time,每个点还有速度
  • 轨迹的约束:防止碰撞、变化平滑、不能违法
  • 评估轨迹:成本最低的轨迹,成本有惩罚组成(deviation、collisions、speed limit、comfort),不同场景成本函数不同
  • Frenet坐标:笛卡尔坐标系的替代方案
    image
  • 路径 - 速度解耦规划:路径规划 成本函数 选出成本最低的路径;下一步 确定速度速度规划 与路径点相关点一系列速度——速度曲线。合起来就是行驶轨迹
  • 在路径-速度解耦规划中生成候选路径:将路段分割成单元格,对单元格中的点随机采样。创多条候选路径,用成本函数选路。成本函数可以考虑的因素
    image

速度

  • ST图:选择好路径的下一步,是选择与该路径关联的速度曲线。S纵向位移,T时间,斜率速度
    image
  • 速度规划(有障碍物怎么处理、或其他限制):为了构建最佳速度曲线,把ST离散为多个单元格,每个单元格内速度不变,可以简化。可以将障碍物绘制为在特点时间段内,阻挡道路的某些部分的矩阵
    image
    使得速度曲线不与矩形相交即可

  • 到目前为止因为路径选择是将道路划分为单 元格、速度曲线是把ST图划分为单元格,都是离散的。为了使曲线平滑,可以用二次规划将平滑的非线性曲线与这些分段式线性段拟合——生成路径-速度曲线

  • Lattice规划的轨迹生成方法:三维的规划问题变化为两个二维的优化问题,S-T、L-S图,通过对预选模式中的多个候选最终状态进行采样,生成多组轨迹,来选择最终车辆状态??是在检测是否到达终止状态吗??,使用成本函数来对这些轨迹进行评估选择最好的轨迹

  • ST轨迹的终止状态:巡航、跟随和停止。
    巡航:完成规划步骤后定速行驶,在对地图上的点进行抽样???,所有最终状态的加速符为0.
    跟随模式:对位置和时间状态进行采样,尝试在时间t出现在某辆车后面跟随车辆时,保持安全距离,速度和加速度取决于前车
    停车:对汽车何时何地停止进行抽样,速度加速度都为0

  • SL曲线的终止状态:最终要与车道中心线一致。采样的是道路上相邻车道中心线周围的位置
    车的朝向和位置的一阶二阶导数都为0——既不是横向移动的也不是横向加速的
    image

  • Lattice规划的轨迹生成:转为笛卡尔
    image

第七课:控制

  • 不要偏离预定轨道、可行性、舒适性、控制要连续性不要突然制动或加速或转向
  • 输入:由规划模块给出的目标轨迹,
    每个轨迹点有一个位置和参考速度,每个时间步都对轨迹进行更新。要通过自身传感器了解自身状态,来计算实际与目标的偏差
  • 输出:转向、加速度、制动
  • PID依赖于实时误差测量