최근들어 LBS(Location Based Service)에 대한 관심이 높아지고 아이폰, 구글폰들이 출시되며 이를 이용한 어플리케이션들이 속속 등장하고 있다. 여기에서 현재 휴대폰의 위치를 알아내는 방법의 원리들에 대해 설명해 보겠다.

먼저 가장 먼저, 널리 사용되는건 GPS이다.

GPS(Global Positioning System)의 기본 원리는 삼각측량법이다.

gps1.jpg

위의 그림에서처럼 지도상에 정확한 위치를 알고 있는 3개 지점에서부터 내 위치까지의 거리를 알 수 있으면 그 각 지점(위의 그림에서는 각 스테이션)을 중심점으로 내 위치까지의 거리를 반지름으로 하는 3개의 원을 그리면 3개의 원은 정확하게 한 점에서 만나게 된다. 그 원들이 만나는 지점이 내 현 위치가 된다.


gps2.jpg

단 여기서 전제조건은 각 스테이션과의 정확한 거리를 알고 있어야 한다는 것이다.

그런데 실제로 거리를 측정할 때 줄자를 가지고 잴 수 있는게 아니고 각 스테이션에서 송출하는 특정 신호를 수신해서 그 신호의 세기를 가지고 거리를 예측하게 된다. 하지만 전파의 특성 상 거리에 반비례해서 신호 세기가 약해지긴 해도 여러가지 조건에 따라 그 약해지는 정도가 항상 변화하기 때문에 대강의 거리를 예측할 뿐 정확한 거리를 알 수가 없다. (실제 GPS에서는 신호 세기가 아니고 시간차를 이용하지만 이 경우에도 정확한 거리를 알 수 없는건 차이가 없다.)


gps3.jpg

대략의 거리를 가지고 원을 그리게 되면 3개의 원이 위의 그림과 같이 한 점에서 만나는게 아니고 그림과 같이 3개의 원으로 둘러 쌓인 부분이 생기게 된다. 예측한 거리의 오차가 크면 클 수록 원으로 표시된 부분의 크기가 커지게 된다. 즉 정확한 위치를 찾을 수 없고 대략 저 둘러 쌓인 부분 내에 있다는 것만 알 수 있게 된다.


gps4.jpg

그래서 더 여러 지점과의 거리를 측정해서 더 많은 원을 그려 더 많은 원들에 둘러 쌓인 부분을 찾으면 그 면적이 줄어들기 때문에 오차를 줄일 수 있게 된다.

그런데 최근에는 GPS를 내장하지 않은 모바일 디바이스들도 무선랜 신호를 이용해 자신의 위치를 상당히 정확하게 찾아내는걸 볼 수 있다. 이 경우는 미리 구축되어 있는 무선 AP목록 DB가 구축되어 있어야 한다. 이 DB는 사업자 핫스팟의 경우는 사업자가 설치된 정확한 주소를 알려줄 수 있지만 개인이 설치한 AP의 경우는 등록된 주소가 없는데 어떻게 위치를 알 수 있을까? 정답은 구글 스트리트 뷰 사진과 유사한 방식으로 War driving을 이용해서 DB를 구축하게 된다.


wd.jpg

자동차에 그림과 같이 무선랜 안테나와 GPS 수신기를 장착하고 차를 몰아 길을 돌아다니면서 각 위치에서 신호가 잡히는 AP의 목록과 신호의 세기를 기록해서 DB를 구축하게 된다.


gps5.jpg

위의 그림에서 각 숫자가 AP이고 알파벳이 자동차가 움직이며 해당 위치에서 신호가 잡히는 AP의 목록을 기록해서 테이블을 만든다.


GPS8.jpg

이렇게 만든 테이블을 이용해 각 AP의 위치 DB를 만든다.

GPS9.jpg

위의 그림과 같이 각각 AP의 신호가 잡히는 지점들을 가지고 있게 된다.


gps6.jpg

그림에서 저 지점에 아이팟 터치가 있다면 13, 15, 17번 AP의 신호를 받을 수 있게 된다.


GPS10.jpg

그럼 그 정보를 이용해 위에 만들어 진 DB를 검색하면 13, 15, 17 모두에 공통으로 들어있는 위치는 M이 된다. 즉 예측할 수 있는 가장 가까운 위치는 M이라고 판단할 수 있게 되는 것이다.

Posted by nautes

댓글을 달아 주세요

  1. 2008.10.31 15:26

    이번에 아이팟 터치 2nd gen. 을 구입하고 맵에서 현재 위치를 찾는 기능을 찾았는데 처음에는 참 생각을 많이 했었죠. 숨겨진 GPS 기능이 있었나... 하다가 문득 생각난게 AP를 이용한 방법이더군요. 누구의 아이디어인지 정말 똑똑한 방법이라고 생각합니다. 거의 정확한 현재 위치를 보여주더군요...

  2. 2009.01.14 17:56

    오호~ 안그래도 어떻게 개인ap 위치를 알아내는가 했더니 War driving 을 이용해서 db를 만드는거였군요; ㅎ
    어쩐지 지방은 안된다 했습니다ㄷㅋ 좋은정보 감사합니다 ㅎ

  3. 2009.03.09 11:51

    좋은 정보 감사합니다.
    블로그로 퍼갑니다 ^^

  4. 2009.07.20 05:55

    좋은자료 감사해요^^ 퍼갑니다^^