如何使用Cyber RT创建新组件

apollo cyber 运行时。
其框架 ( apollo cyber rt framework ) 是基于组件概念来构建的。
组件化开发的成果是基础库和公共组件,其原则是高重用,低耦合。
如果让我们来看组件化开发的定义,它的着重点就是代码重用。代码重构这一步最后的结果就是提炼出一个个组件给不同的功能使用。
这里我们可以看一下其中的依赖关系:具体功能依赖提炼出来的组件,组件本身之间可能也有依赖关系,但一般不多。
每个组件都是cyber框架的一个构建块, 它包括一个特定的算法模块,此算法模块处理一组输入数椐并产生一组输出数椐。
要创建并启动一个算法组件, 需要通过以下4个步骤:
初如化组件的文件结构
实现组件类
设置配置文件
启动组件
下面的例子中,阿波君将为大家展示如何创建、编译和运行一个组件,并观察组件在屏幕上的输出。
如果想更深入的探索apollo cyber rt框架。
可以在这个目录/apollo/cyber/examples/找到很多例子,这些例子详细展示如何使用cyber框架的各种功能。
note: 这些例子必须运行在apollo docker环境, 且需要通过bazel来编译。
例如组件的根目录为
/apollo/cyber/examples/common_component_example/
需要创建以下文件:
header file: common_component_example.h
source file: common_component_example.cc
build file: build
dag dependency file: common.dag
launch file: common.launch
1#include 2#includecyber/class_loader/class_loader.h 3#includecyber/component/component.h 4#includecyber/examples/proto/examples.pb.h 5 6usingapollo::cyber::examples::proto::driver; 7usingapollo::cyber::component; 8usingapollo::cyber::componentbase; 910classcommoncomponentsample:publiccomponent{11public:12boolinit()override;13boolproc(conststd::shared_ptr&msg0,14conststd::shared_ptr&msg1)override;15};1617cyber_register_component(commoncomponentsample)
如何实现common_component_example.h:
继承 component 类;
定义自己的init和proc 函数. proc 需要指定输入数椐类型;
使用cyber_register_component宏定义把组件类注册成全局可用。
对于源文件 common_component_example.cc, init 和 proc 这两个函数需要实现。
1#includecyber/examples/common_component_example/common_component_example.h 2#includecyber/class_loader/class_loader.h 3#includecyber/component/component.h 4 5boolcommoncomponentsample::init(){ 6ainfo<5commonprocess_name>6component>7cyber>
通过下面的命令来编译组件:
1bash/apollo/apollo.shbuild
note:确定组件正常编译成功
然后配置环境:
1cd/apollo/cyber2sourcesetup.bash
有两种方法来启动组件:
使用launch文件来启动 (推荐这种方式)
1cyber_launchstart/apollo/cyber/examples/common_component_example/common.launch
使用dag文件来启动:
1mainboard-d/apollo/cyber/examples/common_component_example/common.dag
在完上步骤后,您就使用cyber rt成功创建一个新的组件。

如何构建和使用FunShield
DIY一个GPS儿童追踪器
合泰推出BS83xxxA系列Flash触控MCU
英特尔先进封装:彻底改变芯片封装技术
CD4011制作的简易电子蜡烛电路
如何使用Cyber RT创建新组件
柔性折叠屏能为手机厂商带来什么?有什么利好之处?
全力角逐高清电视,电视厂商或经历惨败
降压恒流型 12-50V 2.5A 双色切换的LED车灯方案
重磅 新亚洲电子商城与百度爱采购达成战略合作
S10 10M Prodigy逻辑系统有什么特别之处?
度势克艰丨把握“后疫情时期”的照明产业机遇
为什么Nor Flash可以实现XIP,而Nand flash就不行呢?
土壤墒情监测系统测量的原理及效果的介绍
同步串行总线接口的原理、接口方式和使用方法
详细介绍一些CNN模型的设计理论和关键设计点
泰科电子推出下一代LCD同轴嵌入式显示接口连接器系列
微波集成电路(MMIC)是什么意思
直播一体机设备的用途
钢铁项目中轧钢车间内Profinet以及Modbus协议存在的优势