В случае VLC возникает ситуация с недостатком информации о местоположении, следовательно на данном этапе применение фильтра не дает видимых результатов. В дальнейшем, после реализации алгоритма детектирования передатчиков, фильтр Калмана вероятно будет показывать хорошие результаты.
5.Мобильное приложение
Для тестирования вышеописанных алгоритмов было создано приложение на платформе Android. Системные требования: Android 6+, поддержка модулей Wi-Fi и Bluetooth, камера (минимальное разрешение 480x360px).
Исходный код приложения доступен в репозитории по адресу: https://github.com/FionaRo/IndoorNavigation.
5.1 Карта помещения
Для тестирования было выбрано общежитие университета “Высшая Школа Экономики” по адресу Львовская 1в, подъезд 1. Приложение должно отображать карту внутренних помещений, включая этажи, лестницы и двери. Для создания карты был выбран сервис Mapwize. Он позволяет создавать карты помещений, ставить метки на помещения и создавать маршруты между метками. В текущем решении используется бесплатная версия этого сервиса и он имеет ограничения на количество создаваемых объектов.
Рисунок 9. Карта помещения
На рисунке 9 показана карта, созданная с помощью сервиса Mapwize. На ней отображаются жилые блоки, тех. помещения, лестницы, коридоры и двери. Также, на рисунке отображен маршрут между двумя помещениями.
5.2 Функционал приложения
Рисунок 10. Выбор метода позиционирования
Приложение позволяет выбрать каким методом определять текущее местоположение (Рисунок 10).
Рисунок 11. Поиск и отображение локации
В приложении отображается текущее местоположение, полученное с помощью выбранного метода, и с помощью компаса определяется направление телефона. Также, доступна возможность выбрать объект нажатием на него либо через поиск в списке (Рисунок 11).
Рисунок 12. Маршрут от текущей локации
В приложении можно построить маршрут от текущего местоположения (Рисунок 12). Маршрут будет построен с учетом указанных дверей. Приложение также учитывает наличие лестниц и может строить маршруты с одного этажа на другой.
5.3 Архитектура приложения
Приложение использует MVP (Model-View-Presenter) паттерн, так как он считается наиболее оптимальным для разработки мобильного приложения.
Рисунок 13. MVP паттерн
Схема (Рисунок 13) отображает взаимодействия в программе, которая использует MVP паттерн.
В данном приложении в качестве View выступает главное окно (MainActivity), оно отсылает в Presenter (LocationScanner) события о смене типа определения местоположения. LocationScanner содержит поле locationManager типа ILocationManager, при смене типа позиционирования этому полю присвается один из экземпляров классов: CellLocationManager, WiFiLocationManager, BeaconsLocationManager или VlcLocationManager. Каждый из этих классов имплементирует метод интерфейса ILocationManager - getLocation.
Presenter каждые 500мс вызывает метод getLocation у текущего locationManager. В этот метод передается callback (функция обратного вызова), так как методы не имеют возможности вернуть информацию о местоположении мгновенно. Каждый из классов в методе getLocation запускают алгоритм определения местоположения, описанный выше. Для каждого из классов есть свой набор Models для работы с камерой, запрашивания данных с сервисов и обработки данных различными алгоритмами.
После завершения работы алгоритма вызывается callback, в который передается текущая локация. Эта локация затем передается в фильтр Калмана, который возвращает отфильтрованные данные в Presenter. После получения итогового местоположения Presenter вызывает метод updateLocation у View, в котором обновляется местоположение на карте.
6.Сравнение технологий
Одной из задач данной работы являлось сравнение технологий в рамках сложности настройки, точности определения позиции, энергопотребления, стоимости реализации и применимости для задачи навигации внутри помещения.
Таблица 1. Сравнение методов позиционирования
Таблица 1 представляет сравнение реализованных методов позиционирования. GSM и Wi-Fi невозможно применить для навигации внутри помещений в текущем варианте, так как они показывают плохую точность в определении местоположения. VLC применима для навигации внутри помещения, но требует доработки, так как на текущем этапе может вызывать сложности при использовании.
1 - Сложность настройки определяется временем, которое может быть затрачено на установку оборудования. Для GSM и Wi-Fi не требуется производить настройку оборудования. Для Beacons требуется настроить уникальные идентификаторы и расположить их по всему зданию. VLC требует создания и программирования специальных поляризаторов и установка их на лампы внутри здания.
2 - Энергопотребление определяется частотой сканирования и энергопотреблением используемых модулей. GSM имеет высокое энергопотребление, так как сканирование вышек сотовой связи происходит с высокой частотой. Сканирование сетей Wi-Fi имеет ограничение на 4 запроса в 2 минуты, поэтому снижается количество потребляемой энергии. BLE Beacons потребляет наименьшее количество энергии, благодаря технологии Bluetooth Low Energy. VLC использует камеру, которая потребляет большое количество энергии.
3 - Нулевая стоимость оборудования объясняется отсутствием необходимости его закупки. Для использование требуется только создание приложения.
4 - Цены взяты с сайтов: aliexpress.com, passkit.com и estimote.com.
5 - Цена оборудования взята из исследования “Wearables Can Afford: Light-weight Indoor Positioning with Visible Light”.
6 - GSM и Wi-Fi могут применимы для позиционирования внутри помещений с использованием алгоритма, включающего предварительное сканирование сетей.
7 - VLC требует доработки алгоритма детектирования передатчика для уменьшения сложности использования данного метода.