본문 바로가기

School Study/Mobile System Programming

GPS, WiFi를 이용한 위치 모니터링(Location Tracker)

Location Tracker → 이동한 장소 정보(이름), 이동 시각, 체류 시간 등을 기록하는 애플리케이션

예시 앱들을 보면 아래와 같다.

KeepTrax

http://keeptraxapp.com/#!/

 

keeptraxapp

KeepTrax automatically captures all your important visits as you go about your day. No check-in required.

keeptraxapp.com

Arc App - Location & activity

https://itunes.apple.com/kr/app/arc-app-location-activity/id1063151918?mt=8 

 

‎Arc App - Location & activity

‎Automatically keep track of the places you visit, how you got there, and what you did while you were there. With a learning engine that gets smarter and more accurate the more you use it. FEATURES - Moves app data importer! - Automatic recording of places

itunes.apple.com

SilentLog

https://itunes.apple.com/kr/app/silentlog/id901679160?mt=8

 

‎SilentLog

‎설치만 해도 걸음 수와 경로를 자동으로 기록합니다. 방문했던 장소나 그때 찍은 사진을 원하는 때에 언제든지 생생하게 다시 확인할 수 있는 앱입니다 ▼▼▼사일런트 로그는 이런 앱입니다▼▼▼ ●iPhone을 휴대하기만 해도 일상 행동과 사진을 자동으로 기록합니다! ●과거의 추억을 앨범처럼 다시 볼 수 있습니다! ●걸음 수를 기록하는 만보계 역할도 합니다! ●아름다운 배경화면과 사진을 즐겨보세요! ▼▼▼다양한 사용 방법▼▼▼ ●일기로 사일런트 로그는 말하자면

itunes.apple.com

LifeMap

Moves - 현재 서비스 중단

 

간단한 Location Tracker를 만들어보자.

  • 5분 이상 동일 장소에 머무르는 경우 이를 기록하는 tracker
  • 실내/실외 위치
    • 실외 3곳, 실내 3곳의 위치 정보를 미리 등록
      • 실외 : GPS 위도, 경도 기반
      • 실내 : WiFi AP ID, RSSI 기반
  • 현재 위치를 계속 모니터링하면서 등록 장소에 5분 이상 있는지 검사
    • 5분 이상 있으면 머무르기 시작한 시점 기록
    • 다른 곳으로 이동한 경우 해당 장소에서 머무른 시간 계산하여 기록
    • 예)
      • 2019.04.23 13:30, 운동장 (30분)
      • 2019.04.23 16:50, 420 (50분)

등록된 장소 판단 기준

  • 실외
    • GPS 위도, 경도 좌표 사이의 거리
      • 등록된 위치의 좌표에서 특정 반경 이내의 좌표는 해당 위치로 가정
      • 반경은 장소에 따라 알맞게 맞춰줘야 한다.(GPS 위치에 따른 오차범위 고려)
      • 두 위치 좌표 사이의 거리 계산은 Location 클래스 메소드 활용
        • distanceBetween()
        • distanceTo()

실외 위치 판단 방법

  • 실내
    • AP 정보 유사도
      • 현재 스캔한 AP 정보가 사전 등록된 위치의 AP 정보와 유사한 경우 등록
      • 판단 기준
        • Jaccard index 값 비교
        • Cosine similarity 값 비교
        • RSSI 상위 AP 정보를 이용하여 판단

실외 위치 판단 방법

 

위 내용을 바탕으로 현재 만드려는 tracker 구조는 다음과 같다.

exmaple sensing pipline for location tracker 1

이러한 방식의 sensing pipeline의 단점은 뭘까?

  • 실내에 있을 땐 GPS 센싱이 필요 없다.
  • 실외에 있을 땐 WiFi 센싱이 필요 없다.(실외는 GPS만으로 한다고 가정)

따라서 실내/외 판단을 먼저 한 후 선택적으로 GPS 혹은 WiFi sensing을 수행한다면
불필요한 센싱 처리 과정을 생략할 수 있다.

그렇다면 실내/외 여부 판단 기준은 어떤 것으로 할 수 있을까?

  • 현재 위치의 GPS 데이터의 정확도
    • 실내에서는 GPS 위치 정확도가 낮을 것이다.
    • Location 클래스의 getAccuracy() 메소드
  • 현재 위치에서 스캔된 AP 개수와 RSSI
    • 실외에서 스캔되는 AP가 별로 없고 RSSI도 작을 것이다.
  • 조도
    • 낮 동안은 실외가 실 내보다 조도가 높을 것이다.
      • 실외에 있지만 폰을 주머니나 가방에 둔 경우는?

위 내용을 바탕으로 발전시킨 tracker 구조는 다음과 같다.

example sesning pipeline for location tracker 2

 

실제 구현하려고 한다면 또 고려해야 할 사항들이 어떤 것들이 있을까?

  1. location tracking 시 센싱 주기는 어떻게 정할까?
    • 얼마 간격으로 센싱을 해야 할까? → 5분 동안 한 장소에 머무른다는 것을 감지할 수 있는 정도의 센싱 주기
  2. 센싱을 계속할 필요가 있을까?
    • 실내/외 검사 후 한 가지 방법의 센싱만 하면 된다.
    • 그런데, GPS로 tracking 중 실내로 들어갈 때
      조도 센싱, WiFi AP 센싱이 멈춰 있다면 이런 변화는 어떻게 감지할 수 있을까?
  3. 실내/외 판단의 구체적인 방법은 어떻게 정할까?
    • GPS 정확도의 기준
    • WiFi AP 개수의 기준(실외에서는 정말 AP가 보이지 않을까?)
    • WiFI 신호 강도의 기준(실외에서는 정말 AP가 보이지 않을까?)
    • 조도의 기준(낮시간/밤시간)
    • 이것들을 모두 조합해서 판단하는 방법은?
  4. 등록되지 않은 장소에 대해서도 기록을 한다면?