【Baidu Apollo】硬件开发平台介绍

时间:2024-03-31 08:07:55

1 自动驾驶汽车的事故分析

原文参考王石峰 Apollo开发者社区 

首先分析一个事故案例。今年3月,北美有一个自动驾驶车肇事撞人致死的一个事故,6月22日,美国公路交通安全委员会发布了这个事故报告。报告中显示,在碰撞发生前6秒传感器已经探测到了,碰撞发生前1.5秒,原车的AEB功能已经启动,但其执行机构并没有自动采取相应制动措施,导致整个系统没有闭环。

【Baidu Apollo】硬件开发平台介绍

另外,该事故在交互设计上也有缺陷。当事故发生前,传感器探测到这个人时,并没有提供警报,司机正在低头看手机视频,当他抬头看到这个行人的时候再处理事故已经来不及了。从事故视碰撞前四秒钟的截图可以看出,路面照明不足导致司机很难看到有人过马路。

目前,自动驾驶的车辆以法律法规来说都是改装车,事故车辆是SUV的车型自身重心比较高,所有的传感器都安装在车顶导致重心进一步上移。当产生碰撞的时候更有可能会侧翻。

   

自动驾驶汽车的研发流程

百度提出了“安全是自动驾驶的第一天条”。如何避免类似事故和问题,要从整个研发流程当中去考虑。

【Baidu Apollo】硬件开发平台介绍

首先当研发一辆自动驾驶车辆时,有一个基于仿真模拟器的软件在环我们可以将这看成一个赛车的游戏。在仿真环节中仿真出道路的路面,以及交通的参照物和各种车辆、各种行人,还有一些天气信息,比如雨雾或者路面照明信息。代码跑通了以后,再基于必要的硬件在环平台,在传感器、计算单元等硬件系统上检测有没有运行当中的BUG和兼容性问题。之后基于车辆在环,将相关的软硬件系统集成到车辆平台上在封闭场地中完成相关测试检测代码是否出现了问题。

最后基于司机在环,以百度为例,我们在北京智能网联示范区,北京市*规划的道路上基于实际的道路情况研发测试,不仅能检测自动驾驶系统的情况,还可以获得司机的主观评价和可以验证人机交互的功能。

自动驾驶汽车的硬件系统

自动驾驶的硬件系统,可以粗略地分为感知、决策、控制三部分(还有定位、地图、预测等模块)。自动驾驶不能仅仅考虑系统,还要考虑到人的因素。

【Baidu Apollo】硬件开发平台介绍

从车辆运动方面会考虑到车的速度、转角以及横滚,俯仰、航向等信息。还有一部分是环境感知,比如激光雷达、超声波、摄像头、毫米波雷达、V2X。V2X能提供超视距功能——当车上了路,很难发现超传感器范围的信息,通过V2X设备会发送和接受相关信息,车会接收到前方交通的情况。

另外,驾驶员监测主要是通过摄像头和生物电传感器(放在方向盘里),来判断驾驶员有没有手脱离方向盘。也可以检测司机的精神,比如驾驶员困倦还是精神紧张。

目前L3+级自动驾驶的计算单元主要CPU+GPU+FPGA的架构。T—BOX它向上接的是互联网,向下是接的CAN总线。比如手机有一个APP,通过T-BOX可以控制车门的开关。黑匣子负责记录控制指令和车辆行使状态,事故发生以后可以用黑匣子来进行事故的认定。车辆控制是一些制动、转向、发动机、变速箱,还有警告系统,声音、图像、振动等。

自动驾驶汽车的传感器    

自动驾驶使用的感知类的传感器,主要有激光雷达、毫米波雷达、摄像头、组合导航

【Baidu Apollo】硬件开发平台介绍

激光雷达安装在车顶,目前是360度同轴旋转,可提供周围一圈的点云信息。激光雷达不仅用于车辆感知,也用于定位和高精度地图的测绘。

摄像头光线通过镜头、滤光片到后段的CMOS或CCD集成电路,将光信号转换成电信号,再经过图像处理器(ISP)转换成标准的RAW,RGB或YUV等格式的数字图像信号,再通过数据传输接口传输到计算单元。

毫米波雷达和激光雷达有点类似,基本原理是发射一束电磁波,通过观察回波和射入波的差异来计算距离和速度,主要分24G和77G,它的安装是在保险杠上面。

组合导航是两部分,一部分是GNSS板卡,通过天线接收GPS和RTK信号,解析计算出自身的空间位置。但是当车辆行驶到林荫路,或者是有些建筑物,GPS就会没信号或者产生多径效应,定位就会产生偏移和不准。此时需要通过INS的信息融合来进行组合运算。GNSS+INS融合在一起就是组合导航系统。

【Baidu Apollo】硬件开发平台介绍

此表罗列出了目前一些L1、L2功能所用的传感器,包括自动驾驶L3及以上的传感器。L1、L2的功能传感器也需要多传感器融合,但是融合前的一些算法就直接传输到了MCU。L3+以上的是多传感器融合后的信息传输到计算单元,它从硬件架构上略有差异。从实现上来说,L1、L2会更在意一些误检的情况,比如我们开车突然刹车会很不舒服,而L1、L2主要责任在驾驶员上,所以它对误检会非常在意。但是L3+以上自动驾驶是通过系统去承担主要的驾驶责任,就会对传感器漏检非常在意,这是L1、L2和自动驾驶之间的差异。

【Baidu Apollo】硬件开发平台介绍

如何得知自己到底需要什么样的传感器?我们可以通过这个公式计算出来,刹车距离公式,也就是通过道路摩擦系数去计算。自动驾驶要求局限设计适用范围。目前,我国城市封闭道路限速80,高速最高限速120。通过这个公式能计算出刹车距离,限速120的情况下最少需要150米的探测范围,如果能到200米会更好。如果有冰雪怎么办,是不是我们要看到更远距离?实际不是这样,国家法有规定,高速公路,雾天能见度低于50米的情况下,要求限速到20公里每小时。

【Baidu Apollo】硬件开发平台介绍

分辨率是通过反正切函数来计算的。这里多除以一个2,为什么呢?是为了保证我没有漏检的情况, L3+自动驾驶必须保证百分之百检测到这个物体。所以从这个公式也能得出这张图,0.4度分辨率的传感器在一百米以外就可以探测到行人或者车辆,或者在32米能测到一个路锥。

【Baidu Apollo】硬件开发平台介绍

再分析一下传感器未来的发展趋势。目前多传感器融合,相对来说是后融合。其实摄像头和激光雷达都是光学传感器,它们部分核心的零部件包括一些处理电路,元器件都是非常相似的,有希望能把摄像头和激光雷达前融合到一起。左边的图是Aeye公司做的智能感知系统的融合,可以看到融合后可以直接输出R、G、B、X、Y、Z的信息。右边是Waymo的原形样机,它用的就是这种前融合系统,可以叫LiCam(Lidar+Camera)。    

5  自动驾驶汽车的计算单元

【Baidu Apollo】硬件开发平台介绍

自动驾驶汽车的计算单元,必须考虑到冗余设计。所有的CPU、GPU、FPGA都是双冗余备份,包括总线也是双冗余备份的。当检测系统失效的状况下MCU还能继续工作,这是最后的保障,它发出控制指令给刹车系统,让车辆刹停下来保证安全性。

【Baidu Apollo】硬件开发平台介绍

像这种*集中式的计算也有缺点——整个单元体积比较大,功耗也比较高。自动驾驶车辆后置一个服务器显然不容易产业化,未来产业化是逐步拆分计算量到边缘计算。比如说激光雷达、毫米波、摄像头,都接入到一个Sensor BOX,将对准融合后的数据再传输到计算单元进行处理。从整个自动驾驶汽车来看,也会根据不同的功能设计不同的域控制器,比如车身域控制器、车载娱乐域控制器、动力总成域控制器、自动驾驶域控制器。彼此之间隔离,彼此之间互相不干扰。

【Baidu Apollo】硬件开发平台介绍

Sensor+SOC。举个例子,Dibotics是一个做激光雷达SlAM算法的公司,它将算法写到Renesas的R-car芯片上,写完之后将芯片植入到传感器,在传感器端完成相关算法的运算。

【Baidu Apollo】硬件开发平台介绍

介绍一下整个芯片的流程,芯片设计、芯片制造、芯片封测三个流程。选择芯片设计的IP,再经过EDA进行电子电路布局,做成光罩,经过光刻等多种工艺,生产出一个芯片,再进行芯片的封装。自动驾驶算法芯片主要恒量指标是功耗、算力和面积。目前整个芯片制造是从16纳米向7纳米发展,同等面积7纳米对比16纳米整个运算力会提升40%,功耗会降低60%。

 6 自动驾驶汽车的线控系统

【Baidu Apollo】硬件开发平台介绍

自动驾驶车辆的线控系统,分减速转向加速三大部分。

【Baidu Apollo】硬件开发平台介绍

上图是大陆的线控制动解决方案。MK C1将制动助力以及制动压力控制模块(ABS、ESC)集成一个制动单元当这个失效的时候还有一个MK 100保证冗余。

【Baidu Apollo】硬件开发平台介绍

自动驾驶车辆的线控转向系统,自动驾驶线控和传统车辆的EPS非常类似,唯一的差异就是在于冗余。右图是英菲尼迪Q50线控转向系统,基本上还是延续了传统转向系统的结构。只是增加了一套离合、三组ECU、冗余转向电机和力度回馈器。

【Baidu Apollo】硬件开发平台介绍

自动驾驶车辆的加速线控系统,以往的车辆都有一个油门拉线,油门踏板通过拉线控制气门开合。目前都是直接通过发动机管理系统来控制电子油门。

【Baidu Apollo】硬件开发平台介绍

自动驾驶汽车的线控系统可分为三个版本,1.0版对原车的踏板及方向盘进行了物理截断的改装,也是俗称的暴力改装,由于是后改的并不符合安全性,有时候会漏油和烧电机的情况。2.0版是通过借用原车的ADAS系统来实现线控。3.0版则完全是定制化的,百度阿波龙目前是3.0版,所有的线控都是基于自动驾驶的需求,特别定制化的。

Apollo硬件开发平台

【Baidu Apollo】硬件开发平台介绍

7月4号,百度开发者大会也推出了硬件开发平台,新增了15种硬件传感器,发布了Apollo传感器单元,添加了底层硬件抽象层。

【Baidu Apollo】硬件开发平台介绍

硬件开发平台的传感器单元,就是前面介绍的Sensor Box,将所有的传感器数据都统一到传感器单元中,完成时间戳的同步将获得的数据传输到后端的计算单元来进行处理。

【Baidu Apollo】硬件开发平台介绍

后续会发布AXU可以提供更多的扩展性,支持更多的硬件设备,满足不同开发者的需求。Apollo硬件开发平台会完成相关硬件厂家设备的准入工作,涉及到的内核驱动也会在Github上完成合入。

【Baidu Apollo】硬件开发平台介绍

用户空间库是给用户进行一些自定义的。比如每一款车的CAN总线协议是不同的,可以将相关CAN协议指令写在这里。硬件抽象层主要提供数据格式转换和API的功能。另外,添加了硬件抽象层可以保证当某一硬件出现故障时不会导致整个系统崩溃。

【Baidu Apollo】硬件开发平台介绍

从VSI发布自动驾驶产业布局图中可以看出自动驾驶产业,是汽车、新能源、IT通讯、交通运输、半导体、人工智能、互联网等多个10万亿巨无霸产业的跨界融合体。自动驾驶汽车是物质流、能量流、信息流的聚合体,需要行业各方深度合作。只有软硬件深度整合,打通藩篱跨界的企业才能摘得皇冠上的明珠。