로봇 운영체제 : ROS에 대해 알아보자!

2022.02.20 21:09 4,917 Views

안녕하세요, 데이크루 1기로 활동 중인 '므인'입니다.

혹시 ROS에 대해 들어본적 있나요?

저는 이번에 조사를 하면서 처음 알게 되었는데요!

ROS는 로봇을 기반으로 하는 다양한 기업들에게 표준이 되는 로봇 운영체제입니다.

ROS를 기반으로 하는 로봇 제작 업체는 다음 게시물에서 소개할 예정이고 이번 게시물에서는 ROS에 대해 소개하겠습니다~!

그럼 알아보러 가실까요?




ROS가 무엇인가요?

이미지 출처 : https://www.adlinktech.com/en/news/adlink-joins-robot-operating-system-(ros)-global-open-source-project


바로 로봇 응용 프로그램을 개발을 위한 운영체제와 같은 로봇 플랫폼으로써 로봇 응용 프로그램을 개발할 때 필요한 하드웨어 추상화, 하위 디바이스 제어, 일반적으로 사용되는 기능의 구현, 프로세스간의 메시지 패싱, 패키지 관리, 개발환경에 필요한 라이브러리와 다양한 개발 및 디버깅 도구를 제공합니다. (출처 : 위키백과)


즉 로봇과 로봇 사이의 통신을 만들어주거나 / 로봇과 센서의 통신을 이어주거나 / 코드와 쉽게 연결시켜주는 도구입니다.


또한 ROS는 로봇 소프트웨어 개발을 전 세계 레벨에서 공동 작업이 가능하도록 환경을 구축하는 것을 목적으로 하는 플랫폼이기 때문에 로봇 연구, 개발에서의 코드 재사용을 지향합니다.


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




기존 로봇 개발 방식의 한계


ROS 이전 기존의 로봇 개발 방식은 하드웨어 설계와 제어기부터 비전, 네비게이션 등 모든 것을 일일이 개발해야하는 번거로움이 있었습니다.

또한 API(응용프로그램 프로그래밍 인터페이스, 컴퓨터나 컴퓨터 프로그램 사이의 연결)마다 인터페이스(사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템)가 달라 적용하는데 학습이 필요합니다.

하드웨어에 의존적인 소프트웨어적 성격때문에 로봇이 달라지면 소프트웨어 또한 수정이 필요하고 소프트웨어를 작성하는데 하드웨어에 대한 지식이 필요합니다.

그리고 OS에 의존적이어서 쉽게 변경하지 못하거나 아예 불가능해 개발에 많은 불편함이 있습니다.


이렇게 기존에 있던 로봇 개발 방식은 많은 시간을 소모하고 비용이 많이 들어 매우 비효율적인 방식이었습니다.




로봇 소프트웨어 플랫폼의 등장으로 생긴 변화


이런 비효율적인 방식으로 개발하던 중 소프트웨어 플랫폼의 필요성이 대두되었고, 아래와 같은 특징을 가진 소프트웨어 플랫폼을 로봇 산업에 적용시키면서 여러가지 장점이 생겼습니다.


하드웨어 인터페이스를 통합하여 개발하는데 비용은 줄어들고 성능은 업그레이드되는 효율적인 시스템 구축합니다.
하드웨어, 미들웨어, 소프트웨어로 분리하였으며 사용자 수요에 맞는 서비스에 집중하여 사용자가 증가하면 피드백을 반영하고 개선하여 또다시 사용자가 증가하는 생태계를 구축합니다.



ROS 장점

가격이 무료이기 때문에 사용자가 많아 커뮤니티가 활성화되고 오픈소스와 기존 프로그램을 ROS에 사용하기 쉽습니다.


ROS 단점

상당한 크기의 메모리가 사용되며 네트워크에 의존성이 높습니다. 또한 실시간성이 보장되지 않으며 PC의 높은 연산 능력을 요구하는 점 등이 있습니다.




ROS의 특징


몇가지 특징에 대해 소개하자면


먼저, 첫 번째 특징은 분산 프로세스입니다.

최소 단위의 실행 가능한 프로세스 형태로 프로그램을 하며 각 프로세스는 독립적으로 실행하면서 유기적으로 데이터를 주고 받습니다.


두 번째 특징은 패키지 단위로 관리한다는 점인데요.

같은 목적을 갖는 복수 개의 프로세스를 패키지 단위로 관리하여 개발은 물론 사용할 때도 공유가 편하고 수정 후에도 재배포도 쉬운 특징을 가지고 있습니다.


세 번째 특징은 API 형태로 이루어져 있는데요.

ROS를 기반으로 프로그램을 개발할 때 API를 불러와 자신이 사용하던 코드에 쉽게 삽입하여 사용할 수 있도록 설계되었기 때문에 파이썬이나 C언어와 같이 누구나 쉽게 사용할 수 있습니다.


마지막 특징은 복수의 프로그래밍 언어를 지원한다는 점입니다.

ROS 프로그램은 파이썬이나 C언어, 자바 등의 프로그래밍 언어를 사용할 수 있는 '클라이언트 라이브러리'를 제공하여 다양한 언어를 지원합니다.



ROS의 구성


ROS의 구성에 대해 몇가지 소개하겠습니다.


  • 클라이언트 라이브러리 : 다양한 프로그래밍 언어를 지원합니다.


  • 하드웨어 인터페이스 : 하드웨어를 제어합니다.


  • 커뮤니케이션 : 데이터를 통신합니다.


  • 로보틱스 어플리케이션 프레임워크 : 다양한 로보틱스 응용프로그램의 작성을 도와줍니다.


  • 로보틱스 어플리케이션 : 어플리케이션 프레임워크를 기반으로 하는 서비스용 응용프로그램입니다.


  • 시뮬레이션 : 가상의 공간에서 로봇을 제어해 볼 수 있습니다.


  • 소프트웨어 개발 툴 : 소프트 웨어를 개발하기 위한 도구입니다.



______________________________________________________________________________________________________________________________

이렇게 ROS에 대해 정리보았는데요!

다음 게시물에서는 앞서 언급한것처럼 ROS를 기반으로 하는 로봇 제작 업체에 대해 소개해보겠습니다~!

읽어주셔서 감사합니다. :)


+ 본 포스팅은 데이콘 서포터즈 “데이크루" 1기 활동의 일환입니다.



[참고]

https://durian9s-coding-tree.tistory.com/157

https://jehyeon-lab.tistory.com/5