[ros2学习]-CLI Tools – 了解ROS 2服务(service)

105
0
2021年2月9日 09时37分

文章目录

 

    • ① 背景
    • ② 前提
    • ③ 任务
      • Ⅰ准备
      • Ⅱ ros2 service 命令
        • ros2 service list
        • ros2 srv show (eloquent版本是 ros2 service type)
          • eloquent 版本
        • ros2 service find (dashing 不支持 )
        • ros2 interface show (dashing 不支持)
        • ros2 service call
    • ④ 总结

 

① 背景

 

service 也是通讯的一种方式,req/respone 的方式,是触发式的,topic 是订阅式的

 

② 前提

 

  • 装ros2
  • 配置环境
  • 装小乌龟

 

③ 任务

 

Ⅰ准备

 

启动小乌龟
命令:

 

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

 

Ⅱ ros2 service 命令

 

ros2 service list

 

列出服务
命令提示

 

usage: ros2 service list [-h] [--spin-time SPIN_TIME] [-t] [-c]

Output a list of available services

optional arguments:
  -h, --help            show this help message and exit
  --spin-time SPIN_TIME
                        Spin time in seconds to wait for discovery (only
                        applies when not using an already running daemon)
  -t, --show-types      Additionally show the service type
  -c, --count-services  Only display the number of services discovered

 

可以通过命令和rqt去看

 

在这里插入图片描述

 

ros2 srv show (eloquent版本是 ros2 service type)

 

就是看看srv的消息的几种方法,

 

  • 执行命令行 ros2 srv show turtlesim/srv/SetPen
  • rqt 查看
  • 文件查看

 

在这里插入图片描述

 

eloquent 版本

 

在这里插入图片描述

 

ros2 service find (dashing 不支持 )

 

根据类型找服务,使用eloquent版本

 

ros2 service find <type_name>

 

例如

 

ros2 service find std_srvs/srv/Empty

 

在这里插入图片描述

 

ros2 interface show (dashing 不支持)

 

查看service的消息信息,用的eloquent版本
命令:ros2 interface show <type_name>.srv
例子:ros2 interface show turtlesim/srv/Spawn.srv

 


在这里插入图片描述

 

ros2 service call

调用服务,命令行模式

 

ros2 service call <service_name> <service_type> <arguments>

 

我们调用/clear 和 /spawn

 

ros2 service call /clear std_srvs/srv/Empty
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: 'bigggg'}"

 

在这里插入图片描述

 

④ 总结

 

如果是不是连续的通讯,可以使用service 和action更好一点

发表评论

后才能评论