目录
话题通信
创建node
API
参数
创建写端
API
参数:
创建读端
API
参数
代码样例
Talker
Listener
BUILD
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
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对象的共享指针
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对象的共享指针
#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;}
#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;}
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",],)
上一篇:凯恩任意球直奔死角,门兴门将尼古拉斯神扑救主! 凯恩转身抽射死角破门 凯恩客串门将扑出单刀球
下一篇:剑南春|巴黎2-1斯特拉斯堡,姆巴佩传射,阿森西奥破门 姆巴佩绝杀斯特拉斯堡精彩视频 姆巴佩双响绝杀法国2-1战胜丹麦