- ROS는 = Robot Operating System
- ROS는 메타 운영체제(Meta-Operating System)이다.
로보틱스 소프트웨어 개발을 전세계 레벨에서 공동 작업 가능하도록 생태계를 구축하는 거!!
메타 운영 체제
- 메타 운영체제(Meta-Operating System) 딱히 정확히 정의된 용어는 아니지만, 애플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여, 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템이라고 볼 수 있다.
- 즉, 윈도, 리눅스, 안드로이드와 같은 전통적인 운영체제는 아니다. 오히려 ROS는 기존의 전통적인 운영체제(리눅스, 윈도즈, OS-X, 안드로이드)를 이용하고 있다.
- 기존 운영체제의 프로세스 관리 시스템, 파일 시스템, 유저 인터페이스, 프로그램 유틸(컴파일러, 스레드 모델 등) 등을 사용하고 있다. 이에 추가적으로 다수의 이기종 하드웨어 간의 데이터 송수신, 스케쥴링, 에러 처리 등 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공하고 있다.
- 또한, 이러한 로봇 소프트웨어 프레임워크를 기반으로 다양한 목적의 응용 프로그램을 개발, 관리, 제공하고 있으며 유저들이 개발한 패키지 또한 유통하는 생태계(ecosystem)를 갖추고 있다.
ROS 특징
통신 인프라
- 노드 간 데이터 통신을 제공
- 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
메시지 파싱 기능
- 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
- 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
메시지의 기록 및 재생
- 노드 간 송/수신되는 데이터인 메시지를 저장하고 필요시에 재사용 가능
- 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이함
메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
- 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능
- 클라이언트 라이브러리:roscpp, rospy, roslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR
분산 매게 변수 시스템
- 시스템에서 사용되는 변수를 글로벌 키값으로 작성하여 공유 및 수정하여 실시간 반영
로봇 관련 다양한 기능
로봇에 대한 표준 메시지 정의
- 카메라, IMU, 레이저 등의 센서 / 오도메트리, 경로 및 지도 등의 내비게이션 데이터 등의 표준 메시지를 정의하여 모듈화, 협업 작업을 유도, 효율성 향상
로봇 기하학 라이브러리
- 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF제공
로봇 기술 언어
- 로봇의 물리적 특성을 설명하는 XML 문서 기술
진단 시스템
- 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공
센싱/인식
- 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
내비게이션
- 로봇에서 많이 사용되는 로봇의 포즈(위치/자세) 추정, 지도 내의 자기 위치 추정 제공
- 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리를 제공
매니퓰레이션
- 로봇 암에 사용되는 IK, FK는 물론 응용단의 Pick and Place를 지원하는 다양한 Manipulation 라이브러리 제공
- GUI 형태의 매니퓰레이션 Tools 제공 (Movelt!)
다양한 개발 도구
로봇 개발에 필요한 다양한 개발 도구를 제공
로봇 개발의 효율성 향상
Command-Line Tools
- GUI 없이 ROS에서 제공되는 명령어로만 로봇 액세스 및 거의 모든 ROS 기능 소화
RViz
- 강력한 3D 시각화 툴 제공
- 레이저, 카메라 등의 센서 데이터를 시각화
- 로봇 외형과 계획된 동작을 표현
RQT
- 그래픽 인터페이스 개발을 위한 Qt 기반 프레임 워크 제공
- 노드와 그들 사이의 연결 정보 표시(rqt_graph)
- 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅(rqt_plot)
- 데이터를 메시지 형태로 기록하고 재생(rqt_bag)
Gazebo
- 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
- ROS와의 높은 호완성
'ROS' 카테고리의 다른 글
ROS catkin을 이용한 패키지 만들기 (1) | 2021.06.08 |
---|---|
ROS catkin 설치 방법 (0) | 2021.06.08 |
ROS 설치 과정 (0) | 2021.06.07 |
ROS 이론과 명령어 2 (0) | 2021.06.07 |