简介
Cyber RT是一个runtime framework,可以理解为百度针对ROS 1在自动驾驶环境下的一些天生缺陷做的一套自己的框架(很多缺陷在ROS 2中得到了解决但ROS 2迟迟不见稳定版本),它介于底层的RTOS和上层算法之间。Cyber RT的目标是做到高并发,低延迟以及高吞吐,这些特性都是自动驾驶任务所必须的。
架构
以下为Cyber RT最主要的软件模块
- Apollo实现了最下层的基础库,比如Lock-Free的对象池,Lock-Free的队列等。这么做的目的一个是提高效率,另一个就是减少依赖。
- 通信机制(从下往上第2,3层),包括服务发现和Publish-Subscribe通信机制。Cyber RT也支持跨进程、跨机通信,上层业务逻辑无需关心,通信层会根据算法模块的部署,自动选择相应通信机制。
- 通信层之上的数据缓存/融合层(第4层)。不同算法模块之间需要有一个数据桥梁,数据层起到了这个模块间通信的桥梁的作用。
- 再往上是计算模型,包括调度层和任务。
- 最上面是提供给开发者的接口层。
上面这张图更清晰地展现了整个cyber的结构,之后连载的文章会大体按照模块-调度-通信的顺序来解析cyber代码。下面这