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

简介: 相较于之前的通信模型,参数服务器是最为简单的。在之前的模型中,ROSMASTER都是扮演一个帮二者连接在一起的桥梁。

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


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


3c9de86f742b45f2b76d3817661785bf.jpg


0.参数服务器概念


相较于之前的通信模型,参数服务器是最为简单的。在之前的模型中,ROSMASTER都是扮演一个帮二者连接在一起的桥梁。


f91f9d6cb6af4bc9897bd2d00e93c838.png


而在参数服务器中: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})


ae60e03294a942e58353c31b739ed6be.png


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


fa90027bc6ad4f1d912d505a0f0d3eaa.png


直接使用rosnode可以查看参数列表

fb9aea655bdd46e98d21db4c8e8477a2.png


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


rosnode ping /person_pub


这里/pub_person为发送消息的节点,仅为一个演示


36b6de5e262f4f5ca5cf925d5def0e4a.png


2.rosnode list 列出活动节点


rosnode list


使用这个命令可以查看当前活动的节点


778e9d0cdcf045068099942787562a83.png


3.rosnode info 打印节点信息


ronode info /person_pub
ronode info /person_sub


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

1.节点名称

2.使用话题

3.接受/发送方


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

84ff4cffdd2542afa75d9ade04e54eb6.png


4.rosnode machine 列出指定设备上节点

5.rosnode kill 杀死某个节点


rosnode kill /sub_person


kill了订阅节点


6.rosnode cleanup 清除不可连接的节点

有时ctrl+c之后会导致部分节点不可使用,但仍在list中,此时可以用这个指令刷新一下


4.2 rostopic


先启动上方使用的两个节点

直接在终端中输入rostopic可以查看所有可以使用的指令


5dfcb519c4154b6f93ee2362e307a04f.png


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


rostopic list

87a21e1e90e14b879ab0e4a13620460e.png


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


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


rostopic echo topic

41573cace9c743b69fa0e8c966ff1921.png


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


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


rostopic info topic


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


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


rostopic find lesson2/Person


2e975492a6c54620b7d514745438777e.png


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


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


rostopic pub topic


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


4.3 rosmsg


rosmsg是用于显示有关 ROS消息类型的 信息的命令行工具

也与上方相同,可以直接输入rosmsg就会显示出可用指令


1.rosmsg list 列出所有消息类型


cb59f1e43023493a9b696d4ff9bb47a0.png


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


rosmsg show msg

d734d020bf8147a9b2865915bc747485.png


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


rosmsg package pack

14aca58f3e19445a8537df362ee391af.png


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


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


rosmsg package pack


列出包含turtlesim/Pose消息类型的所有包


f4c3076ccc824492bc23fe5ab7cd12bb.png


4.4 rosservice


用来查询相关服务信息

我们先启动下之前配置好的自定义srv的server与client节点,具体配置可以查看这篇文章

rosrun lesson3_srv demo01_client.py
rosrun lesson3_srv demo01_server.py


在终端输入rosservice也可以看到参数列表


19857321b02441cb9e32d94ec886ac6f.png


1.rosservice list列出参数服务列表


076ec50d43644c4d940acdb80ac0ed25.png


2.rosservice call调用服务

这里调用/sum2 tab补齐 传入两个参数

rosservice call /sum2

d7fe7aaf45f448e687169451b5c8abea.png


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


rosservice args /sum2

40615bb441fd42b3ae817bff90f9b003.png


其余使用方法和上面相同


4.5 rossrv


与rosmsg差不多,也是查看srv的具体类型


3c02b0dbdc3146edbab4cb6b7d5ce76c.png


4.6 rosparam


我们先启动下turtle 方便验证


d06aa518cd4142488f2f86e264771c1f.png


rosrun turtlesim turtlesim_node


1.rosparam list列出参数列表


497df1f5cc744d849e33cf0871e08fb8.png


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


rosparam set 参数类型


a2f6f0de6caa4a4c827b0dce34dc52fe.png


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


4.rosparam delete删除参数


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


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


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

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
2天前
|
安全 Linux 文件存储
如何在本地服务器部署TeslaMate并远程查看特斯拉汽车数据无需公网ip
如何在本地服务器部署TeslaMate并远程查看特斯拉汽车数据无需公网ip
|
2天前
|
数据采集 中间件 Python
Scrapy爬虫:利用代理服务器爬取热门网站数据
Scrapy爬虫:利用代理服务器爬取热门网站数据
|
2天前
|
JSON Android开发 数据格式
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
19 2
|
2天前
|
Linux Shell 文件存储
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
48 1
|
1天前
|
存储 JSON JavaScript
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
13 0
|
2天前
|
NoSQL Redis 数据库
Redis中的常用命令非常丰富,涵盖了各种数据类型的基本操作以及服务器管理和维护的相关指令
【5月更文挑战第15天】Redis常用命令包括通用(如PING、SELECT)、键操作(KEYS、EXISTS、DEL)、字符串(SET、GET)、哈希(HSET、HGET)、列表(LPUSH、LPOP)、集合(SADD、SMEMBERS)和有序集合(ZADD、ZRANGE)等。这些命令用于数据操作及服务器管理,满足不同场景需求。了解更多命令,建议参考Redis官方文档。
10 2
|
2天前
|
存储 算法 数据挖掘
服务器数据恢复—拯救raid5阵列数据大行动,raid5数据恢复案例分享
**Raid5数据恢复算法原理:** 分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值相同则结果为0,若二者结果不同则结果为1。 例如0101 xor 0010根据上述运算规则来计算的话二者第一位都是0,两者相同,结果为0 ;第二、三、四位的数值不同则结果均为1,所以最终结果为0111。公式表示为:0101 xor 0010 = 0111,所以在 a xor b=c 中如果缺少其中之一,我们可以通过其他数据进行推算,这就是raid5数据恢复的基本原理。 了解了这个基本原理
|
2天前
LabVIEW使用VI服务器的调用节点将数据传递到另一个VI 使用调用节点(Invoke Node)与通过引用调用节点(Call by Reference)调用VI时有什么差别?
LabVIEW使用VI服务器的调用节点将数据传递到另一个VI 使用调用节点(Invoke Node)与通过引用调用节点(Call by Reference)调用VI时有什么差别?
|
2天前
|
监控 安全 持续交付
【专栏】Webhook是服务器主动发送事件通知的机制,打破传统客户端轮询模式,实现数据实时高效传递。
【4月更文挑战第29天】Webhook是服务器主动发送事件通知的机制,打破传统客户端轮询模式,实现数据实时高效传递。常用于持续集成部署、第三方服务集成、实时数据同步和监控告警。具有实时性、高效性和灵活性优势,但也面临安全风险和调试挑战。理解并善用Webhook能提升系统性能,广泛应用于现代软件开发和集成。
|
2天前
|
运维 Oracle 关系型数据库
Oracle服务器参数文件:数据王国的“调控大师”
【4月更文挑战第19天】Oracle服务器参数文件,数据库的“调控大师”,掌控着内存管理、进程调度等关键设置。通过参数调整如SGA_MAX_SIZE和PROCESSES,实现性能优化和故障防控。虽然挑战重重,但成功的性能调优带来无尽成就感。它在备份恢复中也扮演重要角色,保障数据一致性与可用性。成为真正的“调控大师”,为数据王国效力!

热门文章

最新文章

推荐镜像

更多