Розробка мобільного додатку для керування дроном

Одна із задач, з якою ми зіткнулися — оператор нафтопроводу хотів інспектувати ділянки без стільникового зв'язку. DJI SDK без інтернету не активується, а рішення на MAVLink з офлайн-режимом заощадило замовнику два тижні простою. Середня затримка відео на DJI — 80–150 мс, але при невірній обробці на

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка мобільного додатку для керування дроном
Складний
від 2 тижнів до 3 місяців

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Одна із задач, з якою ми зіткнулися — оператор нафтопроводу хотів інспектувати ділянки без стільникового зв'язку. DJI SDK без інтернету не активується, а рішення на MAVLink з офлайн-режимом заощадило замовнику два тижні простою. Середня затримка відео на DJI — 80–150 мс, але при невірній обробці на main thread вона зростає до 500 мс, що для FPV критично. Для налагодження використовуємо симулятори SITL, що дозволяє виявити помилки до виїзду на поле. Бюджет типового проекту на DJI SDK — від $10,000, економія за рахунок симулятора — до $5,000 на етапі тестування.

Чому реєстрація додатку в DJI SDK — проблема?

DJI Mobile SDK вимагає онлайн-реєстрації AppKey на серверах DJI при першому запуску. Без інтернету SDK не ініціалізується — додаток не зможе керувати дроном в зоні без зв'язку, доки хоча б раз не пройде активацію. Для інспекції трубопроводів або польотів в ущелинах це критично. DJI пропонує OfflineActivation через Enterprise-ліцензію, але це окремий договір. За даними DJI Developer Guide, цей режим вимагає додаткової конфігурації. Ми допомагаємо клієнтам оцінити необхідність такого режиму і, якщо потрібно, реалізуємо підтримку офлайн-активації.

Типова помилка з життєвим циклом ProductKey

Алгоритм підключення в DJI SDK 5.x:

  1. SDKManager.getInstance().init() в Application.onCreate()
  2. SDKManager.getInstance().registerApp() — асинхронно, callback в ISDKManagerCallback
  3. Тільки після onRegisterSuccess починаємо слухати KeyedStore або FlightController

Помилка: розробник викликає FlightController.getState() до завершення реєстрації — отримує null, не обробляє це, і додаток падає з NPE в першому польоті. В SDK 4.x деякі методи працювали на симуляторі DJI, але падали на реальному пристрої. Ми перехоплюємо такі стани і гарантуємо стабільність.

Як знизити затримку відео до 150 мс?

Декодування H.264/H.265 через VideoFeeder дає затримку 80–150 мс на SurfaceView — це норма. Але якщо обробляти кадри з ML-моделлю на main thread, затримка зростає до 500+ мс. Правильна схема — кроки:

  1. Декодовані кадри через MediaCodec з BUFFER_FLAG_END_OF_STREAM.
  2. ML-інференс на Dispatchers.Default (окремий потік).
  3. Виведення результату з наступним кадром. Ми застосовуємо цей підхід у кожному проекті — цифри перевірені на реальних польотах.

MAVLink на ArduPilot/PX4: архітектурні рішення

Для кастомних платформ використовуємо MAVLink — бінарний протокол з конкретними message ID для керування: SET_POSITION_TARGET_LOCAL_NED, COMMAND_LONG з MAV_CMD_NAV_TAKEOFF і MAV_CMD_NAV_LAND. З'єднання: Wi-Fi точка доступу дрона → UDP сокет порт 14550. На Android — DatagramSocket в CoroutineScope(Dispatchers.IO), heartbeat кожні 1000 мс. Якщо heartbeat не отримано 3 секунди — тригеримо аварійний стан UI і блокуємо всі команди.

Важливо: MAVLink-пакети йдуть по UDP без доставки. Для команд з квитуванням (COMMAND_LONG) дрон відповідає COMMAND_ACK. Якщо ACK не прийшов за 500 мс — повтор до 3 спроб, потім failure state. Все реалізується вручну — в протоколі немає автоматичного retry.

Як вибрати між DJI SDK та MAVLink?

Критерій DJI SDK MAVLink (ArduPilot/PX4)
Простота старту Висока (готові компоненти) Низька (потрібна реалізація протоколу)
Затримка відео 80–150 мс Залежить від реалізації
Офлайн-режим Вимагає Enterprise-ліцензії Працює одразу
Кастомізація Обмежена можливостями SDK Повна свобода
Підтримка дронів DJI, Autel, Parrot Будь-які на ArduPilot/PX4

Порівняння: DJI SDK дає в 2 рази меншу затримку відео порівняно з типовою реалізацією MAVLink, але MAVLink дозволяє повністю контролювати дрон без інтернету.

UI для керування: джойстик, безпека, телеметрія

Віртуальний джойстик — MotionEvent на View, нормалізація в [-1, 1], відправка команд з частотою 20 Гц (раз в 50 мс). Нижче 10 Гц — дрон плаває, вище 30 Гц — зайве навантаження на канал. Обов'язкові елементи:

  • Кнопка Return-to-Home з підтвердженням (два тапи або hold 2 сек)
  • Індикатор заряду батареї (червоний при <20%)
  • RSSI сигналу каналу
  • Блокування зльоту при GPS < 6 супутників (для режиму GPS Hold)

Детальніше: реалізація джойстика вимагає нормалізації координат та анти-джиттер фільтра, щоб уникнути тремтіння курсора.

Процес роботи та терміни

Етап Тривалість
Аналіз платформи та вимог 5–10 днів
Проектування архітектури 3–5 днів
Розробка ядра (керування, відео) 2–4 тижні
UI та маршрути 2–4 тижні
Тестування (SITL + поле) 1–2 тижні
Деплой в стори 5–7 днів

Базовий додаток на DJI SDK — 4–8 тижнів. Кастомний на MAVLink з розширеним UI та автономними місіями — 3–6 місяців. Оцінку проводимо безкоштовно після вивчення вашого завдання.

Що входить в розробку під ключ

  • Вихідний код з коментарями
  • Документація по збірці та конфігурації
  • Налаштовані ключі та provisioning profiles
  • Інтеграція з App Store Connect / Google Play Console
  • Навчання оператора роботі з додатком
  • Технічна підтримка на 3 місяці після релізу

Ми — команда з досвідом у мобільній розробці для безпілотників. За цей час зробили 30+ проектів для інспекції, сільського господарства та розвідки. Якщо потрібен надійний додаток для керування дроном — зв'яжіться з нами для безкоштовної оцінки. Отримайте консультацію по вашому проекту.