赞
踩
本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。
此专栏是关于《自动驾驶汽车平台技术基础》书籍的笔记.
Apollo技术框架由4层构成:
Apollo整体技术架构如下图所示:
地图引擎
地图引擎(Map Engine)是车载终端的高精地图数据管理服务,封装了地图数据的组织管理机制,屏蔽底层数据细节,对应用层模块提供统一数据查询接口;包含元素检索、空间检索、格式匹配、缓存管理等核心能力,并提供了模块化、层次化、可高度定制化、灵活高效的编程接口,用户可以基于此构建专属的终端高精地图解决方案;
高精地图主要服务于自动驾驶车辆,通过一套独特的导航体系,帮助自动驾驶解决系统性能问题,扩展传感器检测边界;Apollo内部高精地图主要应用在高精定位、环境感知、决策规划、仿真运行4大场景,帮助解决林荫道路GNSS信号弱、红绿灯的定位与感知及十字路口复杂等导航难题;
感知平台
Apollo感知平台包括线上感知模块和线下标定服务平台;线上感知模块提供基于深度学习的点云动态障碍物的检测、分割和基于运动的跟踪;线下标定服务平台提供云端的跨平台标定服务;
线上感知模块
感知模块主要包括障碍物检测识别和红绿灯检测识别两部分;
障碍物检测识别模块通过输入激光雷达点云数据和毫米波雷达数据,输出基于两种传感器的障碍物融合结果,包括障碍物的位置、形状、类别、速度、朝向等信息;
红绿灯检测识别模块通过输入两种焦距下的相机图像数据,输出红绿灯的位置、颜色状态等信息;
感知核心模块的主要内容:
障碍物检测识别
障碍物模块包括基于激光雷达点云数据的障碍物检测识别、基于毫米波雷达数据的障碍物检测识别及基于两种传感器的障碍物结果融合算法;
基于激光雷达点云数据的障碍物检测识别,通过线下训练的卷积神经网络模型,学习点云特征并预测障碍物的相关属性,并根据这些属性进行障碍物分割;
基于毫米波雷达数据的障碍物检测识别,主要用来对毫米波雷达原始数据进行处理而得到障碍物结果;该算法主要基于ID扩展、噪点去除、检测结果构建及ROI过滤;
多传感器障碍物结果融合算法,用于将上述两种传感器的障碍物结果进行有效融合,该算法主要进行了单传感器结果和融合结果的管理、匹配及基于卡尔曼滤波的障碍物速度融合;
红绿灯检测识别
红绿灯模块根据自身的位置查找地图,可以获得前方红绿灯的坐标位置;通过标定参数,可以将红绿灯从世界坐标系投影到图像坐标系,从而完成相机的自适应选择切换;选定相机后,在投影区域外选取一个较大的感兴趣区域,在其中运行红绿灯检测来获得精确的红绿灯框位置,并根据此红绿灯框的位置进行红绿灯的颜色识别,得到红绿灯当前的状态;得到单帧的红绿灯状态后,通过时序的滤波矫正算法进一步确认红绿灯的最终状态;
Apollo 3.5感知框架如下(注:Apollo已经更新很多代了,此仅用3.5做介绍):
线下标定平台
规划模块
规划模块(Planning)先需要车辆对路况有基本的判断,前方是否可停车、跟随、超车,侧方是否绕道等,从而确保车辆能够实现安全而高效的决策行驶;
规划模块分为两部分:一部分负责对数据的监听、获取和预处理;另一部分负责管理各个优化模块;
数据进入规划模块后,对其综合处理为规划模块的内部数据结构,由任务管理器调度合适的优化器进行各个优化任务;综合优化的结果经过最终的验证后,输出给控制模块;在设计上,规划模块实现了策略的可插拔,使得各个优化器可以灵活配置不同策略,提升迭代效率;
Apollo规划器包括RTK Planner、EM Planner、Lattice Planner;
Apollo规划整体架构如下图所示:
DP速度算法实例说明规划过程
在DP路径算法生成一条可行驶的路径后,从起点开始,考虑避开路径中的所有障碍物,且让加减速最为平顺,以最优的速度曲线(即t-s平面中的绿色曲线)安全抵达终点;Apollo中,算法求解过程被离散化,从而降低受道路中心线的影响,适应了复杂路况,解决了决策过程中基于规则优化的痛点,通过DP速度算法逻辑,可以完成ST坐标系下的DP规划,在此基础上,进一步做QP优化和迭代调整,就可以得到有效的规划结果;
车辆控制
车辆控制将GPS和IMU提供的信息作为输入,处理后生成规划信息(包括路径信息和速度信息),提供给控制模块使用,然后来实现车辆控制;
对车辆转向及速度进行控制需要首先车辆动力学参数:制动信号、速度表,节气门、加速度表;当车辆有了控制信号后,通过CAN Bus通信协议中的DBC file可以将信号传递给车辆的线控系统,实现节气门、方向盘、换挡、转向灯等控制;
纵向控制
纵向控制主要为速度控制,通过控制制动、节气门、挡位等实现对车速的控制,对于自动挡车辆来说,控制对象主要是制动和节气门;
Apollo纵向控制原理如下图所示,主要由"位移-速度闭环PID控制器""速度-加速度闭环PID控制器"和"速度-加速度-制动/节气门开环控制器"构成:
横向控制
横向控制主要控制航向,通过改变方向盘转矩或角度的大小等,使车辆按照设想的航向行驶;
Apollo横向控制主要由前馈开环控制器和反馈闭环控制器构成,如下图所示:
端到端解决方案
通过使用地图采集车采集的大量真实道路数据,完全基于深度学习构造横向和纵向驾驶模式,快速地在真车上进行了实践;
高精地图
高精地图介绍
Apollo高精地图
高精地图的构建由5个过程组成:数据采集、数据处理、对象检测、手动验证、地图发布;
数据采集
调查车辆使用多种传感器,如GPS、惯性测量单元、激光雷达和摄像机;Apollo定义了一个硬件框架,将这些传感器集成到单个自主系统中,通过支持多种类的传感器,Apollo可以收集各类数据,将这些数据融合,最终生成高精度地图;
数据处理
数据处理指Apollo如何对收集到的数据进行整理、分类以获得没有任何语义信息或注释的初始地图模板;Apollo团队使用人工智能来检测静态对象,并对其进行分类,其中包括车道线、交通标志甚至是电线杆;
对象检测及手动验证
手动验证可确保自动地图的创建过程有序进行并及时发现问题;
地图发布
在经过数据采集、数据处理、对象检测和手动验证后,地图即可发布;在构建和更新地图的过程中,Apollo使用了众包;Apollo高精地图众包可通过智能手机、智能信息娱乐系统甚至是其他自动驾驶车来实现。
定位
GNSS主要依靠卫星定位,其信号容易受到干扰,如玻璃幕墙会不断反射GNSS信号,所以GNSS定位精度大概在米级别;为了提高精度,可以通过建立RTK基站,将两者信号做差分,从而提高GNSS精度到10cm左右,但单纯依靠RTK仍然不够,因为只有车辆靠近RTK基站范围内16.09km左右才能发挥其作用,且GNSS和RTK计算结果是实时的,存在可能跳变的因素,此时需要IMU惯性导航发挥关键作用;IMU可以根据车辆位置和各种速度的叠加做积分,从而预测出车辆的行径位置,提高车辆定位的精确度;当遇到桥洞或隧道时,GNSS的信号会变差,这时需要用点云或视觉定位;通过配合点云地图和实时数据的采集来分析车辆位置,再加上摄像头为主的视觉定位,及GNSS+RTK和IMU的融合,车辆定位可以达到厘米级的精度;
Apollo 2.0多传感器融合定位模块框架:
仿真
Apollo仿真平台开放的功能如下:
数据平台
开发者在本地开发平台中基于Docker开发算法并部署依赖环境,接着将开发好的环境上传到云端的私有Docker Repository中,然后在平台上挑选数据集发起训练任务,Apollo训练平台的云计算调度便会将任务调度到计算集群上执行;这个过程中在云集群的内部,开发者的程序使用数据获取接口获得自动驾驶数据仓库中的数据集;最终由业务管理框架将执行过程、评估的结果和Model返回给可视化平台,完成可视化的调试;
Apollo数据开放平台如下图所示:
仿真场景数据
仿真场景数据包括人工编辑及真实采集的场景,覆盖多种路型、障碍物类型及道路环境,同时开放云端仿真平台,支持算法模块在多场景中并发在线验证,加速算法迭代速度;
自动驾驶虚拟环境:该场景集来源于人工编辑,构造了红绿灯、十字路口、直行车道等多种场景集合,丰富的人工场景编辑有助于快速验证算法的基础能力,加速迭代效率;
实际道路真实场景:该场景集采集于真实道路场景,覆盖了城市的道路中红绿灯、十字路口、直行车道等多种场景集合,可高效验证算法在复杂场景中的处理能力,加速迭代效率;
标注数据
标注数据是为满足深度学习训练需求,经人工标注而生成的数据,标注数据主要包括激光点云障碍物分类、红绿灯检测、road hackers、基于图像的障碍物检测分类、障碍物轨迹预测、场景解析等类型;
演示数据
Apollo开放多种演示数据,旨在帮助开发者调试各模块代码,确保Apollo最新开放的代码模块能够在开发者本地环境运行成功,通过演示数据体验各模块的能力;主要包括车载系统演示数据、标定演示数据、端到端数据、自定位模块演示数据等;
安全平台
Apollo提供创新的4S解决方案:Scan(漏洞扫描)、Shield(安全防御)、See(可视化监控)、Save(免召回修复),来实现全生命周期的车辆信息安全;
汽车信息安全解决方案
Apollo在基于隔离和可信的安全体系下提供了完善的安全框架及系统组件,免受网络入侵,保护用户隐私和汽车信息安全;
Apollo汽车黑匣子
黑匣子在Apollo平台中作为智能汽车的数据记录软硬件产品;
Apollo Pilot安全报告
Apollo Pilot是Apollo平台自动驾驶量产解决方案的总称,是中国首个针对自动驾驶量产的、细分场景与功能的、专业的安全报告,对于推动行业统一标准的建立提供了理论支持;
人机交互接口
适用于Android车辆的CarLife
CarLife是在Android平台上实现CarLife协议;CarLife是一款智能手机集成解决方案,驾驶人可通过多屏共享和交互技术与MD(移动设备)和HU(主机)共享适合安全驾驶条件的移动应用程序,并使用触摸屏、按键、旋钮控制和话筒控制CarLife.
CarLifeVehicleLib
CarLifeVehicleLib是一个基于C++语言的跨平台动态库,实现了HU CarLife中的通道建立、数据发送和接收、协议解析和打包的功能;
DuerOS启动器
DuerOS启动器是Android终端的第一个用户图形交互界面,在终端入口处安装其他应用程序;
DuerOS启动器的特点:
自动驾驶硬件系统,粗略分为:感知、决策、控制3部分,还有定位、地图、预测等模块;
自动驾驶硬件架构如下图所示:
Apollo硬件连接概览图:
Apollo自动驾驶传感器组成:
自动驾驶感知传感器
激光雷达安装在车顶,随车运动的同时进行360°同轴旋转,可提供周围环境的点云信息;激光雷达不仅用于车辆感知,也用于定位和高精地图的测绘;
摄像头光线通过镜头、滤光片到后段的CMOS或CCD集成电路,将光信号转换成电信号,再经过图像处理器(ISP)转换成标准的RAW、RGB或YUV等格式的数字图像信号,再通过数据传输接口传输到计算单元;
毫米波雷达基本原理是发射一束电磁波,通过观察回波和射入波的差异来计算距离和速度,主要分为 24 G {\rm{24G}} 24G和 77 G {\rm{77G}} 77G,安装在保险杆上;
组合导航是两部分,一部分是GNSS板卡,通过天线接收GPS和RTK信号,解析计算出自身的空间位置;但车辆行驶到林荫路或有些建筑物遮挡时,GPS会没有信号或产生多径效应,定位会产生偏移和不准;此时需要通过INS的信息融合来进行组合运算;GNSS+INS融合在一起就是组合导航系统;
不同功能所需的传感器类型如下表所示:
自动驾驶功能 | 超声波雷达 | 摄像头 | 毫米波雷达 | 激光雷达 | 组合导航 |
---|---|---|---|---|---|
自动巡航(ACC) | √ | √ | √ | √ | |
紧急制动(AEB) | √ | √ | √ | ||
行人检测(PD) | √ | √ | √ | ||
交通标志识别(TSR) | √ | ||||
车道偏离警告(LDW) | √ | ||||
泊车辅助(PA) | √ | √ | √ | √ | |
自动驾驶(AP) L 3 ~ L 5 \rm{L3~L5} L3~L5 | √ | √ | √ | √ | √ |
自动驾驶计算单元
自动驾驶汽车计算单元:
自动驾驶计算平台:
自动驾驶线控系统
自动驾驶车辆的线控系统,分减速、转向和加速3部分;
自动驾驶汽车线控系统分为3个版本
1.0 版本需对原车踏板及方向盘进行物理截断的改装,俗称暴力改装,并不符合汽车安全要求,甚至会出现漏油和烧电动机的情况;
2.0 版本利用原车的自动驾驶辅助系统来实现线控;
3.0 版本是完全定制化的方案,百度阿波罗量产巴士使用的是3.0版本,所有线控功能都基于自动驾驶的需求特别定制而成;
EPS与自动驾驶线控系统如下图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。