• 9_ROS-Service和ROS-Parameter 相关命令行工具


    这部分教程使用rosservice和rosparm命令行工具介绍ROS service和parameters.至于为什么选择deepin而不是ROS通用的ubuntu,也仅仅是为了支持国产系统。鉴于本人水平有限,如哪位攻城狮网友发现本文存在的问题,烦请留言指正,谢谢!

    ROS Service

    service是节点间通信的另外一种方式,service允许节点间发送请求接收回应的形式来进行通信

    使用rosservice

    rosservice可以容易地通过ROS服务与ROS的客户端/服务器建立联系。rosservice有很多可以在服务端使用的命令:

    gaoy@msi:~$ rosservice -h
    Commands:
            rosservice args 打印服务参数
            rosservice call 使用给定参数调用服务
            rosservice find 依据服务类型查找服务
            rosservice info 打印服务相关信息
            rosservice list 列出激活的服务列表
            rosservice type 打印服务的类型
            rosservice uri  打印服务的ROSRPC uriprint
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    rosservice list

    rosservice list
    /clear
    /kill
    /reset
    /rosout/get_loggers
    /rosout/set_logger_level
    /spawn
    /teleop_turtle/get_loggers
    /teleop_turtle/set_logger_level
    /turtle1/set_pen
    /turtle1/teleport_absolute
    /turtle1/teleport_relative
    /turtlesim/get_loggers
    /turtlesim/set_logger_level
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    rosservice list给我展示了turtlesim有关的11个节点提供的服务,另外展示了与单独节点roout有关的rosout/get_loggers和roout/ser_logger_level的服务。下面我们仔细看看clear服务

    rosservice type

    rosservice type /clear
    std_srvs/Empty
    
    • 1
    • 2

    clear服务是空的,这意味着当服务调用的时候不带任何参数。

    rosservice call

    rosservice call [service] [args]
    # 示例
    rosservice call /clear
    
    • 1
    • 2
    • 3

    /clear服务会清理小乌龟行进的路线。下面我们通过查看/spawn服务

    rosservice type /spawn | rossrv show
    float32 x
    float32 y
    float32 theta
    string name
    ---
    string name
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    /spawn服务允许我们在给定的位置和方向上创建一个新海龟,name字段可选。所以我们不要给新海龟命令,而是让turtlesim为我们创建一个默认名称

    rosservice call /spawn 2 2 0.3 ''
    name: "turtle2" # turtlesim为我们的新海龟给了默认名:turtle2
    rosservice call /spawn 2 3 0.3 ''
    name: "turtle3"# turtlesim为我们的新海龟给了默认名:turtle3
    
    • 1
    • 2
    • 3
    • 4

    ROS Parameters

    rosparam允许你在ROS参数服务器上存储和操作数据。参数服务器[parameter server]可以存储整数,浮点数,布尔值,字典和列表。rosparam在语法上使用YAML标记语言。在简单情况下,YAML看起来比较自然:1-整数,1.0-浮点数,one-字符串,true-bool,[1,2,3]-列表,{a:b,c:d}-字典
    。rosparam也有许多用于参数的命令:

    rosparam -h
    rosparam is a command-line tool for getting, setting, and deleting parameters from the ROS Parameter Server.
    
    Commands:
            rosparam set    set parameter
            rosparam get    get parameter
            rosparam load   load parameters from file
            rosparam dump   dump parameters to file
            rosparam delete delete parameter
            rosparam list   list parameter names
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    rosparam list

    rosparam list结果可以看到turtlesim节点有三个参数服务

    rosparam list
    /rosdistro
    /roslaunch/uris/host_msi__44847
    /rosversion
    /run_id
    /turtlesim/background_b
    /turtlesim/background_g
    /turtlesim/background_r
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    rosparam set

    从上面的示例可以知道turtlesim有3个参数服务,这部分我们可以使用rosparam set来修改其中一个参数服务

    rosparam set /turtlesim/background_r 150
    # clear后新参数才生效
    rosservice call /clear
    
    • 1
    • 2
    • 3

    rosparam get

    经过上面的测试我们修改了/turtlesim/background_r 的值为150,这节我们通过命令获取其值

    rosparam get /turtlesim/background_r
    150
    # 我们可以使用rosparam get /获取所有参数服务器的内容
    rosparam get /
    rosdistro: 'noetic
    
      '
    roslaunch:
      uris: {host_msi__44847: 'http://msi:44847/'}
    rosversion: '1.15.14
    
      '
    run_id: 5d9878f0-2c1c-11ed-9bbc-f8b54d546b81
    turtlesim: {background_b: 255, background_g: 86, background_r: 150}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    或许你希望将上述参数服务存储在文件中,以便后续重新加载。这是比较容易的

    rosparam dump and rosparam load

    rosparam dump [filename] [namespace]
    rosparam load [filename] [namespace]
    
    # 存储所有的参数到params.xml
    rosparam dump params.yaml
    #  你可以将这些yaml文件加载到薪的命名空间去 copy_turtle
    $ rosparam load params.yaml copy_turtle
    $ rosparam get /copy_turtle/turtlesim/background_b
    255
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    Unittest-生成HTML测试报告
    在小程序中使用vant,应用Mobx实现全局数据共享
    社区分享|中南民族大学基于JumpServer构建规范、便利的运维安全体系
    【数据库】01——精通数据库需要掌握这九个维度
    ros建图过程中给上位机发布地图信息
    linux驱动之内核定时器
    ES6生成器(Generator)和迭代器(Iterator)
    “2024成都国际电子信息产业展览会”新西部、新重构、新机遇
    Service Mesh基础概念
    网络爬虫是什么?怎么学python爬虫
  • 原文地址:https://blog.csdn.net/no_pao_spite/article/details/126924965