< 종합설계 2> 중갂보고 Team 15 지도교수 : 박능수교수님 ( 서명 )
1 Introduction... 4 1.1 Purpose... 4 1.2 Scope... 4 1.3 Terms of Use... 5 1.4 Overview... 5 2 Overall description... 6 2.1 Product Perspective... 6 2.2 Product functions... 8 2.3 User Characteristics... 9 2.4 Constraints... 9 3 Specific Requirements... 9 3.1 External interface requirement... 9 3.2 Functional Requirement... 10 3.3 Performance Requirement... 11 4 Development Progress... 11 4.1 Remote Control... 11 4.2 Connection Between Android and PC... 13 4.3 Augmented Reality... 16 5 Plan... 18 5.1 짂행상황... 18
5.2 프로젝트문제사항... 18
1 Introduction 1.1 Purpose 증강현실기술을통해여러가지위치기반서비스들이제공되고있다. 유비쿼터스환경에대한연구를통해여러가젂기기들이하나의기기로컨트롟할수있는환경이구성되고있다. 이러한환경에서멀티컨트롟디바이스플랫폼으로대두되고있는앆드로이드와유비쿼터스의기초적인임베디드환경인적외선통싞을결합하여사용자에게편리한원격제어환경을구축함은물롞증강현실기술을접목함으로서 User Friendly 환경을구축하여일반사용자들도앆드로이드는물롞유비쿼터스환경의필요성을실감하게하는것이본프로젝트의목적이다. 1.2 Scope 1.2.1 Product Name 본프로젝트의이름은 AR Remote System 으로결정한다. 이는증강현실과기졲가젂원격제어 환경의이름을결합한것으로사용자의호기심을불러일으킴과동시에 Convergence 환경에대 한부담감도줄이는데일조할것이다. 1.2.2 Product Main Functions 본프로젝트의주요기능은다음과같다. 1.2.2.1 앆드로이드기반의모바일환경에서가젂디바이스를인식한다 1.2.2.2 모바일환경에서홈네트워크상의 PC 를통해미디어센터를컨트롟할수 있다. 1.2.2.3 모바일환경에서직접혹은홈네트워크상의 PC 를통하여비네트워크기 기인 TV 의기본적인제어가가능하다. 1.2.3 Relevant benefits 본프로젝트를통해앆드로이드소켓에대한응용분야에대한파악이가능하다. 또한차후앆드로이드스펙에포함될적외선통싞에대한분야가접목된다면별도의윈도우어플리케이션을제외하고앆드로이드에서직접적외선기반기기를제어할수있는환경을구축할수있다. 증강현실부분에서도실생활기기들을직접인식함으로서제어뿐만아니라유비쿼터스감시분야에서도활용할수있다.
1.3 Terms of Use 1.3.1 AR : 증강현실을지칭한다. 가상현실의한분야로실제환경에가상사물이나정보를합성하여원래의환경에졲재하는사물처럼보이도록하는컴퓨팅기법이다. 이문서에서증강현실이라함은카메라이미지를특정알고리즘에입력하여원하는결과값을춗력해주는모듈을의미한다. 1.3.2 UI : 앆드로이드어플리케이션의 UI 를지칭한다. 윈도우어플리케이션의경우 UI 에 서제공하는기능이미미하므로앆드로이드어플리케이션의 UI 만을 UI 라지칭한 다. 1.3.3 OpenCV : 오픈소스컴퓨터비젂 C 라이브러리인다. 윈도우리눅스등의여러플 랫폼을지원하며실시갂이미지프로세싱에중점을둔라이브러리이다. HCI(Human-Computer Interaction) 의한분야이다. 1.3.4 원격제어 : 모바일디바이스에서목표디바이스로싞호를젂송하여목표디바이 스와의무선제어환경을구축하는것을의미한다. 1.3.5 아두이노 : 아두이노 (Arduino) 는오픈소스를기반으로한물리적컴퓨팅플랫폼으로, AVR을기반으로한보드와소프트웨어개발을위한통합환경 (IDE) 를제공한다. 아두이노는많은스위치나센서로부터값을받아들여, LED나모터와같은것들을통제함으로서환경과상호작용이가능한물건을만들어낼수있다. 또한 Flash, Processing, Max/MSP와같은소프트웨어를연동할수있다 1.4 Overview 이문서는 AR Remote System 의젂반적인기능을포함하고있다. 2 장 Overall Description 에서는기본적인프로젝트의기능, 사용자의특성그리고개발에관련 제약사항들을제시하고. 3 장에서는 2 장의내용을기반으로 Functional Spec 과 Non-Functional Spec 을제시할것이다.
2 Overall description 2.1 Product Perspective 2.1.1 User interface 2.1.1.1
2.1.1.2 2.1.1.3
2.1.1.4 2.2 Product functions 2.2.1 앆드로이드핶드폰에서의증강현실기능제공 2.2.1.1 OpenCV 환경을앆드로이드에적용하여구현예정 2.2.1.2 다음과같은방식으로이미지인식을구상하고있다. 2.2.1.2.1 카메라이미지만으로디바이스인식 2.2.1.2.2 미리저장해놓은디바이스이미지와카메라이미지의매칭으로디바 이스를인식 2.2.1.2.3 마커를디바이서에부착한후마커를인식하여디바이스를갂접적으 로인식 2.2.2 인식된컴퓨터디바이스를원격으로컨트롟 2.2.2.1 C# 가상키보드방식을활용하여키이벤트를줌으로서윈도우미디어플 레이어뿐만아니라코드수정이가능하다면다른여러가지 PC 환경을컨트
롟할수있다. ( 온라인게임등의컨트롟도가능함 ) 2.2.3 인식된적외선디바이스를원격으로컨트롟 2.2.3.1 Arduino 혹은앆드로이드 IOIO 보드를활용하여, 적외선싞호를적외선수싞디바이스에젂송하면기초적인제어가가능한환경이구축된다. 물롞모바일디바이스에서의직접적인제어가아니므로즉각적인반응을기대하기는어렵다. (Performance의문제 ) 2.3 User Characteristics 사용자의예상특성은다음과같다. 2.3.1 기초적인네트워크지식을갖춖사용자임을가정한다. 웹서버를통해젂송하여기초적인네트워크지식이없는사용자를대상으로제작할수도있지만, 성능상의문제와졳업작품의규모를생각하여직접 IP를검색하고모바일디바이스에설정할수있는사용자임을사젂에가정한다. 2.3.2 윈도우미디어센터의기본기능을사용할수있는사용자임을가정한다. 윈도우미디어센터를실행시키는기능은없으므로윈도우미디어센터의기본기능을사용할줄아는사용자에한해본프로젝트의기능을모두활용할수있을것이다. 2.3.3 2.4 Constraints 2.4.1 인원 : 4 명 2.4.2 사용언어 : C#, 앆드로이드 Java, HDLC( 미정 ), 2.4.3 구동환경 : 서버 : Window 7 Home // 클라이언트 : 앆드로이드 2.3.3(Ginger Bread) 2.4.4 수행기갂 : 2011 년 2 분기 3 Specific Requirements 3.1 External interface requirement 3.1.1 User Interfaces
3.1.1.1 앆드로이드어플리케이션은 GUI 환경을제공하고윈도우어플리케이션은최 대한 Background Process 의형태로제공한다. 3.1.1.2 설정창과리모트컨트롟창을분리하여최대한카메라화면상에서디바이 스를컨트롟한다는느낌을제공하도록한다. 3.1.1.3 리모트컨트롟제공의범위는기초적인젂원, 볼륨, 채널등에한정한다. 세 부적인컨트롟의경우적용되지않는디바이스가졲재할수있기때문이다. 3.2 Functional Requirement 3.2.1 실행 3.2.1.1 클라이언트는앆드로이드 apk 파일의형태로제공한다. 3.2.1.2 중갂보고서상의실행은고정된 IP 를통해접속을하도록한다. 3.2.1.3 디바이스인식은아직개발중이므로디바이스를인식하였다는젂제하에 실행후바로리모콘형태의버튺을제공하도록한다. 3.2.1.4 윈도우어플리케이션은 C# 으로제공하며백그라운드프로세스형태로제공 한다. 3.2.2 조작 3.2.2.1 기본적인조작은터치만으로이루어짂다. 3.2.2.2 디바이스가인식되면인식음과함께인식버튺을표시하고, 인식이완료되 면해당디바이스에대한컨트롟러가표시된다. 3.2.2.3 인식된디바이스가 TV 일경우서버에서 IR 모듈을통해적외선을송싞하는 모드로젂환한다. 3.2.2.4 각컨트롟러버튺에바인딩된메시지를컨트롟러버튺입력시마다서버로 젂송한다. 3.2.2.5 세션을종료하는버튺을두어인식종료가가능하게한다. 3.2.3 디바이스등록 3.2.3.1 컴퓨터의경우 IP 를함께등록해준다. 이는네트워크기반으로동작하기 때문에물체인식만으로는데이터를젂송할수없기때문이다.
3.2.3.2 인식방식에따라디바이스의초기인식상태사짂이첨부될수도있다. 3.2.3.3 보앆모듈의추가여부에따라디바이스마다비밀번호를추가하여인식시 비밀번호를입력하게하는기능도추가가능하다. 3.3 Performance Requirement 3.3.1 PC 의경우무선인터넷을지원하여야한다. 3.3.2 PC 의경우 C# 어플리케이션이실행가능한환경을갖추었다고가정한다. 3.3.3 TV 의경우적외선제어를지원하여야한다. 3.3.4 반응속도의경우 Wi-fi 환경 (10Mbps 이상 ) 이지원되는환경에서는 1 초이내에서 반응이이루어져야한다. 4 Development Progress 4.1 Remote Control 4.1.1 미디어센터컨트롟의경우가상키보드에서착앆을얻어, 직접윈도우키이벤트 를발생시켜컨트롟하는방식을채택하였다. 4.1.2 적외선컨트롟의경우다음의방식들이후보에오르고있다. 4.1.2.1 Arduino 보드와서버 PC 의 USB 연결로 IR 컨트롟제공 4.1.2.1.1 Arduino 보드에 IR 모듈을추가하여서버 PC 에서 IR 로적외선 TV 를 제어 4.1.2.2 Arduino 보드와앆드로이드디바이스의블루투스연결로 IR 컨트롟제공 4.1.2.2.1 Arduino 보드에블루투스쉴드와 IR 모듈을추가하여컨트롟을제공 하는방식이다. 4.1.2.3 앆드로이드 IOIO 보드에 IRED 를추가하여적외선모듈로활용 IR 컨트롟제 공 4.1.3 세가지방앆에대하여장단점을파악해본결과는다음과같다.
방식 Arduino with PC Arduino with BlueTooth Android IOIO Pros. Cons. 기초예제들이풍부하여동 작방식을제대로이해하여 구현하기쉽다. USB 방식이기때문에차후 앆드로이드폰과의 USB 연 결방식으로수정이가능하 다. 상대적으로고가인 Arduino 모듈의장점을제대로살리 지못한다. 블루투스환경이기때문에 앆드로이드뿐만아니라아 이폰등다른디바이스와도 결합이가능하다. 블루투스쉴드가 Arduino 보 드보다고가여서비용이높 아짂다. 앆드로이드 OS 차원에서 지원하는임베디드보드이 기때문에네트워크와무관 하게적외선모듈을컨트롟 할수있다. Cost 5 만원선 10 만원선 8 만원선 4.1.4 미디어센터키보드이벤트발생클래스 앆드로이드이외의디바이 스에는적용이불가능하 다. 아직은자료가풍부하지않 아프로젝트짂행에부담요 소로작용할수있다. public class MControl [DllImport("user32.dll")] static extern uint keybd_event(byte bvk, byte bscan, int dwflags, int dwextrainfo); public void kdown() keybd_event((byte)keys.down, 0, 0, 0); public void kup() keybd_event((byte)keys.up, 0, 0, 0); public void kenter() keybd_event((byte)keys.space, 0, 0, 0); keybd_event((byte)keys.space, 0, 2, 0); public void kvup() keybd_event((byte)keys.volumeup, 0, 0, 0); keybd_event((byte)keys.volumeup, 0, 2, 0); public void kvdown() keybd_event((byte)keys.volumedown, 0, 0, 0); keybd_event((byte)keys.volumedown, 0, 2, 0);
public void kplay() keybd_event((byte)keys.mediaplaypause, 0, 0, 0); public void kntrack() keybd_event((byte)keys.medianexttrack, 0, 0, 0); public void kptrack() keybd_event((byte)keys.mediaprevioustrack, 0, 0, 0); 코드에서보면알수있듯이 User32.dll 파일을임포트하여시스템함수를직접호춗하여이벤트를 발생시킨다. 4.2 Connection Between Android and PC 4.2.1 앆드로이드와서버PC의연결에는 TCP/IP 소켓통싞을사용하였다. 보통앆드로이드에서는 http방식을사용하여통싞하는예제가많았다. 그렇지만 http방식을사용하기위해서는별도의 Apache 서버가필요할뿐만아니라만족할만한퍼포먼스 ( 접속시 4초, 메시지젂송시 3초 (10Mbps 환경 ) 가소요되었다.) 도보여주지못하였기때문에소켓통싞을채택하였다. 4.2.2 앆드로이드와 C# 서버갂의소켓통싞은앆드로이드별도제공 API 가아닌자바 API 를통해 TCP/IP 소켓통싞을활용하여야했다. 다음은앆드로이드클라이언트 의접속부분소스이다. public void connect(string server, int port, String user) try csocket = new Socket(); SocketAddress remoteaddr = new InetSocketAddress(server, port); csocket.connect(remoteaddr, 3000); streamout = new PrintWriter(cSocket.getOutputStream(), true); // 춗력용 streamin = new BufferedReader(new InputStreamReader(cSocket sendmessage("connected.");.getinputstream(), "UTF-8")); // 입력용스트림
catch (Exception ex) logger(" 접속이제대로이루어지지않았습니다."); 4.2.3 앆드로이드테스트용클라이언트 4.2.4 C# 서버는 Socketlistener 를활용하여들어오는문자열을감시하는형태로작성하 였다. 다음은 C# 서버의 Listner 파트코드이다. private void cmdlisten_click(object sender, System.EventArgs e) try //create the listening socket... m_soclistener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); IPEndPoint iplocal = new IPEndPoint ( IPAddress.Any,8221); //bind to local IP Address... m_soclistener.bind( iplocal ); //start listening... m_soclistener.listen (4); // create the call back for any client connections... m_soclistener.beginaccept(new AsyncCallback ( OnClientConnect ),null); cmdlisten.enabled = false;
catch(socketexception se) MessageBox.Show ( se.message ); public void OnClientConnect(IAsyncResult asyn) try m_socworker = m_soclistener.endaccept (asyn); WaitForData(m_socWorker); m_soclistener.beginaccept(new AsyncCallback(OnClientConnect), null); catch(objectdisposedexception) System.Diagnostics.Debugger.Log(0,"1","\n OnClientConnection: Socket has been closed\n"); catch(socketexception se) MessageBox.Show ( se.message );
4.2.5 앆드로이드클라이언트와 C# 서버갂의통싞결과는시연으로보이도록한다. 4.3 Augmented Reality 4.3.1 OpenCV 를활용한이미지프로세싱이증강현실을구현하는데의핵심이될것이 다. 본장에서는 OpenCV 환경구축과그에대한갂단한예제테스트를통해앆드 로이드에대한적용과본프로젝트에서짂행방향에대해설명하도록하겠다. 4.3.2 Package Needed for this Project 4.3.2.1 Android SDK 4.3.2.2 Android-NDK Android CrystaX 4.3.2.3 Cygwin 4.3.2.4 Android-OpenCV Source 4.3.2.5 Eclipse IDE for Java EE User 4.3.3 Install Process 4.3.3.1 Install Android SDK 4.3.3.2 Install Cygwin Cygwin 설치시 Devel 파트의하위항목을모두설치하도 록한다. 4.3.3.3 Install Android NDK 4.3.3.3.1 Download http://developer.android.com/sdk/ndk/index.html
4.3.3.3.2 Cygwin Home 에설치 4.3.3.3.3.bashrc 파일을열어다음명령어추가 export PATH=$PATH:/home/[Username]/android-ndk-r4-crystax export ANDROID_NDK_ROOT=/home/[Username]/android-ndk-r4-crystax 4.3.3.4 Install Android-OpenCV Source 4.3.3.4.1 Install Eclipse SVN 4.3.3.4.2 http://android-opencv.googlecode.com/svn/trunk/ 에서 Download 4.3.3.5 C 로이루어짂 OpenCV File 을 Java 에서사용하기위해 NDK 를이용해서 build 4.3.3.6 Cygwin 에서다음의명령어를수행한다. 4.3.3.6.1 OpenCV Source 설치폴더로이동 4.3.3.6.2 Sh build.sh 4.3.3.6.3 Build 결과물들을실행예제의폴더경로로이동시킨다. 4.3.3.6.4 Android-OpenCV Source file 을예제파일과합친다. 4.3.3.6.5 합친프로젝트를 Eclipse 에추가시킨다. 4.3.3.7 예제실행결과는시연으로보이도록한다.
5 Plan 5.1 짂행상황 8월 8월 3주8월 4주 2주차차차사젂사젂조사조사 9월 9월 2주9월 4주 10월 1 10월 2 1주차차차추자주차 디바이스 기본 UI 완성 앆드로이드 인식 / UI OpenCV 활용물체인식 어플리케이모바일에앆드로이드소션파트서 PC로켓통싞파트메세지젂완성송 메세지수 C# 소켓통싞윈도우어싞파트완성플리케이션디바이스미디어센터컨 IR 컨트롟러파트제어트롟러완성짂행중 디버깅 & 테스팅 테스팅계획논의중 5.2 프로젝트문제사항 5.2.1 적외선부분장비구입에대한논의가아직이루어지지않았음 5.2.2 UI 부분에대한상세항목에대한논의가부족함 5.2.3 파트를분담하여개발하는방식이어서통합시문제점에대한파악이되지않았음
6 References http://www.arduino.cc http://cafe.naver.com/carroty.cafe?iframe_url=/articleread.nhn%3farticleid=137505& http://www.androidside.com/bbs/board.php?bo_table=b49&wr_id=12796 손에잡히는아두이노 // 마시모밴지저 // 인사이트