2008년 6월 19일 목요일

3G iPhone에 사용된 Assisted GPS (Assisted GPS used in 3G iPhone)

3G iPhone에 추가되었다는 A-GPS에 대해 사람들이 착각을 하는 경우가 많다.


main_maps20080609.jpg

Assisted라는 단어 때문에 그 동안 2G iPhone에서 wifi access point를 통하거나 현재 한국에서 위치찾기에 사용하는 식으로 휴대폰 기지국 신호를 가지고 대강의 현재 위치를 파악하는 pseudo GPS같은 방식이라고 생각하는 사람들이 많이 있다.

하지만 실제로 A-GPS는 정확한 위치를 파악하는데 정지궤도상에 떠 있는 GPS위성의 신호를 사용한다. Assisted라는 단어가 앞에 붙은 이유는 GPS의 성능을 향상시키기 위해 추가적으로 wifi나 기지국의 도움을 받기 때문이다. 실제 A-GPS는 미국 FCC가 휴대폰에서 걸려오는 911(응급전화)의 경우 경찰이나 소방서같은 기관에서 휴대폰의 위치를 자동으로 파악할 수 있도록 하는 E911을 의무화 시킴으로서 개발이 가속화 되었다.


사용자 삽입 이미지

GPS시스템은 약 20,200km 상공의 MEO(Medium Earth Orbit)에 24개의 GPS위성이 운용되고 있다. (참고로 원래 GPS는 군용으로 만들어져서 초기에는 군용으로만 사용되었는데 1983년 KAL007편 격추 사건 이후 레이건이 민간에 사용을 허가하도록 했다. 다만 군용에 비해 민간용 코드는 오차범위가 크다)

사용자 삽입 이미지

위의 그림이 GPS의 동작 원리이다. 현 위치에서 최소 3개 이상의 위성에서부터 신호를 수신해서 자신과 각 위성과의 거리를 계산하고 그 거리를 이용해서 삼각측량 방식으로 자신의 위치를 계산해 낼 수 있다. 위 그림에서처럼 3개 위성과의 정확한 거리를 알 수 있으면 3개의 위성만으로도 자신의 정확한 위치를 계산할 수 있지만 실제로는 여러가지 오차들 때문에 위성과의 거리가 100% 정확하지 않기 때문에 3개의 위성만으로는 위치계산이 힘들고 더 많은 위성이 필요하고 그래도 어느 정도의 오차는 피할 수 없다.

현재 사용되고 있는 GPS의 경우 위성에서 신호를 받아오기 위해서는 수신기와 위성간에 LoS (line-of-sight)가 확보되어야 하는데 커다란 나무나 도심의 빌딩들 사이에 있는 경우, 또는 실내에서는 위성의 신호를 제대로 받아올 수 가 없다. 그리고 꺼져있던 수신기가 이런 상황에서 처음으로 켜지면 위성에서 almanac과 ephemeris정보를 다운받을 수가 없기 때문에 나중에 깨끗한 위성신호를 받을 수 있는 곳으로 나가도 위치를 파악하는데 1분 이상이 걸릴 수 있다.

A-GPS는 이런 문제점들을 해결하기 위해 GPS위성신호에 추가적으로 assistance server를 사용한다.


agps.jpg

* Assistance server는 자신의 정확한 위치를 GPS신호를 수신해서 알고 있고 충분한 컴퓨팅 파워가 있기 때문에 휴대폰 신호를 분석해서 휴대폰의 대강의 위치를 계산할 수 있다. 그러므로 E911같은 경우 휴대폰이 GPS신호를 받지 못해 정확한 위치를 제공해주지 않아도 E911에 대강의 위치를 알려줄 수 있다.

* Assistance server는 휴대폰에게 위성의 궤도정보를 제공해 줄 수 있기 때문에 휴대폰이 그 정보를 이용해 빠르고 정확하게 GPS 위성신호를 잡을 수 있게 해 준다.

* Assistance server에서는 GPS신호의 오차에 영향을 미치는 ionospheric condition등에 대해 정확하게 측정할 수 있기 때문에 그 정보를 휴대폰에 전송해 줘서 휴대폰이 위성에서 수신한 신호를 사용해서 훨씬 정확한 위치를 계산할 수 있게 해 줄 수 있다.

일부 A-GPS는 위치를 파악하기 위해 기지국과의 연결이 필수적인 경우도 있고, 다른 경우는 기지국과 연결되면 좀 더 빠르고 정확하게 위치를 파악할 수 있지만 기지국과 연결이 필수적이지 않은 경우도 있다.

--

애플 사이트의 3G iPhone 페이지에 보면 iPhone 3G에 사용한 위치파악 방법에 대해 설명(http://www.apple.com/iphone/features/gps.html)하고 있다.

빠른 시간내에 가장 정확한 위치를 찾아내기 위해 GPS위성, Wi-fi 핫스팟, 셀타워에서의 신호를 사용한다. GPS 신호를 수신할 수 있으면 아이폰은 파란색의 GPS 인디케이터를 표시한다. 하지만 실내인 경우 (GPS위성과의 LoS가 유지되지 않는 경우) 아이폰은 wifi를 사용해서 위치를 파악한다. Wifi 핫스팟의 범위에도 들어있지 않은 경우는 셀타워를 사용해서 위치를 파악한다. 위치를 알려주는 원의 크기를 통해 아이폰이 계산한 위치가 얼마나 정확한가를 알려준다. 즉 원이 작을수록 더 정확한 위치라는 말이다.

--

즉 3G iPhone에서 위치파악하는 기능이 GPS 위성을 사용하는게 아니라거나 셀타워와 연결되어야만 한다는 말은 모두 잘못된 정보이다.

댓글 16개:

  1. 지구가 평면이라면 이론적으로 3개 위성만으로도 정확한 위치파악이 가능합니다.

    그러나 아시다시피 지구는 평면이 아닙니다. 따라서 4개의 위성이 있어야 위치를 제대로 파악할 수 있습니다.

    물론 기본적으로 GPS를 통해 위치계산을 하기 위해서는 해당 지역의 평균 고도값을 주기 때문에, 크게 오차는 나지 않습니다만...

    답글삭제
  2. 휴대용 GPS 맵 단말기를 사용중인데요... 일반 GPS 단말기에서도 wifi나 무선망 신호를 받아서, 초기 위성 찾는 시간을 줄여주면 좋겠어요...



    근데, 생각해 보니 몇 년 지나면, 휴대용 GPS 단말기 보다는 그냥 GPS 기능이 있는 휴대폰을 구입하는 것이 더 좋겠네요.. ^^;; 야외에서 사용할 수 있게 배터리 오래가고 튼튼한 GPS 휴대폰 나오면 좋겠습니다. (12시간 이상, AA 배터리 이용, 간단한 방수, 사림 키 정도에서 떨어뜨려도 괜찮은 정도로.. )

    답글삭제
  3. 싸이파이님 께서 생각 안하신게 있네요 위성과 지상의 거리는 정해져있기 때문에 3개여도 괜찮습니다.

    답글삭제
  4. 불량불곰님.. 위성과 지상의 거리가 정해져있다.. 하심은 어떤 의미이신지...

    지상 고도에 따라서 위성이 오르락내리락 하신다는 말씀은 아니실 것 같고..



    물론 위성의 고도에서 보자면, 지구 전체 표면의 고도 편차가 그렇게 크지 않은 것은 사실이고,

    그것 때문에, 3차원으로 나타나야할 GPS의 위치값에서, 고도 부분의 에러가 제일 크게 나는 것도 사실이지만,

    '이론적'으로는 4개가 되어야 하는게 맞는 것으로 알고 있습니다.



    괜히 Tech Viator님의 좋은 글에 와서 논쟁하는 것 같아서 좀 죄송스럽습니다만...

    답글삭제
  5. trackback from: 도우너의 생각
    [펌]3G iPhone에 사용된 Assisted GPS

    답글삭제
  6. trackback from: 아이폰 GPS가 동작하지 않을때 해결방법
    처음 아이폰3G를 받고 구글맵과 GPS를 사용해보려고 했지만 안되더군요..그리고 와이파이 기반의 위치 확인도 안되는거였습니다.터치에서는 잘 되었던 기능인데요..그래서 포기하고 있던 차에 혹시 이 Location Service 자체가 활성화가 안된게 아닐까하는생각이 들었습니다.그래서 App 스토어에서 GPS를 사용하는 어플을 구입하여 해당 어플을 실행하니그제서야 GPS가 활성화 되는거였습니다.그 후로는 2.0.2로 업데이트를 해도 GPS기반, 와이파...

    답글삭제
  7. 자세한 자료 감사합니다.

    답글삭제
  8. gps 위성이 3개가 fix 되면 2차원적인 좌표를 알수가 있고

    4개가 fix 되면 높이까지 알수가 있습니다.

    답글삭제
  9. GPS 위성이 4개가 되어야 하는 것이 맞습니다...

    3차원 좌표는 3개의 미지수이므로

    3개의 위성 위치와 위성으로부터 GPS 수신기 사이의

    거리만 알면 됩니다.



    다만, 불행히도 위성의 시계와 GPS 수신기가 완벽하게

    동기화되지 못하는 관계로...

    위성의 시계와 GPS 수신기 시계의 오차를 또다른 미지수로

    추가하여 방정식을 풀게 됩니다.



    그러면 4개의 미지수가 되고,

    따라서 최소 4개의 위성이 필요하게 됩니다.

    답글삭제
  10. GPS 님이 명확히 설명해 주셨네요

    이론상 3차원의 좌표는 3개의 미지수니 3개의 위성 신호만 있으면

    충분합니다.



    그런데 여기엔 정확한 거리(빛의 속도 x 시간)가 전제되어야 하는데

    시간의 정확한 동기화가 어려워(GPS 수신기의 불완전성)

    이것을 보조하기 위해 한 개의 위성이 추가로 필요한 겁니다.

    답글삭제
  11. 빛의 속도를 채용하신 이유는 빛의 속도가 전파의 속도와 같고 이는 전파가 위성에서 발사되어 지상으로 도달하는 속도 x 도달시간 = 거리가 되는건가요? 따라서 전파의 속도는 정해져있고 거리를 구하려니까 도달시간은 위성의 전파 발사 시각과 GPS 수신기의 수신시각 의 차로 구하고...



    그러면 전파속도 X (위성시각-수신기시각) = 위성과 GPS 수신기의 거리가 되고 ...

    GPS 수신기의 해발고도를 구하려면 해발고도 0에서 구한 위성 궤도 높이에서 GPS수신기와 위성사이의 거리를 빼면 되는건가요?



    위성의 고도 - (GPS수신기와 위성사이의 거리) = GPS 수신기의 해발고도



    좌변을 정리하면...

    위성의 고도 - (전파속도 X (위성시각-수신기시각))

    = GPS 수신기의 해발고도



    제가 생각한게 맞나요? 갑자기 흥미가 생겨서 이리저리 생각해봤습니다.

    답글삭제
  12. @야쿠르 - 2009/12/18 14:09
    예..위성과 수신기간의 거리를 구하는 방식은 말씀하신게 맞습니다.

    하지만 수신기 고도는 위성과 수신기의 각도를 모르기 때문에 '위성의 고도 - (GPS수신기와 위성사이의 거리)'만으로는 알 수가 없습니다.



    위에 다른분들 말씀대로 위도,경도 뿐 아니고 고도까지 알아내려면 (즉 3차원 좌표를 알아내려면) 최소 4개의 위성에서의 거리를 알아내야 합니다.

    각 위성의 위치를 중심으로 하고 반지름이 위성과의 거리인 구를 그리면 3차원 공간에서 4개의 구가 만나는 지점이 있습니다. 그 좌표 (x,y,z)가 각각 위도, 경도, 고도가 되는거죠.

    답글삭제
  13. A-GPS 기술에 대해 읽어보다 궁금증이 있어서..

    기지국의 Assist를 받는다고 했는데,

    그렇다면 최근 송,수신된 GPS 좌표 정보를

    서버가 저장하고 있는 것인가요?



    아니면 기지국과 서버는 오직 Broadcast만 하고

    수신하는 단말에서 모든 것을 처리하는 건가요?

    답글삭제
  14. @7월 - 2009/12/28 18:03
    개별 단말의 위치를 기억하고 있지는 않습니다.



    GPS단말기가 cold start(대강의 위치에 대한 정보도 전혀 없는 초기화 상태에서 시작)하면 위성에서 신호를 받아 자신의 위치를 계산할 때 까지 상당한 시간이 걸립니다. A-GPS는 대강의 현재 위치를 GPS단말기에 알려주어 그 위치에서 보이는 GPS위성의 궤도를 계산하면 좀 더 빠른 시간에 위치계산이 가능해지는거죠.



    예를 들자면 GPS위성이 24개가 있는데 cold start하면 이 중에 어느 위성의 신호를 받을 수 있는지 모르기때문에 1번부터 24번 위성까지 신호가 수신되는가를 순차적으로 확인해야 합니다. 하지만 대강의 위치와 시간을 알고 있으면 그곳에서 현재 보이는(위성이 쏘는 신호를 수신할 수 있는) 위성의 번호를 계산해 낼 수 있기 때문에 그 몇개의 위성 신호만 확인하면 되니까 위치 계산에 필요한 시간이 단축됩니다.

    답글삭제
  15. @비아토르 - 2009/12/28 20:08
    아, 그렇다면 단말과 기지국과의 통신에 의한 개념은 아니겠군요. 단말이 위치를 기억하고 있거나, 아니면 기지국에서 대략적인 정보를 일방적으로 Broadcast 하는 개념이겠네요. 감사합니다. ^^*

    답글삭제
  16. @7월 - 2009/12/28 18:03
    완전히 통신이 없는건 아닙니다. 다만 단말기는 기지국의 전파 도달범위에 들어가면 일종의 등록('내가 앞으로 너하고 통신을 한다'는 의미입니다)을 하게 됩니다. 이 때 기지국에서 단말기에게 대강의 위치정보(즉 기지국의 위치)를 보내주는거죠. 기지국의 전파 도달범위면 기지국 위치에서 별로 안 떨어져 있는 곳이니까요.

    답글삭제