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

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Разработка мобильного приложения для управления дроном
Сложная
от 2 недель до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

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

Большинство дронов для B2B и B2C-рынка предоставляют мобильный SDK: DJI Mobile SDK (iOS/Android), Parrot Ground SDK, Autel SDK, Skydio. Приложение «с нуля» без SDK — это реализация MAVLink поверх UDP/TCP напрямую на дрон, что имеет смысл для кастомных платформ на ArduPilot или PX4. Разберём оба подхода, потому что требования к архитектуре — принципиально разные.

DJI SDK: где теряют время

Регистрация приложения и офлайн-режим

DJI Mobile SDK требует регистрации AppKey на сервере DJI при каждом первом запуске. Без интернета SDK не инициализируется в полном объёме. Это означает: приложение не может управлять дроном в зоне без связи, пока хотя бы раз не прошло онлайн-регистрацию. Для промышленных применений (инспекция трубопроводов, работа в ущельях) — это жёсткое ограничение. DJI предоставляет OfflineActivation через Enterprise-лицензию, но это отдельный договор с ценой от нескольких тысяч долларов в год.

Жизненный цикл 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, но падали на реальном устройстве.

Video feed и задержка

DJI SDK декодирует H.264/H.265 поток с дрона через собственный VideoFeeder. Задержка стриминга на SurfaceView — 80–150 мс в нормальных условиях. Если пытаться обрабатывать кадры через ML (обнаружение объектов) и делать это на main thread — задержка вырастает до 500+ мс и управление становится небезопасным. Правильная схема: декодированные кадры через MediaCodec с BUFFER_FLAG_END_OF_STREAM обработкой, ML-инференс в отдельном корутинном dispatcher с Dispatchers.Default, результат отображается с следующим кадром.

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

Для кастомных платформ используем dronefleet/mavlink (Java/Android) или MAVLink.swift (iOS). Протокол — бинарный, конкретные 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 message. Если heartbeat не получен от дрона 3 секунды — триггер аварийного состояния в UI, блокировка всех команд управления.

Критичная деталь: MAVLink-пакеты идут по UDP без гарантии доставки. Для команд с квитированием (COMMAND_LONG) дрон отвечает COMMAND_ACK. Если ACK не пришёл за 500 мс — повтор, максимум 3 попытки, потом failure state. Это надо реализовывать руками — никакого автоматического retry в протоколе нет.

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

Виртуальный джойстик — самый распространённый способ управления. Реализация: MotionEvent на View, нормализация координат до диапазона [-1, 1], отправка команды с частотой 20 Гц (раз в 50 мс). Ниже 10 Гц — дрон начинает «плавать», выше 30 Гц — лишняя нагрузка на канал связи без прироста управляемости.

Обязательные элементы безопасности в UI:

  • Кнопка Return-to-Home с подтверждением (два тапа или hold 2 сек)
  • Индикатор уровня заряда батареи дрона с цветовой индикацией (красный при <20%)
  • Отображение RSSI сигнала RC/Wi-Fi канала
  • Блокировка команд взлёта при GPS < 6 спутников (для режимов с GPS Hold)

Тестирование без дрона

DJI предоставляет Simulator в DJISDK — эмулятор полёта с телеметрией. Для MAVLink — ArduPilot SITL (Software In The Loop) с симуляцией физики. Оба позволяют прогонять автоматизированные тесты полётных сценариев. UI-тесты через Espresso/XCUITest с мок-репозиторием телеметрии.

Процесс и сроки

Приложение с DJI SDK, базовым управлением и видеопотоком — 4–8 недель. Кастомное решение на MAVLink с расширенным UI, автономными миссиями и аналитикой — 3–6 месяцев. Оценка после изучения платформы дрона, требований к функциональности и сертификации (если нужна публикация в сторах с дроном в категории «опасные устройства»).