ros2学习之教程-入门: CLI Tools(命令行工具)了解ROS 2服务 (service)

① 背景

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 (下个版本是 ros2 service type)

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

  • 执行命令行 ros2 srv show turtlesim/srv/SetPen
  • rqt 查看
  • 文件查看
    在这里插入图片描述

ros2 service find (dashing 不支持 )

根据类型找服务

ros2 service find <type_name>

例如

ros2 service find std_srvs/srv/Empty

返回

/clear
/reset

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'}"

在这里插入图片描述

④ 总结

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

发布了90 篇原创文章 · 获赞 505 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_36628778/article/details/105277515