일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- RTOS
- 아트웍
- bldc
- 임베디드시스템
- IoT
- 모두의연구소
- TI
- Embedded System
- Developer
- Programming
- St
- m4
- easyeda
- 초보개발자
- MAC OS
- EMBEDDED
- TM4C123
- terminal
- 8051
- 7 세그먼트
- TM4C123GXL
- JLCPCB
- GPIO
- 임베디드
- 마이컴
- 전자공학
- Arm
- CCS
- mcu
- PCB
- Today
- Total
Engineering Agit
[ROS Study 01] - Introduction 본문
◈ 여는 글
본 카테고리는 ROS 공부를 다룬다. 직접 로봇을 구축하지는 않고 ROS라는 툴을 C++로 개발하는 과정을 공부해볼 예정이다.
1. ROS
1-1. 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
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
- Videos
www.youtube.com/c/JustinHuang101/featured
- Books
book.naver.com/bookdb/book_detail.nhn?bid=12443870
※ 추가되는 자료들은 각각의 게시물의 ref로 기재될 것이다.
▣ 추후예정
- Macbook에서 가상머신 설치 이후에 환경설정