自动驾驶Apollo源码分析系统,CyberRT篇(一):简述CyberRT框架基础概念

Apollo Cyber RT是为自动驾驶设计的高性能运行时框架,解决ROS框架的问题,提供加速算法、简化部署和增强系统能力。本文探讨CyberRT的核心组件如Node、Reader、ChannelImpl、TopologyManager等,以及它们的协作机制,揭示CyberRT的全貌和消息驱动流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. CyberRT 是什么?

Apollo Cyber RT 是专为自动驾驶场景设计的开源、高性能运行时框架。 基于中心化计算模型,主要价值是提升自动驾驶系统的高并发、低延迟、高吞吐。

Apollo 并不是一开始就使用 CyberRT,在 v3.0 之前用的都是基于 ROS 框架进行开发。但在之前的版本中发现了很多问题,随着 Apollo 的发展,对最高水平的稳健性和性能的需求, Apollo Cyber RT 应运而生,它满足了一个面向商业化的自动驾驶解决方案的基础需求。

CyberRT 最明显的 3 个优点:

  1. 加速算法
  2. 简化部署
  3. 增强自动驾驶系统能力

本文的目的有 2 个:

  1. 弄清楚 CyberRT 的整体框架结构
  2. 弄清楚 CyberRT 内部大致协作机制

2. CyberRT 里面有什么?

CyberRT 是一堆庞大复杂的代码,因为我只是一个学习者,我事先也并不知道 CyberRT 的架构图,所以,也只能从代码中分析并从中找线索。
我注意到 Cyber 目录下有 cyber.h 这个文件,我认为它可能是最源头或者是最基础的元素,所以选择了从 cyber.h 入手。
在这里插入图片描述

这里面只有一个 CreateNode 方法,返回的是 Node 的引用。根据头文件引用及对代码的敏感性,刨去一些 log、time 之类的辅助类代码,我相信 CyberRT 中这些概念很重要:

  • component
  • node
  • task
  • timer

所以,研究 CyberRT 得到 CyberRT 全貌,我们可以从这些概念相应的代码入手。

2.1 Node

在 Node.h 文件中发现了很多有意义的东西。

在这里插入图片描述

注释中有提到一些关键信息:

  • Node 是 CyberRT 的基础构件
  • 任何 Module 包含相应的 Node
  • Module 之间的通信也是通过 Node 进行交互
  • Node 之间的通信可以设定不同的模式
  • Read/Write 是一种 Node 之间的通信方式
  • Service/Client 是另外一种 Node 之间的通信方式

另外,node 中的private属性指示了一些关键的成员变量

在这里插入图片描述

我们可以知道一个 Node 有一系列相关的 Reader。
也可以有相应的 NodeChannelImpl 和 NodeServiceImpl。

2.2 Reader

在这里插入图片描述

注释说了 3 点:

  • Reader 通过订阅 Channel 获取信息
  • 收到信息时会触发传递到 Reader 的回调 callback
  • 也可以监听 Blocker 中的缓存信息

在这里插入图片描述

而上面的代码可以告诉我们,Reader 会和一种 Topology 网络发生关系,可以加入,也可以卸载。

并且, Reader 和 Channel 是相关联的,由 Chann

Apollo Cyber RT是Apollo自动驾驶系统中的个关键组件。它是在Apollo v3.0之后引入的,用于替代之前版本中使用的ROS框架。\[3\]Apollo Cyber RT提供了套开发工具,包括rosbag_to_record工具,支持多个channel,如/perception/obstacles、/planning、/prediction等等。\[1\]通过使用Apollo Cyber RT,开发人员可以更好地满足商业化自动驾驶解决方案对稳健性和性能的需求。\[3\]如果你想了解更多关于Apollo Cyber RT的信息,可以参考Apollo Cyber RT Developer Tools、CyberRT介绍、百度Apollo Cyber RT简介、基本概念以及与ROS对照、Cyber RT Documents documentation和Apollo6.0学习002:Cyber RT框架等文档。\[2\] #### 引用[.reference_title] - *1* *2* [【Apollo 6.0学习笔记】Apollo Cyber RT介绍](https://blog.csdn.net/Travis_X/article/details/120965138)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [自动驾驶Apollo源码分析系统,CyberRT():简述CyberRT框架基础概念](https://blog.csdn.net/briblue/article/details/123432580)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

frank909

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值