msg·srv·action
토픽 말고 다른 대화법에도 정해진 모양이 있을까?
세 종류
인터페이스는 세 가지 파일로 적습니다
토픽은 .msg, 서비스는 .srv, 액션은 .action 파일로 주고받을 모양을 적습니다. 이 셋을 통틀어 인터페이스(interface)라고 하고, ros2 interface 명령은 셋 모두를 다룹니다.
.srv
--- 위는 요청, 아래는 응답
서비스(7강)는 묻고 답하는 대화입니다. 거북이를 새로 만드는 Spawn은 자리와 이름을 요청으로 받고, 실제로 붙은 이름을 응답으로 돌려줍니다.
name 줄의 주석은 뺐습니다. 7강 3편에서 직접 불러 봅니다.
.action
.action은 세 칸입니다
액션(9강)은 오래 걸리는 일을 시키는 대화입니다. 목표 각도 theta를 보내면, 도는 동안 남은 각도 remaining을 피드백으로 받고, 끝나면 결과 delta를 받습니다.
파일 순서는 목표, 결과, 피드백입니다. 주석 줄은 뺐습니다.
따라 하기
가운데 토막이 종류를 알려 줍니다
ros2 interface list는 설치된 인터페이스를 모두 보여 줍니다. 너무 많으니 | grep turtlesim으로 거르면 거북이 패키지의 메시지 2개, 서비스 5개, 액션 1개가 보입니다.
Kilted부터는 turtlesim 타입이 turtlesim_msgs/msg/Pose처럼 바뀝니다(Jazzy는 turtlesim/msg/Pose).
내 인터페이스
내 인터페이스는 7강 8편에서 만듭니다
맞는 표준 타입이 없으면 .msg, .srv, .action 파일을 직접 씁니다. 이 파일은 빌드해야 파이썬에서 쓸 수 있는 코드가 되므로, 빌드를 배운 뒤 7강 8편에서 인터페이스 패키지로 만듭니다.
인터페이스 패키지는 파이썬이 아니라 CMake 패키지(ament_cmake)로 만듭니다(5강 9편).
정리
모양을 읽는 명령 네 가지
모르는 토픽을 만나면 ros2 topic type으로 타입을 묻고, ros2 interface show로 펼쳐 봅니다. 4강에서 본 메시지들도 모두 이 두 명령으로 다시 열어 볼 수 있습니다.
다음 강