전 지구적 위치확인 시스템(GPS)은 약 1만 7,700킬로미터의 고도에서 지구 궤도를 돌고 있는 24개의 위성으로 이루어져 있다. 이 위성들은 GPS 수신기로 포착할 수 있는 전파를 발산한다. GPS 수신기는 이 신호를 이용해서 지구상의 자신의 위치를 위도와 경도, 고도로 결정하기 때문에 GPS 수신기가 있으면 어디에 있는지를 항상 알 수 있다. 숲 속에서 하이킹을 하다가 낯선 도시에서 운전을 하다가, 혹은 작은 경비행기로 야간비행을 하다가 길을 잃은 사람에게 GPS 수신기는 기적과 같은 것이다.
GPS 수신기의 삼각측량
GPS 수신기는 위성에서 오는 전파와 기초적인 기하학을 이용해서 정확한 위치를 계산한다. 여기에서 사용되는 기하학의 원리는 삼각측량이라고 하는 것이다. 삼각측량의 기본 원리는 2차원 공간에서 이해하기가 쉽다. 여러분이 미국 어딘가에서 길을 잃었다고 해보자. 친절하게 생긴 사람을 만난 여러분은 "여기가 어디죠?" 하고 묻는다. 그 사람은 "아이다호의 보이즈에서 1,006킬로미터 떨어진 곳입니다"라고 대답한다. 이런 종류의 정보는 그 자체로는 그다지 도움이 되지 않는다. 여러분은 보이즈를 중심으로 하는 반경 1,006킬로미터의 원 어딘가에 있는 셈이기 때문이다. 그래서 여러분은 다른 사람에게 같은 질문을 하곤 "여기는 미네소타의 미니애폴리스에서 1,110킬로미터 떨어진 곳입니다"라는 대답을 듣는다. 만일 이 정보를 보이즈에 관한 정보와 결합시킨다면 서로 교차하는 두 개의 원을 그릴 수 있을 것이다. 이제 여러분은 두 개의 점 중 어느 한 점에 있다는 것을 알게 되지만 아직 어느 점인지는 모른다. 만일 세 번째 사람이 애리조나의 투손에서 990킬로미터 떨어진 곳이라고 말해준다면 이제 여러분은 두 점 중 어느 것이 여러분의 위치를 나타내고 있는지를 알 수 있게 된다. 세 점으로부터 으 ㅣ거리를 알면 여러분이 콜로라도의 덴버 근처에 있다는 것을 알 수 있는 것이다. 이와 똑같은 개념이 3차원 공간에서 사용되는데, 다만 여기에서는 원 대신 구체를 이용해야 한다. 네 개의 구체를 서로 교차시키면 정확한 위치를 찾아낼 수 있다.
위치와 거리
GPS 수신기가 위치를 확정하기 위해서는 다음 두 가지가 결정되어야만 한다. 하나는 네 개 이상의 GPS 위성의 위치이고, 다른 하나는 수신기와 위성 간의 거리이다. 위성의 위치를 확인하는 것은 아주 간단하다. GPS 위성은 지구 상공 위의 아주 높은 고도(약 1만 7,700킬로미터)를 선회하기 때문에 거의 환경의 영향을 받지 않는다. 따라서 위성의 궤도는 예측하기가 쉽다. 수신기의 메모리에는 위성이 특정 시간에 어느 위치에 있어야 하는지가 기록되어 있는 시간표가 들어 있다. 그러나 달이나 태양의 인력 같은 것들이 위성의 궤도에 약간의 변화를 일으킨다. 그래서 미국 국방부는 위성의 정확한 위치를 감시해서 모든 GPS 수신기에게 조정된 사항을 위성신호의 일부로서 전송해 준다. 위성까지의 거리를 측정하는 것은 위성의 위치를 확인하는 것보다는 약간 더 까다롭다. GPS 위성은 전파를 이용해서 GPS 수신기에게 정보를 보낸다. 위성까지의 거리를 계산하려면 수신기는 전파가 얼마나 여행했는지를 확인해야만 한다. 우리는 전파가 어느 정도의 속도로 움직이는지를 안다. 전파는 전자기파의 일종이기 때문에 밑의 속도로(진공상태에서) 여행한다. 즉 1초에 29만 9,338킬로미터 혹은 1 나노초에 약 30 민터를 진행한다. (거리 = 속도 X 시간)이기 때문에 위성의 신호가 수신기에 도달하기까지 걸린 시간이 얼마인지를 알면 위성이 얼마나 멀리 떨어져 있는지를 계산할 수 있다. 이 신호가 오는 데에 걸린 시간을 계산하기 위해서 GPS 위성과 수신기는 정말 멋진 체계를 이용한다. 위성과 수신기가 완전히 동기화되어 있는 아주 정확한 시계를 가지고 있다고 해보자. 자정 정시에 이 둘은 아주 빠르게 숫자를 세기 시작한다. 1, 2, 3, 4, 5 ・・・・ 이들이 1초에서 1에서 100만까지 센다고 하면 하루 동안에 1에서 86조까지 세게 된다. 이제 위성이 자신이 세는 숫자를 계속 전송한다고 해보자. 위성과 수신기는 정확한 시간에 동시에 숫자를 세기 시작했기 때문에 위성에서 보내온 숫자들은 수신기가 세는 숫자보다 약간 느릴 것이다. 수신기는 이 뒤처진 숫자의 차이를 보고 신호가 도달하는 데에 걸린 시간을 계산할 수가 있게 된다. 이것이 시스템이 움직이는 원리이다. 그러나 시스템은 단순한 숫자 세기가 아닌 의사난수(pesudo random) 코드를 이용해서 통신한다. 산 순한 숫자 세기의 알고리즘은 "1을 더해서 다음 숫자를 만든다"이다. 의사난수 코드에서는 알고리즘이 훨씬 더 복잡해서, 숫자들이 임의로 나오도록 디자인되어 있다. 그러나 의사난수라는 공식을 알고 있다면 각 숫자가 무엇이 될지를 알 수 있는 것이다. 각 위성은 서로 다른 순서에 따라서 의사난수를 전송하기 때문에 수신기는 여러 위성에서 오는 신호를 각각 구별할 수가 있다.
시계의 동기화
GPS 수신기와 위성에 있는 시계는 극히 정확해야 하기 때문에 시간을 나노초 단위로 측정한다. 이것은 위성이나 수신기나 모두 원자시계 수준의 정밀도가 필요하다는 것을 의미한다. 위성은 원자시계를 장착하고 있지만 수신기는 그렇지 못하다. 원자시계는 보통 5만-10만 달러나 되는 비용이 들기 때문에 일반 소비재 상품으로써는 엄두도 내지 못할 만큼 비싸다는 것이 문제이다. 이 문제에 대한 해결책은 정말 환상적이라고 할 수 있다. GPS 수신기는 보통의 수정발진 시계로 이 일을 해야 한다. 이 시계는 자체 시스템의 부정확을 체크하고 거기에 따라 계산을 다시 조정함으로써 원자시계 수준의 성능을 발휘하는 것이다. 여기에 사용되는 기법은 세 개 이상의 위성의 거리를 결정하는 것이다. 처음 세 개의 구체(지구를 포함해서) 특정 점에서 서로 교차한다. 만일 모든 측정이 정확하다면 네 번째 구체 역시 이점과 교차할 것이다. 그러나 시계가 정확하게 동기화되지 않아서 측정이 부정확하다면 네 번째 구체는 교차하지 않을 것이다. 수신기는 네 번째 구체와 이 지점 사이의 거리를 통해 계산이 얼마나 벗어났는지 알 수 있다. 수신기는 모든 시간 측정을 같은 시계로 하기 때문에 거리 오차도 모두 같은 비율을 가진다. 따라서 수신기는 어느 정도의 거리 조정을 해야만 네 번째의 구체가 한 점에서 교차할 수 있을지 정확하게 계산할 수 있다. 이렇게 해서 정확한 지점이 정해지면 시계가 얼마나 틀렸는지도 알 수 있게 되는 것이다. 수신기는 항상 측정치를 점검하고 있기 때문에 늘 시계를 재조정한다. 이 때문에 수신기는 위성에 있는 원자시계처럼 극히 정확한 시간을 유지할 수가 있는 것이다. 시계와 관련된 또 다른 문제는 전파의 속도를 결정하는 것이다 앞에서 본 것처럼 전자파 신호는 진공상태를 빛의 속도로 여행한다. 그러나 지구는 물론 진공상태에 있지 않다. 특정 위치의 대기조건과 전파의 입사각 등에 따라서 지구 대기는 전파가 전송되는 속도를 늦춘다. GPS 수신기는 광범위한 기상조건에 대한 복잡한 수학적 모형을 이용해서 전파의 실제 속도를 예측한다. 위성은 전파신호의 일부로서 연관된 기상정보를 전송한다.