ROS는 로봇의 응용프로그램을 개발하기 위한 운영체제와 같은 로봇 소프트웨어 플랫폼. ROS는 로봇 응용프로그램을 개발할 때 필요한 하드웨어 추상화, 하위 디바이스 제어, 로보틱스에서 많이 사용되는 센싱, 인식, 지도 작성, 모션 플래닝 등의 기능 구현, 프로세스 간의 메시지 파싱, 패키지 관리, 개발환경에 필요한 라이브러리와 다양한 개발 및 디버깅 도구를 제공
마스터는 노드와 노드 사이의 연결과 메시지 통신을 위한 네임 서버와 같은 역할. roscore로 실행하며 각 노드의 이름을 등록하고 필요에 따라 정보를 받을 수 있음. 마스터 없이는 노드간의 접속, 토픽과 서비스와 같은 메시지 통신을 할 수 없다.
최소 단위의 프로세서를 지칭. 하나의 프로그램으로 하나의 목적에는 하나의 노드를 작성하는 것이 좋다.
노드는 구동과 함께 마스터에 노드 이름과 publisher, subscriber, service server, service client에서 사용하는 토픽 및 서비스 이름, 메시지 형태, URI 주소와 포트를 등록. 이 정보들을 기반으로 각 노드는 노드끼리 토픽과 서비스를 이용하여 메시지를 주고 받음.
ROS를 구성하는 기본 단위. 응용프로그램은 패키지 단위로 개발되며 패키지는 최소한 하나 이상의 노드를 포함하거나 다른 패키지의 노드를 실행하기 위한 설정 파일들을 포함. 각종 프로세스 구동을 위한 ROS 의존성 라이브러리, 데이터셋, 설정 파일 등 패키지에 필요한 모든 파일을 포함.
공통된 목적을 지닌 패키지들의 집합. 예를 들어 navigation 메타패키지는 AMCL, DWA, EKF, map_server등 10개의 패키지로 구성
노드는 메시지를 통해 노드간의 데이터를 주고 받는다. 메시지는 변수 형태로 간단한 데이터 구조나 메시지들이 나열된 배열과 같은 구조도 사용 가능.
Publisher 노드가 하나의 전달할 것에 대해서 토픽으로 마스터에 등록한 후, 전달한 것에 대한 이야기를 메시지 형태로 퍼블리시한다. 수신 받기 원하는 subscriber 노드는 마스터에 등록된 토픽의 이름에 해당하는 publisher 노드의 정보를 받는다.
Subscriber 노드는 Publisher 노드와 직접 연결하여 메시지를 topic을 통해 송수신
Publish는 토픽의 내용에 해당하는 메시지 형태의 데이터를 송신하는 것. Publisher 노드는 퍼블리시를 수행하기 위한 토픽을 포함한 자신의 정보들을 마스터에 등록하고, subscribe를 원하는 subscriber 노드에 메시지를 보낸다. Publisher는 이를 실행하는 개체로써 노드에서 선언. Publisher는 하나의 노드에서 복수로 선언 할 수 있다.
Subscribe는 토픽의 내용에 해당하는 메시지 형태의 데이터를 수신하는 것. Subscribe 노드는 Subscribe를 수행하기 위하여 토픽을 포함한 자신의 정보들을 마스터에 등록하고, 구독하고자 하는 토픽을 퍼블리시하는 퍼블리셔 노드의 정보를 마스터로 받는다. 이에 기반하여 S 노드는 P 노드와 직접 접속하여 메시지를 받는다. Subscriber는 이를 실행하는 개체로써 노드에서 선언. Subscriber도 하나의 노드에서 복수로 선언 가능.
이러한 토픽 통신 방식은 비동기 방식이라서 필요에 따라서 송수신하면 된다.
서비스 메시지 통신은 특정 목적의 작업에 해당되는 서비스를 요청하는 서비스 클라이언트와 서비스 응답을 담당하는 서비스 서버간 동기적 양방향 서비스 메시지 통신.
Publisher-Subscriber는 비동기, Service client-server는 동기
요청을 입력으로 받고, 응답을 출력으로 하는 서비스 메시지 통신의 서버 역할. 요청과 응답은 모두 메시지로 되어 있고 요청을 받으면 지정된 서비스를 수행해서 결과를 클라이언트한테 전달. 정해진 명령을 받아 수행하는 노드에 사용.
요청을 출력하고, 응답을 입력으로 받는 서비스 메시지 통신의 클라이언트 역할. 요청과 응답 모두 메시지로 되어 있고 요청을 서버에게 전달하고 결과값을 받는다. 정해진 명령을 지시하고 결과값을 받는 노드에 사용.
서비스처럼 양방향을 요구하나 요청 처리후 응답까지 오랜 시간이 걸리고 중간 결과값이 필요한 경우 사용되는 메시지 통신 방식. 요청과 응답에 해당되는 goal 과 result 사이에 중간 결과값 feedback이 추가되었다. goal을 정하는 액션 클라이언트와 목표에 맞게 일을 수행하고 피드백과 결과를 전달하는 액션 서버로 구성되며 비동기식 양방향 메시티 통신
액션 클라이언트로부터 목표를 입력 받고, 결과 및 피드백 값을 출력하여 클라이언트에게 전달. 목표값을 전달 받은 후 지정된 실질적인 액션의 실행을 담당.
목표를 출력, 액션 서버로부터 결과 및 피드백 값을 입력으로 받는 메시지 통신의 클라이언트 역할. 서버에게 목표를 전달하고 결과 및 피드백을 수신받아 다음 지시를 내리거나 목표를 취소한다.
노드에서 사용되는 파라미터를 말하며 디폴트로 설정값들이 지정되어 있고, 필요에 따라 외부에서 읽거나 쓸 수 있다. 특히 외부에서 쓰기 기능을 이용하여 상황에 따라 설정값을 실시간으로 바꿀 수 있기 때문에 매우 유용.
패키지에서 파라미터를 사용할 때, 각 파라미터를 등록하는 서버. 마스터의 한 기능이기도 하다.
ROS의 빌드 시스템. Catkin 빌드 시스템은 ROS와 관련된 빌드, 패키지 관리, 패키지 간의 의존관계 등을 편리하게 사용할 수 있게 한다.
나머지는 나중에 추가