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

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

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

rosservice type

rosservice type /clear
std_srvs/Empty

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

rosservice call

rosservice call [service] [args]
# 示例
rosservice call /clear

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

rosservice type /spawn | rossrv show
float32 x
float32 y
float32 theta
string name
---
string name

/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

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

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

rosparam set

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

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

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}

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

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值