【Apollo CyberRT】源码分析之 “component” 模块

本文介绍了自动驾驶系统中Apollo的CyberRT框架下,Component的概念、分类(消息驱动与定时调用)、使用示例,以及Component类(包括Component和TimerComponent)的代码结构和功能。重点讲述了如何通过protobuf配置文件初始化组件,以及Component的初始化和执行逻辑。

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

代码位置

apollo/cyber/component

功能

在自动驾驶系统中,模块(如感知、定位、控制系统等)在 Cyber ​​RT 下以 Component 的形式存在。不同 Component 之间通过 Channel 进行通信。Component 概念不仅解耦了模块,还为将模块拆分为多个子模块提供了灵活性。

Component类是各个组件的基类实现,组件类似与ros里的node,每个算法模块都可以自己实现为一个Component的基类,从而加入到CyberRT的框架中。

实际上Component分为2类:

  • 一类是消息驱动的Component,
  • 第二类是定时调用的TimerComponent。

定时调度模块没有绑定消息收发,需要用户自己创建reader来读取消息,如果需要读取多个消息,可以创建多个reader。

使用示例

使用可以参考cyber的示例程序:cyber/examples/common_component_example/

也可以看具体某个模块,比如感知模块的激光障碍物检查的componentimage.png
可以看到对外的接口只有 Init() 和 Proc() 用于初始化组件以及执行组件的核心功能。
使用源码中的一句话:
The Init & Proc functions need to be overloaded, but don’t want to be called. They are called by the CyberRT Frame.

代码结构

image.png
代码事实上并不多

源码分析

类图关系

在这里插入图片描述

ComponentBase

  • Component类和TimerComponent类的基类
  • 非模板类,无需模板参数
  • 定义了接口函数和几个基础功能函数(比如LoadConfigFiles)

Component

继承ComponentBase,有四个模板参数, 每个模板参数表示一个消息,即一个component最多可以处理 4 个消息信道,
这些信道,即 Reader 对象,最后都会被放入到 ComponentBase::readers_ 变量中

 
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.youkuaiyun.com/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.youkuaiyun.com/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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值