ROS学习笔记(七)---参数服务器

ROS学习笔记文章目录

01. ROS学习笔记(一)—Linux安装VScode
02. ROS学习笔记(二)—使用 VScode 开发 ROS 的Python程序(简例)
03. ROS学习笔记(三)—好用的终端Terminator
04. ROS学习笔记(四)—使用 VScode 启动launch文件运行多个节点
05. ROS学习笔记(五)—话题发布
06. ROS学习笔记(六)—服务通信机制

1. 参数服务器是什么
参数服务器是ROS中用于存储和共享参数的中央存储库。它是一个全局的、分布式的键值存储系统,允许ROS节点在运行时动态地存储、读取和更新参数值。参数服务器可以在多个节点之间共享参数,并且可以通过修改参数的值来实现节点之间的通信。
参数服务器的应用场景非常广泛,以下是一些常见的例子:

  • 配置参数
    参数服务器可以用于存储和共享系统配置参数,例如机器人的硬件参数、传感器的校准参数、控制算法的参数等。这样,多个节点可以方便地读取这些配置参数,而不需要硬编码到节点代码中。
  • 运行时参数调整
    参数服务器可以在运行时动态地调整节点的参数,而无需重新编译或重新启动节点。这对于调试和优化节点的行为非常有用。
  • 状态共享
    参数服务器可以用于共享系统的状态信息,例如机器人的位置、目标位置、传感器的测量值等。多个节点可以通过读取参数服务器上的状态参数来了解系统的当前状态。

2. 参数服务器的理论模型
参数服务器的理论模型如下:
在这里插入图片描述
上图参考了赵虚左老师的课程
在这个模型中,ROS Master充当管理者的角色,负责协调和管理整个ROS系统。Talker是参数设置者,负责将参数设置到参数服务器中。Listener是参数调用者,负责从参数服务器中获取参数。

具体流程如下:

  • Talker(参数设置者)将参数设置到参数服务器中。它向ROS Master发送请求,告诉ROS Master要将哪个参数设置为什么值。
  • ROS Master接收到Talker的请求后,将参数的值保存到参数服务器上。参数服务器是一个分布式的键值存储系统,用于存储ROS节点之间共享的参数和配置信息。
  • Listener(参数调用者)想要获取参数的值,它向ROS Master发送请求,告诉ROS Master要获取哪个参数的值。
  • ROS Master接收到Listener的请求后,从参数服务器上获取对应参数的值,并将值返回给Listener。
  • Listener接收到参数的值后,可以在其节点中使用该值进行相应的操作。

通过这种模型,Talker可以根据需要设置参数的值,而Listener可以根据需要获取参数的值。参数服务器作为一个集中的存储系统,使得参数的设置和获取可以在不同的节点之间进行,实现了参数的共享和动态配置。

3.编写参数服务器(新增(修改)参数)的python案例
(1)任务要求:演示参数的新增与修改需求。即在参数服务器中设置机器人的属性,型号,半径

(2)编写程序实现
我们在上一个工作空间下面新建plumbing_param_server文件夹作为参数服务器这一项目的功能包,然后创建script文件夹,再新建一个demo01_pub_p.py的文件来编写发布方程序,记得打开python可执行权限,然后编辑配置文件CMakeLists.txt,怎么创建新的功能包等具体可见ROS学习笔记(二)
在这里插入图片描述
完整程序如下:

#! /usr/bin/env python
#coding:utf-8
import rospy"""
演示参数的新增与修改
需求:在参数服务器中设置机器人的属性,型号,半径
"""
if __name__ == "__main__":#2.初始化 ROS节点rospy.init_node("param_set_p")#3.新增参数rospy.set_param("type_p" , "xiaoHuangChe")rospy.set_param("radius_p" , 0.15)rospy.loginfo("设置成功")#修改参数rospy.set_param("radius_p" , 0.4)pass

crtl+B编译运行后,打开终端查看发布方结果,也就只是打印出来一个“设置成功”
在这里插入图片描述

(3)查看参数新增与修改的效果
① 通过终端查看参数新增与修改的效果,新增另外一个终端,输入如下命令,可以 列出所有参数。

 rosparam list # 列出所有参数

② 通过下面的命令来获取参数

rosparam get name # 获取参数

在新的终端输入rosparsm的相关指令后,获取到发布方的设置的参数,可以看到其中radius_p的取值是我们最后修改的0.4,同样你可以用rosparam get type_p 来获取对应的值。
在这里插入图片描述

附rosparam参数的相关命令
rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数

rosparam set    设置参数
rosparam get    获取参数
rosparam load    从外部文件加载参数
rosparam dump    将参数写出到外部文件
rosparam delete    删除参数
rosparam list    列出所有参数

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

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

相关文章

LabVIEW在燃气轮机发电机组励磁控制系统测试中的应用

LabVIEW在燃气轮机发电机组励磁控制系统测试中的应用 燃气轮机发电机组作为一种高效可靠的常备应急电源,在保障发电品质稳定性和可靠性方面发挥着关键作用。其中,励磁控制系统是保证供电质量的重要环节,对发电机组的稳定运行至关重要。为了有…

面向 NLP 任务的大模型 Prompt 设计

很久之前,我们介绍到,prompt是影响下游任务的关键所在,当我们在应用chatgpt进行nlp任务落地时,如何选择合适的prompt,对于SFT以及推理环节尤为重要。 不过,硬想不是办法,我们可以充分参考开源的…

gitlab ci pages

参考文章 gitlab pages是什么 一个可以利用gitlab的域名和项目部署自己静态网站的机制 开启 到gitlab的如下页面 通过gitlab.ci部署项目的静态网站 # build ruby 1/3: # stage: build # script: # - echo "ruby1"# build ruby 2/3: # stage: build …

linux 驱动——杂项设备驱动

杂项设备驱动 在 linux 中,将无法归类的设备定义为杂项设备。 相对于字符设备来说,杂项设备的主设备号固定为 10,而字符设备不管是动态分配还是静态分配设备号,都会消耗一个主设备号,比较浪费主设备号。 杂项设备会自…

大数据分析22、23真题回忆

2022 学长描述 1. 一个很简单的据估计 2. 算一个决策树 3. Cypher图 4.Hadoop和Spark的区别 2023 真题回忆 1. 大数据分析的定义 说出大数据分析三个层次 2.大数据分析流程 预处理部分包含哪几个步骤 3.Spark核心部件和应用库有哪些 并简要说明功能 4. 主成分分析和因…

MyBatis的配置文件(.properties,typeAliases,Mappers)

目录 一,.properties标签 二,typeAliases标签 三,Mappers标签 一,.properties标签 我们一般会把数据库配置信息定义在一个独立的配置文件里面,比如db.properties: jdbc.drivercom.mysql.jdbc.Driver jd…

2023中国品牌节金谱奖荣誉发布 酷开科技获颁OTT行业科技创新奖

11月17日—19日,以“复苏与腾飞”为主题的2023第十七届中国品牌节,在杭州市云栖小镇国际会展中心成功举行。在18日晚间的荣耀盛典上,“TopBrand 2023中国品牌节金谱奖”荣誉发布,酷开科技斩获OTT行业科技创新奖。 酷开科技作为OTT…

类和对象(中篇)

类的六个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数: 用户没有显式实现,编译器会…

TransXNet实战:使用 TransXNet实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

Java发起SOAP请求代码参考

目录 Java发起SOAP请求代码参考 代码1.组装参数2.加密参数3.发起连接4.解析返回数据 参考 文章所属专区 超链接 代码 1.组装参数 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&qu…

HarmonyOS引导页登陆页以及tabbar的代码说明1

效果 以下代码是东拼西凑出来的。只是为了个人熟悉一下相关模块的使用&#xff1a; 用的知识点&#xff1a; Resouces 此部分分内容可以在项目中找到&#xff1a; resources/base/element/color.json 为项目着色配置&#xff0c;当然也可以正接在代码里写 float.json 为相关…

linux之Samba服务器

环境&#xff1a;虚拟机CENTOS 7和 测试机相通 一、Samba服务器_光盘共享&#xff08;匿名访问&#xff09; 1.在虚拟机CENTOS 7安装smb服务&#xff0c;并在防火墙上允许samba流量通过 2. 挂载光盘 3.修改smb.conf配置文件&#xff0c;实现光盘匿名共享 4. 启动smb服务 5.在…

快速解决msvcr100.dll丢失的方法分享,亲测有效的5个方法

在计算机使用过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之一就是某些程序无法正常运行&#xff0c;提示“msvcr100.dll丢失”的错误信息。msvcr100.dll是Microsoft Visual C 2010运行库的一部分&#xff0c;它提供了许多常用的函数和类&#xff0c;这些函数和类…

LVS负载均衡器(DR模式)+nginx七层代理+tomcat多实例+php+mysql 实现负载均衡以及动静分离、数据库的调用!!!

目录 前言 一、nfs共享存储&#xff0c;为两个节点服务器提供静态网页共享 二、nginx作为lvs的后端节点服务器&#xff0c;完成lo:0网卡配置&#xff0c;以及内核参数设置&#xff0c;还有设置路由表 步骤一&#xff1a;先完成nfs共享存储挂载 步骤二&#xff1a;完成lo:0网…

Nginx快速入门:访问日志access.log参数详解 |访问日志记录自定义请求头(三)

0. 引言 在企业的生产环境中&#xff0c;我们时常需要通过nginx的访问日志来统计流量、排查调用问题等&#xff0c;而nginx默认的日志格式所包含的信息远无法满足我们使用&#xff0c;因此常常需要对日志进行自定义&#xff0c;所以今天我们就来看如何自定义nginx的访问日志格…

buuctf-Misc 题目解答分解91-93

91.[SUCTF2018]followme 下载完就是一个流量包 &#xff0c;用wireshark 打开 直接导出 http对象 这里面 有很多的这样的文件 里面都是参数 直接搜索 关键字 suctf grep -r "SUCTF" 得到flag SUCTF{password_is_not_weak} 92.[MRCTF2020]CyberPunk 用notepad 打开…

hive企业级调优策略之分组聚合优化

测试用表准备 hive企业级调优策略测试数据 (阿里网盘下载链接)&#xff1a;https://www.alipan.com/s/xsqK6971Mrs 订单表(2000w条数据) 表结构 建表语句 drop table if exists order_detail; create table order_detail(id string comment 订单id,user_id …

【网络安全】—Shell编程入门(1)

文章目录 基础变量概念介绍特殊变量进阶数值计算实践条件测试比较条件判断语句流程控制语句循环语句应用 Shell 是 Unix/Linux 操作系统下的一种命令行解释器&#xff0c;它接收用户输入的命令然后调用相应的程序。我们可以通过 Shell 脚本来自动执行一系列的命令。接下来&…

(四)STM32 操作 GPIO 点亮 LED灯 / GPIO工作模式

目录 1. STM32 工程模板中的工程目录介绍 2. GPIO 简介 3. GPIO 框图剖析 1&#xff09;保护二极管及上、下拉电阻 2&#xff09; P-MOS 管和 N-MOS 管 3&#xff09;输出数据寄存器 3.1&#xff09;ODR 端口输出数据寄存器 3.2&#xff09;BSRR 端口位设置/清除寄存器 4&a…

做一个wiki页面是体验HTML语义的好方法

HTML语义&#xff1a;如何运用语义类标签来呈现Wiki网页 在上一篇文章中&#xff0c;我花了大量的篇幅和你解释了正确使用语义类标签的好处和一些场景。那么&#xff0c;哪些场景适合用到语义类标签呢&#xff0c;又如何运用语义类标签呢&#xff1f; 不知道你还记不记得在大…