汽车自动驾驶汽车硬件与软件技术.docx

上传人:b****0 文档编号:280211 上传时间:2022-10-08 格式:DOCX 页数:17 大小:504.92KB
下载 相关 举报
汽车自动驾驶汽车硬件与软件技术.docx_第1页
第1页 / 共17页
汽车自动驾驶汽车硬件与软件技术.docx_第2页
第2页 / 共17页
汽车自动驾驶汽车硬件与软件技术.docx_第3页
第3页 / 共17页
汽车自动驾驶汽车硬件与软件技术.docx_第4页
第4页 / 共17页
汽车自动驾驶汽车硬件与软件技术.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

汽车自动驾驶汽车硬件与软件技术.docx

《汽车自动驾驶汽车硬件与软件技术.docx》由会员分享,可在线阅读,更多相关《汽车自动驾驶汽车硬件与软件技术.docx(17页珍藏版)》请在冰豆网上搜索。

汽车自动驾驶汽车硬件与软件技术.docx

汽车自动驾驶汽车硬件与软件技术

自动驾驶汽车硬件与软件技术

概要:

本文详细介绍了自动驾驶汽车的硬件和软件,以及所需要做的准备工作,每个研发者或者准备投身于无人驾驶领域的人都应该好好看一下。

全球有数不清的公司在忙着研发自动驾驶汽车,他们的产品也千奇百怪,不过基本思路和核心技术是类似的,本文详细介绍了自动驾驶汽车的硬件和软件,以及所需要做的准备工作,每个研发者或者准备投身于无人驾驶领域的人都应该好好看一下。

大家都知道智能车(IntelligentVehicle)是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,它集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技术,是典型的高新技术综合体。

自动驾驶的关键技术依次可以分为环境感知、行为决策、路径规划和运动控制四大部分。

自动驾驶理论听上去很简单,四大关键技术,但到底如何实现的呢?

Google从2009年开始做自动驾驶,到现在已有8个年头。

8个年头的技术积累还无法将自动驾驶技术量产落地,可见自动驾驶技术并不简单。

自动驾驶是一个庞大而且复杂的工程,涉及的技术很多,而且太过细致。

我从硬件和软件两方面谈一谈自动驾驶汽车所涉及的技术。

硬件

离开硬件谈自动驾驶都是耍流氓。

先看个图,下图基本包含了自动驾驶研究所需要的各种硬件。

然而,这么多传感器并不一定会同时出现在一辆车上。

某种传感器存在与否,取决于这辆车需要完成什么样的任务。

如果只需要完成高速公路的自动驾驶,类似Tesla的AutoPilot功能,那根本不需要使用到激光传感器;如果你需要完成城区路段的自动驾驶,没有激光传感器,仅靠视觉是很困难的。

自动驾驶系统工程师要以任务为导向,进行硬件的选择和成本控制。

有点类似于组装一台计算机,给我一份需求,我就给你出一份配置单。

汽车

既然要做自动驾驶,汽车当然是必不可少的东西。

从上汽做自动驾驶的经验来看,做开发时,能不选纯汽油车就别选。

一方面是整个自动驾驶系统所消耗的电量巨大,混动和纯电动在这方面具有明显优势。

另一方面是发动机的底层控制算法相比于电机复杂太多,与其花大量时间在标定和调试底层上,不如直接选用电动车研究更高层的算法。

国内也有媒体专门就测试车辆的选择做过调研。

「为什么谷歌、苹果不约而同的选择了雷克萨斯RX450h(混动汽车)?

」「科技公司测试自己的自动驾驶技术时,对于测试车的选择又都有哪些讲究?

」等问题。

他们得出的结论是「电」和「空间」对无人车改装至关重要,其次从技术层面上对车的「熟悉程度」是另外一个因素,因为如果不和车企合作改装,需要「Hack(侵入)」某些控制系统。

控制器 

在前期算法预研阶段,推荐使用工控机(IndustrialPC,IPC)作为最直接的控制器解决方案。

因为工控机相比于嵌入式设备更稳定、可靠,社区支持及配套的软件也更丰富。

XX开源的Apollo推荐了一款包含GPU的工控机,型号为Nuvo-5095GC,如下图。

GithubApolloAuto

当算法研究得较为成熟时,就可以将嵌入式系统作为控制器,比如Audi和TTTech共同研发的zFAS,目前已经应用在最新款AudiA8上量产车上了。

CAN卡

工控机与汽车底盘的交互必须通过专门的语言——CAN。

从底盘获取当前车速及方向盘转角等信息,需要解析底盘发到CAN总线上的数据;工控机通过传感器的信息计算得到方向盘转角以及期望车速后,也要通过CAN卡将消息转码成底盘可以识别的信号,底盘进而做出响应。

CAN卡可以直接安装在工控机中,然后通过外部接口与CAN总线相连。

Apollo使用的CAN卡,型号为ESDCAN-PCIe/402,如下图。

全球定位系统(GPS)+惯性测量单元(IMU)

人类开车,从A点到B点,需要知道A点到B点的地图,以及自己当前所处的位置,这样才能知道行驶到下一个路口是右转还是直行。

无人驾驶系统也一样,依靠GPS+IMU就可以知道自己在哪(经纬度),在朝哪个方向开(航向),当然IMU还能提供诸如横摆角速度、角加速度等更丰富的信息,这些信息有助于自动驾驶汽车的定位和决策控制。

Apollo的GPS型号为NovAtelGPS-703-GGG-HV,IMU型号为NovAtelSPAN-IGM-A1。

感知传感器 

相信大家对车载传感器都耳熟能详了。

感知传感器分为很多种,包括视觉传感器、激光传感器、雷达传感器等。

视觉传感器就是摄像头,摄像头分为单目视觉,双目(立体)视觉。

比较知名的视觉传感器提供商有以色列的Mobileye,加拿大的PointGrey,德国的Pike等。

激光传感器分为单线,多线一直到64线。

每多一线,成本上涨1万RMB,当然相应的检测效果也更好。

比较知名的激光传感器提供商有美国的Velodyne和Quanergy,德国的Ibeo等,国内有速腾聚创。

雷达传感器是车厂Tier1的强项,因为雷达传感器已经在汽车上得到了广泛使用。

知名的供应商当然是博世、德尔福、电装等。

硬件部分总结

组装一套可以完成某项功能的自动驾驶系统需要及其丰富的经验,并且要对各传感器的性能边界及控制器计算能力了如指掌。

优秀的系统工程师能在满足功能的要求下将成本控制在最低,使其量产、落地的可能性更大。

软件

软件包含四层:

感知、融合、决策、控制。

各个层级之间都需要编写代码,去实现信息的转化,更细化的分类如下。

先分享某创业公司公开的一份PPT。

实现一个智能驾驶系统,会有几个层级:

∙感知层→融合层→规划层→控制层

更具体一点为:

∙传感器层→驱动层→信息融合层→决策规划层→底层控制层

各个层级之间都需要编写代码,去实现信息的转化。

最基本的层级有以下几类:

采集及预处理、坐标转换、信息融合。

采集

传感器跟我们的PC或者嵌入式模块通信时,会有不同的传输方式。

比如我们采集来自摄像机的图像信息,有的是通过千兆网卡实现的通信,也有的是直接通过视频线进行通信的。

再比如某些毫米波雷达是通过CAN总线给下游发送信息的,因此我们必须编写解析CAN信息的代码。

不同的传输介质,需要使用不同的协议去解析这些信息,这就是上文提到的「驱动层」。

通俗地讲就是把传感器采集到的信息全部拿到,并且编码成团队可以使用的数据。

 

预处理

传感器的信息拿到后会发现不是所有信息都是有用的。

传感器层将数据以一帧一帧、固定频率发送给下游,但下游是无法拿每一帧的数据去进行决策或者融合的。

为什么?

因为传感器的状态不是100%有效的,如果仅根据某一帧的信号去判定前方是否有障碍物(有可能是传感器误检了),对下游决策来说是极不负责任的。

因此上游需要对信息做预处理,以保证车辆前方的障碍物在时间维度上是一直存在的,而不是一闪而过。

这里就会使用到智能驾驶领域经常使用到的一个算法——卡尔曼滤波。

坐标转换

坐标转换在智能驾驶领域十分重要。

传感器是安装在不同地方的,比如毫米波(上图中紫色区域)是布置在车辆前方的;当车辆前方有一个障碍物,距离这个毫米波雷达有50米,那么我们就认为这个障碍物距离汽车有50米吗?

不是的!

因为决策控制层做车辆运动规划时,是在车体坐标系下完成的(车体坐标系一般以后轴中心为O点),因此毫米波雷达检测到的50米,转换到自车坐标系下,还需要加上传感器到后轴的距离。

最终所有传感器的信息,都是需要转移到自车坐标系下的,这样所有传感器信息才能统一,供规划决策使用。

同理,摄像机一般安装在挡风玻璃下面,拿到的数据也是基于摄像机坐标系的,给下游的数据,同样需要转换到自车坐标系下。

自车坐标系:

拿出你的右手,以大拇指→食指→中指的顺序开始念 X、Y、Z。

然后把手握成如下形状:

把三个轴的交点(食指根部)放在汽车后轴中心,Z轴指向车顶,X轴指向车辆前进方向。

各个团队可能定义的坐标系方向不一致,只要开发团队内部统一即可。

信息融合

信息融合是指把相同属性的信息进行多合一操作。

比如摄像机检测到了车辆正前方有一个障碍物,毫米波也检测到车辆前方有一个障碍物,激光雷达也检测到前方有一个障碍物,而实际上前方只有一个障碍物,所以我们要做的是把多传感器下这辆车的信息进行一次融合,以此告诉下游,前面有一辆车,而不是三辆车。

决策规划

这一层次主要设计的是拿到融合数据后,如何正确做规划。

规划包含纵向控制和横向控制:

纵向控制即速度控制,表现为什么时候加速,什么时候制动;横向控制即行为控制,表现为什么时候换道,什么时候超车等。

个人对这一块不是很了解,不敢妄作评论。

软件长什么样子?

自动驾驶系统中的部分软件看起来和下面类似。

软件的名字反映了该软件的实际作用:

∙app_driver_camera:

摄像机驱动

∙app_driver_hdmap:

高精度地图驱动

∙app_driver_ins:

惯导驱动

∙app_driver_lidar:

激光传感器驱动

∙app_driver_mwr:

毫米波传感器驱动

∙app_fusion_freespace:

自由行驶区域融合

∙app_fusion_lane:

车道线融合

∙app_fusion_obstacle:

障碍物融合 

∙app_planning&decision:

规划决策 

然而实际上攻城狮们会编写一些其他软件用于自己的调试工作,比如记录数据和回放数据的工具。

还有用于传感器信息显示的可视化程序,类似下图的效果。

掌握了软件的思路,那么我们来看你都要做哪些准备。

准备

操作系统安装

既然是做软件,首先得有个操作系统。

常见的操作系统Windows/Linux/Mac...(打...的操作系统我也没用过),考虑到社区支持、开发效率,推荐使用Linux作为无人驾驶研究的操作系统。

大部分做无人驾驶的团队都用的Linux,跟着大趋势走,可以省很多事。

Linux又分为很多版本,最常用且普及率很高的当属Ubuntu系列。

虽然Ubuntu已更新至17.04,但从稳定性上,推荐安装14.04版本。

推荐用一块单独的SSD安装Linux,或者使用虚拟机安装,最不推荐装双系统(不太稳定)奉上LinuxUbuntu14.04安装包+虚拟机安装方法。

(链接:

密码:

147y。

Linux基本指令

作为Linux的核心——命令行操作不仅对开发大有帮助,而且是装X利器。

另一个好处是使用指令apt-getinstall,可以快捷地完成很多软件的安装,不用像Windows那样,在网上四处寻觅适配的安装包。

Linux的指令很多,而且比较杂,使用起来需要多学,多用。

开发环境安装

开发环境会涉及很多实际使用的库,不同的程序员处理相同的问题,可能使用不同的库。

下面通过安装我在工作和学习中经常使用到的库,抛砖引玉,将开发者「引进门」。

搭建环境所需安装包:

(链接:

密码:

eyc8)

附:

开发环境介绍

集成开发环境IDE

前面安装了一款开源的IDEqt,目前qt在Linux中的地位,就和VisualStudio在 Windows中的地位一样。

除非是不使用IDE开发的高玩,大部分在Linux下做开发的团队还是会选择用qt开发的。

qt的主要作用是做交互式的界面,比如在界面中显示当前传感器采集到的各种信息。

界面交互会明显加快开发者调试程序和标定参数的过程。

Tips:

∙熟悉qt可以网上找教程,我更推荐系统

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1