
🤖ROS(Robot Operating System)란?
- ROS 공식 홈페이지
- 오픈소스 로봇 운영체제
- 로봇 소프트웨어를 개발하는데 필요한 소프트웨어 프레임워크
- 소프트웨어 모듈 + 라이브러리 집합 + 도구 집합
- 자동차 제어를 위한 미들웨어(OS 위에서 돌아가는 SW)
📍ROS 특징
- 로봇 SW를 만들기 위한 코드의 재사용이 용이한 환경 제공이 목표
- 다양한 프로그래밍 언어 지원
- 표준화된 ROS 인터페이스를 따르는 HW, SW를 연결 가능
- 대규모 실행 시스템 & 프로세스에도 적용 가능
- 다양한 도구(RVIZ, RQT 등)들을 함께 제공
- 다양한 OS 환경 에서 통일된 방법으로 상호작용을 구현하는 것이 가능
🛠ROS가 제공하는 도구들
RVIZ
- 시각화 도구 : 센서 데이터를 비롯한 주변 환경 변화를 시각화
RQT
- QT 기반의 GUI 응용 개발 도구
- 노드 연결 정보를 그래프로 표현 (노드 통신할 때 많이 사용한다)
GAZEBO
📚ROS 배포판(버전)
- ROS Melodic Morenia : LTS(Long Term Support) -> 저자는 이 버전 사용
- ROS Lunar Loggerhead
- ROS Kinetic Kame : LTS
- ROS Indigo lgloo
📒ROS 기본 용어
마스터 (master)
- 서로 다른 노드들 사이의 통신을 총괄 관리
- 전체에 딱 1개
- ROS core라고 부른다
노드 (node)
- 실행 가능한 최소의 단위, 프로세스
- ROS에서 발생하는 통신의 주체
- HW 장치, SW 모듈에 node 하나씩 할당
토픽 (topic)
- node들이 주고 받는 것
- topic 안에 들어있는 실제 데이터를 '메시지'라고 한다
발행자 (publisher)
- topic에 메시지를 담아 외부로 송신하는 node
- ex) 센서, 카메라, 알고리즘 등
구독자 (subscriber)
- topic에 담긴 메시지를 수신하는 node
- ex) 액츄에이터 제어기, 데이터 시각화 도구 등
패키지 (package)
- 하나 이상의 노드와 노드의 실행을 위한 정보 등을 묶어 놓은 단위
- 노드, 라이브러리, 데이터, 파라미터 등을 포함