[ROS] ROS 메시지, 토픽, 서비스, 매개변수 복습

HY K·2024년 8월 16일

ROS1

목록 보기
19/34

이번 포스팅에서는 메시지, 토픽, 서비스, 매개변수를 다시 한번 복습해보자. 이는 본격적으로 패키지를 생성하기 전에 다시금 개념을 짚고 넘어가는 것이다.

참고 링크는 다음과 같다.
https://velog.io/@hy_k/ROS-%EA%B3%B5%EB%B6%80%ED%95%98%EA%B8%B06-ROS%EC%9D%98-%ED%95%B5%EC%8B%AC-%EC%9A%A9%EC%96%B4%EB%93%A4%EC%9D%84-%EA%B3%B5%EB%B6%80%ED%95%B4%EB%B3%B4%EA%B8%B0

https://cafe.naver.com/openrt/3000


💡 메시지
노드는 메시지를 통해 노드 간의 데이터를 주고받게 된다. 메시지는 변수 형태, 혹은 간단한 자료구조 및 배열과 같은 구조를 사용한다. 이러한 메시지를 이용한 통신방법으로는 TCPROS, UDPROS 방식 등이 있으며, 단방향 메시지 송/수신 방식의 토픽과 양방향 메시지 요청/응답 방식의 서비스를 이용하고 있다.

💡 토픽
발행자(publisher) 노드가 하나의 내용을 토픽 이름으로 마스터에 등록한 후, 메시지 형태로 발행하게 되는 것 중 하나를 토픽이라고 한다. 이 토픽을 수신하길 원하는 구독자(subscriber) 노드는 마스터에 등록된 토픽의 이름에 대항되는 발행자 노드의 정보를 받아서, 발행자-구독자 노드 간 직접적 연결을 통해 메시지를 송/수신 또는 요청/응답하게 된다.


토픽은 단방향, 비동기 통신 방식이기 때문에 한쪽 방향으로만 정보가 가는 것을 볼 수 있다. 물론 발행자(publisher)와 구독자(subscriber)는 한 노드 내에서 여럿 선언할 수 있기 때문에 마치 토픽으로 정보를 주고 받는 것처럼 할 수도 있다.

💡 서비스

  • 토픽은 비동기 방식이라 필요에 따라서 주어진 데이터를 전송하고 받는데 사용한다. 하지만 요청과 응답이 사용되는 동기 방식의 메시지 교환 방식도 필요하기 때문에, 서비스가 그 역할을 담당하고 있다.
  • 서비스는 요청이 있을 경우에 응답을 하는 서비스 서버와, 요청을 하고 응답을 받는 서비스 클라이언트로 구성된다.
  • 토픽과 다르게 1회성 메시지 통신이며, 요청과 응답이 종료됨과 동시에 노드의 접속 역시 끊긴다.
  • 서비스 서버는 요청을 입력으로 받고, 응답을 출력으로 하는 서비스 메시지 통신의 서버 역할을 한다. 모두 메시지를 사용한다.
  • 서비스 클라이언트는 요청을 출력으로 하고 응답을 입력으로 하는 클라이언트 역할을 맡는다. 마찬가지로 응답과 요청 모두 메시지로 이루어진다.


서비스는 양방향 동기 통신 방식이기에, 실시간으로 1회 동안 양방향 통신이 이루어진다. 1회 통신이 끝나고 나면 자연스럽게 서비스는 종료된다.

💡 파라미터

  • 노드에서 사용하는 파라미터를 말한다. 디폴트로 설정 값들이 지정되어 있으며 필요에 의해서 외부에서 이 파라미터들을 읽고 수정할 수 있다. 실시간으로 가능하기 때문에 매우 유용하게 사용되고 있다.
  • 파라미터 서버는 패키지에서 파라미터를 사용할 때 각 파라미터를 등록하는 서버를 의미한다. 마스터의 일부분이다.

profile
로봇, 드론, SLAM, 제어 공학 초보

0개의 댓글