ROS 용어
Node
- 최소 단위의 실행 가능한 프로세서
- 프로그램은 한 번에 짜는 것이 아니라 여러 개의 노드가 합쳐진 것임(카메라 노드, 라이다 노드 등)
- 각 노드는 메시지 통신으로 데이터를 주고 받는다.
Package
- 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것
- 패키지의 묶음을 메타 패키지라 하여 따로 분리한다.
Message
- 메시지를 통해 노드 간의 데이터를 주고 받게 된다.
- 메시지는 integer, floating point, boolean과 같은 변수 형태
Topic
- 단방향이고 연속적으로 이어지는 통신 형태
- 일방적으로 데이터를 보내는 상황에 사용된다. 예를 들어 거리 센서 등에서 보낼 때 토픽을 쓴다.
- 목적에 따라서 1:N, N:1, N:N 통신이 가능하다.
- 가장 많이 쓰인다.
Publisher
- 토픽 메시지를 전달하는 노드
Subscriber
- 토픽 메시지를 받는 노드
Service
- 토픽과 달리 양방향으로 이루어지는 통신 형태이다.
- 클라이언트가 서비스를 요청하고 서버가 서비스 응답을 한다.
- 클라이언트가 로봇에게 움직여달라고 요청, 서버가 로봇을 움직이게 하고 클라이언트에게 완료되었다고 말해줌.
- 연속적으로 통신이 이어지는 토픽과 달리 결과가 나오면 통신이 끊긴다.
- 토픽보다 사용 빈도는 적다.
Action
- 중간마다 중간 결과인 액션 피드백을 전달하는 통신 형태.
- 많이 쓰이지 않는다.
메시지 통신
마스터
- roscore 명령어에 해당
- 노드 정보들을 관리한다. 데이터에 관여하는 것은 아니고, 노드들의 통신을 연결해주는 역할을 한다.
노드
- 토픽을 마스터에 전달한다. rosrun (패키지) (노드 이름) 명령어에 해당한다.
- Subscriber : 노드의 이름, 토픽의 이름, 메시지 형태(카메라, 모터 등), IP 번호와 PORT 번호를 전달
- Publisher : 노드의 이름, 토픽의 이름, 메시지 형태, IP 번호와 PORT 번호 전달
- 둘의 정보가 같을 경우 마스터가 Publisher의 정보를 Subscriber 노드에 전달한다.
- 이후 Subscriber 노드가 Publisher에게 TCPROS 접속을 요청한다. 퍼블리셔는 이에 응답한다.
- 연결이 되면 Publisher에서 Subscriber로 메시지를 전송하는 토픽 또는 서비스 통신이 이루어진다.
- 연결이 된 후부터는 마스터는 필요없다.
메시지
메시지는 노드 간에 데이터를 주고받을 때 사용하는 데이터의 형태
- 토픽, 서비스, 액션은 모두 메시지를 사용
- 단순 자료형 - 정수, 부동 소수점, 불린
- 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 - geometry_msgs/PoseStamped 등
- 메시지들이 나열된 배열과 같은 구조 - float32[ ] ranges, sensor_msgs/LaserScan 등
네임(Names)
- 노드, 메시지(토픽, 서비스, 액션, 파라미터)를 가지는 고유의 식별자
- ROS는 그래프(graph)라는 추상 데이터 형태(abstract data type) 지원
- 글로벌(global): 문자 없이 네임을 바로 쓰거나 네임 앞에 슬래쉬(/)를 붙임
- 프라이빗(private): 네임 앞에 틸트(~)를 붙임
출처
- ROS 강의 Chapter4(표윤석) : https://www.youtube.com/watch?v=skqzz_xQQXg&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=4
- ROSwiki : http://wiki.ros.org/