Apollo进阶课程 ⑤ | Apollo硬件开发平台介绍

目录

1)Uber事故原因分析

2)自动驾驶的第一天条-----安全

3)自动驾驶汽车的硬件系统

4)自动驾驶汽车感知类传感器介绍

5)自动驾驶汽车的传感器

6)自动驾驶的计算单元

7)自动驾驶的线控系统

8)Apollo硬件开发平台


原文链接 :进阶课程 ⑤ | Apollo硬件开发平台介绍 

在上周,阿波君为大家具体介绍百度Apollo开放平台的基本情况。本期,阿波君将为大家介绍一下Apollo硬件开发平台。

话不多说,欢迎各位开发者一起进入进阶课程第五期。


1)Uber事故原因分析

事故发生在2018年3月18日晚间,一辆正在进行无人驾驶测试的Uber车在美国亚利桑那州Tempe市撞上一名行人该行人被送医,随后被宣告抢救无效死亡。

根据初步调查结果,Uber车辆在撞上该名行人时,正处在自动驾驶状态,这是史上首例自动驾驶车辆在公开路面撞伤行人致死的案例。此事件,对无人驾驶敲响关于安全的警钟。

2018年6月22日美国公路委员会发布事故报告:

在事故发生的前6秒,系统的传感器已经发现行人;在事故发生的前1秒,原车的应急制动AEB已经启动,但汽车并没有实施制动,原因是Uber在改装沃尔沃cx90时,对原车的刹车系统进行截断,由后续改装的电脑来发射控制指令,进行刹车。

  • 系统没有一个完全闭环的状态(主因);

  • 驾驶员低头在玩手机,系统检测到行人后没有发出警告;

  • 自动驾驶和基础设施是相关的,事故发生前4秒路面的照明不足导致从照片上看不出行人。

Uber之前还发生过其他交通问题,比如车辆剐蹭,直接侧翻等。

原因在于,Uber后来加装的车辆传感器(Velodyne 64线)比较重,并且SUV中心点较高,加装传感器后重心上移,转急弯时容易侧翻。


2)自动驾驶的第一天条-----安全

从自动驾驶研发的流程角度看,大致可以分为以下4个步骤:

软件在环  软件在环是基于仿真和模拟的软件仿真,类似于赛车类游戏。即是在软件系统里仿真模拟出真实的道路环境如光照、天气等自然环境,开发者可将自动驾驶代码开发完毕后,在仿真系统内运行,测试是否可以实现目标。

硬件在环  硬件在环是基于必要的硬件平台。在第一步的软件仿真结束后,将所有的仿真结果与传感器、计算单元集合在一起,在硬件环境里测试。

车辆在环  车辆在环是基于车辆执行。在第二步硬件环境里测试完成后实施的第三步,即在一个封闭环境中测试开发者所开发功能封闭环境中不会有交通流的干扰。

司机在环  司机在环是基于实际道路。在第三步测试成功后进入到司机在环,司机在环主要是研究人——车——路——交通四者之间的相互作用,它不仅测试自动驾驶的程序代码,还能获得专业司机的评判。

以上四步是整个自动驾驶研发的流程,按照以上的流程研发能够保证自动驾驶足够的安全性。


3)自动驾驶汽车的硬件系统

自动驾驶分为三大系统:感知、决策和控制,每个系统里有对应的硬件系统。 

感知系统分为汽车运动、环境感知和驾驶员监测三部分。

车辆主要分为惯性导航、速度传感器、角度传感器和全球定位系统。

环境感知主要分为激光雷达、超声波、摄像头、毫米波雷达、V2X。

驾驶员监主要分为摄像头和生物电传感。

决策系统分为计算单元、T-BOX和黑匣子三部分。

计算单元里是自动驾驶感知决策控制的算法。目前自动驾驶用的是X86结构的服务器或工控机。

T-BOX即Telematics BOX,是车联网的通讯网关,它上接互联网下接CAN总线。例如手机上APP发送的开关门指令,都是通过T-BOX网关将操作指令发送到CAN总线来进行操控的。

黑匣子是用来记录无人驾驶过程中所有的信息和状态。

控制系统部分分为车辆控制和警告系统。

车辆控制主要分为制动、转向、发动机和变速箱。警告系统主要分为声音、图像和震动 。

以上是整个自动驾驶硬件系统的构架。


4)自动驾驶汽车感知类传感器介绍

下面介绍自动驾驶汽车感知类传感器。

摄像头主要是用于车道线、交通标识牌、红绿灯、车辆和行人的检测。它的优点是检测信息全面且价格便宜,缺点是性能受天气影响较大。

摄像头主要由镜头、镜头的模组、滤光片、CMOS/CCD、ISP和数据传输这几部分组成。摄像头分为单目和双目。

摄像头的基本工作原理:光线通过摄像头前面的镜头和滤光片聚焦到后面的CMOS的Sensor上.

Sensor将光信号进行曝光转化成电信号,然后通过ISP图像处理器转化成标准的RGB或者YUV的数据格式,最后传输到后端的计算机进行处理。

激光雷达的核心原理是TOF(Time of Flight),即一束光射出后碰到障碍物后,光会发生回波,并在APD上进行接收和计算光折返的距离。

根据它的扫描原理激光雷达可以分为同轴旋转、棱镜旋转、MEMS、OPA相控阵以及Flash。 激光雷达不光是用于感知,地图类的测绘和定位也会使用到需要它。

毫米波雷达主要用于交通车辆的检测。毫米波雷达主要是由射频天线、芯片和算法组成,基本原理是发射一束电磁波,然后观察电磁波回波的摄入差异来计算距离和速度。

它的优点是检测速度快且较准确,不受天气情况干扰,缺点是不能对车道线进行识别检测。

组合导航是通过GNSS板卡接收所有可见的GPS卫星信号并进行计算,从而得出被检物体在大地坐标系中的空间位置。

当车辆通过隧道、有建筑物群和树荫遮挡等路段时,GPS信号会产生遮挡不能提供很好的结算和实时导航,所以这种情况下需要融合惯性导航的信息。

惯性导航是一个完全封闭的系统,不受外界影响,可以直接给出车身的位置、速度和姿态。

自动驾驶汽车传感器的安装位置一般是:

激光雷达是360°旋转的,所以它都是安装在车顶

毫米波雷达的指向性很强,所以的它一般安装在前后保险杠

考虑到车身在道路上的俯仰和姿态的干扰,所以组合导航系统一般是安装在两个后车轮的中轴线

车身的360°都会安装摄像头


5)自动驾驶汽车的传感器

上图总结了自动驾驶所使用到的传感器。

自动巡航、应急制动、行人检测都是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系统,它不仅能真实的体现出二维世界的彩色信息,而且能将点云的信息叠加,每个像素点不仅有颜色信息还有空间坐标信息。


6)自动驾驶的计算单元

上图是自动驾驶汽车的计算单元架构。

在自动驾驶汽车的计算单元部分,需要考量整体的车规、电磁干扰和振动方面的设计以及ISO-26262标准的要求。

所有的CPU、GPU、FPGA、MCU和总线都要做冗余设计,以防止单点故障。

目前计算单元都是集中式的架构,即将所有的工作都放到一个工控机当中。

这种架构的缺点是体积大、功耗高,不适应未来的量产;优点是方便代码的快速迭代,工控机卡槽的设计方便硬件更新和扩展 。

由于集中式的缺点,未来将会考虑嵌入式的方案。将各传感器的原始数据先融合到一个Sensor Box中,在其中完成数据融合, 然后将融合后的数据给到后端计算平台处理。

Sensor Box作用目前所用传感器给出的原始数据该如何判断融合完成后是否是判断同一个目标,需要有一个时间戳同步,保证这个时间戳下每个传感器探测的都是同一个坐标系,时间戳的同步是在Sensor Box里面完成的。  

这种方案将原来集中式计算的功能拆解出来,可以降低整体系统的功耗,但是不足以面向更多的量产化。

                                                                                                                            芯片设计流程

下面介绍芯片的设计流程。

我们现在开发的自动驾驶算法,当感知算法固化后可以做成专用的芯片。

ASIC的芯片是基于特定需求的特殊定制芯片,它的优点是比普通的GPU和FPGA体积更小、功耗更低、性能稳定和可量产。

现在的半导体产业非常成熟。自动驾驶算法公司只需做好芯片的前端设计,比如将算法固化下来,然后选择适用的IP核,最后进行EDA (电子自动化设计), 将芯片设计完的电路图再交由后端,像台积电这种芯片制造企业进行流片的生产。

芯片设计流程整体分为芯片设计、芯片制造、芯片封装三部分。现在整个半导体产业正在从深紫外(DOV)向极紫外(EUV)发展。

半导体正步入7纳米时代,新工艺对性能带来很大提升。对比16纳米工艺,7纳米工艺可提升40%性能,节省60%能耗


7)自动驾驶的线控系统

自动驾驶线控系统(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的区别在于考虑到冗余和备份的需求。


8)Apollo硬件开发平台

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万规模产业亿聚的大型聚合产业。

自动驾驶汽车是物质流、能量流、信息流的聚合体,需要软硬件行业的深度整合和合作才能保证自动驾驶产业的成功落地。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用tcpdump,adb进行手机抓包

准备 手机 root PC安装ADB 下载压缩包,解压即可 链接:https://pan.baidu.com/s/1Hv-IqpQutBVTHuriakQUTg 提取码:q57q 配置环境变量 在系统环境Path中添加 adb.exe 的地址 验证安装 adb version 出现版本,即为成功 开启adb服…

依赖注入和控制反转的理解,写的太好了。

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及…

Apollo进阶课程 ⑥ | 高精地图与自动驾驶的关系

目录 1)高精地图与自动驾驶 2)什么是高精地图 3)高精地图与导航地图 4)高精地图---无人驾驶的核心基础模块 5)高精地图与定位模块的关系 6)高精地图与感知模块的关系 7)高精地图与规划、…

【POJ - 1275】Cashier Employment(差分约束,建图)

题干: A supermarket in Tehran is open 24 hours a day every day and needs a number of cashiers to fit its need. The supermarket manager has hired you to help him, solve his problem. The problem is that the supermarket needs different number of c…

InfluxDB 简介、安装和简单使用

简介 InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据…

4)机器学习基石笔记 Lecture4:Feasibility of Learning

目录 1)Learning is Impossible 2)Probability to the Rescue 3)Connection to Learning 4)Connection to Real Learning 上节课我们主要介绍了机器学习问题的类型,主要是二元分类和回归问题。本节课,我…

Java注解全面解析

1.基本语法 注解定义看起来很像接口的定义。事实上,与其他任何接口一样,注解也将会编译成class文件。 Target(ElementType.Method)Retention(RetentionPolicy.RUNTIME)public interface Test {} 除了符号以外,Test的定义很像一个空的接口。…

ubuntu18.04下安装grafana6和简单使用

ubuntu18.04下安装grafana6 环境 ubuntu18.04 下载 sudo apt-get install -y adduser libfontconfig1 # 使用wget 下载会很慢 # 推荐百度网盘:链接:https://pan.baidu.com/s/1y2I4LwuslB5kHAZwV8RNxw 提取码:o19t # 或者csdn:[gr…

VMware虚拟机下安装Ubuntu16.04镜像完整教程

目录 1)安装前准备 2)安装Ubuntu 16.04镜像 3)One More Thing 1)安装前准备 PC电脑操作系统是WIN7,已正确安装虚拟机VMware 12。 2)安装Ubuntu 16.04镜像 下载Ubuntu镜像文件,下载链接为…

JAVA 注解的基本原理

以前,『XML』是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,『XML』的内容也越来越复杂,维护成本变高。 于是就有人提出来一种标记式高耦合的配置方式,『注解』…

查看ubuntu系统的版本信息

目录 1)查看linux内核、gcc版本、ubuntu版本 2)显示linux的内核版本和系统是多少位 1)查看linux内核、gcc版本、ubuntu版本 显示如下 Linux version 4.15.0-29-generic (builddlcy01-amd64-024) linux内核版本号 gcc version 5.4…

框架基础——全面解析Java注解

阅读目录 一、概念二、Java中的常见注解三、注解的分类四、自定义注解五、注解的项目实战六、注解总结 为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码&…

CS231n Convolutional Neural Networks for Visual Recognition------Scipy and MatplotlibTutorial

源链接为:http://cs231n.github.io/python-numpy-tutorial/。 这篇指导书是由Justin Johnson编写的。 在这门课程中我们将使用Python语言完成所有变成任务!Python本身就是一种很棒的通用编程语言,但是在一些流行的库帮助下(numpy&…

Python之Numpy入门实战教程(1):基础篇

Numpy、Pandas、Matplotlib是Python的三个重要科学计算库,今天整理了Numpy的入门实战教程。NumPy是使用Python进行科学计算的基础库。 NumPy以强大的N维数组对象为中心,它还包含有用的线性代数,傅里叶变换和随机数函数。 强烈建议大家将本文中…

Go初识与问题

变量&常量 变量 命名 由字母、数字、下划线组成,首个字符不能是数字关键字、保留字不能作为变量名变量名字区分大小写驼峰命名声明 1. var : 全局变量var 变量名称 类型var 变量名称1,变量名称2 类型 (同一种类型)var (变量名称1 类型1变量名称2 类型…

1.3)深度学习笔记------浅层神经网络

目录 1)Neural Network Overview 2)Neural Network Representation 3)Computing a Neural Network’s Output(重点) 4)Vectorizing across multiple examples 5)Activation functions 6&a…

SpringMVC 的执行流程

SpringMVC 的执行流程 1)用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet捕获; 2)DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI&…

kafka初识

kafka中文文档 本文环境:ubuntu:18.04 kafka安装、配置与基本使用(单节点) 安装kafka 下载 0.10.0.1版本并解压缩 > tar -xzf kafka_2.11-0.10.0.1.tgz > cd kafka_2.11-0.10.0.1.tgzkafka简单配置 > vi config/server.properties主要注意三个地方&a…

1.4)深度学习笔记------深层神经网络

目录 1)Deep L-layer neural network 2)Forward Propagation in a Deep Network(重点) 3)Getting your matrix dimensions right 4)Building blocks of deep neural networks 5)Forward and Backward Propagation…

Struts1工作原理

Struts1工作原理图 1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。(面…