목차 0. 작품제목 1. 개요 1.1 작품개요 1.2 목적 2 결과물사양 2.1 결과물의구성 2.1.1 하드웨어구성 2.1.2 소프트웨어구성 2.2 결과물사양 3 개발방법 3.1 기술적요구사항 3.1.1 센서 3.1.2 가속도를이용한거리측정알고리즘 3.1.3 Calibration 3.1.4 Filtering 3.1.5 Mechanical Filtering Window 3.1.6 Positioning 3.1.7 Movement End Check 3.1.8 VLAN(Virtual LAN) 3.1.9 DCN(Data Center Network) 3.2 개발방법 4. 현재진행상황 4.1 네트워크구성 4.2 자이로센서를이용한가속도인식 5. 추가개발계획 5.1 탁구게임구현 5.2 데이터베이스서버와연동 5.3 자이로센서와네트워크연동 5.4 Unity 3D를이용한 UI구성 6. 참여인원과업무분장
0. 작품제목 [On-line Mobile Ping Pong] - 온라인에서스마트폰을이용하여 2명혹은 4명이같이탁구를플레이할수있다. 1. 개요 1.1 작품개요 - 최근스마트폰이대중화되어많은사람들이스마트폰의어플리케이션을이용하고있는요즘의흐름에맞게스마트폰모션인식을이용하여어플리케이션을개발한다. 사람이핸드폰의움직임을통하여탁구게임을즐길수있도록적합한알고리즘과네트워크통신기술과관련된소프트웨어를개발하여실시간으로게임을즐길수있도록한다. 1.2 목적 - 현재스마트폰은단순히화면터치를통한게임이주를이루고있다. 이런상황에서스마트폰을이용하여이런단순한화면터치게임에서벗어나스마트폰의모션인식기능을이용하여실제탁구를하는것같은느낌을받도록한다. 정적인터치스포츠게임에서벗어나동적인스포츠를즐길수있도록한다. 현실성을높이기위하여공이라켓에맞았을때에는진동이울리도록한다. 이번에만들게되는어플리케이션을기본툴처럼이용하여여러스포츠게임에서응용가능할것으로예상된다. 2 결과물사양 2.1 결과물의구성 2.1.1 하드웨어구성 스마트폰 - 스마트폰의모션인식을이용 Bluetooth - 스마트폰과 PC간의통신을위한장치. 스마트폰의모션인식정보를 PC로전송하는다리의역할 Host PC - 스마트폰에설치된어플리케이션소스를컴파일하고, 현재탁구게임의진행상황을확인하고, 사용자간통신하기위한 PC 2.1.2 소프트웨어구성 JAVA SDK 프로그램 - 스마트폰의모션인식제어용프로그램으로스마트폰의모션에따라탁구채의동작을결정하여정의된동작목록과입력에따른동작을결정하고, 사용자간통신을위한통신모듈을포함한다.
Host PC 응용프로그램 - 윈도우시스템에서동작하며탁구게임의상태를모니터에출력하기위한 GUI 기반의응용프로그램이다. 특별한연산과정없이현재게임의상태를확인한다. 일러스트레이터 - 주로편집디자인과캐릭터디자인, 심볼디자인, 제품디자인등의작업에사용한다. 화상이미지의고정밀도분리출력까지지원하고, 내부형식은대부분포스트스크립트이다. 탁구게임의그래픽을위한 UI이다. 2.2 결과물사양 Android Mobile - 안드로이드는리눅스 (Linux) 2.6 커널을기반으로강력한운영체제 (OS; operating system) 와포괄적라이브러리세트, 풍부한멀티미디어사용자인터페이스, 폰애플리케이션등을제공한다. 컴퓨터에서소프트웨어와하드웨어를제어하는운영체제인 ' 윈도 ' 에비유할수있는데, 휴대폰에안드로이드를탑재하여인터넷과메신저등을이용할수있으며, 휴대폰뿐아니라다양한정보가전기기에적용할수있는연동성도갖추고있다. 3 개발방법 3.1 기술적요구사항 3.1.1 센서 SENSOR_ORIENTATION ( 방향센서 ) - 각배열의값은각도를나타냄 - 단말기화면이하늘을향한상태로테이블위에수평으로놓여있는상태를기준으로각축을중심으로회전위치감지 -- values[0] : Z 축을중심으로회전 ( 0 zimuth < 360 )
0 = 북, 90 = 동, 180 = 남, 270 = 서 -- values[1] : X 축을 wndtal으로회전 ( -180 zimuth 180 ) Z축이 Y축방향으로향하면 0보다큰값테이블위에수평으로하늘을향하면 0, 아래를향하면 -180 or 180 똑바로세우면 -90, 거꾸로세우면 +90 -- values[2] : Y축을중심으로회전 ( -90 zimuth 90 ) Z축이 X축방향으로향하면 0보다큰값 SENSOR_ACCELEROMETER ( 가속도센서 ) - 각배열의값은 (m/s2) 단위로되어있으며, 접촉힘 (Contact Force) 을측정 -- values[0] : X축에적용되는힘 -- values[1] : Y축에적용되는힘 -- values[2] : Z축에적용되는힘 - 단말의왼쪽측면을오른쪽방향으로눌렀을때 X축가속도값은음수 - 단말에테이블위에평평하게놓여있을때 -STANDARD_GRAVITY 값, 즉 -9.8 (m/s2) - 단말이테이블에서중력에대한반작용으로적용되는힘을나타남 3.1.2 가속도를이용한거리측정알고리즘 가속도 - 거리관계 - 가속도를적분하면속도, 속도를적분하면거리 - 따라서가속도를이중적분하면거리 - f(x) 를 a부터 b까지적분은 n개로나눈후 n개사각형넓이의합
Trapezoidal Method - 적분할때이론상무한히나누면완벽한값이나오지만, 현실에서 sampling 의한계로양자화과정중 Area error 가발생 - 따라서오차가적은 Trapezoidal Method를사용 - 높이를 Sample1, Sample2 라할때 Area = Area1 + Area2
3.1.3 Calibration 센서의기울기와그에따른중력에의해영향을받으므로교정이필요 정지한상태에서의가속도값을알아내어중력가속도값으로인지하고제거 3.1.4 Filtering Sampling 후에크게움직이면생기게되는갑자기생기는물리적인오류로인한이상한 sample들을제거하기위하여 10개샘플링할때마다상위 2개하위 2개정도는재하고, 중간 6개정도의값을평균을내서하나의값으로사용 3.1.5 Mechanical Filtering Window 움직임이없을때 sample들의합이이상적으로 0 이어야하지만, 0 아닌작은 noise값이발생하여이것을제거하기위해 valid data와 invalid data 사이를구분짓는 window가필요
3.1.6 Positioning acceleration data값을이전의 Trapezoidal Method으로이중적분 first integration - velocityx[1] = velocityx[0] + accelerationx[0] + ( ( accelerationx[1] - accelerationx[0] ) / 2 ) second integration - positionx[1] = positionx[0] + velocityx[0] + ( ( velocityx[1] - velocityx[[0] ) / 2 ) 3.1.7 Movement End Check 물체가멈추면 acceleration의총적분값이 0의속도로되어야하지만현실에서적분의결과값은결코속도 0에도달하지않음그러므로위치값이조금씩움직이는오류가발생할수있음때문에가속도값이 0에오래지속될경우속도를강제로 0으로다운시킴 3.1.8 VLAN(Virtual LAN) VLAN이란 Virtual Local Area Network 의약자로, 물리적배치와상관없이논리적으로 LAN을구성할수있는기술이다. 각각의 VLAN은별개의 Broadcast domain이다. IEEE Std 802. 1Q 1998 Edition. 단일 Broadcast domain에연결된단말이증가할수록망의대역폭이낭비되며보안할방안이요구됨 (Broadcast Traffic의증가 ) 단말 ( 또는단말들의그룹 ) 간에보안을보장할방안이요구됨 - VLAN간의 Routing을위한별도의방안이마련되어있지않으면, VLAN간에는통신이불가능함.
3.1.9 DCN(Data Center Network) 단일보드의메트로이더넷, L2VPN 및 L3VPN 으로전개되고있는신기술의성장범위의프레임워크데이터통신네트워크 (DCN) 를제공하고통합네트워크아키텍처이다. 이아키텍처는 [ 그림 5-1] 과같이기존의 IP 패킷전송을보다효율적으로전송하기위하여이용한다. 서비스공급자에게여러가지명확한이점을제공하기위해멀티프로토콜라벨스위칭 (MPLS) 을사용하고있다.
3.2 개발방법 - SASD는구체적요구사항을정하고시스템오류를줄이고질을향상시키며신뢰성, 유연성, 시스템의유지보수에목적을둔개발방법론으로데이터의흐름을통해프로그램의구조를설계한다. Divide and Conquer 방식으로문제를작고간단하게분해하여해결하고 Top-Down 방식으로개괄적인측면부터시작하여점차세분화해가며처리한다. ( 프로세스를먼저정하고프로세스에대한입출력을나중에정한다.) 자료보다는함수에중점을두는개발방법이다. 또한 DFD(Data Flow Diagram) 를통해데이터의흐름과프로그램의전체적인구조를알수있으며, Structure Chart를통해프로그램을바로구성할수있다. Data Flow Diagram - 데이터의흐림및변환과정과기능을도형을중심으로기술하는방식. 시스템동작의특징이되는프로세스와데이터집합. 1) 시스템의전체데이터흐름을한눈에알아볼수있도록도와준다. [ 그림 3-11] 에서화살표방향에따라데이터의흐름을알수있다. 2) Input과 Output이명확하게구성되어있어, 시스템구성에적합하다. [ 그림 3-11] 에서 Input은핸드폰의모션와센서, 네트워크로부터오는데이터가있고 Output은데이터처리과정을거쳐최종출력과통신을하는것을말한다. 3) 데이터가어떻게전달되는지알수있다. 외부센서및장비에서부터입력되는데이터가드라이버를거쳐각처리를하는프로세스에보내어지고 Input 된데이터를활용하여핵심로직을거쳐원하는동작을하게한다. [ 그림 3-11]
FSM - 유한한개수의상태와상태들간의변환으로구성. 1) Finite State Machine 의상태들은 [ 그림 3-12] 에서처럼다양한동작을나타내고, 그상태에대한코드가실행된다. 2) [ 그림 3-12] 와모션과속도를검사하여해당상태로전환된다. 3) Back hand, Fore hand, Smash, Cut 상태후에는정지한다음다시앞쪽을 Motion 한다. 4) Finite State Machine 을통해시스템의상태변화를알수있다. [ 그림 3-12] Structure Chart - Top-Down식모듈설계도구로서서로다른모듈을트리구조로정렬하는구조적프로그래밍에사용된다. Functional decomposition(divide and Conquer) 를통해 Information hiding, Modularity, Low coupling, High internal cohesion 의특성을가진다. [ 그림 3-13] 은센서와핸드폰모션에서얻은데이타를통해동작제어와출력제어를하는과정을나타낸것이다.
[ 그림 3-13]
4. 현재진행상황 4.1 네트워크구성 - TCP 소켓통신을바탕으로클라이언트간네트워크를구성하였습니다. 각클라 이언트가방을만들고그게임방을대기실에서직접볼수있습니다. - 게임방에조인한이후로도채팅이가능하고, 게임시작을할수있습니다.
위의그림은게임방에접속한이후의모습입니다. 4.2 자이로센서를이용한가속도인식 - 위의그림에서볼수있듯이안드로이드아이콘의위치를파악하여그림에는 잘보이지않지만좌표값을출력해주는역할수행하고있습니다. 이를이용한좌 표값을컴퓨터에보낼예정입니다. 5. 추가개발계획 5.1 탁구게임의구현 - 앞으로게임방에접속하게되면핸드폰과연동되어핸드폰의움직임을파악하여핸드폰과컴퓨터를동기화시키는작업을할예정입니다. 그리고자이로센서를이용해서실제로탁구를치듯이핸드폰을이용하여게임을진행합니다.
5.2 데이터베이스서버와연동 - 데이터베이스서버와연동하여게임정보를불러오는역할을수행하게할것입니다. MY SQL을이용하여서버를구축할예정입니다. 이렇게구축된서버를네트워크와연동하여첫로그인시에게임정보를불러올것입니다. 5.3 자이로센서와네트워크연동 - 자이로센서를이용해서받아오는핸드폰의가속도변경정보를컴퓨터가인지할수있도록연동할예정입니다. 컴퓨터와핸드폰의연결은블루투스와 USB 케이블을이용한 2가지방법을사용할것입니다. 5.4 Unity 3D 를이용한 UI 구성 - Unity 3D 를이용하여게임의그래픽의질을향상시킬예정입니다. 6. 단계별개발계획 7. 참여인원과업무분장 팀장 조성우 모션제어알고리즘팀출력제어 조성우조성우전혜영 전혜영고정호고정호