핀수로그
  • GPS 보정하기 - 01
    2023년 11월 02일 22시 33분 51초에 업로드 된 글입니다.
    작성자: 핀수
    728x90
    반응형

    사실 이 알고리즘은 이전 프로젝트에서 개발 되었던 것인데,

    GPS 정확도 개선을 위한 좌충우돌 얼레벌레 MapMatching 구현기

    들어가며 정말 오랜만에 글을 쓰는 것 같다. 못해도 한달에 한개는 작성하자고 마음먹었었는데 시간이 어느새... 이번에 GPS 관련하여 검토한 것이 있어 기록해두기로 했다. GPS는 그냥 WW(내 사이

    www.pinslog.com

    그 프로젝트는 사용자의 정확한 위치를 필요로 했었다.
    그런데 부정확한 GPS 때문에 난항을 겪다가 해결 방안 중 하나인 맵 매칭 알고리즘을 검토하게 되었고
    이를 프로젝트 성격과 환경에 맞게 수정한 것이었다.
    나는 이를 매칭 알고리즘이라고 명명했었는데 알면 알수록 맵 매칭이라고 보기는 좀 그렇고....
    GPS 보정 알고리즘(이하 '보정 알고리즘') 정도로...부르는게 맞을 것 같다는 생각이 든다.
     
    위의 글에서도 설명했었지만 이전 알고리즘의 순서는 다음과 같았다.
    1. GPS 데이터로부터 현재 위치 추정
    2. 현재 위치에서 다음 GPS가 수집될 때까지의 경로 후보군을 생성
    3. 후보 경로 중 현재 GPS 데이터와 가장 유사한 경로 찾기
    4. 가장 유사한 경로 선택, 그 경로를 따라 사용자의 위치 보정
     
    위의 순서에서 매칭이 원활하게 되지 않아 한번 더 수정을 했었다.
    그래서 최종적으로 
     
    1. 매칭 대상인 선분 리스트 중 일정 반경 내에 있는 선분들을 수집
    2. 각 선분에 보정을 수행한 후 보정값 후보 리스트를 생성
    3. 후보들 중 시간, 거리, 각도 등을 고려해 가중 평균이 가장 낮은 것을 최종 보정값으로 채택
     
    이렇게 작성된 알고리즘에서 더 나은 보정 결과를 보여 이대로 마무리를 지었다.
    아래 사진을 통해 보정을 실패하던 구간을 해결하였다.
    (초록색 선이 실제 GPS가 찍힌 구간
    노란 선이 보정이 되어야 하는 구간
    빨간 선이 보정을 수행한 결과이다.)

    최초 작성 알고리즘
    수정된 알고리즘

     
    이렇게 마무리 되었던 보정 알고리즘을 현재 프로젝트에 적용해보았다.

    보정값을 선으로 나타내면 빨간선처럼 나타날 것이다.

    위의 사진을 보면 알 수 있듯 정확도가 상당히 떨어지는 것을 확인했다.
    경로 형식이 변경되었기도 해서 예상했던 결과였지만
    생각보다 참담해서 놀랐다..
    그래서 각 함수가 제대로 역할을 다하고 있는지 살펴봤더니
    아니나 다를까 모두 문제를 하나씩 머금고 있었다.
    다음 글에서는 어떤 문제가 있었고, 어떻게 수정 했는지에 대해 간략하게 작성해보려고 한다.
     

    728x90
    반응형

    'Android' 카테고리의 다른 글

    GPS 보정하기 - 03  (0) 2023.11.22
    GPS 보정하기 - 02  (0) 2023.11.20
    GPS 보정하기 - 프롤로그  (0) 2023.11.01
    [Android] Hilt와 Room  (0) 2023.09.29
    Clean Architecture를 이해하기 위해 알아보는 SOLID 원칙  (0) 2023.03.07
    댓글