======ROS 스터디 #2: ROS 사용법 기초====== 2020년 11월 06일 13:00\\ ZOOM 화상회의 {{youtube>SsJOz88-8mw?medium}} 영상의 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. 예시==== [[activity:public:2020:ros:200925#ROS_실행|ROS 스터디 1차시 3. ROS 실행]] 참조 \\ =====3. ROS 개념===== * **네임(Name)**: 노드. 메시지(토픽, 서비스, 액션 등) 고유의 식별자. [[activity:public:2020:ros:201120|ROS 스터디 #4: ROS 기초 프로그래밍]]에서 다루었다. * **좌표변환(TF)**: 로봇 관절에 대한 상대적인 위치 표현. [[activity:public:2020:ros:210127|ROS 스터디 #8: 모바일 로봇]]의 rviz에서 다루었다.