ROS2入门教程-services简介
ROS2入门教程-services简介
说明:
- 介绍ros2 services(服务)
概念:
- services(服务)是ROS图上节点通信的另一种方法。
- 服务基于呼叫响应模型,而不是主题的发布者-订阅者模型。
- 尽管主题允许节点订阅数据流并获得连续更新,但是服务仅在客户端专门调用它们时才提供数据。
- 服务端和客户端之间,是一对一或一对多关系
ros2 service list命令:
- 列出所有的服务
$ ros2 service list
/clear
/kill
/reset
/spawn
/teleop_turtle/describe_parameters
/teleop_turtle/get_parameter_types
/teleop_turtle/get_parameters
/teleop_turtle/list_parameters
/teleop_turtle/set_parameters
/teleop_turtle/set_parameters_atomically
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/describe_parameters
/turtlesim/get_parameter_types
/turtlesim/get_parameters
/turtlesim/list_parameters
/turtlesim/set_parameters
/turtlesim/set_parameters_atomically
- 显示服务及消息类型:
$ ros2 service list -t
/clear [std_srvs/srv/Empty]
/kill [turtlesim/srv/Kill]
/reset [std_srvs/srv/Empty]
/spawn [turtlesim/srv/Spawn]
/teleop_turtle/describe_parameters [rcl_interfaces/srv/DescribeParameters]
/teleop_turtle/get_parameter_types [rcl_interfaces/srv/GetParameterTypes]
/teleop_turtle/get_parameters [rcl_interfaces/srv/GetParameters]
/teleop_turtle/list_parameters [rcl_interfaces/srv/ListParameters]
/teleop_turtle/set_parameters [rcl_interfaces/srv/SetParameters]
/teleop_turtle/set_parameters_atomically [rcl_interfaces/srv/SetParametersAtomically]
/turtle1/set_pen [turtlesim/srv/SetPen]
/turtle1/teleport_absolute [turtlesim/srv/TeleportAbsolute]
/turtle1/teleport_relative [turtlesim/srv/TeleportRelative]
/turtlesim/describe_parameters [rcl_interfaces/srv/DescribeParameters]
/turtlesim/get_parameter_types [rcl_interfaces/srv/GetParameterTypes]
/turtlesim/get_parameters [rcl_interfaces/srv/GetParameters]
/turtlesim/list_parameters [rcl_interfaces/srv/ListParameters]
/turtlesim/set_parameters [rcl_interfaces/srv/SetParameters]
/turtlesim/set_parameters_atomically [rcl_interfaces/srv/SetParametersAtomically]
ros2 service type 命令:
- 服务接收的消息类型
- 格式:
ros2 service type <service_name>
- 例子:
$ ros2 service type /clear
std_srvs/srv/Empty
ros2 service find命令:
- 找到使用某类消息类型的服务
- 格式:ros2 service find <type_name>
- 例子:
$ ros2 service find std_srvs/srv/Empty
/clear
/reset
ros2 interface show命令:
- 显示服务的消息类型具体定义
- 格式:ros2 interface show <type_name>.srv
- 例子:
$ ros2 interface show std_srvs/srv/Empty.srv
---
- 例子2:
$ ros2 interface show turtlesim/srv/Spawn.srv
float32 x
float32 y
float32 theta
string name # Optional. A unique name will be created and returned if this is empty
---
string name
ros2 service call命令:
- 调用服务命令
- 格式:ros2 service call <service_name> <service_type>
- 例子:
ros2 service call /clear std_srvs/srv/Empty
- 效果:
- 清除行走轨迹
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号