168
Quad Rotor 제어 소프트웨어 www.cemware.com에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습 (주)셈웨어 기술연구소 지음

CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Quad Rotor 제어 소프트웨어

www.cemware.com에 방문하시면 소프트웨어를 제공합니다.

CEM Studio를 활용한

Quad Rotor 이해와 실습

(주)셈웨어 기술연구소 지음

Page 2: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

목차

Chapter 1 Quad Rotor ........................................................................................................................................ 4

1.1 Quad Rotor 란? .................................................................................................................................... 4

1.1.1 Quad Rotor 원리 ...................................................................................................................... 5

1.2 AR Drone ................................................................................................................................................ 8

1.2.1 스마트폰으로 AR Drone 제어 ............................................................................................ 11

Chapter 2 MS Kinect ........................................................................................................................................ 12

2.1 Kinect 란? ............................................................................................................................................ 12

2.2 Kinect 사용법 소개 ............................................................................................................................ 15

Chapter 3 제어 이론 기초 ............................................................................................................................ 18

3.1 제어 이론 ............................................................................................................................................... 18

3.1.1 제어의 정의 .............................................................................................................................. 18

3.1.2 제어 이론 용어 ........................................................................................................................ 19

3.1.3 PID 제어 ................................................................................................................................... 22

3.2 제어시스템의 예 ................................................................................................................................... 24

3.2.1 산업용 로봇 제어 시스템 ...................................................................................................... 24

3.2.2 자동차 능동현가장치 .............................................................................................................. 25

3.2.3 비행기 유도제어시스템 .......................................................................................................... 26

Chapter 4 영상 신호처리 기초 .................................................................................................................... 28

4.1 영상신호 ................................................................................................................................................. 28

4.1.1 영상 신호의 종류 .................................................................................................................... 28

4.1.2 영상 신호의 특성 .................................................................................................................... 31

4.1.3 영상 신호처리의 응용 범위 .................................................................................................. 32

4.2 영상 신호처리의 기초 ......................................................................................................................... 36

4.2.1 영상 신호처리 과정 ................................................................................................................ 36

4.2.2 영상 신호처리의 기본 방법 .................................................................................................. 38

Chapter 5 CEM Studio 소개 .......................................................................................................................... 42

5.1 CEM Studio 란? ................................................................................................................................ 42

5.1.1 그래픽 사용자 인터페이스(GUI).......................................................................................... 43

5.1.2 CEM Studio 블록 소개 ........................................................................................................ 52

5.1.3 CEM Studio 컨트롤 소개 .................................................................................................... 63

5.1.4 Setting...................................................................................................................................... 65

5.2 Tutorial ................................................................................................................................................. 68

5.2.1 블록 설계 .................................................................................................................................. 68

Page 3: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

5.2.2 블록의 그룹화(Super Block) ............................................................................................... 77

5.2.3 Custom block ........................................................................................................................ 80

5.2.4 Cem Studio 유용한 기능들 ................................................................................................ 87

Chapter 6 CEM Studio 응용 .......................................................................................................................... 88

6.1 CEM Studio 활용 제어 설계 .......................................................................................................... 88

6.1.1 스프링-질량계 시스템 ............................................................................................................ 88

6.1.2 2차원 이동물체 시스템 ......................................................................................................... 94

6.1.3 물탱크 시스템 .......................................................................................................................... 97

6.2 CEM Studio 활용 영상신호처리 .................................................................................................. 101

6.2.1 CEM Studio 영상처리 설계 .............................................................................................. 101

6.2.2 영상처리 간단한 실습예제 .................................................................................................. 104

6.3 CEM Studio 와 Kinect 연동 ......................................................................................................... 110

6.3.1 Kinect 영상을 CEM Studio 에서 확인 .......................................................................... 111

6.3.2 CEM Studio 를 이용한 Kinect 영상처리 ...................................................................... 114

Chapter 7 Quad Rotor 기초 실험 ............................................................................................................... 115

7.1 CEM Studio 를 이용한 AR Drone 제어 .................................................................................... 115

7.1.1 AR Drone Block 소개 ........................................................................................................ 115

7.1.2 AR Drone - Video Stream ............................................................................................. 118

7.1.3 AR Drone Block – Demonstration .............................................................................. 119

7.1.4 Quad Rotor 기초 조작 ....................................................................................................... 124

Chapter 8 Quad Rotor 고급 실험 ............................................................................................................... 131

8.1 AR Drone PID Control .................................................................................................................. 131

8.2 AR Drone Color Tracking ............................................................................................................ 139

8.3 Kinect Skeleton 블록을 이용한 AR Drone 제어 ................................................................... 146

8.3.1 Kinect Skeleton API .......................................................................................................... 146

8.3.2 AR Drone Kinect Control ................................................................................................ 149

8.3.3 AR Drone Kinect Advanced .......................................................................................... 158

Page 4: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Chapter 1 QUAD ROTOR

1.1 QUAD ROTOR 란?

현재 무인항공기(Unmanned Aerial Vehicle, UAV)는 사람이 작업하기에 위험한 전쟁, 재난,

환경감시 등의 상황에서 사람을 대체하는 용도로 활용되고 있다. 무인항공기는 날개의 고정,

회전에 따라 고정익형과 회전익형으로 나누어진다. 고정익형(ex. 비행기)은 회전익형보다 높은

동력 효율, 비행 속도, 제어의 편의성을 가지고 있으나, 이착륙시 활주로가 필요하기 때문에

장소에 대한 제약과 사고위험이 높다는 단점이 있다. 회전익형은 로터(Rotor)의 숫자에 따라

Dual-Rotor형(ex. 헬리콥터), Quad-Rotor형, Hexa-Rotor형 등 구분되며, 수직이착륙,

제자리비행, 360도 회전 등 정밀한 제어가 가능하기 때문에 복잡한 지형에서도 임무 수행이

가능하다는 장점이 있다.

쿼드로터는 쿼드로터 헬리콥터 또는 쿼드콥터로 불리는 비행체로 4개의 로터에 의해 추진되어

상승한다. 전, 후, 좌, 우에 로터가 장착되어 있고 대칭적으로 위치한 2쌍의 로터가 서로 다른

방향으로 회전하여 작동하며, 각 로터의 속도변화에 따라 Pitch, Roll, Yaw 등 동작 제어가

가능하다.

Page 5: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

1.1.1 QUAD ROTOR 원리

먼저 로터의 원리에 대해서 살펴보자. 로터의 단면을 살펴보면 유선형으로 이루어져 있는데 이

로터가 회전하면서 공기의 흐름을 만든다고 가정하자.

로터의 위, 아래 쪽의 단면적이 다르기 때문에 속도 차이가 생기게 된다. 그렇게 만들어진 공기의

속도 차이는 로터의 위쪽과 아래쪽의 압력의 차이를 가져오게 된다. 공기의 속도가 빨라지면 압력이

낮아지고 속도가 느려지면 압력이 높아진다는 “베르누이의 정리”에 의해 로터 위쪽의 압력이

낮아지고, 아래쪽의 압력이 높아지게 되는 것이다. 그렇게 되면 위쪽으로 힘이 작용하게 되는데.

그것이 양력이다. 그 양력이 비행체를 날 수 있게 해주는 힘이다.

Quad-Rotor가 기본적으로 비행을 할 수 있는 원리는 그림 1.1과 같이 대칭적으로 위치한

2쌍의 로터가 서로 다른 방향으로 같은 속도로 회전하여 수직으로 상승하게 된다.

그림 1.1 Quad-Rotor 동작 명칭(Roll, Pitch, Yaw, Gaze)

인접한 두 로터가 서로 다른 방향으로 회전하기 때문에 반 토크가 상쇄되어 몸체가 회전하지

않고 뜨게 되는 것이다. 그렇다면 어떻게 방향을 조절하고, 이동을 하게 되는 것일까? 그 답은,

모터 출력에 따른 각 로터의 속도 변화로 정해진다.

Page 6: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

다음의 그림 1.2를 살펴보자.

그림 1.2 Quad Rotor의 동작

Yaw 운동은 쉽게 말해서 기체의 방향을 뜻한다. (가) 상황의 경우, 2번과 4번 모터의 출력을 높여

반 시계 방향으로 기체가 돌게 되고, (나) 상황은 그 반대로 1번과 3번의 출력을 높여 시계

방향으로 회전하게 된다.

Pitch 운동은 기체의 머리에 해당되는 부분 기울기에 따라 전, 후로 움직이는 것을 뜻한다. 1번

로터가 전방에 해당 된다면, (마)의 경우 1번 로터의 출력을 줄이고, 3번 로터의 출력을 높여,

전방으로 이동하게 된다.

Roll 운동은 기체를 좌, 우로 움직이게 하는 것을 뜻한다. (라)의 경우 2번 로터의 출력을 줄이고,

4번 로터의 출력을 높여, 우측으로 이동하게 된다.

Page 7: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

만약 우측 대각선 전방으로 Quad Rotor를 움직이게 하고 싶다면, 시계방향으로 Yaw 운동(나)을

해서 방향을 맞추고 전방으로 Pitch 운동(마)을 하면 되는 것이다.

Page 8: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

1.2 AR DRONE

그림 1.3 AR Drone 2.0

AR Drone은 프랑스의 자동차 액세서리, 멀티미디어 기기 업체인 parrot사에서 판매하는 Quad

Rotor이다. iPad, iPod Touch, iPhone과 안드로이드 스마트폰으로 조종할 수 있으며, 720p

영상을 터치스크린으로 생중계합니다. 자체 조달하는 Wi-Fi로 연결되어 촬영되는 영상은 AR

Drone의 메모리카드에 저장되며, YouTube에 업로드 가능하다. 전 버전인 AR Drone 1.0이 상공

6m까지 비행이 가능하였다면 AR Drone 2.0은 상공 50m까지 비행이 가능하고 1.2GHz

프로세서, 3-axis magnetometer, 3-axis gyroscope, 3-axis accelerometer를 탑재하여 보다

쉽고, 정밀한 비행을 도와준다. 실내/실외 두 가지 비행 모드가 있으며 실내에서 비행할 때

로터로부터 가구들을 보호하기 위한 보호 덮개도 함께 제공된다.

Page 9: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 1.4 AR Drone 2.0 주요 특징

Page 10: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

주요 특징

표 1-1 AR Drone 2.0 사양

AR Drone 2.0

Size W55.88xH56.896 (cm)

Weight 2.08 (kg)

Flying Time 15 minutes

Processor ARM Cortex A8 800Mhz DSP TMS320DMC64x (video)

Communication Wifi

Sensor

Camera(Front/Ground) Accelerometer Gyroscope Pressure sensor Magnetometer Ultrasound sensors

Support iPhone/Android Apps SDK for iPhone, Android, Windows

Battery 3000mAh (LiPo)

Release May, 2012

1.2GHz 32bit ARM Cortex A8 프로세서, 800 MHz 비디오 DSP TMS320DMC64x

1Gbit DDR2 RAM

Wi-Fi b, g, n 지원

태블릿/ 안드로이드 폰/ 아이폰으로 비행 조종과 녹화 가능

720p HD 30fps 카메라, 와이드 앵글 렌즈 내장

실시간 스트리밍 서비스 제공

Page 11: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

1.2.1 스마트폰으로 AR DRONE 제어

AR Drone은 사용자가 쉽게 제어할 수 있도록 스마트 폰 어플리케이션을 제공해 준다. Android

사용자라면 ‘Google play’, IOS 사용자라면 ‘App Store’에서 ‘AR.FreeFlight’ 어플리케이션을

검색 후 설치해 보자.

주된 통신 방식이 Wi-Fi이기 때문에 PC에서도 제어하고 싶다면 wireless LAN 카드를 장착 후

제어할 수 있다.

그 외 자세한 사항은 Parrot사의 홈페이지인 http://ardrone2.parrot.com에서 확인 가능하다.

그림 1.5 AR.FreeFlight 실행 화면

Page 12: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Chapter 2 MS KINECT

2.1 KINECT 란?

그림 2.1 Kinect for Windows

그림 2.2 Kinect Sensors

마이크로소프트에서 개발한 XBOX-360 게임 디바이스의 새로운 입력장치인 Kinect는 Kinetic과

Connect의 합성어로 사람의 동작을 인식하여 컴퓨터 시스템에 연결하는 장치를 의미한다. 기존의

Page 13: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

입력장치인 키보드, 마우스, 조이스틱과 다르게 사용자의 움직임을 센서가 실시간으로 추적하고

반응하여 게임을 플레이 할 수 있도록 하였다. 혁신적인 제품 Kinect의 등장으로 게임 플레이와

엔터테인먼트 환경을 바꾸어 놓았으며, 의료, 감시, 교육 등 다양한 분야에 적용되어 게임

입력장치 이상의 효과를 보이고 있다.

다양한 분야에 보다 쉽게 적용되기 위하여 마이크로소프트에서는 Windows 환경에서도

Kinect를 사용할 수 있는 ‘Kinect for Windows’를 출시하였다. 기존의 XBOX용과 다르게 단말기

앞 40~50cm까지 인식이 가능하며 음성, 센서 등 다양한 부분에서 상향되었다. 또한 개발자들이

쉽게 개발하고 제어할 수 있도록 ‘The Kinect for Windows Software Development Kit(SDK)’

를 제공하였다.

필요 사양

Windows 7, Windows 8, Windows Embedded Standard 7, or Windows Embedded

POSReady 7

32 bit (x86) or 64 bit (x64) processor

Dual-core 2.66-GHz or faster processor

Dedicated USB 2.0 bus

2 GB RAM

주요 특징

표 2-1 Playable Range for the Kinect for Windows Sensor

Sensor Item Playable range

Color and depth stream 4 to 11.5 feet(1.2 to 3.5 meters)

Skeletal tracking 4 to 11.5 feet(1.2 to 3.5 meters)

Page 14: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

표 2-2 Kinect Sensor Array Specifications

Sensor Item Specification range

Viewing angle 43° vertical by 57° horizontal field of view

Mechanized tilt range(vertical) ±28°

Frame rate(depth and color stream) 30 frames per second(FPS)

Resolution, depth stream QVGA (320 ⅹ 240)

Resolution, color stream VGA (640 ⅹ 480)

Audio format 16-kHz, 16-bit mono pulse code modulation(PCM)

Audio input characteristics

A four-microphone array with 24-bit analog-to-

digital converter(ADC) and Kinect-resident signal

processing such as acoustic echo cancellation and

noise suppression

Page 15: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

2.2 KINECT 사용법 소개

그림 2.3 Kinect SDK와 Toolkit 다운로드

위에서도 언급되었듯이, ‘Kinect for windows’는 개발자들이 쉽게 개발하고 제어할 수 있도록

SDK를 지원한다. http://www.microsoft.com/en-us/kinectforwindows/ 에 접속하면 그림

2.3과 같은 화면이 나온다. Develop을 클릭하여 SDK와 Toolkit을 받아 설치하도록 하자.

첫 번째 SDK는 개발을 위한 라이브러리와 장치 드라이버/ 런타임 등이 내장되어 있으며, 두

번째 Developer Toolkit은 Kinect 개발에 쓰일 다양한 예제와 Kinect Studio가 내장되어 있다.

Page 16: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

설치방법

(1) 작은 검정색 동글을 기준으로 한쪽에는 Kinect for windows에 연결된 USB 케이블을

연결하고, 파워와 컴퓨터연결 시 필요한 USB 케이블을 남은 구멍에 연결한다.

(2) 케이블 한쪽 끝을 PC 뒤쪽의 USB 포트에 연결하고 다른 쪽 끝을 콘센트에 연결합니다.

(3) 드라이버가 자동으로 설치된다.

(4) 설치가 완료되었으면, 제어판->장치관리자에 ‘Kinect for Windows’라는 항목이

나타난다.

이제 Kinect가 잘 설치되었는지 확인을 해보자.

당신의 컴퓨터에 Visual Studio가 설치되어 있다면, Developer Toolkit Browser를 실행하고

원하는 환경(C#, C++, VB)에 맞추어 다양한 예제들을 테스트해보자.

그림 2.4 Kinect Developer Toolkit Browser

Page 17: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Kinect Developer Toolkit Browser(그림 2.4)를 통하여 사용자는 SDK에 포함된 라이브러리와

예제들을 통하여 응용프로그램을 개발할 수 있으며, Kinect 센서로부터 데이터를 가져오거나

제어하는데 사용되는 NUI(Natural User Interface) API를 사용할 수 있다.

그림 2.5 Hardware and Software Interaction with an Application

그림 2.6 SDK Architecture

Page 18: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Chapter 3 제어 이론 기초

3.1 제어 이론

3.1.1 제어의 정의

제어란 어떤 장치나 시스템의 출력신호가 원하는 상태를 따라가도록 입력신호를 적절히 조절하는

방법을 뜻하며, 이러한 방법을 연구하는 학문분야를 제어공학이라고 한다. 이러한 제어동작을

수행하는 회로나 장치를 제어기라고 하는데, 제어기(Controller)의 역할을 사람이 수행하는

경우에는 유인제어, 물리적 장치로써 제어기를 실현시킨 경우에는 무인제어라 부른다. 그리고

자동제어(Automatic Control)란 사람이 없이도 제어동작이 수행되는 무인제어를 가리키는 말이다.

유인제어의 대표적인 예로는 자동차 운전을 들 수 있다. 자동차를 운전하는 경우에 운전자는

자신이 가고자 하는 목표지점에 안전하게 그리고 될 수 있는 한 빠르게 도착할 수 있도록 전방을

주시하면서 가속기와 브레이크와 핸들을 조작하여 자동차를 제어한다. 무인제어, 즉 자동제어의

대표적인 예로 들 수 있는 것이 냉방장치이다. 냉방장치는 실내온도를 일정하게 유지시켜 주는

역할을 하는데 실내온도가 미리 설정된 온도보다 높을 때에는 압축기(Compressor)를 가동시켜

온도를, 낮추고, 이 온도가 설정온도와 같아지면 압축기의 동작을 멈춤으로써 실내 온도를

일정하게 유지시키는 제어도작을 수행한다. 이 냉방장치에서 설정온도는 사용자에 의해 미리

결정되며, 실내온도는 냉방장치에 부착된 온도감지기로 측정된다.

그림 3.1은 제어시스템의 구성도를 보여주고 있다. 냉방장치의 예에서 보는 바와 같이

자동제어를 수행하려면 출력신호를 측정하는 감지지(Sensor)가 필요하며, 제어기는 이 측정신호와

기준입력 사이의 오차를 줄이면서 시스템의 출력이 기준입력에 가까워지는 방향으로 시스템을

제어하는 동작을 한다. 그림에서와 같이 자동제어는 출력신호가 감지기에 의해 입력 단에

되먹여져서 이루어지는데, 이와 같은 제어대상 시스템과 제어기 및 감지기로 이루어지는 전체

계통을 되먹임 제어 시스템(Feedback Control System)이라고 부른다.

Page 19: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 3.1 제어시스템의 구성

3.1.2 제어 이론 용어

자동제어 시스템의 해석 및 설계를 위해서 다양한 용어들을 정의해서 사용하는데, 사용하는

용어들 가운데 중요한 것들을 요약하여 정리하면 다음과 같다.

- 시스템(System) : 어떤 입력에 대해서 반응아형 출력신호를 내주면서 함께 동작하는 장치나

성분들의 집합을 말한다. 제어공학에서 다루는 시스템은 주로 물리적이거나 기계적인

시스템들이지만, 이 용어 자체는 사회과학이나 의학, 생물학 분야에서도 같은 의미로 쓰인다.

- 플랜트(Plant) : 제어시스템에서 제어하고자 하는 물리적 대상을 뜻한다.

- 공정(Process) : 출력신호가 온도, 압력, 유량, 수위, pH 등과 같은 화학적이거나 열 · 유체

역학적인 양으로 나타나는 시스템을 말한다.

Page 20: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

- 제어대상변수(Controlled variable) : 제어시스템에서 제어되는 변수를 말한다. 출력신호나

시스템 내부의 상태신호 가운데 이루부가 이 변수로 지정되며 측정변수에 포함된다.

- 기준입력(Reference Input) : 제어시스템에서 출력신호에 대한 기준으로 설정되는 입력을

뜻한다. 출력신호가 따라가기를 원하는 값이기 때문에 명령입력(Command Input), 또는

명령신호(Command Signal)라고도 부른다.

- 외란(Disturbance) : 시스템의 외부에서 알 수 없는 시간에 발생하여 출력에 나쁜 영향을

미치는 크기를 알 수 없는 신호를 가리키는 용어이다. 발생원인을 알 수 없는 입력 단

잡음이라든지 갑작스런 펄스신호 따위가 이러한 신호의 대표적인 예이다.

- 측정잡음(Measurement Noise) : 되먹임을 위해 출력을 측정하는 과정에 감지기에서 생기는

잡음을 말한다. 진폭은 크지 않지만 주파수 성분이 높은 특성을 갖고 있으며, 대부분은 시스템에

항상 존재하는 것으로 본다.

- 되먹임 제어(Feedback Control) : 시스템의 출력을 입력 단에 되돌려서 기준입력을 비교하여

그 오차가 감소되도록 동작시키는 제어방식을 말한다.

- 폐루프 제어(Closed-loop Control) : 되먹임 제어의 다른 이름인데, 되먹임 제어가 그림에서

보는 바와 같이 폐루프를 구성하기 때문에 붙여진 것이다.

- 개루프제어(Open-loop Control) : 시스템의 출력을 입력 단에 되먹이지 않고 기준입력만으로

제어신호를 만들어서 출력을 제어하는 방식을 말한다.

- 서보시스템(Servo System) : 출력신호가 위치, 속도, 가속도 등의 물리적이거나 기계적인

양으로 나타나는 되먹임 제어 시스템을 말하는데, “서보”라는 단어는 주어진 명령을 마치 노예처럼

그대로 따른다는 뜻에서 유래한다.

- 공정제어 시스템(Process Control System) : 공정을 제어대상으로 하는 되먹임 제어 시스템을

말한다.

- 시변시스템(Time-varying System) : 시스템의 입출력 전달특성이 시간에 따라 바뀌는

시스템을 말한다. 이 시스템의 특성을 미분방정식으로 나타내면 시변계수(Time-varying

Coefficient) 미분방정식이 된다.

- 시불변시스템(Time-invariant System) : 시스템의 입출력 전달특성이 시간에 따라 바뀌지

않는 시스템을 말한다. 이 시스템의 특성을 미분방정식으로 나타내면 상수계수 미분방정식이 된다.

Page 21: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

- 선형시스템(Linear System) : 시스템의 입출력신호들 사이의 전달특성을 G라고 할 때, 다음과

같은 성질을 만족하는 시스템을 말한다.

G(αu1 + βu2) = αG(u1) + βG(u2)

여기서, u1 , u2는 서로 다른 두 입력신호이고, α , β는 임의의 상수들이다. 이러한 전달특성의

대표적인 예는 G는 상수인 정비례관계인데, 이 경우 입출력 전달특성을 그래프로 나타내면 원점을

지나는 직선으로 표시되기 때문에 이러한 특성으로 표시되는 시스템을 선형시스템이라고 부른다.

- 비선형시스템(Nonlinear System) : 시스템의 입출력신호들 사이의 전달특성이 선형이 아닌

시스템을 말한다. 엄밀하게 말하면 대부분의 실제 시스템들은 비선형이며, 어떤 제한된 범위나

조건 아래에서만 선형으로 근사화하여 나타낼 수 있다.

- 제어목표(Control Objective) : 제어기를 써서 이루고자 하는 대상시스템의 특성을 말한다.

안정성(Stability), 명령 추종(Command Following), 외란 제거(Disturbance Rejection,

잡음축소(Noise Reduction)등이 그 예이다.

Page 22: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

3.1.3 PID 제어

PID(Proportional-plus-Integrate-plus-Derivative)제어기는 비례-적분-미분 제어기로서 실제

산업현장에서 가장 많이 사용되는 제어기법이다. 그림 3.2와 같은 폐루프 시스템을 고려해보자.

그림 3.2 폐루프 제어 시스템

위와 같은 폐루프 시스템에서 제어기부분은 PID제어기이다. 그림 3.2에서 보듯이 제어기로

입력되는 값은 플랜트의 출력 값과 플랜트가 출력해야 하는 값의 차인 오차신호(e)이다.

일반적으로 대부분의 제어기는 오차신호를 되먹임(Feedback) 받아서 제어기 출력신호를

출력하도록 설계된다. PID 제어기는 오차신호를 수학적으로는 아래 식과 같이 처리하여

제어신호(u) 계산한다.

μ = Kpe + Ki ∫edt + Kd

de

dt

여기서 Kp 는 오차신호에 곱해지는 비례이득이며, Ki 는 오차신호를 적분한 갑에 곱해지는

적분이득이며, Kd는 오차신호를 미분한 값에 곱해지는 미분이득이라고 한다. PID 제어기의 성능을

향상시키는 것은 이득들의 값을 어떻게 정하느냐에 따라 달려있으며, 위의 식을 Laplace 변환시켜

표현하면 아래 식과 같이 나타낼 수 있다.

U(s) = (Kps + Ki

1

s+ Kds) E(s)

전달함수 형태로 나타내면 아래 식과 같이 다시 쓸 수 있다.

Page 23: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

C(s) = U(s)

E(s)= Kps + Ki

1

s+ Kds =

Kds2 + Kps + Ki

s

PID 이득의 특성

PID 제어기는 모든 이득 값이 0이 아닌 값을 가져야만 하는 것은 아니며, 만약 비례이득 Kp의

값만 0이 아닌 값을 갖게 되면 P 제어기 이며, 적분이득 Ki의 값만 0이 아닌 값을 갖게 되면

I제어기, 미분이득 Kd 값만 0이 아닌 값을 갖게 되면 D제어기가 된다. 또 이러한 조합으로

PI제어기 혹은 PD제어기가 만들어질 수 있다. PID 제어기의 설계 시에 각 이득 값 들의 변화에

따른 플랜트의 일반적인 응답특성을 알면 매우 편리하다.

비례이득 Kp의 값은 플랜트 응답의 상승시간(rise time)을 줄이는 효과가 있으며, 과도한 이득은

오버슈트를 증가시킨다. 그러나 정상상태 오차(Steady State Error)를 없애지는 못한다.

적분이득 Ki의 값은 정상상태오차를 제거하는 효과를 가지고 있지만, 과도응답특성을 좋지 않게

만들 수 있다.

미분이득 K d의 값은 시스템의 안정도를 향상시키는 효과를 갖고 있어서, 오버슈트를 줄이고,

과도응답 특성을 향상시킬 수 있다.

위와 같은 특성을 정리하면 표와 같다.

표 3-1 이득 값 변화에 대한 플랜트 응답특성

응답특성

이득값 상승시간 오버슈트 정착시간 정상상태오차

Kp 감소 증가 약간 변화 감소

Ki 감소 증가 증가 제거

Kd 약간 변화 감소 감소 약간 변화

이러한 특성들을 이용하여, PID 이득 값들을 조절(튜닝, tuning)하면 원하는 플랜트의 응답특성을

낼 수 있는 PID 제어기를 설계할 수 있다. 각 계수들의 상관관계는 각 계수들끼리 서로 영향을

미치기 때문에 항상 일정하지는 않다. 실제로, 한 계수의 변화가 다른 두 계수를 변화시키는

Page 24: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

효과를 낼 수 있다. 이러한 이유로 표의 내용은 각 계수들의 값을 결정할 때 하나의 참고로서만

활용될 수 있을 것이다.

대상 플랜트에 적합한 PID 제어이득의 선정은 플랜트의 특성에 따라 결정되어야 한다. PID

이득을 체계적으로 선정하고자 할 때에는, 근궤적 기법을 이용하여 각 이득의 영향을 분석함으로써

결정할 수 있다.

우세 근이 있는 경우의 PID 이득 결정방법에는 분해식 순차적 설계방법과 분석적 방법이 있으며,

그렇지 않은 고차시스템의 경우에는 성능지수 최적화 전달함수와의 비교법이 있다.

3.2 제어시스템의 예

최근 대부분의 산업현장에는 자동제어시스템이 도입되고 있어서, 제어시스템의 예로 들 수 있는

것은 헤아릴 수 없을 정도로 많으나 여기서 몇 가지만 살펴보기로 한다. 이 절에서 소개되는

시스템들은 산업현장에서 부유하고 있는 대표적인 것들이다. 이 절에서는 이 시스템들의 동작과

제어시스템 구성에 대해 간략히 소개한다.

3.2.1 산업용 로봇 제어 시스템

산업용 로봇은 어떤 제품의 생산과정에 들어가는 각종 부품들을 조립하는 공정이나, 용접,

도장(painting) 작업등에 쓰이는 장치로서 공장자동화에 필수적이다. 이 장치는 사람의 손을

대신하여 단순작업을 신속 정확하게 장시간 쉬지 않고 수행할 수 있으며, 또한 사람이 견딜 수

없는 극한 환경에서의 위험한 작업을 해낼 수 있는 다 목적용 공정으로서, 정확하면서 빠르고

유연한 조작을 필요로 하는 생산조립공정에 많이 쓰이고 있다. 이 산업용 로봇은 여러 개의 관절로

이루어지며 각 관절에는 모터가 들어 있어서 로봇을 움직여준다. 이 모터의 위치와 속도 제어

기술이 로봇의 성능을 결정하는 핵심이 된다.

Page 25: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

제어기는 크게 주제어부와 서보제어부로 나누어진다. 주제어부는 각종 사용자 접한 기능과

운동계획(Motion Planning)기능을 가지고 있다. 운동계획이란, 로봇이 움직여야 할 궤적 정보를

만들어주는 기능을 말하는데, 여기에는 정기구학(Forward Kinematics), 역기구학(Inverse

Kinematics)모듈과 경로계획(Path Planning) 모듈 등이 포함된다. 서보제어부는 주제어부에서

만들어진 위치명령을 이용하여 로봇관절에 쓰이는 모터를 원하는 위치로 회전시키는 기능을

하는데 디지털 운동제어 보드와 증폭기로 구성된다. 그림은 이 로봇의 제어시스템 구성도이다.

그림 3.3 로봇 운동제어부의 구성도

3.2.2 자동차 능동현가장치

자동차의 현가장치(Suspension)는 차체(Car Body)를 차축(Axle)에 연결하는 완충장치로서

차량의 무게지지, 타이어가 노면으로부터 받는 충격의 흡수나 진동의 차단, 타이어와 노면과의

접지력 유지 등을 통해 차체의 진동을 줄여서 차량의 승차감과 안정성을 향상시키는 역할을 한다.

이러한 현가장치는 제어입력의 유무에 따라 능동형과 수동형으로 분류된다. 수동현가장치는

스프링과 댐퍼(damper)만으로 구성되어 있기 때문에 타이어가 노면으로부터 받는 충격을

완화시킬 수는 있지만 갑작스런 외란에 대해서는 완충 효과가 거의 없다. 반면에 능동방식은

스프링과 댐퍼외에 유압에 의해 작동되는 구동기가 함께 붙어 있어서 지면에서 오는 충격이나

갑작스런 외란에 대해서도 최대한 완충효과를 갖도록 제어할 수 있다. 능동현가장치는 제어력을

발생시키는 방법에 따라 반능동형과 완전능동형으로 구분되는데, 반능동형은 댐퍼관을 조절하여

감쇠력을 변화시킴으로써 제어력을 발생시키며, 완전능동형은 별도의 구동기에 의해 제어력을

발생시키는 방식이다.

Page 26: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 3.4 자동차 능동현가장치 개념도

지면의 불규칙성 때문에 노면으로부터 외란이 들어오면 차체가 이 외란의 영향으로 흔들리게

되어 승차감을 나쁘게 한다. 능동현가장치 제어시스템의 첫 번째 목표는 탑승자가 불편함을 느끼지

않도록 외란에 의한 차체의 진동을 최대한 줄이는 것이다. 또한 차체의 모양이 유선형으로 높이가

낮아지는 추세에 따라 현가장치 자체의 진동 폭을 일정범위로 제한하는 것도 제어목표가 된다.

그리고 차량의 안정성 향상을 위해 차축의 진동을 줄여서 타이어와 노면의 접지력을 높이는 것도

제어목표 가운데 하나가 된다. 그림은 능동현가장치의 개념이다. 이 그림은 승용차의 반차량

모델로서 2개의 바퀴 차축에 달린 댐퍼와 스프링 및 타이어의 완충작용을 보완하기 위해

현가장치에 병렬로 추가한 능동제어기를 보여주고 있다. 이 능동제어기는 노면에서 발생하는

외란에 대해 차체의 수직방향 변위나 가속도를 최소화하도록 작용한다.

3.2.3 비행기 유도제어시스템

항공기와 미사일을 포함하는 비행체는 제어공학의 대표적인 제어대상으로서 제어공학의

초창기부터 많은 연구가 집중되어 왔으며, 최근에는 우주항공시대가 열리면서 위성 및 발사체,

Page 27: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

위성수거용 로봇, 화성 탐색기 등 제어대상이 더욱 다양하고 고성능이 요구되는 문제까지 확대되고

있는 추세이다. 대기권내에서 운동하는 비행체에는 민항기, 전투기와 같은 항공기 외에도 발사체,

미사일, 헬리콥터 등 여러 가지가 포함된다.

비행체 유도제어시스템(Flight Guidance and Control System)이란 비행체가 목표위치에

도달하기 위해 항법 데이터로부터 유도명령을 계산하고 이 명령에 따라 비행체가 운동하도록

제어하는 자동조종장치로 구성되는 계통을 말한다. 비행체 유도제어시스템의 구성은 그림에서와

같다. 여기서 비행체의 출력은 비행체의 운동과 자세각이며, 구동기는 비행체 꼬리날개에 붙어

있는 승강타(Elevator), 방향타(Rudder), 주 날개에 붙어있는 보조날개(Ailerons)를 움직이는

전동기나 유압장치들이며, 감지기는 비행체의 운동과 자세각을 측정하는 자이로와 가속도계 따위로

이루어진다. 자동조종장치는 유도장치로부터 계산된 유도명령을 따라 승강타와 방향타 및

보조날개가 움직이도록 제어하는 역할을 한다. 이러한 유도 및 제어장치들은 대부분의 경우

비행체에 탑재된 컴퓨터에 구현되어 있다.

그림 3.5 비행체 유도제어시스템의 구성

Page 28: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Chapter 4 영상 신호처리 기초

4.1 영상신호

영상 신호는 1차원적인 신호와 달리 2차원(정지 영상) 혹은 3차원(동영상) 신호라 할 수 있다.

사람의 눈으로 사물을 구별하는 요소로는 사물의 모양, 색, 크기, 질감, 명암 등의 다양한 특성이

있으며 이러한 여러 가지 항목이 종합되어 표현되는 것이 영상 신호라 할 수 있다.

4.1.1 영상 신호의 종류

영상 신호는 우리 주변에서 이미 많이 사용되고 있다. 시간에 따라 변하는 신호를 동영상 신호,

변하지 않는 신호를 정지 영상이라 한다. 동영상 신호는 정지 영상 신호가 여러 장이 시간에 따라

변하는 것으로 이해할 수 있으며 동영상에서의 이러한 정지 영상 신호를 프레임이라고 한다.

사람의 눈이 감지할 수 있는 속도에는 한계가 있기 때문에 1초당 20-30 프레임 정도만 변하게

되면 거의 실시간으로 변하는 것으로 인식할 수 있다.

Page 29: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

정지 영상 신호의 특징

그림 4.1 정지 영상 신호의 구조

정지 영상 신호는 앞에서 언급한 바와 같이 2차원의 신호로 해석할 수 있다. 그림 4.1을 보면

정지 영상 신호는 픽셀(Pixel)이라 부르는 기본적인 점으로 구성되며 이 점은 각 위치에서의 색상

정보를 담고 있는 데이터를 저장하게 된다. 이러한 픽셀 데이터가 가로, 세로로 나열된 것이 정지

영상 신호이다.

x 축

y 축 Color f(x,y)

Page 30: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 4.2정지 영상 신호의 예

동영상 신호의 특징

그림 4.3 동영상 신호의 기본 구조

시간

x

y

Frames

정지 영상

Page 31: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

동영상 신호는 이러한 정지 영상 신호가 시간에 대해서 변화하게 되면서 여러 개의 정지 영상

신호가 합쳐진 신호를 나타내게 되는데 영상 신호처리를 하게 된다면 기본적으로는 이러한 정지

영상 신호에 대해서 위치와 색상에 대한 가공을 하는 것을 뜻하게 된다.

4.1.2 영상 신호의 특성

영상 신호를 이루는 기본적인 구성 요소를 픽셀이라 한다. 픽셀은 영상 신호의 지정된 위치에서의

색상 정보(Intensity)를 담고 있는데 크게 모노(Mono), 흑백(Gray), 칼라(Color)의 세 가지

타입으로 구분 지어질 수 있다.

모노(Mono)

1픽셀의 데이터를 검정색과 흰색으로만 구별하는 방법이다. 초기 컴퓨터의 화면에 검정색 바탕에

흰색의 글씨가 사용된 것이 모노를 사용한 예가 되겠다. 이러한 방식으로 영상 신호를 구성하게

되면 1픽셀을 표현하기 위해서 1bit의 데이터가 필요하게 된다.

흑백(Gray)

흑백은 모노와 마찬가지로 기본적으로는 검정색과 흰색만을 사용하는데 차이점이 있다면 그 중간

값인 회색의 명암을 함께 사용한다는 점이다. 검정색과 흰색의 비율에 따라서 명암이 결정되게

되는데 이러한 단계를 얼마나 두느냐에 따라서 영상 신호의 분해능력과 데이터의 크기가 결정된다.

예를 들어 16단계의 명암을 표현하는 영상 신호의 경우에는 1픽셀을 표현하는데 4bit의 데이터를

필요로 한다.

칼라(Color)

칼라를 사용하여 영상 신호를 표현하기 위해서는 일반적으로 모노 방식이나 흑백 방식에 비해

많은 양의 데이터를 필요로 하게 된다. 일반적으로 1픽셀 당 n-bit의 데이터를 사용하게 되면

표현할 수 있는 색상은 개가 된다. 최근의 PC에서 일반적으로 사용되는 True Color는 1픽셀 당

Page 32: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

24bit의 데이터를 사용하는 것이다. 따라서 표현할 수 있는 색상의 가짓수는 16,777,216개의

색상을 표현할 수 있게 된다. 이 24bit는 RGB의 색을 각각 8bit씩 더해서 만들어지게 된다.

이러한 색상의 구분에 따라서 픽셀의 색상을 표현하기 위한 데이터의 크기가 변하게 된다. 모노의

경우에는 검정색과 흰색의 두 가지 경우만 구별하면 되기 때문에 1bit로 1픽셀을 표현할 수 있다.

흑백의 경우에는 명암을 몇 단계로 나누어 표현할 것인가에 따라서 1픽셀을 표현하기 위한

데이터의 크기가 달라지는데 16단계로 표현하기 위해서는 1픽셀 당 4bit의 데이터가 필요하게

된다. 칼라의 경우에도 여러 가지 방법이 있지만 가장 흔히 사용하는 True color의 경우에는

1pixel을 표현하는데 24bit의 데이터가 필요하다. 따라서 320x240 크기의 True color로 표현된

그림 데이터를 표현하기 위해서는 24bit x 320 x 240 = 230400Byte = 230.4KB의 용량이

필요하게 되는 것이다. 이러한 방식으로 그림을 표현하는 가장 기본적인 파일의 format이 bitmap

파일로 이 파일에는 이러한 영상 데이터 이외에 파일을 기술하는데 필요한 각종 정보 헤더들, 예를

들어 영상 데이터의 크기, 칼라를 표시하는 방법 등이 조금 더 추가된다. 참고로 JPG, GIF, TIF

등의 파일 형태는 이러한 bitmap 형태의 데이터를 압축하여 용량을 줄인 것이다.

4.1.3 영상 신호처리의 응용 범위

영상 신호는 사람의 눈으로 할 수 있는 모든 일에 응용이 가능하다. 현재 많은 분야에서 영상

신호처리 기술이 적용되어 사용되고 있으며 앞으로도 그 응용 분야는 무궁무진하게 확대될 수

있다. 현재 적용중인 영상 신호처리의 분야를 간략히 나열하면 다음과 같다.

가정

일반 가정에서도 영상 신호처리의 예를 쉽게 찾아볼 수 있다. TV의 경우에 영상 신호를 수신하여

잡음이 없도록 처리 과정을 거쳐서 사용자에게 출력을 해주는 것이 대표적인 경우이다. 또한 방범

시스템에 사용되는 감시 카메라는 데이터의 크기를 압축하여 저장하는 방법으로 실시간 감시를

가능하게 한다. 그 외에도 각종 영상 장치들이 점차 가정에 보급되고 있는 추세이다.

일반 기업체(사무실)

Page 33: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

기업체에서도 다양한 방법으로 영상 신호를 사용하고 있다. 기본적인 PC의 사용을 제외하더라도

카메라를 이용한 실시간 화상 회의 시스템이나 홍채 인식 시스템을 이용한 출입문 관리 시스템을

도입하는 업체가 늘어나고 있다.

의료 장치

그림 4.4 X-ray 사진의 예

의료 분야에서 사용되는 영상 신호처리의 기법은 주로 인간의 눈으로는 관찰하기 힘든 미세한

구조나 몸 속의 구조를 인간의 눈으로 관찰할 수 있도록 하는 방법으로 많이 사용되고 있다. 가장

쉬운 예로 X-ray(그림 4.4)나 MRI같은 몸 내부의 구조를 관찰하는 장치가 있고 세포 조직을 크게

확대해서 보여주는 장치, 또는 사진에서 특정한 조직을 자동으로 찾아주는 기능 등에서 영상

신호처리 기법이 널리 사용되고 있는 분야이다.

공장 자동화

공장의 자동 조립 라인을 보면, 조립이 끝난 후에 조립을 검사하는 방법으로 조립 부분에 대한

사진을 찍은 후 영상 처리 기법을 적용하여 조립에 불량이 없는지를 검사하는 장치가 사용되고

있다. 또는 로봇을 만들 때, 로봇의 눈에 해당하는 부분을 영상 장치를 사용하여 구성하고 있다.

Page 34: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

이러한 분야에서는 영상 처리의 속도나 정확성이 제품의 생산성과 관련이 있기 때문에 정확성과

계산 속도가 동시에 중요한 요소가 된다.

그림 4.5 자동 조립된 제품의 확대 사진

방송, 영화

방송이나 영화를 보면 영상 신호에 여러 가지 특수 효과를 결합시킨 결과를 많이 접할 수 있을

것이다. 이런 모든 것이 영상 신호에 대한 신호처리 과정을 통해서 생성될 수 있다.

과학 연구

영상 신호처리 분야에서 가장 처음으로, 그리고 가장 널리 사용되는 분야가 과학적인 연구 분야라

할 수 있을 것이다. 인공위성이나 망원경으로 찍은 사진을 바탕으로 대부분의 연구를 진행하는

천문학에서는 사진에 대한 적절한 처리를 통해서 원하는 결과를 얻어야만 할 것이다. 세포에 대한

사진에서 마찬가지로 원하는 결과를 얻어야 하는 생물, 의학 분야의 연구자도 이 영상 데이터를

적절하게 처리하여 원하는 결과를 얻어야만 한다. 마찬가지 방법으로 물리, 지질, 화학, 공학 등의

전 과학 연구 분야에서 영상 신호처리의 기법이 사용될 필요성은 매우 크다고 할 수 있다.

Page 35: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 4.6 적혈구 세포 사진

그림 4.7 은하계 사진

Page 36: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

4.2 영상 신호처리의 기초

영상 신호를 처리하기 위해서는 영상 신호처리의 기본적인 절차와 방법을 이해해야 한다. 영상

신호처리를 위한 기본적인 절차와 방법에 대해서 알아보기로 한다.

4.2.1 영상 신호처리 과정

그림 4.8 영상 신호처리의 일반적인 순서

영상 신호를 처리하기 위해서는 다음과 같은 몇 단계의 과정을 거치는 것이 일반적이다.

영상 데이터 취득(Image Acquisition)

영상 데이터를 처리/가공이 가능한 신호로 변환하는 과정이다. 영상 신호를 취득하는 장치로 가장

널리 사용되는 것이 카메라, 스캐너 등의 장치이다. 스캐너는 이미 사진으로 존재하는 영상을 전자

신호로 변환해 주는 장치이다. 카메라의 경우에는 과거에는 사진으로 찍은 후에 스캐너 등을

이용하여 디지털 신호로 변환을 해야 처리가 가능했지만 요즘에는 디지털 카메라에서 직접 신호를

얻을 수 있다. 이러한 과정의 결과로는 영상 신호 자체(raw data) 혹은 영상 신호 파일(bitmap

등)이 얻어진다.

전처리(Preprocessing)

Knowledge base

SegmentationRepresentationand Description

Recognitionand

interpretation

Preprocessing

ImageAcquisition

Page 37: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

전처리의 과정은 실제로 필요한 영상 신호처리를 하기 위해 사전에 영상 신호의 질을 높이는

과정이라고 보면 된다. 이러한 과정은 밝기 조절(Contrast enhancement), 잡음 제거, 영역 선택

등의 처리를 하게 된다. 전처리 역시 신호처리의 일부분이다.

표본화(Segmentation)

표본화는 영상 신호를 구성하고 있는 요소를 보다 선명하게 구분하는 과정이라고 정의할 수 있다.

이러한 방법에는 경계치(boundary)로 표현하는 방법이 있고 영역(Region)으로 표현하는 방법이

있는데 경계치로 표현하는 경우는 외곽의 모양이나 형태에 관심이 있을 경우에 경계치로 표현을

하게 되고, 영역으로 표현할 때에는 내부의 무늬나 질감 등이 필요한 경우에 사용하게 된다. 이 두

가지 방법은 필요한 경우에는 함께 사용되기도 한다.

특징 추출(Description or Feature Selection)

영상 신호에서 원하는 특징, 혹은 신호를 얻는 과정을 특징 추출이라고 한다. 특징 추출의

방법으로는 특정한 모양을 찾는다거나 그림에서 글자를 인식하는 방법(글자에만 있는

특징으로)등에 사용된다. 예를 들어 서로 다른 과일이 섞여 있는 상자에서 이 과일들을 하나씩

분리하기 위해서는 서로 다른 과일들이 갖고 있는 특징으로 구별하면 된다. 사과, 수박, 귤의 예를

들면, 크기를 갖고 사과, 귤을 수박과 구별할 수 있고 사과와 귤은 색으로 구별할 수 있을 것이다.

이와 같이 특징적인 정보를 찾는 것을 특징 추출이라고 생각하면 된다.

해석(Recognition)

마지막의 과정인 해석 부분은 이와 같은 영상 신호처리의 과정에 의미를 부여하는 과정이다.

문자를 인식하는 경우에 그 문자를 ‘가’라고 판별하는 부분, 혹은 세포를 찍은 사진에서

윤곽선만을 추출한 후에 “이 사진으로 볼 때 어떤 병을 갖고 있다.” 라고 판별하는 부분 등이

해석에 해당한다.

이러한 모든 일련의 과정은 사전에 어떤 정보를 기반으로 작성되어야 한다. 예를 들어 “사과와

수박의 크기는 어떤 값을 기준으로 구별한다.”와 같은 정보나 “암세포는 다른 부분에 비해 20%

이상 어둡게 나타난다.”와 같은 정보가 미리 제공되어야 의미가 있다. 이러한 정보(Knowledge

Page 38: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

base)를 의미 있게 설정하는 것이 또한 영상 신호처리를 통해 원하는 결과를 얻는 중요한

절차이다.

4.2.2 영상 신호처리의 기본 방법

영상 신호를 처리하기 위한 기본적인 원리는 행렬 형태로 저장된 데이터의 수학적인 연산에

의존하게 된다. 영상 신호가 기본적으로 pixel위치에서의 빛의 세기(Intensity)를 수치적으로 담고

있는 것이기 때문에 이 수치에 변화를 주는 것이 영상 신호의 기초이다. 또한 영상 신호가

1차원이 아닌 2차원적인 정보를 갖고 있기 때문에 2차원 행렬이 가장 기본적인 영상 신호의 표현

수단이 될 수 있다.

영상 신호의 기본 연산

2차원 행렬에서 영상 신호에 적용할 수 있는 기본적인 연산은 산술적인 연산과 논리적인 연산이

있는데 이 중 산술적인 다음과 같은 것이 있다.

덧셈

영상 신호의 각 픽셀의 값을 더하는 연산이다. 서로 다른 영상 신호에서 픽셀의 위치끼리 더할

수도 있고, 아니면 일정한 상수 값을 더할 수 있다. 연산의 결과는 반드시 일정한 범위 내에

존재해야 하므로(색상의 범위는 일정) 덧셈의 결과가 일정한 값을 넘어가게 되면 그 값으로 제한해

주어야 한다. (256색의 경우에는 255가 가장 큰 값)

뺄셈

영상 신호의 각 픽셀의 값을 빼는 연산이다. 덧셈과 마찬가지로 영상 신호끼리 뺄셈을 수행할

수도 있고 일정한 상수를 뺄 수도 있다. 그리고 가장 작은 값은 0으로 제한된다.

곱셈

Page 39: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

영상 신호의 각 픽셀의 값을 곱하는 연산이다.

AND

두 영상 신호의 각 픽셀의 값을 AND 연산을 취한다.

OR

두 영상 신호의 각 픽셀의 값을 OR 연산을 취한다.

NOT

영상 신호의 각 픽셀의 값을 바꾸는 연산이다. 원래 흰색인 부분은 검은 색으로, 검은 색인

부분은 흰색으로 결과가 나타나게 된다.

이러한 논리적인 연산은 그림의 영역을 일부만 선택하기 위한 마스킹, 특징 추출, 모양 검출

등에서 유용하게 사용될 수 있다.

영상 신호의 기하학적 연산

영상 신호는 2차원의 위치에서 빛의 밝기를 나타내는 신호라고 할 수 있다. 따라서 2차원의

위치에 대해서 다양한 종류의 기하학적인 변환을 취할 수 있다. 기하학적 연산의 경우에는

픽셀에서의 값을 변환하는 것이 아니라 픽셀의 위치를 변환하는 것이라 할 수 있다. 기하학적인

연산에는 이동, 크기 변환, 회전 등이 있는데 이 모든 것이 2차원 행렬로 표현될 수 있다.

여기에서는 그림을 통해 개념만 설명해 보도록 하겠다.

Page 40: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 4.9 크기 변환에 의한 그림의 변형

그림 4.10 이동 변환에 의한 그림의 변형

원래 이미지

크기 변환 후의 이미지

원래 이미지

이동 변환 후의 이미지

Page 41: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 4.11 회전 변환에 의한 그림의 변형

원래 이미지

회전 변환 후의 이미지

회전 중심

Page 42: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Chapter 5 CEM STUDIO 소개

5.1 CEM STUDIO 란?

CEM Studio는 데이터 흐름(data flow)과 변환(transformation)에 기반한 시스템 설계 및 구현

플랫폼이다. 기본적으로 동역학 시스템 즉, 시변적(time-varying) 시스템의 모의(simulation) 및

실현(realization)에 최적화되어 있는 계산 플랫폼(computing platform)이지만, 시간에

독립적이면서 일련의 데이터를 순차적으로 처리하여 소기의 결과를 도출해내는 어떠한 시스템에도

적용이 가능하다. 이러한 범용성은 블록(block)이라고 불리는 기능적 단위(functional unit)들이

가지는 의미론적 혹은 문맥적 다형성(semantic or contextual polymorphism)에서 기인한다.

CEM Studio에서 각각의 블록들은 일정한 매개변수(parameter)와 입력 변수에 기반하여 새로운

출력을 생성해내는 기능적 실체(entity)를 의미한다. 즉, 수학적 관점에서 보았을 때 하나의

함수(function)에 해당하는 개념이라고 볼 수 있다. 논리적 혹은 계층적 관점에서 블록들은 그

자체로 하나의 작은 시스템(system)이라고 볼 수 있으며, 이들의 순차적 연결을 통해 보다 높은

수준의 시스템이 유도된다. 결국 CEM Studio에서 하나의 모델이라는 것은, 이들 단위 블록들이

모여서 이루어지는 거대한 데이터 변환(data transformation) 망(network) 혹은 그래프(graph)를

의미하게 된다. 하나의 대화형 컴퓨터 소프트웨어(interactive computer software)로서 CEM

Studio가 가지는 의미는 갖은 현대적 그래픽 기법을 동원하여 이러한 모델들을 보다 쉽고

직관적으로 작성하고 검증할 수 있는 일관되고 통합된 개발환경을 제공한다는데 있다.

Page 43: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.1 기능적 관점에서 바라본 CEM Studio의 사용자 인터페이스

5.1.1 그래픽 사용자 인터페이스(GUI)

CEM Studio의 사용자 인터페이스는 크게 주 윈도우(main window)와 모델링 윈도우(modeling

window), 그리고 모니터링 윈도우(monitoring window) 세 부분으로 구성되어 있다.

소프트웨어적 관점에서의 모듈성(modularity)과 시스템적 관점에서의 논리적 상관성(긴밀성;

coherence)에 따라 이루어진 분류이며, 약간의 훈련만 거치면 쉽게 익숙해질 수 있는 직관적

구조로 되어 있다.

Page 44: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

주 윈도우(Main window)

응용 프로그램 전체를 관리하고, CEM Studio의 시스템 관리 단위인 프로젝트(project)에 대한

인터페이스를 제공한다. 아울러 모델링 영역과 모니터링 영역에서 공통적으로 사용하는 여러 가지

공유 자원들을 제어하고 관리하는 역할 또한 담당한다.

그림 5.2 주 윈도우

그림 5.2에서 확인할 수 있듯이 창의 좌측 부분은 현재 로드되어 있는 프로젝트의 모델들과

모니터컨트롤들의 정보를 보여준다. CEM Studio에서 하나의 프로젝트는 목적하는 시스템 및 관련

Page 45: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

매개변수 전체를 총괄하는 논리적 단위이다. 그 성질상 트리 구조를 자연스럽게 내포하고 있다.

오른쪽 상단 부분은 현재 선택된 실체에 대한 간단한 도움말을 제공한다. 보다 자세한 도움말은

“도움말 보기”를 통해 접근이 가능하다. 도움말 패널 하단에 보이는 속성 창은 공통적인 속성에

대한 신속한 접근을 제공한다. 실체의 종류에 따라 그 속성이나 매개변수가 매우 다양하여 이 창을

통해 제어할 수 있는 속성들은 매우 제한적이다. 따라서 보다 상세한 제어는 제공되는 별개의 속성

창(매개변수 창)을 통해 이루어진다. 하단에 위치하는 이벤트 창은 응용 프로그램에서 발생하는

각종 사건 항목을 보여주는 곳으로, 해당 항목을 더블-클릭할 경우 사건의 원천 실체가 선택되어

보여진다. 이 기능은 개발 중인 모델의 디버깅(debugging) 과정에서 유용하게 이용될 수 있다. 최

하단에 존재하는 상태 창에서는 실행 타이밍(timing) 정보가 현시된다. 모델 타임(model-time)

막대에서는 현재 모델에 적용되고 있는 시간을 나타내어주며, 리얼 타임(real-time) 막대에서는

현실 시간을 보여주게 된다. 이 타이밍 정보는 실시간 운용 모드에서 매우 유용하게 사용될 수

있다. 모델 타임 막대의 말단에서는 설정된 전체 실행 시간에 대한 현재 모델 타임의 비율이

현시되도록 되어있다. 만약 무한 시간 모드로 작동 중일 경우 이 정보는 나타나지 않게 된다. 리얼

타임 막대의 말단 부분에서는 실제 시간과 모델 시간의 차이 값이 나타나도록 되어 있다. 이

정보는 리얼 타임 모드에서 적절한 샘플링 타임과 “ODE” 스텝 사이즈를 결정하는데 선용될 수

있다. 가상 시간 모드에서는 큰 의미가 없다.

표 5-1 주 윈도우 아이콘 설명

아이콘 단축키 설명

New Ctrl + N 새로운 프로젝트 생성

Open Ctrl + O 기존 프로젝트 열기

Save Ctrl + S 현재 프로젝트 저장

Compile F7 현재 프로젝트 컴파일

Run F5 현재 프로젝트 실행

Stop ESC 실행중인 프로젝트 중단

View Help F1 도움말

Show Model Ctrl + Shift + L 모델링 윈도우 열기

Show Monitor Ctrl + Shift + R 모니터링 윈도우 열기

Page 46: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

모델링 윈도우(Modeling Window)

프로젝트의 모델 영역에 대한 사용자 인터페이스를 제공한다. CEM Studio에서 모델이라 함은

입력과 출력 관계로 얽혀 있는 기능적 단위 블록들의 순서있는 나열(ordered sequence)을

의미한다.

블록 객체의 생성은 좌측의 블록에서 우측의 모델링 창으로 드래그-앤-드랍(drag-and-drop)을

통해 이루어진다. 놓여진 블록들의 위상학적(topological) 상관관계는 블록들의 출력 포트와 입력

포트 사이에 형성되는 링크(link)에 의해 규정된다. CEM Studio에서 입출력 포트들 간의 의미론적

연결(link)은 축 정렬 선(axis-aligned line)의 형태로 표현된다. 이들은 소스(source) 혹은

데스티네이션(destination) 포트를 선택하고 대응되는 포트로 선을 끌어 놓음으로써 생성될 수

있으며, 두 포트를 연결하는 최단의 경로를 기준으로 애초의 연결선이 자동으로 생성되게 된다. 이

과정에서 경로에 존재할 수 있는 임의의 블록들을 회피하도록 설계되어 있는데, 이는

심미적(esthetic) 측면이나 사용자 편의적 측면 모두에서 많은 이점을 제공한다. 하나의 출력이

여러 입력으로 연결되는 구성 또한 가능하며, 이는 기 존재하는 연결로부터의 분기(branching;

junction)를 통해 이루어진다. 분기는 임의의 연결선 위에서 오른쪽 마우스 버튼을 누르고 대상

입력 포트로 연결선을 끌어놓는 방식 혹은 점유되지 않은 임의의 입력 포트로부터 대상

연결선으로 끌어 놓는 방식을 통해 형성될 수 있다.

Page 47: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.3 모델링 윈도우

각각의 블록들은 기능적 혹은 비기능적 매개변수들을 설정할 수 있는 고유한 속성 창을 가지게

되며, 많은 경우 모델이 실행되고 있는 가운데서도 그 값을 조정할 수 있도록 구현되어 있다. 이는

실시간 모드로 실행되는 모델의 상호작용성(interactivity) 을 획기적으로 증진시키는 효과를

낳는다.

Page 48: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

표 5-2 모델링 윈도우 아이콘 설명

아이콘 단축키 설명

Close Frame 모델 윈도우 창 닫기

Show Monitor Ctrl + Shift + R 모니터링 윈도우 열기

Save Ctrl + S 현재 프로젝트 저장

Cut Ctrl + X 모델 블록 잘라내기

Copy Ctrl + C 모델 블록 복사

Paste Ctrl + V 모델 블록 붙여넣기

Restore Scale 확대 / 축소 비율 원래대로 변화

Show Name 블록의 이름 감추기 or 보이기

Toggle Guide Line Ctrl + Shift + G 가이드 라인 표시

Compile F7 현재 프로젝트 컴파일

Run F5 현재 프로젝트 실행

Stop ESC 실행중인 프로젝트 중단

Clear Error 에러 표시 삭제

Align Left Ctrl + Alt + L 제일 왼쪽에 있는 블록 열로 열 맞춤

Align Right Ctrl + Alt + R 제일 오른쪽에 있는 블록 열로 열 맞춤

Align Top Ctrl + Alt + T 제일 위쪽에 있는 블록 열로 열 맞춤

Align Bottom Ctrl + Alt + B 제일 아래쪽에 있는 블록 열로 열 맞춤

View Help 도움말

모니터링 윈도우 (Monitoring window)

프로젝트의 모니터 영역에 대한 사용자 인터페이스를 제공한다. 모니터 영역은

컨트롤(control)이라고 일컬어지는 각종 그래픽 단말 객체의 집합을 의미한다. 많은 경우 모델

영역으로부터 데이터를 받아들여 현시하는 출력 단말(output or sink terminal)들로 구성되지만,

모델 영역으로 데이터를 제공할 수 있는 입력 단말(input or source terminal)들도 존재한다. 또한

Page 49: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

입출력과는 상관 없이 시각적 효과만을 위한 컨트롤들도 존재한다. 모니터 영역은 현존하는 많은

시스템 모델링 툴들과는 달리 시스템 실행단계(execution phase)가 아니라 설계단계(design

phase)에서 적절한 데이터 현시 인터페이스(datum presentation interface)를 구성할 수 있도록

해줌으로써 CEM Studio가 시스템 모의뿐 아니라 실현 툴로써도 유용하게 응용될 수 있도록

도와주는 역할을 담당한다. 모델 영역과 마찬가지로 각각의 모니터링 컨트롤들은 그 종류에 따른

고유한 속성 창을 동반한다.

그림 5.4 모니터링 윈도우

컨트롤 객체의 생성은 모델링 영역에서와 마찬가지로 드래그-앤-드랍(drag-and-drop)을 통해

이루어진다. 모니터링 컨트롤들은 프로젝트 내에서 고유한 이름을 가져야 한다. 이는 경우에 따라

사용자가 지정한 이름과는 다른 이름이 시스템에 의해 자동으로 지정될 수도 있음을 의미한다.

Page 50: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

표 5-3 모니터링 윈도우 아이콘 설명

아이콘 단축키 설명

Close Frame 모니터링 윈도우 닫기

Show Model Ctrl + Shift + L 모델 윈도우 열기

Save Ctrl + S 현재 프로젝트 저장

Show Base 배경 이미지 감추기 or 보이기

Show Ruler 줄자 이미지 감추기 or 보이기

Compile F7 현재 프로젝트 컴파일

Run F5 현재 프로젝트 실행

Stop ESC 실행중인 프로젝트 중단

Clear Error 에러 표시 삭제

Center Scene 배경 이미지를 센터로 이동

Align Left Ctrl + Alt + L 제일 왼쪽에 있는 컨트롤 열로 열 맞춤

Align Right Ctrl + Alt + R 제일 오른쪽에 있는 컨트롤 열로 열 맞춤

Align Top Ctrl + Alt + T 제일 위쪽에 있는 컨트롤 열로 열 맞춤

Align Bottom Ctrl + Alt + B 제일 아래쪽에 있는 컨트롤 열로 열 맞춤

To the Biggest 제일 큰 컨트롤 사이즈로 크기변환

To the Smallest 제일 작은 컨트롤 사이즈로 크기변환

Show Name Ctrl + Shift + S 컨트롤 이름 보이기

Hide Name Ctrl + Shift + H 컨트롤 이름 감추기

View Help 도움말

프로젝트(Project)

CEM Studio에서는 소기의 시스템을 “프로젝트”라고 불리는 개념적 단위로 관리하게 된다.

임의의 프로젝트는 하나의 모델과 하나의 모니터로 구성되도록 되어 있으며, 거시적 관점에서

보았을 때 모델 영역에서는 기능적(functional) 역할을, 모니터 영역에서는 현시적(presentational)

역할을 담당하는 것으로 규정할 수 있다. 모델 영역과 모니터 영역의 데이터 교환은 “To Monitor”

혹은 “From Monitor”라고 불리는 매개 블록(broker, mediator or proxy)을 통해 이루어진다.

Page 51: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

이들 매개 블록들은 대상이 되는 모니터링 컨트롤에 대한 이름 정보를 근간으로 상호 연결을

수립하게 된다. 따라서 모니터링 영역에 존재하는 각각의 단말 객체들은 그 영역 내에서 유일한

이름을 가져야 한다. 만약 사용자가 지정한 이름이 유일성에 위배될 경우 CEM Studio에 의해 그

유일성이 담보되는 임의의 이름으로 강제되게 된다.

그림 5.5 모델과 모니터의 연결

프로젝트는 또한 모델 실행과 관련된 각종 파라메터들도 총괄한다. CEM Studio에서 프로젝트

파일(csproject)이 존재하는 파일 시스템 상의 위치(프로젝트 루트 디렉터리)는 특별한 의미를

가지게 된다. 모델이나 모니터에 존재하는 블록이나 컨트롤들은 경우에 따라 특정 리소스에 대한

경로 정보를 파라메터로 가지는 경우가 있다. 대부분의 경우 이러한 경로 관련 파라메터들은 현재

Page 52: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

프로젝트 루트 디렉터리를 기준으로 한 상대 경로 형태로 유지된다. 이는 어떤 프로젝트와 그에

부수되는 각종 리소스 파일들을 그 상대적인 디렉터리 구조를 유지하기만 한다면 어디든 복사하고

이동하여 작동시킬 수 있도록 하기 위함, 즉 국지성(locality)을 부여하기 위함이다. 결과적으로

CEM Studio에서는 프로젝트가 사용하는 각종 리소스 파일들을 프로젝트 루트 디렉터리 하위의

적절한 위치에 생성/유지하는 방식이 가장 적절한 프로젝트 관리 방식으로 권장된다.

5.1.2 CEM STUDIO 블록 소개

CEM Studio는 제어, 영상, 플랫폼 등 다양한 분야의 블록들을 제공한다. 현재 CEM

Studio에서는 이러한 블록들을 크게 6가지 필드로 나누어 제공하고 있다.

Page 53: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.6 CEM Studio 블록 필드

Structural: 입력신호에 대한 선별과 통합 등의 기능을 수행한 후에 출력하는 기능을 하는

블록들이다.

표 5-4 Structural Blocks

Block Name 기 능

From Monitor 모니터링창의 입력 컨트롤에서 들어온 신호 처리

Page 54: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

To Monitor

블록들이 보낸 신호를 모니터링 창의 출력 컨트롤에서

처리

From 스위치 블록

Goto Goto 에서 보낸 신호를 받음

Mux

여러 개의 벡터 or 스칼라 신호를 하나의 벡터 신호로

통합

Demux 벡터 신호를 여러 개의 스칼라 신호로 분리

Data Composer 입력 데이터를 하나로 통합

Data Decomposer 입력 데이터를 여러 개의 신호로 분리

Event Combiner 입력 이벤트들을 하나로 통합

Vector Extractor 입력 매트릭스에서 하나의 벡터를 추출

Switch 설정 값에 따른 신호의 선택적 출력

Multiport Switch 채널에 따른 Switch 연결

[Super] In 슈퍼 블록의 연결을 위한 입력 포트

[Super] Out 슈퍼 블록의 연결을 위한 출력 포트

Signal Sources: 신호를 발생시키는 블록들이다.

표 5-5 Signal Sources Blocks

Block Name 기 능

Sine Wave Sine 신호 출력

Cosine Wave Cosine 신호 출력

Page 55: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Sawtooth Wave Sawtooth 신호 출력

Square Wave Square 신호 출력

Repeating Sequence 반복 신호 출력

Ramp Ramp 신호 출력

Step Step 신호 출력

Pulse Generator 펄스 출력

Discrete Pulse Generator Sampling에 따른 펄스 출력

White Noise White noise 출력

Random Number Gaussian 난수 출력

Uniform Random Number 범위내의 난수 발생 출력

Chirp Signal 선형적으로 주파수가 변화하는 sine 신호 출력

Page 56: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Basic: 기본 연산 블록으로, 입력을 받아 다양한 연산을 한 후 출력하는 목적으로 사용되는

블록들이다.

표 5-6 Basic Blocks

Block Name 기 능

Constant 상수(스칼라 or 벡터) 출력

Ground 0을 출력

Clock 시간 출력

Digital Clock

설정된 Sampling 시간 크기로 시뮬레이션 시간 스텝을

제공

Stop 실행을 종료

Terminator 연결되지 않은 출력신호를 종료

Min 입력 중 가장 작은 값 출력

Max 입력 중 가장 큰 값 출력

Absolute 입력 신호의 절대값 연산

Sign 신호의 부호를 1 과 -1로 출력

Rounding Function 지정된 round 함수 연산

Sum 입력 신호의 +, - 연산

Gain 입력에 대한 상수 배 연산

Matrix Gain 입력신호의 Matrix 곱 출력

Page 57: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Product 입력들의 곱 연산

Dot Product 벡터 입력에 대한 Dot product 연산

Relay Relay 영역 설정

Logical Operator NOT, AND, OR, NAND, NOR, XOR 연산

Relational Operator 관계 연산(!=, <, <=, ==, >, >=)

Combinatorial Logic Truth table 연산

Trigonometric Function 삼각함수 연산

Math Function 지정된 연산 수행

Generic Function 사용자가 지정한 함수 연산

Limiter 상한과 하한 설정

Detect Change

현재 신호와 과거 신호를 비교해서 값이 바뀌었는지를

체크

Edge To Event 신호의 Edge를 체크해서 이벤트를 명령

Custom 사용자 지정 블록

Page 58: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Numerical Analysis : 수치와 관련된 연속형, 비선형, 이산형 연산 블록들이다.

표 5-7 Numerical Analysis Blocks

Block Name 기 능

State Space 상태공간 모델 구현

Discrete State Space 이산시간 상태공간 방정식 모델 구현

Integrator 입력을 적분

Limit Integrator 상한과 하한 값에 따른 적분

Reset Integrator Reset State 값에 따른 적분

Discrete Time Integrator 입력신호를 이산시간으로 적분

Derivative 입력을 미분

Transfer Function 전달함수 모델 구현

Discrete Transfer

Function 이산시간 전달함수 모델 구현

Memory 이전 적분 단계로부터 블록 입력을 출력

Unit Delay 한 샘플링 시간 동안 지연

Zero Order Hold 샘플링 시간 동안 Zero Order Hold 수행

First Order Hold 샘플링 시간 동안 First Order Hold 수행

Rate Limiter 기울기의 상한과 하한 결정

Quantizer 설정된 간격으로 신호를 이산화

Page 59: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Transport Delay 설정된 시간만큼 입력을 지연시켜 출력

Variable Time Delay 지연시간 변화에 대한 입력 신호의 지연 출력

Hit Crossing Cross 점을 찾는다

Backlash Backlash 영역 설정

D Latch D Latch 작업을 수행

Zero Pole 영점-극 모델 구현

Discrete Zero Pole 이산시간 영점-극 모델 구현

Lookup Table 입력에 대한 선형 사상 값 출력

Lookup Table 2D 2개의 입력에 대한 선형 사상 값 출력

Dead Zone Dead Zone 영역 설정

Page 60: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Image Processing : 다양한 영상처리를 위해 구현한 블록들이다.

표 5-8 Image Processing Blocks

Block Name 기 능

Image Source

이미지 불러오기(USB camera, Network Camera,

Local Image)

Add 가중치가 부여된 두 개의 이미지를 더함

Subtract

첫 번째 이미지에서 가중치가 부여된 두 번째 이미지를

Bright 설정 값에 따라 Brightness 조절

White Character 이미지에 Text 입력

Zoom 이미지 크기 조절

Rotate 이미지 크기, 회전 조절

Flip X, Y, XY 축 회전

Mask Mask 이미지 처리

Smooth Blur 효과 처리

Linear Filter Linear Filter 처리

Canny Edge Canny Edge Detector 구현

Hough Circle 이미지의 원을 검출

Face Detect 이미지의 얼굴을 검출

Convex Hull Convex Hull 검출

Page 61: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Contour 윤곽선 검출

Box and Circle Box and Circle 처리

Image Moments Image Moments 처리

Rotate and Ellipse Rotate and Ellipse 처리

Hough Line 이미지의 직선 검출

Back Projection Back Projection 처리

Feature Detect Feature Detect 처리

Feature Description Feature Description 처리

Template Match 두 개의 이미지의 같은 곳 검출

Threshold 임계 값에 따른 이미지 처리

Sobel 간단한 엣지 검출

Laplace 이미지의 laplacian 계산

Morphology Morphology 처리

Erode and Dilate Erode and Dilate 처리

Harris Corner Harris-Stephens 코너 검출

Corner Detect Shi-Tomashi 코너 검출

Page 62: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Platform Interfaces : CEM Studio와 다른 기기와의 연동을 위한 블록들이다.

표 5-9 Platform Interfaces Blocks

Block Name 기 능

Firewood Input CEM Firewood 보드에서 신호를 받음

Firewood Output CEM Firewood 보드로 신호를 출력

CEM DSP Input CEM DSP DAQ 보드에서 신호를 받음

CEM DSP Output CEM DSP DAQ 보드에서 신호를 출력

AR Drone Panel AR Drone 기본적인 조작 명령 보냄

AR Drone Nav. Data AR Drone의 Navigation data 출력

AR Drone Flight AR Drone의 Roll, Pitch, Gaze, Yaw 조작

Kinect Color 640x480 사이즈의 RGB영상 출력

Kinect Depth Kinect Depth영상과 데이터 출력

Kinect Skeleton Kinect Skeleton영상과 데이터 출력

Page 63: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

5.1.3 CEM STUDIO 컨트롤 소개

CEM Studio는 출력, 입력, 영상 등 시뮬레이션을 위한 다양한 종류의 컨트롤들을 제공한다.

현재 CEM Studio에서는 이러한 컨트롤들을 크게 5가지 필드로 나누어 제공하고 있다.

표 5-10 Controls

Field Control Name

Outputs

Simple Scope

Advanced Scope

XY Plot

Horizontal Gauge

Advanced Horizontal Gauge

Vertical Gauge

Advanced Vertical Gauge

Round Gauge

Advanced Round Gauge

Pie Chart

Bar Chart

LED

Page 64: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Multi-LED

Matrix Displayer

Simple Image Plot

Advanced Image Plot

Info List

Inputs

Scalar Input

Matrix Input

Button

Switch

Knob

Displayers

Label

Static Image

Animation

Page 65: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

5.1.4 SETTING

그림 5.7 Setting Windows

(1) Mode: ‘Real-Time’과 ‘Virtual-Time’ 두 가지 mode가 있으며, ‘Real-Time’ mode는

실행되는 시간이 현재 시간과 똑같이 적용되는 것을 의미한다. 즉, 프로그램 실행 시간 1초가 현재

시간 1초과 같다는 의미이다. ‘Virtual-Time’은 순수 시뮬레이션에 적합하며 현재 시간과는

관계없이 진행된다. 즉, 실시간으로 기계를 제어하거나 실시간 정보가 필요한 경우 ‘Real-Time’

mode를 사용하면 되는 것이다.

(2) Execution Time: 프로젝트를 실행시켰을 때부터 시작해서 종료될 때까지의 시간을

의미한다. 처음 시작은 0에서부터 시작하며, 사용자의 선택에 따라서 10, 100, 1000, infinite 로

선택 가능하다. Infinite의 경우 사용자가 원하는 시기에 종료버튼을 눌러 종료할 수 있다.

Page 66: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

(3) Global Sampling Time: 블록들이 지정된 시간 마다 연산을 수행하는 것을 의미한다.

0.01로 설정되어 있으면 0.01초 마다 블록들이 호출되어 연산을 수행한다. 보통 대부분의

블록들이 위와 같이 연산을 수행하지만, 이산 블록, 비선형 블록 및 외부시스템에 제어되는 블록

등이 예외적으로 작동한다. 이 블록들은 블록을 더블클릭에서 나오는 콤보 박스에서 Global, Local

2가지의 mode로 Sampling Time을 가지는데, Global의 경우는 Global Sampling Time과 같이

동작하고, Local의 경우 Global Sampling Time과 독립적으로 자신만의 Sampling Time을 가진다.

(4) ODE Solver: CEM Studio는 두 가지 ODE 기술을 지원한다. 하나는 Fixed-step 기술인

ODE4(Runge-Kutta)이고, 다른 하나는 Variable-step 기술인 ODE45(Dormand-Prince)이다.

이러한 기술들에는 각각 제한이 있는데, ODE4의 경우 주기적인 블록들의 sampling time은 ODE

step 크기의 정수배가 되어야만 한다. ODE45의 경우 모든 sampling time은 제일 작은

Sampling time의 정수배가 되어야 하고, Virtual-Time mode에서만 사용할 수 있다.

(5) Report compile- or execution- time warnings: CEM Studio에서 compile이나

execution 중, 블록의 output port가 연결되어 있지 않거나 기타 다양한 이유로 warning이

발생할 수 있다. 이 경우 warning의 기록 여부를 결정한다.

(6) Stop execution when numerically invalid values are met during exec: 이 옵션은 입력

또는 출력 값이 이상할 경우 현재 실행을 중지할 것인지를 결정한다. 선택하지 않을 경우 잘못된

값은 미리 정의된 유효한 값으로 대체된다.

(7) ODE4 (Runge-Kutta): 고정 스텝 RK4 일반 미분방정식 풀이기와 관련된 파라메터를

설정할 수 있다. ODE4 모드에서는 모든 주기 블록(periodic block)의 샘플링 타임들이 이곳에서

지정되는 “Step Size”의 정수배가 되는 값을 가져야 한다는 사실에 유의해야 한다.

(7.1) Step Size: 적분 스텝 크기를 지정한다. 자주 사용되는 몇몇 값들은 콤보박스 아이템

형태로 제공이 된다. 위에서 언급한 바와 같이 모든 주기 블록들의 샘플링 타임은 이 값의

정수배가 되는 값이어야 한다. CEM Studio에서 이 매개 변수의 최소값은 0.000001 초 즉, 1

마이크로 초이다.

(8) ODE45 (Dormand-Prince): ODE45 역시 Runge-Kutta 계열의 미분방정식 풀이기이다.

ODE4와의 차이점은 가변 스텝 방식을 채택함으로써 성능의 향상을 꾀할 수 있다는 데있다. CEM

Studio에서는5차 및 embedded 4차 공식의 계수값들로 Dormand-Prince 값들을 사용하고

Page 67: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

있다. ODE45는 실행방식이 실시간 모드일 경우 지원되지 않는다. 또한 외부 시스템으로부터

데이터를 획득하는 블록 등이 있을 경우 가상 시간 환경에서의 시스템 모의가 근본적으로

이루어질 수 없다는 논리적 한계점도 가지고 있다. 하여 CEM Studio에서는 고정 스텝 방식인

ODE4를 현재 권장하고 있다. 이후의 업그레이드를 통해 가변 스텝 풀이기의 이점을 최대한

수용할 수 있도록 구현될 계획이다.

Page 68: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

5.2 TUTORIAL

5.2.1 블록 설계

CEM Studio를 활용하기 위해서 간단한 Tutorial을 통하여 프로젝트의 생성 방법과 실행예제를

함께 해보도록 하자.

(1) CEM Studio를 실행 후 좌측 상단의 New 아이콘을 클릭하면 그림 5.8과 같은 창이

생성된다. 원하는 프로젝트의 이름을 입력하자.

그림 5.8 새 프로젝트 생성

Page 69: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

(2) 프로젝트가 생성되었으면 그림 5.9와 같이 모델링 윈도우와 모니터링 윈도우가 함께 생성된

것을 확인할 수 있다.

그림 5.9 모델링 윈도우, 모니터링 윈도우 생성

(3) 간단하게 Sine Wave 블록을 On/Off 스위치 컨트롤로 제어하는 모델을 만들어 보자. 그림

5.10과 같이 모델 창에서 ‘Signal Source’ 필드의 ‘Sign Wave’ 블록과 ‘Structural’ 필드의 ‘To

Monitor’ , ‘From Monitor’ 필드를 각각 마우스로 끌어와 Root에 올려 놓는다.

Page 70: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.10 Drag and Drop

(4) ‘Sine Wave’와 ‘From Monitor’는 입력 단말, ‘To Monitor’는 출력 단말이다. 현재 두

개의 입력 단말이 하나의 출력 단말로 연결되어야 하기 때문에, 연결 또는 연산 단말이 필요하다.

On/Off 스위치를 통한 Sine Wave 제어가 목적이기 때문에 ‘Basic’ 필드의 ‘Product’ 블록을

추가 후 그림 5.11과 같이 연결하도록 하자.

Page 71: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.11 Sine Wave 예제 블록 구성

(5) 다음은 모니터링 창이다. 입력단말과 출력단말이 있으므로 ‘Switch’ 컨트롤과 ‘Scope’

컨트롤을 그림 5.12와 같이 끌어와 놓는다.

Page 72: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.12 Sine Wave 예제 컨트롤 구성

(6) 이제 모델 블록과 컨트롤을 연결해야 한다. 다시 모델링 윈도우로 돌아가 ‘Sine Wave’,

‘From Monitor’, ‘To Monitor’ 블록을 각각 더블 클릭하여 Name 과 Parameters 값을 변경해

주자.(그림 5.13, 5.14)

Page 73: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.13 블록과 컨트롤 연결(To, Monitor, From Monitor)

그림 5.14 Sine Wave 파라메터 설정

(7) Scope 또한 글씨를 더블 클릭해서 생성되는 창(그림 5.15)을 통하여, 사용자의 편의에

맞게 변경할 수 있다

Page 74: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

.

그림 5.15 Scope 설정

(8) 실행을 하기 전에, Project의 Settings를 클릭 후, 아래 그림 5.16과 같이 값을 변경해

준다.

(여기서 Global Sampling Time과 Step Size는 같게 하는 것을 권장한다.)

Page 75: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.16 Sine Wave 예제 Setting 설정

(9) 이제 모든 연결이 끝났다. 컴파일(F7) 후, 실행(F5) 버튼을 클릭 해보자.

그림 5.17 결과화면(Switch Off)

그림 5.18 결과화면(Switch On)

Page 76: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

(10) Switch가 Off일 경우 0 신호가 Sine Wave에 곱해져 0신호가 sampling time마다 나오게

되고(그림 5.17), On일 경우 Sine Wave가 나오게 된다(그림 5.18). 프로젝트가 실행 중에도

Sine Wave의 Parameters값을 원하는 값으로 변경할 수 있으므로, 원하는 값을 주어 어떻게

신호가 변경되는지를 살펴보자.

Page 77: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

5.2.2 블록의 그룹화(SUPER BLOCK)

다양한 블록들을 이용하여 설계를 진행 할 때 중복되는 기능의 블록들을 자주 사용하는 경우가

있다. 이러한 블록들을 그룹화해서 사용하게 하는 것을 Super Block이라고 한다.

예를 들어, 나비 모양의 극 곡선을 그리는 식은 다음과 같다.

r = ecos (t) − 2 cos(4t) + (sin (t

12))5

x = r × sin(t)

y = r × cos(t)

이와 같은 식을 X, Y Plot에 그린다고 할 경우, 우리가 설계해야 되는 블록은 다음과 같다.

그림 5.19 Butterfly 예제 블록 구성

Page 78: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.19를 보면 r의 수식에 해당하는 블록 연산이 위와 아래에 중복으로 사용되고 있다. 이와

같이, 같은 역할을 하는 블록들을 여러 군데에서 사용하거나 블록들을 그룹화해서 정리하고 싶을

때, Super Block을 이용하여 바꾸어 줄 수 있다.

그룹화 하는 방법은 간단하다. 그룹화하고 싶은 블록을 다음과 같이 드래그 한 다음 Project ->

Generate Super Block 또는 Ctrl + G를 누르면 된다.

그림 5.20 그룹화 하고 싶은 블록을 드래그

그림 5.21 Super Block

Page 79: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Super Block으로 설정한 후에 수정하거나 내용을 보고 싶을 경우 Ctrl + 더블 클릭하게 되면

그림 5.22와 같이 새로운 페이지가 생성되면서 안의 내용이 보여지게 된다.

그림 5.22 Super Block 내부(Ctrl+더블클릭)

컴파일 후 실행하게 되면 그림 5.23과 같이 나비모양의 곡선들이 XY Plot에 그려지게 된다.

그림 5.23 Butterfly 결과 화면

Page 80: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

5.2.3 CUSTOM BLOCK

Custom Block은 CEM Studio에서 기존의 블록들로 원하는 설계가 불가능할 경우, 원하는

기능을 직접 프로그래밍해서 적용할 수 있는 블록이다. 하지만 Custom Block을 사용하기

위해서는 몇 가지 주의해야 할 사항들이 있다.

우선, Custom Block을 사용하기 위해서는 VC++ 10.0 이상의 개발환경을 추천한다. Custom

Block은 DLL파일을 통해서 구현되는데 이 DLL파일을 생성하기 위한 예제는

내문서\CMW_CEM_Studio\CustomBlockTemplate폴더에 ‘CustomBlockTemplate.sln’

파일을 더블-클릭하거나 Visual Studio에서 직접적으로 열어서 확인할 수 있다. (현재 Color

Tracking 예제가 구현되어 있으므로, 사용자는 작성된 내용을 참조해서 구현하면 될 것이다.)

솔루션 파일을 열었다면 속성 창을 확인해보자.

그림 5.24 Custom Block Include Settings

Page 81: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.25 Custom Block Link Settings

CEM Studio에서 제공하는 기본적인 기능들을 사용하기 위해서는 그림 5.24, 5.25와 같이

SDK폴더가 포함되어야 한다. (설치과정에서 자동적으로 설정되나, 다시 한 번 확인해보자.)

확인을 하였으면 ‘TmplCustom.h’ 파일을 열어보자.

그림 5.26 TmplCustom.h

Page 82: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.26의 ‘ICustom’ 클래스는 Custom Block을 위한 기본적인 클래스로 세부적으로

‘Compile’, ‘SetupExecution’, ‘CleanupExecution’, ‘EvaluateOutput’ 4가지 함수로

나누어진다.

각각의 함수에 대해서 설명을 하면, ‘Compile’ 함수는 CEM Studio의 컴파일 과정에서 실행되는

함수로 블록들의 Input과 Output의 연결상태와 입, 출력 값 확인 등을 체크하는 과정이다.

‘SetupExecution’ 함수는 실행되기 전에 한번 호출되는 함수이다. 사용자는 실행하기 전에

어떠한 설정이나 시스템 자원 할당 등이 필요하다면 이 함수에서 코드를 작성하면 된다.

‘CleanupExecution’ 함수는 종료되기 전에 한번 실행되는 함수로, 할당되었던 시스템 자원들을

해제하는 기능들을 작성하면 된다. ‘EvaluateOutput’ 함수는 블록의 핵심적인 역할을 하는

함수로 블록에서 사용자가 원하는 기능들을 이 함수에서 작성하면 된다.

그림 5.27 TmplModule.cpp

‘TmplModule.cpp’ 파일을 열어보면 그림 5.27과 같이 ‘CsCreateCustomObject’와

‘CsReleaseCustomObject’ 두 가지 함수가 정의되어 있다. ‘CsCreateCustomObject’는

위에서 설명한 ‘ICustom’ interface Object를 생성하는 역할을 하며,

‘CsReleaseCustomObject’는 생성되었던 Object를 해제하는 역할을 한다.

그림 5.28은 Custom Block에 사용 가능한 Data object type들이다.

Page 83: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.28 Custom Block의 Input, Output Data Object

Custom Block의 Input과 Output Data는 모두 ‘DoComposiste’ 형태로 이루어져 있다.

예를 들어, Input값이 ‘DoCvMatrix’와 ‘DoMatrix’ 두 가지로 정의 되어있고, Output 값은

‘DoCvMatrix’, ‘DoMatrix’로 정의된 Custom Block이 있다고 가정하자. 두 가지 Input값은

Data Composer 블록으로 하나로 묶여져 ‘DoComposiste’ Data Object type으로 Custom

Block에 입력된다. Custom Block은 입력된 값들을 각각의 Data type에 맞게 처리한 후에 다시

‘Docomposiste’ Data Object Type으로 묶어서 출력한다. 이와 같이 ‘DoComposiste’ Data

object는 사용자가 정의한 Data Object Type들의 집합이라 할 수 있다. Custom Block의 Data

Object 선언 부분은 Compile 함수 내에서 이루어지며, 자세한 내용은 그림 5.29를 참고하도록

하자.

Page 84: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.29 Color Tracking Data object type 선언

Page 85: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.30 Custom Block 설정 창

Custom Block 솔루션을 Release모드로 빌드하면, 해당 솔루션 폴더의 Release폴더에 DLL

파일이 생성된다.

사용자는 Custom Block 설정 창에서 그림 5.30과 같이 생성된 DLL 파일의 경로를 지정하고,

부가적으로 Input 값과 Output 값의 Data type 설명을 적어 놓을 수 있다.

Page 86: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 5.31 Color Tracking 예제 블록 구성

빌드한 솔루션을 확인해보려면 그림 5.31과 같이 블록을 구성하여 확인해 볼 수 있다. Image

데이터와 추적하려는 Color를 입력 받아서, 지정된 칼라 Pixel값만을 추적하여 Gray scale

image와 중심점 데이터를 출력하는 예제이다. DLL파일 경로를 설정하였으면 실행을 통하여

확인해보자.

Color Tracking예제의 보다 자세한 설명은 Chapter 8. AR Drone 고급 실험을 참조하기 바란다.

Page 87: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

5.2.4 CEM STUDIO 유용한 기능들

블록 복사 하기

Ctrl + C -> Ctrl + V를 이용하여도 블록 복사가 가능하지만, 블록을 마우스 우 클릭으로 선택하고

이동하면 복사가 가능하다.

블록 180도 회전

블록을 클릭하고 Ctrl + R을 누르면 반대방향으로 회전한다.

블록 픽셀 단위로 움직이기

움직이려는 블록을 선택 후 Ctrl 을 누른 상태에서 방향키를 조절하면 픽셀단위로 움직일 수 있다.

Annotation

CEM Studio 화면의 빈 공간을 더블 클릭하면 Annotation 블록이 생성되며, 사용자는 더블

클릭하여 글씨를 입력할 수 있다.

선 연결 쉽게 하기

블록과 블록 사이의 연결 선을 우클릭하고 드래그하면 선이 생성되어 다른 블록과 쉽게 연결할

수 있다.

Page 88: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Chapter 6 CEM STUDIO 응용

6.1 CEM STUDIO 활용 제어 설계

6.1.1 스프링-질량계 시스템

모델설명

스프링과 감쇠기로 연결된 두 대의 질량을 가진 차로 구성된 시스템으로 한 차에 가해지는

힘(N)의 양을 조절하여 다른 쪽 차의 위치를 제어하는 시스템이다. 입력은 왼쪽 차를 미는 힘이며

출력은 오른쪽 차가 스프링에 의해 밀린 거리이다. 여기에서 차와 바닥 사이의 마찰은 없다고

가정한다. 그림 6.1은 스프링 – 질량계 시스템의 개략도를 나타낸다.

그림 6.1 스프링-질량계 시스템 모형도

모델 수식

스프링 – 질량계 시스템을 수식화하면 다음과 같다.

M1x1 = F(t) − Cx1 − K(x1 − x2)

M2x2 = −K(x2 − x1)

Page 89: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

여기서,

M1 : M1차의 질량(kg)

M2 : M2차의 질량(kg)

F(t) : M1차를 미는 힘(N) [입력]

C : 완충기 계수(Nsec/m)

K : 스프링 상수(N/m)

x1 : M1차의 위치(m)

x2 : M2차의 위치(m) [출력]

대표적인 계수는 M1 = M2 = 100kg, C = 200Nsec/m, K = 200N/m이다.

모델 구성

제어 실험의 한 예로서 CEM Studio로 구성된 이차원 스프링 – 질량 시스템의 플랜트를 CEM

Studio로 구성된 PID 제어기로 제어를 모의 실험하려고 한다. 이러한 제어시스템을 위해서는

그림 6.2와 같이 구성하여 연결한 후 모의실험을 한다.

Page 90: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.2 CEM Studio를 이용한 2차원 이동물체 시스템의 모의실험

여기서, 블록다이어그램에서 PID 제어기는 그림 6.3과 같다. 입력으로 설정해놓은 거리 값과

실제 이동한 거리 값의 차이를 오차라고 하며, 이 오차 값을 비례제어(Proportional Control),

적분제어(Integral Control), 미분제어(Derivative Control)이라고 한다.

그림 6.3 PID 제어기

먼저, 입력 값과 출력 값의 차이를 비례제어를 통해 시스템의 적절한 응답속도를 찾도록 조절한다.

그림 6.4는 비례제어 블록의 구성도이다. 비례제어의 값으로 100을 넣어주었다.

Page 91: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.4 비례제어(Proportional Control)

다음 그림 6.5는 적분제어이며 I의 값으로 0.01을 넣었다.

그림 6.5 적분제어(Integral Control)

다음 그림 6.6은 미분제어기의 그림이다. 미분제어의 D값으로는 0.001을 넣어주었다.

Page 92: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.6 미분제어

원하는 질량의 위치를 0.2m로 하고, 샘플링 타임 0.01초로 20초간 실행하였다. 스프링-질량

제어모델의 결과는 아래의 그림과 같다.

그림 6.7 스프링-질량 시스템 제어 결과

Example 6.1

아래의 그림과 같이 모델이 주워졌다. 스프링 상수 K = 50 N/m, 댐핑계수 C= 1, M1=10kg,

F=10N, g=9.8 m/s2이라고 주워졌을 때 아래의 모델을 CEMStudio를 이용하여 설계해보라.

Page 93: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습
Page 94: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

6.1.2 2차원 이동물체 시스템

모델설명

그림 6.8 2차원 이동물체 시스템의 구성도

그림 6.8의 이치원 이동물체 시스템은 마찰이 있는 2차원 평면상에서 질량을 가진 구르는 물체에

힘을 가했을 때 나타나는 이차원 운동 궤적을 나타낸다. 단, 물체와 바닥에서의 마찰은 무시된다.

이때의 입력은 x, y축 방향의 힘이 되고 출력은 x, y축 방향의 좌표가 된다. 우리의 제어 목적은 이

물체에 적절한 힘을 가하여 이 물체가 우리가 원하는 궤적을 따라 운동하도록 하는 것이다.

모델수식

위의 시스템 모델을 표현하는 식은 다음과 같이 나타낼 수 있다. 식에서 볼 수 있듯이 주어진

시스템은 x, y축 방향의 운동이 완전히 독립되어 서로 영향을 주지 않는 이차원 운동이다.

Page 95: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

MVx + Bx = Fx

MVy + By = Fy

M : 구르는 Ball의 질량 (kg)

B : 마찰계수, 단위 없음.

Vx, Vy : x, y 각각의 속도(m/sec)

Fx, Fy : x, y축 각각으로 미는 힘(N)

대표적인 계수는 M = 10kg, B = 0.1이다. 이 값은 초기에 지정되어 있는 값이다.

제어실험

제어 실험의 한 예로서 CEM Studio로 구성된 2차원 이동물체 시스템의 플랜트를 CEM

Studio로 구성된 PID 제어기로 모의실험 하려고 한다. 이러한 제어시스템을 위해서는 그림의

CEM Studio 플랜트에 CEM Studio를 이용하여 PID 제어기를 그림 6.9와 같이 구성하여 연결한

후 모의실험을 한다.

그림 6.9 CEM Studio를 이용한 2차원 이동물체 시스템의 모의실험

Page 96: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

원하는 2차원 이동물체 시스템의 궤적을 반지름 5m인 원으로 하고자 하고, 적절한 PID

제어기의 게인 값을 설정하여 30초간 실행시킨 결과는 그림 6.10과 같다. 여기서 사용된

제어기의 P값은 4.3, I값은 0.01, D값은 0.001이며, 샘플링 타임 0.01초로 30초간 실행하였다.

그림 6.10 2차원 이동물체 시스템 제어결과

Example 6.2

아래의 그림과 같이 임의의 높은 고도에서 자유낙하를 하는 공이 있다. 공의 질량 M =

10kg이고, 공기의 저항력 b=1N*s/m, 중력가속도 9.8 m/s2 이라면 공은 최고 몇 m/s의

속도로 수렴을 하는가? 이 모델을 수학적으로 설계하여 CEM Studio를 이용하여 풀어보자.

Page 97: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

6.1.3 물탱크 시스템

모델설명

물탱크 시스템은 2개의 물탱크와 이 두 물탱크 사이의 유량을 조절하는 밸브, 오른쪽은 물탱크의

물을 밖으로 내보내는 유량을 조절하는 또 하나의 밸브로 구성되어 있는 유량 조절 시스템이다. 한

개의 물 입력장치에 의해 왼쪽 물탱크로 물을 흘려 보냄으로써 오른쪽 물탱크의 수위를 조절한다.

이 유량 입력장치에는 밸브가 부착되어 있어서 왼쪽 물탱크로 내보내는 물의 유량을 조절할 수

있다. 이때 이 플랜트에 대한 입력은 유량 입력장치에서 흘러나오는 물의 유량이고, 출력은 오른쪽

물탱크 수위가 되고 제어의 목적은 오른쪽 물탱크의 수위(출력 값)를 원하는 기준 입력 값으로

제어하는 것이다. 아래의 그림은 물탱크 시스템에 대한 모형도를 나타낸다.

Page 98: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.11 물탱크 시스템의 모형도

모델수식

위의 그림에서, 왼쪽 물탱크와 오른쪽 물탱크의 수위의 증분을 각각 ∆h1과 ∆h2 , 각각의 밸브

저항을 R1 과 R2 , 각각의 물탱크의 용량을 C1 과 C2 , 각각의 밸브의 유량을 Q1 과 Q2 , 물

입력장치의 유량을 Qin이라 하면 시스템 모델은

∆h1 − ∆h2

R1= Q1

∆h2

R2= Q2

C1

d(∆h1)

dt= Qin − Q1

C2

d(∆h2)

dt= Q1 − Q2

로 표현되며, 물 탱크 시스템의 상태 모델 식은 다음과 같다.

Page 99: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

[h1

h2

] =

[ −

1

R1C1

1

R1C1

1

R1C2−

1

R1C2−

1

R2C2]

[h1

h2] + [

1

C1

0

]Qin

h2 = [0 1] [h1

h2]

대표적인 계수 값은 h1 = h2 = 100m, R1 = 0.1 sec/m2, R2 = 0.2 sec/m2, C1 = 15 m2, C2 =

10 m2 이다. 이 값은 초기에 지정되어 있는 값이다. 그리고 물탱크로의 최대 유량 입력은

333.3 m3/sec이다.

제어실험

제어실험의 한 예로서 CEM Studio로 구성된 물탱크 시스템의 플랜트를 CEM Studio로 구성된

PID 제어기로 모의실험을 하려고 한다. 이러한 제어시스템을 위해서는 State

Space(상태방정식)을 구해야 한다. 그림 6.12를 보면 물탱크의 상태방정식을 구했으며, 아래의

상태방정식을 기준으로 PID 제어기를 연결하였다.

그림 6.12 CEM Studio를 이용한 물탱크 시스템의 모의실험

원하는 물탱크의 수위를 20으로 하고, 적절한 PID 제어기의 게인 값을 설정하여 30초간

실행시킨 결과는 아래의 그림과 같다. 여기서 사용된 제어기의 P값은 100, I값은 40, D값은 5이며,

샘플링 타임은 0.001초로 30초간 실행하였다.

Page 100: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.13 물탱크 시스템 제어결과

Example 6.3

앞의 Example 6.2의 자유낙하 문제에서의 상태를 State space식으로 만들어 보자.

(CEM Studio의 State space 함수를 이용하여 풀어보자.)

Page 101: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

6.2 CEM STUDIO 활용 영상신호처리

6.2.1 CEM STUDIO 영상처리 설계

CEM Studio를 이용한 영상처리를 위하여 모델링 방법과 설정 값 변경에 대해서 알아보도록

하자.

(1) CEM Studio를 실행 시키고 New(CTRL+N)버튼을 클릭하여 새로운 프로젝트를 원하는

폴더에 생성한다.

(2) 모델 창에서 ‘Image Processing’ 필드의 ‘Image Source’ 블록과 ‘Structural’ 필드의 ‘To

Monitor’ 필드를 각각 마우스 끌어와 Root에 올려 놓는다.

그림 6.14 영상 출력 블록 구성

(3) 그림 6.15와 같이 모니터 창에서 ‘Image Plot’을 드래그해서 올려 놓는다.

Page 102: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.15 영상 출력 모니터링 구성

(4) ‘Image Source’와 ‘To Monitor’를 서로 연결한 후 컴파일(F7) 버튼 클릭.

(5) 컴파일을 하면 ‘Image Source’부분에 ‘Failed to open camera device’라는 메시지와 함께

Error가 발생할 것이다.

(6) ‘Image Source’를 더블 클릭하여 자신이 원하는 이미지를 선택하도록 하자.

Page 103: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.16 Image Source 설정

(7) To Monitor 또한 더블클릭 후, Parameters – Sink Terminal 필드에서 ‘Image Plot 1’을

선택하도록 하자.

Page 104: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.17 블록과 컨트롤 연결

(8) 이제 모든 연결이 끝났다. 실행(F5) 버튼을 클릭 해보자.

그림 6.18 영상 출력 결과물

위와 같이 간단한 영상만을 보려면 ‘Image Plot’을 사용하고, 영상과 함께 Histogram을 보고

싶다면 ‘Advanced Image Plot’을 사용하도록 하자.

6.2.2 영상처리 간단한 실습예제

Page 105: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

(예제) Add 블록과 Bright 블록을 각각 모델링하여 실행 시켜보고 두 개의 결과 값을 비교해

보자.

Add

Add 블록은 아래의 수식과 같이, 가중치가 부여된 같은 사이즈 이미지 2개의 픽셀 값을 더하는

블록이다.

Y = Input1 × Alpha + Input2 × ( 1 – Alpha)

(1) ‘Image Source’ 2개, ‘Add’, ‘To monitor’ 블록을 드래그하고 서로 연결한다.

그림 6.19 Add 블록 구성(lenna, White)

(2) ‘Add’ 블록을 더블클릭하면, Image Source1(lenna), Image Source2(White)에 가중치

수치를 입력할 수 있다.

(예제 이미지 파일은 내문서\CMW_CEM_Studio\Generic\Image 폴더에 위치해 있다.)

Page 106: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.20 Add 블록 가중치 입력

(3) 값을 설정 하였다면, 컴파일 후 실행을 해보자.

그림 6.21 Add 연산 결과물 (lenna, white)

Page 107: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Histogram을 통하여 알 수 있듯이, lenna 사진의 픽셀 값들이 127이상에 위치하게 되는 것을

알 수 있다. White의 RGB(255,255,255) 값이 0.5만큼의 가중치를 부여 받고 lenna 사진

픽셀에 더해졌기 때문이다. 이처럼 기존 사진에 흰 바탕의 사진을 Add할 경우 전체적으로 하얗게

변화된 느낌을 얻을 수 있다.

Bright

Bright 블록은 이미지의 명도와 채도를 사용자가 원하는 값만큼 조절할 수 있는 블록이다.

Y = Gain × Input + Bias

(1) ‘Image Source’, ‘Bright’, ‘To monitor’ 블록을 드래그하고 서로 연결한다.

그림 6.22 Bright 블록 구성

(2) ‘Bright’ 블록 Parameters에서 Gain, Bias을 값을 입력할 수 있다. (ex. 2.0,50)

Page 108: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.23 Gain, Bias 조절

(3) 값을 설정하였다면, 컴파일 후 실행을 해보자.

Page 109: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 6.24 Bright 연산 결과물

Histogram을 통하여 알 수 있듯이, lenna 사진의 픽셀 값들이 대부분 흰색(255,255,255) 쪽에

모여있는 것을 알 수 있다. 곱하기는 픽셀간의 밝기의 차이가 커지면서, 밝기의 차가 확실하게

나기 때문에 각각이 영역이 뚜렷해 보이는 효과를 가져온다. 즉, 영상이 밝아지고 명암대비가

증가되는 효과를 가져온다고 할 수 있다.

Example 6.4

lenna 사진에 Face Detect 블록을 사용해 보자.

Example 6.5

lenna 사진에 Feature Detect 블록을 사용해 보자.

Page 110: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

6.3 CEM STUDIO와 KINECT 연동

앞서 살펴본 예제는 정지영상을 가지고 CEM Studio를 활용하는 예제 였다면, 이번에는 동영상을

활용하는 방법을 알아보자.

Chapter 2에서는 Kinect를 설치하고 간단한 예제를 Visual Studio에서 활용해 보았다. CEM

Studio에서는 사용자가 SDK를 설치하지 않아도 드라이버만 설치되었다면 CEM Studio에서

Kinect를 활용해볼 수 있다.

Kinect 관련 블록들은 Platform Interfaces 블록 그룹에서 찾아볼 수 있다.

Kinect Block

표 6-1 Kinect Color

Output

Image 640x480 사이즈의

RGB영상 출력

표 6-2 Kinect Depth

Output

Image Kinect Depth영상 출력

Depth Data 측정된

Raw Depth Data

Page 111: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

표 6-3 Kinect Skeleton

Output

Image Kinect Skeleton

영상 출력

Flag Data 20개 관절의

추적 여부를 알려준다.

Skeleton Node

각 관절의 x, y, depth

정보를 알려준다.

(6x20 size)

6.3.1 KINECT 영상을 CEM STUDIO에서 확인

(1) CEM Studio를 실행 시키고 새로운 프로젝트를 원하는 폴더에 생성하자.

(2) 모델 창에서 ‘Image Processing’ 필드의 ‘Kinect Color’ 블록과 ‘Structural’ 필드의 ‘To

Monitor’ 필드를 각각 마우스 끌어와 Root에 올려 놓는다.

그림 6.25 Kinect Color 블록 구성

(3) 모니터 창에서 ‘Advanced Image Plot’을 드래그해서 올려 놓는다.

(4) ‘Kinect Color’와 ‘To Monitor’를 서로 연결한 후 컴파일(F7)을 해보자.

Page 112: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

(5) 실행을 하기 전에, Project의 Settings를 클릭 후, 아래 사진과 같이 값을 변경해 준다.

(여기서 Global Sampling Time과 Step Size는 같게 하도록 하자. 수치를 다르게 해주어도

상관없으나, Kinect의 경우 0.05~1.00을 추천한다.)

그림 6.26 Kinect Setting 설정

(6) 값을 올바르게 입력하였다면 실행(F5)를 클릭하여 실행해보자

(7) Kinect에서 촬영되고 있는 RGB영상이 Advanced Image Plot에 보이는 것을 확인할 수

있다.

Page 113: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Example 6.5

‘Kinect Infrared’, ‘Kinect Skeleton’ 블록을 ADD 연결하여 실험해보자.

Page 114: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

6.3.2 CEM STUDIO를 이용한 KINECT 영상처리

이번에는 Kinect Color 영상이 CEM Studio의 다양한 영상처리 블록들과 연동이 가능하다는

것을 살펴보도록 하자.

(1) 모델 창에서 ‘ Image Processing ’ 필드의 ‘Kinect Color’ 블록, ‘Face Detect ’ 블록과

‘Structural’ 필드의 ‘To Monitor’ 필드를 각각 마우스 끌어와 Root에 올려 놓는다.

그림 6.27 Kinect Color와 Face Detect 블록 구성

(2) 모니터 창에서 ‘Advanced Image Plot’을 드래그해서 올려 놓는다.

(3) ‘Kinect Color’, ‘Face Detect’, ‘To Monitor’를 서로 연결한 후 컴파일(F7)을 해보자.

(4) 실행을 하기 전에, Project의 Settings을 확인하고 실행(F5)를 클릭하여 실행해보자.

(5) Kinect에서 촬영되고 있는 RGB영상이 흑백으로 바뀌고 자신의 얼굴을 찾아 Advanced

Image Plot에 보여주는 것을 확인할 수 있다.

Example 6.6

Kinect와 다른 영상처리 효과(Bright, Rotate 등)를 연동하여 실험해보자.

Page 115: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Chapter 7 QUAD ROTOR 기초 실험

7.1 CEM STUDIO를 이용한 AR DRONE 제어

스마트폰 어플을 통해서는 단순한 조작만이 가능했다면, CEM Studio에서는 다양한 기기와 연동

할 수 있으며, 수식, 영상처리, 제어 설계를 통하여 사용자가 원하는 방식으로 활용할 수 있는

장점이 있다.

7.1.1 AR DRONE BLOCK 소개

CEM Studio에서 AR Drone은 다음과 같이 3가지 블록으로 나누어져 있으며, 각각의 블록들은

Monitoring window와 연동되어있다. AR Drone 블록을 3가지로 나누어 놓은 이유는 컨트롤을

세밀화하여 다양한 개발환경에 활용할 수 있도록 하기 위해서이다.

Page 116: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

(1) AR Drone Panel

표 7-1 AR Drone Panel Block

Take Off 이륙

Land 착륙

Horizontal Camera 전방 카메라

Vertical Camera 하방 카메라

Animation 지정된 동작 수행

Reset Emergency Normal 모드로 변경

AR Drone Panel 블록은 Button을 통해 제어하는 블록으로 주기적인 명령이 아닌 일시적인

명령들로 구성되어있다. 각각의 기능에 대해서 추가설명을 하자면, Use Input의 체크한 경우

Take-off, Land, Horizontal/ Vertical Camera를 Monitoring window에서 버튼을 통해 제어가

가능하다. (체크 안 할 시, 블록에서 제어)

AR Drone SDK에서 미리 지정된 모션들을 ‘Animation’이라고 하는데, 사용자는 원하는 동작을

선택하고 ‘Do Animation’을 클릭하면 지정된 시간 동안 AR Drone이 해당 모션을 수행하는 것을

Page 117: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

볼 수 있다. 총 20가지의 모션들로 구성되어 있으며, 대표적인 Animation은 Wave, Flip, Dance

등이 있다.

AR Drone이 벽에 충돌하거나, 외부 충격이 가해지면 자동적으로 Emergency mode에 들어가게

된다. Emergency mode에서는 아무런 명령 입력이 안되기 때문에 ‘Reset Emergency’ 버튼을

클릭하여 Normal mode로 바꾸어 주어야 한다.

(2) AR Drone Flight

표 7-2 AR Drone Flight Block

Input

Enable Control 제어

Roll 좌측이동/우측이동

Pitch 전진/후진

Gaze 고도상승/고도하강

Yaw 좌측회전/우측회전

AR Drone Flight는 사용자가 Monitoring window의 스위치를 On(Enable = 1) 시키면,

‘Scalar Input’ 컨트롤으로 Roll, Pitch, Gaze, Yaw 값을 조정해 AR Drone으로 전송하는 기능을

가지고 있다. 스위치를 Off(Enable = 0)시키면 AR Drone은 제자리에서 Hovering하게 된다.

Roll, Pitch, Gaze, Yaw는 -1 ~ +1의 입력 범위를 가진다. 각각 기존에 설정되어있는 Maximum

값에 Percentage로 제어된다.

사용자는 Input Port에 From Monitor(Roll, Pitch, Gaze, Yaw)블록들을 삭제하고, 원하는

블록들을 모델링하여 대체할 수도 있다.

Page 118: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

(3) AR Drone Navigation Data

표 7-3 AR Drone Navigation Data Block

Output

Battery 배터리

Altitude 고도

Pitch 전/후 각도

Roll 좌/우 각도

Yaw 방위각

Vx X축 속도

Vy Y축 속도

Vz Z축 속도

AR Drone Navigation Data는 AR Drone이 PC로 주기적으로 전송하는 데이터로 위와 같은

정보를 가지고 있다. 사용자는 위와 같은 데이터를 통하여 원하는 정보를 활용할 수 있다.

7.1.2 AR DRONE - VIDEO STREAM

AR Drone은 UDP 통신을 근간으로 하기 때문에 보내고 받는 Packet 규칙을 잘 따라주면

정상적으로 제어가 가능하다.

표 7-4 AR Drone Communication Ports

Sensor Port 5554

Video Stream Port 5555

Control Port 5556

Page 119: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

일반적으로 AR Drone Block의 영상신호는 mjpg 형식으로 5555 포트에서 넘어오고 있기

때문에, AR Drone 블록에서 자체적으로 처리하지 않고 Image Source 블록의 Network Camera

기능을 활용하여 스트리밍 할 수 있다. 먼저 AR Drone이 연결된 상태에서 Image Source 블록에

Network Camera 라디오 버튼을 클릭하고, tcp://192.168.1.1:5555 (AR Drone의 IP

Address의 Port 5555번)을 입력하고 시뮬레이션을 진행하면 AR Drone의 영상을 확인해 볼 수

있다.

다른 기타 영상처리 블록을 활용한다면 AR Drone의 영상처리 기능도 사용자의 요구에 맞게

개발이 가능하다.

그림 7.1 AR Drone Camera 설정

7.1.3 AR DRONE BLOCK – DEMONSTRATION

내문서\CMW_CEM_STUDIO\ 폴더에 들어가면 AR Drone Basic 예제 파일이 있다. AR Drone

블록들을 활용하여 예제를 작성하는 방법은 다음과 같다.

(1) 다음과 같은 모델들로 구성.

Page 120: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 7.2 AR Drone Modeling Window

Page 121: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 7.3 AR Drone Monitoring Window

Page 122: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 7.4 AR Drone Setting

(2) 시뮬레이션을 시작.

(3) Monitoring window에서 이륙(Take off) 버튼을 클릭

(4) Enable Flight 스위치 On으로 클릭한 후, Roll, Pitch, Yaw, Gaze 조작

Page 123: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 7.5 Roll/ Pitch/ Yaw/ Gaze 조작

(5) Cam을 통해서 AR Drone 영상이 출력되고, 아래 게이지, 그래프를 통해서 AR Drone의 현재

상태를 파악할 수 있다.

Page 124: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

7.1.4 QUAD ROTOR 기초 조작

Quad Rotor의 기초 조작에 대해서 알아보도록 하자.

위에서도 설명하였듯이, AR Drone Flight 블록은 사용자가 Monitoring window의 스위치를

On(Enable = 1) 시키면, ‘Scalar Input’ 컨트롤을 이용해서 입력한 값을 AR Drone으로 전송하는

기능을 가지고 있다. 스위치를 Off(Enable = 0) 시키면 AR Drone은 제자리에서 Hovering하게

된다.

Roll, Pitch, Gaze, Yaw는 -1 ~ +1의 입력 범위를 가진다. (예제에서는 Scalar Input 값을 -0.3

~ +0.3으로 설정해 놓았다.) 각각 기존에 설정되어있는 Maximum 값에 Percentage로 제어된다.

예를 들어, Roll을 제어한다고 가정하자. Roll의 경우 -1~0까지는 좌측 이동, 0~+1까지는

우측이동을 제어하고 있다. 각각의 범위는 설정된 값의 0~100%까지로 생각할 수 있기 때문에,

입력 값을 -0.1로 준다면 좌측으로 10% 값을 유지하며 이동할 것이다.

AR Drone은 정면방향을 기준으로 X형태로 로터가 부착되어 있기 때문에 좌측이나, 전, 후, 좌,

우 이동 시 로터 두 개가 같은 출력으로 동작하게 되어있다.

Page 125: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Roll(좌측/우측 이동)

1 2

34

그림 7.6 Roll (좌측, 우측 이동)

AR Drone의 Roll 운동은 위의 그림과 같이 가운데(세로)를 기준으로 좌, 우측의 로터의 출력에

의하여 제어된다. 1번과 4번 모터의 출력을 올리면 AR Drone은 우측으로 기울어져 우측으로

이동하고, 2번과 3번 모터의 출력을 올리면 좌측으로 기울어져 좌측으로 이동한다.

그림 7.7 Roll Input

그림과 같이 Roll Input 값을 입력해서 AR Drone을 조작하여 보자. 또한 Roll Input 설정에서

최대, 최소 Range를 조정하여 입력 값의 변화에 따라 AR Drone의 기울기가 어떻게 변화되는지

실습해보자. (−) 값은 AR Drone의 좌측 이동이고, (+) 값은 우측 이동이다.

Page 126: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Pitch(전방/후방 이동)

1 2

34

그림 7.8 Pitch (전방, 후방 이동)

AR Drone의 Pitch 운동은 위의 그림과 같이 가운데(가로)를 기준으로 전방, 후방의 로터의

출력에 의하여 제어된다. 3번과 4번 모터의 출력을 올리면 AR Drone은 전방으로 기울어져

전방으로 이동하고, 1번과 2번 모터의 출력을 올리면 후방으로 기울어져 후방으로 이동한다.

그림 7.9 Pitch Input

그림의 Pitch Input 값을 입력해서 AR Drone을 조작하여 보자. 또한 Pitch Input 설정에서 최대,

최소 Range를 조정하여 입력 값의 변화에 따라 AR Drone의 기울기가 어떻게 변화되는지

실습해보자. (−) 값은 AR Drone의 전방 이동이고, (+) 값은 후방 이동이다.

Page 127: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Gaze(수직 상승/하강)

1 2

34

그림 7.10 Gaze (수직 상승/하강)

AR Drone의 Gaze 운동은 위의 그림과 같이 전체 로터의 동일한 모터 출력에 의하여 제어된다.

1~4번 모터의 출력을 동일하게 올리면 AR Drone은 수직 상승하고, 동일하게 낮추면 수직

하강한다.

그림 7.11 Gaze Input

그림의 Gaze Input 값을 입력해서 AR Drone을 조작하여 보자. 또한 Gaze Input 설정에서 최대,

최소 Range를 조정하여 입력 값의 변화에 따라 속도의 변화를 실험해 보자. Input 값은

Maximum vertical speed의 percentage로 (+) 값은 AR Drone을 상승시키고, ( − ) 값은

하강시킨다.

Page 128: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Yaw(좌회전/우회전)

1 2

34

그림 7.12 Yaw (좌회전/우회전)

AR Drone의 Yaw 운동은 위의 그림과 같이 전체 로터의 동일한 모터 출력에 의하여 제어된다. 1,

3번 모터의 출력을 동일하게 올리면 기체의 반 토크 균형이 깨져 AR Drone이 왼쪽으로 돌아간다.

반대로 2, 4번 모터의 출력을 동일하게 올리면 우측으로 이동한다.

그림 7.13 Yaw Input

그림의 Yaw Input 값을 입력해서 AR Drone을 조작하여 보자. 또한 Yaw Input 설정에서 최대,

최소 Range를 조정하여 입력 값의 변화에 따라 속도의 변화를 실험해 보자. Input 값은

Maximum angular speed의 percentage로 (+) 값은 우측회전, (−)값은 좌측 회전시킨다.

Page 129: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Animation

그림 7.14 AR Drone Panel

AR Drone SDK에서는 미리 지정된 모션들을 ‘Animation’이라고 하는데, 사용자는 원하는

동작을 선택하고 ‘Do Animation’을 클릭하면 지정된 시간 동안 AR Drone이 해당 모션을

수행하는 것을 볼 수 있다. 총 20가지의 모션들로 구성되어 있으며, 다음 표에서 자세하게

살펴보자.

Page 130: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

표 7-5 Animation

Node Name

1 PHI M30 DEG

2 PHI 30 DEG

3 THETA M30 DEG

4 THETA 30 DEG

5 THETA 20 DEG YAW 200 DEG

6 THETA 20 DEG YAW M200 DEG

7 TURNAROUND

8 TURNAROUND GODOWN

9 YAW SHAKE

10 YAW DANCE

11 PHI DANCE

12 THETA DANCE

13 VZ DANCE

14 WAVE

15 PHI THETA MIXED

16 DOUBLE PHI THETA MIXED

17 FLIP AHEAD

18 FLIP BEHIND

19 FLIP LEFT

20 FLIP RIGHT

Example 7.1

AR Drone으로 사각형을 그려보자.

Example 7.2

AR Drone으로 원 운동을 해보자. (Sine, Cosine 이용)

Page 131: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Chapter 8 QUAD ROTOR 고급 실험

8.1 AR DRONE PID CONTROL

내문서\CMW_CEM_Studio\Quadrotor 폴더를 들어가보면, AR Drone Rectangle 예제가 있다.

AR Drone PID Control 예제는 PID Control을 이용하여 사각형을 그리는 예제이다.

AR Drone Navigation Data 블록에서 출력되는 데이터들을 PID Control을 통하여 입력 값으로

이용하는 예제로, AR Drone의 움직임을 보다 정밀하게 제어 할 수 있다.

이와 같은 예제 실습을 통하여, 사각형 그리기 외에도 다양한 제어에 이용할 수 있을 것이다.

Page 132: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.1 AR Drone PID Control 예제

Page 133: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.2 Rectangle PID Control Super Block

동작 원리

앞서 설명하였던 Basic Control 예제를 이용하여 사각형을 그리려면 사용자가 Scalar Input을

통하여 반복적으로 Yaw 값으로 90°를 회전하고 Pitch값으로 직진하여 그렸을 것이다. 위와 같은

방법으로는 정확한 사각형을 그린다고 할 수 없을 것이다. 왜냐하면, 90°를 정확히 회전하고,

일정거리를 전진하는 것이 어렵기 때문이다. 따라서 본 예제에서는 AR Drone Navigation

Data에서 출력되는 Yaw, Vx, Vy값을 PID Control을 통하여 AR Drone Flight 블록의 Roll, Pitch,

Yaw 입력 값으로 넣어준다.

Page 134: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Yaw Control

먼저 90°로 방향을 제어하는 방법을 알아보도록 하자.

그림 8.3 Timing Turn Super Block

예제 블록들 중 그림 8.3의 Timing Turn Super Block을 살펴보도록 하자. 이 블록에서는 Unit

Delay 블록을 이용하여 10초 마다 주기적으로 90°를 회전하라는 명령을 내려주게 된다.

360°까지 입력 값을 주지 않은 이유는 360°가 0°와 같기 때문에, 270° 까지 회전시키고 다시

0°로 설정해준다.

다음은 그림 8.4의 AR Drone Navigation Data에서 출력되는 Yaw값을 살펴보도록 하자. 기존의

Yaw값은 -180°≤θ(방위각)<0°, 0°≤θ<180°의 출력 범위를 가졌다. 이 값을 그대로 제어해도

무방하나 본 예제에서는 사용자들이 익숙한 계산을 위하여, Generic Function을 통하여

0≤θ<360°로 변환하여 사용하기로 하였다.

Page 135: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.4 Yaw PID Control Super Block

이제 출력되는 Yaw값과 Timing Turn Super Block에서 나오는 방향 값이 Yaw PID Control을

통하여 그림과 같이 제어된다. AR Drone은 입력 1으로 들어온 90°에 맞추어 Yaw출력 값과

비교하여 시계방향으로 회전하게 되고 지속적으로 90°를 유지하게 된다.

Vx Control

다음은 Vx를 제어하는 방법이다.

우선 Pulse Generator는 그림 8.6과 같이 10초 주기로 7초 동안 1000의 신호와 Sine 신호를

합성해서 내보내게 된다. Sine 신호와 합성을 한 이유는 속도를 부드럽게 증감하기 위해서이다.

그림 8.5 Pulse Generator Super Block

Page 136: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.6 Pulse Generator 설정 값

AR Drone Navigation Data에서 출력되는 Vx 값을 Limiter를 통하여 일정 속도로 제한하고

Pulse Generator에서 출력되는 값에 맞추어 그림 8.7과 같이 PID Control하게 된다.

그림 8.7 Vx PID Control Super Block

Page 137: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Pulse Generator에서 출력되는 1000 값에 Vx를 수렴시키기 위하여, 입력 값 1,2의 차이 값을

PID Control하고 출력되는 값을 AR Drone Flight의 Pitch 입력 값으로 주기적으로 변환해 7초

동안 직진하게 되는 것이다.

Vy Control

다음은 Vy를 제어하는 방법이다.

AR Drone으로 사각형을 그리려면 Yaw와 Vx 제어로도 할 수 있지만, 회전에 의한 관성과 외부

바람의 저항에 의해 의도치 않은 방향으로 기울어서 진행될 수 있다. 따라서 그림 8.8의 Vy

제어는 위와 같은 문제점을 보정해 주기 위하여 추가하였다. 0과 Vy 값이 입력되어, Roll을 0으로

PID 컨트롤 하게 된다.

그림 8.8 Vy PID Control Super Block

본 예제에서 PID Control을 사용하여 사각형을 그린다고 하였지만, 실질적으로 정확한 사각형을

지속적으로 그리기 위해서는 필요한 정보 값들이 많다. 따라서 다음 예제를 통하여 보다 정밀한

제어를 해보도록 하자.

Example 8.1

Page 138: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

PID 제어를 통하여 원을 그려보자.

Example 8.2

PID 제어를 통하여 8자 모양을 그려보자.

Page 139: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

8.2 AR DRONE COLOR TRACKING

내문서\CMW_CEM_STUDIO\Quadrotor 폴더를 들어가보면, Color Tracking 예제가 있다.

AR Drone Color Tracking 예제는 AR Drone에 내장된 카메라를 이용한 예제로, Monitoring

창에서 사용자가 원하는 색상(R/G/B)을 선택하면 AR Drone이 그 색상을 지속적으로 추적하는

예제이다. 기본적으로 AR Drone 카메라의 비춰진 목표물의 Pixel 값의 개수와 중심점의 데이터를

이용하여 제어된다.

이와 같은 예제 실습을 통하여, Color Tracking외에도 다양한 Object Tracking에 이용할 수 있을

것이다.

Page 140: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.9 AR Drone Color Tracking 블록 구성

Page 141: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.10 AR Drone Color Tracking Setting

Page 142: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

우선 Color Tracking의 사용된 블록들을 살펴보자.

표 8-1 Color Tracking 예제 블록 설명

Block 기 능

ARDrone_Cam AR Drone이 촬영하고 있는 영상신호를 읽음

ColorType(RGB) Monitoring 창에서 사용자가 추적하려는 Color 타입(R/G/B)을 결정

Add ARDrone_Cam 과 Color(Custom Block)에서 나온 신호를 더해서

Cam으로 출력

Pitch Forward, Backward 결정

Gaze Up, Down 결정

Yaw Rotate Left, Rotate Right 결정

Roll AR Drone의 Left, Right를 결정(예제에서는 Roll이 안 쓰이므로 0으로 고정)

ARDrone_Cam 블록에서 영상 신호를 보내면, Color(Custom Block)블록은 영상에서 빨간

부분의 픽셀 개수와 해당 영역의 중심점을 계산한다. 화면상의 빨간 픽셀 개수는 AR Drone이

가까워지면 많아지고 멀어지면 적어지게 되는데 이러한 정보를 이용하여 Pitch 값을 결정한다.

또한 해당영역의 중심점(X, Y)를 이용하여 X값으로는 Gaze, Y값으로는 Yaw를 결정하여 AR

Drone Flight 블록으로 전송한다.

Page 143: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

동작 원리 (Color Type: RED)

위에서도 말했듯이 Color 블록은 검출된 영상과 AR Drone에 필요한 정보를 보낸다. 이 정보는

mode, Center X, Center Y 구성되어 있는데 Pitch, Gaze, Yaw 값을 정해준다.

예를 들어 1, 234, 567이라는 값을 Color 블록에서 출력했다고 가정하자. (speed 값은 사용자가

바꾸어도 상관없지만 너무 빠르게 할 경우 위험하니 0.1~0.3 사이를 권장한다.)

그림 8.11 Forward/Backward Super Block

입력 값(mode: 1)에서 상수 2를 빼주면 -1이 나오게 된다. 이 값에 speed값(0.1)을 곱하여

Forward, Backward을 결정한다. 따라서 출력 값이 -0.1이기 때문에 앞으로 전진하게 된다.

그림 8.12 Up/Down Super block

Page 144: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

다음은 Gaze를 어떻게 결정하는 지를 알아보자. Gaze는 AR Drone의 상, 하 움직임을 결정하기

때문에 영상 좌표의 Row에 해당한다. 입력 값 Center X(234)를 각각의 Threshold로 설정된

값들과 관계 연산자(Relational Operator, >=)를 통하여 영상에서 어디의 위치에 있는지를

결정하고 speed값(0.2)을 곱하여 Up, Down을 결정한다.

그림 8.13 RotateLeft/RotateRight SuperBlock

Yaw를 결정하는 과정은 Gaze와 비슷하다. Yaw는 AR Drone의 방향을 결정하기 때문에 영상

좌표의 Column에 해당한다. 입력 값 Center Y(456)를 각각의 Threshold로 설정된 값들과 관계

연산자(Relational Operator, >=)를 통하여 영상에서 어디의 위치에 있는지를 결정하고

speed값(0.2)을 곱하여 Rotate Left, Rotate Right을 결정한다.

Page 145: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.14 AR Drone Color Tracking 실행 화면

Example 8.3

PID 제어를 통하여 목표물과 일정 거리를 지속적으로 유지하는 모델을 설계 해보자.

Example 8.4

Vertical Camera를 이용해서 Color Tracking을 해보자. (목표물이 아래쪽에 위치할 경우)

Page 146: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

8.3 KINECT SKELETON 블록을 이용한 AR DRONE 제어

8.3.1 KINECT SKELETON API

Kinect NUI API는 Kinect 센서의 핵심 데이터인 Color image data와 3D depth image data를

응용프로그램에 제공하는 것은 물론 이 데이터를 기반으로 센서가 인지한 사용자의 골격(Skeleton)

정보도 제공한다.

그림 8.15 사람 수와 관절 정보 추적의 예

Kinect의 Skeleton Tracking은 IR 카메라의 Depth 정보를 이용하여 사람 수와 관절 구조를

계산한다. 그림 8.15과 같이 최대 6명까지 인식할 수 있으며 2명까지 자세한 관절을 추적할 수

있다. 전방 0.8m부터 4m까지 인식 가능하나 권장하는 범위는 1.2m부터 3.5m이다. 센서 앞에서

앉아있거나, 서있거나 두 가지 모드의 추적이 최적화 되어있다.

Page 147: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.16 Stand 모드와 Sit 모드

그림 8.17 Kinect 카메라 인식 범위

Skeleton Tracking은 두 가지 경우로 추적할 수 있는데 ‘Tracked’ 또는 ‘Position only’이다.

‘Tracked’는 사람의 20개의 관절정보를 추적하여 보여주고, ‘Position only’는 사용자의 위치만

알 수 있다.

관절정보는 그림 8.18과 같이 각각의 중심 관절인 Parent관절과 인접한 Child 관절의 조합으로

이루어져 있으며, 각각의 관절 위치는 그림 8.19와 같이 x, y, z 3차원 좌표로 저장된다.

Page 148: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.18 Kinect 관절 세부 명칭

그림 8.19 관절의 3차원 좌표 구성

Page 149: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

8.3.2 AR DRONE KINECT CONTROL

내문서\CMW_CEM_STUDIO\Quadrotor 폴더를 들어가보면, AR Drone Kinect 예제가 있다.

AR Drone Kinect 예제는 Kinect의 Skeleton Node Data를 이용한 예제로, 오른손의

움직임만으로 AR Drone을 컨트롤 할 수 있도록 설계 되었다. Kinect를 이용하여 AR Drone을

제어하는 기초적인 예제이며, 사용자의 편의에 따라서 다양한 방식의 제어가 가능할 것이다.

Page 150: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.20 AR Drone Kinect Control 블록 구성

Page 151: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.21 AR Drone Kinect Control Setting

Kinect를 이용한 AR Drone제어는 Kinect Skeleton의 Skeleton Node 출력 값(6x20 Vector)

을 파악하는 것부터 시작된다. 본 예제는 사용자의 엉덩이, 오른손의 관절 위치정보를 가지고

제어를 하게 되는데, Skeleton Node의 정보와 Vector Extractor를 통하여 원하는 오른손

Node값만 추출하는 방법을 살펴보자. (엉덩이 관절 정보는 나중에 언급하도록 하겠다.)

표 8-2 Skeleton 노드 번호와 이름

Node Name

1 NUI_SKELETON_POSITION_HIP_CENTER

Page 152: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

2 NUI_SKELETON_POSITION_SPINE

3 NUI_SKELETON_POSITION_SHOULDER_CENTER

4 NUI_SKELETON_POSITION_HEAD

5 NUI_SKELETON_POSITION_SHOULDER_LEFT

6 NUI_SKELETON_POSITION_ELBOW_LEFT

7 NUI_SKELETON_POSITION_WRIST_LEFT

8 NUI_SKELETON_POSITION_HAND_LEFT

9 NUI_SKELETON_POSITION_SHOULDER_RIGHT

10 NUI_SKELETON_POSITION_ELBOW_RIGHT

11 NUI_SKELETON_POSITION_WRIST_RIGHT

12 NUI_SKELETON_POSITION_HAND_RIGHT

13 NUI_SKELETON_POSITION_HIP_LEFT

14 NUI_SKELETON_POSITION_KNEE_LEFT

15 NUI_SKELETON_POSITION_ANKLE_LEFT

16 NUI_SKELETON_POSITION_FOOT_LEFT

17 NUI_SKELETON_POSITION_HIP_RIGHT

18 NUI_SKELETON_POSITION_KNEE_RIGHT

19 NUI_SKELETON_POSITION_ANKLE_RIGHT

20 NUI_SKELETON_POSITION_FOOT_RIGHT

그림 8.22 Vector Extractor

그림 8.22와 같이 Vector Extractor는 입력 벡터에서 원하는 벡터 행 또는 열 정보를 추출하는

블록이다. 따라서 우리가 필요한 오른손 Skeleton Data를 추출하기 위해서는 12번째 Column

데이터를 선택하면 된다. 오른손 벡터를 추출하였으면 벡터의 Row값을 살펴보도록 하자.

Page 153: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

표 8-3 Kinect Skeleton 블록의 Output 정보

Row Data

Model Space

1 X

2 Y

3 Depth

Screen Space

4 X

5 Y

6 Depth

Skeleton Node 출력 값의 Row Vector는 위와 같은 데이터를 가지고 있다. 1~3 행은 각 노드의

X, Y 좌표, Depth 정보를 Model Space기준(Raw Data)으로 표시한다. 4~6 행은 정해진 Screen

Space(현재 640x480)로 변환된 값을 의미한다. 본 예제에서는 Screen Space의 Data만

필요하기 때문에 Demux를 통하여 나온 값 중 4,5,6번만 사용하도록 하자.

오른손 Skeleton Data는 Color Tracking과 비슷하게 X, Y, Depth 좌표의 변화를 각각 Roll,

Pitch, Gaze로 맵핑시킨다.

Page 154: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.23 Roll Super Block

그림 8.24 Pitch Super Block

Page 155: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.25 Gaze Super Block

Unit Delay 블록을 사용하여서 현재 값에서 예전 값을 빼주어 좌표이동 값을 계산하였으며,

Speed 0.5를 기준으로 mapping 시켰다. (좌표의 변화 량의 따른 Speed 값은 사용자가 조절

가능하다.)

다음은 Control ON/OFF Super 블록에 대해서 살펴보도록 하자.

그림 8.26 Control ON/OFF Super 블록

Kinect를 이용한 AR Drone 컨트롤은 위의 Roll, Pitch, Gaze Super 블록만으로도 충분하지만

안전장치를 위해서 ON/OFF 기능을 추가하였다. 이 Super 블록은 엉덩이 중심의 Y 좌표 + 50

Pixel을 기준으로 위쪽방향에 사용자의 오른손이 위치한다면 Relational Operator에 의하여 0을

Page 156: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

출력하고, 아래방향일 경우 1을 출력한다. 이 출력 값은 Multiport Switch에 의하여 Roll, Pitch,

Gaz 값을 선택하게 되고, AR Drone에게 명령을 내리게 된다.

전체적인 흐름

(1) 예제를 실행시키고 Kinect 1~2m 앞에 사용자가 바른 자세로 선다.

(2) Kinect는 Skeleton Tracking을 시작하여 RGB + Skeleton Image를 화면에 표시해준다.

(3) Enable Flight 버튼을 클릭하고 Take Off 버튼 클릭하면, 이때부터 오른손의 관절 위치인 X,

Y, Depth의 좌표를 이용하여 AR Drone을 컨트롤 할 수 있다.

(4) X, Y, Depth 좌표에서 X축은 Roll, Y축은 Gaze, Depth는 Pitch 명령에 해당한다.

(5) Sampling Time마다 이전 위치 값과 현재 위치 값의 차이를 계산하여 각각 명령의 최대값과

최소값 사이로 매핑시키게 된다.

(6) 따라서, 오른손을 천천히 이동하면 AR Drone 또한 천천히 움직이게 되고 빠르게 움직이면

비례해서 빠르게 움직이게 된다.

(7) 엉덩이 좌표를 기준으로 위쪽방향에 사용자의 오른손이 위치한다면 오른손의 움직임대로 AR

Drone이 움직이게 되고, 손의 움직임을 멈추거나 엉덩이 밑으로 내리면 정지한다.

Page 157: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.27 AR Drone Kinect Control 실행 화면

Example 8.5

오른손은 Pitch 명령, 왼손은 roll 명령을 입력하는 모델을 설계해보자.

Example 8.6

화면상의 오른손 위치에 따라서 AR Drone을 제어해보자.

(ex. 오른손이 화면의 오른쪽 끝에 위치한다면 계속 우측이동)

Page 158: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

8.3.3 AR DRONE KINECT ADVANCED

내문서\CMW_CEM_STUDIO\ 폴더를 들어가보면, AR Drone Kinect Advanced 예제가 있다.

AR Drone Kinect Advanced 예제는 AR Drone Kinect 예제를 좀 더 확장시킨 것으로, 사용자는

이러한 블록구성을 통하여 제어방식의 다양한 가능성을 생각해 볼 수 있을 것이다.

그림 8.28 AR Drone Kinect Advanced 블록 구성

Page 159: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.29 AR Drone Kinect Advanced- Skeleton Tracking Super Block

기존의 AR Drone Kinect 예제가 오른손의 좌표 값을 이용하여 AR Drone을 제어 하였다면, AR

Drone Kinect Advanced 예제에서는 왼손의 좌표 값을 추가로 이용하여 기존의 버튼으로

제어되던 Take Off, Land, Animation 기능들을 사용자의 움직임으로 제어되도록 추가하였다.

Take-Off

Take-Off는 Control ON/OFF Super block에서 출력되는 신호를 이용하여 제어된다.

Page 160: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

따라서 오른손을 엉덩이 위로 올릴 때마다 Take-Off Event가 발생하게 된다.

그림 8.30 AR Drone Kinect Advanced- Control ON/OFF Super Block

기존의 Control ON/OFF Super block은 오른손과 엉덩이 중심점의 Y 좌표 값을 기준으로

오른손을 위치가 엉덩이보다 높은지 낮은지를 판단하여 Control ON/OFF를 제어하였다.

위의 예제에서도 언급했듯이, AR Drone을 Kinect로 제어하려면 Skeleton Node Data가 필요하다.

Skeleton Node Data는 사용자의 얼굴부터 엉덩이 부분이 화면상에 나타나야 추적이 가능한데

이를 위한 적정 거리는 대략 0.8이상이다. 따라서 0.8m미만으로 사용자가 가까이 갈 경우

Skeleton node Data가 정확하게 측정되지 않는 경우가 발생할 수 있다.

이와 같은 이유로, 오른손의 움직임만으로 Take-Off 기능을 사용하려면 어느 정도의 안전장치가

필요하기 때문에, Control ON/OFF Input에 엉덩이 중심점의 Depth좌표 값을 추가하여 사용자와

Kinect의 거리를 1m이상으로 제한하였다.

Page 161: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Land

Land는 사용자의 오른손과 왼손의 X, Y 좌표 값과 Tracking Data를 이용하여 오른손과 왼손을

박수치는 모션을 취하면 Land Event가 발생하게 된다.

그림 8.31 AR Drone Kinect Advanced- Land

기본적으로 오른손과 왼손의 Skeleton Node Data X, Y 좌표 값이 50 pixel이하가 되면

박수모션으로 인식하여 Land Event를 보내게 된다. 하지만 Kinect의 특성상 Skeleton Node들이

겹치게 되거나 화면상에서 벗어나게 되면 좌표 값을 잃어버리게 되는 경우가 발생하기 때문에,

오른손과 왼손이 추적가능 할 경우를 전제 조건으로 설정하였다.

Page 162: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Animation

Animation은 왼손이 머리 좌표 Y값 이상으로 올라갔을 경우 Animation Event를 발생시키도록

하였다.

그림 8.32 AR Drone Kinect Advanced- Animation

Animation Event는 현재 AR Drone Panel블록의 설정된 Animation이 동작하게 된다.

위와 같은 기능들을 구현하려면, 기본적으로 Edge To Event와 Event Combiner에 관련된 이해가

필요하다.

Page 163: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

Edge To Event

그림 8.33 Edge To Event

AR Drone Panel블록의 버튼을 사용한 이벤트는 각각의 명령에 맞는 Event가 전송되어서

동작하게끔 설계되어있다. 따라서 이러한 버튼을 제어하기 위해서는 Event 명령을 내려줄 수 있는

Edge To Event 블록이 필요하다.

Edge To Event는 입력 신호의 파형에 따라서 Rising, Falling, Both 3가지 Mode로 나누어져

있다. 입력신호가 설정된 Delta 값 이상 상승할 경우 Event를 발생하게 하고 싶다면 Rising,

하강할 경우이면 Falling, 둘 다 Event 발생하고 싶다면 Both를 선택하면 된다. 이렇게 설정된

Mode에 따라서 하단의 Event Name에 설정된 Event가 Output으로 출력되게 된다.

Page 164: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

그림 8.34 Edge To Event – Take Off

Take-Off Event의 경우Falling mode로 선택되어있다. 입력신호가 1이상 Falling 하게 되면

하단의 TAKE-OFF 명령을 Output으로 출력하게 된다.

Event Combiner

그림 8.35 Event Combiner

Event Combiner는 Edge To Event들의 Output Event들을 하나로 합쳐서 출력해 주는 역할을

하고 있다. Event들은 Sampling Time마다 연속적으로 발생되지 않고 상황에 따라서 일시적으로

동작하는 것이기 때문에 Input Event Queue에 저장된 값들이 순차적으로 전송된다고 생각하면

된다. 만약 동시에 Event가 2개 발생하였다고 가정한다면, 입력포트의 순서대로 위에서부터

순차적으로 발생하게 되는 것이다.

Page 165: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

전체적인 흐름

(1) 예제를 실행시키고 Kinect 1~2m 앞에 사용자가 바른 자세로 선다.

(2) Kinect는 Skeleton Tracking을 시작하여 RGB + Skeleton Image를 화면에 표시해준다.

(3) Enable Flight 버튼을 클릭하고 오른손을 엉덩이 위쪽으로 위치하면AR Drone이 Take-

Off한다.

(4) 이때부터 오른손의 관절 위치인 X, Y, Depth의 좌표를 이용하여 AR Drone을 컨트롤 할 수

있다. X, Y, Depth 좌표에서 X축은 Roll, Y축은 Gaze, Depth는 Pitch 명령에 해당한다.

(5) Sampling Time마다 이전 위치 값과 현재 위치 값의 차이를 계산하여 각각 명령의 최대값과

최소값 사이로 매핑시키게 된다.

(6) 따라서, 오른손을 천천히 이동하면 AR Drone 또한 천천히 움직이게 되고 빠르게 움직이면

비례해서 빠르게 움직이게 된다.

(7) 엉덩이 좌표를 기준으로 위쪽방향에 사용자의 오른손이 위치한다면 오른손의 움직임대로 AR

Drone이 움직이게 되고, 손의 움직임을 멈추거나 엉덩이 밑으로 내리면 정지한다.

(8) 사용자가 왼손을 머리 위쪽으로 위치시키면 지정된 Animation 동작을 수행한다.

(9) 박수를 치게 되면 AR Drone은 Land한다.

Example 8.7

오른손과 왼손으로 특별한 모션을 취했을 경우 이벤트를 발생해서 AR Drone을 제어해보자.

(ex. 동그라미, 평행)

Page 166: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

참고문헌

1. http://ardrone2.parrot.com

2. http://www.cemware.com

3. http://www.microsoft.com/en-us/kinectforwindows

4. 제어시스템 이론해석 및 설계 실습 (정헌술, 리얼게인 기술연구소 공저) 아진출판사

5. 두 대의 PC를 사용한 자동제어 실험실습(권욱현, 이교일, 권오규, 홍금식, 이준화 공저) 청문각

6. Labview 를 이용한 제어시스템 설계(유재구,정영훈 공저) 인피니티북스

7. 신호처리 실험실습 Signal-Designer 활용(리얼게인 기술연구소 공저) 아진출판사

Page 167: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

CEMStudio 를 활용한 Quad-rotor 이해와 실습은 다양한 수식들을 블록화하여 설계가

용이하도록 구현된 CEMStudio(시스템 설계 및 구현 플랫폼)를 이용하여 Quad-rotor를 초보자들도

쉽게 접근하고 활용할 수 있도록 구성하였습니다.

기본 이공학 수학함수 블록, 고급 수치해석 블록, 하드웨어 연동 블록, 이미지 처리 전용 블록들을

통하여 제어 이론과 영상 처리의 기본적인 실습 과정을 공부하고, 이를 바탕으로 Object Tracking,

Kinect 등의 기술들을 적용하여 Quad-rotor를 제어하는 고급 실습 과정으로 구성하였습니다.

주요 내용

Quad-rotor 소개 Quad-rotor Control

제어 이론 기초 Quad-rotor PID Control

영상 신호처리 기초 Quad-rotor Color Tracking

CEMStudio 소개 및 활용 Quad-rotor Kinect Control

Page 168: CEM Studio를 활용한 - cemware.com · Quad Rotor 제어 소프트웨어 에 방문하시면 소프트웨어를 제공합니다. CEM Studio를 활용한 Quad Rotor 이해와 실습

이 교재는 CQR활용을 위한 안내서로 개발이 되었습니다.

이 책의 일부 혹은 전체 내용을 (주)셈웨어의 허락 없이 복사 전재하는 것은

저작권법에 저촉됩니다.

www.cemware.com

[email protected]