FPV DRONE: Полное руководство

Отличная книга написанная противником, от этого не теряет в актуальности

Администратор

ПоделитьсяВКонтактеTelegramMAX
FPV DRONE: Полное руководство

FOR HOBBYIST Al-driven autonomous

FPV DRONE

DEVELOPMENT

BETAFLIGHT ARDUPILOT

Рисунок 1

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 1 пробный перевод

Предисловие

Независимый исследовательский проект, который лег в основу этой книги, стал путешествием через различные технологии, включая компьютерное зрение, алгоритмы следования за целью, динамику FPV-полета, архитектуру дрона и протокол MAVLink . Освоение этих знаний потребовало от меня многих часов практической реализации, и я ожидаю от вас такого же уровня вовлеченности. Базовое знакомство с этими технологиями, а также опыт работы с Python необходимы для освоения содержания этой книги. На этих страницах я не буду давать вводный обзор фундаментальных понятий, связанных с FPV-дронами и автопилотами. Вместо этого я дам вам глубокое понимание вместе с готовыми к использованию решениями, которые позволят вам построить собственный автономный FPV-дрон на

базе ИИ , оснащенный компьютерным зрением и следованием за целью. Глава 1: Обзор. Дает общее понимание требований и архитектуры автопилотов для FPV-дронов, оснащенных компьютерным зрением и функцией следования за целью. Также объясняется, как работает итоговое устройство (сборка). Глава 2: FPV-дрон с нуля. Дает подробное руководство по покупке компонентов, пайке, сборке и настройке обычного FPV-дрона с системой сброса. Вы также узнаете о схеме и настройке полетного контроллера, включая настройку PID, настройку OSD и конфигурацию режимов полета. Глава 3: Автопилот Betaflight. Описывает архитектуру автопилота и реализацию на Python интеллектуального агента, который использует протокол MSP для управления

полетом в режиме MSP_OVERRIDE. Основное внимание Стр. 1 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 2 пробный перевод уделено простой автономной системе (автопилоту), способной летать без оператора на прошивке Betaflight, популярной на украинской линии фронта. Глава 4: Компьютерное зрение. Объясняет, как построить модель компьютерного зрения с помощью Roboflow и YOLO. Основное внимание уделено подготовке модели компьютерного зрения для FPV-дрона, чтобы он мог воспринимать окружение и реагировать на него, распознавая объекты. Глава 5: Симуляция. Подробно раскрывает использование ArduPilot Mission Planner и Microsoft AirSim

для симуляции и отладки вашего ArduCopter-автопилота с моделью компьютерного зрения для следования за целью в виртуальной среде EpicGames. Этот автопилот использует протокол MAVLink для управления движением коптера.

Глава 6: Rover. Описывает еще один хороший пример для отладки и разработки - наземную робототехническую систему на основе прошивки ArduRover. В главе рассматриваются схема, уровни, логика и конкретная версия автопилота на базе протокола MAVLink. Глава исследует разработку автономного автомобиля с нуля, включая компоненты, соединения, сопутствующий компьютер, коммуникации ArduRover, модуль компьютерного зрения и даже работу в среде без GNSS. Глава 7: Plane. Дает общее понимание того, как построить автономный самолет с неподвижным крылом с прошивкой

ArduPlane на борту. Рассматриваются все аспекты: от закупки компонентов до пайки, сборки и тестирования итогового устройства и его частей. Глава 8: Устранение неполадок. Сосредоточена на распространенных проблемах, которые могут возникнуть во время сборки, настройки или эксплуатации автономных транспортных средств. В ней приводятся практические Стр. 2 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 3 пробный перевод советы по диагностике и устранению аппаратных, программных и коммуникационных проблем. Глава 9: Непрерывное развитие. Исследует идеи для расширения за пределы проектов Copter, Rover и Plane, сосредотачиваясь на автономных системах и реализации концепций на базе ИИ. Когда вы будете читать эту книгу и заниматься практическими экспериментами, можете связаться со мной в Twitter: @dmytro_sazonov. ГЛАВА 1.

ОБЗОР

FPV-дрон,

доставляющий

воду

Когда я размышлял о том, как представить информацию в этой книге, у меня было несколько идей - от дронов, предназначенных для бомбардировки врагов, до разведывательных дронов и многого другого. В итоге я решил сосредоточиться на построении простого и достаточно популярного FPV-дрона, который может автономно доставлять воду солдатам в траншею . Стр. 3 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 4 пробный перевод Рисунок 1-1. FPV-дрон доставляет бутылку воды солдату в траншее Этот дрон (с Raspberry Pi на борту) работает без управления человеком, используя модель компьютерного зрения на базе ИИ и бортовой автопилот . Эта технология открывает широкий спектр возможностей. Выберите ту, которую хотите реализовать.

С FPV-дроном, оснащенным компьютерным зрением на базе ИИ и системой автопилота , открывается широкий спектр возможностей. Некоторые варианты приведены здесь:

• Вариант 1. Доставка бутылки воды солдатам в

траншеях, на склонах или в любом месте, где им нужны припасы.

• Вариант 2. Доставка бомб или взрывчатых веществ

на позиции противника для локальных атак.

• Вариант 3. Получение изображений и автономное

распознавание и подсчет солдат или техники в поле. Стр. 4 пробный перевод

Рисунок 2

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 5 пробный перевод

• Вариант 4. Мониторинг вражеских авиабаз путем

фотографирования и подсчета самолетов с передачей данных в реальном времени в центр управления.

• Вариант 5. Доставка медицинских материалов

войскам в траншеях для помощи раненым солдатам.

• Вариант 6. Поиск потерявшихся людей на горных

склонах и передача GPS-координат в службу экстренной помощи.

• Вариант 7. Патрулирование границ и передача

информации о любых обнаруженных объектах, людях или подозрительной активности в зоне контролирующей страны.

• Вариант 8. Мониторинг сельскохозяйственных полей

для выявления несанкционированного доступа или оценки состояния посевов, включая заражения вредителями, такими как саранча.

• Вариант 9. Помощь экстренным службам во время

ураганов и катастроф путем поиска людей и животных, которым нужна помощь.

• Вариант 10. Доставка товаров и еды в сельской

местности из местного супермаркета. Этот список - только начало. Вы можете дать волю воображению и разработать бесчисленное количество других функций с помощью этой невероятной технологии, добавляя

вашему FPV-дрону практически безграничные возможности. Я решил выбрать Вариант 1 в качестве примера, чтобы объяснить все в этой книге. Давайте двигаться дальше и

построим его с нуля. Стр. 5 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 6 пробный перевод

Схема

Любой FPV-дрон можно превратить в автономный дрон, добавив на борт сопутствующий компьютер, например Raspberry Pi. Рисунок 1-2. Схема компонентов

В этом сценарии управление полетом может быть реализовано разными способами: от заранее установленных траекторий полета до управления интеллектуальным агентом,

например через компьютерное зрение или сценарии на основе датчиков. Поскольку мы хотим, чтобы наш дрон работал автономно с использованием компьютерного зрения, мы установим на Raspberry Pi дополнительную

15-контактную видеокамеру. Стр. 6 пробный перевод

Рисунок 3

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 7 пробный перевод Полетный контроллер - центральная часть любого дрона,

отвечающая за управление полетом. Он собирает данные с датчиков, обрабатывает команды от оператора или автопилота и регулирует моторы, чтобы обеспечить стабильный полет. Полетный контроллер подключается к Raspberry Pi через UART (пины 6, 8, 10) и взаимодействует с ним с помощью протоколов MSP или MAVLink. Кроме того, полетный контроллер подключен к системе сброса, установленной на дроне, которая может активироваться как автопилотом, так и оператором с помощью радиоконтроллера (джойстика). Это соединение и совместную работу мы рассмотрим подробнее в следующих главах. Программное обеспечение, установленное на Raspberry Pi, основано на Debian Linux и использует его системную службу для запуска Python-скрипта автопилота во время

загрузки операционной системы. Оператор управляет режимами автопилота с помощью джойстика:

• OFF - автопилот находится в режиме ожидания,

ожидая команды от джойстика для перехода в другой режим. Активны только функции телеметрии и логирования.

• READY - в дополнение к функциям режима OFF

активируется антидронная система обнаружения. Если система обнаруживает помехи, автопилот автономно переходит в режим AUTO.

• AUTO - этот режим запускается автоматически

антидронной системой. Он ведет себя как режим DELIVERY, но может быть отменен, если радиосигнал восстановится.

• DELIVERY - автопилот активирует камеру для

поиска целевых местоположений и Стр. 7 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 8 пробный перевод захвата цели. После обнаружения цели дрон следует за ней для доставки воды. Режимы OFF , READY и DELIVERY управляются вручную с радиоконтроллера, тогда как AUTO является реакцией на применение антидронной

системы. Автопилот для FPV-дрона и его структура будут рассмотрены подробнее позже.

Что мы будем

делать

Чтобы построить FPV-дрон, способный автономно доставлять бутылку воды в солдатскую траншею даже в условиях радиоэлектронной борьбы (Electronic Warfare), мы отправимся в увлекательное путешествие. Оно включает покупку компонентов, сборку дрона, пайку микроконтроллера с периферийными устройствами, настройку FPV-системы, разработку программного обеспечения автопилота, отладку его в симуляторе, интеграцию с сопутствующим компьютером и, наконец, испытание всего этого в полевых условиях. Сборка FPV-дрона. Мы построим FPV-дрон с системой сброса с нуля, закупив компоненты, собрав их, выполнив пайку соединений и настроив стандартную конфигурацию. Подготовка модели компьютерного зрения. Чтобы автопилот мог воспринимать окружение, мы создадим CV-модель с использованием

Roboflow и YOLO для распознавания объектов и отслеживания цели. Разработка автопилота. Будет разработана основная функциональность автопилота, включая очередь команд, исполнитель команд MAVLink, маршрутизатор команд, телеметрию и подсистемы логирования. Стр. 8 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 9 пробный перевод Симуляция и отладка CV-модели. Мы будем использовать Microsoft AirSim и платформу EpicGames для симуляции поведения автопилота и тестирования CV-модели в виртуальной среде. Интеграция сопутствующего компьютера. На финальном этапе мы подключим сопутствующий компьютер на базе Raspberry Pi к FPV-дрону через UART, настроив протокол связи и режимы полета. Полевые испытания. После завершения FPV-дрона с автопилотом мы проведем испытания в реальной среде, итеративно отлаживая итоговое устройство в сельской местности. Давайте погрузимся в работу и воплотим идею в жизнь как можно скорее. ГЛАВА 2.

FPV-ДРОН

С НУЛЯ

Мы начинаем с приобретения стандартного FPV-дрона как основы для дальнейшей разработки. В этой главе мы сосредоточимся на покупке необходимых электронных компонентов, их пайке и сборке итогового изделия — стандартного FPV-дрона с системой сброса и зарезервированным портом UART для будущей интеграции сопутствующего компьютера. Мы также рассмотрим конфигурацию дрона, настройку и подготовку к первому полету, а затем полевые испытания для проверки его летных характеристик. Стр. 9 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 10 пробный перевод

Схема

подключения

В отличие от SpeedyBee F405, который я использовал долгое время до этого, для этой книги я решил выбрать его аналог — Aocoda F460 Stack . Рисунок 2-1. Схема подключения Aocoda F460 Stack — это высокоуровневая система управления полетом, включающая полетный контроллер Aocoda F405 v2 (FC) и электронный регулятор скорости 3060S (60A) Electronic

Стр. 10 пробный перевод

Рисунок 4

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 11 пробный перевод Speed Controller (ESC). Полетный контроллер соединяется со своим ESC 8-контактным проводом, и здесь не требуется подробное объяснение. Приведенная выше схема подключения иллюстрирует соединения между различными компонентами и платой

полетного контроллера Aocoda F405 . Компоненты включают видеокамеру, систему сброса, VTX (видеопередатчик), приемник ELRS (ExpressLRS) и Raspberry Pi (сопутствующий компьютер). Каждый компонент подключается к определенным пинам полетного контроллера с использованием соответствующих проводов:

• Видеокамера подключается тремя проводами: желтым

(CAM), красным (5 V) и черным (GND).

• Система сброса подключается тремя проводами:

красным (5 V), черным (GND) и розовым (S5). S5 будет связан с SERVO 1 на FC и является управляющим проводом для системы сброса.

• VTX подключается четырьмя проводами: красным (9

V), черным (GND), зеленым (VTX) и синим (T4). Пин T4 (TX на UART 4) подключается к соответствующему RX на видеопередатчике.

• Приемник ELRS подключается четырьмя проводами:

красным (4.5 V), черным (GND), синим (T2) и синим (R2). T2 и R2 на полетном контроллере относятся к UART2 и подключаются к противоположным пинам на приемнике ELRS: T2 к RX, а R2 к TX.

• Raspberry Pi (RPi) подключается тремя проводами:

синим (R1), черным (GND) и розовым (T1). T1 и R1 относятся к UART1 на полетном контроллере. Подключение выполняется соответственно: T1 к RX (пин 10 на RPi), а R1 к TX (пин 8 на RPi). Мы будем

паять компоненты в соответствии со схемой Стр. 11 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 12 пробный перевод

подключения, представленной выше. Если вы планируете использовать альтернативные компоненты, обязательно дважды проверьте их совместимость по питанию и электронные схемы перед внесением любых изменений.

ЗАКУПКА

КОМПОНЕНТОВ

Поскольку эта книга ориентирована на людей, которые знакомы с FPV-дронами, мы сосредоточимся прежде всего на разработке, а не на подробном обсуждении анатомии или структуры дрона. Однако в этом разделе мы подготовим список необходимых компонентов, которые нужны для сборки FPV-дрона с нуля, чтобы вы могли следовать материалу и собрать собственный дрон, даже если это ваш первый опыт.

Карбоновая рама

Mark 4 7” (295 mm), вероятно, лучшая рама для того типа FPV-дрона, который мы собираем. Поскольку рама является основанием, которое удерживает все компоненты вместе, она должна быть качественной и прочной. Я рекомендую использовать оригинальную карбоновую раму Readytosky Mark 4 , чтобы обеспечить надежность и снизить риски. Стр. 12 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 13 пробный перевод Рисунок 2-2. Карбоновая рама Mark 4 7” Однако, если вы хотите сократить расходы, можно выбрать более дешевую, неоригинальную версию, которая обычно стоит примерно в два раза меньше. Я слышал, что эта рама нравится энтузиастам и хоббистам благодаря своей прочности и адаптируемости, обеспечивая

сбалансированное распределение веса и стабильность. Она служит надежной основой для кастомных FPV-дронов. Что более важно, Mark 4 7” приобрела популярность среди украинских защитников на линии фронта.

Как видно на изображении выше, она почти полностью собрана. Однако вы, скорее всего, получите ее в виде отдельных компонентов. Следуйте инструкциям производителя по сборке, чтобы соединить все вместе.

Стр. 13 пробный перевод

Рисунок 5

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 14 пробный перевод Рисунок 2-3. Держатели антенн (для VTX слева и ELRS справа) Базовый набор рамы не включает держатели для

FPV-антенн (видео и радио). Поэтому вам потребуется приобрести эти держатели отдельно, чтобы сделать конфигурацию рамы более эргономичной и визуально аккуратной. В качестве альтернативы вы можете

напечатать их на 3D-принтере. В интернете есть множество ресурсов, где можно бесплатно скачать подходящие 3D-модели.

Моторы

Важная часть FPV-дрона — это моторы. Поскольку мы собираем квадрокоптер, нам потребуется установить четыре мотора. Однако существуют и другие типы дронов, например мультикоптеры, в которых используется больше моторов. Для этой книги я выбрал четыре мотора EMAX ECO II 2807 6S 1300KV , которые предлагают хороший баланс мощности и эффективности, что делает их идеальными для фристайл- и гоночных дронов.

Стр. 14 пробный перевод

Рисунок 6

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 15 пробный перевод Рисунок 2-4. Моторы EMAX ECO II 2807 6S 1300KV При размере статора 2807 и рейтинге 1300KV эти моторы обеспечивают сильную тягу на 6S LiPo-батареях, гарантируя отзывчивое управление и высокоскоростные возможности. Они дают отличную производительность, что делает их популярными среди FPV-энтузиастов.

У каждого из этих моторов есть три провода без защитной изоляции; такие провода я также обычно использую при сборке FPV-дронов и рекомендую их вам. Лучше закрыть их, поэтому обязательно приобретите подходящее покрытие.

Пропеллеры

Следующая важная часть FPV-дрона — это пропеллеры. Для нашего дрона на базе Mark 4 7” подходят пропеллеры 7x4x3 и 7x3.5x3. Пропеллер 7x4x3, такой как HQPROP 7040, имеет диаметр 7 дюймов и шаг 4 дюйма с трехлопастной конструкцией, обеспечивая сильную тягу и высокую отзывчивость, что идеально для динамичных маневров. Стр. 15 пробный перевод

Рисунок 7

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 16 пробный перевод Рисунок 2-5. HQPROP 7040 7x4x3 При выборе пропеллеров для вашего FPV-дрона важно учитывать их размер и убедиться, что они не касаются друг друга или каких-либо других компонентов на дроне. Это включает не только базовые компоненты, но и периферию, такую как батарея, Raspberry Pi (сопутствующий компьютер, автопилот) или

преобразователь 26V-5V DC, установленный на одной стороне LiPo-батареи. Правильный зазор предотвращает потенциальные повреждения и обеспечивает безопасную и эффективную работу во время миссий на поле боя или на линии фронта.

Полетный

контроллер и ESC

Aocoda F460 Stack (60A) — это высокопроизводительная связка полетного контроллера (FC) и электронного регулятора скорости (ESC), которая служит центральным компонентом дрона. Она подходит для продвинутых

Стр. 16 пробный перевод

Рисунок 8

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 17 пробный перевод FPV-дронов, особенно для мощных сборок, таких как фристайл- или гоночные дроны, и также подходит для

автономных систем. Этот стек является аналогом популярного SpeedyBee F405 Stack и объединяет FC на F4 с мощным ESC на 60A. Рисунок 2-6. Полетный контроллер F405 и ESC 60A Полетный контроллер F4 оснащен гироскопом MPU6000 для стабильной летной производительности даже в сложных условиях. Он также включает несколько портов (UART) для всех периферийных устройств и несколько контактов для PWM-устройств, которые мы будем использовать для интеграции системы сброса. Кроме того, он имеет выделенный чип OSD (On-Screen Display), позволяющий оператору отслеживать критически важные полетные данные (телеметрию) в реальном времени во время миссии непосредственно через FPV-очки или на дисплее монитора.

ESC на 60A способен работать с 6S LiPo-батареями, обеспечивая достаточный ток для мощных моторов и Стр. 17 пробный перевод

Рисунок 9

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 18 пробный перевод надежную подачу питания на протяжении полета. С этим ESC стек может поддерживать моторы с более высоким KV (в нашем случае 1300KV), что делает его подходящим для агрессивного и отзывчивого полета и идеально соответствующим нашей задаче.

Видеопередатчик

Поскольку выше мы упоминали FPV-очки, также важно обсудить видеопередатчик, который передает видеопоток с камеры FPV-дрона на очки или монитор на частоте 5.8 GHz. Рисунок 2-7. Видеопередатчик AKK Race Ranger 1.6W Отличный вариант — AKK Race Ranger VTX , который имеет выходную мощность 1.6W. Такая высокая мощность обеспечивает сильный и надежный видеосигнал, позволяя достигать большей дальности, обычно до 3000 метров, и получать более четкое видео во время полетов. Благодаря нескольким уровням мощности и поддержке различных каналов AKK Race Ranger обеспечивает универсальность для разных условий, что делает его популярным выбором среди FPV-энтузиастов и хоббистов. Стр. 18 пробный перевод

Рисунок 10

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 19 пробный перевод

Однако у него есть некоторые недостатки, особенно касающиеся кабелей и разъемов. По умолчанию он поставляется с прямым кабелем MMCX/SMA для антенны и очень коротким кабелем JST-SH 1.0mm, который мы используем для подключения видеопередатчика к полетному контроллеру (FC). В определенных конфигурациях такая схема может быть непрактичной, и наш случай как раз к ним относится.

Чтобы решить эту проблему, я приобрел более длинный кабель JST-SH 1.0mm (20 cm) и MMCX/SMA F-кабель для антенны, как показано на изображении ниже. Рисунок 2-8. Кабель JST-SH 1,0 мм и MMCX/SMA F-кабель

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

Видеокамера

Стр. 19 пробный перевод

Рисунок 11

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 20 пробный перевод Я выбрал FPV-видеокамеру Jinjiean B19 , потому что она имеет эргономичный дизайн, подходящий для дрона на базе Mark 4 7”, и разумную цену. Эта камера отличается компактным размером 2.1 cm и использует 1/3-дюймовый CMOS-сенсор, обеспечивая впечатляющее качество изображения с разрешением 1500TVL.

Рисунок 2-9. FPV-видеокамера 2,1 см 1/3 CMOS 1500 TVL Ее легкая конструкция обеспечивает минимальное влияние на общий вес дрона, что делает ее идеальной для маневренного полета. Камера также обеспечивает отличную работу при слабом освещении, позволяя получать четкий видеопоток в разных условиях освещенности. Благодаря регулируемому объективу и прочной конструкции Jinjiean B19 является надежным

выбором для FPV-энтузиастов, которым нужна качественная производительность без чрезмерных затрат :). В отличие от AKK Race Ranger VTX, у которого неподходящие провода, FPV-видеокамера Jinjiean B19 имеет качественные провода. Стр. 20 пробный перевод

Рисунок 12

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 21 пробный перевод

FPV-антенна

Наша видеосистема включает антенну Lollipop 4 V4 SMA , которая подключается к видеопередатчику AKK Race Ranger через SMA-разъем с использованием MMCX/SMA F-кабеля, приобретенного нами в одном из предыдущих разделов этой главы. Рисунок 2-10. FPV-антенна Lollipop 4 V4 SMA Антенна Lollipop 4 хорошо известна своей надежной производительностью и компактной 10 cm конструкцией, что делает ее отличным выбором как для гоночных, так и для автономных дронов. Ее круговая поляризация помогает минимизировать многолучевые помехи, улучшая качество сигнала в различных условиях. Эта легкая и прочная антенна обеспечивает надежное соединение на частотах 5.8 GHz, давая четкую передачу видео для улучшенного FPV-опыта, что существенно для управления

автономными миссиями. Стр. 21 пробный перевод

Рисунок 13

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 22 пробный перевод

Приемник ELRS и

T-антенна

Несмотря на то, что приемники 915 MHz ELRS или TBS Crossfire обычно используются на линии фронта для радиосвязи, для демонстрации разработки в этой книге я выбрал эксперимент с Express LRS 2.4 GHz Nano. Вот несколько причин: во-первых, он более доступен по цене; во-вторых, нет необходимости покупать дополнительное расширение для Radiomaster Pocket TX, поскольку это стандартная частота для этого дистанционного контроллера (джойстика). Рисунок 2-11. Приемник ELRS 2.4GHz и T-антенна При выборе чипа ELRS важно учитывать, чтобы рабочее напряжение было совместимо с полетным контроллером

(FC). Напряжение должно подходить для сборки. В нашем случае мы будем использовать пин 4V5 на полетном контроллере для подключения к приемнику ELRS, который Стр. 22 пробный перевод

Рисунок 14

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 23 пробный перевод поддерживает диапазон напряжений от 3.6 до 5.5V. Однако многие другие чипы работают только на 5 V и не могут использоваться в нашей сборке. Я также хочу подчеркнуть, что T-антенна должна подходить для конфигурации. Для системы ELRS 2.4 GHz важно учитывать следующие параметры T-антенны: длина

40 mm для вертикальной секции и 52 mm для перпендикулярной секции, как показано на изображении выше.

Батарейный блок

6S2P

Для питания FPV-дрона вместе с его периферийными устройствами и сопутствующим компьютером на базе Raspberry Pi, включая видеокамеру, я решил выбрать Li-ion батарейный блок дальнего действия 6s2p 90A. В частности, я рассматривал конфигурацию 6s2p BANDERA AKB, которая предлагает 8400 mAh и ток разряда 90A. Рисунок 2-12. Батарейный блок BANDERA AKB 6s2p 8400mAh 90A

Стр. 23 пробный перевод

Рисунок 15

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 24 пробный перевод Этот выбор отлично подходит для питания FPV-дрона, поскольку полетный контроллер (FC) и электронный регулятор скорости (ESC) имеют максимальный токовый рейтинг 60A. Это позволяет им эффективно управлять питанием, необходимым для моторов во время полета.

С этим батарейным блоком избыточная токовая способность (до 30A) может использоваться для питания дополнительных компонентов, таких как сопутствующий компьютер Raspberry Pi, вместе с его периферией, включая видеокамеру. Это гарантирует, что дрон сможет сохранять оптимальную производительность и одновременно поддерживать расширенные функции без перегрузки системы питания. Сочетание высокой емкости и достаточного токового выхода делает этот батарейный блок идеальным для дальних миссий и сложных автономных решений. Рисунок 2-13. Кабель XT60 1 male to 2 female и преобразователь DC 6-26V to 5V Однако, поскольку нам нужно питать два выхода — один для дрона, работающего при напряжениях до 26V, и Стр. 24 пробный перевод

Рисунок 16

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 25 пробный перевод второй для Raspberry Pi, которому требуется 5 V, — мы будем использовать кабель XT60 1 male to 2 female вместе с преобразователем DC 6-26V to 5V, как показано на изображении выше.

Радиоконтроллер

(джойстик)

Для управления нашим FPV-дроном — запуска, переключения режимов, посадки и выполнения других команд — мы будем использовать радиоконтроллер RadioMaster Pocket ELRS 2.4 GHz . Я выбрал эту модель, потому что она самая доступная в линейке RadioMaster, но предлагает ту же функциональность, что и TX12, что делает ее бюджетным вариантом. Рисунок 2-14. Радиоконтроллер Radiomaster Pocket TX

Поскольку на дроне мы будем использовать приемник ELRS 2.4 GHz (RX), а наш радиоконтроллер по умолчанию работает на той же частоте, дополнительные расширения не нужны. Стр. 25 пробный перевод

Рисунок 17

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 26 пробный перевод Для RadioMaster Pocket требуются две Li-ion батареи 18650, каждая с номинальным напряжением 3.7V, что в

сумме дает 7.4 V для питания контроллера. Эти батареи удобно заряжать через USB-кабель, подключенный к нижней части устройства.

UVC OTG

видеоприемник

Вместо использования FPV-очков я решил подключить приемник Skydroid 5.8 GHz 150 CH к смартфону на базе Android. Такая конфигурация позволяет оператору смотреть живой видеопоток прямо на дисплее телефона, предоставляя удобную альтернативу для мониторинга изображения с камеры FPV-дрона. Рисунок 2-15. Приемник Skydroid 5.8 GHz 150 CH Я решил приобрести двойную версию, как показано на изображении выше, потому что она дает повышенную гибкость и надежность. Благодаря двум антеннам это Стр. 26 пробный перевод

Рисунок 18

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 27 пробный перевод устройство обеспечивает улучшенный прием сигнала и стабильность, гарантируя более четкий видеопоток даже в условиях возможных помех. Для просмотра FPV-потока есть разные варианты приложений, включая стандартный Skydroid FPV. Однако я рекомендую скачать и установить PoKeFPV для Android-устройств. Вы можете безопасно скачать APK напрямую с веб-ресурса здесь: https://apkpure.co m/poke-fpv/com.pokefpv.

Система сброса для

FPV

Как упоминалось во введении, наша цель — построить автономный FPV-дрон, способный доставлять бутылку воды солдатам в фронтовой траншее. Для этого нам нужно установить систему сброса на FPV-дрон.

Полетный контроллер Aocoda F4 включает несколько PWM-портов, позволяющих подключить серво-модуль, который является центральным компонентом системы сброса. С

начала украинско-российской войны многие производители в Украине разработали и поставили продвинутые системы сброса специально для применения на линии фронта. Как показано на изображении ниже, я приобрел одну из таких систем для своей сборки. Стр. 27 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 28 пробный перевод

Рисунок 2-16. FPV-система сброса (серво-модуль) В качестве альтернативы вы можете проверить местный рынок на наличие похожих продуктов или создать систему сброса самостоятельно, купив совместимый серво-модуль и напечатав остальные части на 3D-принтере.

Raspberry Pi

Я провел много экспериментов с компьютерным зрением на разных версиях Raspberry Pi, от версии 3 до новейшей Raspberry Pi 5. Для целей этой книги я выбрал Raspberry Pi 5 с 8GB RAM. Эта модель обеспечивает необходимую производительность и стабильность для обработки задач компьютерного зрения параллельно с управлением FPV-дроном, гарантируя надежную работу в среде на базе

Debian. Стр. 28 пробный перевод

Рисунок 19

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 29 пробный перевод Рисунок 2-17. Raspberry Pi как сопутствующий компьютер

Она оснащена четырехъядерным процессором Arm Cortex-A76 с частотой 2.4 GHz, GPU VideoCore VII, 8GB LPDDR4X RAM и стандартным 40-пиновым GPIO-разъемом, который мы будем использовать для соединения дрона с сопутствующим компьютером через UART. Также имеется выделенный CSI-порт для совместимой видеокамеры (Waveshare). Raspberry Pi имеет вход питания USB-C 5 V 5A.

Видеокамера для

Raspberry Pi

Waveshare 1165 — это компактный дисплейный модуль высокого разрешения, разработанный специально для Raspberry Pi и других одноплатных компьютеров; он обычно используется в приложениях вроде робототехники, дронов и других встроенных проектов, где полезен портативный дисплей. Стр. 29 пробный перевод

Рисунок 20

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 30 пробный перевод Рисунок 2-18. Видеокамера, совместимая с Raspberry Pi Ключевые особенности:

• Display: размер 11.6 дюйма, обеспечивающий

хороший баланс между портативностью и видимостью.

• Resolution: разрешение Full HD 1920x1080; оно дает

четкие, детализированные изображения, идеальные для задач компьютерного зрения на дроне.

• Connectivity: CSI-порт для бесшовной интеграции с

RPi. Поскольку мы используем Betaflight, мы не можем напрямую запрашивать изображения с камеры дрона.

Именно поэтому мы используем RPi-камеру.

Инструменты

Пайка и сборка FPV-дрона могут быть сложными и по ходу работы требуют специальных инструментов и приборов. Лучше подготовить подходящее рабочее место с хорошим освещением и стабильным источником питания, чтобы обеспечить плавную и точную работу. Стр. 30 пробный перевод

Рисунок 21

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 31 пробный перевод Рисунок 2-19. Инструменты Как показано на изображении выше, вам потребуется несколько основных инструментов:

• Паяльник, припой (олово) и флюс;

• Различные отвертки;

• Пассатижи;

• Паяльный коврик;

• Мультиметр (для измерения тока и напряжения);

• Различные покрытия для проводов. Вы также можете

включить спокойную или расслабляющую музыку, чтобы помочь себе сосредоточиться во время работы над FPV-дроном, в зависимости от ваших предпочтений. Кто-то предпочитает тихую музыку во время пайки, а кто-то даже любит рок. Выберите то, что подходит вам лучше всего, но главное — сохранять концентрацию без отвлечений для более безопасной и эффективной сборки.

В процессе сборки дрона и тестирования на различных этапах вам может понадобиться зарядить Li-Ion батарею, проверить уровни тока или протестировать систему сброса Стр. 31 пробный перевод

Рисунок 22

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 32 пробный перевод (серво-модуль). Для этих задач важным инструментом, который может помочь, является зарядное устройство ToolkitRC M7 в паре с адаптером ADP100 , как показано

на изображении ниже. Рисунок 2-20. Зарядное устройство ToolkitRC M7 и адаптер ADP100 С максимальной выходной мощностью 200W ToolkitRC M7 хорошо подходит для зарядки батареи 6s2p, которую мы будем использовать в нашей сборке. Чтобы зарядить Li-Ion батарейный блок 6s2p на ToolkitRC M7, вам потребуется задать конкретные параметры для безопасной зарядки: • Battery type: установить Li-Ion.

• Voltage: поскольку это 6s-пакет, номинальное

напряжение составляет 22.2V (3.7V на ячейку), а максимальное напряжение полностью заряженного состояния — 25.2V (4.2V на ячейку). Установите 4.1V.

• Current: для батарейного блока 6s2p емкостью

8400mAh установить скорость 0.5C (4.5A). Будьте осторожны при работе с различными типами батарей и всегда дважды проверяйте их спецификации перед зарядкой.

Стр. 32 пробный перевод

Рисунок 23

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 33 пробный перевод

СКОЛЬКО

ЭТО СТОИТ

Одно из ключевых соображений — доступность компонентов, которые вы планируете купить. Чтобы дать вам общее представление, общая стоимость компонентов, приобретенных мной для этого эксперимента, составляет

$655. Ниже приведена подробная разбивка по каждой группе компонентов:

• Компоненты дрона (полетный контроллер,

приемники, рама, моторы, батарея и даже система сброса) — $271

• Устройства для видео- и радиоуправления — $107

• Расширения для автопилота (RPi 5, кабели,

DC-адаптер) — $129

• Инструменты (ToolkitRC, паяльное устройство,

мультиметр и т. д.) — $148 Я хотел бы отметить, что покупал эти предметы на хорошо развитом рынке в

Украине. Некоторые позиции были куплены локально, тогда как другие были заказаны напрямую из Китая

через AliExpress. Всегда проверяйте цены в своей стране и выбирайте самый доступный вариант, доступный вам, поскольку стоимость может различаться.

ДАВАЙТЕ

СОБЕРЕМ

ЭТОТ ДРОН

Стр. 33 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 34 пробный перевод Теперь, когда мы приобрели все компоненты и инструменты, пора перейти к практике и оживить этот FPV-дрон. Здесь мы пройдем каждый этап сборки и пайки. Не спешите, внимательно выполняйте каждый шаг и не торопите процесс. С устойчивыми руками и концентрацией вы получите полностью функциональный дрон, готовый к первому полету.

Сборка рамы

В самом начале комплект рамы Mark 4 7” включал ряд компонентов, таких как две основные пластины, четыре луча для моторов, стойки и винты, площадку для батареи и крепление камеры. Рисунок 2-21. Рама Mark 4 7” перед сборкой Перед сборкой разложите все детали перед собой, подготовьте набор отверток с битами разных размеров и приготовьтесь аккуратно собрать каждый компонент,

используя официальное руководство производителя. Прежде всего прикрепите лучи моторов к основной (самой большой) пластине с помощью предоставленных винтов. Стр. 34 пробный перевод

Рисунок 24

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 35 пробный перевод Убедитесь, что каждый луч выровнен с рамой. Затем прикрепите стойки к основной пластине; они помогут создать необходимый зазор для установки компонентов, включая FC. Рисунок 2-22. Рама Mark 4 7” готова к продолжению Как видно на изображении выше, карбоновая рама Mark 4 7” частично собрана и готова к следующим шагам. Для сборки рамы я использовал шестигранную отвертку M2 из набора инструментов, который виден слева. Я рекомендую не затягивать болты полностью на этом этапе; лучше сделать это после установки всех компонентов на борт.

Как показано на изображении выше, несколько компонентов рамы остаются неустановленными (верхняя пластина, держатель камеры, некоторые винты, резина, держатель батареи). Эти детали будут важны позже, на финальных этапах сборки. Я рекомендую отложить их в безопасное и организованное место, чтобы они были доступны, когда понадобятся.

Установка моторов

Стр. 35 пробный перевод

Рисунок 25

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 36 пробный перевод Моторы критически важны для движения и управления FPV-дроном, поэтому мы должны аккуратно установить их, убедившись, что провода закреплены и защищены от потенциальных повреждений. Правильная установка поддерживает надежную производительность и помогает предотвратить проблемы во время полета. Рисунок 2-23. Нанесение дополнительной изоляции на провода моторов Как показано на изображении выше, я использую дополнительную защиту проводов моторов с помощью плетеной оплетки и термоусадочной трубки. Такая дополнительная изоляция важна для хорошей защиты проводов. Вы должны найти похожие материалы на местном рынке. Хотя сборка может работать и без этого

дополнительного слоя, его наличие обеспечивает гораздо лучшую защиту и долговечность проводов. Чтобы подготовить провода, начните с нарезки одинаковых кусков плетеной оплетки длиной около 9 cm каждый и двух кусков термоусадочной трубки длиной около 2 cm каждый. Наденьте плетеную оплетку на три провода мотора и протяните ее к основанию проводов. Стр. 36 пробный перевод

Рисунок 26

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 37 пробный перевод Затем разместите термоусадочную трубку на обоих концах оплетки и с помощью зажигалки или спички аккуратно зафиксируйте концы, слегка нагрев их. Повторите этот процесс для всех четырех моторов. После завершения сборка должна выглядеть похоже на изображение выше. Помните, что нам нужно подготовить и установить таким образом все четыре мотора. Поскольку мы используем моторы EMAX ECO II 2807 6S 1300KV, они поставляются с двумя типами болтов. Для установки на раму Mark 4 7” выберите более короткие болты, так как они идеально подходят для этой сборки и не будут мешать внутренней обмотке мотора. Это критически важно, поскольку использование более длинных болтов может повредить моторы. Рисунок 2-24. Установка моторов на раму

Чтобы установить моторы, я закрепил каждый из четырех моторов четырьмя болтами, используя шестигранную отвертку M3. В отличие от болтов рамы, которые я предлагал оставить слегка незатянутыми при первоначальной сборке, болты моторов я рекомендую полностью и аккуратно затянуть с самого начала. Это Стр. 37 пробный перевод

Рисунок 27

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 38 пробный перевод обеспечивает надежную посадку моторов, что существенно важно.

Пайка моторов к

ESC

Перед пайкой моторов к регулятору скорости (ESC) нам нужно выполнить самую сложную часть: припаять к плате ESC силовой кабель с разъемом XT60 и конденсатор 1000μF.

Рисунок 2-25. Пайка силового кабеля XT60 и его конденсатора Чтобы припаять эту часть, сначала нагрейте паяльник примерно до 300°C. Нанесите флюс на контакты ESC, а также на провода, затем залудите обе стороны. Аккуратно подключите провода к плате — красный провод к положительной площадке (+), а черный провод к отрицательной площадке (-), как показано на изображении выше.

Затем припаяйте конденсатор. Подключите более длинную ножку конденсатора к положительной площадке (куда подключен красный провод), а более короткую ножку — к Стр. 38 пробный перевод

Рисунок 28

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 39 пробный перевод отрицательной площадке (куда подключен черный провод). Для дополнительной защиты нанесите дополнительный

слой покрытия на обратной стороне платы на обе площадки (отрицательную и положительную). Используйте более толстое жало паяльника при пайке силового кабеля к плате, чтобы обеспечить прочное и стабильное соединение. После подготовки подключите 8-контактный кабель и установите плату ESC на раму, выровняв ее так, чтобы символ стрелки рядом с силовым кабелем был направлен в сторону более широкой части рамы (место для видеокамеры). Рисунок 2-26. Пайка проводов моторов к ESC На этом шаге нагрейте паяльник до 260°C и начните с лужения каждого провода мотора. Затем подготовьте каждую площадку на плате ESC, добавив немного припоя. Припаяйте каждый провод мотора к соответствующей площадке на плате последовательно, один за другим.

Стр. 39 пробный перевод

Рисунок 29

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 40 пробный перевод Завершенная сборка должна напоминать конфигурацию, показанную на изображении выше. Убедитесь, что каждый провод припаян аккуратно, поскольку неправильные соединения могут повлиять на производительность дрона во время полета.

Пайка приемника

ELRS

Приемник ELRS отвечает за прием и передачу радиосигналов от радиоконтроллера RadioMaster Pocket и к нему. В нашем случае мы используем нано-приемник ELRS 2.4 GHz, который имеет компактную нано-плату, требующую пайки небольших площадок. Используйте подходящее жало паяльника, например SH-BC2 для SH72. Рисунок 2-27. Пайка приемника ELRS 2.4 GHz к UART2 на FC Со стороны приемника ELRS вам нужно припаять четыре провода: красный провод к площадке 5 V (поддерживает 3.6V-5V), черный провод к площадке G, а желтый и белый провода — к площадкам TX и RX соответственно. Стр. 40 пробный перевод

Рисунок 30

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 41 пробный перевод Со стороны полетного контроллера (FC) подключите желтый провод (TX) к площадке R2, белый провод (RX) к площадке T2, красный провод (5V) к площадке 4V5, а черный провод (G) — к площадке G на плате FC соответственно. Убедитесь, что провода надежно подключены (припаяны).

Резервирование

UART для RPi

Поскольку мы используем Raspberry Pi как сопутствующий компьютер, нам нужно установить соединение с полетным контроллером. Существует несколько способов сделать это, но я выбрал интерфейс UART на плате Raspberry Pi — пины 6, 8 и 10 соответственно. Рисунок 2-28. Пайка UART-кабеля для RPi к UART1 на FC Как отмечалось в предыдущем разделе «Схема подключения», Raspberry Pi (RPi) подключается к полетному контроллеру (FC) с использованием трех проводов: синего (R1), серого (GND) и розового (T1). Как Стр. 41 пробный перевод

Рисунок 31

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 42 пробный перевод показано на изображении выше, T1 и R1 относятся к UART1 на FC и подключаются следующим образом: T1 к RX (пин 10 на

RPi) и R1 к TX (пин 8 на RPi). Серый провод соединяет G (GND) на полетном контроллере (FC) с G (пин 6 на Raspberry Pi). Помните: RX на одной плате должен подключаться к TX на другой стороне. Здесь T1 подключается к RX, а R1 подключается к TX на Raspberry Pi.

Подключение VTX

и камеры

VTX, в нашем случае AKK Race Ranger 1.6W вместе с его антенной, отвечает за передачу видеопотока, захваченного камерой дрона. Эта передача происходит на частоте 5.8 GHz и отправляет поток на FPV-очки оператора или другие приемные устройства, например Skydroid 5.8 GHz 150 CH. Рисунок 2-29. Подключение видеокамеры и VTX к UART4 на FC Стр. 42 пробный перевод

Рисунок 32

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 43 пробный перевод Перед пайкой VTX хорошая идея — сначала установить его внутри дрона. Это позволяет лучше спланировать прокладку проводов к полетному контроллеру. После установки разложите провода, обрежьте лишнюю длину и подготовьте их к пайке. Всегда дважды проверяйте площадки пайки, их порядок и соответствующие функции, чтобы избежать ошибок.

VTX работает на более высоком напряжении (9 V), поэтому на этом этапе требуется дополнительная осторожность. В моем случае штатная проводка была слишком короткой, поэтому я купил более длинный кабель

JST-SH 1.0 mm. Однако я обнаружил, что цвета проводов не соответствуют их стандартным функциям. Чтобы решить это, я ориентировался на положения проводов, а не на их цвета. Поэтому в моей сборке:

• Зеленый провод (1) был припаян к площадке 9 V на

FC.

• Оранжевый провод (2) был подключен к площадке

GND.

• Провода 3 и 4 были удалены, поскольку они

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

• Красный провод (5) был припаян к площадке VTX на

FC.

• Черный провод (6) был подключен к площадке T4,

которая соответствует UART4 на полетном контроллере. Будьте осторожны при пайке, так как неправильный порядок может потенциально повредить VTX.

Еще один важный компонент в этой сборке — FPV-камера. В моем случае это видеокамера B19 FPV с 2.1 cm 1/3 CMOS-сенсором и разрешением 1500 TVL. Как и многие другие FPV-камеры, она имеет промаркированные пины на

3-контактном разъеме сзади. Этот Стр. 43 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 44 пробный перевод 3-контактный кабель соединяет камеру с полетным контроллером. Чтобы подключить ее правильно:

• Припаяйте красный провод (1) к площадке 5 V на

полетном контроллере.

• Подключите черный провод (2) к площадке GND на

FC.

• Подсоедините желтый провод (3) к площадке CAM на

полетном контроллере. Правильная пайка необходима для надежной подачи питания и передачи видеосигнала, когда видеокамера и VTX работают вместе во время полетов и операций FPV-дрона.

Важно: не включайте дрон с VTX, подключенным к полетному контроллеру, без правильной конфигурации (см. раздел «Настройка конфигурации»). Убедитесь, что VTX

правильно настроен, и всегда подключайте FPV-антенну перед подачей питания, чтобы не повредить VTX.

Установка системы

сброса

Система сброса необходима для доставки бутылки воды в солдатскую траншею. Она работает с помощью серво-механизма, который освобождает груз при активации, обеспечивая доставку.

Из широкого разнообразия 3D-печатных систем сброса, доступных в Украине, я выбрал ту, что показана на изображении ниже. Она имеет ярко-желтый дизайн и включает крепления, специально разработанные для

надежного закрепления на карбоновой раме Mark 4 7”. Стр. 44 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 45 пробный перевод Рисунок 2-30. Установка системы сброса Пайка обычно проста. На полетном контроллере Aocoda F405 v2, используемом в этой сборке, я нашел необходимые площадки удобно расположенными рядом с UART4, где также был подключен VTX. Вот как я подключил: красный провод был припаян к площадке 5 V; черный провод был подключен к площадке GND; желтый провод был припаян к FC на площадку S5 соответственно.

Smoke test

Smoke test необходим, чтобы убедиться, что площадки припаяны правильно. Перед выполнением теста я настоятельно рекомендую сначала настроить VTX в Betaflight Configurator с использованием кабеля TYPE-C to

USB. Когда вы будете готовы, используйте устройство питания ToolkitRC M7 для ограничения напряжения и тока. Если система потребляет слишком много энергии, устройство

автоматически перезапустится, чтобы предотвратить повреждение. Стр. 45 пробный перевод

Рисунок 33

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 46 пробный перевод Рисунок 2-31. Smoke test с использованием устройства питания ToolkitRC M7 Подключите батарею 6S2P к входу устройства и используйте кабель XT60 to XT60 (приобретенный ранее), чтобы подключить выход к дрону. Чтобы выполнить smoke test, перейдите в Accessibility -> Power в интерфейсе ToolkitRC M7. Установите выходное напряжение 12 V и выходной ток 0.5 A, затем нажмите

«Start», чтобы начать тест. Если дыма нет и устройство не перезапускается — поздравляю.

НАСТРОЙКА

КОНФИГУРАЦИИ

Физический дрон — это важная отправная точка, но этого недостаточно даже для первого полета. После того как вы построили дрон, его нужно правильно настроить, чтобы Стр. 46 пробный перевод

Рисунок 34

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 47 пробный перевод предотвратить такие проблемы, как «flyaways» или другие эксплуатационные несоответствия. В этом разделе мы рассмотрим различные аспекты конфигурации дрона, включая PID-настройку, коммуникационные протоколы, настройки приемника, конфигурацию VTX и многое другое. Мы не будем охватывать каждый аспект конфигурации, а сосредоточимся на основных частях, необходимых для наших экспериментов с автономными полетами.

Ports

Когда вы будете готовы, подключите дрон к компьютеру с помощью кабеля данных Type-C to USB. Рисунок 2-32. Порты в Betaflight Configurator Скачайте и установите Betaflight Configurator

(https://betaflight.com) для вашей операционной системы, затем запустите его и установите соединение. Стр. 47 пробный перевод

Рисунок 35

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 48 пробный перевод

На вкладке «Ports» настройте параметры, выделенные красным на изображении выше. Примените такую же конфигурацию и не забудьте нажать кнопку «Save and Reboot», чтобы завершить изменения.

Вкладка «Ports» должна быть настроена на основе припаянных площадок на полетном контроллере (FC). Поскольку мы припаяли приемник ELRS к UART2, нам нужно включить флажок «Serial RX» для UART2.

Повторяйте этот процесс для других компонентов по мере необходимости.

Configuration

Заполните раздел «Personalization», чтобы правильно идентифицировать ваш дрон. Рисунок 2-33. Раздел Configuration Внимательно настройте следующие параметры:

• Включите «Accelerometer» и «Barometer»;

• Задайте имя вашего летательного аппарата вместо

«UA-913», показанного на экране выше, а также «Pilots Стр. 48 пробный перевод

Рисунок 36

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 49 пробный перевод name», чтобы идентифицировать себя;

• Разрешите arm даже под углом (180 degrees);

• Включите «RX_LOST» и «RX_SET» для звуковых

оповещений. Кроме того, нам нужно включить «SERVO_TILT» и «LED_STRIP» в этом разделе, поскольку серво-модуль подключен к соответствующей площадке S5 на полетном контроллере. Как всегда, не забудьте нажать «Save and Reboot», чтобы применить изменения.

Power and Battery

Поскольку мы используем Li-Ion батарею 6S2P, нам нужно настроить ее. Рисунок 2-34. Раздел Power & Battery В разделе «Power & Battery» вам, скорее всего, потребуется настроить следующие параметры:

• Minimum Cell Voltage: 3.0 V

• Maximum Cell Voltage: 4.2 V

• Warning Cell Voltage: 3.1V Эти настройки

обеспечивают правильную работу с источником питания.

Failsafe

Когда летательный аппарат теряет управление из-за помех, он должен знать, как реагировать. Я настроил его на Стр. 49 пробный перевод

Рисунок 37

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 50 пробный перевод зависание до тех пор, пока автопилот не возьмет управление. Рисунок 2-35. Настройки Failsafe Важно скопировать мои настройки failsafe, чтобы предотвратить повреждение летательного аппарата и обеспечить безопасность окружающей среды. Просто повторите настройки, выделенные красным на изображении выше.

Вот объяснение:

• Stage 1: когда летательный аппарат теряет

управление, у нас есть 10 секунд в Stage 1. В это время сохраняйте все уровни AUX такими же, как до потери управления, и удерживайте Roll, Pitch и Yaw на 1500, а Throttle на уровне 1200.

• Stage 2: после 20 секунд помех, если автопилот все

еще не взял управление, летательный аппарат переходит в Stage 2, где throttle устанавливается на Стр. 50 пробный перевод

Рисунок 38

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 51 пробный перевод 1000, а моторы остаются armed еще 10 секунд, чтобы обеспечить безопасную посадку. После завершения настройки failsafe не забудьте нажать «Save and Reboot», чтобы применить изменения.

PID tuning

Профили Proportional-Integral-Derivative (PID) определяют, как полетный контроллер реагирует на различные входные воздействия и возмущения во время полета. Пожалуйста, обратите внимание, что я не претендую на полное раскрытие этой темы — PID tuning является обширной и сложной областью. Я привожу только минимальные настройки, чтобы дрон не улетел. Рисунок 2-36. Настройки PID Profile

Регулировка настроек PID-профиля позволяет оптимизировать летные характеристики дрона, улучшая стабильность, маневренность и отзывчивость. Это важно. Я рекомендую применить настройки, выделенные красным на изображении выше, для оптимальной Стр. 51 пробный перевод

Рисунок 39

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 52 пробный перевод производительности. Если вам нужно пояснение по

какому-либо параметру, наведите курсор на значок вопроса рядом с ним, чтобы получить больше информации. Рисунок 2-37. Настройки Rateprofile Profile «Rate Profile Settings» определяют, насколько чувствительным и отзывчивым является дрон к движениям стиков, особенно его скорость вращения и изменения направления. Эти настройки контролируют, насколько быстро дрон реагирует на вводы пилота. Значение по умолчанию для параметров, выделенных красным, составляет 620, но мы должны изменить его на 490 для повышения производительности. Обязательно нажимайте «Save» после каждого шага настройки, чтобы изменения были применены. Чтобы уменьшить шум и вибрации в данных сенсоров —

что приводит к более плавной летной производительности, повышенной стабильности и более отзывчивому управлению — нам нужно настроить «Filter Settings». Стр. 52 пробный перевод

Рисунок 40

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 53 пробный перевод Рисунок 2-38. Настройки Filter Как видно на изображении выше, мы изменили:

• Gyro Filter Multiplier с 1 на 0.8

• D Term Filter multiplier с 1 на 0.9

• Min Frequency на 150

• Max Frequency на 420

• Static cutoff frequency со 100 на 85

Я рекомендую изменять только пять параметров, выделенных красным. Не забывайте сохранять изменения на каждой странице, чтобы они применились; иначе они не вступят в силу.

Receiver

Раздел «Receiver» — это место, где вы настраиваете, как полетный контроллер взаимодействует с приемным блоком; в нашем случае это ELRS 2.4 GHz, который принимает команды от TX.

Стр. 53 пробный перевод

Рисунок 41

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 54 пробный перевод Рисунок 2-39. Раздел Receiver Поскольку приемник припаян к UART2, как было

настроено ранее в разделе «Ports», на этой странице требуется лишь несколько корректировок:

• Receiver Mode: Serial via UART

• Serial Receiver Provider: CRSF

• Telemetry: включите эту опцию, чтобы отображать

ключевые данные на RC

• Channel Map: AETR1234 При биндинге с

RadioMaster Pocket убедитесь, что в вариантах биндинга у вас выбран протокол CRSF, чтобы он соответствовал конфигурации дрона.

Modes

Добавление режима «ARM» в разделе «Modes» позволяет управлять тем, когда дрон armed или disarmed. Чтобы настроить это, привяжите радиоконтроллер RadioMaster Pocket к дрону во время конфигурации. Затем нажмите

«Add Range» рядом с командой «ARM» и переключите на Стр. 54 пробный перевод

Рисунок 42

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 55 пробный перевод радиоконтроллере тот тумблер, который вы хотите

использовать для arm/disarm дрона. Это назначит переключатель соответствующим образом. С помощью желтого ползунка, как показано на изображении ниже, можно указать положение переключателя, необходимое для arm дрона. Повторите эти шаги, чтобы добавить режим ANGLE (для стабилизированного полета) и BEEPER (полезен для поиска дрона, если он потеряется).

Рисунок 2-40. Конфигурация Modes В конце не забудьте сохранить изменения, нажав кнопку «Save» в правом нижнем углу страницы конфигурации.

Motors

Раздел «Motors» предоставляет инструменты для тестирования и устранения неполадок моторов вашего дрона. Он позволяет активировать каждый мотор отдельно, чтобы проверить его функциональность и конфигурацию. Стр. 55 пробный перевод

Рисунок 43

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 56 пробный перевод Рисунок 2-41. Конфигурация Motors Для нашей сборки настройте следующие опции:

• Mixer: QUAD X

• Motor Protocol: DSHOT600 Этот раздел также

позволяет тестировать каждый мотор, корректировать его выход при необходимости и убедиться, что он вращается в правильном направлении для оптимального управления полетом. [Всегда выполняйте эти тесты безопасно, сняв пропеллеры, чтобы предотвратить возможные повреждения или травмы].

Servos

Система сброса — важный шаг в процессе конфигурации, превращающий стандартный дрон в инструмент военного уровня, способный доставлять бутылку воды в солдатскую траншею. С технической точки зрения она представляет собой серво-механизм, предназначенный для надежного Стр. 56 пробный перевод

Рисунок 44

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 57 пробный перевод удержания и освобождения бутылки, когда оператор переключает назначенный тумблер на дистанционном контроллере (RadioMaster Pocket). Поскольку мы припаяли наш серво к площадке S5 на полетном контроллере (FC) и использовали LED_STRIP для подключений 5 V и GND, первый шаг — включить флажки «SERVO_TILT» и «LED_STRIP» на странице configuration (как было настроено ранее).

Рисунок 2-42. Конфигурация Servo После этого раздел «Servo» станет доступен, как показано выше. Здесь мы настроим серво. Как показано на изображении выше, я установил значения mid (1310), min (1110) и max (1470) для Servo 1 (логический серво 1), чтобы определить диапазон его движения. Также я назначил A2 (тумблер AUX2) для управления функцией доставки с радиоконтроллера

RadioMaster Pocket. Стр. 57 пробный перевод

Рисунок 45

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 58 пробный перевод Если бы мы использовали SpeedyBee F405, на этом этапе можно было бы завершить настройку, поскольку Servo 1 уже был бы определен в ресурсах. Однако, поскольку мы используем Aocoda F405 V2, где Servo 1 по умолчанию не определен, нам нужно настроить его вручную.

Для этого перейдите в CLI и введите команду resource . Это покажет все ресурсы, определенные на данный момент. Найдите строку, соответствующую MOTORS, которая связана с площадкой S5 на полетном контроллере.

Вы должны увидеть что-то вроде этого: resource MOTOR 5 A15 Теперь измените строку в CLI и выполните ее следующим образом: resource MOTOR 5 NONE Вы должны увидеть сообщение «Resource is freed». Затем назначьте ресурс для Servo 1 следующей командой: resource SERVO 1 A15 Вы увидите сообщение «Resource is set to A15». После этого введите save в CLI, чтобы применить изменения, и полетный контроллер перезапустится. Это ожидаемое поведение.

Чтобы подтвердить изменения, снова выполните команду resource . Теперь среди ресурсов вместо MOTOR 5 вы должны увидеть SERVO 1, поскольку площадка S5 на FC назначена серво-устройству.

OSD

Раздел OSD (On-Screen Display) позволяет настраивать и персонализировать параметры экранного дисплея, отображаемого на вашем FPV-видеопотоке, будь то видеомонитор или FPV-очки. Стр. 58 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 59 пробный перевод Я рекомендую настроить высоту (без десятичных знаков), боковые панели искусственного горизонта, использование батареи (графический остаток), имя летательного аппарата, режим полета, качество связи и предупреждения. Рисунок 2-43. Конфигурация OSD

Помимо отображения этих параметров, вы также можете перетаскивать их в определенные места на экране. Правильная настройка OSD предоставляет основную полетную информацию с первого взгляда, улучшая общий опыт полета.

Видеопередатчик

VTX (видеопередатчик) отвечает за передачу видеопотока с бортовой камеры вашего дрона на FPV-очки (First Person View) или видеоприемник. Как упоминалось ранее, мы припаяли видеопередатчик к UART4 на полетном контроллере. Стр. 59 пробный перевод

Рисунок 46

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 60 пробный перевод Рисунок 2-44. Конфигурация Video Transmitter

Мне следовало упомянуть этот раздел раньше, поскольку его критически важно правильно настроить. Неправильные настройки или пренебрежение ими могут повредить как VTX, так и дрон. Я предполагаю, что вы не включали дрон от батареи до настройки Video Transmitter здесь. Поскольку мы используем AKK Race Ranger 1.6W, нам нужно найти и скачать специальную VTX table, предназначенную для

обеспечения правильной работы VTX во время его функционирования. Посмотрите пример ниже: "description": "AKK Race Ranger VTX Conf Фрагмент VTX table, часть 1 Фрагмент VTX table, часть 2 Если вы используете другой VTX, убедитесь, что нашли соответствующую VTX table и загрузили ее в этот раздел, нажав кнопку «Load from clipboard». Стр. 60 пробный перевод

Рисунок 47

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 61 пробный перевод После этого можно перейти к следующему:

• Band: BOSCAM_A

• Channel: 1

• Power: 200 Также включите Low power disarm , чтобы

экономить энергию, когда летательный аппарат disarmed и находится на земле. После внесения любых изменений не забудьте сохранить их, нажав кнопку «Save», обычно расположенную в правом нижнем углу страницы конфигурации VTX. Для наших экспериментов, где нам может понадобиться летать на большие расстояния при тестировании компьютерного зрения и следования за целью, я решил настроить тумблер AUX6 на радиоконтроллере RadioMaster Pocket, представленный круглой шестеренкой, как переключатель мощности VTX. Это позволит нам увеличить исходную мощность 200mW во время полета до 400mW и 800mW простым переключением тумблера. Чтобы настроить это, я подготовил следующий код для CLI:

vtx 0 5 0 0 1 1000 1450 vtx 1 5 0 0 2 1520 1650 vtx 2 5 0 0 3 1660 2000 save Первое число представляет номер переключателя VTX (0, 1, 2), второе число соответствует AUX6 (index 5), а следующие два нуля остаются без изменений. Затем идет порядок уровней мощности в таблице (1, 2, 3). Последние два числа задают диапазон от тумблера RC (AUX6), в котором будет активирован соответствующий уровень мощности.

Финальная

проверка и первый

Стр. 61 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 62 пробный перевод

полет

Теперь, когда мы припаяли все компоненты, собрали дрон и завершили конфигурацию, критически важно дважды проверить все настройки и физическое состояние дрона перед первым полетом. Убедитесь, что все закреплено — нет свободных проводов или компонентов, — и подтвердите, что все гайки и болты затянуты правильно. Перед установкой пропеллеров тщательно проверьте все аспекты конфигурации и осмотрите сборку. В ходе этого процесса я выявил и исправил несколько проблем:

• Изменил положение батареи. Силовой провод

батареи мешал одному из пропеллеров, поэтому я изменил ее положение и закрепил стяжкой.

• Закрепил свободные провода. Я использовал

стяжки, чтобы закрепить некоторые свободно висящие провода от системы сброса и MavLink-соединения.

Никакие провода не должны оставаться свободными.

• Затянул болты и гайки. В рамках финальной

проверки я убедился, что все болты и гайки на дроне правильно затянуты.

• Исправил вращение моторов. Во время

тестирования я заметил, что все четыре мотора вращаются в одном и том же направлении (по часовой стрелке), что было неверно. Используя раздел «Motors», я настроил моторы 2 и 3 на вращение против часовой стрелки (влево).

• Проверил radio binding и его работу. Я привязал

дрон к контроллеру RadioMaster Pocket и протестировал все настроенные функции и переключатели. В частности: подтвердил, что моторы правильно arm, проверил переключение режимов, протестировал, что тумблеры открывают/закрывают серво-модуль и что переключатель gear корректно регулирует уровни мощности VTX. Стр. 62 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 63 пробный перевод

• Проверил OSD на FPV Goggles. Изначально OSD не

отображался. Я обнаружил, что формат видео был установлен на HD, который не поддерживался в текущей конфигурации. Изменение типа видео OSD на «Auto» решило проблему, хотя мне пришлось переставить некоторые элементы на дисплее.

• Исправил процент батареи на OSD. Процент

батареи был неверным, потому что емкость не была установлена. Я обновил конфигурацию «Power and Battery» с правильной емкостью (8400 mAh), и значок батареи стал отображаться правильно.

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

Установка

пропеллеров

Правильная установка пропеллеров необходима для успешного полета. Неправильная установка может привести к перевороту дрона или даже к повреждению во время первого полета. Будьте особенно внимательны на этом этапе. Избегайте установки пропеллеров в помещении. Вместо этого устанавливайте их непосредственно перед полетом, предпочтительно на открытом пространстве.

Стр. 63 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 64 пробный перевод Рисунок 2-45. Установка пропеллера на мотор 1 В нашей конфигурации моторы настроены на работу в direct mode. Это означает:

• Передний левый и задний правый моторы вращаются

по часовой стрелке (вправо).

• Передний правый и задний левый моторы вращаются

против часовой стрелки (влево). Обратитесь к изображению ниже для визуального представления направлений вращения моторов (взято из Betaflight).

Стр. 64 пробный перевод

Рисунок 48

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 65 пробный перевод Рисунок 2-46. Direct mode в конфигурации Betaflight Каждая лопасть пропеллера имеет две стороны: верхнюю и

нижнюю. Пропеллер должен быть установлен на мотор так, чтобы верхняя часть лопасти была обращена в направлении вращения мотора. На изображении 2-45 выше я затягиваю гайку на нижнем правом моторе (мотор 1), который вращается по часовой стрелке (вправо). Верхняя сторона лопасти выровнена так, чтобы смотреть вправо, соответствуя направлению вращения мотора в direct mode. Убедитесь, что гайки надежно затянуты на всех моторах, но следите за тем, чтобы не перетянуть их, поскольку это может повредить мотор или пропеллер.

Первый полет

Стр. 65 пробный перевод

Рисунок 49

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 66 пробный перевод После того как вы выполнили все шаги в приведенных выше разделах этой книги и убедились, что все установлено правильно, включите камеру, привяжите ваш дрон к радиоконтроллеру и FPV-очкам — и теперь вы готовы к первому полету вашего дрона. Рисунок 2-47. Первый полет на открытом воздухе

Я рекомендую проводить первый полет на открытом воздухе в зоне без препятствий и линий электропередачи. Для более безопасного старта выполните следующие шаги: • Включите RadioMaster Pocket RC и FPV-очки.

• Убедитесь, что тумблер ARM находится в положении

OFF. • Подключите дрон к батарее.

• Проверьте, что тумблер DELIVERY реагирует

правильно. Стр. 66 пробный перевод

Рисунок 50

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 67 пробный перевод • Прикрепите груз (воду) к нижней стороне дрона. • Закрепите дрон на свободном месте и отойдите назад.

• Переключите дрон в режим ANGLE и убедитесь, что

throttle находится в минимальном положении.

• Arm моторы и постепенно увеличивайте throttle для

взлета. Используйте правый стик, чтобы лететь вперед на высоте около 2m. • Переключите delivery switch, чтобы освободить груз.

• Летите назад и уменьшите throttle, чтобы

подготовиться к посадке. • Disarm моторы. Рисунок 2-48. Посадка дрона Будьте осторожны во время первого полета и контролируйте все параметры. Если происходит что-то необычное, исследуйте проблему и внесите необходимые корректировки в конфигурацию.

Наслаждайтесь полетом! Стр. 67 пробный перевод

Рисунок 51

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 1 глава 3 - шрифт 1/2 ГЛАВА 3.

АВТОПИЛОТ

BETAFLIGHT

Мы продолжаем добавлять автономные возможности к FPV-дрону, который построили ранее. На этот раз мы начнем с базовой функциональности автопилота, которая может лететь вперед в течение 2 секунд, а затем сбросить полезную нагрузку (бутылку воды). Когда это заработает, мы добавим компьютерное зрение, чтобы дрон мог самостоятельно двигаться к месту назначения. Стр. 68 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 2 глава 3 - шрифт 1/2

Режимы

Как вы, вероятно, заметили, в конфигурации дрона, которую мы построили ранее, мы используем прошивку Betaflight, довольно популярную на украинской линии фронта. Как упоминалось выше, в этой главе мы собираемся добавить в наш дрон лишь небольшой элемент автоматизации, позволяющий ему лететь вперед в течение двух секунд, а затем сбросить полезную нагрузку. Это дает понимание того, как ваше программное обеспечение (автопилот) может управлять БПЛА. Для этой реализации у нас есть всего несколько режимов:

• OFF - автопилот остается неактивным, ожидая ввода оператора для переключения в другой режим. В этом состоянии активны только мониторинг телеметрии и логирование. • READY - активирует базовую функциональность, при которой дрон летит вперед в течение 2 секунд и сбрасывает полезную нагрузку (например, бутылку воды). Автономное обнаружение цели и следование за ней будут рассмотрены позже, в следующих главах этой книги.

Архитектура

Для этого этапа разработки мы будем использовать проект с открытым исходным кодом, который я ранее создал и сделал доступным на странице GitHub: https://github.com/underOtech/autopilot_bee_ept. Автопилот «BEE EMPTY» имеет многопоточную архитектуру. В его основе находятся очередь команд и маршрутизатор команд, отвечающий за обработку всех команд, помещенных в очередь. Маршрутизатор работает в собственном потоке, известном как поток Router, тогда как два дополнительных процесса - поток Telemetry и поток Empty Pilot - добавляют команды в очередь. Стр. 69 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 3 глава 3 - шрифт 1/2

Рисунок 3-1. Архитектура автопилота Поток Telemetry ставит в очередь команды, связанные с мониторингом системы и запросами телеметрии. Он предоставляет автопилоту важные данные, такие как текущая высота, воздушная скорость и значения

RC-каналов в реальном времени. Запросы телеметрии добавляются в очередь каждые 2 секунды. Поток Empty Pilot обрабатывает команды, связанные с доставкой полезной нагрузки (например, сбросом бутылки воды). Эти команды добавляются в очередь каждую секунду. Во время работы автопилот использует MSP helper - набор функций, предназначенных для запроса данных MSP и выполнения MSP-команд: http://www.multiwii.com/wiki/index.php?title=Multiwii_Serial_Protocol.

Через функцию MSP OVERRIDE в Betaflight эти команды позволяют управлять FPV-дроном и его периферийными устройствами. Стр. 70 пробный перевод

Рисунок 52

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 4 глава 3 - шрифт 1/2

MSP_OVERRIDE

Режим MSP OVERRIDE в Betaflight позволяет автопилоту (RPi) перезаписывать определенные значения AUX. Когда он включен, он дает автопилоту прямое управление дроном, позволяя ему изменять каналы ROLL, PITCH, YAW, THROTTLE и AUX. В нашей конфигурации этот режим используется для управления направлением полета, скоростью и общим управлением, а также для запуска сервомодуля, связанного с SERVO 1 (AUX2), для сброса полезной нагрузки.

В Betaflight переменная msp_override_channels_mask задает, какие каналы передатчика (радиоконтроллера) могут быть переопределены автопилотом. Для этого эксперимента маска настроена на переопределение ROLL, PITCH, YAW, THROTTLE (для управления полетом) и AUX2 (связанного с модулем SERVO 1) для сброса полезной нагрузки. Обратите внимание, что маска использует обратную битовую логику. См. схему ниже для пояснения того, как это работает и почему значение маски установлено равным 47 (0x00101111).

Рисунок 3-2. Маска MSP_OVERRIDE Значение 1 означает, что переопределение включено, тогда как 0 означает, что оно отключено. В нашей конфигурации переопределение включено для первых четырех каналов, используемых для управления полетом (ROLL, PITCH, YAW, THROTTLE), и для AUX2, который отвечает за сброс полезной нагрузки.

PYTHON CODE

Если вы уже видели репозиторий GitHub для этого автопилота, вы могли заметить, что весь необходимый код написан на Python. Такой подход используется для всех программных компонентов и модулей автопилота, обсуждаемых на страницах этой книги.

Стр. 71 пробный перевод

Рисунок 53

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 5 глава 3 - шрифт 1/2

main.py

Файл main.py служит основной точкой входа для запуска автопилота. При выполнении он инициализирует очередь команд, запускает описанные выше подпроцессы и помещает в очередь команду INIT для начала процесса инициализации автопилота.

Стр. 72 пробный перевод

Рисунок 54

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 6 глава 3 - шрифт 1/2 Стр. 73 пробный перевод

Рисунок 55

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 7 глава 3 - шрифт 1/2 Затем он ожидает, пока пользователь нажмет Enter, чтобы остановить

основной процесс. Однако, поскольку обычно он запускается как служба на RPi, это условие почти никогда не выполняется.

autopilot.py

Один из немногих файлов, описывающих начальное состояние автопилота, - autopilot.py .

Состояние автопилота, описанное выше, используется во всех операциях автопилота и включает ключевые параметры, которые могут

изменяться во время выполнения программы: • connection - показывает статус соединения с FPV-дроном. Изначально установлено в False до установления соединения. • bee_state - указывает текущий рабочий режим, который может быть либо OFF, либо READY. • roll, pitch, yaw, throttle, aux1, aux2, aux3, aux4 - представляют текущие значения базовых RC-каналов. • battery - текущее напряжение аккумулятора.

Стр. 74 пробный перевод

Рисунок 56

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 8 глава 3 - шрифт 1/2 • rssi и rssi_msg - отображают мощность RC-сигнала и соответствующую текстовую метку. • speed и altitude - текущая скорость и высота. • delivered - указывает, была ли полезная нагрузка сброшена. Изначально установлено в False до ее сброса.

definitions.py

Еще один файл, описывающий настройки автопилота, - definitions.py . Описанные выше настройки автопилота используются во время работы. Они определяют такие конфигурации, как значения RC по умолчанию для режима MSP OVERRIDE, пути к лог-файлам, параметры соединения и многое другое: • companion_computer - задает коммуникационный порт на Raspberry Pi, используемый для подключения к полетному контроллеру (FC). • companion_baud_rate - задает скорость передачи данных

COM-порта, используемого для связи. • logger_name - задает имя логгера, связанного с автопилотом (например, BEE-EPT-UA913). • logger_directory - указывает путь к каталогу, где хранятся лог-файлы. • default_roll, default_pitch, default_yaw, default_throttle, default_servo_aux2 - задают начальные значения RC-каналов, используемые функцией MSP OVERRIDE, когда автопилот берет на

себя управление полетом.

commands.py

Связь между сопутствующим компьютером (автопилотом) и боевым FPV-дроном обрабатывается через MSP-команды, определенные в файле commands.py . Эти команды охватывают ряд функций, включая запросы телеметрии, мониторинг системы, управление полетом и доставку полезной нагрузки (бутылки воды). Стр. 75 пробный перевод

Рисунок 57

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 9 глава 3 - шрифт 1/2 Стр. 76 пробный перевод

Рисунок 58

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 10 глава 3 - шрифт 1/2 Стр. 77 пробный перевод

Рисунок 59

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 11 глава 3 - шрифт 1/2 Стр. 78 пробный перевод

Рисунок 60

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 12 глава 3 - шрифт 1/2 Стр. 79 пробный перевод

Рисунок 61

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 13 глава 3 - шрифт 1/2 Как показано в приведенном выше листинге, он обрабатывает подготовку основного сценария с помощью prepare_go_forward(throttle) , запросы телеметрии через telemetry(target) и мониторинг системы. Он также управляет инициализацией коптера с помощью connect() и настраивает

AUX-каналы с использованием set_row_rc(roll, pitch, yaw, throttle, servo_aux) , обеспечивая автономное управление и работу во время полетов. Каждая команда обычно включает связанный с ней период задержки, который определяет, как долго системный маршрутизатор должен ждать перед выполнением следующей команды. Эти задержки управляются через объект command_delays .

msp_helper.py

Во время автономного полета дрон управляется прошивкой Betaflight через сопутствующий компьютер (Raspberry Pi) с использованием протокола MSP, как описано ранее. Этот протокол предоставляет данные телеметрии о состоянии дрона и обеспечивает управление полетом (yaw, pitch, roll, throttle), а также работу сервомеханизма через переключение AUX-канала. Чтобы инкапсулировать все функции, связанные с низкоуровневым, специфичным для протокола обменом, был реализован модуль msp_helper.py . Стр. 80 пробный перевод

Рисунок 62

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 14 глава 3 - шрифт 1/2 Стр. 81 пробный перевод

Рисунок 63

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 15 глава 3 - шрифт 1/2 Стр. 82 пробный перевод

Рисунок 64

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 16 глава 3 - шрифт 1/2 Как показано в приведенном выше листинге, msp_helper.py инкапсулирует функциональность отправки MSP-команд, выполнения MSP-запросов, вычисления контрольных сумм и чтения MSP-ответов.

Для целей нашего автопилота были реализованы только четыре MSP-команды: MSP_ANALOG , MSP_ALTITUDE , MSP_RC и MSP_SET_RAW_RC . Однако протокол MSP поддерживает множество дополнительных команд помимо этих.

router.py

Как было изложено в разделе «Архитектура», маршрутизатор (также называемый Command Executor) является основным компонентом приложения, отвечающим за обработку всех команд, добавленных в очередь команд.

Стр. 83 пробный перевод

Рисунок 65

Рисунок 66

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 17 глава 3 - шрифт 1/2 Стр. 84 пробный перевод

Рисунок 67

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 18 глава 3 - шрифт 1/2 Стр. 85 пробный перевод

Рисунок 68

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 19 глава 3 - шрифт 1/2 Стр. 86 пробный перевод

Рисунок 69

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 20 глава 3 - шрифт 1/2 Стр. 87 пробный перевод

Рисунок 70

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 21 глава 3 - шрифт 1/2 Стр. 88 пробный перевод

Рисунок 71

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 22 глава 3 - шрифт 1/2 В настоящее время он распознает следующие команды: • INIT - инициализирует FPV-дрон. • MONITOR - получает состояние системы, включая напряжение аккумулятора. • TELEMETRY - получает текущую скорость, высоту и значения RC-каналов.

• DELIVER - выполняет сценарий доставки для Empty Autopilot (полет вперед в течение 2 секунд, затем сброс полезной нагрузки). Каждый метод команды содержит собственную логику, отправляет сообщения соответствующим целям и выполняет соответствующие

MSP-команды. Я хочу подчеркнуть, что текущий режим автопилота управляется функцией command_telemetry_mode_change(telemetry) , которая зависит от значения AUX3. Низкое значение (1000) соответствует режиму OFF, среднее значение (1503) не назначено, а высокое значение (2000) активирует режим READY. Как вы могли заметить, среднее значение (1503) заставляет автопилот выполнять подготовительные шаги для своего основного сценария, хотя ему не назначено отдельное имя режима. Это был намеренный выбор, несмотря на отклонение от предполагаемой архитектуры. Я считаю приемлемым, чтобы код содержал хотя бы одно такое несовершенство - Стр. 89 пробный перевод

Рисунок 72

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 23 глава 3 - шрифт 1/2 внимательный разработчик, скорее всего, заметит и доработает его.

telemetry.py

Как упоминалось ранее, поток Telemetry отвечает за постановку в очередь команд, связанных с мониторингом системы и запросами телеметрии. Он снабжает автопилот критически важными данными, включая текущую высоту, воздушную скорость и значения RC-каналов в реальном времени. Запросы телеметрии добавляются в очередь с 2-секундными интервалами в течение всего времени работы автопилота. Стр. 90 пробный перевод

Рисунок 73

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 24 глава 3 - шрифт 1/2 Как показано в приведенном выше листинге, запросы MSP_ALTITUDE и MSP_ANALOG отправляются каждые 2 секунды для предоставления данных о высоте и воздушной скорости. В отличие от них, значения

MSP_RC - необходимые для переключения режимов и общего управления - запрашиваются каждую секунду, чтобы обеспечить более быструю реакцию и более эффективное управление автономным летательным аппаратом.

empty_pilot.py

Поток Empty Pilot отвечает за постановку в очередь команд, связанных с полетом вперед и доставкой полезной нагрузки. Эти команды добавляются в очередь с интервалами в 1 секунду. Стр. 91 пробный перевод

Рисунок 74

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 25 глава 3 - шрифт 1/2 Стр. 92 пробный перевод

Рисунок 75

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 26 глава 3 - шрифт 1/2 Когда FPV-оператор переключает летательный аппарат в режим READY, дрон летит вперед в течение 2 секунд перед сбросом своей полезной нагрузки (бутылки воды). Это поведение реализовано функциями go_forward() и deliver() в commands.py , описанном ранее.

messages.py

Приложение включает предопределенные сообщения для различных ситуаций и список назначенных целей для получения уведомлений. Сообщения могут направляться в консоль приложения, в лог-файл или в оба места одновременно.

Стр. 93 пробный перевод

Рисунок 76

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 27 глава 3 - шрифт 1/2 Стр. 94 пробный перевод

Рисунок 77

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 28 глава 3 - шрифт 1/2 Стр. 95 пробный перевод

Рисунок 78

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 29 глава 3 - шрифт 1/2 Стр. 96 пробный перевод

Рисунок 79

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 30 глава 3 - шрифт 1/2 Стр. 97 пробный перевод

Рисунок 80

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 31 глава 3 - шрифт 1/2 Этот модуль использует logger.py для записи логов в лог-файл.

logger.py

logger.py обрабатывает запись сообщений логирования в лог-файл, что полезно для анализа полетных операций автопилота. Во время работы автопилот генерирует сообщения для различных целей, включая консоль приложения, одновременно сохраняя сообщения и логи в файлы. Новый лог-файл создается каждый раз при запуске автопилота. Стр. 98 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 32 глава 3 - шрифт 1/2 Стр. 99 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 33 глава 3 - шрифт 1/2 Логи (LOG-файлы) сохраняются в каталоге Logs и могут быть просмотрены в любое время после полета дрона. Подобно черному ящику в самолете, эти файлы помогают анализировать характеристики полета и расследовать любые неожиданные события. Стр. 100 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 34 глава 3 - шрифт 1/2 Рисунок 3-3. LOG-файл Настоятельно рекомендуется оставить logger.py установленным в режим DEBUG, чтобы фиксировать подробную информацию. Такой подход максимально повышает обучение на основе логов и поддерживает непрерывное улучшение вашей системы автопилота с каждым полетом вашего FPV-дрона.

Стр. 101 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 35 глава 3 - шрифт 1/2

КОНФИГУРАЦИЯ

ДРОНА

Хотя мы настроили наш FPV-дрон в предыдущих разделах, в этой части нам нужно дважды проверить все необходимые для этого автопилота настройки в Betaflight (https://app.betaflight.com). Чтобы настроить FPV-дрон для автономного полета, нам нужно назначить следующие режимы соответствующим AUX-каналам на радиоконтроллере: Рисунок 3-4. Раздел Modes в Betaflight Configurator • ARM - используется для постановки моторов на взвод и снятия их со взвода. Стр. 102 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 36 глава 3 - шрифт 1/2 • ANGLE - активирует режим ANGLE, позволяя автопилоту поддерживать стабилизированный полет. • ALTHOLD - поддерживает текущую высоту, предотвращая непреднамеренные изменения высоты во время полета.

• BEEPER - активирует пищалку дрона, полезную для поиска дрона в чрезвычайных ситуациях, например если он потерян в лесистой местности. • MSP OVERRIDE - самый критически важный режим, позволяющий автопилоту взять управление через переключатели, определенные в переменной msp_override_channels_mask . Подробные инструкции по настройке MSP OVERRIDE приведены выше в разделе «MSP OVERRIDE».

Правильная настройка сервомодуля также важна. Как показано на изображении ниже, SERVO 1 настроен на реакцию на переключение AUX2. Обязательно воспроизведите эту настройку в собственной конфигурации.

Рисунок 3-5. Раздел Servos Наконец, чтобы завершить конфигурацию, нам нужно включить и правильно настроить режим MSP OVERRIDE . Для этого требуется настроить переменную msp_override_channels_mask в CLI. Для нашего автопилота значение маски установлено равным 47, что соответствует битовой маске 00101111. Стр. 103 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 37 глава 3 - шрифт 1/2 Рисунок 3-6. CLI Чтобы настроить MSP OVERRIDE , выполните следующие команды: set msp_override_channels_mask = 47

save get msp_override_channels_mask Не забывайте сохранять конфигурацию после каждого изменения с помощью команды save . Стр. 104 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 38 глава 3 - шрифт 1/2

КОНФИГУРАЦИЯ

RPI

Как я упоминал в одной из первых глав, Raspberry Pi (RPi) выступает в нашей конфигурации как сопутствующий компьютер, взаимодействуя с прошивкой Betaflight на полетном контроллере через протокол MSP. Хотя Betaflight изначально не проектировался для автономного полета, в последних версиях появилась мощная функция под названием режим MSP OVERRIDE , которая позволяет создавать автопилоты. Этот автопилот использует данный режим для обеспечения автономной работы.

Следуйте приведенным ниже инструкциям, чтобы установить код автопилота на ваш RPi, что позволит запускать базовый сценарий автономного полета: 1. Загрузите и распакуйте репозиторий (включая папку logs) в

/home/pi/bee-ept на вашем Raspberry Pi. 2. Скопируйте файлы config/run_autopilot.service и config/run_autopilot.sh в /etc/systemd/system и предоставьте права на выполнение: sudo chmod +x /etc/systemd/system/run_autopilot.sh 3. Включите автоматический запуск автопилота при старте RPi: sudo systemctl enable run_autopilot.service reboot 4. После перезагрузки проверьте папку logs, чтобы убедиться, что создаются новые лог-файлы, подтверждающие корректную работу Стр. 105 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 39 глава 3 - шрифт 1/2 системы. Если нет, просмотрите definitions.py и скорректируйте настройки при необходимости. Стр. 106 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 40 глава 3 - шрифт 1/2

ПОЛЕТ С

АВТОПИЛОТОМ

Когда все необходимые настройки и конфигурации завершены, настало время протестировать систему в реальной среде. Я рекомендую начать тест дома без пропеллеров, чтобы убедиться, что сценарий работает - как минимум проверьте, что моторы пытаются вращаться. Когда будете готовы, перейдите в безопасную среду, установите пропеллеры и приступайте к следующему тестовому сценарию: 1. Проверьте AUX2 - убедитесь, что переключение AUX2 управляет закрывающим механизмом сервомодуля.

2. Установите полезную нагрузку - переведите AUX2 в закрытое положение, чтобы закрепить ее. 3. Взведите моторы - используйте AUX1 для взвода и взлетите на безопасную, наблюдаемую высоту.

4. Удерживайте высоту и стабилизируйтесь - примерно на 2 м нажмите AUX4, чтобы удерживать высоту, и переключитесь в режим ANGLE для более безопасного полета на автопилоте. 5. Подготовьте автопилот - переведите AUX3 в среднее положение и удерживайте его несколько секунд, позволяя автопилоту инициализироваться и подготовиться к автономному полету. 6. Включите автономный полет - переведите AUX3 в максимальное положение, чтобы активировать режим MSP OVERRIDE.

Автопилот будет лететь вперед в течение 2 секунд, затем остановится и автоматически сбросит полезную нагрузку через SERVO 1 . 7. Восстановите управление - переключите AUX3 обратно в минимальное положение (OFF), чтобы взять управление дроном и Стр. 107 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 41 глава 3 - шрифт 1/2 подготовиться к посадке. Будьте терпеливы при тестировании вашего первого автономного FPV-дрона в реальной среде. Существует множество подводных камней и возможных проблем, которые могут потребовать вашего внимания и

времени для решения. Это нормально. Мне потребовались месяцы, чтобы настроить и протестировать все, что у вас теперь есть. Стр. 108 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 42 глава 3 - шрифт 1/2

ИТОГИ

К этой главе у вас уже есть все необходимое, чтобы начать собственные исследования и разработку с FPV-дроном на базе Betaflight. Хотя эта реализация еще не включает модуль CV (computer vision), она служит прочным шаблоном для понимания автономного полета и начала разработки систем автопилота. На этой основе вы можете развивать собственные идеи и проекты, создавая пользовательские сборки и сценарии полета. Стр. 109 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 43 глава 3 - шрифт 1/2 Рисунок 3-7. Полет с автопилотом на борту при включенном режиме ALTHOLD Стоит отметить, что большинство FPV-дронов на украинской линии фронта управляются Betaflight. Это означает, что вы можете адаптировать и развивать свой автопилот для поддержки украинской армии в ее усилиях. Далее мы рассмотрим компьютерное зрение, чтобы еще больше

расширить автономную функцию вашего автономного FPV-дрона на базе ИИ. Стр. 110 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 1 пробный перевод ГЛАВА 4.

КОМПЬЮТЕРНОЕ

ЗРЕНИЕ

Автономный полет на основе визуальных данных в значительной степени зависит от моделей компьютерного зрения и алгоритмов следования за целью, поддерживаемых широким набором CV-библиотек и фреймворков (OpenCV, YOLO). В этой главе мы рассмотрим основы компьютерного зрения, сосредоточившись на обнаружении объектов, распознавании и следовании за целью, - предоставив ровно столько практических знаний, сколько необходимо для применения в проектах, предназначенных для миссий без оператора-человека, подобных тем, которые обсуждались ранее в предыдущих главах. Стр. 111 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 2 пробный перевод

Основы

Когда FPV-дрон работает без пилота-человека, он должен опираться на альтернативные методы навигации и управления. Один подход - использование бортовых датчиков, таких как GPS, компас и заранее заданный маршрут миссии, что обычно поддерживается в системах вроде ArduPilot. Другой подход - навигация на основе визуальных данных, при которой дрон использует визуальные признаки, такие как визуальная одометрия, SLAM (Simultaneous Localization and Mapping - одновременная локализация и построение карты) или оптический поток, чтобы определять свое положение и движение. На линии фронта или в помещениях сигналы GPS часто недоступны или намеренно подавляются. В таких случаях единственный надежный метод навигации - Computer Vision, компьютерное зрение. Например, видеокамера в

сочетании с OpenCV или другими моделями на основе зрения может дать дрону способность воспринимать окружение, распознавать объекты и ориентироваться в реальном времени. Такая техника называется vision-based autonomy - автономность на основе визуальных данных. В перспективе эти методы можно расширить передовыми алгоритмами, такими как обнаружение объектов на основе глубокого обучения, распознавание визуальных ориентиров и отслеживание цели, что позволит дронам эффективно работать в средах, где навигационные сигналы недоступны или подавлены, и выполнять миссии с высокой степенью самостоятельности. Иными словами, нам нужно дать дрону способность “видеть” как свое текущее положение, так и предполагаемое направление движения. Для этого мы интегрируем модель компьютерного зрения на основе YOLO для обнаружения

объектов, используем OpenCV для захвата и обработки видеокадров и реализуем специальный алгоритм Target Стр. 112 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 3 пробный перевод Following , который позволяет дрону корректировать свое движение в реальном времени в соответствии с обнаруженной целью.

Начнем с OpenCV/YOLO, чтобы обнаруживать и распознавать цель.

OpenCV и YOLO

OpenCV OpenCV (Open Source Computer Vision Library) - широко используемая библиотека с открытым исходным кодом для компьютерного зрения и обработки изображений в реальном времени. Она предоставляет инструменты для таких задач, как захват и обработка видеопотоков, обнаружение границ и форм, выполнение отслеживания объектов и применение преобразований изображений. Ее универсальность и интеграция с Python делают ее стандартным выбором для робототехники, дронов и проектов на базе ИИ, где требуется быстрая и эффективная обработка кадров. Официальный сайт: https://opencv.org Стр. 113 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 4 пробный перевод

YOLO YOLO (You Only Look Once) - семейство моделей глубокого обучения, предназначенных для быстрого и точного обнаружения объектов. В отличие от традиционных методов, которые сканируют изображение несколько раз, YOLO анализирует все изображение за один проход, что делает ее способной выполнять обнаружение в реальном времени на видеопотоках. Она идентифицирует объекты, назначает им классы (например, person, car, bottle) и выдает ограничивающие рамки с уровнями уверенности. Этот баланс скорости и точности делает YOLO особенно хорошо подходящей для автономных дронов и робототехнических приложений. Официальный сайт: https://docs.ultralytics.com/models Как вы, возможно, уже догадались, мы будем использовать оба этих фреймворка внутри нашего автопилота, чтобы дать

FPV-дрону способность “видеть” свою цель и определять, куда ему нужно двигаться дальше. Технические детали работы с YOLO и OpenCV в Python, вместе с реализацией алгоритма Target Following, будут рассмотрены в следующем разделе.

Следование за целью

В автономной навигации дронов один из самых практичных подходов для наведения в реальном времени - visual servoing , визуальное сервирование, при котором система управления напрямую опирается на признаки изображения, полученные бортовой камерой. В нашем случае мы используем вариант, известный как Image-Based Visual Servoing (IBVS), визуальное сервирование на основе изображения, который интерпретирует положение и размер

обнаруженного объекта внутри видеокадра, чтобы формировать команды движения для дрона. Стр. 114 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 5 пробный перевод Объединяя YOLO для обнаружения объектов и OpenCV для обработки кадров, дрон непрерывно корректирует свое положение и ориентацию, чтобы удерживать цель в центре

и на контролируемом расстоянии. Этот метод не пытается восстановить полные 3D-координаты, а вместо этого использует относительные визуальные признаки - такие как центр и площадь ограничивающей рамки - в качестве обратной связи для управления, что делает его одновременно легковесным и эффективным для реальных перемещений FPV-дрона. Стр. 115 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 6 пробный перевод Стр. 116 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 7 пробный перевод Стр. 117 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 8 пробный перевод Как видно из приведенного выше кода, он использует модуль следования за целью на базе YOLOv8: OpenCV получает живое видео с USB-камеры, YOLO обнаруживает людей, а пользовательские функции преобразуют результаты обнаружения в навигационные команды (NED + yaw) для FPV-дрона. Функция get_camera_image() захватывает один кадр с USB-видеокамеры по умолчанию (cv2.VideoCapture(0)), обрабатывает его моделью YOLOv8n, ограниченной classes=[0] (только обнаружение человека), и формирует аннотированное изображение с ограничивающими рамками, сохраняемое в папку logs/ . Она возвращает результаты обнаружения YOLO для дальнейшей навигационной логики Стр. 118 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 9 пробный перевод или пустой результат, если видеопоток с камеры не удался. Функция get_ned_coordinates(x1, y1, x2, y2, altitude) вычисляет центр ограничивающей рамки обнаруженной цели, нормализует ее положение относительно кадра камеры и преобразует его в координаты North-East-Down (NED), масштабированные по высоте полета дрона. Она также применяет коррекцию высоты, чтобы обеспечить правильное управление по оси Z. Функция get_yaw_angle(x1, y1, x2, y2) определяет, насколько далеко цель расположена по горизонтали от центра кадра камеры, и преобразует это смещение в угол yaw с использованием фиксированного коэффициента преобразования, предоставляя поворот, который дрон должен выполнить, чтобы смотреть прямо на цель.

Функция get_target_threshold_area(x1, y1, x2, y2) вычисляет площадь ограничивающей рамки обнаруженной цели и сравнивает ее с пороговой площадью, заданной как процент от общего размера кадра, устанавливая, достаточно ли велика цель на изображении, чтобы считаться “достаточно близкой”. Функция is_target_close_enough(x1, y1, x2, y2) проверяет, превышает ли площадь ограничивающей рамки обнаруженной цели заранее заданную пороговую площадь, и возвращает булево значение, позволяя автопилоту решить, находится ли дрон на достаточном расстоянии от цели. Функция get_ned_target(x1, y1, x2, y2, altitude) объединяет

координаты NED, угол yaw и размер ограничивающей рамки в полную навигационную инструкцию для дрона. Она масштабирует продольное расстояние с использованием отношения между площадью цели и пороговой площадью и применяет коэффициент сближения для управления движением вперед. Функция get_altitude_correction(altitude) вычисляет, насколько дрон должен скорректировать свою высоту, чтобы поддерживать заранее заданную высоту следования. Стр. 119 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 10 пробный перевод Она возвращает значение коррекции, одновременно гарантируя, что корректировки остаются в безопасных пределах, чтобы избежать чрезмерных изменений. Рисунок 4-1. YOLO распознает человека на склоне

Как показано на рисунке, человек, движущийся вверх по склону, был обнаружен моделью YOLO как цель. Приведенный выше код вычисляет центр ограничивающей рамки (Red) и соответствующим образом корректирует движение FPV-дрона в координатах NED (North, East, Down), как показано на иллюстрации. NED (4.21, -1.83, -2.29) означает, что FPV-дрон должен быть перемещен на 4.21 м на север (North), на 1.83 м на запад

(противоположно East из-за минуса) и на 2.29 м вверх (противоположно Down из-за минуса) от своего текущего положения, чтобы следовать за целью. Важно отметить, что универсальная модель YOLO

( yolov8n.pt ) может обнаружить только наличие человека, но не его направление. Более того, приведенный код работает только со стационарными целями и не может обрабатывать движущиеся.

Чтобы обеспечить распознавание и самой цели, и ее направления, необходимо разработать пользовательскую CV-модель (Computer Vision), а приведенный выше код должен быть соответствующим образом адаптирован.

Стр. 120 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 11 пробный перевод

Пользовательская CV-модель

Базовая модель компьютерного зрения ( yolov8n.pt ) может обнаруживать набор заранее заданных объектов, таких как 0 - person , 41 - tennis ball , 56 - chair , 63 - laptop , 67 - cell phone и т. д. Для большинства хоббийных сценариев этого набора классов по умолчанию достаточно. Однако что, если вы хотите, чтобы ваша модель YOLO распознавала более специфические случаи - например, не просто обнаруживала человека, а различала, одет ли этот человек в военную

форму, или определяла, движется ли его нога вправо или влево? В таких случаях требуется специально обученная модель YOLO. Независимо от того, хотите ли вы обнаруживать людей, животных или даже танки с уникальными символами, нанесенными на корпус, вы можете создать специализированную модель, адаптированную под вашу задачу. Ключевое требование - набор размеченных

изображений, который включает примеры объектов или поведения, которые модель должна распознавать. Рисунок 4-2. YOLO распознает самолеты на авиабазе противника Стр. 121 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 12 пробный перевод Создание такого набора данных включает сбор релевантных изображений и последующую разметку: рисование

ограничивающих рамок и назначение правильных меток. Когда ваш набор данных готов, вы можете дообучить YOLO на нем, что позволит модели обнаруживать не только общие объекты, но и очень специфические объекты, релевантные вашему приложению. В этом разделе мы пошагово пройдем процесс создания пользовательской модели YOLO, адаптированной под ваши конкретные потребности. Давайте погрузимся в работу.

Как вы, вероятно, заметили, я поклонник авиации, поэтому создал пользовательский набор данных под названием “Airplanes”. Представьте, что вы строите решение, которое должно доставить бутылку воды (или другую полезную нагрузку) к фюзеляжу самолета на взлетно-посадочной полосе, - здесь мы пройдем через такой вариант использования. Хочу подчеркнуть: YOLOv8 - современная передовая

модель глубокого обучения для обнаружения объектов. Вместо того чтобы по одному сканировать небольшие части изображения, она делит весь кадр на сетку и за один проход предсказывает ограничивающие рамки вместе с вероятностями классов для каждой области. Это делает ее одновременно быстрой и точной - критическое преимущество для приложений реального времени, таких как навигация дронов.

Roboflow

Перед обучением такой модели нам нужен хорошо подготовленный набор данных, состоящий из изображений и соответствующих им меток, которые указывают, где расположены объекты и что они собой представляют.

Создание такого набора данных с нуля возможно, но требует много времени. К счастью, существуют общедоступные коллекции, которые охватывают широкий Стр. 122 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 13 пробный перевод диапазон объектов и могут служить прочной основой. В этом разделе мы воспользуемся одним из таких ресурсов, используя Roboflow - платформу, предназначенную для упрощения подготовки наборов данных и управления ими. Рисунок 4-3. Набор данных AeroSat на roboflow.com Как показано на изображении выше, первый шаг - найти набор данных, соответствующий требованиям проекта. В этом примере я выбрал YOLOv8 в качестве типа модели, установил тип проекта Object Detection и использовал “aerial” как поисковое ключевое слово. После этого платформа вернула широкий выбор наборов данных. Из этого списка я выбрал тот, который лучше всего подходил для наших потребностей: он содержит 1 192 изображения и 1 класс.

Стр. 123 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 14 пробный перевод Рисунок 4-4. Загрузка набора данных После подтверждения того, что набор данных соответствует требованиям нашей миссии, следующий шаг - скачать его в правильном формате экспорта. Для этого примера я выбрал формат YOLOv8, поскольку именно с этим фреймворком мы работаем на протяжении всего проекта. Рисунок 4-5. Экспорт в формат YOLOv8 как ZIP-файл Выберите ZIP как формат для загрузки набора данных, как показано на [Рисунок 4-5], и продолжите выполнение предоставленных инструкций. После завершения загрузки распакуйте архив, чтобы изучить его структуру. Обычно вы найдете три папки - train , test и valid - вместе с несколькими файлами, включая data.yaml , который

определяет набор данных и его классы. Стр. 124 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 15 пробный перевод

Поскольку мы работаем с YOLOv8, следующий шаг - перейти в Ultralytics Hub (https://hub.ultralytics.com). Там зарегистрируйтесь (если вы еще этого не сделали), создайте новый проект и модель и загрузите свой набор данных. Это

подготовит все для процесса обучения. Рисунок 4-6. Создание нового проекта Как показано на [Рисунок 4-6], я создал новый проект с именем AER_AIR_04s , добавил короткое описание - Aircraft detection at the airbase using aerial imagery - и даже загрузил пример изображения, чтобы было проще идентифицировать этот проект среди других. Вы можете следовать тому же подходу.

Затем перейдите в раздел Datasets и загрузите ZIP-файл из вашей папки Downloads . Когда появится запрос, установите тип набора данных Detect , затем укажите имя набора данных и описание, после чего нажмите Create и завершите загрузку. После этого вы попадете в список наборов данных, где ваш новый добавленный набор данных появится рядом с уже существующими. Стр. 125 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 16 пробный перевод Просто откройте его подробнее, просмотрите набор данных, переходя по изображениям и их меткам, затем продолжите, нажав кнопку Train Model , чтобы начать обучение YOLOv8. Рисунок 4-7. Обучение модели YOLOv8 На следующем шаге выберите свой проект из списка, введите имя модели (например, YOLOv8sAir ), выберите архитектуру YOLOv8s , оптимизированную для скорости, и затем нажмите Continue . Ultralytics Hub предлагает несколько вариантов обучения моделей; однако в этом случае для процесса обучения мы будем использовать Google Colaboratory (обычно называемый Google Colab).

Обучение модели

Просто выберите соответствующую вкладку Google Colab . Вы увидите ключ аутентификации и URL, похожий на следующий, для обучения модели. URL: https://hub.ultralytics.com/models/BN8V8tAlpOt6thjZKq6V Просто скопируйте весь код и вставьте его в свой Google Colab. Затем перейдите в меню Runtime , выберите Change Стр. 126 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 17 пробный перевод runtime type и выберите T4 GPU , чтобы ускорить обучение с помощью NVIDIA T4 GPU в качестве ускорителя, как показано на рисунке ниже. Рисунок 4-8. Ускоритель Nvidia Tesla T4 GPU для обучения модели Как только вы закончите с этим, вы можете запустить процесс обучения модели YOLOv8 так же, как обычно

запускаете свои скрипты Colab. Процесс обучения для такого большого набора данных займет приблизительно 3-4 часа. Однако вы можете отслеживать прогресс не только в листинге Google Colab, что может быть не слишком удобно, но и с помощью специальной шкалы прогресса на веб-странице модели. Рисунок 4-9. Процесс обучения в Ultralytics Hub Стр. 127 пробный перевод

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 18 пробный перевод Как упоминалось ранее, процесс может занять некоторое время. Когда он завершится, перейдите на вкладку Deploy и скачайте итоговый файл модели ( *.pt ).

Использование модели

Затем эту модель можно использовать с пакетом YOLOv8 для обнаружения объектов на любом устройстве - включая Raspberry Pi - или интегрировать в ваши интеллектуальные приложения, позволяя идентифицировать объекты на авиабазе или в поле, даже с разведывательных дронов, для вашей конкретной миссии (потребностей). Этот код загружает нашу предварительно обученную модель YOLOv8 из PyTorch-файла yolov8sair.pt , использует ее для выполнения обнаружения объектов на изображении Aerial_AirBase.jpg , а затем визуализирует результаты, рисуя ограничивающие рамки и метки на обнаруженных объектах (см. пример на [Рисунок 4-2]). Затем он отображает аннотированное изображение с помощью функции OpenCV cv2_imshow , позволяя нам увидеть, какие объекты были распознаны на изображении.

Интеграция с автопилотом

Созданная вами модель компьютерного зрения (CV) может быть интегрирована либо на FPV-дрон, работающий под Betaflight, либо на наземную робототехническую платформу, работающую с ArduRover. Алгоритмы и техники, которые вы будете использовать, зависят от множества факторов: как движется транспортное средство, находится ли оно в воздухе или на земле, доступны ли данные GNSS или компаса, а также от многих других соображений, которые будут влиять на итоговое решение. Стр. 128 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 19 пробный перевод Например, для настройки автопилота, которую мы обсудим в главе 5 “Симуляция” и которая работает на ArduPilot в воздухе (ArduCopter), добавление CV-модуля из этой главы относительно прямолинейно. Причина в том, что для

управления транспортным средством он использует IBVS и координаты NED. Если вы попытаетесь добавить тот же CV-модуль к дрону на базе Betaflight, модуль все равно можно использовать, но алгоритм следования за целью должен будет измениться. Реализация рабочего решения потребует множества экспериментов, поскольку вам нужно будет управлять Yaw, Throttle, Roll и Pitch, обычно через режим

MSP_OVERRIDE , который в настоящее время является единственным практическим способом добиться автономного полета на Betaflight. Для ArduRover CV-модуль можно применять аналогично подходу, рассмотренному в этой главе, с главным исключением: ось Down (D) не используется, поскольку ровер всегда находится на земле. Во всех случаях внимательно учитывайте динамику транспортного средства при интеграции CV-модуля с вашим автопилотом. Итоговое решение будет различаться не только в зависимости от среды, но и от типа транспортного средства - будь то ровер, самолет или коптер.

Стр. 129 пробный перевод AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 1 пробный перевод ГЛАВА 5.

СИМУЛЯЦИЯ

Запуск модели компьютерного зрения (CV) непосредственно на реальном FPV-дроне для автономного полета и отладки может быть дорогим и рискованным. Более практичный подход - сначала разработать и проверить решение в симулированной среде. Во время моих экспериментов с Betaflight я не нашел надежного симулятора, который эффективно справлялся бы с такими задачами. В отличие от этого, прошивка ArduPilot предлагает несколько зрелых вариантов симуляции, и одним из лучших вариантов для разработки на основе CV является MS AirSim. В этой главе я объясню, как применить методы CV, рассмотренные в предыдущей главе, к коптеру на базе ArduPilot в симуляционной среде AirSim.

Среда

Сначала, перед запуском симуляции, нужно подготовить подходящую среду, предназначенную для разработки и отладки задач компьютерного зрения, отслеживания цели и полного рабочего процесса автопилота. Эта среда будет основана на Microsoft AirSim, ArduCopter SITL и AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 2 пробный перевод Mission Planner, работающих под Linux.

Эта глава вдохновлена репозиторием GitHub, который я опубликовал ранее: https://github.com/under0tech/autopilot_bee_sim Для разработки и отладки требуется достаточно мощный компьютер, способный выдержать требования Microsoft AirSim. В моем случае использовалась машина с Ubuntu 23.10, 16-ядерным процессором и 16 GB RAM. После подготовки достаточно мощного компьютера

следующий шаг - установить необходимое программное обеспечение:

• Microsoft AirSim -

https://github.com/Microsoft/AirSim/releases

• ArduCopter SITL -

https://ardupilot.org/dev/docs/sitl-with-airsim.html

• Mission Planner - https://ardupilot.org/planner

Процесс установки и устранения неполадок может быть несколько сложным, но я уверен, что эта задача вам по силам. Я предполагаю, что вы установите программное обеспечение в каталог ~/Apps . После этого рекомендую скопировать файлы из папки env репозитория в соответствующие места назначения. Из папки env скопируйте следующие файлы:

• gc.sh -> ~/Apps/MissionPlanner

• settings.json -> ~/Documents/AirSim

• run.py -> ~/Apps/AirSim

Кратко рассмотрим их.

settings.json

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 3 пробный перевод Конфигурационный файл settings.json указывает AirSim симулировать мультикоптер с использованием ArduPilot

SITL, запущенного локально, с обменом по UDP на портах 9002/9003 и стартом из заданной реальной GPS-точки. {

"SettingsVersion": 1.2, "LogMessagesVisible": true, "SimMode": "Multirotor", "OriginGeopoint": {"Latitude": -35.363261, "Longitude": 149.165

"Vehicles": {"Copter": {"VehicleType": "ArduCopter", "UseSerial "LocalHostIp": "127.0.0.1", "UdpIp": "127.0.0.1", "UdpPort": } Этот JSON-файл определяет симуляционную среду и

настройку транспортного средства. SettingsVersion указывает версию формата конфигурации. LogMessagesVisible: true включает отображение сообщений журнала. SimMode: "Multirotor" задает режим симуляции мультикоптера. OriginGeopoint задает начальную географическую точку - широту, долготу и высоту, соответствующие реальному месту около Канберры, Австралия. Раздел Vehicles описывает симулируемый аппарат Copter : тип ArduCopter , соединение не через serial, а через localhost и UDP-порты 9003/9002.

run.py

Это код запуска, который автоматизирует старт симуляционной среды Microsoft AirSim в Linux. import subprocess def run_process(command): print(f"Running command: {command}") subprocess.Popen(command, shell=True) if __name__ == "__main__": commands = [

"~/Apps/Simulator/AirSimNH/LinuxNoEditor/AirSimNH.sh", "cd ~/Apps/ardupilot && sim_vehicle.py -v ArduCopter -f air "cd ~/Apps/MissionPlanner && ./gc.sh" ]

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 4 пробный перевод for command in commands: run_process(command)

Этот лаунчер запускает три ключевых компонента параллельно: Microsoft AirSim (сцена Neighborhood), ArduCopter SITL (настроенный для AirSim) и Mission Planner. Скрипт дает удобный способ одним действием поднять весь симуляционный стек без ручного запуска каждого инструмента в отдельном терминале.

gc.sh

Bash-скрипт запускает Mission Planner в Linux через Mono - фреймворк, позволяющий запускать Windows-приложения в Linux. #!/bin/bash mono MissionPlanner.exe По сути, этот скрипт автоматизирует запуск Mission Planner без необходимости вручную вводить команду в терминале.

Запуск AirSim

Для запуска среды используйте следующие команды в терминале Linux: cd ~/Apps/AirSim python3 run.py Если все три программы стартовали успешно, вы должны увидеть коптер в симуляторе AirSim, как показано на рисунке ниже. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 5 пробный перевод Рисунок 5-1. Коптер в Microsoft AirSim На этом настройка среды завершена; переходим дальше.

АВТОПИЛОТ ARDUCOPTER

В отличие от автопилота Betaflight, обсуждавшегося в главе 3, автопилот ArduCopter может работать не только в симулированной среде, но и автономно интегрировать модель компьютерного зрения (CV), как описано в главе

4, чтобы находить и отслеживать цели. Он может приближаться к целям, готовиться к атаке, выполнять атаку (например, сбрасывая полезную нагрузку) и безопасно возвращаться для завершения миссии - все

это без оператора на маршруте. Система в основном работает в автоматическом режиме и также может обнаруживать антидронные системы, переходя в режим KILL для нейтрализации угроз при необходимости.

Режимы

• OFF - автопилот неактивен и ожидает ввода

оператора для перехода в другой режим. Активны AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 6 пробный перевод только мониторинг телеметрии и логирование.

• READY - дополнительно к функциональности OFF

включается обнаружение антидронной системы, что дает возможность перейти в режим KILL при обнаружении угрозы.

• KILL - автоматически включается при выявлении

антидронной угрозы. Автопилот выполняет задачи, эквивалентные режиму DESTROY.

• DESTROY - автопилот активно ищет и

нейтрализует цели. Он активирует бортовую камеру, сканирует цели, захватывает их при обнаружении и переходит к уничтожению. Вернитесь к разделу “Схема” в главе 1, чтобы сравнить

эти режимы с абстрактными режимами, введенными там: они очень похожи.

Архитектура

Как упоминалось ранее, эта глава вдохновлена открытым проектом, который я ранее разработал и поделился с FPV-сообществом на GitHub: https://github.com/under0tech/autopilot_bee_sim Этот автопилот имеет многопоточную архитектуру. В основе находится очередь команд и маршрутизатор команд, отвечающие за обработку всех команд в очереди. Маршрутизатор работает в собственном потоке

Router, а два дополнительных потока - Telemetry и Terminator - отвечают за добавление команд в очередь. Поток Telemetry добавляет в очередь команды, связанные с мониторингом системы и запросами телеметрии, предоставляя автопилоту критически важные данные, такие как высота и скорость аппарата. Запросы телеметрии вставляются с интервалом 4 секунды.

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 7 пробный перевод Поток Terminator, в свою очередь, добавляет команды, позволяющие автопилоту находить, отслеживать и нейтрализовать цели; новые команды вставляются каждую секунду. Во время работы автопилот использует несколько подмодулей, включая компьютерное зрение с YOLOv8 от Ultralytics, модуль Microsoft AirSim для уведомлений и видеопоток камеры из симулятора. Команды MAVLink применяются для управления FPV-дроном и отправки уведомлений в Mission Planner.

PYTHON-КОД

Перед использованием рассмотрим Python-код всех модулей программы (автопилота) с кратким объяснением каждого. Для более эффективного обучения рекомендуется заранее скачать и развернуть этот код по ссылке GitHub выше.

main.py

Главный файл автопилота запускает основной процесс, инициализируя ключевые компоненты и создавая необходимые потоки. Он запускает три потока: Executor - обрабатывает команды из очереди маршрутизатора; Telemetry - периодически добавляет запросы телеметрии; Eliminator/Terminator - добавляет команды отслеживания цели и атаки. Код помещает начальную команду INIT в очередь, затем ожидает нажатия Enter, после чего останавливает основной процесс автопилота и все потоки.

autopilot.py

Словарь состояния работает как централизованный трекер статуса автопилота, позволяя потокам и модулям AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 8 пробный перевод считывать и обновлять состояние дрона в реальном времени. Поля: connection - есть ли подключение к FPV-дрону; bee_state - текущий режим (OFF, READY, KILL, DESTROY); battery - уровень батареи; speed - текущая скорость; altitude - высота; ruined - флаг завершения аппарата или миссии; frame - последний кадр камеры; target_lost - счетчик последовательных циклов потери цели.

definitions.py

Этот файл задает параметры конфигурации: MAVLink-соединение, модель зрения, камеру и поведение отслеживания. Ключевые переменные: mavlink_url - TCP-подключение к localhost:5762; logger_name - имя для логов; vision_model - путь к YOLOv8; vision_classes - классы распознавания (например, 2 - car, 7 - truck, 0 - person); video_source - индекс камеры; camera_width/height - разрешение кадров; airsim_camera - выбор камеры AirSim или реальной; following_altitude - высота следования; target_lost_limit - предел потери цели.

commands.py

Файл commands.py предоставляет все высокоуровневые действия MAVLink для автопилота: телеметрию, навигацию, отслеживание цели, маневры атаки и аварийный отход. Каждая функция следует паттерну: подключиться к аппарату, отправить команду, дождаться выполнения. Основные функции: connect(), disconnect(), send_message_to_gc(), copter_init(), land(), telemetry(), fallback(), prepare_for_attack(), attack(), follow_target() и target_search(). Все они взаимодействуют с FPV-дроном AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 9 пробный перевод через MAVLink с помощью Python-пакета pymavlink. В отличие от этого, дроны Betaflight используют протокол MSP, что подчеркивает ключевое различие двух систем автопилота.

vision.py

Компьютерное зрение - основа процесса отслеживания цели и “глаза” автопилота. В реальном времени оно распознает объекты, позволяя системе обнаруживать, сопровождать и поражать цели до их нейтрализации.

Здесь используется легкая модель yolov8n.pt от Ultralytics, сфокусированная на классе Car (ID: 2). Единственное важное отличие от главы 4 состоит в том, что при vars.airsim_camera=True система берет кадры из

текущего вида симулятора AirSim.

router.py

Router (Command Executor) - ядро приложения. Он управляет всеми командами в очереди и выполняет их. Команды: INIT - инициализация; MONITOR - контроль системного статуса и батареи; TELEMETRY - получение скорости, высоты и режима; DESTROY - логика поиска цели, следования, подготовки, сброса полезной нагрузки, отхода и завершения миссии; LAND - посадка.

telemetry.py

Поток Telemetry каждые 4 секунды помещает в очередь команды мониторинга и телеметрии. Они снабжают автопилот данными о высоте, скорости, батарее и текущем режиме. Команды MAVLink: MONITOR(SYS_STATUS) - статус и батарея; TELEMETRY(SERVO_OUTPUT_RAW) - значения сервоприводов для определения режима; AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 10 пробный перевод TELEMETRY(LOCAL_POSITION_NED) - позиционные данные для скорости и высоты.

terminator.py

Поток Terminator каждые 2 секунды добавляет команды поиска, отслеживания и устранения цели, но только если автопилот находится в KILL или DESTROY, полезная нагрузка еще не сброшена и дрон в воздухе.

После установки stop_command поток записывает время остановки в лог. Команды затем исполняются Router-потоком через ранее рассмотренные модули MAVLink и Vision.

messages.py

Как и автопилот Betaflight, система на базе ArduPilot содержит предопределенные сообщения для различных ситуаций и список целей вывода: консоль приложения, Ground Control Station (Mission Planner), debug-консоль

AirSim и файлы логов, где сохраняется полный путь отслеживания цели.

logger.py

Модуль logger.py добавляет уведомления в log-файл, создавая детальную запись для анализа полетных операций автопилота. Новый файл журнала автоматически создается при каждом запуске автопилота. Логи полета являются ценным ресурсом для анализа полетов и миссий. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 11 пробный перевод

Рисунок 5-3. Путь следования за целью (PNG-файлы с кадрами) Как показано на изображении выше, каждый кадр, полученный модулем Vision во время миссии FPV-дрона, сохраняется в папке Logs и снабжается распознанным классом и уровнем confidence для каждого найденного объекта. Эти логи позволяют подробно анализировать и оценивать работу системы Vision.

Рисунок 5-4. LOG-файл после миссии Я настоятельно рекомендую оставлять logger в режиме DEBUG, чтобы получать максимально подробную информацию. Такой подход значительно поддержит разработку вашей системы автопилота, позволяя непрерывно улучшать ее после каждого полета. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 12 пробный перевод

СИМУЛИРОВАННЫЙ

ПОЛЕТ

Теперь, когда вы знакомы с каждой частью кода и понимаете общую концепцию и подход, пора запустить симуляцию и посмотреть ее в действии. Сначала убедитесь, что установлены все необходимые

Python-пакеты из файла requirements.txt: pip install -r requirements.txt Затем запустите AirSim и все зависимости, следуя шагам из раздела Running AirSim, чтобы подготовить среду к

первому симулированному полетному эксперименту. Для подготовки к симуляции откройте Mission Planner и убедитесь, что коптер правильно настроен:

• Перейдите на вкладку Actions и переключите

коптер в режим Guided. • На вкладке Actions выполните ARM моторов. • Выполните взлет на высоту 4 m.

• На вкладке Servo/Relay установите Low для servo 5,

чтобы указать, что автопилот находится в режиме OFF.

• На вкладке Servo/Relay установите High для servo 6,

чтобы указать, что полезная нагрузка взведена и находится на борту.

• Перейдите в окно AirSim и подтвердите, что коптер

на высоте 4 m. Нажмите Ctrl+3 для показа вида фронтальной камеры, которую автопилот использует для отслеживания цели. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 13 пробный перевод Рисунок 5-5. Переключение в режим GUIDED Рисунок 5-6. ARM моторов FPV-коптера AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 14 пробный перевод Рисунок 5-7. Взлет на высоту 4 m Рисунок 5-8. Настройки Servo/Relay для servo 5/6 Если все настройки выше корректны, вы готовы запустить автопилот. Запустите его командой: python3 main.py Теперь можно отслеживать активность автопилота в терминале и log-файлах. Изначально автопилот стартует в режиме OFF, поэтому не будет обнаруживать цели и следовать за ними. Чтобы включить отслеживание цели, установите servo 5 в High, переведя систему в режим DESTROY. Затем перейдите в окно AirSim и наблюдайте работу автопилота. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 15 пробный перевод Рисунок 5-9. Автопилот в действии. Миссия завершена

Как запрограммировано, после переключения в режим DESTROY автопилот сначала пытается обнаружить цель (автомобиль). Когда автомобиль найден, он начинает следовать за ним. Когда дрон оказывается достаточно близко, он готовится к атаке, выполняет ее и затем выполняет маневр fallback. На этом миссия считается завершенной. Этот простой сценарий служит шаблоном для старта.

Реальные применения могут быть намного сложнее и надежнее - все зависит от ваших требований и творческого подхода.

Итоги

К этому моменту у вас есть все необходимое для разработки и отладки автопилота на базе ArduPilot в симулированной среде, оснащенного компьютерным зрением и возможностями target-following.

Наслаждайтесь этим! AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 16 пробный перевод ГЛАВА 6.

ROVER

Еще один хороший практический способ разрабатывать и отлаживать автопилоты с бортовым компьютерным зрением - использовать Ground Robotics Platform, например автомобиль или rover, работающий на

ArduRover. В этой главе мы построим 4WD rover, оснащенный четырьмя TT-моторами и Raspberry Pi 5. Этот rover сможет следовать за целью с использованием модели YOLOv8 как на улице при поддержке GPS и

компаса, так и в помещениях без покрытия GNSS. Материал главы 6 дает полные пошаговые инструкции по созданию этой автономной наземной платформы с нуля - от схем подключения до испытаний indoors и outdoors.

Обзор

Наземные робототехнические платформы для детей часто используют популярные 4WD chassis kits с ESP32-контроллером и несколькими датчиками, позволяя выполнять такие задачи, как обнаружение и объезд препятствий. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 17 пробный перевод Рисунок 6-1. Chassis Robot на базе CV следует за человеком

В этой главе мы выйдем за пределы образовательных наборов. Вместо контроллеров игрушечного класса будет применен стандартный FPV flight controller (F405). Такой подход делает платформу более универсальной и ближе к реальным Ground Robotic Systems (GRPs), способным работать в помещениях без GNSS и на улице с GPS и компасом на борту.

Схема подключения

Схема реализации Rover непроста: она включает множество компонентов, и уместить их на одной странице довольно трудно, но я постарался сделать это максимально хорошо. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 18 пробный перевод Рисунок 6-2. Фрагмент схемы подключения Ниже приведены подробные инструкции по подключению компонентов, показанных на схеме выше:

• Battery Pack (6S2P): подключается к flight

controller (FC) через 8-проводной JST-разъем на передней стороне. Провод BAT -> +, GND -> -. На вход питания должен быть установлен конденсатор 1000 μF. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 19 пробный перевод

• XL4015 DC-DC Converter: настроить выход 6.5 V /

3 A для питания драйверов моторов. B+/B- обоих драйверов BTS7960 подключаются к VOUT/GND конвертера XL4015.

• TT Motors (Left Side): подключаются параллельно

к драйверу BTS7960 левой стороны через площадки M+ и M-.

• TT Motors (Right Side): подключаются

параллельно к драйверу BTS7960 правой стороны через площадки M+ и M-.

• BTS7960 (Left Side): подключается к FC через

8-проводной JST-разъем: S1 -> RPWM, S2 -> LPWM; 5 V -> VCC, GND -> GND; R_EN/L_EN должны быть притянуты к VCC, чтобы драйвер постоянно был включен.

• BTS7960 (Right Side): подключается к FC: S3 ->

RPWM, S4 -> LPWM; 5 V -> VCC, GND -> GND; R_EN/L_EN к VCC.

• ELRS Receiver: подключается к Dake FPV F405 FC

через 4-проводной JST-разъем или напрямую: T2 -> RX, R2 -> TX, GND -> GND, 5 V -> VCC.

• GPS Module (BN-220): 5 V -> VCC, GND -> GND,

T1 -> RX, R1 -> TX.

• Compass (QMC5883L): SDA -> SDA, SCL -> SCL,

5 V -> VCC, GND -> GND. • Buzzer: BZ+ -> VCC, BZ- -> GND.

• 3DR Telemetry Module: T4 -> RX, R4 -> TX, GND

-> GND, 5 V -> VCC.

• Raspberry Pi 5: подключается к FC через

6-проводной JST-разъем на нижней стороне: T5 -> UART0_RXD, R5 -> UART0_TXD, GND -> GND.

RPi питается отдельным 5 V 5 A DC-DC-конвертером, подключенным к battery pack

через XT60. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 20 пробный перевод Из-за сложности системы я не включаю полную принципиальную схему. Некоторые компоненты - например отдельный DC-DC-конвертер для Raspberry Pi или диод Шоттки на выходе XIAO 15 - на схеме не показаны, но требуются для корректной работы устройства. Я уверен, что вы сможете добавить их самостоятельно. Каждый эксперимент проведет сборщика через процесс подключения шаг за шагом, помогая полностью понять и конструкцию, и итоговый результат.

КОМПОНЕНТЫ

Если вы уже прошли главу 2, у вас есть опыт подбора FPV-компонентов. Здесь кратко рассмотрим ключевые компоненты, необходимые именно для rover, который по сути также может работать как FPV-дрон при оснащении FPV-камерой и VTX.

4WD Chassis Set

Чтобы начать сборку Ground Robotics Platform (Rover), нужна прочная основа. Один из самых распространенных вариантов - 4WD Chassis Robot Kit, который мы и используем. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 21 пробный перевод Рисунок 6-3. Набор 4WD Chassis Robot

Драйверы моторов

Мы используем два драйвера моторов BTS7960 для управления желтыми TT-моторами. Каждый драйвер управляет двумя моторами, подключенными параллельно: один отвечает за левую сторону, другой - за правую. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 22 пробный перевод Рисунок 6-4. Передняя и задняя сторона BTS7960

DC-DC Converter (motors)

XL4015 подключается к XT60-кабелю, а на его вход устанавливается конденсатор 1000 μF. Выходное напряжение следует установить на 6.5 V / 3 A для питания драйверов моторов. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 23 пробный перевод Рисунок 6-5. DC-DC-конвертер XL4015

DC-DC Converter (RPi)

Для корректного питания companion computer (Raspberry Pi) используется отдельный DC-DC-конвертер, способный выдавать 5 V / 5 A. Его вход подключается через XT60 к battery pack.

ELRS Receiver

Будет использоваться приемник, совместимый с RadioMaster 2.4 GHz. Рисунок 6-7. SpeedyBee 2.4GHz Nano Receiver

Flight Controller

Центральный компонент системы - DakeFPV F405 FC. Важно подключить площадки GND и BAT на контроллере непосредственно к входу XT60, который питает XL4015 с конденсатором 1000 μF.

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 24 пробный перевод Рисунок 6-8. Полетный контроллер DakeFPV F405

GPS module

Beitian GPS BN-220 дает автопилоту только GPS-позиционирование; данные компаса отсутствуют. Для оптимального покрытия установите GPS-модуль в передней части rover. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 25 пробный перевод Рисунок 6-9. GPS-модуль BN-220

Compass

По умолчанию автопилоту ArduRover нужны данные компаса для работы в режиме GUIDED. Мы используем QMC5883L, который полностью совместим. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 26 пробный перевод Рисунок 6-10. Компас QMC5883L

Telemetry module

Для управления rover через Mission Planner используется 3DR Telemetry Module. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 27 пробный перевод Рисунок 6-11. 3DR Telemetry module

Buzzer

Прошивка ArduPilot может издавать различные звуки при работе, показывая текущий режим rover. Для этого подключите стандартный buzzer к площадкам BZ+ и BZ-.

Raspberry Pi 5

Как и в главе 2, выбран Raspberry Pi 5 с 8 GB RAM. Этот companion computer обеспечивает нужную производительность и стабильность для задач компьютерного зрения и одновременного управления rover. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 28 пробный перевод Рисунок 6-13. Raspberry Pi 5 и CSI-камера

Battery Pack 6S2P

Для питания rover, периферии и companion computer на базе Raspberry Pi выбран Li-ion long-range battery pack в конфигурации 6s2p: BANDERA AKB 6s2p, 8400 mAh, разрядный ток 90 A. Этого более чем достаточно для долгой работы rover. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 29 пробный перевод Рисунок 6-14. Battery pack 6S2P

СБОРКА

Когда все компоненты Ground Robotic Platform (модели автомобиля-rover) готовы, следующий шаг - собрать систему, припаять соединения и корректно подключить всю проводку. Сборка основана на 4WD chassis robot kit, организованном в три уровня:

• Первый уровень (мотормы и драйверы): четыре

желтых TT DC motors, два H-bridge драйвера BTS7960, XL4015 step-down 24V -> 6.5 V и диод Шоттки SS54 на линии питания моторов.

• Второй уровень (контроллер и датчики): Dake

FPV F405 flight controller, QMC5883L compass, SpeedyBee ELRS Nano 2.4 GHz, BN-220 GPS, 3DR 433 MHz telemetry module, 100 dB buzzer и Raspberry Pi 5.

• Третий уровень (батарея и питание RPi): 6S2P

24V battery pack, 5 V / 5 A DC-DC-regulator для AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 30 пробный перевод Raspberry Pi 5 и, опционально, LiDAR-модуль на верхнем ярусе. Рисунок 6-15. Первый уровень - моторы и драйверы Рисунок 6-16. Второй уровень - контроллер и датчики AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 31 пробный перевод Рисунок 6-17. Третий уровень - батарея и питание RPi

• Подготовка: собрать мультиметр, паяльник,

термоусадку, стяжки, предохранители и разъемы; работать на непроводящей поверхности; отключать батарею при пайке.

• Сначала шина питания: подключить XL4015 к

входу батареи; без нагрузки выставить и проверить мультиметром 6.5 V и лимит тока 3 A; установить SS54 на + выход XL4015 согласно рекомендации модуля и проверить полярность.

• Драйверы моторов: подключить каждый BTS7960

к питанию моторов и к двум моторам параллельно на своей стороне; учитывать, что stall current может быть гораздо выше заявленного рабочего тока, поэтому тестировать с ограничением тока.

• FC и датчики: смонтировать и подключить

DakeFPV F405 FC с компасом, GPS, buzzer и ELRS receiver; соблюдать UART/port wiring и общий GND; проверить загрузку FC и видимость датчиков. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 32 пробный перевод

• Telemetry module: подключить и проверить 3DR

433 MHz telemetry link, убедившись, что пакеты стабильны.

• Питание Raspberry Pi 5: подключить 5 V / 5 A

DC-DC-конвертер к 24V pack и проверить выход без нагрузки; питать Pi от стабилизированной 5

V-линии, оставляя питание Pi отдельным от силовой линии моторов (общая земля обязательна).

• Финальные проверки: проверить полярности,

разъемы и пайку; зафиксировать провода, поставить термоусадку и стяжки, предусмотреть предохранители и надежно закрепить батарею и тяжелые модули. Когда вы готовы к первому запуску, включите передатчик RadioMaster ELRS Pocket 2.4 GHz, затем включите Rover. После binding arm-ните автомобиль и используйте throttle для проверки движения.

ПРОШИВКА ARDUROVER

По умолчанию flight controller DakeFPV F405 поставляется с прошивкой Betaflight. Поскольку мы используем этот контроллер для Rover, нужно заменить ее на ArduRover firmware. Для этого перейдите в официальное хранилище: https://firmware.ardupilot.org/Rover/latest/DAKEFPVF405 и скачайте файл ardurover_with_bl.hex . AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 33 пробный перевод Рисунок 6-18. Прошивка ArduRover в Betaflight Configurator Затем откройте Betaflight Configurator и подключите flight controller по USB. Выберите правильную версию

FC, затем через Load Firmware (Local) укажите ранее сохраненный файл. После этого нажмите Flash Firmware и дождитесь завершения. После прошивки вы больше не сможете подключаться к контроллеру через Betaflight Configurator, поскольку прошивка заменена. С этого момента используйте Mission Planner.

КОНФИГУРАЦИЯ

ARDUROVER

Правильное ПО для настройки rover с ArduRover firmware - Mission Planner. Его можно скачать и установить с официальной страницы: https://ardupilot.org/planner/docs/mission-planner-installation.h

После установки подключите Rover по USB и настройте все параметры, необходимые для ArduRover. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 34 пробный перевод

Рисунок 6-19. Полный список параметров на вкладке Config Перед эксплуатацией Rover нужно внимательно настроить обязательные параметры в Mission Planner. Основные настройки для базового Rover:

• FRAME_CLASS = 1 - Rover

• FRAME_TYPE = 0 - Undefined

• MOT_PWM_TYPE = 4 - BrushedBiPolar Rover,

включает движение вперед и назад с 4WD-моторами

• SERVO1_FUNCTION = 73 - ThrottleLeft

• SERVO2_FUNCTION = 73 - ThrottleLeft (enable

reverse)

• SERVO3_FUNCTION = 74 - ThrottleRight

• SERVO4_FUNCTION = 74 - ThrottleRight (enable

reverse)

• RC5_OPTION = 153 - переключатель

ARM/DISARM

• ARMING_CHECK = 0 - временно отключает arming

checks

• RC7_OPTION = 55 - переключатель GUIDED mode

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 35 пробный перевод

• GPS1_TYPE = 2 - UBlox (для BN-220 или

аналогичного)

• SERIAL1_BAUD = 38 - 38400 baud для GPS-модуля

• EK3_GPS_CHECK = 0 - временно отключает GPS

check

• SERIAL4_BAUD = 57 - 57600 baud для telemetry

module

• SERIAL4_PROTOCOL = 42 - MAVLink2

• WP_SPEED = 0.5 - ограничивает скорость Rover до

0.5 m/s в GUIDED mode

Рисунок 6-20. Rover готов к ARM

После базовой конфигурации можно перейти на экран Data. Там должен отображаться общий статус Rover: Ready to ARM. Сначала может появиться предупреждение GPS: No Fix - это нормально в помещении. Когда вы выйдете наружу и GPS поймает спутники, статус станет зеленым. После этого Rover будет готов работать не только в MANUAL, но и в GUIDED mode.

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 36 пробный перевод

СРЕДА БЕЗ GNSS

Все настройки выше предназначены для GNSS-среды, то есть работают при стабильном GPS-сигнале и исправном компасе. В среде без GNSS (например, indoors) нужно внести следующие изменения:

• EK3_SRC1_POSXY = 6 - использовать

ExternalNAV для горизонтальной позиции

• EK3_SRC1_VELXY = 6 - использовать

ExternalNAV для горизонтальной скорости

• EK3_SRC1_VELZ = 6 - использовать ExternalNAV

для вертикальной скорости

• GPS1_TYPE = 0 - отключить GPS

Эта настройка основана на официальном руководстве

ArduPilot Cartographer SLAM:

https://ardupilot.org/dev/docs/ros-cartographer-slam.html AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 37 пробный перевод Рисунок 6-21. К сожалению, ExternalNAV отключен для DakeFPV F405

Важные замечания: ваш flight controller должен поддерживать в коде сообщение MAVLink VISION_POSITION_ESTIMATE . Например, контроллер DakeFPV его не поддерживает, поэтому

потребуется плата вроде Pixhawk. Всегда проверяйте, что EK3_FEATURE_EXTERNAL_NAV включен в файле firmware features.txt . Если он помечен символом ! , это означает, что он отключен. Как показано на рисунке 6-21, для завершения эксперимента без GNSS потребуются дополнительные усилия. Удачи.

КОНФИГУРАЦИЯ RPI

Как и в главе 3, Raspberry Pi (RPi) служит companion computer и взаимодействует с прошивкой ArduRover на flight controller через MAVLink. Для установки и запуска кода автопилота на RPi выполните шаги: AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 38 пробный перевод

• Скачайте и распакуйте файлы из репозитория

under0tech/autopilot_loonarr, включая папку logs, в каталог /home/pi/Apps/loonarr на Raspberry Pi.

• Скопируйте файлы config/run_autopilot.service и

config/run_autopilot.sh в /etc/systemd/system и сделайте скрипт исполняемым: sudo chmod +x run_autopilot.sh

• Включите сервис автопилота для автоматического

запуска при boot: sudo systemctl enable run_autopilot.service; reboot.

• После перезагрузки откройте папку logs. Если

создаются новые log-файлы, сервис работает корректно. Если нет, проверьте definitions.py и скорректируйте конфигурацию. Если вы строите Rover, способный работать без GNSS, понадобятся два MAVLink-канала: один для управления движением, второй для передачи данных датчика RPLidar через MAVLink-сообщение VISION_POSITION_ESTIMATE.

АВТОПИЛОТ ARDUROVER

В отличие от автопилота из предыдущей главы, ArduRover Autopilot рассчитан на запуск на companion computer, например Raspberry Pi. Он позволяет Ground Robotics Platform (Rover) обнаруживать и сопровождать цель (например, человека) на земле. По умолчанию Rover предназначен для GNSS-среды со стабильным GPS и компасом. Однако он также содержит модули, компоненты и код, поддерживающие

non-GNSS mode для indoors или работы в условиях Electronic Warfare (EW). Хотя non-GNSS-модуль не полностью разработан и пока использует fake 3D pose вместо реальных данных RPLidar, он может служить хорошей отправной точкой для дальнейшей разработки. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 39 пробный перевод

Режимы

• OFF - автопилот неактивен и ожидает

переключения оператором. Включены только мониторинг телеметрии и логирование.

• READY - сбрасывает автопилот к состоянию по

умолчанию. Если цель ранее отслеживалась и была достигнута, режим очищает состояние и готовит следующую миссию.

• FOLLOW - включает основную

функциональность: система обнаруживает и сопровождает цель (человека). Когда цель достигнута, транспорт автоматически disarm-ится. Простота дает разработчикам прочную отправную точку и ясное понимание для построения более сложных Ground Robotics Platforms и не только.

Архитектура

Как и предыдущие реализации, этот автопилот - назовем его LOONARR - использует многопоточную архитектуру вокруг очереди команд и маршрутизатора. Router thread обрабатывает команды в очереди; Telemetry thread и Follower thread добавляют команды; optional Odometry thread может быть включен в non-GNSS-средах для поддержки indoor navigation или работы при EW.

https://github.com/under0tech/autopilot_loonarr AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 40 пробный перевод Рисунок 6-22. Архитектура автопилота LOONARR Telemetry thread добавляет команды мониторинга и телеметрии, предоставляя данные о скорости, RC-каналах, заряде батареи и т.д. Follower thread отвечает за detection и tracking цели в поле зрения

камеры и выдает команды движения, чтобы Rover продолжал преследование. Odometry thread предоставляет позиционные данные в non-GNSS-средах, симулируя входы датчиков (например, LiDAR) для оценки позиции и heading Rover. В работе автопилот опирается на: YOLOv8 для обнаружения и отслеживания цели; ArduRover MAVLink commands для управления движением с Raspberry Pi; AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 41 пробный перевод telemetry streaming в Ground Control Station для мониторинга и обратной связи. Важно: модуль Odometry в odometry.py сейчас создает fake 3D pose и должен быть доработан для интеграции с LiDAR, например RPLidar. Поскольку DakeFPV FC не поддерживает VISION_POSITION_ESTIMATE, эта конфигурация не

была протестирована; с GPS и компасом автопилот использовать можно.

PYTHON-КОД

Теперь рассмотрим исходный код автопилота с кратким объяснением каждого модуля. Для полноценного обучения рекомендуется заранее скачать код из GitHub-репозитория, указанного в разделе Architecture.

main.py

Точка входа запускает основной процесс автопилота и его потоки: router, telemetry, odometry и follower. Она создает очередь команд, запускает потоки и отправляет INIT, который запрашивает все потоки телеметрии от

Rover.

autopilot.py

Состояние автопилота содержит ключевые параметры: connection, odometry_connection, bee_state (OFF/READY/FOLLOW), battery, speed, completed, frame и target_lost. Во время выполнения эта структура постоянно обновляется.

definitions.py

Единая точка конфигурации: mavlink_url, logger_name, logger_directory, vision_model, vision_classes, video_source, camera_width/height, target_lost_limit, AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 42 пробный перевод odometry_url и odometry_enabled. При odometry_enabled=True автопилот передает VISION_POSITION_ESTIMATE на 20 Hz.

commands.py

Модуль управляет обменом companion computer с Rover через MAVLink: уведомления в GCS, телеметрия, system status, odometry data, управление скоростью, направлением и движением, а также сценарии rover_init, target_search и follow_target.

router.py

Router - центральный компонент. Он обрабатывает INIT, MONITOR, TELEMETRY, FOLLOW и DISARM. command_follow реализует логику следования за целью: если цель видна и не слишком близко, вычисляются координаты NED и отправляется команда следования; если цель достаточно близко, миссия помечается завершенной, очередь очищается и Rover disarm-ится.

follower.py

Follower process добавляет команды FOLLOW, когда автопилот находится в FOLLOW mode и миссия еще не завершена. В READY он сбрасывает completion state, подготавливая следующую миссию.

vision.py

Computer vision - основа target tracking. Используется YOLOv8 yolov8n.pt и класс 0 - Person. Для обработки видео и работы с Raspberry Pi camera применяется OpenCV вместе с пакетом RPi Picamera2. Модуль сопоставляет координаты изображения с NED, корректирует скорость/траекторию и применяет AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 43 пробный перевод

масштабные коэффициенты.

telemetry.py

Модуль постоянно запрашивает SYS_STATUS и RC_CHANNELS, обновляя состояние автопилота текущей скоростью, RC-статусом и связанными параметрами.

odometry.py

Модуль Odometry отправляет VISION_POSITION_ESTIMATE с частотой 20 Hz, если включен non-GNSS режим. По умолчанию он выключен; текущая реализация использует экспериментальную fake

3D pose, которую нужно заменить данными RPLidar или визуальной одометрии.

messages.py

Определяет сообщения для событий и цели уведомлений: Ground Control / FPV goggles, консоль приложения, log files или их комбинации.

logger.py

Управляет записью сообщений в log-файлы. В Logs сохраняются .log-файлы с операциями автопилота и .png-кадры, использованные для object detection и target following.

ИСПЫТАНИЯ

К этому моменту мы изучили многое, построили автономный Rover с возможностью target-following и готовы проверить его работу на практике. Поскольку Rover может работать на улице с GPS + Compass и в

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 44 пробный перевод помещении в non-GNSS mode с LiDAR, эксперименты разделены на два отдельных испытания.

Outdoor test

Для outdoor test я вышел на парковку, распаковал Rover, подготовил компьютер и среду, затем начал эксперимент на земле. Рисунок 6-23. Rover получил GPS-сигнал (3D fix) Действия: включить передатчик RadioMaster TX; подключить battery pack к XT60-входу Rover; проверить реакцию Rover на TX - переключение режимов, ARM/DISARM и движение в MANUAL; подключиться через 3DR Telemetry module и убедиться в готовности. Rover получил 3D GPS fix. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 45 пробный перевод Рисунок 6-24. LOONARR-1 в движении на улице Затем я встал перед камерой Rover, переключил RC7 (chan7_raw) в GUIDED mode и ARM-нул Rover. Rover начал следовать за мной. Когда он достиг меня, он

автоматически DISARM-нулся, а buzzer издал “bip.. bip..”. После этого я выключил Rover, собрал компьютер, отключил RadioMaster и дома просмотрел каталог Logs на RPi. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 46 пробный перевод Рисунок 6-25. Rover следует за целью по пути На рисунке 6-25 видно путь, по которому Rover двигался, отслеживая меня на земле. Рисунок 6-26. Записи полета Rover. Миссия завершена AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 47 пробный перевод Log-файл показал, что Rover несколько раз терял меня из виду, затем снова находил цель и продолжал следовать. Когда цель оказалась достаточно близко, Rover завершил миссию, disarm-нув моторы. Все данные

были сохранены для последующего анализа.

Indoor test

Как говорилось в разделе Non-GNSS environment, при попытке реализовать non-GNSS mode indoors я столкнулся с ограничением: flight controller DakeFPV F405 не поддерживает External Navigation на уровне прошивки из-за 1 MB flash memory. На официальной странице ArduRover отмечено: плата с более чем 1 MB flash требуется для non-GPS navigation, за исключением Vicon. Платы с 1 MB все еще поддерживают GPS_INPUT, но не GLOBAL_VISION_POSITION_ESTIMATE, поэтому должны использовать GPS_INPUT. https://ardupilot.org/rover/docs/common-non-gps-navigation-landin После исследования я обнаружил, что flight controllers вроде Pixhawk поддерживают non-GNSS navigation. Имея шаблон Odometry Provider и соответствующий thread, можно завершить эксперимент, перейдя на

совместимый flight controller и добавив RPLidar, как описано в официальном руководстве ArduPilot Cartographer SLAM. https://ardupilot.org/dev/docs/ros-cartographer-slam.html Я планирую продолжить этот эксперимент в будущем. Если вам, дорогой читатель, удастся достичь indoor navigation раньше, я буду рад, если вы поделитесь результатами с сообществом и со мной. Удачи на этом пути!

Итоги

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 48 пробный перевод Завершив эту главу, вы получили комплексное понимание автономного Rover с функцией target-following. Вы увидели, как автопилот, телеметрия, одометрия, компьютерное зрение и flight controller взаимодействуют, создавая систему, способную автономно двигаться на улице и теоретически в помещении. Outdoor trial показал работу системы в реальной среде: получение GPS, следование за целью, реакцию на RC-команды и завершение миссии. Эти эксперименты подчеркивают важность телеметрии и логирования, поскольку они дают критически важную обратную связь для понимания поведения Rover и устранения неожиданных событий, таких как временная потеря

цели.

• Command execution: очередь команд Rover вместе

с мониторингом телеметрии обеспечивает выполнение действий вроде ARM/DISARM и target following. Потеря и повторное обнаружение цели показали динамическую адаптацию системы к условиям.

• Computer vision: использование YOLOv8 и

преобразование координат изображения в NED подчеркивают сложность real-time object tracking и autonomous navigation. Это показывает важность калибровки и обработки для точного following.

• Limitations: indoor navigation в non-GNSS mode

выявила аппаратные ограничения. Малые flight controllers вроде DakeFPV F405 не поддерживают External Navigation из-за ограниченной flash memory; для SLAM и LiDAR-навигации нужны более мощные платы, например Pixhawk. Будущее развитие: SLAM позволяет навигацию по карте без GPS; модульная архитектура автопилота допускает расширение indoor navigation с LiDAR и SLAM,

многоцелевое сопровождение и оптимизацию под более AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 49 пробный перевод долгие и сложные миссии. Анализ логов и телеметрии останется ключевым для оценки производительности и улучшения поведения Rover. Эта глава демонстрирует практическую работу системы и закладывает основу для дальнейших экспериментов и

улучшений. Понимая успехи и ограничения текущей конфигурации, вы лучше подготовлены к инновациям, устранению неполадок и расширению проектов автономных Rover. Каждый тест - успешный или сложный - дает ценные сведения для проектирования надежной, гибкой и интеллектуальной автономной системы. Когда я начинал писать эту главу, моей целью было не дать финальное готовое решение для indoor или outdoor navigation, а предоставить прочный шаблон - отправную точку для разработки автономного наземного Rover с computer vision на борту. Я считаю, что эта цель достигнута. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 1 пробный перевод ГЛАВА 7.

САМОЛЕТ

Динамика полета летательных аппаратов с неподвижным крылом существенно отличается от динамики коптеров, FPV-дронов и мультикоптеров - и представляет собой одно из самых изящных достижений человеческой инженерии. В контексте автономных дронов платформы с неподвижным крылом чаще всего используют для разведывательных миссий, но их возможности выходят далеко за эти рамки. В этой главе мы пройдем процесс построения самолета с неподвижным крылом на прошивке ArduPlane с нуля. Мы рассмотрим все: от пайки и настройки параметров до планирования заранее заданного маршрута в Mission Planner.

Обзор

Лично я считаю разведывательные миссии самыми интересными. Обычно их выполняют самолеты с AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 2 пробный перевод неподвижным крылом: такие платформы могут часами оставаться в воздухе, обследуя позиции противника на линии фронта с большой высоты и при этом оставаясь сложными для обнаружения.

Рисунок 7-1. ArduPlane выполняет маневрирование по заранее заданному маршруту Добавление заранее заданного маршрута во внутренний автопилот ArduPlane устраняет необходимость в живом радиоканале (активном соединении) с оператором во время полета в режиме AUTO. Такая автономность уменьшает электронный след и делает действия во время

миссии значительно менее заметными. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 3 пробный перевод В этой главе мы построим пример такого летательного аппарата.

Схема

Общая конструкция нашего разведывательного дрона достаточно проста и может быть показана на одной странице. Основные компоненты системы - полетный контроллер SpeedyBee F405 Wing Mini и самолет с неподвижным крылом ATOMRC Swordfish (KIT). Рисунок 7-2. Схема подключения самолета Ниже приведено подробное руководство по подключению компонентов к полетному контроллеру на основе схемы, показанной выше. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 4 пробный перевод • Аккумуляторный блок (4S LiPo, +14.8 V). Подключается к полетному контроллеру через плату PDB. BAT+ -> B+ на PDB и BAT- -> B- на PDB. Конденсатор 1000 мкФ (1 mF)

устанавливается параллельно входу питания для стабилизации напряжения. Площадки ESC+/- на той же PDB также подают напряжение на оба ESC (BLHeli-S 30A).

• Аналоговая камера B19. Подключается к

полетному контроллеру через основную плату FC с 4-контактным разъемом SH1.0 для аналоговой камеры. VCC -> площадка Vv на FC (напряжение батареи +14.8 V), GND -> общий ground с полетным контроллером, VIDEO -> вход CAM1 на полетном контроллере. • Видеопередатчик ULTRA 1600 VTX 5.8G. Подключается к полетному контроллеру через основную плату FC с 4-контактным разъемом SH1.0 для аналогового VTX. DC -> площадка Vv на FC (напряжение батареи +14.8 V), GND -> общий ground, VIDEO -> видеовыход VTX на FC, IRC -> площадка TX5 на FC (для управления SmartAudio/IRC Tramp).

• ESC BLHeli-S 30A. Каждый ESC получает

питание напрямую от шины +14.8 V на плате PDB. ESC левого крыла: S -> S1 SERVO, G -> GND. ESC правого крыла: S -> S2 SERVO, G -> GND. Моторные площадки на ESC подключаются к соответствующим бесколлекторным моторам левого и правого крыла.

• ATOMRC S09M 9g Metal Servo. Серво левого

крыла -> сигнал от S3. Серво правого крыла -> AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 5 пробный перевод сигнал от S4. Левое серво V-tail -> сигнал от S8.

Правое серво V-tail -> сигнал от S9. Для каждого серво: VCC -> +5 V (Vx на FC), G -> GND.

• Приемник ELRS 2.4 GHz. Подключается к FC

прямой проводкой на основной плате FC: T1 -> RX, R1 -> TX, GND -> GND, 4V5 -> VCC (SpeedyBee ELRS Nano Receiver 2.4 GHz). • Модуль BE-880 GPS + Compass. Подключается к FC шестью проводами прямой проводкой: 4V5 -> VCC, GND -> GND, T3 -> RX, R3 -> TX, SDA -> SDA, SCL -> SCL.

• Светодиодная лента WS2812B. Правый

крыльевой LED WS2812B: DIN -> S7 на FC, 5 V -> Vx (+5 V), GND -> общий ground. Левый крыльевой LED (RED): 5V -> шина +5 V, GND -> ground. Все соединения, описанные здесь, основаны на моем личном опыте реальной пайки и сборки самолета с перечисленными компонентами. Ваша конфигурация может отличаться. Всегда

перепроверяйте каждое соединение, особенно допустимые напряжения и токи для каждого устройства, поскольку они могут отличаться между версиями. Это поможет предотвратить возможное повреждение оборудования. Убедитесь, что все паяные соединения чистые, блестящие и механически прочные: холодные или слабые пайки могут привести к периодическим отказам или полной потере работоспособности системы во время полета. Используйте правильно залуженные провода, применяйте термоусадку или изоляцию там, где это необходимо, и избегайте

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 6 пробный перевод чрезмерной длины проводов, чтобы снизить электрические помехи и падение напряжения.

Также соблюдайте общие правила безопасности при работе с LiPo-аккумуляторами и электроникой: всегда отключайте питание перед пайкой, дважды проверяйте полярность перед подключением и проверяйте цепи мультиметром перед первым включением. Не пожалейте времени на проверку качества соединений.

Компоненты

Прежде чем собирать и паять компоненты, перечисленные в предыдущем разделе, нужно правильно подготовить их и убедиться, что они совместимы по току и напряжению. Не важно, используете ли вы именно те компоненты, которые упомянуты здесь, или выбираете собственную конфигурацию: вы всегда должны проверять совместимость их электрических характеристик.

Фюзеляж

Для этой сборки я выбрал ATOMRC Swordfish Fixed-Wing Plane (версия KIT) в качестве базового фюзеляжа. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 7 пробный перевод Рисунок 7-3. Фюзеляж ATOMRC Swordfish (версия KIT) Эта модель предлагает отличный баланс между аэродинамической эффективностью, внутренним

пространством для электроники и простотой модификации, что делает ее идеальной для автономных FPV-сборок. Среди прочего, комплект включает:

• легкий, но прочный корпус из EPP-пены с

усиленными карбоновыми лонжеронами;

• предустановленные рулевые поверхности,

включая крылья с элеронами и V-tail с элевонами;

• специальные места на крыльях и внутри

фюзеляжа для сервомоторов и их тяг;

• съемную систему крыла для более удобной

транспортировки и обслуживания;

• просторный внутренний отсек, подходящий

для полетного контроллера, GPS-модуля и компонентов распределения питания; AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 8 пробный перевод

• достаточное внутреннее пространство с

выделенными отсеками для таких компонентов, как ELRS, VTX и другая электроника;

• встроенное крепление камеры, подходящее для

FPV или бортовой системы видеозаписи;

• специальные разъемы крыла для быстрого и

удобного монтажа, а также разъемы для полетного контроллера (FC) и платы распределения питания (PDB);

• различные пластиковые детали для защиты

сервоприводов, монтажную фурнитуру, винты и провода для полетных огней. В целом, комплект ATOMRC Swordfish KIT дает надежную основу для нашей экспериментальной

сборки, поскольку на его базе мы построим автономный разведывательный FPV-дрон на прошивке ArduPilot. ArduPilot получил широкое признание и высокую оценку пользователей по

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

Полетный контроллер

Для этой сборки мы будем использовать другой полетный контроллер, не тот, что в предыдущем эксперименте, - SpeedyBee F405 Wing Mini, поскольку он оптимально подходит для самолетов с неподвижным крылом. Этот компактный, но мощный контроллер специально разработан для fixed-wing aircraft и дает AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 9 пробный перевод отличный баланс производительности, гибкости и простоты интеграции. Он поддерживает ArduPilot и INAV, поэтому подходит как для ручного FPV-полета, так и для полностью автономных миссий при работе в режиме AUTO. Рисунок 7-4. Полетный контроллер SpeedyBee F405 Wing Mini Получив комплект полетного контроллера,

внимательно проверьте, что в нем есть все компоненты и аксессуары, необходимые для проекта:

• основная плата полетного контроллера

SpeedyBee F405 Wing Mini;

• плата распределения питания (PDB) для

точного управления током и напряжением; AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 10 пробный перевод

• custom install shield board и standard install shield

board для надежного и упорядоченного монтажа полетного контроллера и периферийных соединений;

• плата USB-удлинителя для удобного доступа к

USB-порту FC во время обновления прошивки и настройки;

• набор предварительно обжатых

соединительных кабелей и разъемов JST-GH для быстрого подключения;

• силиконовые виброгасители для стабильных

показаний датчиков;

• монтажные гайки и винты;

• кабель данных USB-C для прошивки и

настройки; • и даже больше.

Получив эти компоненты, не забудьте дополнительно подготовить конденсатор 1000 мкФ

и необходимые провода для силовых соединений, а также разъем XT60 для прямого подключения FC к аккумулятору. Комплект ATOMRC Swordfish KIT уже должен включать два разъема XT30 с соответствующими проводами: их вы припаяете к плате PDB, чтобы подавать питание от аккумулятора на ESC (electronic speed controller) и его моторы.

Приемник ELRS

Хотя на самолетах с неподвижным крылом обычно используют приемники ELRS 915 MHz или TBS AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 11 пробный перевод Crossfire из-за дальности, в этом эксперименте я выбрал ExpressLRS 2.4 GHz Nano. Поскольку этот дрон в основном будет работать в режиме AUTO, радиоконтроллер понадобится только во время

взлета, поэтому варианта 2.4 GHz здесь вполне достаточно. Рисунок 7-5. Приемник SpeedyBee ELRS 2.4 GHz Nano Хотя в спецификации приемника SpeedyBee ELRS 2.4 GHz Nano указано требуемое входное напряжение 5 V, документация полетного контроллера предписывает подключать его к площадке 4V5 на UART1. Это единственное

исключение. Во всех остальных случаях напряжение и ток, подаваемые на компоненты, должны строго соответствовать их собственным спецификациям.

Сервоприводы

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 12 пробный перевод Согласно документации ATOMRC, для управления элеронами на крыльях и элевонами на V-tail требуются металлические сервоприводы 9g. V-tail работает одновременно как rudder и как дополнительная рулевая поверхность, помогающая выполнять повороты.

Для этой сборки я решил использовать металлические серво ATOMRC 9g и заказал четыре штуки: два для элеронов (левое и правое крыло) и два для элевонов на V-tail. Рисунок 7-6. Металлические сервоприводы ATOMRC S09M 9g Как видно на изображении выше, каждый сервопривод поставляется с достаточно длинным кабелем 32 cm и стандартным трехпроводным

разъемом (красный, желтый и черный). Красный провод передает 5 V, черный - ground, а желтый подключается к сигнальной площадке (S) на FC, которая работает в диапазоне импульсов 1000-2000 мкс, с нейтральным положением 1500 мкс. Нам нужно будет выставить сервоприводы в эту среднюю точку 1500 мкс, чтобы при центрировании элероны были выровнены с поверхностью крыла.

ESC

Для этой сборки мы будем использовать BLHeli-S 30A ESC - надежный и эффективный электронный AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 13 пробный перевод регулятор скорости, хорошо подходящий для самолетов с неподвижным крылом. Он обеспечивает плавную и точную реакцию на throttle, что дает стабильную работу моторов как в ручном,

так и в автономном режимах полета. Рисунок 7-7. ESC BLHeli-S 30A Для нашей сборки потребуется два ESC - один для левого крыла и один для правого крыла. Каждый ESC питается напрямую от аккумуляторного блока (2-6S LiPo) и использует два управляющих провода: белый для сигнала (S) и черный для ground (GND). На выходной стороне ESC имеет три площадки,

которые подключаются к трем фазам бесколлекторного мотора - по одной площадке на каждую фазу мотора каждого крыла.

Моторы и пропеллеры

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 14 пробный перевод Для этой сборки мы используем два бесколлекторных мотора EMAX ECO II 2306

1700KV, рекомендованных для этого самолета с неподвижным крылом. У каждого мотора три провода, которые нужно припаять к соответствующим площадкам ESC, как

обсуждалось в предыдущем подразделе. Рисунок 7-8. Моторы 2306 1700KV и пропеллеры 7040 Как показано на изображении выше, каждый мотор поставляется со всеми необходимыми монтажными гайками и винтами. Для этих моторов мы также используем пропеллеры 7040, поскольку они рекомендованы производителем для модели ATOMRC Swordfish. Они поставляются со всеми необходимыми совместимыми гайками, позволяющими установить их на выбранные моторы типа 2306.

VTX и FPV-камера

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 15 пробный перевод Как и во многих наших предыдущих экспериментах, я выбрал аналоговую камеру B19, которая выдает видеосигнал NTSC/PAL с хорошим разрешением 1500TVL и качеством изображения, подходящим для дальних FPV-полетов. Рисунок 7-9. Аналоговая камера B19 и VTX 5.8GHz

Также используется ULTRA 1600 5.8GHz VTX, который обеспечивает надежную передачу FPV-видео с регулируемой мощностью от 25 mW до 1600 mW и стабильным сигналом, способным достигать 10 километров в оптимальных условиях (прямая видимость без препятствий на пути). Как упоминалось в разделе «Схема», VTX и FPV-камера будут питаться напрямую от

аккумулятора (+14.8 V 4S1P) через площадки Vv на полетном контроллере. Оба устройства безопасно работают в этом диапазоне питающего напряжения. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 16 пробный перевод

Компас и GPS

Как вы знаете, прошивке ArduPilot для работы в режиме AUTO в среде GNSS требуются и GPS, и компас. В отличие от нашего предыдущего эксперимента с rover, где GPS и компас были отдельными модулями, для этой сборки я выбрал интегрированное решение. Именно поэтому я выбрал модуль BE-880 GPS, объединяющий GPS и компас в одном устройстве.

Рисунок 7-10. GPS-модуль Beitian BE-880 Как видно на изображении выше, модуль имеет шесть площадок: четыре предназначены для GPS-подключения (GND, TX, RX, VCC), а две - для сигнальных линий компаса SDA/SCL.

Полетные огни

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 17 пробный перевод В авиации левый (мигающий красный) и правый (мигающий зеленый) огни помогают определить ориентацию самолета, позволяя наблюдателям понять, какую сторону самолета они видят. Рисунок 7-11. Полетные огни Хотя навигационные огни не являются строго необходимыми для RC-модели, я решил добавить схему, вдохновленную освещением реальных самолетов. Для этого я использовал LED-модуль WS2812B, который будет отображать стандартные статусы полетного контроллера (NTF_LED_OVERRIDE = 0) на правом крыле - например, постоянный синий свет при armed, мигающий синий при disarmed и различные другие

индикации статуса AP. На левом крыле будет постоянный красный LED, аналогичный обычному авиационному освещению. Я рекомендую припаять его напрямую к выводам +5 V и GND на стандартном крыльевом разъеме AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 18 пробный перевод ATOMRC, который обычно используется для оборудования на крыле, например сервомоторов.

Аккумуляторный блок 4S1P

При выборе аккумуляторного блока для самолета с неподвижным крылом нужно учитывать два критически важных фактора: доступное место внутри фюзеляжа для аккумулятора и желаемую дальность полета. Эти два аспекта важны для того, чтобы аккумулятор хорошо помещался и соответствовал требованиям полетной миссии. Рисунок 7-12. Аккумуляторный блок 4S1P LiPo 4200 mAh + 14.8

V Я выбрал LiPo-аккумуляторный блок 4S1P емкостью 4200 mAh и номинальным напряжением 14.8 V, потому что он идеально помещается в предусмотренный батарейный отсек и дает достаточную энергию для наших разведывательных AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 19 пробный перевод

миссий. Поскольку мы не планируем летать дальше 10 километров, этот аккумулятор обеспечивает правильный баланс емкости и небольшого веса.

Самолет с нуля

Этот самолет с неподвижным крылом, вероятно, станет самым красивым созданием, которое мы построим вместе в этой книге. Именно поэтому я сохранил его для одной из финальных глав.

Компоненты готовы, схемы понятны, и пора перейти к путешествию, которого мы ждали. Поехали!

Подготовка крыльев

Самой сложной частью нашей сборки будет сборка крыльев. Каждое крыло включает несколько компонентов и довольно сложную систему соединений. В частности, каждое крыло имеет LED-часть вдоль края, мотор 2306 со своим ESC, сервомотор элерона и уникальный разъем ATOMRC Swordfish, который объединяет силовой штекер XT30 с 6-контактным сигнальным разъемом.

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 20 пробный перевод Рисунок 7-13. Сервопривод S09M 9g для элерона Элерон - это рулевая поверхность, которая позволяет самолету поворачивать влево или вправо. Когда полетный контроллер перемещает один элерон вверх или вниз, противоположный элерон движется в обратном направлении. Это

дифференциальное движение позволяет самолету крениться и поворачивать в полете. Как видно на изображении выше, сервомотор установлен и соединен со своим элероном специальной управляющей тягой. Сервомотор приклеивается к крылу, а провод (3 контакта) от сервомотора проходит вдоль крыла к разъему ATOMRC Swordfish. Сервомотор должен быть установлен так, чтобы его управляющий рычаг совпадал с нейтральным положением, соответствующим значению 1500 (середина) для сервопривода. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 21 пробный перевод Рисунок 7-14. Мотор 2306 и его ESC установлены Следующий шаг - припаять мотор к ESC.

Подключите каждый из трех проводов к соответствующим фазам бесколлекторного мотора, как показано на изображении выше. Мотор является ключевым компонентом, создающим тягу в полете, поэтому он должен быть установлен и настроен правильно. Убедитесь, что фазы моторов припаяны в противоположном порядке на двух крыльях.

Например, если правое крыло подключено как 1 -> 1, 2 -> 2 и 3 -> 3, то противоположное крыло должно быть подключено как 1 -> 3, 2 -> 2 и 3 -> 1. Это гарантирует, что оба мотора будут вращаться в правильных направлениях - либо к фюзеляжу, либо наружу, в зависимости от вашей конструкции. Хотя направление мотора можно позже изменить через программную настройку, я предпочитаю

выставлять его правильно на аппаратном уровне, AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 22 пробный перевод как описано здесь. Рисунок 7-15. Уникальный разъем ATOMRC Swordfish После установки мотора, ESC и сервопривода элерона пора подключить все провода к уникальному разъему ATOMRC Swordfish, который имеет штекер XT30 male. Подключите красный (VCC) и черный (GND) провода от ESC к соответствующим клеммам XT30 на задней стороне разъема. Затем подключите три провода от сервомотора: черный к G, красный к +5 V, желтый к S на плате разъема. Наконец, подключите черный провод от ESC к следующему пину G, а белый сигнальный провод ESC - к пину M

на той же плате. Финальный шаг подготовки крыльев - настройка LED-освещения вдоль кромок крыла. Как упоминалось в разделе «Схема», правое и левое крыло используют разные реализации LED: на AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 23 пробный перевод правом крыле установлен модуль WS2812B, а на левом - стандартный красный LED от ATOMRC. Поэтому их подключение различается. Рисунок 7-16. LED WS2812B на правом крыле На правом крыле подключите G к пину G сервопривода, +5 V к пину +5 V сервопривода, а сигнальный провод (DIN) - к AUX-пину уникального разъема. На левом крыле просто подключите +5V к +5V и G к G на соединении сервопривода. После подключения изолируйте и закройте все провода, чтобы защитить их от воды и влаги во время полета.

Монтаж V-tail

Один из ключевых компонентов самолета ATOMRC Swordfish - его узел V-tail. Эта часть объединяет функции elevator и rudder, одновременно обеспечивая управление по pitch и yaw. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 24 пробный перевод Конструкция V-tail уменьшает сопротивление по сравнению с обычным хвостовым оперением и

повышает аэродинамическую эффективность. Система управления V-tail опирается на mixer, который смешивает сигналы каналов pitch (elevator) и yaw (rudder). Это позволяет обеим рулевым поверхностям, известным как elevons, двигаться согласованно. Когда оба elevon движутся вверх или вниз вместе, они работают как elevator, управляя pitch. Когда они движутся в противоположных направлениях, они работают как rudder, обеспечивая yaw. Рисунок 7-17. V-tail установлен Монтаж V-tail начинается с крепления хвостовых килей (двух наклонных стабилизирующих поверхностей) к задней части фюзеляжа. Убедитесь, что обе поверхности симметрично выровнены под AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 25 пробный перевод правильным углом для стабильного полета. Затем установите карбоновые тяги или пластиковые монтажные стержни, которые соединяют сервомоторы с управляющими качалками на каждой поверхности V-tail. Эти тяги передают движение сервоприводов на elevons. Перед финальной затяжкой убедитесь, что обе стороны двигаются свободно, без заеданий, а нейтральное положение каждого elevon идеально выровнено. После регулировки закрепите все винты, клипсы и тяги. Рисунок 7-18. Сервомоторы для V-tail Еще одна важная часть механизма V-tail - пара сервомоторов, установленных внутри фюзеляжа, как показано выше. Эти серво приводят в движение

рулевые поверхности V-tail через pushrods, соединенные с elevons. Убедитесь, что оба сервопривода выровнены так, чтобы elevons находились точно в нейтральном положении, когда AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 26 пробный перевод управляющий сигнал установлен на 1500 мкс. Проверить это можно с помощью функции тестирования сервоприводов в ToolkitRC M7, описанной в разделе Tools главы 2.

Настройка платы PDB

Плата распределения питания (Power Distribution Board, PDB) является критически важным компонентом сборки: она отвечает за стабильную и надежную подачу питания ко всем компонентам. Подготовьте ее в соответствии с официальными спецификациями полетного контроллера SpeedyBee F405 Wing Mini. Это обеспечит правильную стабилизацию напряжения и поток тока по всему самолету. Начните с пайки проводов с разъемом XT60 male, который будет служить главным входом питания всей системы. Затем установите конденсатор 470-1000 мкФ, 35V рядом со входом аккумулятора, чтобы отфильтровать броски напряжения и защитить чувствительную электронику. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 27 пробный перевод Рисунок 7-19. Плата распределения питания внутри фюзеляжа После этого припаяйте провода с разъемами XT30 female, которые будут подавать питание на левое и правое крыло. Убедитесь, что все соединения чистые, прочные и правильно изолированы. Теперь PDB готова.

Установка FC

SpeedyBee F405 Wing Mini поставляется с площадками, подготовленными под разъемы, но перед использованием их нужно припаять. Чтобы подготовить плату к сборке, припаяйте желтые (S1-S9), красные (Vx) и черные (G) разъемы для всех servo rows, а также добавьте 4-контактный разъем (T1, R1, G, 4V5) для приемника ELRS, как показано ниже.

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 28 пробный перевод Рисунок 7-20. Подготовка полетного контроллера Аккуратно пропаяйте все контакты, не допуская solder bridges, и затем проверьте каждый ряд мультиметром, чтобы убедиться в отсутствии проблем. Для установки разъемов я использую маленькое жало типа gallow.

Когда все готово, очистите плату и соедините основную плату FC с платой PDB, уже установленной в фюзеляже, с помощью 8-контактного разъема, расположенного на обратной стороне полетного контроллера. Это будет надежным началом финальной сборки.

Подключение приемника

ELRS

Радиосвязь между самолетом и оператором - как при запуске, так и, при работе в режиме MANUAL, AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 29 пробный перевод на протяжении полета - устанавливается через радиопередатчик (в нашем случае RadioMaster Pocket M2) и радиоприемник (SpeedyBee 2.4 GHz ELRS Nano Receiver). Поэтому нужно установить на

самолет приемник вместе с T-образной антенной, специально рассчитанной на эту частоту, чтобы обеспечить радиосвязь. Рисунок 7-21. Приемник ELRS и T-антенна Как видно на изображении выше, приемник ELRS установлен внутри фюзеляжа и подключен к полетному контроллеру через UART1 (TX1, RX1). T-антенна также закреплена в предназначенном для

нее месте внутри фюзеляжа. На изображении также видно, что приемник ELRS расположен с одной стороны отсека электроники, а плата USB-удлинителя установлена на противоположной стороне.

Добавление GPS и компаса

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 30 пробный перевод Как упоминалось ранее, при полете с внутренним или внешним автопилотом прошивке ArduPilot необходимы корректные сигналы GPS и компаса. Модуль BE-880 включает и GPS, и компас, предоставляя эти важные сигналы. Поэтому мы установили его сверху фюзеляжа, в выделенном отсеке GPS. Рисунок 7-22. GPS-модуль установлен сверху фюзеляжа Как видно выше, GPS-модуль закреплен в предназначенном для него месте сверху фюзеляжа с помощью двустороннего скотча. 6-контактный кабель от GPS-модуля проведен в отсек электроники через специальное отверстие и подключен к полетному контроллеру SpeedyBee

F405 Wing Mini через специальный GPS-порт, выделенный на UART3 FC. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 31 пробный перевод

Установка VTX и

FPV-камеры

Последний шаг нашей сборки - установка аналоговой FPV-камеры и видеопередатчика (VTX). Эти компоненты можно установить в нескольких местах на ATOMRC Swordfish, но я выбрал размещение камеры вместе с VTX и антенной сверху фюзеляжа для лучшей видимости и качества сигнала. Также в носовой части самолета есть специальное крепление для FPV-камеры и дополнительный вариант установки камеры на альтернативной версии кабины, который здесь не показан. Рисунок 7-23. FPV-камера и VTX установлены сверху фюзеляжа

Перед установкой я протестировал видеокамеру и VTX, заранее подготовив необходимую проводку: 4-контактный кабель для VTX (UART5) и AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 32 пробный перевод 3-контактный кабель для FPV-камеры (порт CAM на полетном контроллере). Важно: никогда не включайте VTX без подключенной антенны, поскольку это может повредить модуль VTX.

Smoke test

Перед использованием аккумуляторного блока 4S1P в нашей сборке важно выполнить smoke test, чтобы убедиться, что все компоненты работают правильно и нет утечек тока. Прежде всего нужно рассчитать ток. Для этой конфигурации я получил приблизительный ток 4.5 A. Для теста я подключил аккумулятор ко входу ToolKitRC M7 и задал параметры через интерфейс

Accessibility/Power следующим образом: Output Voltage = 14.8V и Max Current = 4.5 A, как показано. Рисунок 7-24. ToolkitRC M7 во время финального smoke test AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 33 пробный перевод Затем вместо аккумулятора я подключил выход ToolKitRC M7 к самолету и нажал кнопку Start. В моей сборке утечки не были обнаружены. Если бы утечки были найдены, устройство автоматически перезапустилось бы и предотвратило дальнейшую подачу тока на сборку. Этот smoke test подтвердил, что наша сборка безопасна и стабильна.

Прошивка ArduPlane

Как вы уже знаете, прошивка ArduPilot редко бывает предустановлена на полетных контроллерах. Например, SpeedyBee F405 Wing Mini по умолчанию поставляется с прошивкой iNav. Однако в этой сборке мы будем использовать ArduPlane вместо предустановленной прошивки. Для этого мы воспользуемся Betaflight Configurator для прошивки - так же, как делали в предыдущей главе с Rover, - но процесс будет немного отличаться из-за особенностей конструкции нашего FC. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 34 пробный перевод Рисунок 7-25. Основная плата SpeedyBee F405 и плата USB-удлинителя Сначала найдите подходящий кабель из комплекта

FC и соедините плату USB-удлинителя с основной платой FC. Это позволит подключить полетный контроллер к компьютеру, как показано выше. Затем перейдите в официальный репозиторий прошивок ArduPilot и найдите последнюю версию прошивки для вашего контроллера. Например, я использовал ссылку: https://firmware.ar dupilot.org/Plane/latest/SpeedyBeeF405WING. На этой странице нужно скачать файл arduplane_with_bl.hex - это прошивка ArduPlane, которую мы будем записывать в контроллер. Лично я предпочитаю прошивать последнюю версию ArduPilot до разводки проводов и сборки компонентов. Так можно убедиться, что полетный контроллер работает правильно и программное обеспечение установлено корректно, прежде чем

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 35 пробный перевод продолжать сборку. Рисунок 7-26. Загрузка прошивки в Betaflight Configurator из локального файла Существует несколько разных способов записать прошивку ArduPilot на полетный контроллер. Некоторые из них описаны на официальной странице документации: https://ardupilot.org/plane/do cs/common-loading-firmware-onto-chibios-only-boards .html. Однако, как вы знаете, мы будем использовать Betaflight Configurator, потому что он уже доступен и удобен для нашей конфигурации. После загрузки HEX-файла откройте Betaflight Configurator и перейдите на вкладку Update Firmware. Нажмите и удерживайте кнопку BOOT на

плате USB-удлинителя, затем подключите полетный контроллер к компьютеру USB-кабелем. Betaflight Configurator должен обнаружить плату в режиме DFU, как показано на изображении ниже. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 36 пробный перевод Рисунок 7-27. Прошивка из локального файла в Betaflight Configurator

Затем нажмите Load Firmware (Local) и выберите скачанный HEX-файл. Конфигуратор покажет имя загруженного файла в левом нижнем углу, например: Loaded local firmware: arduplane_with_bl.hex (2634304) На этом этапе включите флажки No reboot sequence и Full chip erase. Также выберите ваш полетный

контроллер из выпадающего списка над этими параметрами: этот выбор не влияет на саму прошивку, но необходим, чтобы Betaflight Configurator позволил продолжить. Когда все задано, нажмите Flash Firmware, чтобы начать процесс. Конфигуратор сначала сотрет чип, затем запишет прошивку и в конце проверит установку. При успешном завершении вы увидите зеленое окно статуса с сообщением “Programming: AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 37 пробный перевод SUCCESSFUL”. Рисунок 7-28. FC распознан в Mission Planner Если при прошивке возникнут проблемы, просто следуйте инструкциям на экране для их устранения - такое иногда случается. Если все прошло гладко,

отключите USB-кабель, откройте Mission Planner и подключите полетный контроллер к системе. Когда вы наклоняете или перемещаете FC, искусственный горизонт в Mission Planner должен реагировать соответственно. Это подтверждает, что прошивка установлена правильно и контроллер работает как ожидается.

Настройка ArduPlane

Следующий шаг - настроить все необходимые параметры, чтобы самолет корректно работал в разных режимах полета, которые мы планируем использовать. Для этого я буду использовать AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 38 пробный перевод интерфейс Mission Planner. В этом разделе мы настроим протоколы последовательных портов и

скорости передачи для различных периферийных устройств, настроим servo outputs для управления элеронами и элевонами, а также отрегулируем другие важные параметры. Прежде всего лучше начать настройку самолета с официального списка параметров: https://atomrc.com/pages/swordfish-1. В Full Parameter List ArduPilot есть кнопка Load from file, которая

позволяет импортировать эти параметры напрямую. Однако после их загрузки важно перепроверить - или хотя бы просмотреть - ключевые параметры ниже, чтобы убедиться, что все правильно настроено именно для вашей конфигурации. Правильная настройка - ключ к безопасному и стабильному полету. RC channels: RC5_OPTION = 153 - switch for ARM/DISARM RC10_OPTION = 94 - controls VTX power Serial ports: SERIAL1_PROTOCOL = 23 - RCIN SERIAL3_PROTOCOL = 5 - GPS SERIAL3_BAUD = 230 - baud rate for GPS SERIAL5_PROTOCOL = 44 - IRC Tramp protocol Servo output: SERVO1_FUNCTION = 70 - Throttle SERVO2_FUNCTION = 70 - Throttle SERVO3_FUNCTION = 4 - Aileron (Reversed) SERVO4_FUNCTION = 4 - Aileron (Reversed) SERVO8_FUNCTION = 79 - V-Tail Left SERVO9_FUNCTION = 80 - V-Tail Right (Reversed) AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 39 пробный перевод Рисунок 7-29. Настройки servo output Mixing and control: KFF_RDDRMIX = 0.5 - Rudder mixing gain KFF_THR2PTCH = 0 - Throttle-to-pitch feedforward MIXING_GAIN = 0.5 - V-tail or elevon mixing gain

MIXING_OFFSET = 0 - trim offset for the mixed surfaces Последняя версия прошивки включает эти параметры mixing по умолчанию. Arming: ARMING_CHECK = 0 - temporarily disables all arming checks (for testing/development) EK3_GPS_CHECK = 0 - disables GPS consistency check Flight modes: FLTMODE_CH = 7 - channel used to switch flight modes (chan7_row or RC7) AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 40 пробный перевод FLTMODE1 = 0 - MANUAL FLTMODE2 = 0

FLTMODE3 = 0 FLTMODE4 = 26 - Autoland FLTMODE5 = 0 FLTMODE6 = 10 - AUTO Передатчик RadioMaster ELRS Pocket M2 имеет трехпозиционный тумблер, назначенный на канал 7. Поэтому я настроил режимы 0, 2, 3 и 5 как технические заглушки, которые нельзя выбрать этим передатчиком. Используются только режимы 1, 4 и 6. LED and notification: SERVO7_FUNCTION = 120 - NeoPixel 1 (LED control) NTF_LED_BRIGHT = 2 - brightness level: Medium NTF_LED_LEN = 1 - number of LEDs

NTF_LED_OVERRIDE = 0 - Standard mode Как вы помните из предыдущего раздела, площадка S7 на FC подключена к индикатору WS2812B LED, который используется для отображения текущего статуса ArduPilot на правом крыле самолета. Значение LED будет подробно рассмотрено далее в этой главе. GPS, VTX, OSD: GPS1_TYPE = 2 - uBlox GPS module VTX_ENABLE = 1 - video transmitter enabled VTX_OPTIONS = 1 - Pitmode enabled VTX_POWER = 25 - transmission power (25 mW) VTX_BAND = 2 - band selection VTX_CHANNEL = 3 - channel selection AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 41 пробный перевод

Рисунок 7-30. Конфигурация VTX OSD1_ENABLE = 1 - OSD enabled OSD1_VTX_PWR_EN = 1 - display VTX power on screen OSD1_VTX_PWR_X = 2 - X position of power indicator OSD1_VTX_PWR_Y = 9 - Y position of power indicator

Когда настройка завершена, пора использовать ее и проверить функциональность самолета в реальном полете.

Автопилоты

В предыдущих главах мы изучали различные реализации автопилота на Python для Copter и Rover, демонстрируя, как они работают в режиме GUIDED через протокол MAVLink и позволяют companion computer (например, Raspberry Pi) полностью управлять транспортным средством в автономных операциях с CV на борту. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 42 пробный перевод Хорошая новость в том, что полетные контроллеры ArduPlane имеют встроенный автопилот, доступный в режиме AUTO и в нескольких других автономных режимах, включая RTL (Return to Launch), LAND, TAKEOFF и другие. Эти режимы позволяют самолету выполнять заранее заданные миссии и последовательности, значительно помогая пилоту

во время полета. Рисунок 7-31. Самолет с неподвижным крылом на миссии и его HUD В этом разделе мы рассмотрим планирование миссий и некоторые автономные полетные последовательности, которые особенно полезны для разведывательных дронов. Кроме того, я поделюсь наблюдениями по разработке пользовательских автопилотов на базе ИИ для самолетов с неподвижным крылом (самолетов с V-tail). Так что не будем терять ни минуты - погрузимся в интересный мир автопилотов на прошивке ArduPilot, которая теперь работает на вашем только что построенном самолете.

Встроенный автопилот

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 43 пробный перевод Прежде всего хочу подчеркнуть, что я не претендую на статус эксперта по планированию или выполнению миссий, поскольку не использовал эти функции в качестве профессионального пилота. Однако идеи, изложенные здесь, помогут понять общие принципы планирования миссий и научиться эффективно использовать встроенный автопилот для большинства разведывательных миссий - даже без Python и без разработки собственной архитектуры автопилота. Режимы RTL (Return to Launch), LAND, TAKEOFF и AUTO - лишь несколько из множества автономных режимов полета, доступных в ArduPlane. Краткий обзор:

• TAKEOFF - автоматически запускает самолет

и набирает заранее заданную высоту без ручного управления.

• AUTO - выполняет заранее заданную миссию,

состоящую из waypoint и команд, созданных в ground control station, например Mission Planner или QGC.

• RTL (Return to Launch) - безопасно

возвращает самолет к месту взлета и выполняет круги или посадку в зависимости от конфигурации.

• LAND - запускает автоматическую

последовательность посадки, ведя самолет через снижение и касание, используя бортовые датчики, GPS и компас. Эти режимы, вместе со многими другими

(например LOITER, CRUISE или FBWA), дают мощные возможности автоматизации, которые AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 44 пробный перевод

упрощают управление полетом и уменьшают нагрузку на пилота. Помните, что любой автономный режим в ArduPilot требует наличия GPS и компаса на борту. Кроме того, чтобы включить полностью автономную посадку с использованием заранее заданной посадочной последовательности, нужно установить RTL_AUTOLAND = 2 в конфигурации ArduPlane.

Это указывает самолету перейти прямо к landing sequence. Сделайте это так же, как раньше настраивали параметры в Full Parameter List. После настройки всего необходимого для автономного полета функция планирования миссии становится доступной на вкладке Plan программы Mission Planner, как показано ниже. Рисунок 7-32. Вкладка Plan в Mission Planner

Здесь вы можете легко добавить новый waypoint - точку, которую самолет должен достичь во время AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 45 пробный перевод миссии, - просто щелкнув левой кнопкой мыши по карте. Каждый раз, когда вы добавляете waypoint, в списке под картой появляется соответствующая строка с командой WAYPOINT.

Обратите особое внимание на параметр ALT: он задает высоту, которую самолет будет удерживать при подходе к этому waypoint. Вы можете добавить столько waypoint, сколько нужно, чтобы сформировать маршрут полета самолета в соответствии с задачей миссии. В конце списка включите landing sequence, используя команды DO_LAND_START,

LOITER_TO_ALT и LAND, как показано в примере. Это обеспечивает безопасную и плавную полностью автономную посадку автопилота.

• DO_LAND_START - инициирует процедуру

посадки в текущей точке или waypoint.

• LOITER_TO_ALT - дает самолету команду

выполнять loiter до достижения заданной высоты, что полезно для корректировки высоты захода перед снижением.

• LAND - выполняет финальное снижение и

касание. Комбинируя эти команды, автопилот может выполнить миссию от взлета до посадки без ручного вмешательства, делая разведывательные миссии намного более плавными. И да, не забудьте нажать кнопку Write на правой панели, чтобы сохранить заранее заданный маршрут в полетный контроллер перед отключением USB-кабеля и

выездом в поле для испытаний. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 46 пробный перевод Рисунок 7-33. Самолет на своем маршруте в Mission Planner Имейте в виду, что это только простой маршрут и простая миссия, которую мы настроили вместе. Вы можете создавать гораздо более продвинутые миссии - например, с использованием Points of

Interest (POI), где дрон автоматически разворачивает нос к цели, или миссии с командами съемки изображений цифровой камерой на борту. В качестве примечания: конфигурация, описанная в этой главе, не включает автоматический запуск камеры, но вы все равно можете записывать весь полет с помощью DVR на FPV-мониторе - как один из вариантов.

Во время автономных полетов по запланированному маршруту некоторые энтузиасты тестировали ATOMRC Swordfish с такой конфигурацией, включая аккумулятор 4S1P, и достигали почти 1 часа 30 минут полета с покрытием 80-100 km. Такая сборка хорошо подходит для разведывательных миссий AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 47 пробный перевод тактического уровня.

Пользовательский

автопилот

В предыдущих главах мы протестировали несколько пользовательских автопилотов, включая варианты с бортовым компьютерным зрением и возможностями target following. Честно говоря, встроенный автопилот ArduPilot сам по себе все еще не может выполнять отслеживание цели, распознавание объектов или другие продвинутые задачи ИИ. Однако для большинства разведывательных миссий этого достаточно: обычно нужно лишь следовать waypoint и записывать видео, чтобы увидеть территорию, над которой вы пролетаете. Если вам все же требуются функции на базе ИИ, можно построить более крупный самолет с неподвижным крылом, добавить companion computer и запускать его в режиме GUIDED, как мы

уже рассматривали ранее. Имейте в виду, что ATOMRC Swordfish ограничен по весу и пространству: рекомендованная нагрузка около 1200 g, а места для RPi или аналогичного companion computer часто остается мало. Насколько я слышал, нескольким энтузиастам удалось разместить RPi в аккумуляторном отсеке, но в моих собственных экспериментах у меня это не получилось. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 48 пробный перевод

Первый автономный полет

Наступает волнующий момент: вся конфигурация самолета с неподвижным крылом завершена, компоненты подключены, а параметры в ArduPilot настроены. Значит, мы готовы к финальному тесту всей системы. Перед выездом в поле нужно подключить аккумулятор 4S1P к самолету и проверить готовность дома. Сначала убедитесь, что радиопередатчик Radiomaster Pocket 2.4GHz TX правильно подключен к самолету и работает, а видеопередатчик (VTX) и камера функционируют и показывают видео на FPV-экране. Затем проверяем полетную логику. Когда мы отклоняем правый стик контроллера влево (ось roll), левый элерон должен пойти вверх, а правый элерон - вниз. Аналогично для yaw: если мы перемещаем

стик влево, левый elevon на V-tail должен пойти вверх, а правый elevon на V-tail - вниз. При pitch forward оба elevons на V-tail должны двигаться вверх, а при pitch backward оба должны двигаться вниз, помогая самолету подниматься или снижаться в полете во время миссии. После проверки полетной логики проверяем системный индикатор, который показывает работу автопилота (ArduPilot). Системный индикатор - LED на правом крыле - должен мигать синим при disarmed. После arming он должен перестать мигать и гореть постоянным синим, указывая на полную готовность к тесту. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 49 пробный перевод Согласно официальной документации ArduPilot,

status LED показывает текущее состояние системы. LED: https://ardupilot.org/plane/docs/common-leds-pix hawk.html Некоторая логика RGB LED на правом крыле: When DISARMED Blinking Blue - No GPS fix Blinking Green - GPS fix acquired When ARMED

Steady Green - 3D GPS fix Steady Blue - No GPS fix Failsafe indicators Blinking Red and Yellow - EKF failsafe Blinking Yellow - Radio / GCS / Battery failsafe Blinking Yellow and Blue - GPS glitch Чтобы быть готовыми к полевому тесту, дома мы

должны видеть мигающий синий RGB LED-индикатор (WS2812B), означающий отсутствие GPS fix. Если все перепроверено и готово, берем все оборудование - VTX-экран, Radiomaster Pocket TX, самолет с крыльями и аккумулятор - и едем в поле. Там собираем самолет, крепим крылья к фюзеляжу, устанавливаем пропеллеры и только затем подключаем аккумулятор 4S1P. Еще раз проверяем FPV-экран и передатчик, чтобы убедиться, что все корректно реагирует на движение стиков. После проверки всего готовимся к maiden flight.

Один человек запускает самолет, а другой (пилот) управляет throttle на передатчике (TX), увеличивая мощность и pitch up во время взлета. Когда самолет AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 50 пробный перевод достигнет высоты примерно 10-20 метров и будет стабилен в режиме MANUAL, можно наконец переключиться в AUTO заранее назначенным тумблером на TX и наблюдать, как самолет следует waypoint, заданным в предыдущем разделе этой главы. С этого момента, если все сделано правильно, наш самолет ATOMRC Swordfish выполнит свой первый автономный полет - как в настоящей разведывательной миссии - и вернется в точку посадки, следуя заранее заданной landing sequence, описанной ранее. Если вы довольны своим созданием, то я в равной степени доволен тем, что провел вас через эти инструкции, - значит, наша миссия выполнена. Если нет, вернитесь назад, изучите больше и устраните появившиеся проблемы. Затем попробуйте снова. Что бы ни случилось, не сдавайтесь - продолжайте улучшать, продолжайте развиваться, и в итоге у вас получится.

Итоги

Мы прошли долгий путь вместе: от покупки компонентов до сборки и тестирования нашего первого разведывательного дрона. Мы паяли, соединяли компоненты и проверяли их работоспособность. Я хочу подчеркнуть, что самая красивая сторона этой сборки - динамика полета нашего самолета с неподвижным крылом. Даже если он потеряет мотор, он продолжит лететь, демонстрируя AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 51 пробный перевод замечательную устойчивость и управляемость. По крайней мере для меня это выглядит действительно впечатляюще. В этой главе мы также углубились в планирование миссий и успешно провели эксперимент с заранее

заданными waypoint. Этот самолет точно следовал миссии и приземлился по заранее заданной посадочной последовательности в конце. Поздравляю с завершением этого пути! Вы освоили базовую конфигурацию самолетов с неподвижным крылом с прошивкой ArduPlane на борту и настроили компоненты так, чтобы они следовали правильной полетной логике, предназначенной для самолетов. Это только начало вашего пути, и я верю, что впереди вы сможете построить еще много красивых созданий. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 52 пробный перевод ГЛАВА 8.

УСТРАНЕНИЕ

НЕПОЛАДОК

Сборка и настройка автономных БПЛА - будь то Rover, FPV-copter или самолет с неподвижным крылом - не всегда проходит гладко. Даже при лучшей документации будут возникать неожиданные проблемы. Одни будут связаны с аппаратной частью (плохие пайки, неисправные компоненты, неправильная проводка), другие - с программным обеспечением (несовместимость драйверов, отсутствующие зависимости, несоответствие прошивок или неправильная настройка протоколов). Эта глава посвящена troubleshooting - тому, как распознавать распространенные проблемы и находить возможные решения. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 53 пробный перевод

Проблемы FPV-коптера

Betaflight

Дроны на базе Betaflight обычно становятся отправной точкой для многих хоббистов, поэтому мы начали наш путь именно с этого типа. Хотя в некоторых отношениях они проще ArduPilot, FPV-коптеры имеют собственные трудности. Распространенные проблемы:

• Плохие паяные соединения - моторы

дергаются или не вращаются. Решение: осмотрите пайку с увеличительным стеклом, переплавьте припой и убедитесь, что площадки не замкнуты мостиком.

• Приемник не bind-ится - ELRS receiver не

подключается к ELRS transmitter (RadioMaster TX). Решение: обновите прошивки TX и RX до одной версии, проверьте настройку UART в Betaflight Configurator и напряжение питания

(некоторым RX требуется 5 V).

• Дрон переворачивается при взлете (“death

roll”) - PID-настройки, порядок моторов или ориентация могут быть неправильными. Решение: проверьте порядок моторов в Betaflight Configurator в разделе “Motors”, подтвердите ориентацию полетного контроллера в setup и заново откалибруйте акселерометр.

• Failsafe срабатывает слишком часто - дрон

disarm-ится или неожиданно падает во время полета. Решение: проверьте силу радиоканала, расположение антенн и при необходимости AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 54 пробный перевод увеличьте задержку failsafe.

• Камера или VTX перегреваются - особенно

часто это происходит на столе, на земле. Решение: не держите VTX включенным длительное время без обдува; некоторые VTX имеют маломощный bench mode - включите его. Другие проблемы, связанные с Betaflight, можно опустить - не переживайте, решения легко найти поиском в интернете.

Проблемы ArduCopter с

AirSim

ArduCopter - мощная платформа, но даже в виртуальной среде вроде AirSim при настройке и тестировании могут возникать трудности. Хотя AirSim снижает риск падений и повреждения аппаратуры, аккуратная конфигурация и troubleshooting все равно необходимы. Распространенные проблемы:

• Симуляция не подключается к ArduCopter -

дрон не появляется или не реагирует в AirSim. Решение: убедитесь, что AirSim и ваш экземпляр ArduCopter SITL запущены на одной машине и используют правильную конфигурацию IP/port. Проверьте, что файл settings.json в AirSim задает правильный vehicle type (“ArduCopter”) и что SITL server слушает соединение.

• Нет телеметрии - MAVLink messages не

появляются в консоли автопилота. Решение: AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 55 пробный перевод проверьте, что MAVLink port, используемый AirSim, не совпадает с портом, к которому подключается код вашего автопилота. Убедитесь, что SITL работает и отправляет ожидаемые data streams.

• Дрон ведет себя нестабильно в симуляции -

внезапные перевороты, неожиданный yaw или нестабильное движение. Решение: проверьте physics settings AirSim (например wind или drag). Убедитесь, что код автопилота правильно интерпретирует симулированные position, velocity и attitude data. При необходимости настройте PID gains в параметрах SITL.

• Computer vision target tracking не работает -

виртуальная камера некорректно обнаруживает объекты или цели. Решение: проверьте, что AirSim предоставляет поток камеры с ожидаемым разрешением и форматом. Настройте модель YOLOv8 или preprocessing pipeline для работы с симулированными изображениями. Подтвердите, что преобразование координат (из пикселей

изображения в NED) учитывает ориентацию и масштаб камеры AirSim. Даже в полностью виртуальной конфигурации терпение является ключевым. AirSim позволяет свободно экспериментировать, тонко настраивать автопилот и проверять computer vision и автономный полет до перехода к реальным полетам.

Проблемы ArduRover

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 56 пробный перевод Rover объединяет много узлов: companion computer, telemetry, flight controller, sensors (GPS, compass, LiDAR) и модели computer vision. Поскольку вместе должно работать много подсистем, проблемы часто возникают на этапе интеграции. Распространенные проблемы:

• Конфликты зависимостей - Python packages

для MAVLink, OpenCV или YOLO не устанавливаются или конфликтуют с уже установленными библиотеками. Решение: используйте отдельное виртуальное окружение Python для проекта Rover на компьютере разработки.

• Телеметрия не подключается - модуль 3DR

Telemetry или SiK radios не устанавливают соединение. Решение: проверьте скорость порта (например 57600 baud), совпадение NET ID на обеих сторонах, правильное подключение антенн и то, что система распознает устройство.

• Проблемы компаса/GPS - “No GPS Fix” или

drift курса. Решение: отнесите GPS/compass module подальше от силовых проводов и ESC; проверьте видимость спутников с помощью iPhone.

• Vision tracking fails - следование за целью

теряется или нестабильно. Решение: проверьте условия освещения, настройте thresholds и другие параметры computer vision, уменьшите задержку, используя более эффективный camera pipeline (например GStreamer вместо OpenCV).

• LiDAR не обнаружен - RPLidar не показывает

данные. Решение: проверьте USB permissions в AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 57 пробный перевод Linux и протестируйте устройство через demo

application производителя перед интеграцией с ArduRover. Решайте все проблемы терпеливо и с уверенностью, уделяя время пониманию каждого компонента и того, как он взаимодействует как с системой в целом, так и с другими компонентами.

Проблемы ArduPlane

Самолеты с неподвижным крылом добавляют дополнительные сложности, особенно в аэродинамике. В отличие от коптеров, ошибки здесь могут разрушить самолет. Распространенные проблемы:

• Самолет не запускается / сразу срывается в

stall - CG (center of gravity) неправильный. Решение: отбалансируйте самолет согласно инструкциям производителя, обычно с небольшим смещением к носу.

• Серво работает в обратную сторону - ailerons,

rudder или elevator движутся не в ту сторону. Решение: проверьте в Mission Planner и выполните reverse каналов.

• Сигналы телеметрии слабые - особенно на

большой дальности. Решение: используйте направленные антенны, увеличьте output power или рассмотрите альтернативы вроде ELRS 915MHz или Crossfire, работающие на частотах, подходящих для дальних дистанций. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 58 пробный перевод

• Проблемы посадки - самолет перелетает точку

посадки или разбивается. Решение: настройте airspeed settings, связанные параметры и тестируйте auto-land на широких открытых площадках. Общий подход к устранению проблем:

• Терпение - ключевой фактор. Каждая

подсистема должна быть протестирована отдельно перед интеграцией.

• Документируйте все. Храните logs, схемы

проводки и резервные копии конфигурации.

• Тестируйте безопасно. Всегда проверяйте

новые сборки на открытых площадках или мягких поверхностях, чтобы минимизировать повреждения.

• Поддержка сообщества. Используйте форумы

вроде ArduPilot Discourse, Betaflight GitHub или RC Groups. Многие ваши проблемы не уникальны. Другие хоббисты помогут. Не переживайте и будьте счастливы :)

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 1 пробный перевод ГЛАВА 9.

НЕПРЕРЫВНОЕ

РАЗВИТИЕ

Уххх, мы почти достигли конца того, что я подготовил для вас. В предыдущих восьми главах мы рассмотрели, как закупать компоненты для построения FPV-дрона, ровера или даже самолета. Мы научились собирать и паять части, настраивать полетные контроллеры, интегрировать сопутствующие компьютеры, а также разрабатывать и отлаживать автопилоты на таких платформах, как Betaflight и ArduPilot. Мы также рассмотрели компьютерное зрение, экспериментировали с симуляциями в Microsoft AirSim для сценариев следования за целью и тестировали готовые сборки в реальных полетах - по пути обнаруживая как возможности, так и ограничения.

На протяжении этих глав мы получили более глубокое понимание автономного полета и AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 2 пробный перевод технологии БПЛА в целом. Если вернуться к главе 1, вы вспомните основную цель: построить автономный FPV-дрон, способный доставлять бутылку воды солдату в траншее , используя модель компьютерного зрения для распознавания окружения и объектов. Достигли ли мы этой цели полностью? Не в буквальном смысле. Но теперь у нас есть все основные строительные блоки, чтобы сделать такую систему реальностью. И это само по себе действительно вдохновляет. По крайней мере, для меня.

Есть много направлений, в которых автономные платформы, рассмотренные в этой книге, могут быть дополнительно улучшены:

• Betaflight FPV copter: интегрировать

модель компьютерного зрения с возможностями следования за целью для работы в средах без GNSS с использованием протокола MSP. Для этого требуются наружные испытания в безопасных зонах с мягкими поверхностями, чтобы минимизировать риски во время failsafe- или аварийных ситуаций.

• Simulated ArduCopter in AirSim: улучшить

динамику полета для более плавного и стабильного преследования цели, одновременно расширяя и уточняя тестовые сценарии.

• Computer vision model: обучить

пользовательскую модель YOLOv8, AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 3 пробный перевод способную обнаруживать танки или другие цели на линии фронта, обеспечивая распознавание и нейтрализацию реальных угроз.

• ArduRover autopilot: продвинуть

разработку за счет интеграции RPLidar для надежной навигации в средах без GNSS с использованием прошивки ArduPilot.

• Fixed-wing aircraft with ArduPlane:

интегрировать самолет с сопутствующим компьютером, чтобы обеспечить разведывательные миссии (операции) на базе ИИ.

Рисунок 9-1. Пайка компонентов FPV-коптера И это только начало - есть бесчисленное множество других улучшений и инноваций, которые мы, как сообщество, можем

продолжать развивать ради лучшего будущего. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 4 пробный перевод

ПОСЛЕСЛОВИЕ

Завершая это путешествие, я надеюсь, что вы получили ценные идеи и практические знания о построении автономных FPV-дронов. От понимания основ автономного управления полетом, интеграции компьютерного зрения и разработки системы автопилота до испытаний в реальных условиях - возможности действительно невероятны.

Когда я планировал опубликовать эту книгу, у меня было много разговоров с людьми, которые выражали опасения, что изложенные здесь знания могут попасть не в те руки, потенциально принося пользу нашим врагам. Меня убеждали пересмотреть вопрос о том, стоит ли публиковать ее вообще. Как вы помните, моей основной целью всегда было

распространение знаний о разработке автономных FPV-дронов среди украинских хоббистов и энтузиастов, чтобы помочь нам выиграть войну. Я надеюсь, что эта книга выполнит эту цель. В противном случае я считаю, что нашим врагам будет трудно с закупкой компонентов из-за санкций. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 5 пробный перевод Я хочу, чтобы вы понимали: эта книга - не просто техническое руководство. Это свидетельство инноваций, творчества и способности применять технологии значимыми способами. И я имею в виду не только многочисленные варианты, объясненные в главе «Обзор». Есть нечто большее.

Я призываю вас продолжать исследовать, экспериментировать и совершенствовать собственные проекты дронов. Технологии постоянно развиваются, и с вашими новыми навыками и знаниями вы хорошо подготовлены к тому, чтобы внести вклад в будущее автономных дронов и роботов. Помните, это только начало - ваш следующий большой проект уже совсем рядом. Спасибо, что прочитали эту книгу, и я с нетерпением жду того, что вы создадите дальше - будь то для собственных нужд, стартапов или даже для поддержки героических украинских защитников. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 6 пробный перевод

ПРИЛОЖЕНИЕ

Absolute coordinates: Глобальные GPS-координаты, привязанные к WGS84, с высотой над уровнем моря. AI-driven drone: Дрон, управляемый искусственным интеллектом для автономного принятия решений. AirSim: Симулятор для дронов, автомобилей и других автономных транспортных средств, используемый для тестирования и обучения. ALTHOLD mode: Режим полета, в котором дрон на Betaflight автоматически удерживает высоту, позволяя при этом вручную управлять другими осями. ArduPilot: Набор программного обеспечения автопилота с открытым исходным кодом для управления операциями дронов, самолетов и

роверов. ArduPlane: Версия ArduPilot, специально предназначенная для самолетов с неподвижным крылом, а также для ATOMRC Swordfish Glider. ArduRover: Версия прошивки ArduPilot, предназначенная для наземных транспортных средств, таких как роверы и автомобили. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 7 пробный перевод Autopilot: Программное обеспечение, которое позволяет дрону летать и выполнять задачи без ручного управления. Autonomous flight: Полет, выполняемый дроном без вмешательства человека. Autonomous UAV: Беспилотный летательный аппарат, который работает независимо, используя заранее запрограммированное программное обеспечение. Bounding box: Прямоугольная рамка, нарисованная вокруг объекта на изображении для указания его положения, распознанного моделью YOLO. Betaflight: Программное обеспечение управления полетом с открытым исходным кодом для многороторных FPV-дронов, оптимизированное для скорости и акробатики. Companion computer: Вторичный бортовой компьютер, который помогает с обработкой данных и сложными задачами. Computer Vision: Технология, которая позволяет машинам интерпретировать и понимать визуальную информацию.

Dataset: Структурированная коллекция изображений или данных, используемая для обучения и оценки моделей компьютерного зрения (изображения и метки). Drop system: Механизм дрона для сброса полезной нагрузки, например воды или припасов, в определенных местах. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO...

Стр. 8 пробный перевод Electronic Warfare: Использование электронных сигналов для нарушения операций противника, включая системы дронов. Embedded Autopilot: Прошивка ArduPilot включает встроенные возможности маршрутизации, позволяя заранее планировать миссии и выполнять их автономно во время полета. GNSS environment: Зоны, где сигналы Global Navigation Satellite System, такие как GPS, доступны для позиционирования. Google Colab: Облачная платформа для запуска Python-notebooks с бесплатным доступом к GPU для задач ИИ и машинного обучения. GPU accelerator: Графический процессор, используемый для ускорения вычислений и обучения ИИ, например NVIDIA Tesla T4 GPU. GCS (Ground Control Station): Программная платформа, которая позволяет операторам удаленно мониторить и управлять дронами, например ArduPilot GCS Ground Control или ArduPilot Mission Planner. GRS (Ground Robotics System): Наземная

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

AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 9 пробный перевод FPV drone: Дрон с видом от первого лица, где оператор в реальном времени видит изображение с камеры дрона. Home point: GPS-точка, где дрон был армирован или вручную задан как точка возврата (используется в режиме RTL в

ArduPilot). IBVS: Image-Based Visual Servoing, техника управления, которая использует визуальную информацию с камеры для наведения робота или дрона. Landing sequence: Запрограммированная траектория снижения, безопасно направляющая дрон к земле. Используется в миссиях ArduPilot.

Logging system: Система, которая записывает события и данные для мониторинга и отладки. MAVLink protocol: Протокол связи для беспилотных транспортных средств, позволяющий автопилоту и системам управления обмениваться данными. Microsoft AirSim: Симулятор для автономных систем, часто используемый для тестирования алгоритмов ИИ и дронов. Mission: Последовательность waypoints и команд, определяющая автономную траекторию полета дрона (режим AUTO в ArduPilot). Mission Planner: Программное обеспечение наземного управления для планирования, мониторинга и управления автономными транспортными средствами с использованием прошивки ArduPilot. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 10 пробный перевод Mono: Фреймворк с открытым исходным кодом, который позволяет запускать Windows-приложения, такие как Mission Planner, в системах Linux. MSP protocol: MultiWii Serial Protocol,

протокол связи, используемый в полетных контроллерах на базе Betaflight для управления и телеметрии. MSP_OVERRIDE mode: Режим Betaflight, который позволяет напрямую управлять моторами для автономного полета, обходя стандартный RC-вход. Non-GNSS environment: Зоны, где сигналы

GPS подавлены или недоступны. NED coordinates: Система координат, представляющая положения через оси North, East и Down. Object recognition: Способность системы обнаруживать и идентифицировать конкретные объекты в поле зрения. OpenCV: Библиотека компьютерного зрения с открытым исходным кодом, используемая для обработки изображений и задач компьютерного зрения. Optical flow: Техника компьютерного зрения, которая вычисляет движение объектов между последовательными кадрами изображения. OSD: On-Screen Display, функция, накладывающая полетные данные, такие как батарея, высота и скорость, на видеопоток. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 11 пробный перевод PID tuning: Процесс настройки пропорционального, интегрального и дифференциального коэффициентов системы управления для достижения стабильного полета.

Pitch: Вращение дрона вокруг его поперечной оси, управляющее движением носа вверх или вниз. Pixhawk: Полетный контроллер, используемый в дронах и робототехнике для управления датчиками, моторами и навигацией, включая среды без GNSS. Relative coordinates: Положения, заданные относительно home point, с высотой, измеряемой над уровнем взлета. Raspberry Pi: Недорогой компактный компьютер, часто используемый как сопутствующий компьютер в дронах. Roboflow: Инструмент для построения и обучения моделей компьютерного зрения. Roll: Вращение дрона вокруг его продольной

оси, управляющее наклоном влево или вправо. RPLidar: Компактный 360° LiDAR-сенсор, используемый для картирования, обнаружения препятствий и измерения расстояния в робототехнике и дронах. Servos: Небольшие электромеханические устройства, используемые для управления рулевыми поверхностями или механизмами на дронах и транспортных средствах. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 12 пробный перевод SITL (Software-In-The-Loop): Среда симуляции, которая запускает программное обеспечение автопилота на компьютере, позволяя тестировать и разрабатывать без физического дрона.

Simulated flight: Виртуальный полет в симулированной среде, где поведение дрона воспроизводится программно, что позволяет тестировать и разрабатывать системы автопилота, алгоритмы управления и компьютерное зрение без полета реального летательного аппарата. SLAM: Simultaneous Localization and Mapping, техника, используемая дронами для построения карты окружения при одновременном отслеживании своего положения. State-of-the-art model: Самая продвинутая и эффективная модель ИИ, доступная в настоящий момент, например YOLO для обнаружения объектов. Target-following algorithm: Алгоритм,

позволяющий дрону отслеживать конкретный объект или цель и следовать за ним. Telemetry: Процесс удаленной отправки и получения данных, часто от дрона к системе управления. Terrain coordinates: Координаты, скорректированные с учетом высоты местности, поддерживающие постоянную высоту над рельефом. AI-DRIVEN AUTONOMOUS FPV DRONE DEVELOPMENT: FOR HO... Стр. 13 пробный перевод Throttle: Управляющий вход, регулирующий мощность моторов дрона, управляя его высотой или скоростью. Visual servoing: Техника, при которой визуальная обратная связь используется для

управления движением робота или FPV-дрона. Visual odometry: Процесс оценки положения и движения транспортного средства путем анализа последовательных изображений с камеры (скорость и направление). Visual positioning: Процесс оценки положения транспортного средства с использованием визуальной информации с камер, без обязательного определения его скорости или движения. Оценивает только положение. Visual based Navigation: Навигация, которая в основном опирается на визуальную информацию с камер, а не на GPS. VTX: Video Transmitter, устройство, которое передает живое видео с камеры дрона на наземную станцию или FPV-очки.

UAV: Unmanned Aerial Vehicle, летательный дрон без пилота-человека на борту. Ultralytics Hub: Платформа для обучения, развертывания и управления моделями YOLO и другими системами зрения на базе ИИ. Waypoint: Определенная GPS-позиция (широта, долгота, высота), используемая как навигационная цель в миссии.