Версия: 1.0.0
2. Функциональные характеристики
3. Требования к программно-аппаратному обеспечению
4. Предварительная настройка оборудования
4.1. Настройка бортового выччислителя
4.2. Настройка USB-накопителя (Type-A)
6.1. Настройка ПО «DroneFlight»
6.2. Настройка миссии в «QGroundControl»
ПК - персональный компьютер;
ОС - операционная система;
ПО - программное обеспечение;
Docker - открытая программная платформа для разработки, доставки и запуска приложений в изолированных контейнерах;
БпЛА - беспилотный летательный аппарат;
GSD (Ground Sample Distance) - расстояние на местности, занимаемое одним пикселем на аэрофотоснимке;
GNSS (ГНСС) - глобальная навигационная спутниковая система;
НСУ - наземная станция управления.
Программный комплекс «DroneFlight» в автоматическом режиме выполняет полёт по заданному маршруту, фотографирование местности, обработку снимков и распознавание объектов поиска в природной среде посредством бортового вычислителя и камеры высокого разрешения в реальном времени на борту БпЛА.
На момент разработки применялись БпЛА квадро- и гексакоптерного типа с возможностью адаптации ПО к другим типам носителей.

Программный комплекс «DroneFlight» обладает следующим функционалом:
интеграция бортового вычислителя с полётным контроллером БпЛА и с камерой высокого разрешения посредством протоколов MAVLink/MAVSDK и PTP (Picture Transfer Protocol) соответственно;
загрузка (синхронизация) маршрута полёта из полётного контроллера БпЛА в память ПО «DroneFlight» бортового вычислителя;
программное отслеживание прогресса выполнения автоматического полёта по заданному маршруту и выполнение ряда действий при взлёте, прохождении зон поиска (зон фотографирования) и посадки;
выполнение фотографирования местности камерой высокого разрешения;
детектирование и вычисление координат объектов поиска на полученных снимках;
формирование результатов (в т.ч. адаптированных для просмотра в ПО «DroneFlight Viewer»), содержащих параметры полёта, снимки и GNSS-координаты найденных объектов поиска.
Программное обеспечение «DroneFlight» может быть адаптировано под разные типы носителей (БпЛА) и разную целевую нагрузку при наличии следующего оборудования: бортовой вычислитель, камера Sony (протокол PTP - Picture Transfer Protocol) и полётный контроллер (ArduPilot - MAVLink/MAVSDK).
ПО «DroneFlight» обеспечивает интеграцию указанного оборудования и реализует ключевой функционал при решении задачи поиска людей в природной среде в автоматическом режиме.
На данный момент для настройки БпЛА (полётного контроллера) используется общедоступное открытое ПО «MissionPlanner», для формирования и выполнения миссий - «QGroundControl».
ПО разрабатывалось в рамках следующего окружения:
бортовой вычислитель с ядром Linux Kernel 5.15 и ОС Ubuntu 22.04;
Docker (28.1.1);
ArduPilot (Copter-4.6.1);
MissionPlanner (1.3.82);
QGroundControl (4.4.5).
ПО разрабатывалось в рамках оборудования:
Бортовой вычислитель;
Камера Sony ILX-LR1 с объективом Sony FE 35mm f/1.8 (SEL35F18F);
БпЛА с полётным контроллером Holybro Pixhawk 6X;
USB-накопитель (Type-A).
Оборудование для НСУ:
ПК/ноутбук;
Радиоаппаратура для телеметрии и управления.
Объектив Sony FE 35mm f/1.8 (SEL35F18F) для данной камеры обеспечивает рабочую высоту в 100-120 метров (1.0-1.2 GSD). Объективы с фокусными расстояниями 55 и 85 мм обеспечат 1.0 GSD на высотах 150 и 230 метров соответственно.
Рекомендуются более мощные бортовые вычислители, обеспечивающие более высокую производительность и позволяющие увеличить перекрытие при фотографировании, либо снизить время на обработку снимков.
Предварительно требуется выполнить базовую установку ОС на бортовой вычислитель.
Отображение списка режимов производительности POWER MODEL:
Выставление режима максимальной производительности:
Подключение к бортовому вычислителю по SSH с использованием USB Type-C кабеля:
, либо подключиться к бортовому вычислителю как к обычному ПК.
В файле /etc/udev/rules.d/99-nv-ufs-mount.rules необходимо выполнить настройку монтирования USB-накопителей следующим образом:
Данные настройки позволят выполнять автоматическое монтирование USB-накопителей в директорию /media/<Метка_USB-накопителя>, например, /media/DroneFlight.
Для запуска ПО «DroneFlight» требуется Docker. Для установки и настройки Docker необходимо следовать официальной документации:
Для работы с 7z-архивами требуется установка пакета p7zip-full:
После внесения изменений рекомендуется выполнить перезагрузку бортового вычислителя.
Результаты работы ПО «DroneFlight» опционально могут сохраняться на USB-накопитель. Перед использованием USB-накопителя требуется выполнить ряд действий.
Подключить USB-накопитель (Type-A) к бортовому вычислителю и выполнить команду отображения списка блочных устройств:
Если USB-накопитель определился как /dev/sd[a-z][0-9], например,
, то далее требуется отмонтировать и отформатировать USB-накопитель следующим образом:
В данном случае меткой USB-накопителя будет DroneFlight, файловая система - Ext4.
Если USB-накопитель определился как /dev/sd[a-z], например, /dev/sda, то перед форматированием потребуется предварительно выполнить партиционирование, например, командой fdisk. Далее выполнить действия на предыдущих шагах.
Для настройки камеры предварительно требуется установить объектив (в данном случае Sony FE 35mm f/1.8 (SEL35F18F)) и открыть защитную крышку.

Камера Sony ILX-LR1 не имеет собственного дисплея и встроенного аккумулятора. Настройка выполняется при подключении камеры к монитору ПК через HDMI-разъём.

При настройке камеры для БпЛА могут быть следующие рекомендации. Поскольку БпЛА выполняет фотографирование в движении, во избежание смазанных снимков имеет смысл уменьшать выдержку (Shutter Speed). При использовании фиксированного подвеса камеры (без стабилизации) и объектива Sony FE 35mm f/1.8 (SEL35F18F) приемлемым значением для Shutter Speed является значение 1/3200. Слишком короткая выдержка может приводить к появлению "шума". Остальные настройки могут быть выставлены автоматически.

Пример снимка с указанными настройками (высота полёта БпЛА 100-120 метров, горизонтальная скорость 10 м/с):

На момент использования ПО «DroneFlight» полётный контроллер БпЛА должен быть предварительно настроен. БпЛА должен быть способен выполнять полёты без использования программного комплекса «DroneFlight». Для настройки полётного контроллера (БпЛА) требуется использовать официальную документацию.

При использовании ПО «DroneFlight» дополнительная настройка полётного контроллера БпЛА не требуется. Подключение полётного контроллера к бортовому вычислителю выполняется кабелем USB Type-C - USB Type-A.
При установке общедоступного открытого ПО рекомендуется использовать официальную документацию:
Программное обеспечение «DroneFlight» устанавливается на бортовом вычислителе.
Для установки ПО «DroneFlight» требуется распаковать архив droneflight_1.0.0.7z с указанием пароля.
Пароль к архиву droneflight_1.0.0.7z доступен в файле CREDENTIALS.txt.
Структура файлов должна выглядеть следующим образом:
, где
data/entrypoint.sh - скрипт, содержащий команды при запуске Docker-контейнера;
data/droneflight/bin/droneflight - исполняемый файл приложения «DroneFlight»;
data/model.engine - модель;
data/fonts - шрифты приложения «DroneFlight».
Работа приложения выполняется в рамках базового Docker-образа droneflightru/droneflight-edge:1.0.0. Для загрузки Docker-образа из приватного репозитория DockerHub (https://hub.docker.com/u/droneflightru) требуется предварительная аутентификация:
Пароль к приватному репозиторию доступен в файле CREDENTIALS.txt.
Выполнение успешной аутентификации:
Выполнение загрузки базового Docker-образа droneflightru/droneflight-edge:1.0.0:
Отображение списка Docker-образов:
Установка ПО «DroneFlight» на бортовой вычислитель завершена.
Подключение предварительно настроенного оборудования:
подключение полётного контроллера USB кабелем к бортовому вычислителю (USB-кабель Type-C - Type-A );
подключение камеры к бортовому вычислителю (USB-кабель Type-C - Type-A);
подключение USB-накопителя (Type-A) к бортовому вычислителю (опционально).
При установке ПО «DroneFlight» на бортовой вычислитель была получена следующая структура файлов:
, где
data/entrypoint.sh - скрипт, содержащий команды при запуске Docker-контейнера;
data/droneflight/bin/droneflight - исполняемый файл приложения «DroneFlight»;
data/model.engine - модель;
data/fonts - шрифты приложения «DroneFlight».
Содержимое папки data будет смонтировано и доступно в Docker-контейнере по пути /root/data.
Содержимое скрипта data/entrypoint.sh, содержащего команды при запуске Docker-контейнера:
В данном случае при запуске Docker-контейнера будет выполняться только запуск SSH-демона - команда /usr/sbin/sshd -D (порт 2222).
После подключения полётного контроллера к бортовому вычислителю USB-кабелем Type-C - Type-A станет доступен список устройств, например,
В файле data/entrypoint.sh требуется внести изменения в значение переменной --connection_url в соответствии с полученным выводом устройств. В данном случае формат подключения: serial://[path][:baudrate].
Для запуска Docker-контейнера требуется перейти в ранее распакованную папку и на одном уровне с файлом docker-compose.yml выполнить команду:
Список запущенных Docker-контейнеров:
Доступ в контейнер по SSH (пользователь root, пароль доступен в файле CREDENTIALS.txt):
Проверка приложения (вывод списка параметров приложения):
Большинство параметров имеют значения по-умолчанию. Значения могут быть переопределены в параметрах скрипта data/entrypoint.sh.
Краткое описание параметров приложения droneflight:
connection_url - подключение к полётному контроллеру (типы подключений);
connection_timeout - таймаут подключения к полётному контроллеру (в секундах);
camera_x_pitch - наклон камеры с фиксированным подвесом по тангажу (в градусах);
camera_y_roll - наклон камеры с фиксированным подвесом по крену (в градусах);
camera_z_yaw - наклон камеры с фиксированным подвесом по азимуту относительно направления движения БпЛА (в градусах);
focal_length - фокусное расстояние объектива (в миллиметрах);
sensor_width - ширина сенсора камеры (в миллиметрах);
sensor_height - высота сенсора камеры (в миллиметрах);
photo_width - ширина фото (в пикселях);
photo_height - высота фото (в пикселях);
slice_overlap_width_ratio - перекрытие слайсов по ширине;
slice_overlap_height_ratio - перекрытие слайсов по высоте;
model_path - путь к файлу модели;
threshold - пороговое значение модели при определении объектов поиска в реальном времени;
min_threshold - пороговое значение модели для последующего анализа данных в ПО «DroneFlight Viewer»;
batch_size - размер пакета изображений (слайсов) при выполнении детектирования объектов поиска;
mission_dir - путь к директории миссий;
archive_dir - путь к директории архива (на USB-носителе /media/DroneFlight или на файловой системе /root/data/missions_archive);
draw_slices - флаг для отображения границ слайсов;
log_level - уровень логирования (trace, debug, info, warn, error, critical, off).
Требуемые изменения входных параметров вносятся в файл data/entrypoint.sh и редактируются комментарии (символы #) следующим образом:
, где ssh-демон запускается без ключа -D.
С этого момента запуск приложения droneflight будет выполняться в автоматическом режиме при включении бортового вычислителя и автоматическом запуске Docker-контейнера. SSH-доступ в контейнер сохранится.
В данном руководстве отсутствует информация по установке и полной настройке ПО «QGroundControl» (необходимо использовать официальную документацию). Кратко изложены некоторые настройки при создании миссий.
Открыть приложение «QGroundControl»:

Для создания миссии требуется нажать на кнопки Plan / Survey в панели инструментов:

Далее требуется нажать на кнопки Pattern / Survey:

В верхней панели инструментов выбрать тип Basic:

Далее потребуется изменить расположение и форму области фотографирования (при необходимости создать несколько областей), добавить промежуточные путевые точки.
Перекрытие курсовое и боковое, высота фотографирования или GSD (Grnd Res), угол прохождения БпЛА (Angle), расстояние разворота (Turnaround dist) задаются в панели инструментов для заданной области Survey. Кнопкой Rotate Entry Point задаётся точка входа в область фотографирования.

На следующей вкладке на панели инструментов выполняется настройка параметров камеры:

В списке выбирается Custom Camera, указываются размеры сенсора камеры, размеры снимков и фокусное расстояние объектива.
В данном примере указаны настройки для камеры Sony ILX-LR1 и объектива Sony FE 35mm f/1.8 (SEL35F18F).
На следующей вкладке на панели инструментов выполняется настройка рельефа:

Значение Relative To Launch может быть изменено, например, на Calculated Above Terrain. В этом случае БпЛА будет огибать рельеф местности на основе значений карты высот.

В нижней панели траектория движения начала учитывать рельеф местности.
По каждой области Survey указывается итоговая статистика:
Survey Area - площадь (в квадратных метрах);
Photo Count - количество снимков;
Photo Interval - интервал между снимками (в секундах);
Trigger Distance - расстояние между снимками (в метрах).

Нажатием на кнопки Waypoint добавляются промежуточные путевые точки, для которых задаются высота и скорость полёта:

По окончании настройки миссии анализируются общие параметры (дистанция, время полёта и другие параметры):

Нажатием на кнопку Upload Required происходит загрузка миссии на полётный контроллер:

В случае успешной загрузки отобразится Done. Для перехода в режим полёта требуется нажать на кнопку Fly в панели инструментов. Перевод слайдера в верхней части приложения инициирует начало выполнения автоматического полёта по заданному маршруту:

В момент завершения формирования миссии и загрузки её на полётный контроллер БпЛА, подаётся питание на целевую нагрузку: сначала на камеру, затем на бортовой вычислитель.
Формирование миссии может занимать длительное время и преждевременное включение целевой нагрузки будет разряжать аккумуляторы БпЛА.
В момент включения бортового вычислителя автоматически будет запущено ПО «DroneFlight». ПО «DroneFlight» выполнит инициализацию камеры, подключение к полётному контроллеру, загрузку миссии в память приложения. Готовность ПО «DroneFlight» к полёту можно будет зафиксировать на слух при выполнении камерой трёх тестовых снимков (без сохранения на SD-карту камеры и без сохранения на файловую систему бортового вычислителя).
В этот момент в ПО «QGroundControl» требуется сдвинуть слайдер для начала автоматического полёта.
Отслеживание выполнения миссии:

Результатом работы ПО «DroneFlight» является:
log-файл работы приложения droneflight в директории data/droneflight/logs (путь задаётся в скрипте data/entrypoint.sh);
набор данных, содержащий снимки, координаты объектов поиска, трек полёта и метаданные для ПО «DroneFlight Viewer».
Log-файл работы приложения содержит информацию о работе приложения для конкретного полёта с заданным уровнем логирования.
Набор данных сохраняется на USB-носитель (или в директорию на файловой системе бортового вычислителя) - параметр --archive_dir в скрипте data/entrypoint.sh.
Если по какой-либо причине запись данных на USB-носитель будет невозможна (или, например, архив данных будет повреждён), данные будут доступны на файловой системе бортового вычислителя в директории /root/data/missions (параметр --mission_dir).
Набор данных имеет следующую структуру файлов:
, где
results.zip - zip -архив с данными;
checksum.txt - sha256 контрольная сумма архива results.zip;
track.gpx - трек полёта в формате GPX.
Проверка контрольной суммы архива выполняется следующей командой:
Если контрольная сумма корректна, выполняется распаковка архива results.zip:
Структура файлов архива:
, где
detections - набор изображений распознанных объектов;
images - набор оригинальных снимков, для которых распознаны и обозначены рамками объекты поиска;
photos - набор оригинальных снимков;
previews - набор превью оригинальных снимков;
results.fb - файл с метаданными в формате FlatBuffers;
results.json - файл с результатами в формате JSON;
track.gpx - файл с треком полёта в формате GPX.
Для анализа полученных данных используется ПО «DroneFlight Viewer».