프로그래밍/ROS2

토픽 / 서비스 / 액션 등의 통신 패턴

techwin 2024. 10. 21. 22:56

ROS2 에서 사용하는 통신 방식에 대해 알아 봅니다. 

 

 

  1. 토픽:
    • 소켓 기반이지만, 대부분 UDP를 사용합니다.
    • DDS(Data Distribution Service)를 통해 구현되며, 이는 UDP 멀티캐스트를 주로 사용합니다.
    • 발행-구독(publish-subscribe) 패턴을 따릅니다.
  2. 서비스:
    • HTTP와 유사한 요청-응답 모델을 사용하지만, HTTP 프로토콜을 직접 사용하지는 않습니다.
    • 역시 DDS를 기반으로 구현되며, 대개 UDP를 사용합니다.
    • 동기식 통신 방식을 제공합니다.
  3. 액션:
    • 서비스와 토픽의 특성을 결합한 형태입니다.
    • 장기 실행 작업에 적합한 비동기식 통신을 제공합니다.

 

[토픽 방식]

 

[서비스 방식]

 

[액션 방식]

액션(action)은 그림1의 `Node A - Node B`처럼 비동기식+동기식 양방향 메시지 송수신 방식으로 액션 목표 (goal)를 지정하는 Action Client과 액션 목표를 받아 특정 태스크를 수행하면서 중간 결괏값에 해당되는 액션 피드백(feedback)과 최종 결괏값에 해당되는 액션 결과(result)를 전송하는 Action Server 간의 통신이라고 볼 수 있다. 이는 ROS 1의 액션 컨셉과 동일하다.