service简介
service是 ROS 图中节点的另一种通信方式。服务基于调用和响应模型,而不是topic的发布者-订阅者模型。虽然topic允许节点订阅数据流并获得持续更新,但service仅在客户端专门调用它们时才提供数据。
service任务
1. 打开2个节点
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
2. service列表
在新终端中运行该命令将返回系统中当前处于活动状态的所有服务的列表:
ros2 service list
3. service的类型
服务具有描述服务的请求和响应数据的结构的类型。服务类型的定义类似于主题类型,除了服务类型有两部分:一个消息用于请求,另一个用于响应。
要找出服务的类型,请使用以下命令:
ros2 service type <service_name>
4.带类型的service列表
ros2 service list -t
5. 查看特定类型的服务
ros2 service find 类型名
6. 查看服务类型的数据结构
ros2 interface show <type_name>.srv
7. 调用service
ros2 service call <service_name> <service_type> <arguments>
该
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"
8.查看ros已经定义好的数据类型
ros2 interface list