【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

news2025/2/28 6:16:35

在这里插入图片描述

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法…感兴趣就关注我吧!你定不会失望。

参数服务器通信及ros常用工具指令介绍

  • 0.参数服务器概念
  • 1.参数服务器增加/修改参数:
  • 2.参数服务器查找参数
  • 3.参数服务器删除参数:
  • 4.常用指令
    • 4.1 rosnode
    • 4.2 rostopic
    • 4.3 rosmsg
    • 4.4 rosservice
    • 4.5 rossrv
    • 4.6 rosparam
  • 至此参数服务器通信及ros常用工具指令介绍结束

在这里插入图片描述

0.参数服务器概念

相较于之前的通信模型,参数服务器是最为简单的。在之前的模型中,ROSMASTER都是扮演一个帮二者连接在一起的桥梁。
在这里插入图片描述
而在参数服务器中:ROSMASTER变为了一个存储消息的容器,供使用者自行完成增删查改的操作.

其设计仅为存储非二进制的简单数据,若需要高性能操作,建议采用其他通信方式.

容器中可存储的参数类型:

  1. 32-bit integers
  2. booleans
  3. strings
  4. doubles
  5. iso8601 dates
  6. lists
  7. base64-encoded binary data
  8. 字典

1.参数服务器增加/修改参数:

  1. 初始化节点
  2. 使用set_param函数进行增加/修改

set_param有点类似hash:若参数服务器中无这个值,则增加,若有则修改为最新的值

import rospy

rospy.init_node("param")

#设置整形
rospy.set_param("p_int",10)

#设置浮点型
rospy.set_param("p_double",3.14)

#设置bool值
rospy.set_param("p_bool",True)

#设置string
rospy.set_param("p_string","hello python")

#设置List
rospy.set_param("p_list",["hello","haha","xixi"])

#设置字典
rospy.set_param("p_dict",{"name":"hulu","age":8})

在这里插入图片描述

2.参数服务器查找参数

常用的有以下几个函数:

  1. get_param(key,value)
    当键存在的时候返回对应值,若不存在则返回默认值
    get_param_cached(key,value)
    与上方用法相同,只不过这个效率更高,其会现在缓存里查找,类似于操作系统内存中快表的作用
    radius2=rospy.get_param_cached("radius_p",0.5)
    
    radius=rospy.get_param("radius_p",0.5)
    
  2. get_param_names()
    获取当前参数列表中所有的参数名并返回
    names=rospy.get_param_names()
    
    for name in names:
    
     print(name)
    
  3. has_param(key)
    判断参数列表中是否有某一个参数,
    返回Bool值
    flag1=rospy.has_param("radius_p")
    
     if flag1:
    
         print("存在")
    
     else :
    
         print("不存在")
    
  4. search_param(key)
    寻找是否有这个消息,若无则返回None,若有则返回这个key
    key=rospy.search_param("radius_p")
    
    print(key)
    

3.参数服务器删除参数:

  1. delete_param(key)
    删除指定的key

较为简单就不演示用法了,之后会有一个实战项目涉及

4.常用指令

会使用到之前配置使用的话题通信与服务通信.

使用这些命令可以在机器人运行时动态的查看各节点之间的关系及消息载体

  • rosnode:节点
  • rostopic:话题
  • rosservice:服务
  • rosmsg:msg消息
  • rossrv:srv消息
  • rosparam:操作参数服务器

4.1 rosnode

我们先启动下之前配置好的自定义msg的sub与pub节点,具体配置可以查看这篇文章话题通信案例

rosrun lesson2 demo02_pub.py
rosrun lesson2 demo02_sub.py

在这里插入图片描述

直接使用rosnode可以查看参数列表
在这里插入图片描述

  1. rosnode ping 测试到节点的连接状态

    rosnode ping /person_pub
    

    这里/pub_person为发送消息的节点,仅为一个演示
    在这里插入图片描述

  2. rosnode list 列出活动节点

    rosnode list
    

    使用这个命令可以查看当前活动的节点
    在这里插入图片描述

  3. rosnode info 打印节点信息

    ronode info /person_pub
    ronode info /person_sub
    

    这里打印出了发送与接受节点的信息,包含了以下内容

    1. 节点名称
    2. 使用话题
    3. 接受/发送方

    合理的使用可以更方便理清节点间的关系

在这里插入图片描述

  1. rosnode machine 列出指定设备上节点
  2. rosnode kill 杀死某个节点
    rosnode kill /sub_person
    
    kill了订阅节点
  3. rosnode cleanup 清除不可连接的节点
    有时ctrl+c之后会导致部分节点不可使用,但仍在list中,此时可以用这个指令刷新一下

4.2 rostopic

先启动上方使用的两个节点
直接在终端中输入rostopic可以查看所有可以使用的指令
在这里插入图片描述

  1. rostopic list 显示当前在使用的所有话题

    rostopic list
    

    在这里插入图片描述

    例如这里使用的话题是/che

  2. rostopic echo扮演接收方的工作,可以在屏幕上打印出话题信息

    rostopic echo topic
    

    在这里插入图片描述

    例如这里可以验证发布方的信息是否正确

  3. rostopic info/type两个用处相同,显示话题通信的消息类型,其中info包含了type类型

    rostopic info topic
    

    例如这里使用的是Person msg消息类型

  4. rostopic find 寻找使用某消息类型的话题

    rostopic find lesson2/Person
    

    在这里插入图片描述

    例如这里寻找使用lesson2/Person消息类型的话题是什么

  5. rostopic pub 向某一话题发布消息

    rostopic pub topic
    

    例如这里向订阅节点发布信息

4.3 rosmsg

rosmsg是用于显示有关 ROS消息类型的 信息的命令行工具
也与上方相同,可以直接输入rosmsg就会显示出可用指令

  1. rosmsg list 列出所有消息类型
    在这里插入图片描述

  2. rosmsg show / info列出当前消息类型中包含的具体类型

    rosmsg show msg
    

    在这里插入图片描述


  3. rosmsg package列出某个包下的所有消息

    rosmsg package pack
    

    在这里插入图片描述

    列出来turtlesim里的所有消息类型

  4. rosmsg packages列出包含某消息的功能包

    rosmsg package pack
    

    列出包含turtlesim/Pose消息类型的所有包
    在这里插入图片描述

4.4 rosservice

用来查询相关服务信息
我们先启动下之前配置好的自定义srv的server与client节点,具体配置可以查看这篇文章

rosrun lesson3_srv demo01_client.py
rosrun lesson3_srv demo01_server.py

在终端输入rosservice也可以看到参数列表
在这里插入图片描述

  1. rosservice list列出参数服务列表
    在这里插入图片描述

  2. rosservice call调用服务
    这里调用/sum2 tab补齐 传入两个参数

    rosservice call /sum2
    

    在这里插入图片描述

  3. rosservice args查看srv消息具体参数

    rosservice args /sum2
    

    在这里插入图片描述

其余使用方法和上面相同

4.5 rossrv

与rosmsg差不多,也是查看srv的具体类型
在这里插入图片描述

4.6 rosparam

我们先启动下turtle 方便验证
在这里插入图片描述

rosrun turtlesim turtlesim_node
  1. rosparam list列出参数列表
    在这里插入图片描述

  2. rosparam set设置具体参数数值

    rosparam set 参数类型
    

    请添加图片描述

  3. rosparam get获得具体参数数值

  4. rosparam delete删除参数

  5. rosparam load将参数加载到磁盘中

  6. rosparam dump从磁盘中加载参数

至此参数服务器通信及ros常用工具指令介绍结束

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

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

相关文章

大家都是拷贝,凭什么你这么秀?

入门教程、案例源码、学习资料、读者群 请访问: python666.cn 大家好,欢迎来到 Crossin的编程教室 ! 之前关于 Python 的作用域、赋值、参数传递,我们接连谈了几篇文章: Python常见问题:全局变量和局部变量…

Marking

Marking 题目描述 输入输出 #include<iostream> #include<algorithm> using namespace std; typedef long long ll; ll gcd(ll a,ll b) {return b0?a:gcd(b,a%b); } int main() {ll t;cin>>t;ll n,d,k;while(t--){cin>>n>>d>>k;k--;if(g…

数据结构学习分享之树的介绍

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:数据结构学习分享⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你了解更多数据结构的知识   &#x1f51d;&#x1f51d; 数据结构第六课 1. 前言&a…

5.13下周黄金最新行情走势分析及多空交易策略

近期有哪些消息面影响黄金走势&#xff1f;下周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周五(5月12日)美市尾盘&#xff0c;现货黄金收报2010.23美元/盎司&#xff0c;下跌4.57美元或0.23%&#xff0c;日内最高触及2022.59美元/盎司&#xff0c;最低触及…

IDEA 2022.3版本安装

安装前的准备 (免费使用方式私信我&#xff01;&#xff01;) • 64 位 Microsoft Windows 11、10、8 • 最低 2 GB 可用 RAM&#xff0c;推荐 8 GB 系统总 RAM • 2.5 GB 硬盘空间&#xff0c;推荐 SSD • 最低屏幕分辨率 1024x768 从安装上来看&#xff0c;IntelliJ IDEA 对硬…

asp.net+C#-高校社团管理网站

1、前台&#xff08;主要提供给学生使用&#xff09;&#xff1a;&#xff08;1&#xff09;注册&#xff0c;学生可以注册&#xff08;2&#xff09;登录&#xff0c;用户可以登录系统&#xff08;3&#xff09;查看社团活动&#xff0c;可以在页面查看社团的详细活动内容&…

Python基础入门编程代码练习(七)

一、读取json文件 创建一个json格式的文件,包含以下信息&#xff08;注意&#xff0c;地址是一个json对象&#xff0c;包含国家和城市&#xff09;&#xff0c;请使用Python中读取json文件的方法获取并打印json对象中的姓名、年龄以及城市信息 我叫小明,我今年 18 岁,性别男,…

如何批量查询自己的CSDN博客质量分

批量查询自己的CSDN博客质量分 一&#xff1a;故事背景二&#xff1a;具体实现2.1 csdn 接口分析2.2 apiPost调用接口2.2 RestTemplate进行接口调用2.2.1 需要引入的Maven依赖2.2.2 调用2.2.2 两个接口2.2.3 导出Excel到自己的电脑2.2.4 效果 三&#xff1a;总结提升 一&#x…

POWERLINK协议源码(最新)在stm32单片机上的移植指南

最近着了powerlink的道&#xff0c;连续几晚十二点前没睡过觉。不得不说兴趣这东西劲太大了&#xff0c;让人睡不着。喜欢上研究POWERLINK&#xff0c;最新版的源码结构挺清晰的&#xff0c;移植并测试了嵌入式linux作为从站和电脑主站之间的通信&#xff0c;挺有趣的。接下来想…

idea注释配置

走过路过不要错过&#xff01; 如果你也想要这样的注释模板&#xff0c;前接着往下看&#xff01; 注释模板有两种方式 1、新建类的时候自动添加注释 按照上图中的提示&#xff0c;找到settings中的File Code Templates选择右边Files选项卡中&#xff0c;选择class在右侧输入…

python中最全面的统计分布工具

文章目录 正态分布属性和方法测试 正态分布 scipy为诸多统计分布函数设计了类&#xff0c;这些类封装了几乎相同的方法&#xff0c;下面先以正态分布为示例&#xff0c;预览一下强大的统计功能。 import numpy as np from scipy.stats import norm import matplotlib.pyplot …

K_A38_001 基于STM32等单片机驱动DS1302时钟模块 OLED0.96显示

K_A38_001 基于STM32等单片机驱动DS1302时钟模块 OLED0.96显示 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明时序对应程序: 四、部分代码说明1、接线引脚定义1.1、STC89C52RCDS1302时钟模块1.2、STM32F103C8T6DS1302时钟模块 五、基础知识学习与相关资料下载…

Python入门(六)if语句(一)

if语句&#xff08;一&#xff09; 1.概述2.一个简单的实例3. 条件测试3.1 检查是否相等3.2 数值比较3.3 检查多个条件3.4 布尔表达式 作者&#xff1a;xiou 1.概述 编程时经常需要检查一系列条件&#xff0c;并据此决定采取什么措施。在Python中&#xff0c;if语句让你能够检…

三分钟阿里云服务器u1通用算力型性能、使用限制及费用说明

阿里云服务器u1是通用算力型云服务器&#xff0c;CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器&#xff0c;通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xff0c…

ChatGPT 快速阅读论文:3 个步骤让你轻松阅读论文文档

ChatGPT 快速阅读论文:3 个步骤让你轻松阅读论文文档 一、引言二、什么是 ChatDOC三、如何使用 ChatDOC3.1 主要功能3.2 表格/文本分析3.3 人工智能对话最后附使用地址:本教程收集于:AIGC从入门到精通教程 一、引言 你是否曾经因为阅读论文而感到困难和无从下手?ChatDOC 是…

分布式 05.redis在springboot中的使用和两个注解@Configuration和@Bean

01.在服务器中配置好redis服务器后&#xff0c;在sts中使用redis插件。 02.先是导入jar包&#xff1a; <!--spring整合redis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> &l…

MySQL--复合查询--内外链接--0422

注&#xff1a;为了方便查看 mysql语句会有突然的换行&#xff0c;书写时请勿模仿。 目录 1.单表查询回顾 显示工资最高的员工的名字和工作岗位 显示工资高于平均工资的员工信息 2.多表查询 比如需要查询雇员名字和所在部门编号及部门名字。 显示部门号为10的部门名&…

win10+使用cmake编译最新的ceres-solver库

参考文献 点击这里访问 感谢大佬&#xff01; 说明 我这个只编译了release版本&#xff0c;如果还需要debug版本&#xff0c;cmake编译和vs编译都需要另外设置一些东西&#xff0c;我没有弄。 文章目录 参考文献说明1. 需要使用的库2. 需要的工具3. 准备工作3.1 建一个文件…

Neovim-配置教程

环境&#xff1a;Ubuntu 20.04 宿主机&#xff1a;windows &#xff08;windows terminal&#xff09;WSL2 NVIM&#xff1a;v0.10.0-dev 配置Neovim 需要保证流畅的github环境&#xff08;以便于快速拉取插件&#xff09;&#xff0c;可以使用代理或是配置Github SSH key 本文…

【OpenCV-Python】——Haar人脸检测深度学习人脸检测EigenFaces/FisherFaces/LBPH人脸识别

目录 前言&#xff1a; 1、人脸检测 1.1 基于Haar的人脸检测 1.2 基于深度学习的人脸检测 2、人脸识别 2.1 EigenFaces人脸识别 2.2 FisherFaces人脸识别 2.3 LBPH人脸识别 总结&#xff1a; 前言&#xff1a; 人脸检测是人脸定位的过程&#xff1b;人脸识别是在人脸…