Разработчики внутренней практики DataArt «Путешествия и гостиничный бизнес» представляют систему внутреннего позиционирования и рассказывают, чем она интересна для индустрии.

Что такое система позиционирования во внутренних помещениях?

Исходя из статьи в википедии, это решение для нахождения объектов и людей внутри здания с помощью радиоволн, магнетических полей, акустических сигналов или другой сенсорной информации, собранной с помощью мобильных устройств. Проще говоря, с помощью этой системы можно определить свое местоположение в большом здании, используя лишь специальное приложение на смартфоне. Для людей, не работающих в технической сфере, это звучит как волшебство; для тех, кто теряется в аэропортах, торговых центрах и других зданиях — как панацея; для разработчиков железа и ПО — как серьезный вызов.

Почему бы не использовать GPS?

Значительные минусы GPS — его зависимость от стабильности сигнала и многолучевое распространение, ведущее к — неустранимым ошибкам. Конечно, можно использовать GPS-ретрансляторы, но это недешевое удовольствие. Поэтому система позиционирования во внутренних помещениях — крайне выгодная альтернатива.

Почему мы этим занимаемся

Во-первых, это новый мировой тренд, и никто еще не предложил дешевый и легкий в эксплуатации продукт, который бы отвечал требованиям тренда. Поэтому разработка — отличная возможность проверить силы в этом сегменте.

Во-вторых, нам приходило несколько запросов от компаний, которым нужны решения для внутренней навигации.

В-третьих, нам самим это важно и интересно. Лично мне даже после пяти лет, потраченных на высшее образование и получение степени, интересно открывать что-то новое и решать сложные математические и технические проблемы.

Необходимое оборудование

  • iPhone с iOS 8.0 или выше. Желательно, чтобы в устройстве был установлен процессор движения (M7/M8).
  • BLE-маячки. Это, возможно, самый дешевый вариант для Bluetooth-соединения с емкой батареей, средним радиусом работы (15 – 30 метров) и поддержкой конфигурации UDID/Major/Minor.


Современные подходы к решению проблем

  • Триангуляция и трилатерация – два математических подхода, полагающихся на шкалы «угол» и «дистанция», соответственно. У них схожие принципы — поиск локуса точек пересечения, хорошая работоспособность в лабораторной среде (незначительный шум, предел видимости маячков и т. д.) и средние или неудовлетворительные результаты при работе в живой среде в связи с несколькими пересечениями или их отсутствием.
  • Сетчатость — маячки расположены по сетчатому шаблону. Ваше устройство будет в зоне покрытия, только если определенное количество маячков будет находиться в здании, позволяя вам определить свое местоположение.
  • Продвинутые подходы к фильтрации (фильтры частиц и фильтры Калмана) – используют теорию вероятности и сложные математические модели чтобы снизить эффект от шума и настроить положение при изменениях в локации, приеме сигнала и т. д.
  • Гибридные системы – объединяют два или более подходов, описанных выше, чтобы свести к минимуму ошибки при определении местоположения, или для переключения между подходами в зависимости от внешних условий.


Основные проблемы

Многолучевое распространение и затухание сигнала. Системы навигации в закрытых помещениях, основанные на BLE, все еще полагаются на электромагнитные волны. Это может привести или к неверным показаниям с маячков, которые находятся далеко от пользователя, или к:
  1. Пропаже маячков. Иногда CoreLocation показывает, что зона действия маячка неизвестна, хотя минуту назад он значился как ближайший.
  2. Интервалам в измерении. К сожалению, невозможно изменить интервалы измерения и доставки информации, которые прописаны внутри CoreLocation (обновления идут каждую секунду).
  3. Движку составления карты. Все вышеперечисленные вещи не имеют значения, если у вас есть рабочая карта с метаданными. Движок — сердце навигационного приложения, а движки навигации и составления пути — мозг.


Некоторые технические детали текущей реализации

Первая проблема, с которой мы столкнулись, связана непосредственно с картой. «В чем проблема? — спросите вы. — MapKit позволяет использовать пользовательские элементы. Если и это не помогает — используйте OSM и MapBox». Да, всё так, но, если вы используете MapKit, в конечном итоге сталкиваетесь с массой препятствий:

  • Элементы должны быть выровнены и подогнаны по размерам в соответствии с уже существующей сеткой создаваемой карты.
  • Пока план здания выполнен в плоскости, карты используют Меркаторову проекцию.


Вот почему мы решили придерживаться подхода, основанного на CATiledLayer: карта является изображением, составленным из элементов, и у изображения есть несколько уровней детализации.

Второй (и главной) проблемой стал, конечно, поиск локации. Мы протестировали и трилатерацию, и триангуляцию в двухмерном пространстве, но результаты были существенно подпорчены отсутствием Z-координат. После переключения на 3D (каждый маяк имеет координаты Vx, Vy, Vz), дела пошли лучше, но не настолько, насколько ожидалось.

После нескольких мозговых штурмов решили использовать нормальное распределение, чтобы смоделировать высоту устройства и переключиться на принцип Center of Force. В каждой итерации устройство вычисляет векторы привязанности каждого маяка и применяет их к текущей позиции, таким образом корректируя ошибки. Прямое расстояние до маяков вычисляется с помощью их значений RSSI. Единственная проблема в данном случае связана с тем, что таким расчетам не хватает точности с низкими значениями RSSI в связи с ослаблением сигнала. Это может привести к значительным ошибкам расчета.

Перспективы


Несмотря на то что прототип позволяет достигнуть весьма неплохих результатов (примерная погрешность — три метра, чего, в общем, хватает для аэропортов и торговых центров), мы видим массу моментов, которые можно добавить или улучшить. Вот некоторые:
  • Обнаружение движения для осуществления адаптивной фильтрации, что позволит вносит изменения в алгоритм фильтрации на лету или настраивать ее коэффициенты.
  • Более утонченное решение проблемы «исчезающих маячков» — введение чего-то вроде «уровня доверия» и его порогового значения, чтобы полагаться на «доверенные» маячки в каждой итерации.
  • Более утонченный «геометрический фильтр» для направления движения и определения поворотов.
  • Метаданные — график маршрутов и промежуточных пунктов («перекрестков», POI и т. д.).
  • Опция «Привязать текущую позицию к сетке», как это делается в реальных картах и навигационных приложениях.
  • Алгоритм маршрутизации для поиска (кратчайшего) пути.


Немного скриншотов





Автор: Ярослав Воронцов, Senior iOS Developer.

Комментарии (9)


  1. k1b0rg
    10.09.2015 19:21
    +2

    А никто не думал про навигацию через визуальные метки:
    1) получаем изображение и отсылаем на сервер;
    2) сервер находит метки, сопоставляет метку с местом по БД;
    3) сервер выдает ответ о месте;
    в качестве меток сойдут qr-code
    Достоинства:
    печатать qr-code можно на любом принтере, что дешевле маяков;
    нет радиоизлучения;
    к кодам можно привязать элементы дополненной реальности.
    Недостатки:
    меток нужно больше чем маяков, их нужно расклеивать;
    они могут не сочетаться дизайном помещений.


    1. DataArt
      10.09.2015 19:52

      Этот способ подразумевает наличие сервера. В нашей схеме сервера нет. Ну и вдобавок, поиск меток не столь интерактивен — нужно самостоятельно искать и сканировать метки, в то время как сигнал от маяков принимается без участия пользователя.


    1. TimID
      10.09.2015 22:44

      То что Вы предлагаете, называется AR. По нашему — дополненная реальность.
      И маркеры для этих целей специальные разработаны. Посмотрите, к примеру, NyARToolkit.

      Всё хорошо, кроме того, что смартфон придётся держать с включённой камерой перед собой. И процессор грузится нехило.
      А ещё маркеры придётся расклеить по полу с шагом метра в три. Или сделать маркеры большими — во всю стену.


  1. alltiptop
    10.09.2015 19:55
    +1

    А как на счёт wifi?


    1. Marwin
      10.09.2015 21:57

      BLE маяки многократно дешевле роутеров вафли, работают от батареек месяцами. А мысль та же, и главную проблему гуляющего RSSI не решают. Мы тоже пока остановились на BLE маяках и остальное доделываем математикой в лице Калмана и прочих буферных усреднений. Если прилипить к этому акселерометр, то можно еще лучше отсеивать ненужные всплески сигнала. Но в любом случае любое решение на базе технологии силы сигнала не предполагает точное определение координат в отличие от GPS. Так что чудо вряд ли произойдет.


  1. avorsa
    10.09.2015 20:35

    Примерно также, полагаю.
    Было бы интересно почитать о реально работающих проектах.
    Разработки есть давно, но в приличном продакшене я пока не видел.


  1. MrMmka
    11.09.2015 02:39

    Вообще iBeacon технология не создана для геопозиционирования. Просто потому, что она не для этого. Об этом говорит и сам Apple, кто первый придумал это для iPhone.


    1. Bringoff
      11.09.2015 07:42

      Интернет тоже вначале не для фото с котиками предназначался, хотя сейчас успешно для этого используется.


  1. Kefir
    11.09.2015 15:51

    А ультразвук вместо блютуса нельзя использовать? Можно микрофоном ловить