floortrace
Исследовательское приложение Android для позиционирования: GNSS, инерциальное сопровождение, барометрическая оценка этажа, Wi-Fi RTT, здания и помещения OpenStreetMap. Дополнительный кадастровый слой NSPD работает по возможности и не должен блокировать позиционирование.
Что реализовано
Заголовок раздела «Что реализовано»- GPS и сетевой провайдер Android, спутники и диагностические сырые GNSS-наблюдения;
- шагомер, направление по датчикам, сопровождение трека с растущей неопределённостью;
- фильтр грубых/устаревших координат и единичных скачков GNSS;
- оценка этажа по давлению после ручной калибровки или входа в известное здание;
- Wi-Fi RTT на совместимых устройствах с минимум тремя заранее измеренными точками доступа;
- полигоны зданий, комнат и коридоров OSM через Overpass;
- собственная карта, кеш растровых тайлов, атрибуция OSM;
- необязательный адаптер кадастровых данных NSPD.
RTT отбрасывает некорректные координаты, неопределённости NaN/Infinity и повторные BSSID; вырожденная геометрия не выдаёт позицию. В app/src/main/assets/anchors.json нет готовых точек: добавьте измеренные координаты по образцу anchors.example.json.
Границы точности
Заголовок раздела «Границы точности»Обычный смартфон не определяет произвольную комнату по GPS во всех зданиях. Отображаемый результат объединяет измерения и вывод по модели; это не гарантия физической точности. Внутри зданий GNSS ухудшается, инерциальная ошибка накапливается, давление зависит от условий. Для воспроизводимой точности помещения нужны измеренные RTT/BLE/UWB-якоря либо карта отпечатков сигналов. Без геометрии помещений приложение не должно изображать достоверное распознавание комнаты.
Нужны JDK 17, Android SDK 36 и Build Tools 36.0.0. Версии Android Gradle Plugin и Gradle зафиксированы в проекте. local.properties содержит только локальный путь SDK и не публикуется.
./gradlew testDebugUnitTest assembleDebugAPK: app/build/outputs/apk/debug/app-debug.apk. Это отладочная сборка, подписанная локальным debug-ключом; магазинная публикация и release signing отдельно. Результаты проверки.
Источники и ограничения эксплуатации
Заголовок раздела «Источники и ограничения эксплуатации»OSM требует атрибуции © OpenStreetMap contributors; данные распространяются по ODbL. Публичные тайловые и Overpass-сервисы имеют ограничения нагрузки: для эксплуатации нужны кеширование и подходящий сервер. NSPD не является стабильным мобильным SDK, его доступность и условия использования проверяются отдельно. Технические заметки.
Приложению нужны разрешения местоположения, датчиков и Wi-Fi согласно версии Android. Трек и диагностические координаты чувствительны: не публикуйте личные записи и измеренные домашние BSSID вместе с исходниками. Полевая точность и энергопотребление требуют испытаний на физических устройствах; сборка APK и unit-тесты их не заменяют.
Следующие работы
Заголовок раздела «Следующие работы»Полевые сценарии с эталонным треком; оценка ошибки и калибровка барометра; обработка жизненного цикла датчиков и разрешений; лимиты внешних запросов; офлайн-данные; поддержка системных edge-to-edge API вместо устаревших методов отображения.
Исходный код · Apache-2.0