01 自动驾驶系统 - 百度阿波罗平台学习笔记

版权声明:所有文章均由作者原创,未经允许禁止转载!CSDN博客有图片大小限制,无法显示。欢迎关注本人知乎主页zhihu.com/people/JianfengLu,或者关注“小阿狸2008” https://blog.csdn.net/Maple_Lu1986/article/details/81276944

高清地图

高清地图属于机器人地图

  • 道路网的精确三维表征,如十字路口布局、路标位置及各种其他语义信息
  • 厘米级(普通地图只能达到米级,一般1-2米)
  • VSLAM定位:预处理、坐标变换、数据融合
  • 帮助感知:提前在远距离的位置提供ROI区域,供视觉或其他传感器缩小搜索范围
  • 增强视觉的TSR功能:提前知道各种限速信息、车道信息(车道线中心、左转车道、右转车道等)
  • Apollo地图:道路定义、交叉路口、交通信号、车道规则,例如红绿灯的位置和高度
  • 制图流程:数据采集、数据处理、目标检测、人工验证、地图发布

%%%%%%%%%%%%%%%%%%%%%%%%%%%

定位

  • 对比来自HD Map道路网周围的路标坐标,以及根据车辆坐标系算出来的路标坐标,并对比;
  • GNSS系统的卫星星座的三角测量,测量车辆位置+车速
  • RTK:车辆接收来自卫星星座的定位坐标;地面基站与卫星星座通信,获取卫星星座的定位误差;地面基站将误差传送给车辆,车辆利用定位坐标+误差信息,一起考量,获得精度为10厘米级别的定位精度。缺点:更新速率低
  • IMU=三轴加速度计+陀螺仪,缺点:实时精度高,累计误差大。
  • Lidar:测量车辆位置+heading
  • INS惯性导航=RTK+IMU:预测下一周期位置并更新;
  • 卡尔曼滤波整合GNSS定位+激光雷达定位+INS惯性导航(GNSS+IMU),其中INS惯性导航用于卡尔曼滤波的预测步骤中;GNSS定位+激光雷达定位用于卡尔曼滤波的测量结果更新步骤中。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

感知

  • 计算机视觉:
    • 检测(Detection)
    • 分类(Classification):图像分类器,各种分类器
      • 输入图像
      • 预处理
      • 提取特征
      • 放入分类模型
    • 跟踪(Tracking)
    • 语义分割( Segmentation )
  • 计算机视觉处理摄像头图像:
    • 图像对于计算机来说,只是像素矩阵
    • 图像高度、宽度和图像深度(RGB有三个深度,红、绿、蓝三个颜色深度)
    • 图像的灰度化,就是减少图像空间的深度
  • 计算机视觉处理激光雷达图像:
    • 将激光雷达点云图像化
  • 机器学习:模型和训练模型
  • 人工神经网络工作步骤:前馈(按照原有模型算一遍,得到一个output)、误差测量、反向传播(将对比出来的误差,反向传播,修正各个feature的权值)
  • 卷积神经网络(CNN):

           

  • 检测与分类
  • 跟踪
  • 分割
  • Apollo感知系统:
    • YOLO 检测模块

                     

  • 感知系统架构

                     

  • 传感器数据比较:

           

  • 感知融合策略:卡尔曼滤波实现Radar和Lidar的目标级别的融合

          

          

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

预测

预测其他目标的行驶路径,预测模块要回自学习

  • 基于模型(Model-Based)的预测:找到已知可能的轨迹模型,跟踪车辆的轨迹,看后续事件最有可能往哪个轨迹模型中接近;
  • 数据驱动(Data-Based)的预测:使用机器学习来训练模型;
  • Apollo使用基于车道序列的模型预测方法,计算可能性:
    • Lane Sequence 车道段序列
    • Obstacle Status 一系列的跟踪目标状态
  • 追踪目标,会使用航向角、位置、速度、加速度等目标信息追踪预测目标的行驶路径;
  • 利用递归神经网络来识别目标类型来分别预测车道段+障碍物目标,并结合起来进行进一步RNN训练,获得最终的预测模型
    • 训练的方法:用RNN的output输出对比真值标记(Ground Truth),利用反向传播来训练网络
    • 训练出最有可能的B点后,根据A当前点到B目标点的轨迹可以根据当前车的运动状态(速度、加速度)拟合出一条最可能的运行轨迹,来最终获得追踪目标车辆的预测行驶轨迹。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

路径规划

  • 全局路径规划:点对点的路线规划,单纯的空间曲线;Apollo算法使用A*算法来实现全局路径规划。
  • 局部路径规划:运动轨迹水平的轨迹规划,不仅是空间曲线,也是时间曲线

三个路径规划输入:

  • 地图:公路网及实时交通信息
  • 当前位置:在地图中的当前位置
  • 目的地:在地图中的目标地坐标

轨迹点包含的信息:

  • 轨迹点的坐标;
  • 矢量速度;
  • 预计达到下一坐标的时间

轨迹规划:

  • 三维轨迹生成=二维点坐标+时间戳;
  • 矢量速度保证车辆按照时间戳的要求到达下一个轨迹点;
  • 成本函数:设置惩罚因子,如偏离车道中心的程度、发生碰撞的几率、车速限制、舒适性(例如实现某个轨迹规划需要很大的加速度才能完成,那么这个过大的加速度就影响舒适性)
  • 成本函数在不同场景中的区别:例如在停车场,与在高速公路上,成本函数的各个因子的设置,一定是不一样的。
  • 坐标变换:百度的Apollo平台使用Frenet Coordinate(弗莱纳坐标系);德尔福公司常说的Curvillinear Coordinate System(曲线坐标系)属于简化了的弗莱纳坐标系。

轨迹-速度解耦规划:

  • 轨迹规划:利用成本函数计算单纯的路径轨迹;
    • 路径生成与选择:
      • 将路面分段,并在各段(区域)中,选择随机采样点,连成多条路径;
      • 根据成本函数(包含距离车道中心线、距离障碍物距离、车速和车道线曲率变化及车辆压力等约束因素),删选最小成本路径。
  • 速度规划:利用轨迹点的一系列“速度曲线”来控制车速;
    • 选择速度曲线:利用ST图,选择车速;S,纵向位移,T,时间
    • 将速度曲线ST图网格化,道路离散化;将障碍物绘制在ST图中不同的时间域中(在t0到t1时间域内,会占据s0到s1的前方距离范围),速度曲线不应穿越ST图中的该矩形区域;利用各种约束(法规约束、车辆运动极限约束、障碍物距离限制)组成的优化算法,来选择最佳速度曲线
  • 二次规划:将离散曲线平滑化

三维轨迹生成(轨迹曲线与速度曲线的合并,基于Lattice规划):

  • 三个维度:纵向维度、横向维度、时间维度
  • 具有时间戳的纵向轨迹,ST轨迹,纵向+时间维;
    • ST轨迹的终止状态:巡航状态、跟车状态、停止状态
  • 相对于纵向轨迹的横向偏移,SL轨迹,横向+时间维;
    • 终止状态应与车道线中心线重合,即heading angle与offset的一阶导数和二街倒数都为零
  • 合并后,用成本函数选择最佳路线。
    • 将ST和SL轨迹点都转化为笛卡尔坐标系,然后,按照S值来匹配T和L;

%%%%%%%%%%%%%%%%%%%%%%%%%%%

车辆控制算法

PID 控制器

  • 优点:简单有效;
  • 缺点:线性控制;只能针对横向控制或者纵向控制进行单独控制;无法将横向控制和纵向控制集成在一个控制器中控制;

LQR控制器

  • L-线性
    • X-term
      • 误差
      • 误差变化率
      • 航向角
      • 航向角变化率
    • U-term
      • steering
      • accel
      • brake
  • Q&R-最小化成本方程

MPC模型预测控制器

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

总结

1. Apollo使用ROS操作系统;

2. 百度基于自己做地图的背景,倾向于在自动驾驶系统设计过程中,尽量多的发挥高清地图的作用;

3. 感知模块倾向于采用神经网络算法;

4. 激光雷达的数据使用方式:

   a. 在点云级别,转化为图像,与摄像头图像融合,获取更丰富的道路feature;

   b. 在目标级别(Object Level),与毫米波雷达进行目标融合,并跟踪目标。

猜你喜欢

转载自blog.csdn.net/Maple_Lu1986/article/details/81276944