배경

Service는 ROS그래프의 노드에 관한 앞서배운 topioc과 또 다른 통신 방법이다.

topic의 (publish, subscirbe) 모델과 달리

Service는 호출(Request) 및 응답(Respond)을 기반으로 한다.

토픽을 통해 노드는 데이터 스트림을 구독하고 지속적인 업데이트를 얻을 수있지만

서비스는 클라이언트가 특별히 호출한 경우에만 데이터를 제공함

Untitled

Untitled

Task

아래의 명령어 2개를 각각 터미널에서 실행

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

뒤에 새로운 터미널 창에서 아래 코드를 실행하여

실행중인 노드에서 어떤 서비스가 존재하는지 확인

ros2 service list

Untitled

보면 우리가 실행시킨 노드의 이름뒤에 매개변수가 적힌 6개의 서비스와 turtlesim의 전용 서비스인 clear, kill, reset, spawn 4개와 turtle1에 초점을 둔 3개 이런 서비스들이 목록에 나열되어있다.

해당 서비스들은 rqt 에서 확인할 수 있었다.


ros2 Service Type

service에는 서비스의 요청(request) 및 응답(respond) 데이터 구조를 설명하는 유형이 있다.

서비스 유형은 토픽의 유형과 유사하게 정의되지만, 서비스 유형에는 요청에대한 메세지와 응답에 대한 메세지 2부분이 있다.