ROS 스터디 #2: ROS 사용법 기초
2020년 11월 06일 13:00
ZOOM 화상회의
영상의 PPT가 많은 도움이 됩니다. 꼭 시청해주세요!
1. ROS 기본개념
- 노드(Node): 최소 단위의 실행 가능한 프로세스로, 하나의 실행 가능한 프로그램으로 생각하면 된다. 각 노드는 메시지 통신으로 데이터를 주고받는다.
- 패키지(Package): 하나 이상의 노드, 노드 실행에 필요한 정보를 묶어 놓은 것. 패키지의 묶음은 메타패키지라 한다.
- 메시지(Message): 노드 간 주고받는 변수 형태의 데이터. 메시지나 메시지의 배열 등의 구조를 메시지로 사용할 수 있다.
1.1. 메시지 통신 방법의 종류
요약:
종류 | 동기 | 방향 | 사용 |
---|---|---|---|
Topic | 비동기 | 단방향 | 연속으로 데이터를 송수신 |
Service | 동기 | 양방향 | 요청 처리가 순간적(1회성); 현재 상태를 확인하고 응답받는 것이 필요한 경우 |
Action | 비동기 | 양방향 | 요청 처리 후 응답까지 오래 걸려서 서비스를 이용하기 어려운 경우, 중간 피드백값이 필요한 경우 |
2. 통신의 흐름
2.1. 마스터 노드 구동
roscore모든 ros 노드들에 대한 정보 중계를 담당.
각 노드들이 서로의 존재를 인식하게 하는 역할만 담당하고, 이후는 노드들끼리 직접 통신한다. 즉, 모든 통신이 roscore를 거치는 것은 아니다.
2.2. 노드2 구동
rosrun 패키지이름 노드이름Subscriber나 client를 따로 임의로 실행시킬 때 사용한다.
2.3. 노드 1 구동
rosrun 패키지이름 노드이름Publisher나 server를 따로 임의로 실행시킬 때 사용한다.
2.4. TCPROS 접속
마스터는 노드1의 정보를 노드2에게 알리고, 노드1과 2 사이에 TCPROS 접속이 일어난다. TCPROS 접속을 경로로 메시지 전송이 일어나는데, Topic의 경우 이 접속이 단방향이지만 연속적이고 Service의 경우 양방향이지만 한 번 송수신이 일어나면 연결이 끊어진다.
2.5. 예시
3. ROS 개념
- 네임(Name): 노드. 메시지(토픽, 서비스, 액션 등) 고유의 식별자. ROS 스터디 #4: ROS 기초 프로그래밍에서 다루었다.
- 좌표변환(TF): 로봇 관절에 대한 상대적인 위치 표현. ROS 스터디 #8: 모바일 로봇의 rviz에서 다루었다.