В нашей первой публикации мы привели обзор и сравнение целого спектра iBeacon маячков доступных на рынке. Сегодня мы рассмотрим более подробно как работает Bluetooth маяк на примере наших европейских коллег, и поговорим о том, как с его помощью можно рассчитать местоположение внутри здания.
Что кроется внутри
Несмотря на глобальное освещение iBeacon технологии в медиа, бизнес-сообществах и сообществах разработчиков, кажется, что существует некоторый уровень недопонимания принципов её работы. Сейчас мы попытаемся это исправить и углубимся в основы и объясним, что такое маячки, и как они работают.
Как работают маячки? Принципы их работы достаточно просты. Под силиконовым корпусом находится маленький ARM-компьютер, соединенный с Bluetooth-модулем – они питаются от батареи. Маленькая микросхема от Nordic Semiconductor содержит прошивку – это часть низкоуровнего программного обеспечения, гарантирующая правильность работы маячков. Хотя вычислительные мощности процессора и памяти ограничены, их оказывается более чем достаточно для обработки важных данных и шифрования ID маячков (с целью повышения безопасности).
На сужающейся части маячка расположился короткий провод, идущий напрямую от процессора – это антенна. Широковещательная антенна излучает волны определенной частоты и длины: радиоволны частотой 2,4 ГГц. Если вы разберете маячок, то заметите, что антенна не походит на антенны старых телевизоров и радиоприемников. И дело здесь не только в размере. Она имеет изогнутую форму и выглядит как зигзаг.
Это сделано неспроста. Электромагнитное поле вокруг прямого провода принимает форму пончика – волны не распространяются с одинаковой силой во всех направлениях, что ведет к образованию «пустых» зон. Лучшим решением проблемы является изменение формы антенны так, чтобы электромагнитное поле приняло форму идеальной сферы. Однако в реальных условиях этого добиться невозможно, поэтому с этой целью проводится множество исследований. Существует огромное количество книг по теории антенн, и мы проводили свои собственные эксперименты, чтобы наши антенны производили мощное и стабильное поле.
Источник: MIT
Для коммуникации маячки используют технологию Bluetooth Smart. Это последняя версия стандарта Bluetooth с низким энергопотреблением, который предназначен для передачи небольших объемов данных. Максимальный размер пакета Bluetooth 4.2 составляет 257 байт. Этого недостаточно для передачи медиаконтента, поэтому маячки передают только свои ID (в случае протокола iBeacon, ID делится на три части: UUID, Major, Minor) и информацию о силе излучаемого сигнала – этот параметр необходим для вычисления расстояния до смартфона.
Математика и физика
Дальность передачи и стабильность сигнала маячка зависят от двух основных факторов: интервала передачи (частоты) и силы вещания. Маячок не транслирует сигналы постоянно – он работает импульсно. Частота – это время, проходящее между двумя последовательными отправками данных. Чем выше частота, тем точнее определяется сигнал.
Так сделано, потому что смартфоны тоже «ищут» маячки, сканируя эфир с определенной частотой, и эта частота может зависеть от состояния телефона (заблокирован, разблокирован). Тип ОС и устройства также имеет значение. Если телефон активен, то он будет проводить сканирование с большой частотой; если положить его в карман, то через несколько минут он начнет экономить заряд батареи и ограничит число Bluetooth-сканирований.
У маячков Estimote время между импульсами составляет 950 мс, однако его можно изменять в диапазоне от 100 до 2000 мс. Стандартная частота выбрана неслучайно. В среднем, iOS сканирует область на наличие маячков 1 раз в секунду. 950 мс практически равняется этому значению. В радиозашумленных помещениях отправленный пакет может не достигнуть устройства (или что-нибудь/кто-нибудь перекроет прямую видимость смартфона и маячка). Чтобы повысить стабильность соединения можно увеличить частоту посылок.
Если вы установите интервал равным 490 мс, то произойдет передача двух пакетов за одно сканирование смартфоном. Если вы установите интервал равным 330 мс, то произойдет передача трех пакетов за одно сканирование; 240 мс – это четыре пакета и так далее. Если первый пакет не был принят устройством, существует вероятность, что оно примет остальные. Важно помнить, что увеличение числа отправляемых пакетов приводит к уменьшению времени жизни батареи.
Помимо частоты стоит учитывать силу вещания. Она описывает силу сигнала и измеряется в дБм (децибел-милливаттах). дБм – это абсолютный уровень мощности в децибелах относительно опорного уровня в 1 мВт. Рабочее расстояние маячка напрямую зависит от вещательной мощности. Невозможно сказать, на какое расстояние распространяются радиоволны, поскольку нет определенной точки в пространстве, где они просто останавливаются. Например, лампочка, она освещает определенную область вокруг себя, но свет идет гораздо дальше, рассеиваясь. То же самое происходит с радиоволнами.
Чем ближе вы к маячку, тем точнее вычисляется расстояние – это происходит из-за большей плотности сигнала в непосредственной близости от источника. Когда вы отходите, сигнал становится более рассеянным и искаженным, пока не станет неотличим от фонового шума. Чтобы лучше понять концепцию, представьте, что маяк – это радиоприемник, а сила вещания – это уровень громкости.
Если вы увеличите громкость, то сможете слышать музыку издалека, и, подходя ближе, будете слышать её все отчетливее. Но если уровень громкости очень низкий, вам может быть трудно распознать мелодию, даже если вы приложите ухо прямо к динамику. Однако знание точного уровня громкости в децибелах не дает возможности идеально точно определить расстояние, на котором будет слышен звук. На это влияет слишком много факторов: от препятствий (физическая материя, через которую должны проникнуть волны) до особенностей слуха.
Вычисление расстояния
Вы уже знаете, что смартфон сможет вычислить примерное расстояние до маячка после того, как «услышит» его. Чтобы сделать это, телефон считывает так называемый RSSI (Received Signal Strength Indicator) – индикатор мощности принятого сигнала, после чего сопоставляет его с уровнем сигнала, измеренным в 1 метре от передатчика, который доставляется как часть пакета передаваемых данных. Так смартфон вычисляет примерное расстояние до маячка. Расстояние в 1 метр было выбрано специально: как уже говорилось выше, гораздо проще получить точные значения на близких дистанциях из-за большей плотности сигнала.
Мы расписали правила, по которым вычисляются расстояния до маячков, но, как обычно, на практике все оказывается не так просто. Давайте вернемся к примеру с радио: представьте, что вы поставили радио не в комнате, а посреди шумной железнодорожной станции. Радио играет на полной громкости, и вы легко слышите его, когда находитесь поблизости, однако не можете определить его точное местоположение – мешают снующие туда-сюда люди. Помимо людей шумят приезжающие и уезжающие поезда, диспетчер объявляет о посадках – все это искажает звук, поэтому вы не можете с уверенностью сказать, на каком расстоянии от приемника находитесь.
Вычислить точное местоположение маячка только на основании принимаемых радиоволн невозможно. Здесь вам мешают не поезда и диспетчер, а множественность маршрутов распространения волн, дифракция, поглощение и интерференция. Помните, мы говорили, что невозможно спроектировать антенну, распространяющую сигнал во всех направлениях с одинаковой силой? Из-за этого взаимная ориентация маяка и смартфона в пространстве может влиять на аппроксимацию: показания RSSI сильно меняются.
Если маячок располагается на расстоянии 10 метров от вашего смартфона, приложение может показать цифру 8, затем угадать и предположить расстояние в 10 метров, затем сообщить о 12 метрах, снова вернуться к 7 и снова к 10… в общем, вы поняли. Если вы повернете телефон, то система может решить, что вы приблизились на 2 метра к маячку.
Мы разобрали принципы работы технологии iBeacon на примере описания действия маячков Estimote. А сейчас мы хотим подробнее рассказать о том, как работает навигация внутри помещения с использованием технологий, разработанных в Navigine.
Навигация внутри помещения: комментарий Navigine
Сервисы определения местоположения для iOS регулируются фреймворком Core Location, частью которого является iBeacon. Стандарт iBeacon не разрабатывался с целью вычисления точного расстояния до маячка и оперирует лишь зонами. Существует четыре типа зон: непосредственная близость (очень близко к маячку), близко (1-3 метра от маячка), далеко (зона, где сигнал слишком сильно колеблется, и точнее определить расстояние нельзя) и неизвестно. Фреймворк Core Location позволяет активировать желаемые события в каждой зоне.
Для небольших помещений, например, кафе или ресторана, этого будет достаточно, но что, если вы хотите получить точное местоположения на площади в тысячи квадратных метров, например, на складе, промышленном предприятии или в торговом центре?
Итак, остается открытым вопрос: можно ли построить надежный навигационный сервис внутри помещения, использующий iBeacon-маячки? Если коротко, то да, можно. Если говорить подробнее, то именно по этой причине любая аппаратная инфраструктура является лишь частью навигационных комплексов. Взяв за основу простую и дешевую инфраструктуру iBeacon, наши знания и подходы к indoor навигации (о которых мы вскользь говорили тут, и скоро расскажем подробнее), мы в Navigine разработали сервис, который позволяет определять положение внутри помещения в условиях отсутствия спутниковых сигналов.
В основе сервиса лежат наши алгоритмы интегрированной инерциальной навигации с широким набором дополнительной (корректирующей) информации на основе оптимальных методов оценивания с использованием фильтров Байесовского типа.
Чтобы максимально расширить область применения, мы обрабатываем следующий набор дополнительной информации:
- RSSI карты Bluetooth/WiFi полей (так называемых цифровых отпечатков);
- сигналы GPS и ГЛОНАСС (если есть частичный сигнал, например у окон);
- показания грубых бескарданных инерциальных навигационных систем (БИНС) на основе MEMS-датчиков (гироскоп, акселерометр смартфона);
- информацию от магнитометров (компас) и барометров смартфона;
- одометрическую информацию (измерение скорости объекта);
- информацию о карте помещения (стены, препятствия, возможные маршруты).
В результате работы навигационных алгоритмов на выходе получается точка на карте в мобильном приложении. В идеальном случае точность определения местоположения составит 1 метр (1 σ).
Еще буквально год назад тестирование indoor навигации на базе iBeacon-маячков требовало длительного и скучного процесса снятия радио карты. Сейчас достаточно отметить, где были установлены маячки на карте. У нас есть SDK для iOS/Android, которые вы можете протестировать, зарегистрировавшись на сайте, плюс часть алгоритмов доступна на GitHub (наш репозиторий). Форкайте на здоровье.