ROS 용어 정리
24 Dec 2017 | ROSROS Terminology
노드(Node)
노드는 ROS에서 최소 단위의 실행 프로세스를 가리키는 용어입니다. 하나의 프로그램이라고 생각하면 되며, ROS에서는 하나의 목적에 하나의 노드를 개발하는 것을 추천하고 있습니다.
노드들을 관리하는 마스터(Master)가 있는데, 각 노드들은 생성되면서 마스터에 발행자(Publisher), 구독자(Subscriber), 토픽(Topic), 서비스의 각 이름, 메시지 형태, URI 주소와 포트 등을 등록합니다. 이 정보들을 기반으로 각 노드들끼리 서로 통신을 할 수 있습니다.
노드들은 마스터와 통신할 때는 XMLRPC 프로토콜을 이용하며, 각 노드간 통신에서는 TCP/IP 계열의 TCPROS 또는 XMLRPC를 사용합니다. 노드간 접속 요청 및 응답은 마스터를 거치기 때문에 XMLRPC를 사용하며, 메시지 통신은 마스터를 거치지 않고 바로 통신하기 때문에 TCPROS를 사용합니다.
패키지(Package)
패키지는 ROS를 구성하는 기본 단위입니다. 패키지에는 하나 이상의 노드가 포함됩니다.
마스터(Master)
마스터는 각 노드간 발견을 할 수 있도록 도와주는 네임 서버(Name Server)와 같은 역할을 합니다. XMLRPC 통신을 이용해서 각 노드들과 통신합니다.
메시지(Message)
메시지는 각 노드간 주고받는 데이터를 말하며, 그 안에 다양한 데이터 타입들을 정의해서 사용할 수 있습니다. 메시지를 사용하는 통신 방법으로 TCPROS, UDPROS 방식등이 있습니다.
토픽(Topic)
토픽은 어떠한 메시지를 전달할 ‘주제’입니다. 발행자(Publisher)는 특정 토픽에 대해 메시지를 발행을 하며, 구독자(Subscriber)는 특정 주제에 대해 구독을 함으로써 해당 메시지를 전달받을 수 있습니다. 구독자가 마스터에게 특정 토픽에 대한 구독을 요청하면, 마스터는 등록되어 있는 발행자 정보를 구독자에게 전달하고, 구독자는 발행자 노드에 직접 연결해서 메시지를 전달받을 수 있게 됩니다.
발행자(Publisher) 및 구독자(Subscriber)
발행자는 특정 토픽에 대해 메시지를 전송하는 노드를 말하며, 구독자는 특정 토픽에 대한 메시지를 전달받는 노드를 말합니다.
서비스(Service)
발행자/구독자의 통신은 비동기 방식으로 이루어집니다. 따라서 일반적으로 아주 훌륭하게 동작되지만, 경우에 따라서는 요청과 응답이 동시에 이루어져야하는 동기 방식이 필요할 때도 있습니다. ROS에서는 서비스라는 이름으로 메시지 동기 방식을 제공합니다.
서비스는 요청이 있을 때 응답하는 서비스 서버와 요청하고 응답받는 서비스 클라이언트로 나누어집니다.
서비스는 토픽과는 다른 일회성 메시지 통신이며, 요청과 응답이 완료되면 두 노드간의 연결은 끊어집니다.