美文网首页程序员
了解ROS Services和Parameters

了解ROS Services和Parameters

作者: 网路元素 | 来源:发表于2019-10-04 10:53 被阅读0次

    1.使用rosservice命令通过service轻松attach到ROS的客户端服务器框架中,Services是另一种node之间通信的方法,允许node发请求和接收响应。执行rosservice命令,可以看到如下信息:

      Commands:
        rosservice args   printservice arguments
        rosservice call   call theservice with the provided args
        rosservice find   findservices by service type
        rosservice info   printinformation about service
        rosservice list   listactive services
        rosservice type   printservice type
        rosservice uri print serviceROSRPC uri

      Type rosservice -h for moredetailed usage, e.g. 'rosservice call -h'

    2.执行rosservice list命令可以查看到对应结点提供的服务情况,如果没有运行turtulesim_node的话,会返回如下信息:

      /rosout/get_loggers
      /rosout/set_logger_level

      如果运行了则返回如下信息:

      /clear
      /kill
      /reset
      /rosout/get_loggers
      /rosout/set_logger_level
      /spawn
      /turtle1/set_pen
      /turtle1/teleport_absolute
      /turtle1/teleport_relative
      /turtlesim/get_loggers
      /turtlesim/set_logger_level

    3.查看服务的类型

      rosservice type /clear

      执行后返回:

      std_srvs/Empty

      服务是empty,意味着调用该服务时不需要参数。

    4.调用服务

      rosservice call /clear

      调用该命令后,上面用键盘方向键让乌龟行走的路线全被清掉了。

    5.接下来看一个有参数的服务

      rosservice type /spawn | rossrv show

      执行后可看到如下内容:

      float32 x
      float32 y
      float32 theta
      string name
      ---
      string name

      接下来创建一只新的乌龟,名字由系统自动分配:

      rosservice call /spawn 2 2 0.2 ""

      执行后出现如下提示:

      name: turtle2

      相应之前的界面如下:

    turtle2

    6.使用rosparam

      rosparam命令能让我们在ROS的Parameter Server里面存储和获取数据,使用YAML标记语言描述,1是一个integer,1.0是一个float,one是一个string,true是一个boolean,{1, 2, 3}是一个整型list,{a: b, c: d}是一个dictionary。

      执行rosparam命令有如下输出:

      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  loadparameters from file
        rosparam dump  dumpparameters to file
        rosparam delete   deleteparameter
        rosparam list  listparameter names

      执行rosparam list命令可以看到turtle node有如下参数:

        /background_b
        /background_g
        /background_r
        /rosdistro
        /roslaunch/uris/host_slam__43813
        /rosversion
        /run_id

      可以看到有设置background的RGB三种颜色的参数。

      接下来执行rosparam set /background_r 150rosservice call /clear两命令,可以看到界面的背景色变了,如下截图:

    rosparam set /background_r 150

      接下来执行rosparam get /background_g命令,返回86。

      执行rosparam get /命令可以获取到node所有参数的值:

      background_b: 255
      background_g: 86
      background_r: 150
      rosdistro: 'kinetic

        '
      roslaunch:
        uris: {host_slam__43813:'http://slam:43813/'}
      rosversion: '1.12.7

        '
      run_id: a513748c-53c8-11e7-93b5-485d60ebebe9

    7.rosparam dump和rosparam load

      Usage: rosparam dump [options] file[namespace]

      Options:
        -h, --help show this help message and exit
        -v         turn on verbose output

      Usage: rosparam load [options] file[namespace]

      Options:
        -h, --help show this help message and exit
        -v         turn on verbose output

      有如下例子:

      rosparam dump params.yaml

      该命令执行后,会在当前目录下生成params.yaml文件,内容与上面执行rosparam get /命令相同。

      rosparam load params.yaml copy

      执行该命令,可该参数文件加载到copy这个名空间,此时使用如下命令:

      rosparam get /copy/background_b

      该命令会返回255。

    参考网址:http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams

    相关文章

      网友评论

        本文标题:了解ROS Services和Parameters

        本文链接:https://www.haomeiwen.com/subject/ynxfpctx.html