1. 프로젝트소개 1.1 배경및목적 1.2 시나리오 1.3 프로젝트기능 2. 관련기술 2.1. 안드로이드센서 SENSOR_ORIENTATION ( 방향센서 ) SENSOR_ACCELEROMETER ( 가속도센서 ) 2.2 가속도를이용한거리측정알고리

Similar documents
목차 0. 작품제목 1. 개요 1.1 작품개요 1.2 목적 2 결과물사양 2.1 결과물의구성 하드웨어구성 소프트웨어구성 2.2 결과물사양 3 개발방법 3.1 기술적요구사항 센서 가속도를이용한거리측정알고리즘 Calib

sadfasdf

목차 0. 작품제목 1. 개요 1.1 작품개요 1.2 목적 2 결과물사양 2.1 결과물의구성 하드웨어구성 소프트웨어구성 2.2 결과물사양 3 개발방법 3.1 기술적요구사항 센서 가속도를이용한거리측정알고리즘 Calib

PowerPoint 프레젠테이션

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - 03-TCP Programming.ppt

rmi_박준용_final.PDF

PowerPoint 프레젠테이션

자바-11장N'1-502

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

12-file.key

Java ...

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

02 C h a p t e r Java

PowerPoint 프레젠테이션

Java

JMF3_심빈구.PDF

비긴쿡-자바 00앞부속

신림프로그래머_클린코드.key

슬라이드 1

슬라이드 1

UI TASK & KEY EVENT

슬라이드 1

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

PowerPoint Presentation

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint Presentation

JMF2_심빈구.PDF

07 자바의 다양한 클래스.key

mytalk

4장.문장

PowerPoint Presentation

C# Programming Guide - Types

PowerPoint Presentation

( )부록

JUNIT 실습및발표

자바 프로그래밍

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

Microsoft PowerPoint - [EEL2] Lab10.pptx

FileMaker ODBC and JDBC Guide

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

Microsoft PowerPoint - Java7.pptx

chap 5: Trees

hwp

안드로이드2_14

FileMaker ODBC and JDBC Guide

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

PowerPoint Presentation

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

Cluster management software

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

PowerPoint Presentation

13-Java Network Programming

교육자료

Design Issues

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

PowerPoint 프레젠테이션

OCW_C언어 기초

학습목표 네트워크개요 TCP PORT URL/InetAddress Socket/TCP 을이용한네트워크 2

ch09

교육2 ? 그림

Spring Boot/JDBC JdbcTemplate/CRUD 예제

5장.key

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Secure Programming Lecture1 : Introduction

[ 정보 ] 과학고 R&E 결과보고서 Monte Carlo Method 를이용한 고교배정시뮬레이션 연구기간 : ~ 연구책임자 : 강대욱 ( 전남대전자컴퓨터공학부 ) 지도교사 : 최미경 ( 전남과학고정보 컴퓨터과 ) 참여학생 : 박진명 ( 전

슬라이드 1

C 언어 프로그래밊 과제 풀이

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint 프레젠테이션

03장.스택.key

UI TASK & KEY EVENT


fundamentalOfCommandPattern_calmglow_pattern_jstorm_1.0_f…

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....

05-class.key

쉽게

중간고사

13ÀåÃß°¡ºÐ

PowerPoint 프레젠테이션

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Interstage5 SOAP서비스 설정 가이드

Microsoft PowerPoint - CSharp-10-예외처리

03장

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft PowerPoint - T1 ERS (Elevator Reservation System)SASD2.pptx

3ÆÄÆ®-11

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

TEST BANK & SOLUTION

<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A

Transcription:

< 중간보고서 > 가속도센서를이용한 실내위치인식 지도교수 이창훈교수님 Team 12 200412307 김상은 200511305 김성규 200511306 김성훈

1. 프로젝트소개 1.1 배경및목적 1.2 시나리오 1.3 프로젝트기능 2. 관련기술 2.1. 안드로이드센서 2.1.1 SENSOR_ORIENTATION ( 방향센서 ) 2.1.2 SENSOR_ACCELEROMETER ( 가속도센서 ) 2.2 가속도를이용한거리측정알고리즘 2.2.1 가속도 - 거리관계 2.2.2 Trapezoidal Method 2.2.3 Calibration 2.2.4 Filtering 2.2.5 Mechanical Filtering Window 2.2.6 Positioning 2.2.7 Movement End Check 3. 기대효과및활용 3.1 기대효과 3.2 발전방향 3.3 활용가능성 4. 진행상황 4.1 가속도센서연산 4.2 PC 서버 4.3 문제점및진행방향 5. 개발계획 5.1 개발및테스트환경 5.2 개발일정 5.3 역할분담 6. 참조

1. 프로젝트소개 1.1 배경및목적최근스마트폰이대중화되어많은사람들이스마트폰의어플리케이션을이용하고있으며 GPS와 Wi-Fi로부터얻은위치정보를이용한다양한어플리케이션의활용이두드러졌다. 하지만 GPS는신호가닿지않는지하나건물내부에서는위치인식이부정확하며접속한 Wi-Fi의중계기 (AP) 의위치로인식하는경우실제위치를인식할수없으며다수의 AP를이용하는경우최소 3개이상의 AP가필요하며 AP의신호강도가단순히거리에정비례하지않으므로정확한위치파악이어려운단점이있다. 따라서기존의 GPS와 Wi-Fi를이용하지않고가속도센서를이용하여움직임을수학적으로연산하여분석하는접근방식으로실내위치인식기술을구현하는것이목적이다. 1.2 시나리오 GPS가닿지않는경우현재를위치를파악할수없으며코엑스, 공연장, 박물관등과같은건물내의배치도를통해사용자가직접현재위치파악해야하는불편을겪는다. 건물의입구와같이현재위치를알수있는지점에서최초의위치를설정한다. 위치확인 1 최초위치설정 위치확인 2 첫설정후자유롭게이동하면가속도센서를통한이동거리및방향을연산한다. 최초의설정위치와연산한값을통해실내에서의현재위치를파악한다. 1.3 프로젝트기능 사용자로부터최초의위치를입력받음 스마트폰의가속도센서와자이로센서로부터데이터를수집 수집한데이터를분석하여이동거리를연산 최초위치와연산값을이용하여현재위치를표시 오차가적은결과를도출

2. 관련기술 2.1. 안드로이드센서 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보다큰값 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 ) 단말이테이블에서중력에대한반작용으로적용되는힘을나타남

2.2 가속도를이용한거리측정알고리즘 2.2.1 가속도 - 거리관계 가속도를적분하면속도, 속도를적분하면거리 따라서가속도를이중적분하면거리 f(x) 를 a 부터 b 까지적분은 n 개로쪼갠후 n 개사각형넓이의합 2.2.2 Trapezoidal Method 적분할때이론상무한히쪼개면완벽한값이나오지만, 현실에선 sampling의한계로양자화과정중 Area error가발생 따라서오차가적은 Trapezoidal Method를사용 높이를 Sample1, Sample2 라할때 Area = Area1 + Area2 = 대표적수치적분법

2.2.3 Calibration 센서의기울기와그에따른중력에의해영향을받으므로교정이필요 정지한상태에서의가속도값을알아내어중력가속도값으로인지하고제거 2.2.4 Filtering Sampling 후에크게움직이면생기게되는갑자기생기는물리적인오류로인한이상한 sample들을제거하기위하여 10개샘플링할때마다상위 2개하위 2개정도는재하고, 중간 6개정도의값을평균을내서하나의값으로사용 2.2.5 Mechanical Filtering Window 움직임이없을때 sample들의합이이상적으론 0이어야하지만, 0이아닌작은 noise 값이발생하여이것을제거하기위해 valid data와 invalid data 사이를구분짓는 window가필요 2.2.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)

2.2.7 Movement End Check 물체가멈추면 acceleration의총적분값이 0의속도로되어야하지만현실에서적분의결과값은결코속도 0에도달하지않음 그러므로위치값이조금씩움직이는오류가발생할수있음 때문에가속도값이 0에오래지속될경우속도를강제로 0으로다운시킴 3. 기대효과및활용 3.1 기대효과 기존의중계기 (AP) 를이용한위치인식에더하여정확한위치인식을위해상호보완 중계기 (AP) 가없는실내지역에서의위치인식가능 지하철역이나복잡한건물안에서의위치인식이가능해져지도서비스제공가능 3.2 발전방향 연산알고리즘을개선하여정확도를향상 시뮬레이션을통해적절한 Sampling 수를파악 3.3 활용가능성 GPS를통해얻은위치정보를기준으로주변특정지도를네트워크로전송받아특정지역이아닌다양한지역정보서비스제공가능 스마트폰이아닌센서들을카트에부착하거나소비자에게부착하여마트와같은상점에서의이동패턴을분석하는수단으로활용가능

4. 진행상황 4.1 가속도센서연산 (x 축 ) 적분연산 (Trapezoidal Method [2.2.2]) base : 이전속도 / 위치, diff0 : 이전가속도 / 속도 diff1 : 현재가속도 / 속도, time : 기간 (ms) float CalcIntegration(float base, float diff0, float diff1, float time) outputx.settext("x:" + Float.toString(diff1)); float result=0; result = base + ( diff0 + ((diff1 - diff0)/2) ) * (time / 1000); return result; @Override public void onsensorchanged(sensoreventevent) synchronized (this) switch (event.sensor.gettype()) case Sensor.TYPE_ACCELEROMETER: 주기적 Calibration [2.2.3] if(acccalibrationindex == 240) acccalibrationvalue = sumacc/240; sumacc=0; accelerationx[0] = 0; velocityx[0] = 0; positionx[0] = 0; acccalibrationindex++; if (curtime == 0) curtime = System.currentTimeMillis(); else lastime = curtime; curtime = System.currentTimeMillis(); deltat = curtime - lastime; float time = (float)deltat/1000; accelerationx[1] = (float) (event.values[0]-acccalibrationvalue); FilteringWindow(); sumacc += accelerationx[1]; Positioning [2.2.6] velocityx[1]= CalcIntegration(velocityx[0], accelerationx[0],accelerationx[1],time); positionx[1]= CalcIntegration(positionx[0], velocityx[0],velocityx[1],time); accelerationx[0] = accelerationx[1]; velocityx[0] = velocityx[1]; positionx[0] = positionx[1]; this.movement_end_check(); Mechanical Filtering Window [2.2.5] public final static float window = 0.06f; void FilteringWindow() //Discrimination window applied to if( ((accelerationx[1]<=window)&&(accelerationx[1]>=-window))) accelerationx[1]=0; Movement End Check [2.2.7] void movement_end_check() if (accelerationx[1]<movementendcheckvariable && accelerationx[1]>-movementendcheckvariable) countx++; else countx =0; if (countx>=5) velocityx[1]=0; velocityx[0]=0;

4.2 PC 서버 목적 : 좌표이동의표시 안드로이드폰과 TCP 메시지통신을통해위치를나타냄 SET X Y : 초기위치설정 MOVE X Y : 좌표의이동 public class Server int port = 2011; ServerSocket ss = null; static boolean serveron = false; UIFrame frm; public void initserver() frm = new UIFrame(); try ss=new ServerSocket(port); serveron=true; frm.logappend("server Start"); catch (IOException e) e.printstacktrace(); public static void main(string args[]) Server sv = new Server(); sv.initserver(); if(serveron==true) sv.runserver(); public void runserver() BufferedReader sbr=null; PrintWriter spw=null; Socket ssoc = null; while(serveron) try ssoc=ss.accept(); //wait connect frm.logappend(" 서버 : "+ssoc.getinetaddress() +" 클라이언트와 "+ssoc.getlocalport()+" 포트로연결이되었습니다."); //input, output sbr=new BufferedReader( new InputStreamReader(ssoc.getInputStream())); spw=new PrintWriter(ssoc.getOutputStream(),true); while(true) String reading=sbr.readline(); // 메세지를읽어들임 HandleMessage(reading); //Handle // 입력값이없으면연결을끊음 if (reading==null) break; spw.close(); // 출력스트림닫기 sbr.close(); // 입력스트림닫기 ssoc.close(); // 소켓닫기 catch (IOException e) e.printstacktrace(); frm.logappend(" 서버 : "+ssoc.getinetaddress() +" 클라이언트와의연결이끊어졌습니다."); public void HandleMessage(String str) if(str==null) return; String[] strings = str.split(" "); if(strings[0].equals("set")) frm.logappend(str); frm.setposition(strings[1], strings[2]); else if(strings[0].equals("move")) frm.logappend(str); frm.moveposition(strings[1], strings[2]);

4.3 문제점및진행방향 문제점 1 - Calibration - 스마트폰은하나의가속도센서를이용하여기울기, 중력산출 - 따라서가속이동과기울변화시의변화값이동일함 - 그로인해중력을제거하는 Calibration[2.2.3] 과정의어려움이증대 - 실제이동가속도 (0~2) 에비해중력에의한가속도 (0~9) 의영향이큼 문제점 2 - 오차발생 - 문제점 1의발생을배제하기위한정확한수평이동이어려움 - Mechanical Filtering Window 단계의노이즈제거가실제측정에도영향을끼침 - 오차의발생은여러단계의복합적인결과이기때문에테스트가어려움 개발진행방향 - 문제점 1을해결하기위한알고리즘또는방법을구상 - 가속도적분연산식의개선을고려 : 현재 2개의변화값을이용한 Trapezoidal Method가아닌 3개의변화값을이용한심프슨법칙을사용고려 - 문제점 1을해결을통해 Calibration 단계 - 반복적인테스트를통해 Mechanical Filtering Window의적절한값을정함 - 단순히좌표이동만표시할뿐만아니라가속도, 속도등의정보를표현 - 유효한이동거리, 이동패턴의단순화등구현한계에따른제약사항도고려

5. 개발계획 5.1 개발및테스트환경 개발언어 : JAVA, 안드로이드 SDK 2.3.4 개발 Tool : Eclipse 테스트기기 : GALAXY SⅡ 5.2 개발일정 6월 7월 8월 9월 10월 11월 주제설정기획서작성관련자료수집기능분석시스템설계중간보고서작성센서측정구현데이터연산구현 UI 구현성능향상디버깅및테스트최종보고서작성 5.3 역할분담팀원 역 할 김성은 기능분석, UI 설계및구현 김성규 자료수집, 센처측정모듈구현 김성훈 기능분석, 센서측정모듈구현 6. 참조 - 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 - 수치적분법 http://blog.naver.com/pcw0615/10106460261 - Design of angular estimator of inertial sensor using the least square method http://blog.naver.com/pcw0615/10100392768