侵权投诉

如何使用Cyber RT创建新组件

2019-01-29 15:20 次阅读

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#include"cyber/class_loader/class_loader.h" 3#include"cyber/component/component.h" 4#include"cyber/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#include"cyber/examples/common_component_example/common_component_example.h" 2#include"cyber/class_loader/class_loader.h" 3#include"cyber/component/component.h" 4 5boolCommonComponentSample::Init(){ 6AINFO<< "Commontest component init"; 7  return true; 8} 910bool CommonComponentSample::Proc(const std::shared_ptr& msg0,11                               const std::shared_ptr& msg1) {12  AINFO << "Start common component Proc [" << msg0->msg_id()<< "] ["13        << msg1->msg_id()<< "]";14  return true;15}

创建 Bazel BUILD 文件.

1load("//tools:cpplint.bzl","cpplint") 2 3package(default_visibility=["//visibility:public"]) 4 5cc_binary( 6name="libcommon_component_example.so", 7deps=[":common_component_example_lib"], 8linkopts=["-shared"], 9linkstatic=False,10)1112cc_library(13name="common_component_example_lib",14srcs=[15"common_component_example.cc",16],17hdrs=[18"common_component_example.h",19],20deps=[21"//cyber",22"//cyber/examples/proto:examples_cc_proto",23],24)2526cpplint()

在DAG依赖配置文件 (例如common.dag)中配置下面的项:

Channel names: 输入输出数椐的Channel名字

Library path: 此组件最终编译出的库的名字

Class name: 此组件的入口类的名字

1#DefineallcomsinDAGstreaming. 2component_config{ 3component_library:"/apollo/bazel-bin/cyber/examples/common_component_example/libcommon_component_example.so" 4components{ 5class_name:"CommonComponentSample" 6config{ 7name:"common" 8readers{ 9channel:"/apollo/prediction"10}11readers{12channel:"/apollo/test"13}14}15}16}

在Launch启动文件中(common.launch), 配置下面的项:

组件的名字。

上一步创建的dag配置的名字。

组件运行时所在的进程目录。

123commonname>4/apollo/cyber/examples/common_component_example/common.dagdag_conf>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成功创建一个新的组件。

原文标题:技术文档 | 如何使用Cyber RT创建新组件

文章出处:【微信号:Apollo_Developers,微信公众号:Apollo开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

有关UPnP的基本知识都总结在这里

UPnP是什么? UPnP的特点有哪些? UPnP的基本组件有哪些? UPnP是怎样工作的? ...
发表于 10-09 09:15 0次 阅读

通讯组件有哪些使用步骤

什么是通讯组件? 通讯组件支持哪些数据类型? 通讯组件有哪些使用步骤? ...
发表于 09-30 09:06 0次 阅读

通讯组件的数据类型有哪些

通讯组件是什么? 通讯组件的数据类型有哪些? ...
发表于 09-30 06:32 0次 阅读

使用通讯组件有哪些基本步骤

什么是通讯组件? 通讯组件有哪些数据类型? 使用通讯组件有哪些基本步骤? ...
发表于 09-29 09:26 0次 阅读

一文读懂什么是通讯组件

什么是通讯组件? 通讯组件支持哪些数据类型?通讯组件的使用步骤有哪些?...
发表于 09-23 08:28 0次 阅读

CREE射频卫星通讯的简单介绍

CREE射频在组件上供应高效率和高增益GaN on SiC,支持卫星通讯,并为多载波流供应完备的视频....
发表于 09-18 17:16 27次 阅读

通讯组件的函数和参数有哪些?它是怎么使用的?

什么是通讯组件?数据类型有哪些? 通讯组件的函数和参数有哪些? 通讯组件是怎么使用的? ...
发表于 09-18 07:14 0次 阅读

同茂线性马达谈国产手机品牌申请的新专利

据企查查显示:OPPO广东移动通信有限公司近日新增一项专利,专利名称为机器人及其腿部组件。 根据描述....
发表于 09-03 09:19 65次 阅读

使用RT-Thread的PM组件时的问题

最近在使用RT-Thread的PM组件时遇到了一奇怪的现象,发现居然进不去,调用HAL_PWREx_EnterSTOP2Mode(PWR_S...
发表于 08-13 07:14 0次 阅读

新型骨外固定架组件的运动学研究分析

骨外固定技术是治疗四肢畸形和肢体创伤等疑难骨科杂症常用方法。针对现有骨外國定架鉏件选择困难、操作复杂....
发表于 06-18 16:33 131次 阅读

Pasternack新推出双脊波导组件的新产品系列

波导组件新产品包括WRD-180、WRD-650和WRD-750尺寸 Infinite Electr....
的头像 PASTERNACK 发表于 05-25 13:09 277次 阅读

三端取样组件的代用资料分享

由右图可见要想改变取样组件的起控点, 可以从取样点①着手,假设想抬高B+输出,只 要适当延迟起控点即可。这样我们就可用较...
发表于 05-24 06:24 0次 阅读

【每日一练】RT-Thread Nano-Finsh组件支持(第四节学习视频)

本视频为【每日一练】的第四节学习视频,注:刚开始学习的童鞋请从第一节视频开始打卡哦(本节视频在下面打卡即可) 学习任务...
发表于 05-20 09:52 2089次 阅读

浑源软件项目中的代码结构和开源组件综述

文中研究了混源软件的代码结构特征,按照功能已知性、代码有用性、代码安全性和知识产权属性等4个标准将混....
发表于 04-28 15:16 115次 阅读
浑源软件项目中的代码结构和开源组件综述

硬件密码组件与软件密码组件的对比分析哪个好?

硬件密码组件是什么? 硬件密码组件与软件密码组件的对比分析哪个好? ...
发表于 04-28 06:06 101次 阅读

线性直流电源的正确操作方法是怎样的

请注意以下几点,在操作线性直流电源时可以有效避免不必要的麻烦。 1)电压设置:打开直流电源开关并调节....
发表于 04-26 17:57 772次 阅读

Xcore LT系列测温型非制冷红外机芯说明手册

LT00-V100F011C用户扩展组件适用于LT384、LT640,包含1个插座,如下图所示。
发表于 03-17 14:34 164次 阅读
Xcore LT系列测温型非制冷红外机芯说明手册

IEC标委会正式发布光伏产品IEC 61215:2021相关系列标准更新版本

IEC 61215除了对标准本身概念和测试做了更新,同时为了更全面地评估光伏组件的性能,新版标准中还....
的头像 电子发烧友网工程师 发表于 03-14 10:35 2288次 阅读
IEC标委会正式发布光伏产品IEC 61215:2021相关系列标准更新版本

工控主板定制开发一般要考虑什么主要组件

在市场中的客户需要运用不一样的计算机渠道来满意自个的不一样使用需要。通常,这些渠道都由规范商品组成或....
发表于 02-26 14:33 153次 阅读

回顾桌面小组件功能的前世今生

很多在多年前使用过Android手机的朋友,可能对于Android 4.0时代盛行的桌面小组件功能有....
的头像 如意 发表于 02-22 11:25 944次 阅读

恶劣环境下维护网络连接组件的方法

在网络和基础设施需求方面,工业部门面临着一系列完全不同的额外挑战。在许多情况下,设备必须承受极端温度....
的头像 如意 发表于 02-12 15:51 729次 阅读

MIM组件厂商泛海统联拟科创板上市

  集微网报道,近年来,全球智能手机逐渐从单摄像头向两个或更多摄像头转向。在华为MateP系列,三星....
的头像 半导体投资联盟 发表于 01-06 10:14 1538次 阅读

超级冲压机组件被目睹现身特斯拉柏林超级工厂

12月23日消息,据国外媒体报道,去年11月份确定的特斯拉柏林超级工厂,在5月份获准开始基础施工,厂....
的头像 工程师邓生 发表于 12-23 17:50 1480次 阅读

截图、经典画图、WordPad 和记事本成 Win10 可选组件,支持卸载

外媒 Windows Latest 报道,随着 Windows 10 的不断发展,某些功能会随着新功....
的头像 工程师邓生 发表于 12-14 10:02 803次 阅读

在促成PCB设计的所有要素中必不可少的要素 DFM

作为电子产品必不可少的部分,印刷电路板(PCB)在实现电子产品的功能方面起着关键作用,这导致PCB设....
的头像 电子发烧友网 发表于 09-24 11:40 1001次 阅读

夏季高温天气将对光伏电站组件带来多个不利影响

九月已至,天气依然炎热。据中央气象台报道,9月初全国降雨进入“休整期”,北方大部地区昼夜温差明显拉大....
发表于 09-03 09:20 1140次 阅读

如何才能让机器视觉系统更为稳定

机器视觉系统包含一些重要部件,光源,镜头,相机,图像采集卡,数据传输,图像处理和测量软件等。随着各个....
的头像 新机器视觉 发表于 08-28 14:05 1257次 阅读
如何才能让机器视觉系统更为稳定

回收废弃光伏组件,成光伏需要解决的难题

“光伏已在全球绝大部分国家和地区成为最便宜的电力能源”“新一代电力系统的创建需要高比例的可再生能源”....
发表于 08-12 09:37 429次 阅读

采访海格Mathieu Creteau:关于物联网标准优势的见解

随着物联网应用规模变得越来越大,越来越复杂,企业如何跟上发展步伐就成了问题。 “我们要确保我们的解决....
发表于 08-11 13:45 239次 阅读

两大光伏巨头组件又涨价,谁来买单?

上海SNEC展会期间,两大光伏巨头的组件又涨价了!和之前涨价的情况类似,已经签合同未打款合同全部作废....
发表于 08-11 09:41 504次 阅读

国内光伏市场迎来旺季,组件尺寸竞争或将明年终结

“今年下半年什么都紧(张),多晶硅弹性最大。”对于下半年光伏市场的产品供应和价格调整情况,隆基股份(....
发表于 07-23 08:42 310次 阅读

分析全球光伏发电新新兴市场——非洲地区的摩洛哥

摩洛哥总人口数约莫3,600万人,过去年均GDP成长率大约维持在2-4%上下,今年受新冠肺炎疫情影响....
发表于 07-15 12:57 465次 阅读
分析全球光伏发电新新兴市场——非洲地区的摩洛哥

一文了解虚拟机Linux系统的几大组件

本文概述了Linux系统的几大组件,描述了这些组件之间的关系。文章解释了术语,并描述看似很基础的细节....
的头像 如意 发表于 07-03 15:20 1624次 阅读

PSoC Creator模拟设计:Resource Reserve组件的应用方法

本视频介绍了采用PSoC Creator进行模拟设计的各种技巧和注意事项。
的头像 Cypress视频 发表于 07-01 12:17 868次 观看

PSoC Creator教程:如何在工程中创建Verilog Implementation

赛普拉斯 PSoC Creator教程,包括时钟、生成组件等内容,例如添加API模板、设置组件参数、....
的头像 Cypress视频 发表于 07-01 12:15 968次 观看

PSoC Creator教程:如何在工程中添加文件

赛普拉斯 PSoC Creator教程,包括时钟、生成组件等内容,例如添加API模板、设置组件参数、....
的头像 Cypress视频 发表于 07-01 12:12 1186次 观看

PSoC Creator教程:如何创建组件符号

赛普拉斯 PSoC Creator教程,包括时钟、生成组件等内容,例如添加API模板、设置组件参数、....
的头像 Cypress视频 发表于 07-01 12:08 954次 观看

设备组件与连接器安全配合的功能盘点

连接器一旦交配合适,你就能真正听到“咔哒”声。您可以获得触觉反馈以及“咔哒”声,从而确保成功且安全的....
发表于 05-21 10:18 252次 阅读

AR工业应用|AR相比传统技术用于工业的优势在哪里?|effiar

与传统技术相比,基于浸入式的视觉技术有很多优势。从直接应用于工业环境的角度来看,主要优势有: 集成组....
发表于 05-12 11:13 378次 阅读

多芯片组件的特点_多芯片组件的分类

多芯片组件,英文缩写MCM(Multi-ChipModule)——将多块半导体裸芯片组装在一块布线基....
的头像 陈翠 发表于 01-15 14:37 1534次 阅读

5个树莓派附加组件的介绍

HAT是Raspberry Pi的扩展,它位于GPIO之上;它是“顶部附加的硬件”的首字母缩写。 A....
的头像 39度创意研究所 发表于 12-04 09:57 1087次 阅读

OPTEK开发POF组件 支持工业控制应用

TT电子的子公司OPTEK Technology正在开发一系列塑料光纤(POF)产品,作为传统铜线的....
的头像 电子设计 发表于 10-06 14:44 1205次 阅读

RT-Thread NetUtils的使用方法

RT-Thread NetUtils 作为网络工具合集,既有用于测试调试的 Ping 命令, 同步时....
的头像 电子发烧友网 发表于 10-08 16:41 5346次 阅读
RT-Thread NetUtils的使用方法

RT-Thread finsh组件工作流程详解

finsh是RT-Thread的命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于....
的头像 RTThread物联网操作系统 发表于 09-23 11:04 5375次 阅读

使用 Blackbox 实施类型的通用组件的方法

如何使用 Blackbox 实施类型的通用组件
的头像 英特尔 Altera视频 发表于 06-20 01:19 2062次 观看
使用 Blackbox 实施类型的通用组件的方法

光纤通信用光电子器件和组件_黄章勇

本书供从事光纤通信的工程人员使用和参考,也可供电子器件研究和生产、光纤通信技术系统设计和制造、光电子....
发表于 03-27 15:24 1494次 阅读
光纤通信用光电子器件和组件_黄章勇

PCB组件动态分析

通过对PCB 组件进行动态特性分析可以建立其动力学模型。只有建立起准确地动力学模型才可以对起进行有效....
发表于 11-28 11:11 3070次 阅读

CAN接口COM组件的实现

控制器局域网( CAN )是一个串行、异步、多主的通信协议,它以其高性能、高可靠性以及灵活的设计受到....
发表于 06-09 15:31 973次 阅读

基于COM组件的插件平台技术研究

基于COM 组件的插件平台技术可以实现软件的重用性和可扩展性,不需要集成各源代码或链接库进行编译与链....
发表于 06-07 18:29 548次 阅读
基于COM组件的插件平台技术研究

SOPC自定义组件开发培训

1.为什么我们要用 SOPC Builder 1.1 Sopc Builder 优点 1.2 掌握A....
发表于 06-02 14:57 809次 阅读
SOPC自定义组件开发培训

基于组件的访问控制系统快速开发方法

访问控制是分布式应用的一个必要组成部分。由于访问控制机制的建立要求开发人员具有丰富的访问控制专业知识....
发表于 03-01 15:43 411次 阅读

一个面向内容服务的组件

内容管理在企业级的应用越来越多,也越显重要。但目前,传统内容管理技术存在很多不足。作为软件开发的一个....
发表于 03-01 14:41 576次 阅读

利用照度感测组件改善液晶显示器画质与耗电

随着行动电话与液晶电视使用数量急速增加,如何降低液晶显示器的耗电量并改善影像画质,尤其是夜间使用时画....
发表于 11-23 14:00 600次 阅读

最新燃料电池组件生产设备

最新燃料电池组件生产设备  巴斯夫(BASF)周三宣布,公司已在美国新泽西州,萨姆赛特正式....
发表于 11-20 11:27 1095次 阅读

COM技术内幕-微软组件对象模型

COM技术内幕-微软组件对象模型微软公司的组件对象模型(COM)作为一种重要的工具已崭露头角,它是微....
发表于 10-09 11:00 689次 阅读
COM技术内幕-微软组件对象模型

纺丝机电锭组件的故障诊断技术研究

         针....
发表于 09-12 11:31 421次 阅读

ADO.NET组件在企业信息系统中的研究与实现

数据访问技术是当前分布式系统应用的关键技术。讨论ADO.NET 组件的对象模型、Oracle.NET....
发表于 07-30 15:25 490次 阅读