【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常用工具指令介绍结束

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
10天前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
29 3
|
26天前
|
存储 数据挖掘
服务器数据恢复—用RAID5阵列中部分盘重建RAID5如何恢复原raid5阵列数据?
服务器数据恢复环境: 一台服务器挂接一台存储,该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障: 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性,阵列并没有出现问题。工作一段时间后,服务器出现故障,用户方请人维修。维修人员在没有了解故障磁盘阵列环境的情况下,用另外4块硬盘(除去掉线的硬盘)重新创建了一组全新的RAID5阵列并完成数据同步,导致原raid5阵列数据全部丢失。
|
1月前
|
弹性计算 开发框架 .NET
阿里云服务器购买教程及云服务器地域、实例、操作系统、带宽等参数选择指南
对于初次购买阿里云服务器的用户来说,想使用阿里云服务器搭建网站或者运行APP、小程序等项目,第一步就是要先购买阿里云服务器,下面小编以图文形式给大家介绍一下阿里云服务器的购买流程,以及购买过程中如何云服务器地域、实例、带宽等关键配置和选择这些参数的一些注意事项,以供参考。
|
1月前
|
Python
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
31 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
|
18天前
|
存储 弹性计算 固态存储
阿里云服务器ESSD Entry系统盘测评IOPS、IO读写和时延性能参数
ESSD Entry云盘是阿里云推出的新一代云盘,具备高IOPS、低延迟和企业级数据保护能力。适用于开发与测试场景,支持按量付费和包年包月计费模式。99元和199元的ECS经济型e实例和通用算力型u1实例均采用ESSD Entry系统盘,性价比高。详细性能参数和价格请参考阿里云官方页面。
54 0
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
70 4
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
57 3
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
53 3
|
1月前
|
SQL 存储 数据管理
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
58 2
|
1月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
47 1

推荐镜像

更多
下一篇
无影云桌面