seops

04. ROS 중요 컨셉 본문

ROS

04. ROS 중요 컨셉

seops 2019. 1. 30. 00:06

1. 용어 정리

 1) 노드

- 최소 단위의 실행 가능한 프로세서

- 하나의 실행 가능한 프로그램으로 생각하면 된다.

- ROS에서는 초소한의 실행 단위로 프로그램을 나누어 작업하게 된다. 각 노드는 메시지 통신으로 데이터를 주고 받는다.

- 가장 큰 특징은 오픈 소스로의 장점도 있다. (노드를 공개)

- 예시 : [RAW 데이터를 받음 -> 필터 -> 기타 처리 -> 특징점 찾기 -> 매칭 작업 -> 디바이스에 표시 ]

- 각각의 노드들은 별개의 프로그램이다.


 2) 패키지

- 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것

- 패키지의 묶음을 메타패키지라 하여 따로 분리한다.

- 예시 : 20개의 노드가 하나로 묶일 때, 하나의 프로그램이 되는 것


 3) 메세지

- 메시지를 통해 노드간의 데이터를 주고받게 된다.

- 메시지는 integer, floating, point. boolean와 같은 변수형태이다.

- 또한, 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 및 메시지들의 배열과 같은 구조도 사용할 수 있다.


 4) 토픽

- 단방향, 연속성 속성을 갖는다. (보내는 노드 : publisher node / 받는 노드 : subscriber node)

- 기본이 1:1 통신, 목적에 따라 1:n / n:1 / n:n 통신도 가능하다

- 일방적인 데이터를 계속 보내는 상황 - 센서 데이터


 4) 서비스

- 양방향 (서비스 서버와 서비스 클라이언트), 일회성 속성을 갖는다.


 5) 액션

- 목표를 전달 -> 중간 중간 액션 피드백 전달 -> 액션 결과 전달

- 복잡한, 장시간, 중간 결과를 알고 싶은 테스크에서 이용


2. 메시지 통신

- 가장 기술적 포인트 : 노드간의 메시지 통신!

1) 마스터 구동  - XMLRPC(XML-Remote Procedure Call) ~ $ roscore  - 노드 정보 관리

2) 서브스크라이버 노드 구동 - $rosrun 패키지이름 노드이름 ~ 서브스크라이버 노드 정보를 마스터에게 준다. (subscriber_node_name, topic_name, message_type)

3) 퍼블리셔 노드 구동 - $rosrun 패키지이름 노드이름  ~ 

4) 퍼블리셔 정보 알림 - 마스터는 서브스크라이버 노드에게 새로운 퍼블리셔 정보를 알린다.

5) 퍼블리셔 노드에 접속 요청 - 마스터로부터 받은 퍼블리셔 정보를 이용하여 TCPROS 접속을 요청

6) 서브스크라이버 노드 접속 응답 - 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호를 전송

7) TCP 접속 - TCPROS를 이용하여 퍼블리셔 노드와 직접 연결한다.

8) 메시지 전송 - 발행자 노드는 서브스크라이버 노드에게 메시지를 전송 (토픽)

9) 서비스 요청 및 응답 - 1회에 한해 접속, 서비스 요청 및 서비스 응답이 수행되고 서로간의 접속을 끊는다.

 - 서비스는 토픽과 달리 1회에 한해 접속하고 서비스 요청및 서비스 응답이 수행한 후 서로간의 접속을 끊는다. 즉, 1회성이다.


3. 메시지

 - 토픽, 서비스, 액션, 파라미터

 - 파라미터 : 어떤 변수를 (전역변수처럼) 외부에서 변경시키고, 다른 노드에게 받아서 자신의 프로세스를 변경할 수 있다.

 - 파라미터 서버 - 마스터의 일부 기능 중 하나


 - 메세지는 노드 간에 데이터를 주고받을 때 사용하는 데이터의 형태

 - 단순 자료형 / 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 / 메시지들이 나열된 배열과 같은 구조


4. 네임

 - 노드, 메시지(토픽, 서비스, 액션, 파라미터) 가지는 고유의 식별자

 - ROS는 그래프라는 추상 데이터 형태 지원

 - 글로벌 - 문자 없이 네임을 바로 쓰거나 네임 앞에 슬래쉬를 붙임, private - 네임 앞에 틸트(~)를 붙임


5. 좌표 변환(TF)

 - 각 조인트들의 상대 좌표 변환 - 트리 형태로 조인트들간의 관계도를 표시함


6. 클라이언트 라이브러리

 - 많음 / roscpp


7. 이기종 디바이스 간의 통신



8. 파일 시스템



9. 빌드 시스템

'ROS' 카테고리의 다른 글

06. ROS 도구  (0) 2019.02.01
05. ROS 명령어  (0) 2019.01.31
03. ROS 설치  (0) 2019.01.29
02. 설치  (0) 2019.01.28
01. 로봇 운영체제 ROS  (0) 2019.01.27
Comments