自动驾驶系统课程笔记(第一章 简介)

本文写于19年4月智能驾驶技术课程
参考书籍

  • 第一本无人驾驶技术书, 2017
  • Creating Autonomous Vehicle Systems, 2018

Ch1 Introduction to Autonomous Driving 自动驾驶技术简介

1.1 Autonomous Driving Technologies Overview 概览

自动驾驶技术不是一项单一的技术,而是一系列技术的整合。
主要由三部分构成:

  • Algorithm
    • Sensing
    • Perception
    • Decision
  • Client System
    • Operating System
    • Hardware Platform
  • Cloud Platform
    • High-definition (HD) Map
    • Deep Learning Model Training
    • Simulation
    • Data storage



The algorithm subsystem extracts meaningful information from sensor raw data to under- stand its environment and to make decisions about its future actions. The client systems integrate these algorithms together to meet real-time and reliability requirements. For example, if the camera generates data at 60 Hz, the client systems need to make sure that the longest stage of the pro- cessing pipeline takes less than 16 ms to complete. The cloud platform provides offline computing and storage capabilities for autonomous cars. With the cloud platform, we are able to test new algorithms, update HD map, and train better recognition, tracking, and decision models.

1.2 Autonomous Driving Algorithm 算法

1.SENSING 传感

每种方法都有自己的优缺点,*实际情况下自动驾驶汽车结合了各种方法来保证可靠性和安全性。

  • GPS/IMU(惯性测量单元)
    GPS精度高但更新频率低,IMU精读随时间变化越来越低但更新频率高。
  • LiDAR 光学雷达
    精度高,用于绘制地图、定位及避障,作为主传感器使用。
  • Cameras 相机
    用于物体识别与追踪。多个摄像头产生巨额数据量。
  • Radar and Sonar 雷达和声呐
    雷达和声呐是避障的最后一道保障,产生的数据不需要过多处理直接被控制处理器采用(因为是紧急情况)。

2.Perception 感知

  • 定位
    结合GPS和IMU的数据完成定位,因为有GPS室内环境(如隧道)无法工作等问题,引入摄像头作为辅助定位。摄像头的定位技术类似于对四维空间进行分析。问题又来了,因为摄像头定位需要充足的光线,也不够好,因此,借助于大量粒子滤波的激光雷达LiDAR通常被用作车辆定位的主传感器。
    激光雷达产生的点云对环境进行了“形状化描述”,但并不足以区分各自不同的点,通过粒子滤波将已知HD地图与观测到的形状进行比较以减少位置的不确定性。
    LiDAR也有缺点,它的缺点是会受到空气中的悬浮颗粒(雨滴或灰尘)的干扰。
    综上所述,我们需要利用多种传感器融合技术进行多类型传感数据融合,处理以整合所有传感器的优点,完成可靠并精准的定位。



  • 物体识别与追踪
    LiDAR+CNN卷积神经网络:
    • 卷积层使用不同的滤波器从输入图像中提取不同的特征,并且每个滤波器在完成训练阶段后都将抽取出一套“可供学习”的参数
    • 激活层决定是否启动目标神经元
    • 汇聚层压缩特征映射图所占用的空间以减少参数的数目,并由此降低所需要的计算量
    • 一旦某物体被CNN识别出来,下一步将自动预测它的运行轨迹或进行物体追踪

3.Action 决策

  • 行为预测
    • 预测其它车辆的行驶行为
    • 使用随记模型产生其它车辆的可达位置集合,并采用概率分布的方法预测每一个可达位置集的相关概率



  • 路径规划
    • 使用完全确定模型,搜索所有可能的路径并利用代价函数的方式确定最佳路径
    • 缺点是不实时。为了避免计算复杂性并提供实时的路径规划,使用概率性模型成为了主要的优化方向
  • 避障
    • 安全性是首位的!我们将至少使用两层级的避障机制
    • 第一层是基于交通情况预测的前瞻层级
    • 第二层是实时反应层级。使用本地雷达数据进行路径重新规划,一旦雷达侦测到前方出现障碍物,则立即执行避障(前面提到的雷达+声呐作为避障的最后一道屏障。他们产生的数据用来表示在车的前进方向上最近障碍物的距离)

1.3 Autonomous Driving Client System 用户端系统

用户端系统整合上述避障、路径规划等算法,以满足可靠性及实时性等要求。需要克服三个问题:

  • 系统必须确保捕捉到的大量传感器数据可以及时快速地得到处理
  • 如果系统的某部分失效,则系统需要有足够的健壮性能从错误中恢复
  • 系统必须在设计的能耗和资源限定下有效地完成所有的计算操作

1.机器人操作系统ROS

ROS是现如今广泛被使用的、专为机器人应用裁剪的、强大的分布式计算框架。ROS非常适用于无人驾驶的场景,但是仍有一些问题需要解决。



待解决问题

  • 可靠性:ROS使用单主节点结构,并且没有监控机制以恢复失效的节点。
  • 性能:当节点之间使用广播消息的方式通信时,将产生多次信息复制导致性能下降。
  • 安全:ROS中没有授权和加密机制,因此安全性受到很大威胁。

可靠性

  • 使用类似于ZooKeeper的方法,改进后的ROS结构包括一个关键主节点及一个备用主节点。

性能

  • 不再使用TCP/IP的通信模式,取而代之地采用共享内存的方法完成节点通信。
  • 不再使用广播通信,改成目的更明确的多路径传输机制改善系统的带宽与吞吐量。

安全

  • 使用Linux containers(LXC)的方法限制每一个节点可供使用的资源数,并采用沙盒的方式以确保节点的运行独立,这样以来可最大限度地防止资源泄露。(防止因ROS节点被挟制后不断进行内存分配,内存耗尽而导致剩余节点失效继而全线崩溃)
  • 为通信消息进行了加密操作,以防止其被黑客窃听。

2.硬件平台

  • 现有计算平台功耗高发热严重需要配备额外的散热装置,因而太贵。
  • 利用ARM面向移动市场的SoC可以尝试解决这些问题。

    SoC: System on Chip.是一个将电脑或其他电子系统集成到单一芯片的集成电路。
    指的是将CPU、GPU、RAM、通信基带、等整合在一起的
    由于手机空间限制,不可能像PC一样,主板、CPU、GPU、内存条可以自己选择,自由组合,所以厂家直接整合在了一起,假设你找高通买了SOC,它就包含了CPU、GPU、内存条、通信基带等给你,厂家一般也不会单卖CPU给你。

1.4 Autonomous Driving Cloud Platform 云平台

无人车是移动系统,因此需要云平台的支持。云平台可以提供:

  • 分布式计算
  • 分布式存储

1.仿真

  • 开发无人驾驶新算法 –> 仿真测试(回放ROS阶段采集点真实数据,模拟真实驾驶场景) –> 真车测试(成本高昂、周期漫长)
    因此仿真测试的全面性和正确性对降低生产成本和生产周期尤为重要。
  • 利用Spark可以搭建服务器集群更快完成仿真测试。



2.高精度地图生成

  • 原始数据处理 –> 点云生成 –> 点云对齐 –> 2D反射地图生成 –> 高精地图标注 –> 地图生成
  • 利用Spark内存计算不需要使用磁盘存储,数据访问速度加快,极大提高了高精度地图产生的性能。

3.深度学习模型训练

  • 单服务器计算模型缓慢
  • 使用Spark+Paddle来搭建分布式深度学习系统