소프트웨어 개발자의 입장에서 로봇 제어에 대한 공부를 시작하려고 하면 ROS라는 용어를 접하게됩니다.
ROS는 로봇 운영체제(Robot Operating System)의 약자이며, 위키피디아에서는 ROS를 다음과 같이 정의하고 있습니다.
로봇 운영체제(ROS,Robot Operating System)는 로봇 응용 프로그램을 개발할 때 필요한 하드웨어 추상화, 하위 디바이스 제어, 일반적으로 사용되는 기능의 구현, 프로세스간의 메시지 패싱, 패키지 관리, 개발환경에 필요한 라이브러리와 다양한 개발 및 디버깅 도구를 제공한다. ROS는 로봇 응용 프로그램 개발을 위한 운영체제와 같은 로봇 플랫폼이다. 하드웨어 플랫폼을 하드웨어 추상화로 포함하고 있으며, 로봇 응용 소프트웨어 개발을 지원을 위한 소프트웨어 플랫폼이면서 이기종의 하드웨어에서 사용 가능한 운영체제와 같은 기능을 갖추고 있다.
ROS라는 용어를 처음 접했을때 OS라는 표현에 의해 별도의 운영체제인가.. 라고 생각했습니다만 ROS는 일반적인 운영체제와는 다른 메타 운영체제(Meta Operating System)라는 종류라고 합니다.
메타 운영체제란 애플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어를 통해 분산 컴퓨팅 자원을 활용함으로써 스케줄링 및 로드, 감시, 에러처리 등을 실행해 주는 시스템이라고 하네요.
일종의 미들웨어 또는 프레임워크의 개념과 비슷하지 않나 싶습니다.
또한 ROS는 메타 운영체제이므로 일반적인 운영체제 위에서 작동하며 Linux, MacOS, Windows 환경 모두에서 작동시킬 수 있으나 개발팀이 우분투 리눅스 LTS 버전에 맞춰 테스트를 진행하고 릴리즈하고 있으므로 주로 Linux를 기반으로 한 환경이 권장되고 있습니다.
ROS의 목적은 로보틱스 소프트웨어 개발을 전 세계를 대상으로 공동 작업이 가능한 개발환경을 구축하는 것이라고 이야기 하고 있습니다만 실제로는 연구소 등에서 로보틱스의 연구 및 개발을 위한 코드의 재사용성을 극대화하는 목적이 크다고 알려져 있습니다.
ROS는 2007년 5월 개발이 시작되어 2020년 5월 23일에 마지막(13번째) 버전이 릴리즈된 ROS 1과 2014년에 개발이 시작된 ROS 2로 나눠져 있으며, ROS 1과 ROS 2는 서로 호환되지 않는 전혀 다른 시스템으로 개발되었다고 합니다.
현재 나와있는 최신 버전은 ROS2 Humble Hawksbill (LTS)입니다. (LTS가 아닌 최신 버전은 ROS2 Irwini)
ROS 1은 여전히 많은 사람들이 사용하고 있지만 이미 마지막 버전(Noetic Ninjemys)이 배포되었고, 또한 2016년 이후로 핵심 코드의 개발은 중지되어 현재는 단순 유지관리 및 보수만 진행되고 있는 상황이므로 만약 새롭게 ROS를 시작하는 경우라면 ROS 2를 선택하면 될 것입니다.
ROS2에서는 주로 C++과 Python을 이용하여 개발을 하고 있으며 ROS 2를 학습하기 위한 방법으로는 관련 커뮤니티의 활용이 중요한 편입니다.
특히 국내에서는 아직 ROS2에 대한 도서가 적으므로(현재 시점에서 출판된 도서는 2권) 공식 사이트의 튜토리얼( Tutorials — ROS 2 Documentation: Humble documentation )을 이용하는 방법이 권장되고 있습니다.
지금까지 ROS에 대하여 간략하게 살펴보았습니다.
이후 글에서는 ROS 2의 설치부터 시작하여 학습 과정을 차근차근 정리해 보도록 하겠습니다.