100
로봇 운영체제 ROS 개론 2016. 04. 06 Yoonseok Pyo Open Source Team 1

20160406 ROS 1차 강의 (for 아스라다 팀)

Embed Size (px)

Citation preview

Page 1: 20160406 ROS 1차 강의 (for 아스라다 팀)

로봇 운영체제 ROS 개론

2016. 04. 06

Yoonseok Pyo

Open Source Team

1

Page 2: 20160406 ROS 1차 강의 (for 아스라다 팀)

Index

I. 로봇 소프트웨어 플랫폼의 필요성

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

IV. 로봇 운영체제 ROS 특징과 활용

2

Page 3: 20160406 ROS 1차 강의 (for 아스라다 팀)

Index

I. 로봇 소프트웨어 플랫폼의 필요성

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

IV. 로봇 운영체제 ROS 특징과 활용

3

Page 4: 20160406 ROS 1차 강의 (for 아스라다 팀)

이 두 가지의 공통점은?

4http://www.rosewill.com/, http://www.samsung.com/global/business/mobile/product/smartphone

Personal Computer Smartphone

Page 5: 20160406 ROS 1차 강의 (for 아스라다 팀)

5

누구나

하나쯤은 보유하고 있는

대중화 제품

Page 6: 20160406 ROS 1차 강의 (for 아스라다 팀)

http://www.techpowerup.com/, http://global.samsungtomorrow.com/

Personal Computer Smartphone

다양한 하드웨어의 결합이 가능한 하드웨어 모듈

Page 7: 20160406 ROS 1차 강의 (for 아스라다 팀)

운영 체제 (Operating System) + 애플리케이션(App)

7

Personal Computer Smartphone

http://en.wikipedia.org/wiki/Linux, https://www.apple.com/, http://windows.microsoft.com/, The icons are trade mark of each company

iOS 8

Page 8: 20160406 ROS 1차 강의 (for 아스라다 팀)
Page 9: 20160406 ROS 1차 강의 (for 아스라다 팀)

9

Page 10: 20160406 ROS 1차 강의 (for 아스라다 팀)

10

Page 11: 20160406 ROS 1차 강의 (for 아스라다 팀)

로봇 개발

로봇 개발자는 만능? 혼자 다~ 만들려고 해 ㅡㅡ;

단독적인 하드웨어 구성

만들고 자기만 쓰는 경우도 OTL...

하드웨어 레벨에서 바로 서비스 애플리케이션을 구현

11Iron Man (2008 film) - WikipediaAre you actually a genius?

Page 12: 20160406 ROS 1차 강의 (for 아스라다 팀)

12

Page 13: 20160406 ROS 1차 강의 (for 아스라다 팀)

[1983년 최초 상용 핸드폰(?) 모토로라 DynaTAC 8000 와 개발자 Martin Cooper, 점점 발전하는 휴대전화]

http://blog.cartoys.com/date/2013/04/, https://line.do/the-evolution-of-cell-phones/r5q4ui/vertical

소프트웨어 플랫폼이 가져온 변화

13

Page 14: 20160406 ROS 1차 강의 (for 아스라다 팀)

소프트웨어 플랫폼이 가져온 변화

하드웨어 인터페이스 통합

하드웨어 추상화 ・ 규격화 ・ 모듈화

가격 ↓, 성능 ↑, 가성비 발군

하드웨어 ・ 운영체제 ・ 애플리케이션 분리

사용자 수요에 맞는 서비스에 집중!

구매와 피드백, 새로운 생태계의 선환 구조 형성

14

iOS 8

Page 15: 20160406 ROS 1차 강의 (for 아스라다 팀)

Photographed by Daniel Case, GNU Free Documentation License

Platform ?

플랫폼?

15

Page 16: 20160406 ROS 1차 강의 (for 아스라다 팀)

플랫폼?

• 플랫폼• 하드웨어 플랫폼 및 소프트웨어 플랫폼을 통칭하는 용어. (로봇 진영에서는 로봇 플랫폼이라 한다.)

• 하드웨어 플랫폼• 하드웨어 아키텍처를 포함하며 정해진 목적에 맞도록 하드웨어를 구성한 것. 또한, 하드웨어플랫폼은 상단의 응용 프로그램을 위하여 소프트웨어 플랫폼과 결합하기 위한 인터페이스를갖추고 있다.

• 소프트웨어 플랫폼• 하드웨어 플랫폼에서 정해진 목적의 응용 프로그램을 구동하기 위한 운영체제(OS), 소프트웨어 프레임워크를 포함하는 것.

16Photographed by Daniel Case, GNU Free Documentation License

Platform ?

Page 17: 20160406 ROS 1차 강의 (for 아스라다 팀)

로봇 운영체제의 춘추전국시대!!!

17

Page 18: 20160406 ROS 1차 강의 (for 아스라다 팀)

주요 로봇 운영체제

18http:// ros.org kr.forwallpaper.com http://www.softbank.jp/en/corp/group/sbr/ http://www.opros.or.kr/ http://www.openrtm.org/ http://schools-wikipedia.org/

Galapagos

Closed sourceOpen source

Page 19: 20160406 ROS 1차 강의 (for 아스라다 팀)

주요 로봇 운영체제

19http:// ros.org kr.forwallpaper.com http://www.softbank.jp/en/corp/group/sbr/ http://www.opros.or.kr/ http://www.openrtm.org/ http://schools-wikipedia.org/

Galapagos

Closed sourceOpen source

Page 20: 20160406 ROS 1차 강의 (for 아스라다 팀)

20

Page 21: 20160406 ROS 1차 강의 (for 아스라다 팀)

21

Page 22: 20160406 ROS 1차 강의 (for 아스라다 팀)

http://www.greaterlasvegashomes.com/files/2014/09/soccer-stadium-.jpg

운동장 만들기 소모전은 이제 그만!

22

Page 23: 20160406 ROS 1차 강의 (for 아스라다 팀)

http://www.wallpaper505.com/the-best-world-football-players-2014-2015-best-desktop-wallpaper.html

운동장 만들기 소모전은 이제 그만! 멋진 선수를 꿈꾸자!

23

Page 24: 20160406 ROS 1차 강의 (for 아스라다 팀)

로봇 소프트웨어 플랫폼이 가져올 미래 하드웨어 플랫폼과의 소프트웨어 플랫폼간의 인터페이스 확립

모듈형 하드웨어 플랫폼 확산

하드웨어에 대한 지식이 없어도 응용 프로그램 작성 가능 (있다면 더 좋고 )

더 많은 소프트웨어 인력들이 로보틱스 분야로 진입, 로봇 제품에 참여 가능

유저에게 제공할 서비스에 집중

서비스 제공으로 유저계층 형성 및 피드백

로봇 개발이 급속도로 발전 할 수 있는 계기

24

Page 25: 20160406 ROS 1차 강의 (for 아스라다 팀)

Index

I. 로봇 소프트웨어 플랫폼의 필요성

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

IV. 로봇 운영체제 ROS 특징과 활용

25

Page 26: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS is an open-source, meta-operating system for

your robot. It provides the services you would expect

from an operating system, including hardware abstr

action, low-level device control, implementation of c

ommonly-used functionality, message-passing betw

een processes, and package management. It also pr

ovides tools and libraries for obtaining, building, writ

ing, and running code across multiple computers.

http://www.ros.org/wiki/

http://www.ros.org/news/

ROS 란?

26

Page 27: 20160406 ROS 1차 강의 (for 아스라다 팀)

소프트웨어 프레임워크

로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크

개발 도구, 라이브러리, 드라이버, 다양한 로봇 소프트웨어 공개 패키지 제공

하드웨어 플랫폼의 하드웨어 추상화

이 기종 하드웨어에서 사용 가능한 메시지 기능

로보틱스 생태계 생성!

27http://www.ros.org/about-ros/

Page 28: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS의 진정한 목적

28

로보틱스 소프트웨어 개발을 전세계 레벨에서공동 작업 가능하도록 환경을 구축하는 것!

http://imgfave.com/

Page 29: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS는 새로운 운영 체제(OS)인가?

범용 컴퓨터

• Windows(Windows XP, 7, 8 ...)

• Linux(Ubuntu, Redhat, Fedora, Mint, Gentoo ...)

• MAC(OS X ...) 등

스마트폰

• Android, iOS, Windows Phone, Symbian, RiMO, Tizen등

ROS = Robot Operating System

ROS는 메타운영체제(Meta-Operating System)이다.

29

Page 30: 20160406 ROS 1차 강의 (for 아스라다 팀)

메타운영체제(Meta-Operating System)

• 메타운영체제(Meta-Operating System) 딱히 정확히 정의된 용어는 아니지만, 어플리케이션과 분산 컴퓨팅 자원간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여, 스케쥴링및 로드, 감시, 에러 처리 등을 실행하는 시스템이라고 볼 수 있다.

• 즉, 윈도우, 리눅스, 안드로이드와 같은 전통적인 운영체제는 아니다. 오히려, ROS는 기존의 전통적인 운영체제(리눅스, 윈도우즈, OS-X, 안드로이드)를 이용하고 있다.

• 기존 운영체제의 프로세스 관리 시스템, 파일 시스템, 유저 인터페이스, 프로그램 유틸(컴파일러, 스레드 모델 등)등을 사용하고 있다. 이에 추가적으로 다수의 이기종 하드웨어간의 데이터 송수신, 스케쥴링, 에러 처리 등 로봇 응용 소프트웨어를 위한 필수 기능들을 라이브러리 형태로 제공하고 있다. 또한, 이러한 기반 로봇 소프트웨어 프레임워크를 기반으로 다양한 목적의 응용 프로그램을 개발, 관리, 제공하고 있으며 유저들이개발한 패키지 또한 유통하는 생태계(ecosystem)를 갖추고 있다.

30

Page 31: 20160406 ROS 1차 강의 (for 아스라다 팀)

메타운영체제(Meta-Operating System)

• 메타운영체제(Meta-Operating System) 딱히 정확히 정의된 용어는 아니지만, 어플리케이션과 분산 컴퓨팅 자원간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여, 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템이라고 볼 수 있다.

• 즉, 윈도우, 리눅스, 안드로이드와 같은 전통적인 운영체제는 아니다. 오히려, ROS는 기존의 전통적인 운영체제(리눅스, 윈도우즈, OS-X, 안드로이드)를 이용하고 있다.

• 기존 운영체제의 프로세스 관리 시스템, 파일 시스템, 유저 인터페이스, 프로그램 유틸(컴파일러, 스레드 모델 등)등을 사용하고 있다. 이에 추가적으로 다수의 이기종 하드웨어간의 데이터 송수신, 스케쥴링, 에러 처리 등 로봇 응용 소프트웨어를 위한 필수 기능들을 라이브러리 형태로 제공하고 있다. 또한, 이러한 기반 로봇 소프트웨어 프레임워크를 기반으로 다양한 목적의 응용 프로그램을 개발, 관리, 제공하고 있으며 유저들이개발한 패키지 또한 유통하는 생태계(ecosystem)를 갖추고 있다.

31

Page 32: 20160406 ROS 1차 강의 (for 아스라다 팀)

메타운영체제(Meta-Operating System)

32

iOS

디바이스 드라이버, 라이브러리, 디버그 도구, 메시지 통신구동 도구, 컴파일 도구, 인스톨러, 패키지 생성 및 릴리즈

메타 운영체제

Page 33: 20160406 ROS 1차 강의 (for 아스라다 팀)

이 기종간의 통신 지원

33

iOS

Page 34: 20160406 ROS 1차 강의 (for 아스라다 팀)

이 기종간의 통신 지원

34

iOS

Page 35: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS를 사용 가능한 운영체제

기존 전통적인 운영체제

ROS를 사용 가능한 운영체제(OS)로는 Ubuntu, OS X, Windows, Fedora,Gentoo, OpenSUSE, Debian, Raspbian, Arch, QNX Realtime OS 등이 있으나기능 제한사항이 있을 수 있다.

스마트폰 운영체제인 Android, iOS 의 경우, 부분적 사용 가능

OS를 탑재할 수 없는 마이크로 컨트롤러 유닛(MCU)의 경우, 시리얼 통신, 블루투스, LAN 경유로 통신할 수 있는 라이브러리 제공

기본적으로는 Ubuntu, OS X 에서 구동하는 것을 추천!

35

Page 36: 20160406 ROS 1차 강의 (for 아스라다 팀)

로봇계의 생태계(ecosystem)를 만들자!

생태계(ecosystem) 스마트폰을 생산하는 하드웨어 회사와 애플리케이션 소프트웨어(앱, APP) 개발자, 이를 사용

하는 유저 를 연결해주는 선환 구조를 말한다.

1) 스마트폰 제조 회사들이 단말기 기기를 생산

2) 사용할 운영체제의 인터페이스에 맞춤

3) 각 OS 개발 회사들은 이를 라이브러리화시켜 제공

4) 스마트폰에 대한 하드웨어 지식이 없어도 손쉽게 개발작업이 가능

5) 유저가 사용하기 쉽도록 관리,&유통 그리고 피드백으로 선순환

ROS는 로보틱스 생태계(ecosystem)를 준비 중이다!

36

Page 37: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 생태계

37

로봇 분야도 마찬가지 흐름으로 가고 있다. 처음에는 여러 시도로 각종 하드웨어 기술들이 넘쳐흘렀으나, 이를 통합해줄 OS가 전무했다.이 상황에서 다양한 소프트웨어 플랫폼이 등장했고, 가장 주목 받은ROS의 경우 이제 그 생태계의 틀을 갖추기 시작했다.

아직, 그 여파는 미미하지만 점점 늘고 있고 있는 유저들과 회사들 그리고 급격히 늘고 있는 관련 툴 및 라이브러리를 볼 때 멀지 않아 생태계가 완만히 돌아갈 것이라고 기대해본다.

그리고, 로봇회사 및 센서회사와 같은 로봇 관련 하드웨어 개발자 /ROS 개발 운용 팀 / 응용 소프트웨어 개발자 / 유저 모두가 웃을 수 있는 생태계가 되길 바란다.

컴퓨터 → 스마트폰 → 로봇

Page 38: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 생태계

38

로봇 분야도 마찬가지 흐름으로 가고 있다. 처음에는 여러 시도로 각종 하드웨어 기술들이 넘쳐흘렀으나, 이를 통합해줄 OS가 전무했다.이 상황에서 다양한 소프트웨어 플랫폼이 등장했고, 가장 주목 받은ROS의 경우 이제 그 생태계의 틀을 갖추기 시작했다.

아직, 그 여파는 미미하지만 점점 늘고 있고 있는 유저들과 회사들 그리고 급격히 늘고 있는 관련 툴 및 라이브러리를 볼 때 멀지 않아 생태계가 완만히 돌아갈 것이라고 기대해본다.

그리고, 로봇회사 및 센서회사와 같은 로봇 관련 하드웨어 개발자 /ROS 개발 운용 팀 / 응용 소프트웨어 개발자 / 유저 모두가 웃을 수 있는 생태계가 되길 바란다.

컴퓨터 → 스마트폰 → 로봇

Page 39: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 생태계

39

로봇 분야도 마찬가지 흐름으로 가고 있다. 처음에는 여러 시도로 각종 하드웨어 기술들이 넘쳐흘렀으나, 이를 통합해줄 OS가 전무했다.이 상황에서 다양한 소프트웨어 플랫폼이 등장했고, 가장 주목 받은ROS의 경우 이제 그 생태계의 틀을 갖추기 시작했다.

아직, 그 여파는 미미하지만 점점 늘고 있고 있는 유저들과 회사들 그리고 급격히 늘고 있는 관련 툴 및 라이브러리를 볼 때 멀지 않아 생태계가 완만히 돌아갈 것이라고 기대해본다.

그리고, 로봇회사 및 센서회사와 같은 로봇 관련 하드웨어 개발자 /ROS 개발 운용 팀 / 응용 소프트웨어 개발자 / 유저 모두가 웃을 수 있는 생태계가 되길 바란다.

컴퓨터 → 스마트폰 → 로봇

Page 40: 20160406 ROS 1차 강의 (for 아스라다 팀)

현재의 ROS 생태계

40

APP

ROS

ROBOT, SENSOR

개발자, 유저

로봇, 센서 회사

Page 41: 20160406 ROS 1차 강의 (for 아스라다 팀)

5,000이상의 패키지

2,188개의 공식 패키지 제공 (July 2015)

71,663 다운로드 (Unique IP, July 2015)

16,043 Wiki페이지 (July 2015)

애플리케이션 fetch beer, elevator …

시뮬레이터gazebo, player/stage, STDR Simulator …

지능모듈 navigation, action, grasping …

라이브러리 tf, PCL, OpenCV, OpenRave …

디바이스드라이버 camera_drivers, urg_node …

디버그 툴 rviz, rqt_graph, rosbag, rostopic …

메시지통신 rosmaster, rosmsg, rosservice …

실행 툴 rosrun, roslaunch …

컴파일 툴 catkin_make, rosbuild …

파일시스템 roscd, rosls …

설치 툴 rosinstall …

프로그래밍언어 C++, Python, Lisp, Java, Ruby, MATLAB등

90종류 이상의 로봇, 80종류 이상의 센서 지원

현재의 ROS 생태계

41

APP

ROS

ROBOT, SENSOR

개발자, 유저

로봇, 센서 회사

Page 42: 20160406 ROS 1차 강의 (for 아스라다 팀)

5,000이상의 패키지

2,188개의 공식 패키지 제공 (July 2015)

71,663 다운로드 (Unique IP, July 2015)

16,043 Wiki페이지 (July 2015)

애플리케이션 fetch beer, elevator …

시뮬레이터 gazebo, player/stage, STDR Simulator …

지능모듈 navigation, action, grasping …

라이브러리 tf, PCL, OpenCV, OpenRave …

디바이스드라이버 camera_drivers, urg_node …

디버그 툴 rviz, rqt_graph, rosbag, rostopic …

메시지통신 rosmaster, rosmsg, rosservice …

실행 툴 rosrun, roslaunch …

컴파일 툴 catkin_make, rosbuild …

파일시스템 roscd, rosls …

설치 툴 rosinstall …

프로그래밍언어 C++, Python, Lisp, Java, Ruby, MATLAB등

90종류 이상의 로봇, 80종류 이상의 센서 지원

현재의 ROS 생태계

42

APP

ROS

ROBOT, SENSOR

개발자, 유저

로봇, 센서 회사

Page 43: 20160406 ROS 1차 강의 (for 아스라다 팀)

현재의 ROS 생태계

43

5,000이상의 패키지

2,188개의 공식 패키지 제공 (July 2015)

71,663 다운로드 (Unique IP, July 2015)

16,043 Wiki페이지 (July 2015)

애플리케이션 fetch beer, elevator …

시뮬레이터 gazebo, player/stage, STDR Simulator …

지능모듈 navigation, action, grasping …

라이브러리 tf, PCL, OpenCV, OpenRave …

디바이스드라이버 camera_drivers, urg_node …

디버그 툴 rviz, rqt_graph, rosbag, rostopic …

메시지통신 rosmaster, rosmsg, rosservice …

실행 툴 rosrun, roslaunch …

컴파일 툴 catkin_make, rosbuild …

파일시스템 roscd, rosls …

설치 툴 rosinstall …

프로그래밍언어 C++, Python, Lisp, Java, Ruby, MATLAB등

90종류 이상의 로봇, 80종류 이상의 센서 지원

APP

ROS

ROBOT, SENSOR

개발자, 유저

로봇, 센서 회사

Page 44: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 역사• 2017.05.xx - ROS 2.0 릴리즈 예정

• 2016.05.xx - Kinetic Kame 릴리즈 예정

• 2015.10.03 - ROSCon2015 컨퍼런스 개최

• 2015.05.23 - Jade Turtle 릴리즈

• 2014.09.12 - ROSCon2014 컨퍼런스 개최

• 2014.07.22 - Indigo Igloo 릴리즈

• 2014.06.06 - ROS Kong 2014 개최

• 2013.09.04 - Hydro Medusa 릴리즈

• 2013.05.11 - ROSCon2013 컨퍼런스 개최

• 2013.02.11 - Open Source Robotics Foundation 가 개발, 관리를 맡음

• 2012.12.31 - Groovy Galapagos 릴리즈

• 2012.05.19 - ROSCon2012 컨퍼런스 개최

• 2012.04.23 - Fuerte 릴리즈

• 2011.08.30 - Electric Emys 릴리즈

• 2011.03.02 - Diamondback 릴리즈

• 2010.08.02 - C Turtle 릴리즈

• 2010.03.02 - Box Turtle 릴리즈

• 2010.01.22 - ROS 1.0 개발

• 2007.11.01 - Willow Garage 가 “ROS”라는 이름으로 개발 시작

• 2007.05.01 - Switchyard, Morgan Quigley, Stanford AI LAB, 스탠포드 대학

• 2000 - Player/Stage Project, Brian Gerkey, Richard Vaughan, Andrew Howard, 남캘리포니아 대학

44http://wiki.ros.org/Distributions

?

Page 45: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS moves tothe Open Source Robotics Foundation (OSRF)

http://wiki.ros.org/Distributions http://wiki.ros.org/Events

ROS History

45

2008 2010 2011 2012 2013 2014 2015 20162000

2007.05.01

2007.11.01

02.11

Player/Stage Project,Brian Gerkey, Richard Vaughan, Andrew Howard

Switchyard (ROS’s prototype), Morgan Quigley,Stanford AI LAB

Personal Robotics (PR) project with ROSWillow Garage

Page 46: 20160406 ROS 1차 강의 (for 아스라다 팀)

9th ROS distributionJade Turtle release

4th ROS distributionElectric Emys release

7th ROS distributionHydro Medusa release

ROS moves tothe Open Source Robotics Foundation (OSRF)

6th ROS distributionGroovy Galapagos release

3rd ROS distributionDiamondback release

2nd ROS distributionC Turtle release

http://wiki.ros.org/Distributions http://wiki.ros.

org/Events

ROS History

46

2008 2010 2011 2012 2013 2014 2015 20162000

2007.05.01

2007.11.01

ROS 1.0 release

1st ROS distributionBox Turtle release

01.22

03.02

08.02

03.02

08.30

5th ROS distributionFuerte release

04.23

05.19

12.31

02.11

05.11

8th ROS distributionIndigo Igloo release

06.0609.04

07.22

09.12

05.23

10.03

05.xx (TBD)

10th ROS distributionKinetic Kame release

Player/Stage Project,Brian Gerkey, Richard Vaughan, Andrew Howard

Switchyard (ROS’s prototype), Morgan Quigley,Stanford AI LAB

Personal Robotics (PR) project with ROSWillow Garage

Page 47: 20160406 ROS 1차 강의 (for 아스라다 팀)

http://wiki.ros.org/Distributions

Various Distributions

47

Page 48: 20160406 ROS 1차 강의 (for 아스라다 팀)

9th ROS distributionJade Turtle release

4th ROS distributionElectric Emys release

7th ROS distributionHydro Medusa release

ROS moves tothe Open Source Robotics Foundation (OSRF)

6th ROS distributionGroovy Galapagos release

3rd ROS distributionDiamondback release

2nd ROS distributionC Turtle release

http://wiki.ros.org/Distributions http://wiki.ros.

org/Events

ROS History

48

2008 2010 2011 2012 2013 2014 2015 20162000

2007.05.01

2007.11.01

ROS 1.0 release

1st ROS distributionBox Turtle release

01.22

03.02

08.02

03.02

08.30

5th ROS distributionFuerte release

04.23

05.19

12.31

02.11

05.11

8th ROS distributionIndigo Igloo release

06.0609.04

07.22

09.12

05.23

10.03

05.xx (TBD)

10th ROS distributionKinetic Kame release

Player/Stage Project,Brian Gerkey, Richard Vaughan, Andrew Howard

Switchyard (ROS’s prototype), Morgan Quigley,Stanford AI LAB

Personal Robotics (PR) project with ROSWillow Garage

Page 49: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROSCon2014

9th ROS distributionJade Turtle release

4th ROS distributionElectric Emys release

7th ROS distributionHydro Medusa release

ROS moves tothe Open Source Robotics Foundation (OSRF)

6th ROS distributionGroovy Galapagos release

3rd ROS distributionDiamondback release

2nd ROS distributionC Turtle release

http://wiki.ros.org/Distributions http://wiki.ros.

org/Events

ROS History

49

2008 2010 2011 2012 2013 2014 2015 20162000

2007.05.01

2007.11.01

ROS 1.0 release

1st ROS distributionBox Turtle release

01.22

03.02

08.02

03.02

08.30

5th ROS distributionFuerte release

04.23

ROSCon2012

05.19

12.31

02.11

ROSCon2013

05.11

ROS Kong 2014

8th ROS distributionIndigo Igloo release

06.0609.04

07.22

09.12

05.23

10.03

ROSCon2015

05.xx (TBD)

10th ROS distributionKinetic Kame release

Player/Stage Project,Brian Gerkey, Richard Vaughan, Andrew Howard

Switchyard (ROS’s prototype), Morgan Quigley,Stanford AI LAB

Personal Robotics (PR) project with ROSWillow Garage

Page 50: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS Conferences

50

Stuttgart, Germany

11-12 May 2013

St. Paul, Minnesota, USA

19-20 May 2012

Chicago, Illinois, USA

September 12-13, 2014

Hong Kong University

June 6, 2014

Hamburg, Germany

May 3-4, 2015

http://roscon.ros.org/

Page 51: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 릴리즈 스케줄과 버전 선택!• 1년에 1번 정식 버전 릴리즈될 예정!

2016.05.xx - Kinetic Kame (추천)

2015.05.23 - Jade Turtle

2014.07.22 - Indigo Igloo (추천)

2013.09.04 - Hydro Medusa

2012.12.31 - Groovy Galapagos

2012.04.23 - Fuerte Turtle

2011.08.30 - Electric Emys

2011.03.02 - Diamondback

2010.08.02 - C Turtle

2010.03.02 - Box Turtle

2010.01.22 - ROS 1.0

Jade Turtle (EOL=May, 2017)

Indigo Igloo (EOL=April, 2019)

51

Page 52: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 설치 방법

52

$ wget https://raw.githubusercontent.com/oroca/oroca-ros-pkg/master/ros_indigo_install.sh

$ sh ros_indigo_install.sh

Page 53: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 설치 방법

53https://mirror.enha.kr/

$ wget https://raw.githubusercontent.com/oroca/oroca-ros-pkg/master/ros_indigo_install.sh

$ sh ros_indigo_install.sh

Page 54: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 동작 테스트

• turtlesim 패키지

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

rosrun rqt_graph rqt_graph

54

Page 55: 20160406 ROS 1차 강의 (for 아스라다 팀)

Index

I. 로봇 소프트웨어 플랫폼의 필요성

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

IV. 로봇 운영체제 ROS 특징과 활용

55

Page 56: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 용어

Node

최소 단위의 실행 가능한 프로세서를 가리키는 용어로써 하나의 실행 가능한 프로그램으로 생각하면 된다. ROS 에서는 최소한의 실행단위로 프로그램을 나누어 작업하게 된다. 각 노드는 메시지 통신으로 데이터를 주고 받는다.

Package

하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것. 또한, 패키지의 묶음을 메타패키지라 하여 따로 분리한다.

Message

메시지를 통해 노드간의 데이터를 주고받게 된다. 메시지는 integer, floatingpoint, boolean 와 같은 변수형태이다. 또한, 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 및 메시지들의 배열과 같은 구조도 사용할 수 있다.

56

Page 57: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 용어

57

Topic, Publisher, Subscriber

http://www.dreamstime.com/illustration/people-talk-listen-tin-can-phone-communication.html

퍼블리셔 서브스크라이버

TopicPublisher Subscriber

Topic

엔코더 SLAM(위치정보 X, Y, θ)

Publisher

Subscriber

Topic

거리센서

로봇A

(장애물 X, Y)Subscriber

로봇B하나의 Topic 에 대해

복수의 퍼블리셔, 복수의 서브스크라이버도 가능함

Page 58: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 용어

58

Service, Service server, Service client

http://www.dreamstime.com/illustration/people-talk-listen-tin-can-phone-communication.html

서버 클라이언트

서비스 응답

서버 클라이언트

서비스 요청

어이~ 서버!지금 몇 시야?

지금 몇 시냐고?알아볼게~지금 12:00시야!

Page 59: 20160406 ROS 1차 강의 (for 아스라다 팀)

59

Page 60: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

• ROS에서 가장 기본이 되는 기술적 포인트: 노드간의 메시지 통신!

60

마스터

노드1 노드2

노드 정보노드 정보

접속 정보

메시지 통신(토픽, 서비스)

Page 61: 20160406 ROS 1차 강의 (for 아스라다 팀)

마스터

XMLRPC: 서버http://ROS_MASTER_URI:11311

노드 정보 관리

ROS 개념 정리

1. 마스터 구동: XMLRPC(XML-Remote Procedure Call)

$ roscore

61

Page 62: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

2. 서브스크라이버 노드(Node) 구동

$rosrun 패키지이름 노드이름

62

마스터

노드2

XMLRPC: 서버http://ROS_MASTER_URI:11311

노드 정보 관리

서브스크라이버 노드 정보:/subscriber_node_name,/topic_name,message_type,http://ROS_HOSTNAME:1234

XMLRPC: 클라이언트http://ROS_HOSTNAME:1234

정보 구독

Page 63: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

3. 퍼블리셔 노드(Node) 구동

$rosrun 패키지이름 노드이름

63

마스터

노드1 노드2

XMLRPC: 서버http://ROS_MASTER_URI:11311

노드 정보 관리

퍼블리셔 노드 정보:/publisher_node_name,/topic_name,message_type,http://ROS_HOSTNAME:5678

XMLRPC: 클라이언트http://ROS_HOSTNAME:5678

정보 발행

서브크스라이버노드 정보

Page 64: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

4. 퍼블리셔 정보 알림

마스터는 서브스크라이버 노드에게 새로운 퍼블리셔 정보를 알린다.

64

마스터

노드1 노드2

퍼블리셔 노드 정보:/publisher_node_name,/topic_name,message_type,http://ROS_HOSTNAME:5678

XMLRPC: 서버

XMLRPC: 클라이언트http://ROS_HOSTNAME:1234

정보 구독

퍼블리셔노드 정보

서브크스라이버노드 정보

Page 65: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

5. 퍼블리셔 노드에 접속 요청

마스터로부터 받은 퍼블리셔 정보를 이용하여 TCPROS 접속을 요청

65

마스터

노드1 노드2

XMLRPC: 클라이언트http://ROS_HOSTNAME:1234

정보 구독

TCPROS 접속 요청

XMLRPC: 서버http://ROS_HOSTNAME:5678

정보 발행

Page 66: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

6. 서브스크라이버 노드에 접속 응답

접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호를 전송

66

마스터

노드1 노드2

XMLRPC: 클라이언트http://ROS_HOSTNAME:1234

정보 구독

TCPROS 접속 응답

XMLRPC: 서버http://ROS_HOSTNAME:5678

정보 발행

(http://ROS_HOSTNAME:3456)

Page 67: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

7. TCP 접속

TCPROS를 이용하여 퍼블리셔 노드와 직접 연결한다.

67

마스터

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

정보 구독

TCPROS 접속TCPROS: 서버

ROS_HOSTNAME:3456정보 발행

Page 68: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

8. 메시지 전송

발행자 노드는 서브스크라이버 노드에게 메시지를 전송 (토픽)

68

마스터

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

정보 구독

TCPROS: 서버ROS_HOSTNAME:3456

정보 발행 메시지 전송(토픽)

Page 69: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

토픽방식에서는 접속을 끊지 않는 이상 지속적으로 메시지를 전송한다. 즉, 연속성.

69

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

정보 구독

TCPROS: 서버ROS_HOSTNAME:3456

정보 발행

메시지 전송(토픽)

Page 70: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

9. 서비스 요청 및 응답

1회에 한해 접속, 서비스 요청 및 서비스 응답이 수행되고 서로간의 접속을 끊는다.

70

마스터

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

서비스 요청

TCPROS: 서버ROS_HOSTNAME:3456

서비스 응답 메시지 송/수신(서비스)

Page 71: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

서비스는 토픽과 달리 1회에 한해 접속하고 서비스 요청 및 서비스 응답이 수행한 후 서로간의접속을 끊는다. 즉, 1회성이다.

71

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

서비스 요청

TCPROS: 서버ROS_HOSTNAME:3456

서비스 응답

메시지 수신(서비스 응답)

메시지 송신(서비스 요청)

Page 72: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

• turtlesim 패키지

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

rosrun rqt_graph rqt_graph

72

Page 73: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 개념 정리

• 10. 예제! turtlesim

73

roscore

http://192.168.4.100:50051turtlesim_node 노드

정보 구독

http://192.168.4.100:45704turtle_teleop_key 노드

정보 발행

메시지 전송/turtle1/cmd_vel

퍼블리셔 노드 정보:/teleop_turtle,/turtle1/cmd_vel,geomety_msgs/Twist,http://192.168.4.100:45704

퍼블리셔 노드 정보:/teleop_turtle,/turtle1/cmd_vel,geomety_msgs/Twist,http://192.168.4.100:45704

서브스크라이버 노드 정보:/turtlesim,/turtle1/cmd_vel,geomety_msgs/Twist,http://192.168.4.100:50051

마스터

http://192.168.4.100:11311노드 정보 관리

← ↑↓ →

①②

Page 74: 20160406 ROS 1차 강의 (for 아스라다 팀)

Index

I. 로봇 소프트웨어 플랫폼의 필요성

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

IV. 로봇 운영체제 ROS 특징과 활용

74

Page 75: 20160406 ROS 1차 강의 (for 아스라다 팀)

Index

I. 로봇 소프트웨어 플랫폼의 필요성

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

IV. 로봇 운영체제 ROS 특징과 활용

→ 통신 인프라 / 로봇 관련 기능 / 다양한 개발 도구

75

Page 76: 20160406 ROS 1차 강의 (for 아스라다 팀)

통신 인프라 프로세스 간 통신을 제공

통상적 미들웨어로 지칭되는 메시지 전달 인터페이스

메시지 파싱 기능• 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공• 캡슐화 및 코드 재사용을 촉진하는 노드 들간의 메시지 전달 인터페이스

메시지의 기록 및 재생• 노드간 송수신되는 데이터인 메시지를 저장하고 필요 시에 재사용 가능

• 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이함• 개발 노력을 절감, 시스템의 유연성과 모듈화를 촉진하는 강력한 디자인 패턴

원격 프로시저 호출• 프로세스 간의 동기식 요청/응답 상호 작용 가능

분산 매개 변수 시스템• 시스템에서 사용되는 변수를 글로벌 키를 작성하여 공유, 수정하여 실시간으로 반영

76

Page 77: 20160406 ROS 1차 강의 (for 아스라다 팀)

로봇 관련 기능 로봇에 대한 표준 메시지 정의

• 카메라, IMU, 레이저 등의 센서 / 오도메트리, 경로 및 지도 등의 내비게이션 데이터 등의 표준 메시지를 정의하여 모듈화, 협업 작업을 유도, 효율성 향상

로봇 기하학 라이브러리

• 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF 제공

로봇 기술 언어

• 로봇의 물리적 특성을 설명하는 XML 문서 기술

진단 시스템

• 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공

포즈 추정

위치 추정

지도 제작

내비게이션

• 로봇에서 많이 사용되는 로봇의 포즈(위치/자세) 추정, 지도내의 자기 위치 추정 및 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리를 제공

77

Page 78: 20160406 ROS 1차 강의 (for 아스라다 팀)

다양한 개발 도구 로봇 개발에 필요한 다양한 개발 도구를 제공

로봇 개발의 효율성 향상

Command-Line Tools• GUI 없이 ROS에서 제공되는 명령어로만 로봇 억세스 및 거의 모든 ROS 기능 소화

RViz• 강력한 3D 시각화툴 제공

• 레이저, 카메라 등의 센서 데이터를 시각화

• 로봇 외형과 계획된 동작을 표현

RQT• 그래픽 인터페이스 개발을 위한 Qt 기반 프레임 워크 제공

• 노드와 그들 사이의 연결 정보 표시(rqt_graph)

• 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅(rqt_plot)• 데이터를 메시지 형태로 기록하고 재생(rqt_bag)

78http://www.ros.org/core-components/

Page 79: 20160406 ROS 1차 강의 (for 아스라다 팀)

RViz?

• ROS의 3D 시각화툴

• 센서 데이터의 시각화

• 레이저 레인지 파인더(LRF)센서의 거리 데이터

• Kinect, Xtion, RealSense 등의 Depth Camera의 포인트 클라우드 데이터(Point Cloud Data)

• 카메라의 영상 데이터

• IMU 센서의 관성 데이터

• 로봇 외형의 표시와 계획된 동작을 표현

• URDF(Unified Robot Description Format)

• 내비게이션

• 매니퓰레이션

• 원격 제어

Page 80: 20160406 ROS 1차 강의 (for 아스라다 팀)

80https://youtu.be/OqOkpZBOpxY

Page 81: 20160406 ROS 1차 강의 (for 아스라다 팀)

81https://youtu.be/qtoAJ1wzB6s

Page 82: 20160406 ROS 1차 강의 (for 아스라다 팀)

82https://youtu.be/6afrMnEmXFI

Page 83: 20160406 ROS 1차 강의 (for 아스라다 팀)

83https://youtu.be/j5v5fKppcQo

Page 84: 20160406 ROS 1차 강의 (for 아스라다 팀)

84https://youtu.be/Jf4kgPEzY4s

Page 85: 20160406 ROS 1차 강의 (for 아스라다 팀)

85https://youtu.be/ath8uNv9c_Q

Page 86: 20160406 ROS 1차 강의 (for 아스라다 팀)

86https://youtu.be/9lbuLAD1c_4

Page 87: 20160406 ROS 1차 강의 (for 아스라다 팀)

87https://youtu.be/xCRsszVAP1E

Page 88: 20160406 ROS 1차 강의 (for 아스라다 팀)

88https://youtu.be/5rMv3ZDyFwQ

Page 89: 20160406 ROS 1차 강의 (for 아스라다 팀)

89https://www.youtube.com/user/DARPAtv

Page 90: 20160406 ROS 1차 강의 (for 아스라다 팀)

RViz를 이용하면센서 및 로봇 관련

데이터 시각화가 간단!

90

Page 91: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 활용의 예

OpenCV, PCL, Machine Learning, Sensing, IoT 등 로봇 이외에도 범용적으로 사용 가능한 소프트웨어 프레임워크를 가지고 있음

rosbag 는 모든 데이터에 대해서 녹음이 가능하여, 언제든지 재 실험이 가능하다.

재실험 없이 기존 데이터를 기반으로 한 알고리즘 개발에 용이

91http://www.ros.org/core-components/

Page 92: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 활용의 예

92http://www.ros.org/core-components/

Page 93: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 활용의 예

• 3차원 모델링, 시뮬레이션, 플래닝

93

Page 94: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 활용의 예

센서 정보 취득

센서 정보 시각화

94

Page 95: 20160406 ROS 1차 강의 (for 아스라다 팀)

ROS 활용의 예

로봇 모션 플래닝

실제 하드웨어를 기반으로 한 로봇 실험

95

Page 96: 20160406 ROS 1차 강의 (for 아스라다 팀)

질문대환영!

Page 97: 20160406 ROS 1차 강의 (for 아스라다 팀)

국내 유일! 최초! ROS 책비 영어권 최고의 책

인세 전액 기부

여기서! 광고 하나 나가요~

Page 98: 20160406 ROS 1차 강의 (for 아스라다 팀)

여기서! 광고 둘 나가요~

• 오로카• www.oroca.org

• 오픈 로보틱스 지향• 풀뿌리 로봇공학의 저변 활성화• 열린 강좌, 세미나, 프로젝트 진행

• 로봇공학을 위한 열린 모임 (KOS-ROBOT)

• www.facebook.com/groups/KoreanRobotics

• 로봇공학 통합 커뮤니티 지향• 일반인과 전문가가 어울러지는 한마당• 로봇공학 소식 공유• 연구자 간의 협력

혼자 하기에 답답하시다고요?커뮤니티에서 함께 해요~

Page 99: 20160406 ROS 1차 강의 (for 아스라다 팀)

Yoonseok [email protected]

표윤석

www.facebook.com/yoonseok.pyo

또~ 봬요!*^^*

끝.

Page 100: 20160406 ROS 1차 강의 (for 아스라다 팀)

Thanks for your attention!

표윤석

100

Yoonseok [email protected]

표윤석

www.facebook.com/yoonseok.pyo