본문 바로가기

ROS 공부

ROS - 노드 간의 메시지 통신 (1)

- 노드(Node)

: 목적에 따라 세분화된 최소 단위의 실행 프로그램

* 노드는 다른 노드와 처리 결과 값을 주고 받게 됨으로써 하나의 커다란 프로그램이 됩니다.

 

 

 

- 패키지(Package)

: 하나 이상의 노드 또는 노드 실행을 위한 정보 등을 묶어 놓은 것

 

 

 

- 메타패키지(Metapackage)

:  패키지의 묶음

 

 

 

- 메시지(Message)

:  integer, floating point, boolean, string 와 같은 변수 형태.

또한, 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 및 메시지들의 배열과 같은 구조도 사용할 수 있습니다.

메시지를 주고 받는 통신 방법에 따라 토픽(topic), 서비스(service), 액션(action), 파라미터(prameter)로 구분됩니다.

 

 

★최소한의 실행단위(노드)로 프로그램을 나누어 작업하기 때문에 노드와 노드 사이에 입력과 출력 데이터를 서로 주고 받게 설계해야합니다. 여기서 주고 받는 데이터를 ROS에서는 메시지라고 하고 주고 받는 방식을 메시지 통신이라고 합니다.

 

 

 

 

- 토픽(Topic)

단방향 비동기 방식의 메시지 통신이며, 통신을 중단하기 전까지 연속적으로 메시지를 보내는 것이 특징입니다. 또한, 한번의 접속으로 연속적인 메시지를 송/수신하기 때문에 지속적으로 메시지를 발송해야하는 센서 데이터에 적합하여 많이 사용되고 있습니다.

이때, 메시지를 보내는 송신 측을 퍼블리셔(Publisher)(발행자), 수신 측을 서브스크라이버(Subscriber)(구독자) 라고 부릅니다.

 

 

 

 

 

- 서비스(service)

요청과 응답이 함께 사용되는 양방향 동기 방식의 메시지 교환 방식.

서비스는 토픽과는 달리 1회성 메시지 통신 방식입니다. 서비스의 요청과 응답이 완료되면 연결된 두 노드의 접속은 끊기게 됩니다. 로봇에게 특정의 일을 수행하는 요청시 혹은, 특정 조건에 의해 이벤트를 발생해야할 노드에 사용되는 경우가 많습니다. 1회성 메시지 이기에 네트워크에 부하가 적다는 이유로 토픽을 대체하는 수단으로도 사용되는 등 매우 유용한 통신 수단입니다.

서비스는 요청(request)이 있을 경우에 응답(response)을 하는 서비스 서버(service server)와 요청을 하고 응답을 받는 서비스 클라이언트(service client)로 나뉘어 있습니다.

 

 

 

- 참고 : https://cafe.naver.com/openrt/18738