카테고리 없음

3. ROS 기초 개념용어

흑요석s 2023. 3. 30. 15:38

Repository : ROS 에서 사용하는 다양한 패키지를 저장하는 저장소(가장 넓은 개념), ROS를 설치하는 설치 파일도 포함된 저장소

 

Meta Pakage : 특수화된 패키지, 관련된 패키지들을 모아둔 것

(ex) 자율주행 메타패키지 -> 인지, 판단, 제어 패키지 포함

(ex) 튜토리얼 메타 패키지 -> topic Pub/Sub, Service Server/Client, Tutlesim

 

ROS Package의 일반적인 구조

include : 패키지에서 사용하는 헤더파일이 있는 폴더 (.h file)

msg : 새로운 메세지를 정의할 때, 메시지 유형이 포합된 폴더 (.msg file)

src/package_name : 소스 코드를 포함하는 폴더 (.c .cpp file)

srv : 새로운 서비스를 정의할 때, 서비스 유형이 포함된 폴더 (.srv file)

script : 실행 가능한 python 스크립트를 포함하는 폴더 (.py .bash. sh file)

CMakeLists.txt : Cmake 빌드 설정 파일

package.xml : 패키지 매니페스트 파일

 

Ros Computation Graph Level

Master : Parameter Server, Topic, Service, Message, Node에 대한 관리를 모두 수행. (roscore)

노드이름 등록, 검색, 정보 획득.

Topic : node 간 통신을 하기 위한 수단

Node : 최소 단위의 기본 프로세스, 실제 하나의 역할만 하도록 권장.

Node 간 통신 : 메시지, 서비스, 파라미터를 통해 통신

Parameter Server : Master에 값을 전달하여, 코드 실행 중 값 변경 가능.

Message : 노드간 송수신하는 데이터

Bag : ROS에서 데이터(topic)를 저장/불러오기 때 사용

Topic : 메세지 식별을 위한 이름

Publish : Topic을 보내는 것, Subscribe : Topic을 받는 것.

 Services : 입력이 있을때만 동작하는 형태의 데이터 송수신

 

<노드간 통신 방법>

  통신 방향 통신 방법 통신 유형
Topic 일방향 비동기 지속적
Service 양방향 동기 일시적
Action 양방향 비동기 지속/일시적

 

Topic :

- 단방향 통신으로 연속적으로 데이터를 송수신하는 경우 사용 (센서 데이터)

- 한번 접속시, 지속적 데이터 송수신가능, Publisher는 데이터 송신 시점 지정 가능

- 장기적으로 실행되는 프로세스 또는 예외가 발생할 수 있는 프로세스에서는 사용을 권장하지 않음. (그래도 많이 사용)

 

 

 

Service :

- 양방향 통신으로 노드 간 통신 요청과 동시에 응답하여 처리가 필요한 경우 사용

- Topic과 달리 한번 통신 후 연결이 종료 됨. 다시 통신해야할 경우 접속부터 새롭게 수행해야함.

- 장기적으로 실행되는 프로세스 또는 예외가 발생할 수 있는 프로세스에는 사용을 권장하지 않음.

 

Action

- Service와 유사, 장기적으로 수행되는 프로세스에서 피드백을 제공하는 양방향 통신

- 최종 응답까지 시간이 오래 걸리는 경우 사용, 메시지 자체는 비동기식으로 전송됨.

- 중간에 취소가 가능하고 상태, 피드백, 결과를 모두 수신 가능.