Apollo Cyber RT下组件

定义&作用

定义:组件是用于构建应用程序模块的基类。

作用:把多方传感器的数据进行过滤,融合,并导出使用。

 

通用组件:

作用:实现简单的信息过滤和融合

实列分析:启动一个talker节点,对该节点进行信息的过滤,只收集信息和年龄

实现流程:

    1. 自定义类继承Component类,并重写其Init()与Proc()函数;
    2. 编写dag文件与launch文件;
    3. 编写BUILD文件
    4. 编译执行

继承demo_cc_talker并重写Component类Component_common01目录

代码解释

使用的模板与订阅的消息类型一致

Init()函数是用于初始化的,只会执行一次

Proc()函数在订阅到消息的时候就会被回调执行

编写dag文件

有向无环图,可当作数据结构理解,不闭环。

编写launch文件

用来作为程序启动的入口文件(之前启动方式都是命令执行,现在通过配置启动程序到launch中实现)。

/***
 * 组件相关的头文件
 * 实现:
 * 1包含其他头文件
 * 2定义类继承组件,重写init和proc
 * 3在cyber中注册组件
 * ***/


#include "cyber/component/component.h"
#include"cyber/demo_base_proto/lasers.pb.h"


using apollo::cyber::Component;
using apollo::cyber::demo_base_proto::Lasers;

//自定义类继承component
//模板需要与处理的消息类型一致
//组件最多支持四个模板传入
//不够的话就多次调用

class LasersCpt: public Component<Lasers,Lasers>{
    public:
        bool Init() override; //覆盖一种方法并对其进行重写
        bool Proc(const std::shared_ptr<Lasers> &LasersFront,
        const std::shared_ptr<Lasers> &LasersBack ) override;
        //里面的参数要和重写的函数一致
};
//宏实现
CYBER_REGISTER_COMPONENT(LasersCpt) 
//把自定义的类传进来,在cyber rt中注册一个类


/*******
 * #根据头文件和源文件生成一个C++库
 ********/

#include "cyber/demo_component1/lasers_cpt.h"
#include "cyber/demo_base_proto/lasers.pb.h"

using apollo::cyber::demo_base_proto::Lasers;

//资源的初始化
bool CommonCpt::Init(){

   //初始化一个发布者
    this->node ->CreateWriter();
    
    AINFO << ".....................INT.........................";

    return true;
}

//消息处理,订阅到student消息时,会回调该函数
bool CommonCpt::Proc(const std::shared_ptr<Lasers> &LasersFront,const std::shared_ptr<Lasers> &LasersBack){
    
    //数据写出

    AINFO<< "提取到学生姓名为:" << LasersFront->seq()<<";  年龄为:  "<<LasersFront->count();

    AINFO<< "提取到学生姓名为:" << LasersBack->seq()<<";  年龄为:  "<<LasersBack->count();

    return true; 
}

启动: cyber_launch start 路径.Launch

关闭: cyber launch stop 路径.launch

待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值