ROS服务
服务是节点之间可以相互通信的另一种方式。服务允许节点发送请求并接收响应。
rosservice可以通过服务轻松附加到ROS的客户端/服务框架。 rosservice有许多可用于服务的命令,如下所示:
rosservice list 打印信息活动服务
rosservice call 使用所提供的参数调用服务
rosservice type 显示服务的类型
rosservice find 通过服务类型查找服务
rosservice uri 显示服务的ROSRPC uri
-
rosservice list
rosservice list 输出: /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
list命令向我们显示,turtlesim节点提供了九种服务:重置,清除,生成,杀死,turtle1 / set_pen,/ turtle1 / teleport_absolute,/ turtle1 / teleport_relative,turtlesim / get_loggers和turtlesim / set_logger_level。还有两个与单独的rosout节点相关的服务:/ rosout / get_loggers和/ rosout / set_logger_level。
-
rosservice type
- 试着查看一下/clear服务
rosservice type /clear 输出: std_srvs/Empty
该服务为空,这意味着在进行服务调用时,它不接受任何参数(即,在发出请求时不发送数据,而在接收响应时不接收数据)。让我们使用rosservice调用此服务:
- 试着查看一下/clear服务
-
rosservice call
-
试着调用一下/clear服务(在开始命令之前,可以先让小乌龟跑一下,效果会比较明显)
rosservice call /clear
它清除了turtlesim_node的背景
-
试着调用一下/spawn服务
首先查看/spawn服务的数据类型
rosservice type /spawn | rossrv show 输出: float32 x float32 y float32 theta string name --- string name
-
该服务使我们可以在给定的位置和方向上生成新的海龟。名称字段是可选的,所以我们不要给新乌龟起一个名字,而让turtlesim为我们创建一个。
rosservice call /spawn 2 2 0.2 ""
-
ROS参数
rosparam允许您在ROS参数服务器上存储和处理数据。参数服务器可以存储整数,浮点数,布尔值,字典和列表。 rosparam使用YAML语法。在简单的情况下,YAML看起来很自然:1是整数,1.0是浮点数,一个是字符串,true是布尔值,[1、2、3]是整数列表,并且{a:b,c: d}是字典。 rosparam有许多可用于参数的命令,如下所示:
rosparam set 设定参数
rosparam get 获取参数
rosparam load 从文件加载参数
rosparam dump 将参数转储到文件
rosparam delete 删除参数
rosparam list 列出参数名称
-
rosparam list
- 查看当前具有的参数
rosparam list 输出: /background_b /background_g /background_r /rosdistro /roslaunch/uris/host_57aea0986fef__34309 /rosversion /run_id
-
rosparam set 和 rosparam get
-
改变/turtlesim_node的背景颜色
rosparam set /background_r 150 改变背景的红色通道 rosservice call /clear 刷新背景颜色
-
- 现在,让我们看一下参数服务器上其他参数的值。让我们获取刚刚修改的红色背景通道的值:
rosparam get /turtlesim/background_r
输出:
150
- 我们还可以使用rosparam get /向我们展示整个Parameter Server的内容。
rosparam get /
输出:
background_b: 255
background_g: 86
background_r: 150
roslaunch:
uris: {'aqy:51932': 'http://aqy:51932/'}
run_id: e07ea71e-98df-11de-8875-001b21201aa8
3.rosparam dump 和 rosparam load
- 在这里,我们将所有参数写入文件params.yaml
rosparam dump params.yaml
- 您甚至可以将这些yaml文件加载到新的名称空间中,例如hello:
rosparam load params.yaml hello
rosparam get /hello/background_b
输出:
255