✔ ROS 구조와 기능
ROS (Robot Operating System)
- 오픈소스 로봇 운영체제
- 로봇 소프트웨어 개발하는 데 필요한 소프트웨어의 집합체
소프트웨어 프레임워크
- 메타 운영체제 (Meta OS), 미들웨어
소프트웨어 모듈 + 라이브러리 집합 + 도구 집합
==> 각종 센서와 모터를 프로그래머가 편하게 사용할 수 있도록 지원
장점 : 기본 기능, 필요한 기능 가져다 쓰고 살짝만 고치면 된다.
단점 : 모든 기능이 다 필요하지 않을 수 있는데 필요 없는 것도 가지고 있을 수 있다.(로봇을 위한 것이므로 자동차 만들면 자동차에 필요한 기능만 있는게 아니다..)
=> 필요없는 기능 지우는 최적화 작업 필요
프로토타입에 적합
ROS 특징
- 코드 재사용 용이
- 다양한 프로그래밍 언어 지원
- 표준화된 ROS 인터페이스 따르는 HW, SW 편하게 엮을 수 있다.
- 여러 응용 구성 가능
- 대규모 실행 시스템 및 프로세스에도 적용 가능
- 다양한 도구들 함께 제공
- 다양한 OS 환경에서 통일된 방법으로 상호작용 구현하는 것 가능
ROS 제공 도구
RVIZ
- 시각화 도구
- 센서데이터(x,y,z축 숫자 보며 차가 어떻게 서 있는지)를 비롯한 주변환경 변화 시각화
RQT
- QUI 만들 때 쓰는 도구
- 노드연결 정보를 그래프로 표현
- 사용자 상호작용을 UI를 갖춘 응용 개발에 이용
GAZEBO
- 물리 엔진 기반의 3차원 시뮬레이터
- 시뮬레이터 제작 및 모델링에 이용
ROS에서의 통신
ROS는 분산환경, 즉, 네트워크 통신을 통해 협업을 할 수 있는 환경에 맞다
==> 토픽
레이저 스캐너(python node)에서 받아와서 지도를 생성(C++ node)하고 싶은데 어떡하지??
==> 토픽이라는 메시지를 주거니 받거니 하게 ROS에서 한다.
ROS 표준만 맞춰주면 이기종간 메시지 교환 가능
ㅡㅡ
ROS 핵심 기능