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

news2024/9/25 11:20:33

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.coloradmin.cn/o/1324219.html

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

相关文章

SMARTFORMS打印问题

一、问题概述 项目中碰到EPSON针式打印机,SAP打印出来的三单合一,是想横向打印,结果不管怎么设置打印出来都是纵向的; 二、调整 1、首先调整SMARTFORMS的打印方向,使用T-CODE:SMARTFORMS,如下图&#xf…

嵌入式串口输入详细实例

学习目标 掌握串口初始化流程掌握串口输出单个字符掌握串口输出字符串掌握通过串口printf熟练掌握串口开发流程学习内容 需求 串口循环输出内容到PC机。 串口数据发送 添加Usart功能。 首先,选中Firmware,鼠标右键,点击Manage Project Items 接着,将gd32f4xx_usart.c添…

Dokit 开源库:简化 Android 应用开发的利器

Dokit 开源库:简化 Android 应用开发的利器 一、Dokit 简介二、Dokit 功能三、Dokit 使用3.1 DoKit Android 最新版本3.2 DoKit Android 接入步骤 四、总结 在 Android 应用开发过程中,我们经常需要处理调试、性能优化和用户体验等方面的问题。然而&…

【python】进阶--->并发编程之协程

一、协程 是另外一种实现多任务的方式,只不过比线程占用更小的执行单元(需要的资源).因为它自带cpu上下文,就可以在合适的时机,从一个协程切换到另一个协程. (任务数量多于cpu时)系统在很短的时间内,将cpu轮流分配给不同的任务执行,造成了多任务同时运行的错觉.而每个任务在运行…

全面解析找不到xinput1_3.dll无法继续执行代码的多种解决方案(实用教程)

xinput1_3.dll文件是什么? xinput1_3.dll是一个动态链接库文件,它是DirectInput的组件之一。DirectInput是微软公司开发的一种输入设备驱动程序,用于处理游戏控制器、键盘、鼠标等输入设备的信号。xinput1_3.dll文件主要负责处理游戏控制器的…

年终汇报这么写,升值加薪必有你!

#01 你这么能干, 老板知道吗? — 打工人最怕什么? 最怕你忙前忙后,干活一大堆,气出一身结节,锅还没少背,最后升职加薪没有你,出国旅游不带你;更怕你日常996&#xf…

C语言归并排序(合并排序)算法以及代码

合并排序是采用分治法,先将无序序列划分为有序子序列,再将有序子序列合并成一个有序序列的有效的排序算法。 原理:先将无序序列利用二分法划分为子序列,直至每个子序列只有一个元素(单元素序列必有序),然后再对有序子序…

HTML5+CSS3小实例:纯CSS实现锚点平滑过渡

实例:纯CSS实现锚点平滑过渡 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"&…

宠物干货类软文怎么写?媒介盒子分享

虽然近年来生育率有所减少&#xff0c;但是养宠物的人却大大增加&#xff0c;随之而来的宠物经济也是一个值得关注的点。做宠物生意想要脱颖而出&#xff0c;可以依靠软文营销&#xff0c;其中宠物干货类软文由于其价值性能够带来较高的转化率今天媒介盒子主要来和大家聊聊宠物…

QT 前端技术 QSS(1)

伪装态是指当鼠标悬停在按钮上的时候&#xff0c;按钮的字体背景颜色等会发生改变。 这句话意思在this里面找到QTextEdit控件#后面表示指定的控件名称就是从所有QTextEdit中选出叫做lbsize的QTextEdit并对其进行后面的操作。 如果将QTextEdit#lbsize删除的话就是将this中全部的…

c语言编写http服务器(Linux下运行)

参考文章&#xff1a;https://blog.csdn.net/baixingyubxy/article/details/125964986?spm1001.2014.3001.5506 上面是详细讲解&#xff0c;我这篇是总结了他的代码&#xff0c;因为他没给整体代码 所有代码&#xff1a; #include <stdio.h> #include <stdlib.h&g…

echarts地图map点击某一区域设置选中颜色/select选中文字颜色设置无效

选中区域为红色&#xff0c;字体为白色 1.selectedMode: ‘single’,设置单选&#xff0c;多选&#xff0c;不选中 2.series/map/select属性 series: [{type: map,map: area,//单选selectedMode: single,aspectScale: 0.73,layoutCenter: [50%, 51%], //地图位置layoutSize: …

CEC2013(python):五种算法(OOA、WOA、GWO、DBO、HHO)求解CEC2013(python代码)

一、五种算法简介 1、鱼鹰优化算法OOA 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、蜣螂优化算法DBO 5、哈里斯鹰优化算法HHO 二、5种算法求解CEC2013 &#xff08;1&#xff09;CEC2013简介 参考文献&#xff1a; [1] Liang J J , Qu B Y , Suganthan P N , et al. Pro…

量子登月计划!Infleqtion与日本JST研发中性原子量子计算机

​&#xff08;图片来源&#xff1a;网络&#xff09; 美国量子信息公司Infleqtion&#xff0c;已被日本科学技术振兴机构&#xff08;JST&#xff09;选定为“量子登月计划”唯一的外国量子计算合作伙伴。该计划旨在增强日本的量子技术能力&#xff0c;预计将在2050年之前对日…

WinDbg调试异常(!!! second chance !!!)

以前使用windbg调试样本时不时会遇到异常并提示(!!! second chance !!!),之前也尝试查找过原因但是并没有找到,一直十分郁闷。这次又出现了异常,有时间查找原因并发现了问题所在,于是记录下分析过程。 起因 在调试一个样本,每次用windbg调试都会出现: 但是使用x64dbg调…

java-sec-code中jwt

java-sec-code中jwt jwt漏洞首先需要爆破出密钥&#xff0c;然后在进行伪造&#xff0c;由于这里是白盒&#xff0c;不做爆破演示&#xff0c;直接利用 创建jwt属性值 http://127.0.0.1:8080/jwt/createToken从jwt属性值中解密获取user值 http://127.0.0.1:8080/jwt/getName…

docker安装sonar后集成本地代码进行质量分析

背景 在完成代码后&#xff0c;想做一个较低层级的代码自检&#xff0c;来完善自己代码的质量 技术选型 在结合现有项目情况下&#xff0c;结合Jenkins走CI CD过程&#xff0c;选择了sonarqube 安装 下载地址:自己搜 安装教程我来出,首先sonarqube完整的过程分了两部分&…

网络时代的新宠

当今社会&#xff0c;随着科技的不断进步和互联网的普及&#xff0c;手机已经成为了人们生活中不可或缺的一部分。它不仅仅是一个通信工具&#xff0c;更是娱乐、学习和获取信息的利器。而其中&#xff0c;手机无人直播更是近年来备受关注的热门话题。 直播&#xff0c;一种实…

程序员必知!开放封闭原则的实战应用与案例分析

开放封闭原则是面向对象设计中的重要原则之一&#xff0c;它要求软件实体&#xff08;类、模块、函数等&#xff09;应该对扩展开放&#xff0c;但对修改关闭。这意味着当需要添加新功能时&#xff0c;不应该修改现有的代码&#xff0c;而是应该通过扩展来实现。这可以通过使用…

图片编辑文字用什么软件?带你了解这5个

图片编辑文字用什么软件&#xff1f;在当今数字化的时代&#xff0c;图片编辑已经成为我们日常生活中不可或缺的一部分。有时候&#xff0c;我们需要在图片上添加文字&#xff0c;以增强图片的视觉效果或传达特定的信息。那么&#xff0c;有哪些可以在图片上编辑文字的软件呢&a…