Таким образом, использование GSM без предварительного сканирования сигнала во всех помещениях становится невозможным ввиду недостаточного покрытия базами данных вышек в Нижнем Новгороде и ограничениями платформы Android.
3.2 Wi-Fi
Принцип работы метода определения текущего местоположения на основе точек доступа Wi-Fi по большей части схож с работой метода основанного на GSM. Для определения местоположения с помощью этой технологии так же можно использовать предварительное сканирование и алгоритм трилатерации.
Предварительное сканирование, так же, как и в предыдущем методе не было реализовано ввиду сложности настройки такого метода. Сложность заключается в том, что сигнал точки доступа может очень сильно изменяться под действием многих различных факторов, таких как перемещение людей и различных предметов, открытые или закрытые двери и многое другое. Таким образом, данный метод требует постоянной калибровки, что является невозможным.
Так как точек доступа Wi-Fi намного больше, чем вышек сотовой связи, значит то, что они могут предоставить лучшую точность определения. В связи с этим был реализован метод определения местоположения, основанный на алгоритме трилатерации, но он в итоге не был использован. Причиной является то, что несмотря на большее количество точек доступа, данных о их местоположении меньше, чем о вышках, так как они чаще меняются и могут перемещаться. Для этого метода также был проведен эксперимент со сканированием точек доступа. Описание и маршрут эксперимента можно увидеть на странице 12. Для определения местоположения точки доступа были использованы MyLinkov и Wiglet API.
· Wiglet API - данный ресурс позволяет искать точки доступа не только через их идентификатор, но и по имени, что дает больший шанс нахождения точки доступа.
Обе базы данных показали плохой результат: количество определенных точек доступа составило ~5%. В связи с невозможностью получить точное местоположении были использованы сервисы Google Geolocation и Yandex.Locator. Описание сервисов можно прочитать выше, на странице 13. Оба сервиса показали примерно одинаковую точность в ~15 метров.
Ещё один недостаток использования Wi-Fi технологий на платформе андроид заключается в том, что производить сканирование точек доступа можно только 4 раза в 2 минуты (то есть каждые 30 секунд). Внутри помещений подобная задержка будет особо заметна при перемещении. К тому же API с помощью которого производится сканирование в будущих версиях будет запрещено к использованию (developer.android.com, WifiManager).
Таким образом, Wi-Fi технологии сохраняют все недостатки GSM технологий, но предоставляют больше возможностей для точного определения местоположения. Использование данного метода подходит для организаций, которые сами могут создать базу собственных точек доступа и их местоположений и использовать её в своих приложения.
3.3 BLE Beacons
Метод навигации, использующий BLE Beacons, в настоящее время является наиболее популярным для навигации внутри помещений. Они дешевые, маленькие, чаще всего с независимым источником питания (батарейкой) и могут быть незаметно установлены практически в любом месте. К тому же, в соответствии с GSMA (GSM Association) “Точность определения местоположения с помощью beacons составляет 10 сантиметров”.
Одним из главных преимуществ BLE Beacons является их минимальное энергопотребление за счет использования технологии Bluetooth Low Energy (BLE). Данная технология была введена в эксплуатацию в 2016 году для использования в сфере Internet of Things (IoT). Исследование Monika Adarsh (2018) показывает, что потребление электроэнергии в Bluetooth LE снизилось более чем в два раза по сравнению в Bluetooth Classic.
В настоящее время существует очень много производителей BLE Beacons и несколько протоколов передачи данных. Наиболее используемыми протоколами BLE Beacons являются iBeacon (Apple, 2013) и Eddystone (Google, 2015). Покупка данных устройств в рамках проекта была нецелесообразной, особенно ввиду того, что существует несколько приложений, которые могут эмулировать работу BLE Beacons. Поэтому для тестирования использовалось несколько телефонов с установленными симуляторами маячков и протоколом передачи данных iBeacon.
Рисунок 3. iBeacon data
На схеме (Рисунок 3) показаны данные, которые передает iBeacon. Данными являются последовательность байт, подпоследовательность которых предоставляет информацию о текущем маячке:
· Prefix позволяет определить принадлежность маячка к компании или типу передачи данных. С помощью поля iBeacon type (0x02) можно однозначно сказать, что данный маячок передает данные в формате iBeacon
· UUID (Universally Unique Identifier, универсальный уникальный идентификатор) - идентификатор маячка, должен быть уникальным среди всех используемых маячков.
· Major number - определяет принадлежность маячка какой-либо большой группе. Например, в этом поле может записан этаж, на котором размещен маячок. Данное поле может быть одинаково на разных маячках.
· Minor number - уникальный номер внутри группы. Может совпадать для разных маячков, которые находятся в разных группах.
Каждому маячку было присвоен UUID, Major number (номер этажа) и minor number, было выбрано их местоположение и эти данные были сохранены внутри приложения. Для определения текущей позиции используется алгоритм трилатерации, который принимает местоположение и расстояние до трех точек и на их основе возвращает текущую позицию устройства.
Хотя маячки дают большую точность по сравнению с предыдущими методами, они также имеют нестабильный сигнал, который зависит от многих факторов и в результате которого ухудшается точность определения текущего местоположения устройства. С использованием трилатерации, но без дополнительных алгоритмов и сенсоров точность определения местоположения составила ~3 метра.
3.4 VLC
VLC, в противоположность методам рассматриваемым ранее, в данный момент не имеет большого распространения в сфере навигации внутри помещений, так как имеет ряд сложностей в применении.
Главный принцип работы данного метода в том, что специальные лампы рассылают свой идентификатор с помощью высокочастотного непрерывного мигания. Так как они могут мигать с очень высокой частотой, это остается незаметным человеческому глазу, но может быть детектировано камерой телефона или специальным устройством. Также, лампы уже установлены во всех помещениях и обеспечивают очень хорошее покрытие для позиционирования.
Более того, с помощью этого решается проблема пропускной способности различных предметов - сигнал из соседних помещений просто не будет детектироваться устройством, так как свет не проходит сквозь стены. Таким образом, с помощью этого метода и без использования дополнительных алгоритмов улучшения точности как минимум можно определить комнату, в которой находится устройство. Главной проблемой при использовании данного метода является то, что для детектирования высокочастотного сигнала нужно либо специальное устройство, либо камера с очень высоким разрешением. А это значит, что данный метод будет недоступен для общего пользования.
3.4.1 Поляризатор
Изучив различные источники, было найдено решение, предложенное командой Microsoft. Они разработали систему, которая может считывать данные, передаваемые с помощью света, даже на устройствах с плохой камерой и производительностью. Решение основано на принципе работы LCD (liquid crystal display) и модуляции света.
Рисунок 4. Устройство LCD
Выше (Рисунок 4) представлено устройство LCD, состоящего из 6 частей. Работа LCD заключается в следующем:
1. Неполяризованный свет испускается подсветкой (6)
2. Затем поляризуется с помощью поляризационного фильтра (5)
3. Далее свет проходит сквозь стекло (4), не меняясь
4. Жидкие кристаллы (3), которые меняют своё состояние под воздействием напряжения взаимодействуют со светом, преломляя его.
5. Свет, прошедший через кристаллы, попадает на другое стекло (2) и на этом этапе человеческий глаз видит только подсветку
6. Чтобы увидеть что-либо на дисплее необходим второй поляризационный фильтр (1), который преобразует свет, прошедший через кристаллы, в видимые глазу изменения, так как расположен перпендикулярно первому фильтру.
Основываясь на устройстве LCD, можно создать собственный поляризатор, который будет транслировать нужные данные с низкой частотой мигания, но всё ещё незаметной глазу.
От LCD в поляризаторе остается первый поляризационный фильтр и жидкие кристаллы между двумя стеклами. Жидкие кристаллы под напряжением будут перенаправлять поляризованный свет, а без напряжения оставлять без изменения. Но, так как, отсутствует второй поляризационный фильтр для смотрящего не будет никаких заметных изменений. Если установить второй поляризационный фильтр на камеру, то устройство начнет видеть изменение в свете: поляризатор будет менять свой цвет с темного на светлый и тем самым передавать код. Поляризатором будет являться небольшое устройство из фильтра, кристалла со стеклом и контроллером, который в нужный момент будет менять напряжение на кристаллах. Это устройство может быть установлено на любую лампу и даже на окно, главное, чтобы был источник света, который будет проходить через кристаллы и изменяться.
Было проведено исследование, где можно приобрести материалы для изготовления такого устройства. В России можно найти только поляризационные фильтры, а вот электропроводящее стекло и жидкие кристаллы оказались труднодоступны.
Также, существует вариант приобрести дисплей и снять с него ненужные детали, но этот способ тоже имеет свои недостатки. Во-первых, отделение компонентов дисплея друг от друга может быть очень сложным и привести к тому, что устройство в итоге не будет работать. Более того, отделить подсветку от кристаллов на большинстве дисплеев невозможно, так как они прикреплены к одной плате. Во-вторых, дисплеи состоят из большого количества кристаллов (пикселей), что также усложняет работу по модуляции света: нужно одновременно на каждый кристалл подавать одинаковое напряжение.
Ввиду всего вышесказанного было принято решение смоделировать работу поляризатора с помощью обычного телефона. Телефон будет передавать сигнал с помощью изменения цвета с черного на белый и обратно. Такое же поведение, но незаметное глазу, присутствовало бы при использовании настоящего поляризатора.
3.4.2 Передача сигнала
Для передачи сообщения с помощью света, нужно применять специальные алгоритмы кодирования сообщения и передачи сигнала.
В качестве идентификатора для каждого устройства используется натуральное число, которое передается как двоичный код. Так как возможны ошибки при передаче сигнала, требуется применить один из методов кодирования, который позволил бы исправить ошибки в полученном коде. В качестве алгоритма был выбран код Хэмминга, так как он минимально увеличивает длину итогового сообщения. Код Хэмминга позволяет исправить одинарную ошибку и определить двойную. В данной работе не рассматриваются циклические методы кодирования, так как они сильно увеличивают размер сообщения, а значит время полного получения сигнала. К тому же ошибка приема данных в данном проекте не так критична, так как сигнал передается постоянно и вероятно будет считан ещё раз. Построение кода Хэмминга основано на принципе проверки на четность числа единиц. В каждое сообщение добавляются контрольные биты, с помощью которых при декодировании можно определить и исправить ошибку. Количество контрольных битов равно двоичному логарифму от исходной длин сообщения.
Из алгоритмов передачи сигнала было выбрано Манчестерское кодирование, так как оно имеет возможность самосинхронизации (возможность приемнику синхронизоваться с передатчиком) и наименее затратно по количеству передаваемых бит. В данном алгоритме каждый бит сообщения кодируется перепадом напряжения с 0 на 1 при передаче единичного бита и с 1 на 0 при передаче нулевого бита. При одинаковых битах, идущих подряд, в начале такта происходит изменение напряжения на противоположное. А изменение напряжения, определяющее текущий бит, обязательно происходит в середине каждого такта, что позволяет приемнику синхронизироваться с передатчиком. Чтобы определить начало сообщения используется преамбула, которая позволяет приемнику определить с какого места начать читать данные. Для Манчестерского кодирования оптимальной преамбулой является 10101010, так как изменение цвета будет происходить только в середине такта, что позволит легче синхронизоваться с устройством.