Apollo 应用与源码分析:CyberRT-话题通信
admin
2024-02-05 01:08:53
0

话题通信

目录

话题通信

创建node

API

参数

创建写端

API

参数:

创建读端

API

参数

代码样例

Talker

Listener

BUILD



创建node


API

std::unique_ptr apollo::cyber::CreateNode(const std::string& node_name, const std::string& name_space = "");


参数


Node_name: 节点名,全局唯一标识符
Name_space:节点所在的空间名称
Name_space 默认为空。是与node_name连在一起的空间名。格式为/namespace/node_name
返回值-指向Node的独占智能指针
错误条件—当cyber::Init()未被调用时,系统处于未初始化状态,无法创建节点,返回nullptr

创建写端


API

template auto CreateWriter(const std::string& channel_name)-> std::shared_ptr>;
template auto CreateWriter(const proto::RoleAttributes& role_attr)-> std::shared_ptr>;


参数:


Channel_name:要写入的通道名
MessageT:要写入的消息类型
返回值- Writer对象的共享指针


创建读端


API

template 
auto CreateReader(const std::string& channel_name, const std::function&)>& reader_func)-> std::shared_ptr>;template 
auto CreateReader(const ReaderConfig& config,const CallbackFunc& reader_func = nullptr)-> std::shared_ptr>;template 
auto CreateReader(const proto::RoleAttributes& role_attr,const CallbackFunc& reader_func = nullptr)
-> std::shared_ptr>;


参数


MessageT:要读取的消息类型
Channel_name:要接收的通道的名称
Reader_func:处理消息的回调函数
返回值—Reader对象的共享指针



代码样例

Talker

#include "cyber/cyber.h"#include "cyber/proto/chatter.pb.h"#include "cyber/time/rate.h"#include "cyber/time/time.h"using apollo::cyber::Rate;using apollo::cyber::Time;using apollo::cyber::proto::Chatter;int main(int argc, char *argv[]) {// init cyber frameworkapollo::cyber::Init(argv[0]);// create talker nodestd::shared_ptr talker_node(apollo::cyber::CreateNode("talker"));// create talkerauto talker = talker_node->CreateWriter("channel/chatter");Rate rate(1.0);while (apollo::cyber::OK()) {static uint64_t seq = 0;auto msg = std::make_shared();msg->set_timestamp(Time::Now().ToNanosecond());msg->set_lidar_timestamp(Time::Now().ToNanosecond());msg->set_seq(seq++);msg->set_content("Hello, apollo!");talker->Write(msg);AINFO << "talker sent a message!";rate.Sleep();}return 0;}

Listener

#include "cyber/cyber.h"#include "cyber/proto/chatter.pb.h"void MessageCallback(const std::shared_ptr& msg) {AINFO << "Received message seq-> " << msg->seq();AINFO << "msgcontent->" << msg->content();}int main(int argc, char *argv[]) {// init cyber frameworkapollo::cyber::Init(argv[0]);// create listener nodeauto listener_node = apollo::cyber::CreateNode("listener");// create listenerauto listener =listener_node->CreateReader("channel/chatter", MessageCallback);apollo::cyber::WaitForShutdown();return 0;}

BUILD

cc_binary(name = "talker",srcs = [ "talker.cc", ],deps = ["//cyber","//cyber/examples/proto:examples_cc_proto",],)cc_binary(name = "listener",srcs = [ "listener.cc", ],deps = ["//cyber","//cyber/examples/proto:examples_cc_proto",],)

相关内容

热门资讯

白色石油价值重估,锂价能否突破... 汇通财经APP讯——2025年碳酸锂市场在供应过剩与价格深跌的动荡中触底,随着模块化储能需求的爆发式...
美国总统特朗普:杰米·戴蒙让我... 美国总统特朗普:杰米·戴蒙让我失去了银行账户。 来源:金融界AI电报
GPU创企曦望一年融资30亿:... 曦望表示,所筹资金将用于下一代推理GPU研发、规模化量产及生态共建。 资料显示,曦望成立于2020...
【网络股指数ETF收涨1.9%... 【网络股指数ETF收涨1.9%,领跑美股行业ETF】周四(1月22日),网络股指数ETF收涨1.91...
佩蒂股份:新西兰品牌上市计划稳... 1月9日,佩蒂股份(300673)在交易所官方互动平台回应投资者提问时表示,公司新西兰主粮工厂目前已...
特朗普起诉美国最大银行 新华社纽约1月22日电(记者刘亚南 徐静)据美国媒体22日报道,美国总统特朗普对美国最大银行摩根大通...
行业调查称英国零售商颓势有所缓... 中新网伦敦1月22日电(记者 欧阳开宇)英国工业联合会(CBI)22日发布的调查显示,本月英国零售商...
和讯投顾周翔:超级主力完成出货... 当前A股市场出现了一些令人关注的现象,确实让不少投资者感到困惑和不安。今天上证50ETF成交创下了1...
业务承压、回款滞后!成都路桥2... 1月22日,成都路桥(002628)披露2025年度业绩预告,预计2025年归母净利润亏损6500万...
美股爆发,黄金直拉!特朗普:将... 1月22日晚间,美股全线走高。消息面上,美国总统特朗普最新表示,正在推进中的格陵兰岛协议将赋予美国“...
原创 楼... 作为一名长期关注中国房地产市场的观察者,我见证了无数家庭在这个市场中的起伏。扎根于地产研究的十八年经...
六大行集体公告!落实个人消费贷... 人民网北京1月22日电 (记者罗知之)近日,工商银行、农业银行、中国银行、建设银行、交通银行、邮储银...
资本密集型领域正在成为外资投资... 人民网罗马1月21日电 (记者郑彬)日前,联合国贸易和发展会议(简称:联合国贸发会议)最新发布的《全...
为会展行业注入新动能 2026... 深圳商报·读创客户端记者 刘娥 在科技变革与产业融合的双重驱动下,中国会展业正迎来前所未有的发展机遇...
原创 狂... 在各类资产起起伏伏的当下,有一个板块正在悄悄走出独立行情。近日,包括高盛、花旗在内的多家国际大行分析...
郑州机场上线“无感通关”,单件... 【大河财立方 记者 陈诗昂】“这次从韩国回来,通关流程简便了,拿到行李后,不用排队搬运过X光机,几分...
原创 印... 2025年11月,印度五大炼油企业在制裁截止日11月21日之前,大规模囤积俄罗斯石油,在12月份没有...
收评:创业板指探底回升涨超1%... 【收评:创业板指探底回升涨超1% 商业航天概念爆发】财联社1月22日电,市场午后震荡回升,三大指数集...
富国消费主题混合C基金近3年单... 近期,富国基金旗下富国消费主题混合基金的表现引起市场关注。 富国消费主题混合基金成立于2014年12...
宏利基金被曝与特斯拉存在诉讼 ... 近期,上海市高级人民法院披露的一则开庭公告显示,特斯拉(上海)有限公司已起诉宏利基金管理有限公司(下...