본문 바로가기

ROS (Robot Operating System)

[ROS: Robot Operating System] 1-1. 개요

1. ROS의 정의

- ROS란 Robot Operating System의 약자로 "로스" 라고 발음하고, 로봇용 공개소스 메타운영체제 (Meta-operating system)이다.

- 메타운영체제 (Meta-operating sysetem)는 응용 프로그램을 개발하기 위해 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템을 의미한다.

- 즉, ROS는 로봇 응용 프로그램을 개발하기 위한 운영체제와 같은 로봇 플랫폼이지만, 리눅스, 윈도우, OS-X, 안드로이드 등과 같은 전통적인 운영체제는 아니다.

- 따라서, ROS는 기존의 OS를 기반으로 스케쥴링, 파일시스템, 프리세스 관리 등을 사용할 수 있도록 하며, Middleware+Software Framework+Tools+Plumbing+Ecosystem가 결합된 성격을 띈 Meta-operating system이다. 

-> A robot operating system (ROS) is similar to that of an operating system on a personal computer, in that it comprises a collection of programs which offer control to a user [Kerr, 2012].

- 따라서, ROS는 위에서 언급한 전통적인 운영체제를 이용하며, 로봇 응용 소프트웨어에 필요한 필수 기능들을 라이브러리 형태로 제공하고 있다. 또한, 로봇 프레임워크를 기반으로 응용 패키지를 개발, 관리, 제공하고 있다. 

- Robot OS는 ROS, OpenRTM, OROCOS 등 다양한 플랫폼들이 존재하지만, 대부분의 많은 업체들과 연구기관들에서 ROS를 많이 적용하고 있다. 

 

2. ROS의 목적과 필요성

- 그럼, ROS의 사용 목적은 무엇인가? 

- ROS는 서로 다른 운영체제, 하드웨어, 프로그램에서도 연동이 가능하며 따라서 다양한 하드웨어가 이용되는 로봇 개발에는 매우 적합한 운영체제이다. 

- 따라서, 공동 작업의 효율성을 극대화가 시키기 위해 서로 다른 운영체제를 사용하더라도 코드를 재사용하는 환경을 구축하는 것이 가장 궁극적인 목적이다. 

 

3. ROS의 기능 [1]

1) 분산 프로세스: 프로세스가 독립적으로 실행되면서 유기적으로 데이터를 주고 받을 수 있다. 

2) 패키지 단위 관리: 같은 작업을 수행하는 여러개의 프로세스를 패키지 단위로 관리가능하여 개발 또는 사용이 편리하고 배포, 공유, 수정에 용이하다. 

3) 공개 레파지토리: Github 등에 프로젝트를 공개하고 라이센스를 밝히게 되어 있다. 

4) API 형태: API를 불러오고 적용하는 것이 가능하다. 

5) 언어 독립성: Python, C++, C#, Java, Lisp, Lua 등으로 쉽게 구현할 수 있으며, 다양한 언어를 지원한다. 

6) 대규모 실행: ROS는 대규모 실행 시스템 및 개발 프로세스에 적용 가능하다. 

 

 

 

 

[Kerr, 2012]  Kerr, John, and Kevin Nickels. "Robot operating systems: Bridging the gap between human and robot." Proceedings of the 2012 44th Southeastern Symposium on System Theory (SSST). IEEE, 2012.

[1] https://jws2218.blog.me/221497574574