Інтеграція UWB (Ultra-Wideband) для точного позиціонування в мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Інтеграція UWB (Ultra-Wideband) для точного позиціонування в мобільному додатку
Складний
від 1 тижня до 3 місяців
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція UWB (Ultra-Wideband) для точного позиціонування у мобільному додатку

GPS у приміщенні не працює — це відомо. Bluetooth Low Energy дає точність 1-3 метра в найкращому випадку. Wi-Fi RSSI triangulation — 2-5 метрів з високою нестабільністю. UWB (Ultra-Wideband) — технологія з точністю 10-30 сантиметрів, заснована на вимірюванні часу проходження радіосигналу (Time of Flight / Two-Way Ranging). Саме її Apple вбудував у iPhone 11+ через чип U1, і саме вона дає AirTag точність «ось ваша сумка, поверніть вправо».

Як працює UWB та що це означає для розробника

UWB використовує імпульси шириною ~500 МГц у діапазоні 6-8.5 ГГц. Час проходження сигналу між двома пристроями вимірюється з точністю до наносекунд (TWR — Two-Way Ranging, або TDoA — Time Difference of Arrival). З часу обчислюється відстань: 1 нс = ~30 см.

Для сценарію indoor positioning потрібні якорі (anchors) — UWB маяки з відомими координатами — та мобільний пристрій (tag). За виміряними відстанями до мінімум 3 якорів обчислюється позиція методом трилатерації.

Підтримувані пристрої

iOS. Apple NearbyInteraction framework. Пристрої з чипом U1/U2: iPhone 11–15, iPhone SE 3rd gen, AirTag, HomePod mini 2, Apple Watch Ultra. NISession — основний клас. Одна сесія = одна пара пристроїв. Для позиціонування відносно кількох якорів — кілька паралельних NISession.

Android. UwbManager з Jetpack Core UWB (androidx.core:core-uwb). Підтримувані пристрої: Samsung Galaxy (S21 Ultra+, S22+, S23, S24, Z Fold3+), Pixel 6 Pro+, деякі Xiaomi. Перевірка підтримки: UwbManager.isAvailable().

UWB-якоря (hardware). Для інфраструктурного позиціонування потрібні сторонні якоря: Qorvo DWM3000EVB, Decawave DWM1001, Sewio RTLS, Pozyx. Вони спілкуються по IEEE 802.15.4z і мають SDK для конфігурації.

Обмеження платформи

Apple Nearby Interaction — тільки peer-to-peer між двома Apple-пристроями або MFi-сертифікованими аксесуарами. Для інфраструктурного indoor positioning (якоря → телефон) напрямки через NISession працює тільки з Qorvo-сумісними якорями через спеціальний NIConfiguration.

NISession вимагає обміну NIDiscoveryToken між пристроями заздалегідь — зазвичай через Multipeer Connectivity, Bluetooth або сервер. Після обміну токенами NISession.run(configuration:) починає вимірювання.

Практичний кейс: навігація в торговому центрі

Сценарій: покупець шукає конкретний магазин. GPS недоступний. BLE-навігація недостатньо точна для коридорів шириною 3 метри. UWB-якоря встановлені на стелі кожні 10-15 метрів.

Якоря Pozyx Creator (UWB, PoE, самостійна локалізація) → центральний сервер Pozyx збирає дані позиціонування → REST API отдає координати tag-пристрою в системі координат будівлі.

Мобільний додаток: при вході в будівлю пристрій «підключається» до системи (через BLE handshake для ідентифікації), далі кожні 100-200 мс отримує оновлення координат через WebSocket (x, y, floor).

Координати накладаються на план будівлі (SVG-схема поверхів). Плавне рух маркера: Kalman Filter для згладжування шумних UWB-вимірювань. Без фільтра маркер «стрибає». Kalman-фільтр на мобілі — 20-30 рядків кода, але помітно покращує UX.

Навігація до точки: A* pathfinding по графу проходів (граф будується з SVG-схеми, заборонені зони — стіни та вітрини). При відхиленні від маршруту на > 1м — пересчет.

Інтеграція з Apple NearbyInteraction

Для пристрій-до-пристрою сценаріїв (курʻєр → клієнт, складів → конкретна палета):

import NearbyInteraction

class UWBSession: NSObject, NISessionDelegate {
    let session = NISession()

    func startSession(with peerToken: NIDiscoveryToken) {
        session.delegate = self
        let config = NINearbyPeerConfiguration(peerToken: peerToken)
        config.isCameraAssistanceEnabled = true // iOS 16+: AR overlay
        session.run(config)
    }

    func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]) {
        guard let peer = nearbyObjects.first else { return }
        if let distance = peer.distance {
            print("Distance: \(distance) m")
        }
        if let direction = peer.direction {
            // SIMD3<Float> - направлення у 3D
            print("Direction: \(direction)")
        }
    }
}

isCameraAssistanceEnabled включає Precision Finding — AR-стрілка поверх камери показує направлення до об'єкту (як в AirTag Precision Finding). Вимагає ARKit та NSCameraUsageDescription.

Обмін токенами

NIDiscoveryToken неможливо створити програмно — тільки отримати з session.discoveryToken. Щоб почати UWB-сесію, обидва пристрої повинні обміняти токенами заздалегідь. Типова схема: обидва пристрої публікують токен через Bluetooth Peripheral → сканують один одного → отримують токени → стартують NISession.

CloudKit або сервер — для сценаріїв де пристрої не рядом фізично при ініціалізації.

Типові проблеми інтеграції

Multipath interference. UWB-сигнал відбивається від металевих поверхонь (стелажі, обладнання) — хибні вимірювання відстані. Рішення: NLOS (Non-Line-of-Sight) detection через аналіз First Path Power vs Total Received Power. Pozyx та Decawave повертають ці метрики в сирому пакеті.

NISession suspended. iOS приостановлює UWB-сесію при уходе додатку в фон. sessionWasSuspended(_ session:) — зберігаємо останнє положення, при sessionSuspensionEnded — рестартуємо. У фоні UWB не працює — обмеження платформи.

Калібровка якорів. Координати якорів у просторі потрібно виміряти точно — помилка в 5 см змішує всі розрахунки. Self-localization якорів (Pozyx, Sewio) автоматично визначають свої координати при першому запуску через UWB TWR між собою.

Точність в динаміці. При швидкому русі (> 2 м/с) TDoA-системи дають більше помилок ніж TWR. Для пішоходів TWR з оновленням 10 Гц достатній.

Процес проекту

Аудит сценарію використання та обладнання → вибір UWB-платформи (Apple NI / Qorvo / Pozyx) → пілот на тестовій зоні з вимірюванням точності → інтеграція з мобільним додатком → Kalman-фільтрація та навігаційний граф → нагрузковое тестування (100+ одночасних пристроїв) → розгортання якорів.

Тривалість проекту

Пілот з Apple NearbyInteraction на двох пристроях — 1-2 тижні. Повноцінна indoor-навігація з інфраструктурними якорями, Kalman-фільтром та картою будівлі — 2-4 місяці залежно від масштабу об'єкту. Вартість розраховується після оцінки інфраструктури та цільових сценаріїв.