百度Apollo:Cyber RT简介
ROS 应用于自动驾驶的不足
-
独立进程的节点的运行顺序无法确定
-
分布式系统存在通信开销
Cyber RT 框架
基础库
- 高性能
- 无锁队列
通信层
- Publish/Subscribe机制
- Service/Client机制
- 服务自发现
- 自适应的通信机制(共享内存、Socket、进程内)
数据层
- 数据缓存与融合
计算层
- 计算模型
- 任务以及任务调度
运行流程
算法模块
通过有向无环图(DAG)配置任务间的逻辑关系;
每个算法可以进行优先级、运行时间、使用资源等方面的配置。
创建任务
结合DAG、调度配置创建任务;
内部协程(coroutine)
调度器
把任务放到各个 Processor队列
数据输入
Sensor 输入数据驱动系统运转
基本概念
Component
组件之间通过 Cyber channel 通信
Channel
管理数据通信
Node
每一个模块包含 Node 并通过 Node 来通信
Reader/Writer
订阅者模式,往 channel 读写消息的类
Service/Client
请求/响应模式
Message
模块间通信的数据单元;基于protobuf
Parameter
全局参数
Record file
记录从 channel 发送或接收的消息;
回放 record file 可以重现之前的操作行为
Launch file
提供一种启动模块的便利途径。通过在 launch file 中定义一个或多个 dag 文件,可以同时启动多个 modules。
Task
异步计算任务
CRoutine
协程
Scheduler
用户空间任务调度器
Dag file
定义模块拓扑结构的配置文件