차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
activity:public:2020:ros:201106 [2021/09/18 22:05:04] – [ROS 스터디 #2: ROS 사용법 기초] 2021 영상 추가 bkparks12activity:public:2020:ros:201106 [2021/10/03 15:45:48] (현재) yhy01625
줄 1: 줄 1:
 +======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. 마스터 노드 구동====
 +
 +<sxh bash title: 실행법>
 +roscore
 +</sxh>
 +모든 ros 노드들에 대한 **정보 중계**를 담당.\\
 +각 노드들이 **서로의 존재를 인식하게 하는 역할**만 담당하고, 이후는 노드들끼리 직접 통신한다. 즉, **모든** 통신이 roscore를 거치는 것은 아니다.
 +
 +\\
 +
 +====2.2. 노드2 구동====
 +<sxh bash title: 실행법>
 +rosrun 패키지이름 노드이름
 +</sxh>
 +Subscriber나 client를 따로 임의로 실행시킬 때 사용한다.
 +
 +\\
 +
 +====2.3. 노드 1 구동====
 +<sxh bash title: 실행법>
 +rosrun 패키지이름 노드이름
 +</sxh>
 +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에서 다루었다.