ROS2

[ROS2] Tutorial Beginner : CLI tools - Understanding services

씨주 2024. 10. 8. 16:38

Understanding services

Background

service는 ROS graph내에서 node간 communication하는 방법 중 하나이다.

topic은 publisher-subscribe model, service는 call-and-response model이라는 차이가 있다.

topic은 data stream을 subscribe하면서 연속적으로 update가 가능하지만, service는 client가 call할 때만 data를 제공한다.

 

Tasks

setup

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

 

service list

ros2 service list

 

6개의 parameter service를 볼 수 있는데, 대부분의 노드는 parameter가 구축된 infrastructure service가 있다.

 

service type

# ros2 service type <service_name>
ros2 service type /clear

Empty는 service가 data를 보내고 있지 않다는 것을 의미한다.

 

topic과 마찬가지로 -t를 추가하면 type도 확인할 수 있다.

ros2 service list -t

 

service find

특정 type의 service를 찾을 수도 있다.

# ros2 service find <type_name>
ros2 service find std_srvs/srv/Empty

 

interface show

interface show를 통해 ---를 중심으로 위에는 request structure, 아래에는 response structure가 나타난다.

# ros2 interface show <type_name>
ros2 interface show std_srvs/srv/Empty

Empty는 앞서 알아본바와 같이 data를 주고받지 않기 때문에 struucture가 blank이다.

 

/spawn의 type인 /turtlesim/srv/Spawn를 본다면 2D turtle를 생성(spawn)하기 위해 x, y, theta(pose 결정)가 필요하고, name은 optional하다.

ros2 interface show turtlesim/srv/Spawn

 

service call

service type, structure 찾는 방법을 알았으니 service를 사용해보자.

# ros2 service call <service_name> <service_type> <arguments>
ros2 service call /clear std_srvs/srv/Empty

 

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

 

 

 

ROS2_Humble Documentation : https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools.html