일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- overridePendingTraction
- 독서
- FragmentPagerAdapter
- 재태크
- FragmentSatePagerAdapter
- TabLayout and ViewPager
- 2020년 목표
- 목표한번이뤄보자
- 개발
- FrameLayout
- 운동
- BottomNavigationViewEx
- Android Universal Image Loader
- Today
- Total
seops
04. ROS 중요 컨셉 본문
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 |