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

Preview:

Citation preview

로봇 운영체제 ROS 개론

2016. 04. 06

Yoonseok Pyo

Open Source Team

1

Index

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

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

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

2

Index

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

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

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

3

이 두 가지의 공통점은?

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

Personal Computer Smartphone

5

누구나

하나쯤은 보유하고 있는

대중화 제품

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

Personal Computer Smartphone

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

운영 체제 (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

9

10

로봇 개발

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

단독적인 하드웨어 구성

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

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

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

12

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

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

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

13

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

하드웨어 인터페이스 통합

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

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

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

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

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

14

iOS 8

Photographed by Daniel Case, GNU Free Documentation License

Platform ?

플랫폼?

15

플랫폼?

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

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

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

16Photographed by Daniel Case, GNU Free Documentation License

Platform ?

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

17

주요 로봇 운영체제

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

주요 로봇 운영체제

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

20

21

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

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

22

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

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

23

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

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

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

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

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

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

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

24

Index

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

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

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

25

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

소프트웨어 프레임워크

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

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

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

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

로보틱스 생태계 생성!

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

ROS의 진정한 목적

28

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

http://imgfave.com/

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

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

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

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

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

30

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

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

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

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

31

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

32

iOS

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

메타 운영체제

이 기종간의 통신 지원

33

iOS

이 기종간의 통신 지원

34

iOS

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

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

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

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

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

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

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

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

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

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

36

ROS 생태계

37

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

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

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

컴퓨터 → 스마트폰 → 로봇

ROS 생태계

38

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

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

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

컴퓨터 → 스마트폰 → 로봇

ROS 생태계

39

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

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

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

컴퓨터 → 스마트폰 → 로봇

현재의 ROS 생태계

40

APP

ROS

ROBOT, SENSOR

개발자, 유저

로봇, 센서 회사

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

개발자, 유저

로봇, 센서 회사

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

개발자, 유저

로봇, 센서 회사

현재의 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

개발자, 유저

로봇, 센서 회사

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

?

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

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

http://wiki.ros.org/Distributions

Various Distributions

47

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

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

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/

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

ROS 설치 방법

52

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

$ sh ros_indigo_install.sh

ROS 설치 방법

53https://mirror.enha.kr/

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

$ sh ros_indigo_install.sh

ROS 동작 테스트

• turtlesim 패키지

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

rosrun rqt_graph rqt_graph

54

Index

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

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

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

55

ROS 용어

Node

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

Package

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

Message

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

56

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 에 대해

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

ROS 용어

58

Service, Service server, Service client

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

서버 클라이언트

서비스 응답

서버 클라이언트

서비스 요청

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

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

59

ROS 개념 정리

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

60

마스터

노드1 노드2

노드 정보노드 정보

접속 정보

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

마스터

XMLRPC: 서버http://ROS_MASTER_URI:11311

노드 정보 관리

ROS 개념 정리

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

$ roscore

61

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

정보 구독

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

정보 발행

서브크스라이버노드 정보

ROS 개념 정리

4. 퍼블리셔 정보 알림

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

64

마스터

노드1 노드2

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

XMLRPC: 서버

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

정보 구독

퍼블리셔노드 정보

서브크스라이버노드 정보

ROS 개념 정리

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

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

65

마스터

노드1 노드2

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

정보 구독

TCPROS 접속 요청

XMLRPC: 서버http://ROS_HOSTNAME:5678

정보 발행

ROS 개념 정리

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

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

66

마스터

노드1 노드2

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

정보 구독

TCPROS 접속 응답

XMLRPC: 서버http://ROS_HOSTNAME:5678

정보 발행

(http://ROS_HOSTNAME:3456)

ROS 개념 정리

7. TCP 접속

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

67

마스터

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

정보 구독

TCPROS 접속TCPROS: 서버

ROS_HOSTNAME:3456정보 발행

ROS 개념 정리

8. 메시지 전송

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

68

마스터

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

정보 구독

TCPROS: 서버ROS_HOSTNAME:3456

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

ROS 개념 정리

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

69

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

정보 구독

TCPROS: 서버ROS_HOSTNAME:3456

정보 발행

메시지 전송(토픽)

ROS 개념 정리

9. 서비스 요청 및 응답

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

70

마스터

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

서비스 요청

TCPROS: 서버ROS_HOSTNAME:3456

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

ROS 개념 정리

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

71

노드1 노드2

TCPROS : 클라이언트ROS_HOSTNAME:7890

서비스 요청

TCPROS: 서버ROS_HOSTNAME:3456

서비스 응답

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

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

ROS 개념 정리

• turtlesim 패키지

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

rosrun rqt_graph rqt_graph

72

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노드 정보 관리

← ↑↓ →

①②

Index

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

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

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

74

Index

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

II. 로봇 운영체제 ROS 소개

III. 로봇 운영체제 ROS 개념

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

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

75

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

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

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

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

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

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

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

76

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

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

로봇 기하학 라이브러리

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

로봇 기술 언어

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

진단 시스템

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

포즈 추정

위치 추정

지도 제작

내비게이션

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

77

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

로봇 개발의 효율성 향상

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

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

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

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

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

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

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

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

RViz?

• ROS의 3D 시각화툴

• 센서 데이터의 시각화

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

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

• 카메라의 영상 데이터

• IMU 센서의 관성 데이터

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

• URDF(Unified Robot Description Format)

• 내비게이션

• 매니퓰레이션

• 원격 제어

80https://youtu.be/OqOkpZBOpxY

81https://youtu.be/qtoAJ1wzB6s

82https://youtu.be/6afrMnEmXFI

83https://youtu.be/j5v5fKppcQo

84https://youtu.be/Jf4kgPEzY4s

85https://youtu.be/ath8uNv9c_Q

86https://youtu.be/9lbuLAD1c_4

87https://youtu.be/xCRsszVAP1E

88https://youtu.be/5rMv3ZDyFwQ

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

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

데이터 시각화가 간단!

90

ROS 활용의 예

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

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

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

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

ROS 활용의 예

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

ROS 활용의 예

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

93

ROS 활용의 예

센서 정보 취득

센서 정보 시각화

94

ROS 활용의 예

로봇 모션 플래닝

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

95

질문대환영!

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

인세 전액 기부

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

여기서! 광고 둘 나가요~

• 오로카• www.oroca.org

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

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

• www.facebook.com/groups/KoreanRobotics

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

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

Yoonseok Pyopyo@robotis.comwww.robotpilot.net

표윤석

www.facebook.com/yoonseok.pyo

또~ 봬요!*^^*

끝.

Thanks for your attention!

표윤석

100

Yoonseok Pyopyo@robotis.comwww.robotpilot.net

표윤석

www.facebook.com/yoonseok.pyo