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.mzph.cn/news/707446.shtml

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

相关文章

linuxlsof详解

lsof 是 List Open File 的缩写, 它主要用来获取被进程打开文件的信息&#xff0c;我们都知道&#xff0c;在Linux中&#xff0c;一切皆文件&#xff0c;lsof命令可以查看所有已经打开了的文件&#xff0c;比如: 普通文件&#xff0c;目录&#xff0c;特殊的块文件&#xff0c;…

el-table 多选表格存在分页,编辑再次操作勾选会丢失原来选中的数据

el-table表格多选时&#xff0c;只需要添加type"selection"&#xff0c; row-key及selection-change&#xff0c;如果存在分页时需要加上reserve-selection&#xff0c;这里就不写具体的实现方法了&#xff0c;可以查看我之前的文章&#xff0c;这篇文章主要说一下存…

使用pytorch实现一个线性回归训练函数

使用sklearn.dataset 的make_regression创建用于线性回归的数据集 def create_dataset():x, y, coef make_regression(n_samples100, noise10, coefTrue, bias14.5, n_features1, random_state0)return torch.tensor(x), torch.tensor(y), coef 加载数据集&#xff0c;并拆分…

shader学习记录——融合、融球效果

融合、融球效果shader&#xff0c;重点在等势面公式上 Shader "Custom/MetaballsShader" {Properties{_MainTex ("Texture", 2D) "white" {}_Color("Color",Color) (1,1,1,1)}SubShader{Tags { "RenderType""Opaque…

什么是光谱共焦位移传感器?揭秘它隐藏的5大优势!

光谱共焦位移传感器是一种先进的传感技术&#xff0c;它利用光学原理来精确测量物体表面的微小位移。这种传感器结合了光谱学和共焦显微术的原理&#xff0c;通过分析反射光的光谱特性来确定物体表面的位置。 光谱共焦传感器的核心部件是光谱仪&#xff0c;它能够将反射光分解成…

【MQL】扩充Comment函数的功能

一、MQL语言中Comment函数的缺陷 Comment函数只能在图表上显示文本信息&#xff0c;无法将信息输出到日志文件或其他位置。Comment函数的文本信息会随着新的新的信息出现而更新&#xff0c;这可能导致就的信息被覆盖。Comment函数的文本信息长度有限&#xff0c;超过一定长度的…

代码随想录算法训练营Day44 | 完全背包理论基础、518.零钱兑换 II、377.组合总和 Ⅳ

完全背包理论基础 完全背包看起来复杂不少&#xff0c;但其代码和0-1背包几乎没啥差别&#xff0c;就只改变了一个背包的遍历顺序&#xff1a; 基于0-1背包的滚动数组实现&#xff0c;将 j 的遍历顺序改为从左到右&#xff08;此时物品会被重复使用&#xff09; 完全背包的重点…

5,水平百叶窗和垂直百叶窗

将宽度设置为若干份&#xff0c;开始显示时若干个起始线&#xff0c;每个起始线间隔相同的距离。显示过程中&#xff0c;每次各个起始线同时向下&#xff08;或向右&#xff09;显示一行&#xff08;或一列&#xff09;图像&#xff0c;直到图像显示完毕。 void CMy1_showbitm…

哪个牌子的电视盒子好用?2024超强电视盒子排名

最近很多朋友问我电视盒子的相关问题&#xff0c;就目前来说&#xff0c;电视盒子的地位依然是不可取代的。我近来要发布的测评内容是哪个牌子的电视盒子好用&#xff0c;耗时两周进行对比后整理了电视盒子排名&#xff0c;看看哪些电视盒子是最值得入手的吧。 NO.1——泰捷新品…

react-组件基础

1.目标 能够使用函数创建组件 能够使用class创建组件 能够给React元素绑定事件 能够使用state和setState() 能够处理事件中的this指向问题 能够使用受控组件方式处理表单 2.目录 React组件介绍 React组件的两种创建方式 React事件处理 有状态组件和无状态组件 组件中的state…

我在代码随想录|写代码Day27 | 贪心算法 | 122.买卖股票的最佳时机 II,55. 跳跃游戏, 45.跳跃游戏 II

&#x1f525;博客介绍&#xff1a; 27dCnc &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: <<数据结构与算法>> 专题 : 数据结构帮助小白快速入门算法 &…

【文献管理】zotero插件5——在word中引用参考文献文献样式修改

文章目录 word快速引用参考文献参考文献样式修改GB7714-修改etal word快速引用参考文献 参考文献样式修改 GB7714-修改etal

获取URL中的参数

在现实生活中&#xff0c;我们处处使用URL&#xff0c;但是&#xff0c;对于其中的数据&#xff08;参数&#xff09;&#xff0c;我们该如何获取呢&#xff1f;&#xff1f;这就值得我们深思了&#xff01; 在本文&#xff0c;笔者主要向大家讲解用Java语言的Spring Boot项目…

WEB服务器-Tomcat(黑马学习笔记)

简介 服务器概述 服务器硬件 ● 指的也是计算机&#xff0c;只不过服务器要比我们日常使用的计算机大很多。 服务器&#xff0c;也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求&#xff0c;并进行处理&#xff0c;因此一般来说服务器应具备承担服务并且保障…

华为OD机试真题-最长子字符串的长度(一)-2023年OD统一考试(C卷)---Python3--开源

题目&#xff1a; 考察内容&#xff1a; 思路转化&#xff1a;求出o字母出现偶次&#xff08;o的索引&#xff09;&#xff1b;环形–双倍字母&#xff1b; 方法1&#xff1a;循环变量双倍字母&#xff08;保证环线&#xff09;&#xff0c;记录最大偶次&#xff0c;如果是&a…

【Flink精讲】Flink单机安装步骤

Flink单机安装步骤 获取Flink安装包&#xff1a;Index of /flink 解压缩&#xff1a;tar -zxvf flink-1.17.2-bin-scala_2.12.tgz 修改配置文件&#xff1a;conf/flink-conf.yaml 启动命令&#xff1a;./bin/start-cluster.sh 终止命令&#xff1a;./bin/stop-cluster.s…

【视频编码\VVC】帧间预测编码基础知识

帧间预测编码概述 基本原理 利用时间相关性&#xff0c;使用邻近已编码图像像素值预测当前图像的像素值&#xff0c;能够有效去除时域冗余。目前的视频编码标准中&#xff0c;帧间预测都采用了基于块的运动补偿技术。 运动估计&#xff08;ME&#xff09;&#xff1a;当前图…

2024程序员进阶宝典,字节跳动+腾讯+华为+小米+阿里面试题分享

1、拓宽知识面 兴趣来了挡也挡不住&#xff01;从最初开始学习编程&#xff0c;从ASP到ASP.net,JS,Winform,Java,C,PHP,Python,都是自学&#xff01; 不过这里要说一下&#xff0c;如果没有一两门编程语言比较熟悉的情况下&#xff0c;最好还是不要自学&#xff1b;入门是最难…

Linux系统——Nginx拓展

目录 一、重写功能——rewrite 1.if 1.1 if 2. return 2.1状态码301和302的区别 301 302 3. set 4. break 5. rewrite 5.1 rewrite flag使用 5.2 flag说明 5.3举例 5.3.1访问 bj 跳转 beijing 5.3.2举例——break 5.3.3 http 转 https 5.3.4 break 与 last …

要在Javascript中实现表格新增行功能,且添加元素,增删操作

起始表格元素&#xff1a; <!-- table>(thead>tr>th*6)(tbody>tr>td*6) --><div class"container"><table id"myTable"><caption><h3>员工信息管理系统</h3></caption><thead><tr>&…