본문 바로가기
IT/하드웨어

[ROS] 로봇 운영체제 ROS

by 제가이버 2020. 8. 7.
반응형

<ROS 소개>

ROS는 로봇 응용프로그램을 개발할 때 필요한 하드웨어 추상화, 하위 디바이스 제어, 로보틱스에서 많이 사용되는 센싱, 인식 지도 작성, 모션 플래닝 등의 기능 구현, 프로세스 사이의 메시지 패싱, 패키지관리, 개발환경에 필요한 라이브러리와 다양한 개발과 디버깅 도구를 제공한다.

 

로봇 응용프로그램을 개발하기 위해 로봇에 특화된 다양한 개발환경을 제공하는 로봇 소프트웨어 플랫폼이다.

 

 

 

 

 

<메타 운영체제>

ROS는 메타운영체제이다.

메타 운영체제는 명확히 정의된 용어는 아니지만, 애플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여 스케줄링 및 로드, 감시, 에러 처리 등을 실행하는 시스템이다.

 

 

기본적인 운영체제의 종류

윈도우 (XP, 7, 8, 10)

리눅스

(Linux Mint, Ubuntu, Fedora, Gentoo)
(OS X매버릭스, 요세미티, 엘캐피탄)
스마트폰 (안드로이드, iOS, 심비안, RiMO, 타이젠)

 

 

기존의 전통적인 운영체제를 이용하면서, 로봇 응용프로그램 개발에 필수인 로봇과 센서를 하드웨어 추상화 개념으로 제어하고, 사용자의 로봇 응용프로그램 개발을 위한 자원 시스템인 것이다.

 

 

ROS의 데이터 통신은 하나의 운영체제 뿐만 아니라 서로 다른 운영체제, 하드웨어, 프로그램 간에도 데이터를 주고받을 수 있어 다양한 하드웨어가 사용되는 로봇 개발에 적합하다.

 

 

 

 

 

 

 

<ROS의 목적>

로보틱스 소프트웨어 개발을 전 세계 레벨에서 공동 작업이 가능하도록 하는 환경을 구축하는 것

즉 ROS는 흔히 말하는 로봇 소프트웨어 플랫폼, 미들웨어, 프레임워크를 지향하기보다는 로보틱스 연구, 개발에서의 코드 재사용을 극대화하는 것에 초점이 잡혀있다.

 

 

 

ROS의 특징

분산 프로세스 최소 단위의 실행 가능한 프로세스(노드, Node) 형태로 프로그램하며, 각 프로세스는 독립적으로 실행되면서 유기적으로 데이터를 주고 받는다.
패키지 단위 관리 같은 목적을 갖는 복수 개의 프로세스를 패키지 단위로 관리하기 때문에 개발은 물론 사용하기에도 편하고 공유 및 수정 후 재배포도 쉽다.
공개 리포지토리 각 패키지는 개발자가 선호하는 공개 리포지토리(예를 들어 GitHub) 등에 패키지를 공개하고 각 라이선스도 밝히게 되어 있다.
API 형태 ROS를 활용한 프로그램을 개발할 때 ROS는 단순히 API를 불러와 자신이 사용하던 코드에 쉽게 삽입할 수 있도록 설계되었다. 
ROS 프로그래밍과 C++,Python 프로그램이 별반 다를 게 없다.

복수의 프로그래밍 언어 지원

ROS 프로그램은 다양한 언어를 지원하기 위해 클라이언트 라이브러리(Client Library)를 제공한다. 이는 Python, C++, Lisp 등 로봇 분야에서 많이 사용하는 프로그래밍 언어뿐만 아니라 JAVA, C#, Lua, ruby 등의 언어에서도 사용할 수 있다.

 

 

 

 

 

 

 

 

 

<ROS의 구성>

클라이언트 라이브러리 다양한 프로그래밍 언어를 지원
하드웨어 인터페이스 하드웨어 제어
커뮤니케이션 데이터 통신
로보틱스 애플리케이션 프레임워크 다양한 로보틱스 응용프로그램의 작성을 도움
로보틱스 애플리케이션 이를 기반으로 한 서비스용 응용프로그램
시뮬레이션 가상의 공간에서 로봇을 제어해 볼 수 있음
소프트 웨어 개발 툴 소프트 웨어를 개발하기 위함

 

 

 

 

 

<ROS의 생태계>

 

 

 

 

 

 

<ROS의 역사>

ROS는 2007년 5월 미국의 스탠퍼드 대학 인공지능 연구소(AI LAB)가 진행하던 STAIR(STanford AI Robot) 프로젝트를 위해 모건 퀴클리 박사가 개발한 Swiitchyard 시스템에서 시작되었다.

 

 

 

 

 

<ROS 버전>

 

반응형

댓글