如何使用Cyber RT创建新组件.doc

上传人:白大夫 文档编号:3421426 上传时间:2019-08-23 格式:DOC 页数:4 大小:22KB
返回 下载 相关 举报
如何使用Cyber RT创建新组件.doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《如何使用Cyber RT创建新组件.doc》由会员分享,可在线阅读,更多相关《如何使用Cyber RT创建新组件.doc(4页珍藏版)》请在三一文库上搜索。

1、如何使用Cyber RT创建新组件Apollo Cyber 运行时。其框架 ( Apollo Cyber RT Framework ) 是基于组件概念来构建的。组件化开发的成果是基础库和公共组件,其原则是高重用,低耦合。如果让我们来看组件化开发的定义,它的着重点就是代码重用。代码重构这一步最后的结果就是提炼出一个个组件给不同的功能使用。这里我们可以看一下其中的依赖关系:具体功能依赖提炼出来的组件,组件本身之间可能也有依赖关系,但一般不多。每个组件都是Cyber框架的一个构建块, 它包括一个特定的算法模块,此算法模块处理一组输入数椐并产生一组输出数椐。要创建并启动一个算法组件, 需要通过以下4个

2、步骤:初如化组件的文件结构实现组件类设置配置文件启动组件下面的例子中,阿波君将为大家展示如何创建、编译和运行一个组件,并观察组件在屏幕上的输出。如果想更深入的探索Apollo Cyber RT框架。可以在这个目录/apollo/cyber/examples/找到很多例子,这些例子详细展示如何使用Cyber框架的各种功能。Note: 这些例子必须运行在Apollo docker环境, 且需要通过Bazel来编译。例如组件的根目录为/apollo/cyber/examples/common_component_example/需要创建以下文件:Header file: common_compone

3、nt_example.hSource file: common_component_example.ccBuild file: BUILDDAG dependency file: common.dagLaunch file: common.launch1#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:Driv

4、er; 7usingapollo:cyber:Component; 8usingapollo:cyber:ComponentBase; 910classCommonComponentSample:publicComponent11public:12boolInit()override;13boolProc(conststd:shared_ptr15;1617CYBER_REGISTER_COMPONENT(CommonComponentSample)如何实现common_component_example.h:继承 Component 类;定义自己的Init和Proc 函数. Proc 需要指

5、定输入数椐类型;使用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() 6A

6、INFO创建 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=15commo

7、n_component_example.cc,16,17hdrs=18common_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_con

8、fig 3component_library:/apollo/bazel-bin/cyber/examples/common_component_example/libcommon_component_example.so 4components 5class_name:CommonComponentSample 6config 7name:common 8readers 9channel:/apollo/prediction1011readers12channel:/apollo/test13141516在Launch启动文件中(common.launch), 配置下面的项:组件的名字。上一

9、步创建的dag配置的名字。组件运行时所在的进程目录。123commonname4/apollo/cyber/examples/common_component_example/common.dagdag_conf5commonprocess_name6component7cyber通过下面的命令来编译组件:1bash/apollo/apollo.shbuildNote:确定组件正常编译成功然后配置环境: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成功创建一个新的组件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1