自动驾驶汽车技术入门(九)——平台技术基础
一、开发平台
1.Apollo开发平台
1.1Apollo发展历程
人类的自动驾驶梦想由来已久,早在1986年,卡内基梅隆大学便着手研究自动驾驶技术,尝试做自动驾驶车辆了。近年来,随着自动驾驶技术发展,大量资本涌入自动驾驶行业,带动了整个行业的发展,从大型车厂到科技巨头都在布局自动驾驶。2017年,百度正式开源Apollo 自动驾驶平台,推动了整个自动驾驶行业发展的进程,让更多开发者可以参与这项技术。
从2017开始,百度发个了Apollo的多个版本的更新,截止2019年1月,百度在CES大会上正式发布Apollo Enterprise和Apollo 3.5。
1.2Apollo技术架构
Apollo技术架构由4层构成。
(1) 云服务平台(Cloud Service Platform):包括高精地图、模拟平台、数据平台、OTA 模块、安全平台和DuerOS。
(2) 软件开放平台(Open Software Platform):包括实时操作系统、承载所有模块的框架层、高精地图与定位模块、感知模块、决策规划模块、控制模块。
(3) 硬件平台(Reference Hardware Platform):包括计算单元、GPS/IMU、Camera、激光雷达、毫米波雷达、人机交互设备、BlackBox等硬件。
(4) 车辆平台(Reference Vehicle Platform):指一辆能够接受电子信号控制的车辆,也称线控车辆。
2.Autoware开发平台
Autoware是日本名古屋大学开发的用于自动驾驶汽车的“一体化”开源软件。 Autoware的使用场景主要适用于城市道路,但也可以涵盖高速公路等路况。
3.其他自动驾驶开发平台
除了上述两个具备完整自动驾驶技术方案及应用平台的自动驾驶平台以外,其他各大互联网企业、零部件厂商以及车企也都纷纷致力于研发自身的自动驾驶平台。
二、硬件平台
自动驾驶硬件平台直接决定了系统的感知能力、运算能力、功耗强度、可靠性等。自动驾驶硬件平台可分为传感器平台、计算平台、线控车辆平台3部分。
1.车载传感器平台
在实际的具备自动驾驶功能的车辆上,同时安装有激光雷达、毫米波雷达、视觉等传感器,并且数量可能不止一个。
1)小鹏P5:全车32个传感器+1套高精定位单元;融合2个激光雷达、12个超声波传感器、5个毫米波雷
达、13个高清摄像头、GNSS导航系统、IMU惯性测量单元等多种传感器对环境进行360°双重感知
激光雷达实现更高精度测距:P5激光雷达采用双组棱镜扫描方案,实现厘米级高精度测距,可覆盖前方探测区域
(120°扇形发射),最远探测距离可达150m,不受环境光影响,空间分辨率更高
同时我们应该注意到对于低级别的自动驾驶车辆,即具备驾驶辅助功能的车辆,其传感器的布局及数量也不尽相同。
2)0级无人驾驶:又称为“非自动驾驶”,由人类驾驶员时刻完全地控制汽车的所有底层结构,包括加减速、转向等。
0级无人驾驶车辆可能会在前后方布置毫米波雷达、视觉传感器、超声波传感器等传感器,主要用于防碰撞提示、帮助驾驶员观察环境。
3)1级无人驾驶:又称为“辅助驾驶”,在特定驾驶模式下由辅助驾驶系统根据环境信息控制转向或加减速中的一种,而其它驾驶任务由人类驾驶员完成。
1级无人驾驶车辆会在前后方布置毫米波雷达、视觉传感器、超声波传感器等传感器,在內部布置视觉传感器,以大范围内行驶路径上的障碍物信息,实现车道保持、紧急自动刹车、驾驶员疲劳探测等功能。
4)2级无人驾驶:又称为“部分自动化”,在特定驾驶模式下由自动驾驶系统根据环境信息同时控制转向和加减速,而其它驾驶任务由人类驾驶员完成;
2级无人驾驶车辆会在前后方和四周布置毫米波雷达、视觉传感器、超声波传感器等传感器,在内部布置视觉传感器,以大范围内行驶路径上以及车辆周围的障碍物信息,实现自适应巡航、自动泊车、自动换道等功能。
5)3~5级无人驾驶:车辆的传感器配置大致相同,主要区别在于对数据的处理以及驾驶行为决策的成熟度。
2.车载计算平台
自动驾驶系统各模块实时运行过程中,会产生大量的数据。以感知传感器为代表,数据量大,实时性要求高。因此,需要选择性能强劲的计算平台完成实时大规模数据处理任务。 计算平台的性能对自动驾驶的安全性、可靠性、实时性非常重要。目前主流的计算平台包括基于GPU、DSP、FPGA、ASIC等方案的计算平台。
3.车辆线控平台
自动驾驶系统中除了根据感知传感器实时的数据进行处理与决策,最终还要完成车辆动力系统及相关机械器件的配合控制.实现驾驶操作的执行,这就需要提供稳定可靠的线控车辆平台。通常来说,线控车辆平台包括车辆线控和通信总线。
线控技术的主要特征是执行机构与操纵机构没有直接的机械连接,驾驶意图将转换成对应的电信号驱动执行机构精确运动。基于线控技术,自动驾驶车辆控制器可以通过通信总线发送响应驾驶动作指令,完成机械控制,即控制车辆运动。
三、软件操作系统
自动驾驶系统涵盖多个软件模块,如感知、规划、控制等,同时整合了各硬件模块,如传感器模块、计算平台、线控车辆平台等。软硬件资源的有效调配十分关键,需要一个稳定、可靠的操作系统平台搭建自动驾驶软件模块。
1.机器人操作系统
1.1ROS是什么
ROS(Robot Operating System)是目前最广泛使用的一种开源机器人软件平台,它的诞生极大地提升了机器人系统开发的效率。
包括:
- 通信平台:ROS提供了一种发布/订阅式的通信框架,实现简便快速地搭建分布式计算系统;
- 工具:提供了大量简洁的工具,实现分布式计算系统的配置、启动、自检、调试、可视化、仿真、登陆、测试、终止;
- 能力:具备定位、控制、规划、决策等功能
- 平台支持:ROS的发展依托于一个强大的技术支持社区。
1.2ROS的特性
- 点对点设计:ROS的点对点设计以及服务和节点管理器等机制可以分散由计算机视觉和语音识别等功能带来的实时计算压力,能够适应多机器人遇到的挑战。
- 分布式设计:程序可以在多台网络计算机中运行和通信。
- 多语言支持:ROS现在支持许多种编程语言,例如C++.Python.Octave和LISP, 也包含其他语言的多种接口实现。语言无关的消息处理让多种语言可以自由混合和匹配使用。
- 轻量级:ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译, 而且编译使用的CMake工具使其很容易就实现精简的理念。ROS将复杂的代码封装在库 里,只是创建了一些小的应用程序显示库的功能。
- 免费开源:大多数的ROS源代码都是公开发布的。
1.3ROS计算图层
节点( Node) :节点是主要的计算执行进程。一个机器人控制系统通常由很多节点组 成。例如一个节点处理雷达点云、一个节点执行定位、一个节点执行路径规划。
节点管理器(Master):节点管理器用于在计算图层中注册或查找节点名称。如果没有节点管理器,就不会有节点、消息、服务之间的通信。
参数服务器( Parameter Server ) : 参数服务器能够使数据通过关键词存储在系统的核心位置。
消息(Message):节点之间通过传递消息实现通信,消息实际上是一种数据结构。ROS 中包含很多标准类型的消息,也可以自定义消息类型。
主题( Topic ) :在ROS 中消息以一种发布/订阅的方式传递。一个节点可以在给定的主题中发布消息。一个节点可以订阅某个主题,接收该主题上来自其他节点的消息。一个主题内可以同时由多个节点订阅和发布消息,一个节点也可以订阅多个主题或者发布消息到多个主题内。消息的订阅者和发布者之间互相解耦,无须知道对方的存在。主题的名称不能重复,以避免同名主题产生消息路由错误。
服务(Service):当需要从某一个节点获得一个请求或应答时,就不能依靠主题来实现 了。但是,服务可以允许直接与某个节点交互。服务由一对消息结构定义,一个用于请求, 另一个用于应答。
消息记录包( Bag ) :消息记录包是一种用于保存和回放ROS消息数据的文件格式。消息记录包是一种重要的存储数据的机制,能够记录传感器数据。
1.4ROS中的项目组织结构
ROS软件使用包(package)进行组织,通常包含以下内容:
- /src:源代码。
- /msg:定义各种message文件。
- /srv:定义各种service文件。
- /launch:包含用于启动节点的launch文件。
- /config:包含配置文件,加载一些动态配置参数等。
- /test:ROS测试文件。
- /include/_package_name_:C++头文件。
- /doc:包含文档文件。
- package.xml:编译、运行、版权等信息。
- CMakeLists.txt:CMakefile构建文件。
2.Cyber RT
2.1ROS的缺陷
在Apollo 3. 5发布之前,Apollo 一直是以ROS为操作系统框架。但ROS在自动驾驶的实际应用中暴露出一些无法解决的缺陷。
(1) ROS作为一个通用框架并未与自动驾驶现有的硬件,OS等底层进行定制,有着较大的优化空间。
(2) ROS软件包既繁且重,学习和使用成本较高。部署统一的开发、运行环境较为麻烦。
(3) 基于ROS的整体系统分散为大量的独立进程,集成度较低。系统的CPU、GPU以及内存等资源全部由各模块抢占,缺乏全局的分配调度系统。
2.2Cyber RT计算框架
为解决这些缺陷,急需一款专为自动驾驶场景开发的分布式计算框架,于是Cyber RT 应运而生,并在Apollo 3. 5版本中正式发布。它是全球首个面向自动驾驶的高性能开源计算框架,可显著提升研发效率,自适应设计易于部署,框架高效可靠,可以帮助客户实现更快速度的搭载与落地。其主要特点如下。
(1) 轻量级、平台无关。基于自动驾驶业务现状深度定制,精简可靠。框架与底层实现剥离,平台可移植性强。
(2) 采用DAG拓扑框架件,可使上层模块灵活配置。模块可定义独立的算法,以及输入、输出、异常处理等。可根据配置文件动态生成计算流程图并执行。
(3) 封装了简单高效的通信组件,可以满足不同驾驶场景下的信息传输需求。
(4) 任务的全局调度机制。通过计算流程图的数据依赖,进行任务的全局调度。
(5) 细粒度的资源隔离。根据功能对系统各组件进行计算、存储、I/O等资源的预分配,运行时根据系统情况实时调整,兼顾稳定与高效。
四、云服务平台
1.仿真平台
1.1 概述
为了保证自动驾驶车辆开发的安全性、有效性和可持续性,必须进行广泛的开发和测试。然而传统的自动驾驶路测昂贵耗时,具有风险性,且只能够在有限交通场景下进行试验。此外,一些特殊场景,如极端天气、 传感器故障、道路部分路段损毁等也不能够进行反复的测试和复现。自动驾驶仿真测试的出现为这个难题提供了一种安全有效的解决途径。
自动驾驶仿真测试是指通过传感器仿真、车辆动力学仿真、高级图形处理、交通流仿真、数字仿真、道路建模等技术模拟路测环境,并添加算法,搭建相对真实的驾驶场景,来完成向动驾驶汽车路测工作的一种形式。一定程度上来说,仿真测试是可以代替真实路测、加快测试速度的一种有效测试方式。
1.2仿真平台的构成
仿真平台包含仿真层和硬件层两大模块。其中仿真层包括了仿真车辆模型设计、多仿真传感器模拟以及多虚拟交通场景构建。硬件控制层与仿真层相连接构成闭环测试系统,用于全面测试和验证硬件和算法。 仿真传感器信息以及车身状态由仿真层输入,算法进行相关计算后输出 结果,硬件控制单元生成相应的控制指令,如制动、节气门、转向指令等, 再传入仿真层对车辆进行相应控制。
1.3代表
dSPACE 实 时 仿 真 系 统 是 由 dSPACE 公 司 开 发 的 一 套 基 于MATLAB/Simulink 的 控 制 系 统 开 发 及 测 试 的 工 作 平 台 , 实 现 了 和MATLAB/Simulink 的完全无缝连接。 dSPACE 实时系统拥有具有高速计算能力的硬件系统,包括处理器、 I/O等,还拥有方便易用的实现代码生成 /下载和实验/调试的软件环境。
Waymo开发的面向动驾驶仿真平台Carcraft,包含海量场景,均为自动驾驶汽车在公路上可能会碰到的环境;还包括几个美国城市的完整模型,例如奥斯汀、山景城、凤凰城等。 在这个虚拟世界里面,共有25000辆虚拟自动驾驶汽车在其中行驶。截至2018年底,谷歌的虚拟道路无人驾驶测试总里程已经达到70亿英里。
2018年11月15日,中国汽车技术研究中心有限公司发布了“驾驶场景仿真平台”,驾驶场景仿真平台以中汽中心多年测试积累的驾驶场景数据库为基础,基于国际主流高精地图及驾驶场景数据格式开发标准接口,实现半自动化场景导人,构建虚拟测试场景。 仿真平台具有先进的车辆动力学模型、传感器仿真模型、交通流模型以及驾驶员模型,支持IPG Carmaker、VTD及Prescan等主流仿真软件,支持OpenDrive高精地图数据导人,基于 NI和Konrad 技术实现MIL/SIL/HIL等仿真功能,NVIDIA高性能工作站为平台提供场景渲染与加速测试。此外,场景仿真平台还提供自动化的测试用例管理及测试结果评价。
2.数据平台
2.1概述
自动驾驶数据可以分为4大类:
①自动驾驶车辆产生的原始数据,主要是传感器数据、 车辆自身数据、驾驶行为数据等。这些数据的特点是数据量极大、类型多样、以非结构化半结构化数据为主;无论对存储、传输、处理都构成比较大的挑战。
②为了在深度学习中使用数据,还需要大量标注数据。主要有红绿灯数据集、障碍物数据集(二维、三维)、语义分割数据集、自由空间数据集、行为预测数据集等。
③为了刻画自动驾驶行为,需要将数据抽象成逻辑数据;主要是完美感知数据、环境抽象数据、车辆动力学模型等。
④最后,为仿真系统构建仿真数据,主要是参数模糊化数据、三维重建数据、互动行为数据等。
2.2自动驾驶数据集
目前,多家高校及企业发布了自动驾驶数据集,并面向社会开放,所有从事自动驾驶汽车开发的个人或机构都可以使用。
数据集一般需要满足以下四个方面的要求:大规模、多样性、在道路上并包含时间信息。其中数据的多样性对于验证感知算法的鲁棒性十分关键。然而目前的公开数据集并没有完全覆盖上述特性。
数据集一般分为两类:一类是通用数据集,这是由纯计算机视觉领域提出的数据集,这类数据集仅仅因为有“车”的元素;另一类是面向动驾驶数据集,不光包括计算机视觉信息,还有IMU、GPS等信息。
2.2.1KITTI
KITTI数据采集平台包括两个灰度摄像机、两个彩色摄像机、 一个Velodyne三维激光雷达、4个光学镜头,以及一个GPS导航系统。一共细分为Road、 City、Residential、Campus和Person 5类数据;包含市区、乡村高速公路的数据,每张图像 最多有15辆车及30个行人,而且还包含不同程度的遮挡。整个数据集由389对立体图像和光流图、39. 2km视觉测距序列以及超过200000个三维标注物体的图像组成。
KITTI数据集中,目标检测包括了车辆检测、行人检测、自行车3 个单项,目标追踪包括车辆追踪、行人追踪两个单项,道路分割包括urban unmarked 、urban marked 、urban multiple marked3个场景及前3个场景的平均值urban road等4 个单项;数据集大小超过 200G。KITTI数据集是自动驾驶学术圈使用最广泛的数据集之一。
2.2.2ApolloScape
ApolloScape是百度Apollo自动驾驶开放平台的专题项目之一,是目前行业内环境最复杂、标注最精准、数据量最大的三维自动驾驶数据集。ApolloScape开放了比KITTI等同类数据集大10倍以上的数据量,包括感知、仿真场景、路网数据等数十万帧逐像素语义分割标注的高分辨率图像数据,以及与其对应的逐像素语义标注、稠密点云、立体图像、立体全景图像。
ApolloScape数据集涵盖了最复杂的道路状况,提供最有挑战性的数据支持,数据集包括了全新提供的逐帧标注的视频序列和三维背景,以及中国最复杂的街景,单张图片内可以包含上百个车和行人。同时, ApolloScape数据集采用了逐像素语义分割标注的方式,包含数十万帧逐像素语义分割标注的高分辨率图像数据,为便于研究人员更好地利用数据集的价值。ApolloScape在数据集中定义了共26个不同语义项的数据实例(例如汽车、自行车、行人、建筑、路灯等),并将进一步涵盖更复杂的环境、天气和交通状况等。
2.3Apollo数据开放平台
2.3.1概述
数据平台是支撑智能汽车的“云+端”研发迭代新模式的核心平台。
2.3.2Apollo数据开放平台构成
1)Apollo开放资源数据集
Apollo开放资源数据集分为以下3大部分。
- 仿真数据集,包括自动驾驶虚拟场景和实际道路真实场景;
- 演示数据集,包括车载系统演示数据、标定演示数据、端到端演示数据、自定位模块演示数据;
- 标注数据集,包括6部分数据集:激光点云障碍物检测分类、红绿灯检测、Road Hackers、基于图像的障碍物检测分类、障碍物轨迹预测、场景解析。
2)Apollo开放云端服务
除开放数据外,还配套开放云端服务,包括数据标注平台、训练学习平台、仿真平台和标定平台,为Apollo开发者提供一整套数据计算能力的解决方案,加速迭代创新。
参考书籍:
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/12298.html