Service는 동기식 양방향 메시지 송수신 방식이다. Service는 모터의 on/off, 순간적인 회피 기동, 파라미터 서비스 등 단발적이며 빠른 통신이 요구될 때 많이 사용되는 메시지 통신 기법에 해당한다.
ROS2 Service
Service는 Topic과 달리 아래의 그림처럼 동기식 양방향 메시지 송수신 방식으로 동작하며, 서비스 요청(request)을 하는 Service Client, 요청 받은 서비스를 수행한 후 서비스 응답(response)하는 Service Server로 구성되어 있다.
Client Node가 Server Node로 request를 주면, 해당 request에 대응하는 적절한 response가 다시 Client에게로 전달된다.
하나의 Service Server에는 여러 Client Node가 request 할 수 있지만, Server는 동시에 여러 request를 처리하지는 못한다.
Topic vs Service
- Topic publish를 하면 여러 Node가 Subscribe 가능 ⇒ 1:n
- Service는 request가 온 대상에게만 response를 준다. ⇒ 1:1
- Service Server는 동시에 여러 request를 처리할 수 없습니다. 현재 작업 중인 request가 처리될 때 까지 다른 request는 기다리고 있어야 한다.
- Topic은 대부분 지속적으로 publish를 진행하는 반면, Service는 단발성에 가깝다.
- 분명한 요청의 주체가 있으며, 빠르게 동작이 완료되는 경우 ⇒ Service
- 불특정한 node가 Subscribe의 대상이 되며, 지속적으로 데이터의 송수신이 일어나는 경우 ⇒ Topic
'Computer Science > ROS' 카테고리의 다른 글
Topic (0) | 2024.06.07 |
---|---|
Node와 Package (0) | 2024.06.07 |
개발 환경 구축 - Ubuntu, ROS2 (0) | 2024.06.07 |
임베디드 보드 (0) | 2024.06.07 |
ROS2란? (0) | 2024.06.07 |