Вопрос: "чисто теоретически, если можно стандартными средствами
определить расстояние от БС до телефона, то по расстояниям от трех БС
можно получить точные координаты аппарата, а во расстоянию от двух БС-2 точки, в одной из которых будет находиться телефон, так?".
Действительно, подобное мнение широко распространено на просторах
интернета. Так как часть этого утверждения - сущая правда
(стандартными средствами иногда можно определить расстояние от
телефона до БС (тсс! ни слова о точности измерения!)), кажется, что все
утверждение целиком - тоже правда. Так ли это? Давайте разберем его на
части и исследуем подробнее.
Сразу оговорюсь. Я в курсе, что существуют A-GPS, TOA, AOA, и другие
страшные слова. Я в курсе, что для ряда практических задач достаточно
знать местоположение телефона с точностью до location area. Я в курсе,
что можно послать на телефон SMS или позвонить, и при этом обновится
информация о camped cell, что тоже может быть приемлимым способом
"засечь" местоположение конкретного телефона для каких-то конкретных
применений. Данный пост не ставит своей целью показать, что все
эти способы - чушь и не могут существовать, в конце-концов - я сам
писал о способах определения географического положения
абонентов. Данная статья посвящена одной вполне
конкретной легенде: что, мол, базовые станции GSM-сети триангулируют
местоположение телефона (вариант - всех телефонов в зоне покрытия) и
эта возможность является стандартной функцией любой BS/любой GSM сети.
Начнем с аналогии (кто же из нас не любит начать с аналогии?).
Рассмотрим такое утверждение: "поскольку при помощи ping-а можно
определить расстояние от одного компьютера до другого, то по
расстояниям от трех компьютеров (зная их координаты), можно получить
точные координаты искомого компьютера". Не торопитесь кричать: "Бред!".
А что если мы возьмем четыре компьютера, соединим их проводами (если
надо - с репитерами) по схеме "звезда" (один - в центре, три -
соединены с ним), причем провода проложим строго по прямой, и обеспечим
такую длину проводов, чтобы ошибка измерения времени пинга не влияла
существенно на вычисление расстояния?
Сможем ли мы в таком случае определить координаты центрального
компьютера, зная координаты периферийных и пользуясь только ping-ом?
Сможем. Означает ли это, что подобный способ можно использовать
всегда? Безусловно, нет. Во-первых, провода редко соединяют два
компьютера строго по прямой, во-вторых - мы, как правило, не знаем
точных координат тех машин, с которых мы пингуем, и т.п. Думаю, вы сами сможете продолжить этот список.
Теперь вернемся к исходному утверждению. Можно ли "стандартными
средствами определить расстояние от БС до телефона?". Короткий и ничего
не объясняющий ответ - "можно". Зададимся дополнительными вопросами:
- Кто сказал, что это будет кратчайшее расстояние?
- Кто занимается измерениями - базовая или телефон?
- С какой точностью будет произведено измерение?
Ответы на эти вопросы будут такими:
Действительно, базовая станция в процессе обслуживания разговора
занимается расчетом величин т.н. timing advance и передает их телефону.
Телефон использует их, чтобы корректировать ход своего clock timer-а
так, чтобы у него и у базовой "часы тикали одинаково". Действительно,
базовая "замеряет" время прохождения сигнала от базовой до телефона, но
ей абсолютно пофиг, сколько раз по пути следования сигнал отразился от
зданий и т.п.
Итак, вот первая ложка дегтя: несмотря на то, что базовая
измеряет время прохождения сигнала от себя до телефона, делает она это
только в процессе обслуживания звонка и мы не можем
использовать это значение для рассчета расстояния от базовой до
телефона по прямой. Плюс ко всему, даже в идеальных условиях TA
дает точность измерения до 500 метров.
Едем дальше. Знает ли базовая, сколько телефонов находятся в зоне ее
покрытия в режиме ожидания и каково время прохождения сигнала до них?
Нет и нет. При выборе в качестве camped cell любой соты в пределах
текущей location area телефон не должен (и не будет) уведомлять сеть о
своем решении (см. статью про location update).
Знает ли телефон, какие базовые находятся в "зоне слышимости" и каково
время прохождения сигнала до них? Да и нет. Телефон может
измерить уровень сигнала базовой (и занимается этим все время), но он
не знает/не может измерить величину затухания сигнала.
Даже если телефон мог бы измерить уровень затухания и/или время
прохождения сигнала до соседних базовых, мог бы он сам вычислить свои
координаты? Нет, т.к. он не знает координат базовых.
О! Идея! Раз базовые (или BSC - не суть важно) "знают" свои
координаты и "знают", какова мощность их передатчиков, а телефон
"знает", насколько хорошо он их "слышит", давайте каким-то образом
сведем эти данные в одну точку, и там проведем расчет координат.
Допустим, в SIM-карте телефона будет специальный applet, которых по
сигналу извне (или с какой-то периодичностью) будет передавать по RACH
пакетик, в котором будут CellID и RxLevel соседних базовых, а BSC будет
получать эти пакетики, и на их основании высчитывать координаты
телефона и передавать их дальше, какому-то выделенному серверу (для
простоты, назовем его LBS), который будет хранить координаты и при
нужде отдавать другим системам. А если какой-то телефон надумает
позвонить или принять звонок, BSC дополнительно скорректирует уже
имеющиеся координаты с учетом TA.
Смотрите, мы построили систему, которая по запросу к LBS-серверу
может отдать нам координаты произвольного телефона в этой GSM-сети (при
условии наличия в его SIM-карте нужного нам applet-а). Казалось бы,
победа?
А теперь давайте посчитаем, что нам пришлось (пусть и умозрительно)
модифицировать в обычной GSM Phase 2+ сети, чтобы получить такой
результат:
- Добавить в SIM-карту applet
- Модифицировать все BSC и/или BS
- Добавить LBS-сервер и обеспечить его каналами (физическими или логическими) связи с BSC.
Другими словами - мы разработали и "внедрили" на сети GSM-оператора решение для предоставление location-based services.
А теперь вернемся к начальному утверждению. Как видно, понадобилось
существенно модифицировать сеть для того, чтобы превратить
теоретическую возможность в возможность практическую.
Очевидно, что далеко не все GSM-операторы проделали такую (или
подобную описаной) работу и обладают возможностью определять местоположение вашего телефона.
Соответственно, если не тыкать пальцем в конкретного оператора, а
говорить о GSM как о технологии вообще, то лучше ограничится тем, что
"стандартные возможности сети GSM допускают построение системы
определения местоположения абонента на основании измерения параметров
прохождения радиосигнала, но стандарта GSM Phase 2+ на такие
системы/технологии - нет". И не более того. Источник: http://pro-gsm.info/triangulation-legend.html
|