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

这篇具有很好参考价值的文章主要介绍了【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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


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

0.参数服务器概念

相较于之前的通信模型,参数服务器是最为简单的。在之前的模型中,ROSMASTER都是扮演一个帮二者连接在一起的桥梁。
【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍
而在参数服务器中: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})

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

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

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

直接使用rosnode可以查看参数列表
【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

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

    rosnode ping /person_pub
    

    这里/pub_person为发送消息的节点,仅为一个演示
    【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

  2. rosnode list 列出活动节点

    rosnode list
    

    使用这个命令可以查看当前活动的节点
    【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

  3. rosnode info 打印节点信息

    ronode info /person_pub
    ronode info /person_sub
    

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

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

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

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

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

4.2 rostopic

先启动上方使用的两个节点
直接在终端中输入rostopic可以查看所有可以使用的指令
【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

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

    rostopic list
    

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

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

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

    rostopic echo topic
    

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

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

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

    rostopic info topic
    

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

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

    rostopic find lesson2/Person
    

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

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

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

    rostopic pub topic
    

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

4.3 rosmsg

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

  1. rosmsg list 列出所有消息类型
    【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

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

    rosmsg show msg
    

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


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

    rosmsg package pack
    

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

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

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

    rosmsg package pack
    

    列出包含turtlesim/Pose消息类型的所有包
    【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

4.4 rosservice

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

rosrun lesson3_srv demo01_client.py
rosrun lesson3_srv demo01_server.py

在终端输入rosservice也可以看到参数列表
【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

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

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

    rosservice call /sum2
    

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

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

    rosservice args /sum2
    

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

其余使用方法和上面相同

4.5 rossrv

与rosmsg差不多,也是查看srv的具体类型
【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

4.6 rosparam

我们先启动下turtle 方便验证
【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

rosrun turtlesim turtlesim_node
  1. rosparam list列出参数列表
    【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍

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

    rosparam set 参数类型
    

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

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

  4. rosparam delete删除参数

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

  6. rosparam dump从磁盘中加载参数文章来源地址https://www.toymoban.com/news/detail-443436.html

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

到了这里,关于【ROS】如何让ROS中节点获取数据 III --参数服务器通信及ros常用工具指令介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ROS-参数服务器(python)方向的基本实现流程及代码演示

    首先是创造工作空间等等这里就不再赘述,下文使用的工作空间叫 ilove02_01_ws;功能包名字叫做:ilovezero2。 参数服务器的一套简单流程就是围绕:增删改查;这四个字组成的。 其中由增改这两个字组成一个主体文件,后面就叫它为 set文件。实行查与删功能的文件后面我就分

    2024年01月21日
    浏览(33)
  • ajax 如何从服务器上获取数据?

    在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种常用的技术,用于在不重新加载整个页面的情况下,从服务器获取数据并更新网页的某一部分。使用AJAX,你可以创建异步请求,从而提供更快的响应和更好的用户体验。 要使用AJAX从服务器获取数据,你需要执行以下步骤:

    2024年02月21日
    浏览(29)
  • 【ROS】如何让ROS中节点实现数据交换Ⅰ--ROS话题通信

    Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法…感兴趣就关注我吧!你定不会失望。 roscore 启动ros核心节点 roscd 将工作空间切换到指定ros功能包 catkin_create_pkg 将工作空间切换到指定ros功能包 ** rqt_graph 启动节点间的关系图 rosrun 包名 节点名称 启动节点 ( rosrun

    2024年02月02日
    浏览(34)
  • 怎么在ros中怎么在一个节点总把一个矩阵保存为一个参数到参数管理器中,然后在另一个节点中读取这个参数

    在ROS中,可以通过Parameter Server在节点之间共享参数。要在一个节点中保存矩阵作为参数,可以使用set_param()函数: 这里我们把NumPy矩阵转换成列表后保存。在另一个节点中读取这个参数: get_param()会返回保存的参数,我们把它重新转换成NumPy矩阵。这样就可以通过Parameter Server在ROS节

    2024年02月14日
    浏览(31)
  • 边缘计算节点BEC典型实践:如何快速上手PC-Farm服务器?

    百度智能云边缘计算节点BEC(Baidu Edge Computing)基于运营商边缘节点和网络构建,一站式提供靠近终端用户的弹性计算资源。边缘计算节点在海外覆盖五大洲,在国内覆盖全国七大区、三大运营商。BEC通过就近计算和处理,大幅度优化响应时延、降低中心带宽成本。 通过创建

    2024年02月12日
    浏览(33)
  • JAVA如何获取服务器ip

    该方法返回的是默认的本地地址,可能是服务器上某个网络接口的IP地址,但不一定是我们期望获取的IP地址。 为了获取正确的IP地址,可以使用其他方法来获取服务器上所有的网络接口,并遍历每个网络接口来获取对应的IP地址。可以使用 NetworkInterface 类来实现此功能,如下

    2024年02月07日
    浏览(44)
  • 磐维数据库panweidb单节点服务器在centos7.9安装(研发环境)

    使用omm用户登录到openGauss包安装的主机,解压openGauss压缩包到安装目录(假定安装目录为/opt/panweidb/soft,请用实际值替换)。 假定解压包的路径为/opt/panweidb/soft,进入解压后目录下的simpleInstall。 执行install.sh脚本安装openGauss。 上述命令中,-w是指初始化数据库密码(gs_initdb指

    2024年02月06日
    浏览(34)
  • ZooKeeper技术细节_zookeeper and 服务器 and 客户端 and 数据节点

    方法入参EventType指定触发事件的类型:data变更还是childNodes变更等。 将KeeperState、EventType、Path new 到WatchedEvent实例中 根据Path路径从watchTable中找到所有对应的Watcher,为空continue,不为空时再iterator.remove掉,这样Watcher触发一次就失效了 从Map中找到的所有Watcher执行一遍其process方

    2024年04月22日
    浏览(35)
  • 如何查看服务器各项指标的配置-具体指令-服务器配置参数详解-大模型训练推荐配置单服务器和服务器之间显卡直通叠加扩容

    要查看服务器的各项组件配置,您可以执行以下步骤: 操作系统信息 : 使用命令 uname -a (Linux/Unix)或 systeminfo (Windows)来查看操作系统的版本和内核信息。 CPU 信息 : 在Linux/Unix系统上,运行 lscpu 命令来查看CPU的详细信息。 在Windows系统上,您可以使用 wmic cpu get caption 命

    2024年02月09日
    浏览(39)
  • nestjs:nginx反向代理服务器后如何获取请求的ip地址

    问题:         如题 参考:         nodejs+nginx获取真实ip-腾讯云开发者社区-腾讯云         「转」从限流谈到伪造 IP nginx remote_addr          解决办法: 1.设置nginx         对于代理部分,对http header添加Host、X-Real-IP、X-Forwarded-For(最重要)          2.nestjs使用

    2024年02月13日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包