|
이전 글에서는 Android 단말에서 제공하는 위치 데이터의 기본적인 사항과 GPS 위치 제공자(Location Provider)에 대해 알아보았습니다. GPS 위치 데이터는 GPS 위성 신호가 닿지 않는 곳(실내)에서는 사용이 불가능한 치명적인 단점이 있으며, 이를 극복하기 위해 NLP 위치 제공자를 활용할 수 있습니다. 이 포스팅에서는 GPS 위치 제공자 외의 다른 위치 제공자, 특히 NLP에 대한 정보를 공유하고자 합니다. |
NLP란?
우리는 실내에서 동네의 날씨를 알아보고, 카페에서 사진을 찍어 업로드하면서 위치를 체크인하며, 배달 앱으로 주문 시 위치를 구하기도 합니다. 이렇게 GPS 신호를 받을 수 없는 환경에서도 위치를 구하기 위해서는 Network Location Provider(줄여서 NLP)가 필수적입니다. NLP는 기기의 네트워크와 관련된 신호들을 참고하여 위치를 추론합니다. 기기가 현재 연결되어 있는 기지국의 cell id와 그 외 근처 기지국 cell들, 그리고 기기 근처에서 잡히는 Wifi AP 등의 신호와 그 패턴을 수집하여 위치를 학습합니다.
NLP로 위치를 구하는 과정
모바일 단말에서 NLP를 통해 위치를 구하는 과정은 위치 데이터를 학습하는 단계와 학습된 결과물을 이용해 실제로 위치를 구하는 단계로 이루어집니다. 여기에 사용되는 주체 또한 위치 학습의 결과가 저장되는 NLP 서버와 사용자의 위치를 구하려고 하는 모바일 단말로 나뉩니다.
위치를 학습하는 단계는 다음과 같습니다. 먼저 모바일에서 기반이 되는 위치를 구합니다. 이때 GPS 위치가 사용될 수 있으며 그 외에 동시에 수집 가능한 다른 데이터 또한 함께 참고될 수 있습니다. 지하철 역이나 상점 바깥에서 GPS 위치를 획득하고 건물 안으로 들어서는 장면을 떠올리면 좀더 이해하기 쉽습니다. 이후에 모바일 단말에서 스캔한 기지국 cell 혹은 Wifi AP 정보를 융합하여 학습하며 그 결과는 NLP 서버에 저장됩니다. 이 서버에는 수많은 단말로부터 여러 날에 걸쳐 학습한 결과물이 저장되어 있습니다.
Figure 1. NLP 서버와 모바일 단말의 통신
이와 반대로 실내에서 Wifi AP나 기지국 cell id 등을 통해 위치를 구하려고 하는 경우는 다음과 같이 동작합니다. 먼저 위치를 구하려고 하는 모바일 단말에서 근처 Wifi AP 및 기지국 cell 정보를 스캔한 후에 이 스캔 결과를 NLP 서버로 전송합니다. 그러면 NLP 서버에서 가능성이 높은 위치를 모바일 단말로 전송해 줍니다. 따라서 NLP를 이용해 위치를 구하려면 데이터 네트워크 사용이 필수적입니다.
Figure 2. Google NLP 사용 동의
NLP 위치 제공자의 특징
NLP로 구한 위치는 (최상의 환경에서) GPS로 구한 위치보다 일반적으로 정확도가 떨어집니다. 가장 좋은 환경(강한 Wifi AP 신호 등)에서 NLP 위치 정확도(Accuracy)는 20m 내외 혹은 적어도 50m 이내인 경우가 많으며, 통신사의 기지국 Cell 정보를 토대로 위치를 구할 때는 정확도 값이 km 단위인 경우가 많습니다.
Android 단말에서는 사용자가 Wifi를 끄더라도 백그라운드에서 Wifi 스캔은 사용하도록 하는 옵션이 있는데, 이 옵션을 해제할 경우 Wifi를 끄면 스캔이 불가하므로 NLP 위치 정확도가 크게 떨어질 수 있습니다. NLP 사용 시 보다 정확한 위치가 필요한 서비스라면 사용자에게 이 옵션을 설정하도록 안내해야 합니다.
Figure 3. Wifi가 꺼져있을 때에도 정확한 위치를 확인하기 위한 스캔 사용 설정
하지만 Cell 기반 위치 또한 4G, 5G 등을 거쳐 기지국 Cell의 크기가 점점 작아지고 있으므로 매우 드물게 정확도가 100m 남짓한 위치가 구해지기도 합니다. 특히 사람들이 많이 모여 사는 곳에서는 기지국 Cell도 촘촘하게 있어 꽤 정확한 위치가 구해지는 경우가 있습니다.
NLP 위치 사용 시 고려할 사항
위와 같은 상황들 외에도 NLP 사용 시에는 좀더 주의해야 하는 부분이 있습니다. 바로 GPS와는 달리 종종 완전히 어긋난 위치를 구할 수 있다는 점입니다. 무선 신호 스캔 결과와 위치 간에 학습이 필요하므로 이 사이에 간극이 발생할 수 있습니다. 특히 집이나 직장에서 동일한 Wifi AP를 가지고 이사 가는 경우, 이사 완료 지점의 스캔 반경 내에 이미 살고 있던 사람들에게 영향을 줄 수 있습니다. 예를 들어 A동네에 살던 사람이 B동네로 Wifi AP를 가지고 이사 오는 경우, B동네에 살고 있던 주변 사람들의 NLP 위치가 A동네를 가리킬 수 있습니다. 매우 드물지만 통신사 기지국의 Cell id 정보 등이 바뀌어 영향을 주기도 합니다. 이러한 현상은 앱 서비스 개발자 입장에서는 전혀 예상이 불가능하지만 2~3주 가량 새롭게 학습을 진행하면서 자연스럽게 해결되는 경우가 많습니다.
Figure 4. Wifi AP의 이동 등으로 인한 NLP 오동작
NLP는 다수의 단말에 의해서 학습이 진행되므로 보다 밀집도가 높은 쪽으로 위치가 빨려들어가는 현상을 보이기도 합니다. 도심지역에서도 아파트 옆 공원 혹은 고층 오피스 건물 근처 공터와 같이 밀집도가 차이나는 곳들이 존재합니다. 이 경우 GPS로 구한 위치는 실제 위치에 가깝지만 NLP로 구한 위치는 Wifi AP가 몰려있는 곳으로 치우치기도 합니다. 이러한 경우는 학습을 통해서도 개선을 기대하기가 어렵습니다.
Figure 5. 사람이 많은 곳으로 위치가 빨려들어가는 예시
마지막으로, 움직이는 Wifi AP 혹은 Cell 등이 있는 경우에도 종종 문제가 발생합니다. 개인용 Wifi AP(속칭 ‘에그’ 등)로 인한 문제는 거의 발생하지 않지만, 신분당선과 같이 네트워크가 차량 자체와 함께 이동하는 경우 고정된 위치를 구하기 어렵습니다. 또한 매우 예외적인 경우로, 선박 등의 탈것에 부착된 네트워크가 학습된 경우가 있었습니다. 선박의 네트워크가 GPS 위치 등과 함께 학습되었고, 그 결과 선박 근처에서 국내가 아닌 해외 항구의 위치를 전달받은 적이 있습니다. 이와 같이 NLP는 사용 시 발생할 수 있는 오동작에 항상 유의해야 합니다.
Android Doze 모드와 NLP
Android에서 Doze 모드로 진입한다는 것은 기본적으로 단말이 움직이지 않는다는 것을 가정합니다. 그러므로 이론상으로는 위치 제공자에서도 Doze 모드가 해제되기 전까지 다른 위치를 제공할 필요가 없습니다. Doze 모드에 진입 시 Android(V OS 기준) 단말에서 NLP로는 위치를 구할 수 없습니다. 이와 유사하게 신규 스캔 결과가 이전 스캔 결과와 차이가 없는 경우 서버와 통신하지 않고 NLP가 이전 위치를 그대로 재사용하는 경우도 있습니다.
NLP 서버 제공자들 관련
Android 단말에서 개발자들 대부분이 일반적으로 사용하게 되는 것은 Google에서 제공하는 NLP입니다. Google Mobile Service(GMS)에 포함되어 있는 이 서비스는 전 세계 대부분의 국가에서 사용 가능합니다. 중국과 같은 일부 국가에서는 사용이 제한될 수 있지만 중국의 경우 Baidu에서 제공하는 NLP를 사용할 수 있습니다. 자사의 Android 단말에서도 Google 서비스를 이용해 NLP가 제공되고 있는데, 다른 단말 제조사의 경우 자체 NLP 서버를 두거나 그 외의 NLP 서버 및 모듈 등을 제공할 수 있습니다.
Fused Location Provider란?
Fused란 말 그대로 ‘융합된’, ‘섞다’, ‘한데 녹이다’ 등의 뜻을 가지고 있습니다. 지금까지 알아본 Fused Location Provider의 경우 다른 위치 제공자로부터 구한 위치를 입력으로 삼기도 하며, 그 외에 관성 센서 등의 센서 값을 융합하여 현재 위치를 추론할 수 있습니다. 아직까지는 Fused Location Provider로 구한 위치가 GPS나 NLP에 비해 더 정확하다고 보기는 어렵습니다.
마무리하며
지금까지 Android 플랫폼에서 제공하고 있는 NLP에 대해 살펴보았습니다. Android 모바일 단말에서 위치 관련 서비스를 개발할 때 GPS(GNSS) Provider만을 이용하여 개발하는 것은 거의 불가능하며 NLP도 필수적으로 활용해야 합니다. 그리고 이 경우 NLP 특성을 고려한 서비스를 설계할 필요성이 있습니다.
부족한 설명이나마 끝까지 읽어주셔서 감사합니다.
|
|
