본문 바로가기
Computer Science/ROS

Service

by BaekDaBang 2024. 6. 7.

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