开源有道,Apollo 3.5自动驾驶平台技术全解读

1

首先由百度Apollo 资深技术布道师——胡旷,从Apollo3.5整体框架出发,为大家讲解全新版本的Apollo在城市驾驶能力、Apollo Cyber RT框架、硬件平台以及V2X车路协同这四大方面的重大升级。

Apollo 3.5是面向城市道路自动驾驶解决方案,能够处理更复杂的环境,具备更全面的能力。相对于以前的版本,Apollo 3.5 做了以下升级。

第一是首次具备处理城市道路自动驾驶能力。

第二是 Apollo 3.5硬件平台全新升级。

第三是实时通信框架Cyber RT。之前使用的是ROS, Apollo 3.5从ROS替换成了Apollo自研的专门应用于自动驾驶应用场景的通信框架 Cyber RT。

最后是应用于智慧交通的V2X。

Apollo 3.5 架构

这是Apollo 3.5的架构图,还是基于经典的四层架构。Apollo 3.5对四大核心能力进行了升级。

首先是底层的车辆认证平台,主要包括两块,第一是符合Apollo标准的线控车辆的需求,第二是满足Apollo线控标准的车辆。

往上是硬件开发平台,硬件开发平台是做自动驾驶相关的硬件,这些蓝色的模块中有些是新增的硬件类型,有些是更新的硬件型号。

再往上是软件开放平台,开源代码大部分是在软件层面。Apollo3.5在定位、感知、规划、还有Cyber RT以及V2X的适配器等模块有变化。

最上层的云端服务在Apollo 3.5主要是仿真以及V2X的路侧服务。

以下,ENJOY

2

第二个演讲由百度资深研发工程师——何玮详细讲解Apollo 3.5中关于Cyber RT计算框架的技术内容。从Cyber RT的设计思路及运行原理出发,全面解读Cyber RT计算框架。

如图所示,CyberRT从下到上基本分为:基础库层、通信层、数据缓存和融合层、计算调度层以及为算法模块提供的抽象接口。

首先是底层的基础库,Cyber RT设计了比较多的基础库,目前这些基础库主要是用在Cyber RT的内部模块里面。

通信层使用经典的Pub/Sub的匿名通信模式, 基于动态的服务发现去除了中心化的节点,同时也支持进程间和跨机通信。由于很多算法需要多路数据进行计算,因此框架提供了基础的多路数据融合功能。此外,框架还提供了数据的Observe模式,方便算法能够根据业务定义数据融合策略,也为离线仿真等业务提供更好的控制力度。

再上面是计算调度层,屏蔽了操作系统的底层细节,不再对应用层体现线程的概念,而是将其封装为Processor,并结合协程的使用,实现了用户空间的任务调度切换

最上面是为算法开发者提供的实现任务的统一接口,接口是面向对象的高度封装类,在Cyber RT中叫做Component, 使用者只需要按需求选择相应的Component,然后实现其中的初始化、任务处理等接口,即可加载到框架中运行,而无需关注底层的具体执行单元和线程模型。

Cyber RT中有几个基础的概念十分重要,分别是Mainboard,Component,Channel和Task。

Mainboard是Cyber RT的主进程,主要功能是解析dag配置文件,通过动态加载的方式读取算法模块,并完成整个系统的初始化,相当于整个系统运行的载体。

Component是Cyber RT的最基本模块,每个算法都可以封装为一个独立的Component,定义算法的输入数据及处理函数。Component是系统中可插拔的最小单元,通过Mainboard加载并执行。

Channel是Cyber RT中数据通信的总线,通过Channel名称来区分不同的消息通路,模块间通过Channel来匹配并建立连接,实现通信。

Task是Cyber RT框架中的基本计算单元,是调度器用来执行的最小单元,对用户来说Task类似一个与特定数据绑定的函数指针,用来处理一类特定任务。

以下,ENJOY

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190521A0MO7N00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券