Engineering Agit

[ROS Study 01] - Introduction 본문

Personal Study/ROS

[ROS Study 01] - Introduction

Sean_Kim95 2020. 12. 9. 16:19

◈ 여는 글

 본 카테고리는 ROS 공부를 다룬다. 직접 로봇을 구축하지는 않고 ROS라는 툴을 C++로 개발하는 과정을 공부해볼 예정이다.


1. ROS

1-1. ROS란?

<Fig. 1> Ubuntu 20.04를 위한 13번째 버전 ROS 

 ROS는 'Robotic Operating System'의 약자이다. 기본적인 특징은 다음과 같다.

  • 로봇을 프로그래밍하기 위한 software framework.
  • Stanford AI research에서 시작되었고, 'Willow Garage'사에서 2007년부터 본격적으로 개발되기 시작했음.
  • 현재는 'Open Source Robotic Foundation'에서 관리.
  • Infrastrucure(Multi-processing, networking등을 하는 것이 이미 library로 제공되므로 직접 개발할 필요가 없음), Tools(개발하는 데에 필요한 툴등을 제공; eg) Visualizing tool), Capabilities(robotic system에 필요한 기본적인 것들이 제공되므로 이를 개발자는 이용만 하면 됨), 그리고 Ecosystem(Open source이므로 정보교류를 위한 community들이 있으며 이 곳에서 쉽게 교류할 수 있음)으로 구성됨.

 ROS는 현재 우리가 익히 알고 있는 IOS, 안드로이드 OS를 통해 그 필요성을 보다 쉽게 이해할 수 있다. 스마트 폰의 경우에 기본적으로 목적성을 지니는 임베디드 시스템이므로 이에 사용되는 프로그램을 직접 low-level에서 개발하기란 매우 어렵고 공부해야할 분량이 많다. End user가 사용하기 위한 application을 개발이 OS 없이 이루어진다면 현재와 같이 스마트 폰의 기능을 십분 활용하는 앱을 만나기 힘들었을 수도 있다.

 ROS의 취지도 비슷하다. 우리의 생활에 스며들기 시작한 다양한 종류의 로봇에 적용되는 다양한 분야의 어플리케이션을 개발하고 적용하기 위해서는 로봇 또한 로봇을 위한 OS가 필요하다. 이 OS는 로봇을 위한 application을 개발할 때 필요한 hardware abstraction, low-level device contol, sensing, recognition, SLAM, nevigation 등의 기능 구현 및 message transmitting, package management, 개발환경에 필요한 library와 다양한 개발 및 debugging tool을 제공한다.

ko.wikipedia.org/wiki/%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4_%EC%B6%94%EC%83%81%ED%99%94

 

하드웨어 추상화 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기

ko.wikipedia.org

 ROS는 특히 meta OS라고 불리는데 이는 일반적인 OS인 Window, Linux, Mac OS등의 위에서 동작하는 framework이기 때문이다. 


1-2. Pros & Cons

Pros Cons
수많은 infrastructure, tool 그리고 capability들을 제공한다. 각각의 버전마다 차이가 많이 나는 것은 아니지만, 변화하고 있다는 것이 단점이 될 수 있다(호환이 안될 수도 있음).
다른 사람들의 작업을 쉽게 시도해볼 수 있고, 개인적인 작업물을 쉽게 공유할 수 있다. Security나 scalability가 최우선이 되지 않는다.
-> 미리 만들어진 것을 이용하므로 만약에 이것들을 최우선시하는 system의 경우에는 ROS를 적용하는 것이 회의적일 수 있다.
Community가 매우 크게 형성되어 있다. Linux Ubuntu 이외에는 설치하는 방법 조차 찾기 어려운 경우가 많고 지원이 잘 이루어지지 않는다.
Free, opensource, BSD(Berkeley Software Distribution) license
-> 해당 저작권자의 이름을 같이 배포하면, 수정 및 배포에 제약을 받지 않는다.
 

 따라서 Open-source 그리고 researcher들에게는 매우 좋지만, 'mission critical task'들을 처리하는 상황에서는 좋지 않다는 것을 생각할 수 있다.


2. References

  • ROS Wiki

wiki.ros.org/

 

Documentation - ROS Wiki

ROS (Robot Operating System) provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. ROS is licensed under

wiki.ros.org

  • Videos

www.youtube.com/c/JustinHuang101/featured

 

Justin Huang

PhD student in robotics at the University of Washington in Seattle, Washington. I hope to show cool projects I've been working on and help other people learn...

www.youtube.com

  • Books

book.naver.com/bookdb/book_detail.nhn?bid=12443870

 

ROS 로봇 프로그래밍

기초 개념부터 프로그래밍 학습, 실제 로봇에 적용까지!이 책은 로봇 프로그래밍에 입문하는 사람을 위해 로봇 운영체제의 핵심과 ROS에서 반드시 알아야 할 주요 개념부터 시작합니다. 초보자

book.naver.com

 

※ 추가되는 자료들은 각각의 게시물의 ref로 기재될 것이다.


▣ 추후예정

- Macbook에서 가상머신 설치 이후에 환경설정

Comments