[Из песочницы] Навигация внутри помещений — первые шаги с indoo.rs NavigationSDK
Предположим, вы организуете конференцию, выставку или отвечаете за инфраструктуру торгового центра или аэропорта. В любом случае вы имеете дело с большим потоком посетителей. Одна из проблем, с которыми вы столкнётесь — это навигация внутри помещений, а точнее её отсутствие. Решив эту проблему, вы можете повысить эффективность и доступность своего мероприятия, а также улучшить качество оказываемых услуг.
Данная задача не является новой и попытки найти её решение предпринимались неоднократно различными участниками рынка. В этой статье я расскажу вам об одной из таких попыток — технологии, предложенной австрийским стартапом indoo.rs.
Этот стартап существует уже несколько лет, а усилия прилагаемые к продукту в последнее время направлены в первую очередь на снижение стоимости и радикальное упрощение применения технологии. Все, кому интересен процесс внедрения начиная от принятия решения и заканчивая готовым мобильным приложением с функциями навигации, добро пожаловать под кат.
Стоит отметить, что линейка продуктов компании не ограничивается только навигацией. Помимо неё разрабатываются также системы взаимодействия с клиентами (proximity marketing), отслеживания перемещений имущества или грузов (asset tracking) и сотрудников (worker tracking). Мы же сегодня рассмотрим NavigationSDK — инструмент позволяющий с лёгкостью использовать технологию позиционирования внутри помещений в своих мобильных приложениях.
Сам процесс подготовки состоит из следующих шагов:
- регистрация нового аккаунта и приложения;
- ввод информации и создание карты помещений;
- снятие измерений уровня радиосигнала в помещениях;
- обработка полученных измерений;
- создание мобильного приложения и интеграция SDK.
Итак, первый шаг при работе к NavigationSDK заключается в создании аккаунта. На данный момент доступны несколько тарифных планов, среди которых Testing — бесплатный тарифный план с ограничением в 1 месяц, для всех, кто хотел бы получить общее впечатление об NavigationSDK. Его мы и попробуем в деле.
Итак, мы зарегистрировали аккаунт — что дальше? Следующий шаг — регистрация приложения. После этого будет доступен ключ для работы с API.
Этот ключ также нужен для работы с приложением MeasurementTool, которое можно скачать по ссылке в разделе Downloads. MeasurementTool нужен нам для создания карты помещений. Для этого нам понадобится изображения с поэтажными планами (из тех помещений, что мы планируем использовать для навигации). Используйте качественные изображения на этом шаге, так как именно они будут отображаться в вашем будущем мобильном приложении.
Первым делом вводим свои регистрационные данные и ключ приложения в настройках MeasurementTool.
При создании новой карты нам понадобятся следующие данные:
- наименование строения с описанием;
- координаты строения на карте;
- угол поворота;
- наименование, уровень и описание для каждого этажа.
Несколько нюансов относящихся к созданию карты:
- координаты задаются относительно левого верхнего угла плана помещения;
- угол поворота задается относительно верхней границы изображения с началом в левом верхнем углу;
- для определения масштаба доступен специальный инструмент (он требует ввода реального расстояния между двумя произвольными точками в помещении).
Итак, мы задали все необходимые параметры и создали прототип нашей будущей карты. Следующий шаг — задание необходимых для навигации элементов карты как то: стены, переходы между уровнями, зоны, маршруты и т.п.
В ранних версиях приложения мы должны были задавать расположение устройств-передатчиков (WiFi точек доступа и/или BLE маячков) и размещать их физически в соответствии с их расположением на карте — много кропотливой работы выполняемой вручную. В настоящий момент в этом уже нет необходимости: вы просто равномерно распределяете маячки по помещению, а все остальное происходит автоматически, благодаря новым алгоритмам объединенным под маркой Indoors SLAM, используемым для построения карты.
После задания всех необходимых параметров помещений, мы готовы сохранить наши изменения на сервере, для этого выбираем в меню File пункт Save to cloud.
Следующим шагом будет физическое размещение BLE маячков в помещениях. Для примерной оценки достаточного количества маячков можно воспользоваться калькулятором.
Можно использовать любые маячки совместимые с протоколом iBeacon или существующую инфраструктуру WiFi точек доступа. Точность в последнем случае получается как правило ниже, но для некоторых применений её может оказаться вполне достаточно.
После размещения маячков приступаем к следующему шагу — снятию измерений. С этой задачей помогает справиться приложение indoo.rs MobileToolkit — оно также доступно в разделе Downloads. Единственное ограничение — приложение доступно только для платформы Android (ввиду ограничений на устройствах Apple для работы с Bluetooth стеком).
Итак, запускаем приложение, вводим регистрационные данные и открываем ранее созданную карту помещений. Для записи измерений существует два способа:
- отмечать своё текущее положение, идя по карте;
- заранее отметив маршрут, отмечать достижение очередной его точки.
Субъективно, второй способ немного легче.
Базовые рекомендации относительно снятия измерений:
- продолжительность измерения должна быть в пределах от двух до десяти минут;
- отрезки маршрута должны быть прямыми;
- не стоит размахивать устройством, т.к. помимо измерения радиосигнала снимаются также и показания со встроенного акселерометра;
- суммарно измерения должны покрывать всю площадь помещения;
- при этом желательно, чтобы измерения перекрывали друг друга по площади;
- ну и, конечно же, до начала измерений убедитесь, что Bluetooth на вашем устройстве включен.
Теперь нужно загрузить измерения на сервер. Используйте имя пользователя и комментарий чтобы отличать измерения (например, номер этажа, часть помещения и т.п.).
Следующий шаг на данный момент автоматизирован частично и выполняется по заявке в службу технической поддержки. В ближайшее время будет доступен новый инструмент (внутреннее название SLAM DIY), который позволит подготовить окончательный вариант карты самостоятельно и на выходе получить файл в формате idm, который затем можно импортировать в MMT. После импорта карта становится доступна пользователям мобильного приложения.
В качестве тестового приложения может выступать Indoors Navigation из Play/AppStore или любое другое приложение разработанное с применением NavigationSDK (например, MyFirstIndoorsApp, доступное в разделе Downloads). NavigationSDK позволяет внедрить карту в само приложение, чтобы пользователям не пришлось её загружать при первом запуске.
К этому моменту у нас есть все необходимое для реализации собственного приложения для навигации в помещениях. Ссылки на примеры приложений для iOS и Android также находятся на странице загрузок.
Отдельного внимания заслуживает недавно добавленный плагин для Cordova и приложение-пример. Это сделало возможным использование SDK в гибридных приложениях.
Если данная тема заинтересует читателей, я могу рассказать подробнее о разработке мобильных приложений с NavigationSDK, других продуктах компании и планах на будущее.