1. 简要介绍
Apollo Cyber RT
是一个开源的高性能运行时框架,专门为自动驾驶场景设计。基于集中式计算模型,它对自主驾驶中的高并发、低延迟和高吞吐量进行了极大的优化。
在过去几年自动驾驶技术的发展过程中,我们从以前的 Apollo
的经验中学到了很多。行业在发展,阿波罗也在发展。展望未来,阿波罗已经从开发转向产品化,随着在现实世界的批量部署,我们看到了对最高水平的稳健性和性能的要求。这就是为什么我们花了几年时间建立和完善 Apollo Cyber RT
,以满足自动驾驶解决方案的要求。
使用 Apollo Cyber RT
的主要好处有:
-
加快开发速度
1. 定义明确的任务界面与数据融合 2. 一系列开发工具 3. 大量的传感器驱动程序
-
简化部署
1. 高效和自适应的消息通信 2. 具有资源意识的可配置的用户级调度器 3. 更少的依赖性,可移植性强
-
赋予你自己的自主车辆权力
1. 默认的开源运行时框架 2. 专为自动驾驶设计的构建模块 3. 即插即用你自己的AD系统
2. 常用术语
2.1 Component
在自主驾驶系统中,模块(如感知、定位、控制系统…)以 Cyber RT
的组件形式存在。每个组件通过网络通道与其他组件进行通信。组件的概念不仅将模块解耦,而且还为模块提供了灵活性,使其可以根据个别模块的设计而被划分为组件。
2.2 Channel
通道道用于管理 Cyber RT
中的数据通信。用户可以发布/订阅同一通道,以实现 p2p
通信。
2.3 Task
任务是 Cyber RT
中对异步计算任务的抽象描述。
2.4 Node
节点是Cyber RT
的基本构件,每个模块都包含节点并通过节点进行通信。通过在节点中定义 read/write
和 service/client
,一个模块可以有不同类型的通信。
2.5 Reader/Writer
消息从通道中进行读和写。Reader/Writer
通常在节点内创建,作为 Cyber RT
的主要消息传输接口。
2.6 Service/Client
除了Reader/Writer
,Cyber RT
还为模块通信提供 service/client
模式。它支持节点之间的双向通信。当向一个服务提出请求时,客户节点将收到一个响应。
2.7 Parameter
参数服务在 Cyber RT
中提供了一个全局参数访问接口。它是基于 service/client
模式建立的。
2.8 Service discovery
作为一个去中心化的设计框架,Cyber RT
没有一个用于服务注册的主/中心节点。所有节点都被平等对待,可以通过服务发现找到其他服务节点。在服务发现中使用了 UDP
。
2.9 CRoutine
被称为 Coroutine
概念,Cyber RT
实现了 CRoutine
以优化线程的使用和系统资源的分配。
2.10 Scheduler
为了更好地支持自动驾驶场景,Cyber RT
提供了不同种类的资源调度算法供开发者选择。
2.11 Message
消息是Cyber RT
中用于模块间数据传输的数据单元。
2.12 Dag file
Dag
文件是模块拓扑结构的配置文件。您可以在 dag
文件中定义所使用的组件和上/下游通道。
2.13 Launch files
启动文件提供了启动模块的简便方法。通过在启动文件中定义一个或多个 dag
文件,你可以同时启动多个模块。
2.14 Record file
记录文件用于记录 Cyber RT
中发送/接收到/来自通道的信息。重播记录文件可以帮助重现 Cyber RT
以前的操作行为。