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.
'ROS (Robot Operating System)' 카테고리의 다른 글
[ROS: Robot Operating System] 3-1. ROS 파일시스템 (0) | 2019.04.08 |
---|---|
[ROS: Robot Operating System] 2-3. ROS Message (메세지)의 이해 (0) | 2019.04.05 |
[ROS: Robot Operating System] 2-1. ROS Node (노드)의 이해 (0) | 2019.04.05 |
[ROS: Robot Operating System] 1-3. ROS 용어 정리 (0) | 2019.04.04 |
[ROS: Robot Operating System] 1-2. ROS 설치 (0) | 2019.04.04 |