세 가지 비교

이 일에는 토픽, 서비스, 액션 중 무엇이 맞을까?

생김새

흐르고, 묻고, 맡기고

토픽은 한쪽으로 계속 흘려보내고, 서비스는 한 번 묻고 한 번 답을 받습니다. 액션은 일을 맡긴 뒤 보고를 받다가 끝에 결과를 받습니다.

비교표

세 대화법을 나란히

액션은 서비스의 "묻고 답하기"에 토픽의 "계속 보내기"를 더한 것입니다(2편). 그만큼 주고받는 것이 많으니, 금방 끝나는 일에는 서비스가 더 알맞습니다.

고르는 순서

질문 두 개면 됩니다

센서 값처럼 계속 나오는 데이터는 토픽입니다. 값을 하나 묻거나 무언가를 한 번 시키고 금방 끝나면 서비스입니다. 몇 초 넘게 걸리고 진행 상황을 보거나 멈춰야 하면 액션입니다.

노드의 설정값은 대화법이 아니라 파라미터(8강)로 둡니다.

연습

이 일에는 무엇을 쓸까

모두 이 과정에서 만나는 이름입니다. /spawn은 7강, /scan은 14강, Nav2는 15강에서 다룹니다. 마지막 배경색은 대화법이 아니라 설정값이라 파라미터입니다.

흔한 실수

오래 걸리는 일을 서비스로

오래 걸리는 일을 서비스로 만들면 클라이언트는 답만 기다릴 뿐, 진행을 알 수 없고 멈출 수도 없습니다. 반대로 자주 바뀌는 값을 서비스로 계속 묻는 것도 흔한 실수입니다. 그런 값은 토픽으로 받습니다.

한 노드에

거북이 하나에 셋이 다 있습니다

노드 하나가 토픽, 서비스, 액션을 모두 가질 수 있습니다. 일마다 맞는 대화법을 고른 결과입니다. 4편의 ros2 node info /turtlesim에서도 이 이름들을 볼 수 있습니다.

다음 강

노드를 띄우다 보니 터미널이 너무 많아졌습니다

10강 1편터미널 다섯 개는 그만 9강 목록