目录
1)Uber事故原因分析
2)自动驾驶的第一天条-----安全
3)自动驾驶汽车的硬件系统
4)自动驾驶汽车感知类传感器介绍
5)自动驾驶汽车的传感器
6)自动驾驶的计算单元
7)自动驾驶的线控系统
8)Apollo硬件开发平台
原创: 阿波君 Apollo开发者社区 1周前
在上周,阿波君为大家具体介绍百度Apollo开放平台的基本情况。本期,阿波君将为大家介绍一下Apollo硬件开发平台。
话不多说,欢迎各位开发者一起进入进阶课程第五期。
事故发生在2018年3月18日晚间,一辆正在进行无人驾驶测试的Uber车在美国亚利桑那州Tempe市撞上一名行人。该行人被送医,随后被宣告抢救无效死亡。
根据初步调查结果,Uber车辆在撞上该名行人时,正处在自动驾驶状态,这是史上首例自动驾驶车辆在公开路面撞伤行人致死的案例。此事件,对无人驾驶敲响关于安全的警钟。
2018年6月22日美国公路委员会发布事故报告:
在事故发生的前6秒,系统的传感器已经发现行人;在事故发生的前1秒,原车的应急制动AEB已经启动,但汽车并没有实施制动,原因是Uber在改装沃尔沃cx90时,对原车的刹车系统进行截断,由后续改装的电脑来发射控制指令,进行刹车。
系统没有一个完全闭环的状态(主因);
驾驶员低头在玩手机,系统检测到行人后没有发出警告;
自动驾驶和基础设施是相关的,事故发生前4秒路面的照明不足导致从照片上看不出行人。
Uber之前还发生过其他交通问题,比如车辆剐蹭,直接侧翻等。
原因在于,Uber后来加装的车辆传感器(Velodyne 64线)比较重,并且SUV中心点较高,加装传感器后重心上移,转急弯时容易侧翻。
从自动驾驶研发的流程角度看,大致可以分为以下4个步骤:
软件在环 软件在环是基于仿真和模拟的软件仿真,类似于赛车类游戏。即是在软件系统里仿真模拟出真实的道路环境如光照、天气等自然环境,开发者可将自动驾驶代码开发完毕后,在仿真系统内运行,测试是否可以实现目标。
硬件在环 硬件在环是基于必要的硬件平台。在第一步的软件仿真结束后,将所有的仿真结果与传感器、计算单元集合在一起,在硬件环境里测试。
车辆在环 车辆在环是基于车辆执行。在第二步硬件环境里测试完成后实施的第三步,即在一个封闭环境中测试开发者所开发功能,封闭环境中不会有交通流的干扰。
司机在环 司机在环是基于实际道路。在第三步测试成功后进入到司机在环,司机在环主要是研究人——车——路——交通四者之间的相互作用,它不仅测试自动驾驶的程序代码,还能获得专业司机的评判。
以上四步是整个自动驾驶研发的流程,按照以上的流程研发能够保证自动驾驶足够的安全性。
自动驾驶分为三大系统:感知、决策和控制,每个系统里有对应的硬件系统。
感知系统分为汽车运动、环境感知和驾驶员监测三部分。
车辆运动主要分为惯性导航、速度传感器、角度传感器和全球定位系统。
环境感知主要分为激光雷达、超声波、摄像头、毫米波雷达、V2X。
驾驶员监测主要分为摄像头和生物电传感。
决策系统分为计算单元、T-BOX和黑匣子三部分。
计算单元里是自动驾驶感知决策控制的算法。目前自动驾驶用的是X86结构的服务器或工控机。
T-BOX即Telematics BOX,是车联网的通讯网关,它上接互联网下接CAN总线。例如手机上APP发送的开关门指令,都是通过T-BOX网关将操作指令发送到CAN总线来进行操控的。
黑匣子是用来记录无人驾驶过程中所有的信息和状态。
控制系统部分分为车辆控制和警告系统。
车辆控制主要分为制动、转向、发动机和变速箱。警告系统主要分为声音、图像和震动 。
以上是整个自动驾驶硬件系统的构架。
下面介绍自动驾驶汽车感知类传感器。
摄像头主要是用于车道线、交通标识牌、红绿灯、车辆和行人的检测。它的优点是检测信息全面且价格便宜,缺点是性能受天气影响较大。
摄像头主要由镜头、镜头的模组、滤光片、CMOS/CCD、ISP和数据传输这几部分组成。摄像头分为单目和双目。
摄像头的基本工作原理:光线通过摄像头前面的镜头和滤光片聚焦到后面的CMOS的Sensor上.
Sensor将光信号进行曝光转化成电信号,然后通过ISP图像处理器转化成标准的RGB或者YUV的数据格式,最后传输到后端的计算机进行处理。
激光雷达的核心原理是TOF(Time of Flight),即一束光射出后碰到障碍物后,光会发生回波,并在APD上进行接收和计算光折返的距离。
根据它的扫描原理激光雷达可以分为同轴旋转、棱镜旋转、MEMS、OPA相控阵以及Flash。 激光雷达不光是用于感知,地图类的测绘和定位也会使用到需要它。
毫米波雷达主要用于交通车辆的检测。毫米波雷达主要是由射频天线、芯片和算法组成,基本原理是发射一束电磁波,然后观察电磁波回波的摄入差异来计算距离和速度。
它的优点是检测速度快且较准确,不受天气情况干扰,缺点是不能对车道线进行识别检测。
组合导航是通过GNSS板卡接收所有可见的GPS卫星信号并进行计算,从而得出被检物体在大地坐标系中的空间位置。
当车辆通过隧道、有建筑物群和树荫遮挡等路段时,GPS信号会产生遮挡不能提供很好的结算和实时导航,所以这种情况下需要融合惯性导航的信息。
惯性导航是一个完全封闭的系统,不受外界影响,可以直接给出车身的位置、速度和姿态。
自动驾驶汽车传感器的安装位置一般是:
激光雷达是360°旋转的,所以它都是安装在车顶;
毫米波雷达的指向性很强,所以的它一般安装在前后保险杠上;
考虑到车身在道路上的俯仰和姿态的干扰,所以组合导航系统一般是安装在两个后车轮的中轴线上;
车身的360°都会安装摄像头。
上图总结了自动驾驶所使用到的传感器。
自动巡航、应急制动、行人检测都是L1、L2级的功能。
欧洲的标准是2017年强制性具备AEB功能的车辆;美国的标准是让到2020年让所有的车具备辅助驾驶、车道偏离和AEB功能;
中国的标准是到2018年将自动驾驶L1级的功能AEB列为强制标准,这些强制标准主要是用于商用车、卡车和客车。
下面简单介绍L1、L2目前量产的方案和百度以及很多人工智能公司研发的L3+以上的方案的差异。
L1、L2级别最怕的是传感器误检,例如正在开车时传感器发生误检,随后急刹车会让驾驶感受很差。L1、L2的算法会避免一定的误检率。
L3以上关注的是传感器漏检,驾驶的主体是一个系统,一定不能让系统的传感器段出现漏检情况。
这是目前传统车企和一些AI公司在自动驾驶上针对传感器两个重大的理念差异。
目前L4的适应范围是城市道路和高速路的一些自动驾驶,我国的高速路的限速是120km/h,根据道路摩擦系数可计算出不同速度下的刹车距离。加上整个系统反应时间,根据数学公式计算出下表。
目前自动驾驶的整个系统反应时间会在500毫秒之内,车辆制动是液压需要0.3~0.5秒,卡车用的气刹需要0.8秒。
目前市面上在售车,绝大多数都是低于这个技术指标,说明在售车性能都很好。从目前来看,对于传感器的要求,能测到150米已足够。
这是一个三角函数反正切函数,但是这个公式会多除以一个2,是为了避免漏检。
当激光雷达的两束线的角度之间有一个物体, 正好处于检测边缘它会产生一定的漏检,除以2是为了保证在每一个角度上都不会产生漏检。
在0.4°这个分辨率之下我们在100米外其实就可以检测到一个人、车或骑行者。
在0.1°这个分辨率之下我们在400米外其实就可以检测到一个人、车或骑行者。
但是能检测到并不意味着自动驾驶系统能识别出来,只有一条线的这种成像或者低分辨率的成像,自动驾驶还是识别不了。
目前百度Apollo平台,我们在同一车上用激光雷达4到5根线才可以很好地对障碍物进行分类。
现在像Velodyne 64线的激光雷达,0.4°分辨率下他的物体感知距离是50米。
未来自动驾驶传感器的趋势:自动驾驶传感器离不开多传感器的融合。激光雷达和摄像头都属于光学类的传感器,它们核心零部件和处理电路很相似,
未来有可能将激光雷达和摄像头前端融合到一起,直接输出RGB、 XYZ融合后的颜色加点云信息,然后传输到后端的计算来进行处理。
美国创业公司Aeye开发的iRADAR系统,它不仅能真实的体现出二维世界的彩色信息,而且能将点云的信息叠加,每个像素点不仅有颜色信息还有空间坐标信息。
上图是自动驾驶汽车的计算单元架构。
在自动驾驶汽车的计算单元部分,需要考量整体的车规、电磁干扰和振动方面的设计以及ISO-26262标准的要求。
所有的CPU、GPU、FPGA、MCU和总线都要做冗余设计,以防止单点故障。
目前计算单元都是集中式的架构,即将所有的工作都放到一个工控机当中。
这种架构的缺点是体积大、功耗高,不适应未来的量产;优点是方便代码的快速迭代,工控机卡槽的设计方便硬件更新和扩展 。
由于集中式的缺点,未来将会考虑嵌入式的方案。将各传感器的原始数据先融合到一个Sensor Box中,在其中完成数据融合, 然后将融合后的数据给到后端计算平台处理。
Sensor Box作用:目前所用传感器给出的原始数据该如何判断融合完成后是否是判断同一个目标,需要有一个时间戳同步,保证这个时间戳下每个传感器探测的都是同一个坐标系,时间戳的同步是在Sensor Box里面完成的。
这种方案将原来集中式计算的功能拆解出来,可以降低整体系统的功耗,但是不足以面向更多的量产化。
芯片设计流程
下面介绍芯片的设计流程。
我们现在开发的自动驾驶算法,当感知算法固化后可以做成专用的芯片。
ASIC的芯片是基于特定需求的特殊定制芯片,它的优点是比普通的GPU和FPGA体积更小、功耗更低、性能稳定和可量产。
现在的半导体产业非常成熟。自动驾驶算法公司只需做好芯片的前端设计,比如将算法固化下来,然后选择适用的IP核,最后进行EDA (电子自动化设计), 将芯片设计完的电路图再交由后端,像台积电这种芯片制造企业进行流片的生产。
芯片设计流程整体分为芯片设计、芯片制造、芯片封装三部分。现在整个半导体产业正在从深紫外(DOV)向极紫外(EUV)发展。
半导体正步入7纳米时代,新工艺对性能带来很大提升。对比16纳米工艺,7纳米工艺可提升40%性能,节省60%能耗。
自动驾驶线控系统(control by wire)指的是汽车的控制是由一些简单命令完成的,而不是由物理操作完成的。
线控部分相当于人的手和脚,在线控系统里执行上端的命令。主要分为三大部分:减速控制、转向控制和加速控制。
传统汽车的这些控制由液压系统和真空助力泵协助完成,自动驾驶汽车的线控需要用电控化的零部件来完成,如电子液压制动系统(EHB)。
大陆制动解决方案
上图是大陆制动的解决方案。它的MK C1集成液压和制动的模块,利用紧凑且轻重量的设计节省制动单元,通过电信号发出的制动信号也使制动距离更短。
MK100使用的ESC(车身电子稳定系统)可与MK C1之间进行相互备份。当MK C1系统失效时由MK100来接管。
从原理图上来看,大陆制动的所有的供电、执行、线路和管路图都是双备份的,极大地提高安全性,但是该系统只适用于乘用车。像卡车、客车等商用车都是通过气刹系统制动的。
目前很多自动驾驶车都使用EPS(电子助力转向系统)。EPS直接使用转向管柱与下面的齿条相结合,没有采用电控制。
自动驾驶汽车的线控系统
如英菲尼迪Q50的转向系统中,由离合器进行转向管柱的截断,当车辆启动时离合器松开,所有的自动驾驶指令都通过ECU(电子控制元件)发送控制指令到下端两个转向电机上,进行转向控制。
线控油门是对自动驾驶车辆加速度的控制,减速刹车踏板上有位置传感器可检测到刹车深浅度,该传感器传送指令到EMS(发动机制动系统)后,气门进气量越多,加速度即越快。
自动驾驶汽车的线控系统
自动驾驶汽车目前大多是新能源车,新能源车通过驱动电机的扭力控制来完成对加速度的控制,从整个线控化来看,分为三个阶段:
1.0 对原车的方向盘踏板进行改装,将一些转向管柱截断后,加装转向电机,通过控制电机进行转向,缺点是未经过原车系统测试验证,存在安全隐患。
2.0 基于原车的辅助驾驶系统,对Can总线协议进行破解,通过原车总线指令控制车的转向和制动。
3.0 从车底盘开始开发的一套系统,转向线控完全按照自动驾驶需求定制,与2.0的区别在于考虑到冗余和备份的需求。
2018年7月4日,Apollo硬件开发平台正式发布,新增15家硬件厂商选型,也发布了Apollo传感器单元。
添加底层的抽象层后(将原来的硬件参考设计升级为硬件开发平台),硬件开发平台内容更加丰富了。
有开发者提出,百度提供的硬件参考设计,目前要么买不到,要么供货周期很长。
基于这些诉求,我们丰富了硬件的选型,将通过我们测试验证的传感器、工控机、控制单元进行发布,以方便开发者进行选购。
在百度目前提供的参考设计中,我们将其分为Apollo平台认证及Apollo硬件开发平台认证。
Apollo平台认证是指百度目前正在使用的传感器经认证后公布出来。例如Velodyne 64线激光雷达就属于Apollo平台认证产品,我们会基于正在使用的传感器提供数据集。
Apollo硬件开发平台认证,则是在Apollo代码层面进行验证,如感知模块的数据化采集标注和模型的训练的额外工作,还需要开发者自己完成。
后续Apollo会继续丰富生态圈,继续提供芯片和传感器的支持及选型。
传感器单元(Sensor Box)将所有的传感器信息融合到传感器单元中,完成整个时间戳的对准,将前处理的数据传输到后端的工控机计算单元上进行处理.
这是根据百度在使用传感器开发出来的,不一定适用所有开发者。后续Apollo将推出AXU扩展单元,附带PCI卡槽的单元将更加灵活。
在Apollo的抽象层中,有硬件接口,比如说内核驱动、USP Library(用户空间库)等。
USP Library(用户空间库)主要用在Can总线协议中。因为每个车厂/车型/批次其Can总线协议都不同,将控制指令信息写在USP Library中进行操控。
Apollo开发平台中,还有HAL硬件抽象层,这为了防止单一硬件短路而导致整个系统硬件内核崩溃的中间开发层。不同的硬件厂家可以选择开放所有源代码,或将编译后的代码发布在Apollo平台上。
Apollo完成代码核入的工作后会发布在GitHub上,开发者不需要针对不同硬件选型去开发不同的驱动。
最后,是VSI发布的自动驾驶产业链布局图。
自动驾驶产业是汽车新能源、IT、交通通讯、半导体人工智能、移动互联网等多个10万规模产业亿聚的大型聚合产业。
自动驾驶汽车是物质流、能量流、信息流的聚合体,需要软硬件行业的深度整合和合作才能保证自动驾驶产业的成功落地。
阿波君说:
在学习过程中,开发者不仅可以在Apollo开发者社区小程序上对课程内容进行提问,还可以在开发者微信群中交流学习心得,共同学习自动驾驶技术。
开发者社区还将在公众号上定期推送课程相关的技术干货,全程陪伴大家共同进步。祝Apollo开发者们顺利完成《Apollo自动驾驶进阶课程》的学习,在自动驾驶道路上越走越远!
阿波君还欢迎大家在小程序的问答板块内晒出学习笔记,也可以加入开发者交流社群与大家交流互动,有好礼相送!
观看/阅读完该节课程后在开发者社群及小程序「社区问答」版块内上传你的课程笔记截图;手写笔记/电脑文档均可即可联络社区小助手获取百度周边纪念品1份。赶快来撩吧~比心~