ROS 기본 용어들
마스터(Master)
- 서로 다른 노드들 사이 통신을 총괄하고 관리한다
- ROS Core 라고 부름
노드(Nodes)
- 실행가능한 최소의 단위, 프로세스
- ROS에서 발생하는 통신의 주체
- 하드웨어 장치에 대해 하나씩의 노드, SW 모듈에 대해 하나씩의 노드를 할당한다
토픽(Topic)
- 안에 담긴 정보를 메시지라고 부르기도 함
- ROS 노드들이 주고 받는 정보들
- ex) 센서 데이터, 카메라 이미지, 동작 제어명령 등
발행자(Publishers)
- 특정 토픽에 메시지를 담아 외부로 보내는 Node
- ex) 센서, 카메라, 모터제어 알고리즘 ...
구독자(Subscribers)
- 특정 토픽에 담겨진 메시지를 수신하는 Node
- ex) 엑츄애이터 제어기, 데이터 시각화 도구 ...
패키지(Packages)
- 하나 이상의 노드와 노드의 실행을 위한 정보 등을 묶어 놓은 단위
- 노드, 라이브러리, 데이터, 파라미터 등을 포함
ROS 예시
ROS 노드간 통신 과정
- 통신이 이뤄지기 전에 통신을 원하는 노드는 마스터에 의뢰
- 연결해야 하는 노드의 정보를 얻어와서 서로 정보를 교환
- 통신환경이 구축이 완료되면 노드간 통신은 마스터를 거치지 않고 직접 이루어진다
ROS 노드간 통신의 두 가지 방식
토픽(Topic)
- 아래 처럼 Node A - Node B, Node A - Node C 처럼 비동기식 단방향 메시지 송수신 방식으로 메시지를 발간하는 Publisher와 메시지를 구독하는 Subscriber 간의 통신 방식이 있다.
- 1:N, N:1, N:N 통신이 가능하며 ROS에서 통용적으로 사용되는 방식이다.
- 일방적이고 지속적인 메시지를 전송한다
서비스(Service)
- 아래 처럼 Node B - Node C 처럼 동기식 양뱡향 메시지 송수신 방식으로 서비스의 요청(Request)를 하는 쪽을 Service client, 서비스의 응답(Response)를 하는 쪽을 Service server라고 한다
- 양방향 통신이며 일회성 메시지를 송수신 한다
액션(Action)
- 서비스와 토픽 메시지 교환 방식을 섞었다
- Node A - Node B 처럼 비동기식 + 동기식 양뱡향 메시지 송수신 방식이다
- Action client는 액션 목표(Goal)을 지정하고 Action server는 이 과정에서 중간 결과 값에 해당하는 액션 피드백(Feedback)을 다시 Action client에게 단방향 메시지를 송신
- 최종 액션 결과를 전송받는다
파라미터(Parameter)
- 서비스와 동일한 통신 방식으로 각 노드에 파라미터 관련 Parameter server를 실행
- 외부의 Parameter client와 통신하며 파라미터를 변경
- 어떤 상태값같은 메시지를 주고받는 서비스의 목적과는 다르게 노드 내부 또는 외부에서 노드 내 매개변수나 글로벌 매개변수를 가져와서(Get) 지정(Set)하는 목적을 가지고 있다
ROS 통신 시나리오
1) 마스터(roscore) 시동
- 통신이 이루어지기 위해 마스터(roscore) 실행
2) 구독자(Subscriber) 노드 구동
- 특정 토픽(topic)에 발행되는 메시지를 수신하기를 요청
3) 발행자(Publisher) 노드 구동
- 특정 토픽(topic) 메시지를 발행하겠다는 의사 전달
4) 노드 정보 전달
5) 노드간 접속 요청
- 구독자 노드가 발행자 노드에 TCPROS 접속을 요청
6) 노드간 접속 요청에 대한 응답
- 발행자 노드가 자신의 TCPROS URI(포트 포함)를 전송하여 응답
7) TCPROS 접속
- 발행자 노드와 구독자 노드 사이에 소켓(socket) 연결이 이루어짐
8) 메시지 전송
- 발행자 노드가 구독자 노드에게 메시지 전송(topic)
9) 메시지 전송 반복
- 접속이 한번 이루어진 뒤에는 별도 절차 없이 지속적으로 메시지 송수신
이미지 및 정보 출처
http://cafe.naver.com/openrt/2468
https://e3jake.tistory.com/15