Cyber RT 参数

以共享的方式实现不同节点之间数据交互的通信模式。

参数服务器是基于服务实现的,包含客户端和服务器端,服务端节点可以存储数据,客户端节点可以访问服务端节点操作数据,这个过程虽然基于请求响应的,但是无需自己实现请求与响应,此过程已经被封装,调用者只需要通过比较简单友好的API就可以实现参数操作。

作用

存储一些多节点共享的数据,类似于全局变量

需求

创建两个节点A与B,节点A作为参数服务端,节点B作为参数客户端,在节点A存储数据(车辆参数),节点B操作数据。

流程

1.创建参数服务器服务端
2.创建参数服务器客户端
3.编译并执行

参数说明

Cyber RT 中通过apollo::cyber.:.Parameter封装参数,下列表格列出了所支持的参数类型,以及对应的 C++ 和 protobuf 中的数据类型。
在这里插入图片描述
除了上述5种类型之外,Parameter 还支持以 protobuf 对象作为传入参数的接口。执行后的序列化处理对象
并将其转换为 STRING 类型以进行传输。

C++ 实现

1.参数服务端
demo_cc 目录下新建 C++ 文件 demo05_param_server.cc,输入如下内容:

/*需求:参数服务端设置数据(服务端也可以操作数据),客户端操作数据实现:1.创建头文件2.初始化i cyber 框架3.创建节点4.创建参数服务端5.操作参数(增,查,改),没有删除实现6.等待节点关闭,释放资源
*/
#include"cyber/cyber.h"
#include"cyber/parameter/parameter_server.h"using apollo::cyber::ParameterServer;
using apollo::cyber::Parameter;int main(int argc, char const *argv[])
{apollo::cyber::Init(argv[0]);std::shared_ptr<apollo::cyber::Node>server_node =  apollo::cyber::CreateNode("car_param");auto server = std::make_shared<ParameterServer>(server_node);//zengserver->SetParameter(Parameter("car_type","apollo"));server->SetParameter(Parameter("height",1.65));server->SetParameter(Parameter("lasers",4));//cha//1.获取指定参数Parameter temp;server->GetParameter("car_type",&temp);AINFO<<temp.Name()<<"=="<<temp.AsString();server->GetParameter("height",&temp);AINFO<<temp.Name()<<"=="<<temp.AsDouble();server->GetParameter("lasers",&temp);AINFO<<temp.Name()<<"=="<<temp.AsInt64();//2.获取所有参数std::vector<Parameter>ps;server->ListParameters(&ps);for(auto  &&p : ps){AINFO<<p.Name()<<"---------"<<p.TypeName();AINFO<<p.DebugString();}//gai   当设置的参数建已经存在时,会覆盖server->SetParameter(Parameter("lasers",100));server->GetParameter("lasers",&temp);AINFO<<temp.Name()<<"=="<<temp.AsInt64();apollo::cyber::WaitForShutdown();/* code */return 0;
}

BUILD 文件

cc_binary(name="demo05_param_server",srcs=["demo05_param_server.cc"],deps=["//cyber","//cyber/parameter",]
)

编译
在这里插入图片描述
执行
在这里插入图片描述

2.参数客户端
demo_cc 目录下新建 C++ 文件 demo06_param_client.cc,输入如下内容:

/*需求:参数服务端设置数据(服务端也可以操作数据),客户端操作数据实现:1.创建头文件2.初始化i cyber 框架3.创建节点4.创建参数客户端5.操作参数(增,查,改),没有删除实现6.等待节点关闭,释放资源
*/
#include "cyber/cyber.h"
#include "cyber/parameter/parameter_client.h"using apollo::cyber::ParameterClient;
using apollo::cyber::Parameter;int main(int argc, char const *argv[])
{apollo::cyber::Init(argv[0]);std::shared_ptr<apollo::cyber::Node>client_node =  apollo::cyber::CreateNode("param_client");auto client = std::make_shared<ParameterClient>(client_node,"car_param");  //这里的就是服务端的节点名称,他把话题通信封装了//zeng// client->SetParameter(Parameter("car_type","apollo"));// client->SetParameter(Parameter("height",1.65));// client->SetParameter(Parameter("lasers",4));//cha//1.获取指定参数Parameter temp;client->GetParameter("car_type",&temp);AINFO<<temp.Name()<<"=="<<temp.AsString();client->GetParameter("height",&temp);AINFO<<temp.Name()<<"=="<<temp.AsDouble();client->GetParameter("lasers",&temp);AINFO<<temp.Name()<<"=="<<temp.AsInt64();//2.获取所有参数std::vector<Parameter>ps;client->ListParameters(&ps);for(auto  &&p : ps){AINFO<<p.Name()<<"---"<<p.TypeName()<<"---"<<p.DebugString();}//gai   当设置的参数建已经存在时,会覆盖client->SetParameter(Parameter("height",2.0));client->GetParameter("height",&temp);AINFO<<temp.Name()<<"=="<<temp.AsDouble();apollo::cyber::WaitForShutdown();return 0;
}

BUILD 文件

cc_binary(name="demo06_param_client",srcs=["demo06_param_client.cc"],deps=["//cyber","//cyber/parameter",]
)

编译执行
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496724.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年阿里云优惠券领取及使用教程_无门槛优惠券

阿里云优惠代金券领取入口&#xff0c;阿里云服务器优惠代金券、域名代金券&#xff0c;在领券中心可以领取当前最新可用的满减代金券&#xff0c;阿里云百科aliyunbaike.com分享阿里云服务器代金券、领券中心、域名代金券领取、代金券查询及使用方法&#xff1a; 阿里云优惠券…

亚信安慧AntDB助力全链路实时化

实时数据平台&#xff0c;快速实现企业全链路实时化 引入数据仓库、数据挖掘、HTAP等先进理念&#xff0c;通过实时数据应用平台来装载庞大的信息量&#xff0c;进行实时分析处理&#xff0c;克服数据处理过程中的困难&#xff0c;是当下各企事业单位、互联网、金融&#xff0c…

嵌入式学习 Day 26

数组指针和指针数组 &#xff08;题外话&#xff09; 数组指针&#xff1a;数组指针是一种指针&#xff0c;它指向一个数组的首地址。在C语言中&#xff0c;数组名本身就是一个指向数组首地址的指针&#xff0c;因此数组名可以被赋值给指针变量&#xff0c…

LeetCode59. 螺旋矩阵 II(C++)

LeetCode59. 螺旋矩阵 II 题目链接代码 题目链接 https://leetcode.cn/problems/spiral-matrix-ii/ 代码 class Solution { public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> res(n, vector<int>(n, 0));int startx …

回归预测 | Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量…

java常用应用程序编程接口(API)——Date,SimpleDateFormat,Calendar概述

前言&#xff1a; 时间和日期在程序中还是非常重要的&#xff0c;需要牢牢掌握。打好基础&#xff0c;daydayup! Date 代表的是日期和时间 Date的使用方式 1&#xff0c;创建对象&#xff0c;调用无参数构造器初始化对象&#xff1a;public Date(); &#xff08;创建一个Date对…

express+mysql+vue,从零搭建一个商城管理系统6--数据校验和登录

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、修改models/user.js二、修改routes下的user.js三、Api新建user/login接口四、删除数据库原有数据&#xff0c;添加新验证规则的用户四、用户登录总结 前言 需求&#xff1a;主要学习express&#xff0c;…

springboot226经方药食两用服务平台

经方药食两用服务平台的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定经方药食两用…

IPD(集成产品开发)—核心思想

企业发展到一定阶段就会遇到管理瓶颈&#xff0c;IPD流程是一种高度结构化的产品开发流程&#xff0c;它集成了业界很多优秀的产品开发方法论&#xff0c;像搭积木一样的组合成一种非常有效的流程。如果我们能根据企业的规模和行业特点&#xff0c;对全流程的IPD进行合适的裁剪…

接口测试的测试要点

接口测试的测试要点&#xff0c;你知道都有哪些吗&#xff1f; 接口测试是软件测试中的重要组成部分&#xff0c;它的目的是评估接口的质量和可靠性&#xff0c;以保证系统的正常运行。在进行接口测试时&#xff0c;必须要考虑到以下几个方面&#xff1a; 测试用例的编写 测试…

基于HT32的智能家居demo(蓝牙上位机)

参加合泰杯作品的部分展示&#xff0c;基于HT32的智能家居&#xff0c;这里展示灯光的相关控制&#xff0c;是用蓝牙进行的数据透传&#xff0c;参考了一些资料&#xff0c;美化封装了一下之前的上位机界面。 成果展示 点击主界面的蓝牙设置&#xff0c;进行连接&#xff0c;下…

Window系统安装USB Redirector结合cpolar实现远程访问本地USB设备

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 USB Redirector是一款方便易用的USB设备共享服务应用程序&#xff0c;它提供了共享和访问本地或互联网上的U…