Indoor Location Positioning Using Smart Phone Acceleration Sensor 스마트폰기반가속도센서를이용한실내위치인식 - 이창훈교수님 T12 200412307 김상은 200511305 김성규 200511306 김성훈
Contents 1. Introduction 1.1 Project Name 1.2 Product Name 1.3 Purpose 1.4 Existing Technology 1.5 Scenario 1 1.6 Scenario 2 COEX 1.7 Product Main Functions 2. Related technology 2.1 Android Sensor 2.2 Back Up Theory and Algorithm 1
Contents 3. Benefits and Utilization 3.1 Benefits 3.2 Utilization 4. Problem and Limitations 4.1 Problem 1 Calibration 4.2 Problem 2 - Approximation error 4.2 Limitations 5. References 6. Direction of Development 2
Contents 7. Development Environment 6.1 Development Language 6.2 Development Tool 6.3 Test Device 8. Class Diagram 9. Sequence Diagram 10. Demonstration 11. Development Schedule and Role 12. Q & A 3
1. Introduction 1.1 Project Name Indoor Location Positioning Using Smart Phone Acceleration Sensor 스마트폰기반가속도센서를이용한실내에서의위치인식 1.2 Product Name 스마트폰기반가속도센서를이용한실내에서의위치인식기술을 대형마트의쇼핑카트에적용하여기술을시연 4
1. Introduction 1.3 Purpose 최근스마트폰이대중화되어많은사람들이스마트폰의어플리케이션을이용하고있으며 GPS 와 Wi-Fi 로부터얻은위치정보를이용한다양한어플리케이션의활용이두드러짐 하지만 GPS 는신호가닿지않는지하나건물내부에서는위치인식이부정확하며접속한 Wi-Fi 의중계기 (AP) 의위치로인식하는경우실제위치를인식할수없으며다수의 AP 를이용하는경우최소 3 개이상의 AP 가필요하며 AP 의신호강도가단순히거리에정비례하지않으므로정확한위치파악이어려운단점이있음 따라서기존의 GPS 와 Wi-Fi 를이용하지않고가속도센서를이용하여움직임을수학적으로연산하여분석하는접근방식으로실내위치인식기술을구현하는것이목적 5
1. Introduction 1.4 Existing Technology - mycoex 무선랜의신호강도와중계기 (AP) 고유번호등을담은 Wi-Fi 위치지문및장소정보를통해위치를인식하는프로그램 한계 AP 가최소 3 개이상설치된곳에서만위치인식이가능 신호강도가거리와꼭정비례하는것이아니기때문에정확한위치파악이불가 6
1. Introduction 1.4 Existing Technology Distance App 아이폰앱 MoveMove 사용자가아이폰을들고걷거나뛸경우, 아이폰의센서를이용하여사용자의걸음수, 이동거리와소모한칼로리를제공함 7
1. Introduction 1.5 Scenario 1 한대형마트는최첨단무선신호송신방식인실내측위기술 (Zigbee) 을기반으로최근모텔레콤과전략적제휴를맺고전자카트를선보였음 8
1. Introduction 1.5 Scenario 1 스마트카트 서비스는고객이매장에서쇼핑을원활하게하는것을도울뿐만아니라, 고객에게 WiFi 망을통해실시간으로업데이트되는쇼핑 할인정보를제공함 쉽게말해하며카트와스마트폰이결합된형태 에위치인식적용 기존에는위치를실내측위기술 (Zigbee) 로인식 미리설치해놓아야하는번거로움과비용이발생 모든위치에서위치파악이불가 움직임파악불가 가속도센서를이용하여위치인식적용 자신의이동경로를파악할수있음 9
1. Introduction 1.6 Scenario 2 - COEX GPS 가닿지않는경우현재를위치를파악할수없으며코엑스, 공연장, 박물관등과같은건물내의배치도를통해사용자가직접현재위치파악해야하는불편을겪음. 건물의입구와같이현재위치를알수있는지점에서최초의위치를설정 첫설정후자유롭게이동하면가속도센서를통한이동거리및방향을연산 최초의설정위치와연산한값을통해실내에서의현재위치를파악 10
1. Introduction 1.7 Product Main Functions 사용자로부터최초의위치를입력받음 스마트폰의가속도센서와자이로센서로부터데이터를수집 수집한데이터를분석하여이동거리를연산 최초위치와연산값을이용하여현재위치를표시 오차가적은결과를도출 11
2. Related technology 2.1 Android Sensor 2.1.1 SENSOR_ORIENTATION ( 방향센서 ) 각배열의값은각도를나타냄 단말기화면이하늘을향한상태를기준으로 각축을중심으로회전위치감지 values[0] : Z 축을중심으로회전 (0 azimuth < 360) 0 = 북, 90 = 동, 180 = 남, 270 = 서 values[1] : X 축을중심으로회전 (-180 pitch 180) Z 축이 Y 축방향으로향하면 0 보다큰값테이블위에수평으로하늘을향하면 0, 아래를향하면 -180 or 180 똑바로세우면 -90, 거꾸로세우면 +90 values[2] : Y 축을중심으로회전 (-90 roll 90) Z 축이 X 축방향으로향하면 0 보다큰값 12
2. Related technology 2.1.2 SENSOR_ACCELEROMETER ( 가속도센서 ) 각배열의값은 (m/s 2 ) 단위로되어있으며, 접촉힘 (Contact Force) 을측정 values[0] : X 축에적용되는힘 values[1] : Y 축에적용되는힘 values[2] : Z 축에적용되는힘 단말의왼쪽측면을오른쪽방향으로눌렀을때 X축가속도값은음수 단말에테이블위에평평하게놓여있을때 -STANDARD_GRAVITY 값, 즉 -9.8 (m/s 2 ) 단말이테이블에서중력에대한반작용으로적용되는힘을나타남 13
2. Related technology 2.2 Back Up Theory and Algorithm 2.2.1 Relation of Acceleration and position 속도를미분하면가속도, 거리를미분하면속도 따라서거리를이중미분하면가속도 가속도를적분하면속도, 속도를적분하면거리 따라서가속도를이중적분하면거리 f(x) 를 a 부터 b 까지적분은 n 개로쪼갠후 n 개사각형 넓이의합 14
2. Related technology 2.2.2 Trapezoidal Method 적분할때이론상무한히쪼개면완벽한값이나오지만, 현실에선 sampling의한계로양자화과정중 Area error가발생따라서오차가적은 Trapezoidal Method를사용 계산은높이를 Sample1, Sample2 라할때 Area = Area1 + Area2 = 15
2. Related technology 2.2.3 Typical numerical integration ( 대표적수치적분법 ) 16
2. Related technology 2.2.4 Calibration 센서의기울기와그에따른중력에의해영향을받으므로교정이필요 정지한상태에서의가속도값을알아내어중력가속도값으로인지하고제거 17
2. Related technology 2.2.5 Filtering Sampling 후에크게움직이면생기게되는갑자기생기는물리적인오류로인한 이상한 sample 들을제거하기위하여 10 개샘플링할때마다상위 2 개하위 2 개정도는재하고, 중간 6 개정도의값을평균을내서하나의값으로사용 18
2. Related technology 2.2.6 Mechanical Filtering Window 움직임이없을때 sample들의 sum이이상적으론 0이어야하지만, 0이아닌작은 noise 값이발생하여이것을제거하기위해 valid data 와 invalid data 사이를구분짓는 window가필요 19
2. Related technology 2.2.7 Positioning acceleration data 값을이전의 Trapezoidal Method 으로이중적분 first integration velocityx[1] = velocityx[0] + accelerationx[0] + ((accelerationx[1] - accelerationx[0])>>1) second integration positionx[1] = positionx[0] + velocityx[0] + ((velocityx[1] - velocityx[0])>>1) 20
2. Related technology 2.2.8 Movement End Check 물체가멈추면 acceleration 의총적분값이 0 의속도로되어야하지만현실에서적분의결과값은결코속도 0 에도달하지않음 그러므로위치값이미끄러지게되는오류가발생할수있음 때문에가속도값이 0 에오래지속될경우 속도를강제로 0 으로다운시킴 21
3. Benefits and Utilization 3.1 Benefits 기존의중계기 (AP) 를이용한위치인식에더하여정확한위치인식을위해상호보완 중계기 (AP) 가없는실내지역에서의위치인식가능 지하철역이나복잡한건물안에서의위치인식이가능해져지도서비스제공가능 3.2 Utilization GPS를통해얻은위치정보를기준으로주변특정지도를네트워크로전송받아특정지역이아닌다양한지역정보서비스제공가능 스마트폰이아닌센서들을카트에부착하거나소비자에게부착하여마트와같은상점에서의이동패턴을분석하는수단으로활용가능 22
4. Problem and Limitations 4.1 Problem 1 - Calibration 스마트폰은하나의가속도센서를이용하여기울기, 중력산출 따라서가속이동과기울변화시의변화값이동일함 그로인해중력을제거하는 Calibration[2.2.4] 과정의어려움이증대 실제이동가속도 (0~2) 에비해중력에의한가속도 (0~9) 의영향이큼 4.2 Problem 2 - Approximation error 문제점 1의발생을배제하기위한정확한수평이동이어려움 Mechanical Filtering Window 단계의노이즈제거가실제측정에도영향을끼침 오차의발생은여러단계의복합적인결과이기때문에테스트가어려움 23
4. Problem and Limitations 4.3 Limitations 현재스마트폰의센서로는 ( 중력을뺀 ) 순수가속도와중력을분리할수없음 따라서지금의센서로는중력을일정하게유지하여가속도에영향을최대한받지않도록평행이동을할수있도록시연하도록함 그방법으로평행이동을하는쇼핑카트를이용하여시연 24
5. References Implementing Positioning Algorithms Using Accelerometers (by Kurt Seifert and Oscar Camacho) http://www.newtc.co.kr/board/view.php?id=qna&page=19&sn1=&divpage=3&sn= off&ss=on&sc=on&select_arrange=hit&desc=desc&no=9557 Numerical Integration Method http://blog.naver.com/pcw0615/10106460261 Design of angular estimator of inertial sensor using the least square method http://blog.naver.com/pcw0615/10100392768 25
6. Direction of Development Problem 1 을해결하기위한알고리즘또는방법을구상 가속도적분연산식의개선을고려 현재 2 개의변화값을이용한 Trapezoidal Method 가아닌 3 개의변화값을이용한심프슨법칙을사용고려 Problem 1 을해결을통해 Calibration 단계 반복적인테스트를통해 Mechanical Filtering Window 의적절한값을정함 단순히좌표이동만표시할뿐만아니라가속도, 속도등의정보를표현 유효한이동거리, 이동패턴의단순화등구현한계에따른제약사항도고려 26
7. Development Environment 7.1 Development Language JAVA, Android SDK 2.3.4 7.2 UML Tool StarUML 7.3 Development Tool Eclipse 7.4 Test Device GALAXY SⅡ 27
TabActivity 8. Class Diagram <<interface>> OnTabChangeListener SensorTabActivity +mimageview: MapView +pimageview: PositionView +graphview: GraphView +outputorient: TextView +outputacc: TextView +tabhost: TabHost +sens: Sensing +sensormanager: SensorManager +curtime: long +tabtag: String +SetMode: boolean +PositionOn: boolean +tabwidth: final int +movescale: final int +pre_x: float +pre_y: float +InitTabHost() +InitMapTab() +InitGraphTab() +InitValueTab() +oncreate(final Bundle savedinstancestate) +onprepareoptionsmenu(final Menu menu) +onoptionsitemselected(final MenuItem item) +ontabchanged(string arg0) +ontouchevent(motionevent event) +onresume() +onstop() +onaccuracychanged(sensor sensor, int accuracy) +ShowSensorValue(int SensorType) +onsensorchanged(sensorevent event) +CheckAD(float cur_x, float cur_y) +CheckMovement(float cur_x, float cur_y) <<interface>> SensorEventListener -image: Bitmap -nimage: Bitmap -limage: Bitmap -posx: float -posy: float -rotate: float -zoomratio: float -m: Matrix -timer: Timer -task: TimerTask -handler: Handler -tictoc: boolean -started: boolean -period: final int PositionView +PositionView(Context context) +ondraw(canvas canvas) +blink(boolean tictoc) +blinkstart() +setposition(float x, float y, float ratio) +setrotate(float azimu) +MoveX(float x) +MoveY(float y) +Move(float x, float y) View GraphView -timeindex: int -horizontallinevalueax: final static int -horizontallinevaluevx: final static int -horizontallinevaluepx: final static int -YSize: final int -drawax: float array -drawvx: float array -drawpx: float array +GraphView(Context context) +ondraw(canvas canvas): void +DrawGraph(float accelerationx, float velocityx, float positionx): void ImageView MapView +NONE: final static int +DRAG: final static int +TOUCH_TOLERANCE: final static int +mode: int +image: Bitmap +orimage: Bitmap +posx: float +posy: float +displaywidth: float +displayheight: float +tabwidth: float +zoomratio: float +point: PositionView +posx1: float +posy1: float +posx2: float +posy2: float +m: Matrix +MapView(Context context) +setbitmap(bitmap temp): void +setposition(positionview p): void +getzoomratio(): float +ondraw(canvas canvas) +Move(float x, float y): void +clearstartpoint() +actiondown(float x, float y): void +actiondrag(motionevent event): void Sensing -graphview: GraphView +accelerationx: float array +accelerationy: float array +velocityx: float array +velocityy: float array +positionx: float array +positiony: float array +azimuth: float -accstartcount: int -accendcount: int -accmoveendx: float -accmoveendy: float -acccalibrationvaluex: float -acccalibrationvaluey: float -sumaccx: float -sumaccy: float -rawazimuth: float -initazimuth: float -rawgryo: float -gyro: float +sumgyro: float -gyrocount: int -gyrocalibration: float -gyrocalisum: float -accendcheckvariable: final float -initazimuthvariable: final float +Sensing(GraphView view) -CalcIntegration(float base, float diff0, float diff1, float time) -gyrocalibration() -acc_end_check(long deltat) -CalcPosition(float rawaccx, float rawaccy, long deltat) -ShiftValue() +HandleOrientation(SensorEvent event) +HandleGyroscope(SensorEvent event) +HandleGravity(float rawaccx, float rawaccy, long deltat) +getorientationinfo() +getgravityinfo() 28
8. Class Diagram SensorTabActivity +mimageview: MapView +pimageview: PositionView +graphview: GraphView +outputorient: TextView +outputacc: TextView +tabhost: TabHost +sens: Sensing +sensormanager: SensorManager +curtime: long +tabtag: String +SetMode: boolean +PositionOn: boolean +tabwidth: final int +movescale: final int +pre_x: float +pre_y: float +InitTabHost() +InitMapTab() +InitGraphTab() +InitValueTab() +oncreate(final Bundle savedinstancestate) +onprepareoptionsmenu(final Menu menu) +onoptionsitemselected(final MenuItem item) +ontabchanged(string arg0) +ontouchevent(motionevent event) +onresume() +onstop() +onaccuracychanged(sensor sensor, int accuracy) +ShowSensorValue(int SensorType) +onsensorchanged(sensorevent event) +CheckAD(float cur_x, float cur_y) +CheckMovement(float cur_x, float cur_y) Attribute curtime tabtag SetMode PositionOn tabwidth movescale pre_x, pre_y Operation InitTabHost InitMapTab / InitGraphTab InitValueTab ontabchanged oncreate / onresume / onstop onprepareoptionmenu onoptionitemselected ontouchevent onsensorchanged onaccuracychanged ShowSensorValue CheckAD CheckMovement 설명 적분계산을위한현재시갂변수 현재탭의태그를저장하는변수 터치시단순이동인지현재좌표설정인지판단하기위한변수 현재좌표가설정되었는지나타내는변수 탭의너비 위치값변경에따른맵의좌표이동배율 이젂위치를저장하는변수 설명 Tabhost 의초기화 각 Tab 의초기화 탭변경시호출 Activity 동작에따른호출 메뉴버튼클릭시호출메뉴항목선택시호출 화면터치시호출 센서의값변경이있을시호출센서의정확도변경이있는경우호출 센서의값들을출력 현재위치에동작하는광고가있는지검사 29 위치변화값이 Map에적용시킬변화인지검사
8. Class Diagram Sensing -graphview: GraphView +accelerationx: float array +accelerationy: float array +velocityx: float array +velocityy: float array +positionx: float array +positiony: float array +azimuth: float -accstartcount: int -accendcount: int -accmoveendx: float -accmoveendy: float -acccalibrationvaluex: float -acccalibrationvaluey: float -sumaccx: float -sumaccy: float -rawazimuth: float -initazimuth: float -rawgryo: float -gyro: float +sumgyro: float -gyrocount: int -gyrocalibration: float -gyrocalisum: float -accendcheckvariable: final float -initazimuthvariable: final float +Sensing(GraphView view) -CalcIntegration(float base, float diff0, float diff1, float time) -gyrocalibration() -acc_end_check(long deltat) -CalcPosition(float rawaccx, float rawaccy, long deltat) -ShiftValue() +HandleOrientation(SensorEvent event) +HandleGyroscope(SensorEvent event) +HandleGravity(float rawaccx, float rawaccy, long deltat) +getorientationinfo() +getgravityinfo() Attribute accelerationx, acclerationy velocityx, velocityy positionx, positony accstartcount / accendcount accmoveendx / accmoveendy acccalibrationvaluex acccalibrationvaluey sumaccx / sumaccy azimuth / rawaziuth / initazimuth gyro / sumgyro / gyrocount / gyrocalibration / gryocalisum accendcheckvariable initazimuthvariable Operation CalcIntegration gyrocalibration acc_end_check CalcPosition ShiftValue HandleOrientation HandleGyroscope HandleGravity getorientationinfo getgravityinfo 설명 설명 x, y 축의가속도, 속도, 위치값을위한배열이젂값, 현재값저장 움직임정지상태검사및교정을위한변수 방위값저장을위한변수 Gyroscope 센서값과교정을위한변수 오차범위값 적분연산을하는함수 Gyroscope 센서값보정하는함수 현재움직임이끝난상태인지검사하는함수 변경된가속도값과시갂갂격으로현재속도, 위치를연산하는함수 처리를끝낸가속도, 속도, 위치값을이젂값으로저장 측정된센서값을처리하는함수 센서값을반홖하는함수 30
8. Class Diagram MapView +NONE: final static int +DRAG: final static int +TOUCH_TOLERANCE: final static int +mode: int +image: Bitmap +orimage: Bitmap +posx: float +posy: float +displaywidth: float +displayheight: float +tabwidth: float +zoomratio: float +point: PositionView +posx1: float +posy1: float +posx2: float +posy2: float +m: Matrix Attribute mode NONE, DRAG TOUCH_TOLERANCE image, orimage posx, posy zoomratio / m posx1, posy1 / posx2, posy2 Operation setbitmap setposition 설명 Touch 형태판단을위한변수 Touch 형태를나타내는변수, mode의값종류 Touch 처리최소거리지도를나타내기위한비트맵지도의좌표값지도의확대를위한변수이젂터치센서좌표값 / 현재터치센서좌표값 설명 지도의이미지를설정하는함수현재위치좌표를위한 PositionView 설정하는함수 +MapView(Context context) +setbitmap(bitmap temp): void +setposition(positionview p): void +getzoomratio(): float +ondraw(canvas canvas) +Move(float x, float y): void +clearstartpoint() +actiondown(float x, float y): void +actiondrag(motionevent event): void getzoomratio ondraw Move clearstartpoint actiondown actiondrag 현재확대비율반홖 View 그리기함수 MapView 내 image를이동시키는함수터치센서값초기화클릭터치처리함수드래그터치처리함수 31
8. Class Diagram -image: Bitmap -nimage: Bitmap -limage: Bitmap -posx: float -posy: float -rotate: float -zoomratio: float -m: Matrix -timer: Timer -task: TimerTask -handler: Handler -tictoc: boolean -started: boolean -period: final int PositionView +PositionView(Context context) +ondraw(canvas canvas) +blink(boolean tictoc) +blinkstart() +setposition(float x, float y, float ratio) +setrotate(float azimu) +MoveX(float x) +MoveY(float y) +Move(float x, float y) Attribute image, nimage, limage posx, posy rotate / zoomratio / m timer, task, handler tictoc, started period Operation blink blinkstart setposition / setrotate movex / movey / Move ondraw 설명 위치표시를위한비트맵위치좌표위치이미지의방위, 크기를위한변수및 Matrix 위치이미지의깜박임을위한객체및변수 timer 객체생성여부깜박임의주기를나타내는값 설명 tictoc 값에따라위치이미지표시위치이미지깜박임시작위치이미지의좌표및크기설정 / 방향설정위치이미지의좌표이동 View 그리기함수 32
8. Class Diagram GraphView -timeindex: int -horizontallinevalueax: final static int -horizontallinevaluevx: final static int -horizontallinevaluepx: final static int -YSize: final int -drawax: float array -drawvx: float array -drawpx: float array +GraphView(Context context) +ondraw(canvas canvas): void +DrawGraph(float accelerationx, float velocityx, float positionx): void Attribute 설명 Operation 설명 timeindex 현재그래프값위치 ondraw View 그리기함수 horizontallinevalueax horizontallinevaluevx horizontallinevaluepx 그래프기준선값 DrawGraph 입력받은값을그래프로출력 Ysize 그래프폭 drawax, drawvx, drawpx X 의가속도, 속도, 좌표값저장을위한배열 33
9. Sequence Diagram oncreate SensorTabActivity 1 : OnCreate() 최초실행시수행 2 : InitTabHost() 3 : InitMapTab() pimageview : PositionView task : TimerTask 위치좌표의깜박임을위한 TimerTask 생성 <<create>> 4 : PositionView() <<create>> 6 : MapView() <<create>> 5 : TimerTask() mimageview : MapView 7 : setbitmap() 8 : InitGraphTab() graphview : GraphView <<create>> 9 : GraphView() 10 : InitValueTab() sens : Sensing <<create>> 11 : Sensing() 34
9. Sequence Diagram ontouchevent SensorTabActivity pimageview : PositionView mimageview : MapView 1 : ontouchevent() 현재위치설정모드에서터치인식 2 : setposition() 3 : setvisibility() 위치좌표의설정 4 : setposition() MapView 에위치좌표연결 5 : blinkstart() 8 : invalidate() <<create>> 6 : Timer() 7 : schedule() Timer 깜박임을위한 Timer 생성및 TimerTask 등록 35
9. Sequence Diagram ontouchevent SensorTabActivity mimageview : MapView pimageview : PositionView 1 : ontouchevent() 위치좌표설정모드가아닌경우터치 - 맵이미지를드래그로이동 2 : actiondrag() 3 : Move() 맵이미지및위치좌표이미지이동 4 : Move() 5 : invalidate() 6 : invalidate() 36
9. Sequence Diagram onsensorchanged - orientation SensorTabActivity sens : Sensing pimageview : PositionView outputorient : TextView 1 : onsensorchanged() 센서값변경 - orientation 2 : HandleOrientation() 측정값저장 3 : setrotate() 4 : invalidate() 위치좌표의방향변경 5 : ShowSensorValue() 6 : getorientationinfo() ValueTab 의텍스트뷰에변경된값적용 7 : info 8 : settext() 37
9. Sequence Diagram onsensorchanged - Gyroscope SensorTabActivity sens : Sensing 1 : onsensorchanged() 센서값변경 - Gyroscope 2 : HandleGyroscope() 3 : gyrocalibration() 측정값교정하여저장 38
9. Sequence Diagram onsensorchanged gravity sensor (1/2) SensorTabActivity sens : Sensing graphview : GraphView outputacc : TextView pimageview : PositionView 1 : onsensorchanged() 센서값변경 - gravity 2 : HandleGravity() 3 : CalcPosition() 4 : CalcIntegration() 적분을통해속도, 이동거리연산 5 : acc_end_check() 6 : SetDrawPosition() 7 : invalidate() 가속도값교정및 GraphTab 의그래프에출력 9 : ShowSensorValue() 8 : ShiftValue() 현재값을이젂값으로젂홖 10 : getgravityinfo() 11 : info 12 : settext() ValueTab 의텍스트뷰에측정값출력 39
3 : CalcPosition() 4 : CalcIntegration() 9. Sequence Diagram 5 : acc_end_check() 6 : SetDrawPosition() 7 : invalidate() onsensorchanged gravity sensor (2/2) SensorTabActivity sens : Sensing 8 : ShiftValue() graphview : GraphView outputacc : TextView pimageview : PositionView 9 : ShowSensorValue() 1 : onsensorchanged() 10 : getgravityinfo() 2 : HandleGravity() 11 : info 12 : settext() 3 : CalcPosition() 13 : CheckMovement() 4 : CalcIntegration() 14 : MoveX() 15 : MoveY() 16 : invalidate() 변경된위치값이좌표표시에영향을미치는지판단하여좌표이동 5 : acc_end_check() 6 : SetDrawPosition() 17 : CheckAD() 7 : invalidate() 이동위치에해당하는광고가있는지판단 18 : DrawGraph() 9 19 : ShowSensorValue() : SetDrawPosition() 8 : ShiftValue() GraphTab 의그래프에측정값출력 20 10 : invalidate() getgravityinfo() 11 : info 12 : settext() 40
10. Demonstration Manual Map 탭에서메뉴버튼선택 Set Position 항목선택 Map 에서현재의위치를선택 지정한위치에위치좌표가나타남 이후센서값에따라위치좌표가움직임 특정위치범위내에이동시동영상 ( 광고 ) 가자동재생 41
10. Demonstration Map Tab 42
10. Demonstration Graph Tab 43
10. Demonstration Value Tab 44
10. Demonstration AD Play 45
11. Development Schedule and Role Schedule 46
11. Development Schedule and Role Role 팀원김상은김성규김성훈 역할 기능분석및 UI 설계및구현 자료수집및센서연산모듈구현 기능분석및센서연산모듈구현 47
48
49