GPS 경로 보정

ADVANCED - 위치 정확도에서 보다시피 GPS 센서의 정확도가 낮아서 실제 달린 경로보다 GPS 센서로부터 수집된 질주 경로에 noise가 많이 섞여 있다. 실제 이동 경로가 직선임에도 불구하고 수집된 경로는 꼬불꼬불하다.

경로를 보정하기 위하여 다음과 같은 알고리즘을 사용한다.

add points[0] to new_points
from = 0
while (from < points.length - 1) {
  to = from + 1
  sumOfDistance = distance between points[from] and points[to]
  while (to < points.length - 1) {
    sumOfDistance += distance between points[to] and points[to + 1]
    diff = sumOfDistance - (distance between points[from] and points[to + 1])
    if (diff > THRESHOLD)
      break
    to = to + 1
  }
  add points[to] to new_points
  from = to
}

간단히 설명하자면, 좌표 a와 좌표 b가 있다고 하자. 이때 (좌표 a에서 시작하여 좌표 b에 도달할 때까지 모든 좌표를 거쳐 이동하는 거리)와 (좌표 a와 좌표 b 사이의 직선 거리)의 차이가 THRESHOLD보다 크지 않으면 좌표 a와 좌표 b 사이에 있는 모든 좌표를 삭제한다. 이렇게 함으로써 꼬불꼬불한 경로를 직선 경로로 보정할 수 있다. 실험 결 THRESHOLD는 0.01(10 m)가 적당하였다.

위의 사진은 경로 보정을 사용하지 않은 경우이다.

위의 사진은 경로 보정을 사용한 경우이다. 경로가 깔끔해진 것을 확인할 수 있다.

Last updated