Skip to content

Глава 4. Практическая часть

Правила техники безопасности при эксплуатации квадрокоптера

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

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

  • Перед началом эксплуатации мультикоптера ознакомьтесь с действующими законодательными нормами в части порядка использования воздушного пространства, регистрации и учёта БПЛА и неукоснительно соблюдайте их;

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

  • Перед каждым полётом проверяйте мультикоптер и все его детали и элементы конструкции на целостность, они не должны иметь механических повреждений;

  • Перед выполнением первого полёта убедитесь, что вы внимательно изучили настоящее методическое пособие, поняли все приведённые в нём указания и рекомендации и готовы их ответственно соблюдать;

  • Сборка и эксплуатация мультикоптера лицами, не достигшими 18-летнего возраста, должна осуществляться под присмотром компетентных и ответственных взрослых;

  • Запрещено обслуживание, включение и управление БПЛА в состоянии алкогольного и наркотического опьянения;

  • Запрещены полёты БПЛА вблизи линий электропередач, радиолокационных станций и других источников сильного электромагнитного излучения;

  • Запрещено присутствие свободно передвигающихся домашних животных в местах полётов БПЛА;

  • Полёты мультикоптеров массой до 250гр выполняются в просторных помещениях либо на открытых площадках в безветренную погоду, полёты мультикоптеров массой свыше 250 гр выполняются на открытых площадках при ветре не более 8 м/с;

  • При выполнении полётов в помещении необходимо наличие защитной сетки с размером ячейки менее размера мультикоптера между местом выполнения полёта и зрителями, и другими лицами. Рекомендуется использование куба с длиной стороны 3 метра;

  • Всегда сначала включайте передатчик системы радиоуправления, затем подключайте силовой аккумулятор мультикоптера;

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

  • Перед проверкой работоспособности мультикоптера отойдите от него на расстояние не менее двух метров. В процессе выполнение полёта не допускайте нахождение БПЛА на расстоянии более двух метров от вас и других людей до момента выключения двигателей;

  • Остерегайтесь вращающихся деталей БПЛА, таких как воздушные винты. Помните, что они могут стать причиной серьёзных травм, в том числе опасных для жизни;

  • При полётах БПЛА визуально (без FPV-оборудования) разрешено нахождение зрителей и других лиц только за спиной оператора, в этом случае мультикоптер находится в воздухе строго перед оператором;

  • При полётах на дальние расстояния, в том числе в автоматическом режиме, запрещается нахождение зрителей и других лиц на траектории полёта БПЛА;

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

  • Выключайте передатчик системы радиоуправления только после выключения мультикоптера;

  • При эксплуатации БПЛА в первую очередь руководствуйтесь здравым смыслом и принимайте решения, адекватные ситуации.

Правила техники безопасности при хранении, транспортировке и эксплуатации аккумуляторов

В составе комплекта мультикоптера и его оборудования могут использоваться LiPo, LiIon, LiFe и LiHV аккумуляторы. Все перечисленные выше типы относятся к литиевым аккумуляторам и при неправильном обращении могут стать причиной возникновения пожара, а также серьёзных травм, в том числе опасных для жизни.

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

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

  • Храните аккумуляторы исключительно в ёмкостях из плотных несгораемых материалов;

  • В процессе хранения и транспортировки не допускайте короткого замыкания аккумуляторов. Категорически запрещён контакт аккумуляторной батареи и её силового и балансировочного разъёмов с металлическими предметами.

  • Утилизируйте использованные и вышедшие из строя литиевые аккумуляторы в соответствии с действующим федеральным и местным законодательством;

  • Перед началом эксплуатации аккумулятора проведите его осмотр. Аккумулятор, его кабели и разъёмы не должны иметь механических повреждений. Также запрещена эксплуатация аккумуляторов, имеющих вздутие или подозрительный запах. Проводите осмотр перед каждым применением аккумулятора;

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

  • Не заряжайте аккумулятор без присмотра. В случае вздутия или нагрева аккумулятора в процессе заряда незамедлительно прервите процесс, поместите аккумулятор в огнеупорную ёмкость и утилизируйте в соответствии с действующим законодательством;

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

Симулятор

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

Системные требования и установка

Данное программное обеспечение поставляется в виде архива с симулятором.

Перед установкой обращаем внимание, что компьютер соответствует системным требованиям.

  • Операционная система: Windows 10 / Windows 11(только 64-бит).

  • Графический процессор: совместимый с DirectX 11 / OpenGL 4.5 NVIDIA GeForce GTX 1660 super или мощнее.

  • Свободное место на диске: 5 Гб.

  • Процессор: core i3 6100 и выше.

  • Оперативная память: 8 Гб.

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

При соблюдении данных условий виртуальное окружение будет отрисовываться более 60 кадров в секунду.

Установка симулятора

Скачиваем симулятор EduTechSim в виде архива.

Распаковываем архив. Он содержит папку «EduTechSim» с предварительно скомпилированным симулятором. Открыв папку «EduTechSim», увидим файл приложения «EduTechSim», запускаем его (см. Рис. 4.1).

Рис. 4.1. Папка с установочным файлом

Возможно при первом запуске система безопасности предупредит об угрозе, но требуется выбрать выполнение данного файла (см. Рис. 4.2).

Рис. 4.2. **Окно системы Windows

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

При первом запуске предоставляем доступ к локальной сети, нажав «Разрешить», разрешаем общедоступным и частным сетям доступ к конфигуратору полетного контроллера inav_7.0.0_sitl (см. Рис. 4.3).

Рис. 4.3. Разрешение на доступ к сетям

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

Есть вероятность, что Безопасность Windows распознает данный симулятор как угрозу и не позволит повторно запустить. Для решения данной проблемы:

  1. Открываем «Безопасность Windows», самый быстрый способ это через поиск (см. Рис. 4.4).

Рис. 4.4. Безопасность Windows

  1. Открываем раздел «Защита от вирусов и угроз» (см. Рис. 4.5).

Рис. 4.5. Защита от угроз и вирусов

  1. Заходим в «Управление настройками».

  2. Прокрутим параметры до ссылки «Добавление или удаление исключений» и нажмем данный пункт (Рис. 4.6).

Рис. 4.6. Добавление исключений

  1. Нажимаем «Добавить исключение» и выбираем «Папка». В открывшимся проводнике выбираем папку с симулятором (Рис. 4.7).

Рис. 4.7. Исключения

  1. Теперь симулятор является исключением для системы безопасности и сможет повторно запускаться (см. Рис. 4.8).

Рис. 4.8. Исключения

Настройки симулятора

Главное меню содержит основной инструментарий симулятора EduSim: «Начать», «Конструктор уровней», «Настройки» и «Выход».

Выход

«Выход» завершает работу и закрывает симулятор.

Начать

Переход в рабочее пространство симуляции

Конструктор уровней

В конструкторе предоставляется возможность создать собственную карту или отредактировать уже существующую. Нажав «Создание новой карты» можно создать как закрытую локацию (indoor), так и открытую (outdoor).

Настройки

При переходе в «Настройки» доступны три области настроек: «Графика», «Контроллер», «Управление».

Вкладка «Графика» содержит следующие поля:

  • Режим отображения - это параметр, который определяет способ представления изображения на экране устройства. Может быть «Полноэкранным», «Оконным» и «Окно без рамки».

  • Разрешение экрана - количество пикселей в строке, где первое число — их количество по горизонтали, второе — по вертикали. Может принимать значения доступные для Вашего монитора, например, 1024x768, 1152x864, 1280x720, 1280x800, 1280x1024, 1280x960, 1366x768, 1920*1080, 1440x900, 1440x1080, 1600x900, 1600x1024, 1680x1050, 1920x1080. Чем выше разрешение, тем из большего количества пикселей состоит изображение, а значит, тем оно четче и детализированнее.

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

  • Качество графики - регулирует общее качество картинки (Эпическое, Очень высокое, Высокое, Среднее и Низкое ). Чем выше качество — тем четче, реалистичнее картинка. А также с помощью параметров Качество текстур, Дальность прорисовки, Глобальное освещение, Качество теней, Качество шейдеров, Пост-обработка, Качество отражений, Качество эффектов, Качество растительности, Качество сглаживания можно задать пользовательские настройки.

Во вкладке настроек «Контроллер» происходит поиск и настройка аппаратуры управления.

После нахождения пульта, появляется возможность откалибровать пульт в симуляторе, назначив новые стики на Roll, Pitch, Yaw, Throttle. Для этого требуется нажать на кнопку «Начать калибровку» и следовать инструкциям, описанным в симуляторе. В конце калибровки есть возможность инвертировать значение канала.

Во вкладке «Управление» находится основная информация о горячих клавишах и возможностях, закрепленных за ними.

Пользовательский режим

Рабочее пространство начинается с выбора режима. Возможно работать как в «Одиночном режиме», так и в «Многопользовательском режиме», создав свое лобби или подключившись в уже созданное.

Выбор режима

При выборе «Одиночный режим», следующим шагом требуется сделать выбор по режиму работы. Представлены два режима: «Полет и планирование в свободном режиме» и «Обучающие уроки».

«Полет и планирование в свободном режиме»: этот режим дает полную свободу. Можно управлять любым доступным БПЛА, не выбирая точный маршрут и выполняя маневры, не связанные с заданием. Здесь можно развивать навыки пилотирования и планирования полетов без каких-либо ограничений в пределах симулируемой области.

В режиме «Обучающие уроки»: можно изучать основы управления и навигации БПЛА. Задания и уроки помогут овладеть техникой управления дроном, освоить умения планирования полетов, выполнять различные маневры и приобрести необходимые навыки для безопасного и эффективного управления дроном.

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

Выбор дрона

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

  1. Учебный БПЛА (Расширенный) - это квадрокоптер для образовательных целей. Он оснащен различными сенсорами (например, лидар, ультразвуковой датчик), камерами и другими инструментами, что позволит учащимся изучить основы автопилотирования, демонстрировать принципы и концепции, связанных с робототехникой, искусственным интеллектом и компьютерным зрением.

    Масса дрона 0.87 кг, скорость - 19 м/с.
    

  2. Учебный БПЛА - это квадрокоптер для образовательных целей. Это облегченный вариант Учебный БПЛА (Расширенный). По сравнению с Учебным БПЛА (Расширенный), на нем меньше датчиков, а значит и нагрузка на него меньше, что делает его манёвреннее и быстрее.

    Масса дрона 0.7 кг, скорость - 23 м/с.
    

  3. Учебный БПЛА (Конструктор) - это квадрокоптер для образовательных целей. В сравнении с Учебным БПЛА (Расширенный) имеет другой набор датчиков и оснащен модулем захвата.

    Масса дрона 0,92кг, скорость - 23м/с.
    

  4. Учебный FPV БПЛА - это квадрокоптер для образовательных целей. Он оснащен различными датчиками, камерами и другими инструментами, что позволяет учащимся изучать основы пилотирования и технологии полета от первого лица (FPV).

    Масса дрона 0,47кг, скорость - 27м/с
    

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

    Масса дрона - 0,23кг, скорость 20м/с.
    

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

    Масса дрона 20 кг, скорость - 15м/с.
    

  7. VTOL - Это тип самолета, который может взлетать, зависать и приземляться вертикально, без взлетно-посадочной полосы.

    Масса - 1кг, скорость - 30м/с.
    

  8. Планер - это БПЛА, выполненный в виде монокрыла, оснащенного одним приводным винтом и двумя сервомоторами для управления элеронами. Планер оснащен камерой для выполнения задач по аэрофотосъемке.

    Масса планера 0,6 кг, максимальная скорость полета 40 м/с.
    

Выбор локации

В качестве локации доступны карты:

Полигон - на карте расположены препятствия с нанесенными Aruco маркерами. У данной локации нет геопривязки. Площадь карты 49 м2.

Краснодарский край - на карте расположены равнины с полями и холмистые земли с реками и озерами. У данной локации есть реальная геопривязка. Площадь карты 1 км2.

Алтай - это обширные ландшафты степного и лесостепного типов. Большое разнообразие горно-лесного ландшафта. У данной локации есть реальная геопривязка. Площадь карты 10 км2.

Лес у озера - на карте представлен участок природы, расположенный возле озера и покрытый густым лесом с перепадом высот до 30м. У данной локации нет геопривязки. Площадь карты 3 км2.

Полигон (П) - карта Полигона без препятствий, но с подвижными Aruco маркерами. У данной локации нет геопривязки. Площадь карты 49 м2.

Складское помещение - на карте представлено закрытое помещение со стеллажами и грузовыми контейнерами. У данной локации нет геопривязки. Площадь карты 5000 м2.

Ангар - карта Складского помещения, но с другим расположением элементов. У данной локации нет геопривязки. Площадь карты 5000 м2.

Для переключения между картами кликайте по выделенным областям.

После выбора необходимой карты нажмите на кнопку «Начать» для перехода в симуляционную среду.

Для возвращения к Выбору дрона нажмите на кнопку «К выбору дрона».

Симуляционная среда

После выбора дрона и карты пользователь попадает в симуляционную среду.

В верхней части отображается информация о режиме полета.

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

В нижней части располагается информация о расстоянии от места старта (D), высота относительно точки старта (H), горизонтальная скорость (H.S) и вертикальная скорость (V.S).

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

## Настройка окружения

Для написания кода используется редактор или IDE, которая поддерживает языки Python и C++. Загружаем дистрибутив Python с официального сайта ht Открываем командную строку (терминал) и вводим:

python --version

Появится версия установленного Python.

Для установки библиотек используется pip - менеджер пакетов, поставляемый с Python, позволяющий устанавливать и управлять библиотеками. Требуется установить необходимые библиотеки, введя команды

pip install numpy

pip install matplotlib

pip install msgpack-rpc-python

Скачиваем библиотеку AirSim для работы с симулятором по ссылке https://github.com/AgroTechAvia/AirSimApi с помощью команды: git clone https://github.com/AgroTechAvia/AirSimApi ` Теперь в появившейся папке создаем и сохраним все скрипты, связанные с программированием в симуляторе.

API

Симулятор EduTechSim предоставляет возможность программирования БПЛА. EduTechSim позволяет пользователям программировать поведение БПЛА с помощью различных языков программирования, в том числе Python и C++.

Для управления БПЛА используется AirSim и доступны следующие API:

  • confirmConnection() - проверяет состояние соединения каждую секунду и выводит информацию о ходе подключения на консоль.

  • isApiControlEnabled() - возвращает true, если установлено управление API. Если оно равно false (настройка по умолчанию), вызовы API будут игнорироваться.

  • enableApiControl(is_enabled, vehicle_name=’’) - включает или отключает управление API для транспортного средства, соответствующего vehicle_name

    Параметры:

    • is_enabled (bool) – True для включения, False для отключения управления API

    • vehicle_name (str, необязательно) – Название коптера, на которое будет отправлена эта команда.

  • armDisarm(arm, vehicle_name=’’) - разблокировка/блокировка моторов коптера

    Параметры:

    • arm (bool) – True для постановки на охрану, False для снятия дрона с охраны

    • vehicle_name (str, необязательно) – Название коптера, на которое будет отправлена эта команда.

  • setMode(mode) - устанавливает режим полета для дрона

    Параметры:

    • ACRO - Дрон полностью подчиняется командам оператора

    • STABILIZE - Дрон автоматически стабилизирует свое положение и высоту

    • POS_ALT_HOLD - Дрон автоматически удерживает свою позицию и высоту в фиксированной точке.

    • WP_MODE - Дрон автоматически следует по заранее определенному набору точек маршрута.

  • moveByRollPitchYawThrottleAsync(roll, pitch, yaw, throttle, duration, vehicle_name=’’) - задание угла крена, тангажа и рыскания в диапазоне от -1 до 1. В зависимости от выбранного режима величина будет пропорционально равна либо углу поворота (в случае режима стабилизации), либо скорости поворота (ACRO режим). Высота регулируется в диапазоне от 0 до 1, в режиме althold poshold throttle отвечает на скорость подъема/опускания (-1 макс скорость опускания, 1 макс скорость подъема).

    Параметры:

    • roll (float) – Желаемый угол крена.

    • pitch (float) – Желаемый угол наклона.

    • yaw (float) – Желаемый угол рыскания.

  • дроссельная заслонка (высота) – Желаемый дроссель (от 0.0 до 1.0)

  • Продолжительность (float) – Желаемый промежуток времени (секунды) для отправки этой команды в течение

  • vehicle_name (str, необязательно) – Название мультикоптера, на который будет отправлена эта команда.

  • addWaypoints(waypoints) - добавляет новые точки маршрута в текущую миссию дрона. Точка маршрута определяет положение, которое дрон должен достичь во время миссии.

Объект airsim.Waypoint имеет следующие параметры:

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

  • speed - Желаемая скорость полета к точке маршрута в метрах в секунду.

  • climb_rate - Желаемая скорость набора высоты при приближении к точке маршрута в метрах в секунду.

  • auto_flight - Флаг, указывающий, должен ли дрон автоматически лететь к точке маршрута.

  • angle - Угол ориентации дрона в данной точке маршрута.

  • addWaypointsToMission(waypoints) - добавляет новые точки маршрута в текущую миссию дрона, где waypoints — это список объектов airsim.Waypoint. Отличие метода addWaypointsToMission от addWaypoints заключается в том, что addWaypointsToMission очищает все существующие точки маршрута в миссии, прежде чем добавлять новые. Это полезно, если вы хотите полностью заменить текущий набор точек маршрута.

Объект airsim.Waypoint имеет следующие параметры:

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

  • speed - Желаемая скорость полета к точке маршрута в метрах в секунду.

  • climb_rate - Желаемая скорость набора высоты при приближении к точке маршрута в метрах в секунду.

  • auto_flight - Флаг, указывающий, должен ли дрон автоматически лететь к точке маршрута.

  • angle - Угол ориентации дрона в данной точке маршрута.

  • SetLEDCmd(id, флаг true/false вкл выкл светодиод) - управляет светодиодной лентой

    Параметры:

    • id(int) - Уникальный номер объекта

    • flag(bool) - True для включения, False для отключения светодиодной ленты

Далее представлены примеры применения API.

Взлет-посадка в симуляторе

Открываем симулятор в «Одиночном режиме» в «Свободном полете». Параллельно открываем среду разработки и вводим код для взлета и посадки. После ввода и запуска кода, дрон должен подняться, на некоторое время зависнуть и приземлиться.

python
import airsim
import time

## Создаем клиент
AirSim client = airsim.MultirotorClient()

## Подтверждаем соединение с симулятором
client.confirmConnection()

## Включаем управление API
client.enableApiControl(True)

## Проверяем, включено ли управление API

print("API Control enabled: %s" % client.isApiControlEnabled())

#Переводим дрон в состояние ARM
client.armDisarm(True)

#Переключаемся в режим удержания позиции и высоты
client.setMode(airsim.AirMultirotorMode.POS_ALT_HOLD)

time.sleep(1)

## Движение дрона вверх
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 1, 1)
time.sleep(5)

## Движение дрона вниз
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.8, 1)
time.sleep(5)
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.6, 1)
time.sleep(5)
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.4, 1)
time.sleep(5)
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.1, 1)
time.sleep(5)
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0, 1)

#Переводим дрон в состояние DISARM
client.armDisarm(False)

## Отключаем управление API
client.enableApiControl(False)

Перемещение в симуляторе

Открываем симулятор в «Одиночном режиме» в «Свободном полете». Параллельно открываем среду разработки и вводим код для взлета и посадки. После ввода и запуска кода, дрон должен подняться, пролететь вперед и приземлиться.

python
import airsim
import time
## Создаем клиент
AirSim client = airsim.MultirotorClient()

## Подтверждаем соединение с симулятором
client.confirmConnection()

## Включаем управление API
client.enableApiControl(True)

## Проверяем, включено ли управление API

print("API Control enabled: %s" % client.isApiControlEnabled())

#Переводим дрон в состояние ARM
client.armDisarm(True)

#Переключаемся в режим удержания позиции и высоты
client.setMode(airsim.AirMultirotorMode.POS_ALT_HOLD)

time.sleep(1)

## Движение дрона вверх
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 1, 1)
time.sleep(5)

## Движение дрона вниз
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.8, 1)
time.sleep(5)

## Движение дрона вперед
client.moveByRollPitchYawThrottleAsync(0, -0.5, 0, 0.7, 1)
time.sleep(5)

client.moveByRollPitchYawThrottleAsync(0, -0.2, 0, 0.7, 1)
time.sleep(5)

## Движение дрона вниз
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.6, 1)
time.sleep(5)
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.4, 1)
time.sleep(5)
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.1, 1)
time.sleep(5) client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0, 1)

## Переводим дрон в состояние DISARM
client.armDisarm(False)

## Отключаем управление API
client.enableApiControl(False)

Смещение в симуляторе

Открываем симулятор в «Одиночном режиме» в «Свободном полете». Параллельно открываем среду разработки и вводим код для взлета и посадки. После ввода и запуска кода, дрон должен подняться, пролететь вперед, повернуть вправо (по диагонали) и приземлиться.

python
import airsim
import time

## Создаем клиент AirSim
client = airsim.MultirotorClient()

## Подтверждаем соединение с симулятором
client.confirmConnection()

## Включаем управление API
client.enableApiControl(True)

## Проверяем, включено ли управление API

print("API Control enabled: %s" % client.isApiControlEnabled())

#Переводим дрон в состояние ARM
client.armDisarm(True)

#Переключаемся в режим удержания позиции и высоты
client.setMode(airsim.AirMultirotorMode.POS_ALT_HOLD)

time.sleep(1)

## Движение дрона вверх
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 1, 1)
time.sleep(5)

## Движение дрона вниз
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.8, 1)
time.sleep(5)

## Движение дрона вперед и в сторону
client.moveByRollPitchYawThrottleAsync(0.5, -0.5, 0, 0.7, 1)
time.sleep(5)

client.moveByRollPitchYawThrottleAsync(-0,3, -0.2, 0, 0.7, 1)
time.sleep(5)

## Движение дрона вниз
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.6, 1)
time.sleep(5)
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.4, 1)
time.sleep(5)
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0.1, 1)
time.sleep(5)
client.moveByRollPitchYawThrottleAsync(0, 0, 0, 0, 1)

## Переводим дрон в состояние DISARM
client.armDisarm(False)

## Отключаем управление API
client.enableApiControl(False)

Кейс с виртуальным пультом управления

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

Убедимся, что батарея полностью заряжена.

Проверяем пропеллеры на наличие повреждений и правильность установки.

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

Для работы подключаемся к Wi-Fi сети, которую создает дрон. Пароль: 12345678

Введя в браузере выше указанный адрес с указанием порта 8775 http://192.168.2.113:8775/ откроется пульт, содержащий вывод изображения, джойстик и каналы управления, имитирующие реальную аппаратуру управления.

При необходимости, требуется перезагрузить веб-страницу. Как только появится изображение, дрон готов к работе.

Переводим дрон в состояние ARM, нажав на кнопку «ARM», после того как винты закрутятся, кнопка «ARM» превратится в «DISARM» и можно управлять дроном через джойстик.

После полета сажаем дрон, переводим в состояние DISARM, отключаем питание.

Индивидуальное программирование

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

Для изменения имени точки доступа и пароля от нее обратите внимание на строки.

В строке 10 в кавычках прописано имя точки доступа, пропишите собственное имя для изменения.

В строке 11 в кавычках прописан пароль от сети, пропишите собственный пароль для изменения.

Для изменения веб интерфейса обратите внимание на строки.

На 121 строке задается определение размеров самого джойстика (серой рамки в которой стик находится), меняя размеры можно получить разные границы для джойстиков.

В 261 строке находится определения control panel, которая отвечает за весь блок управления.

В 266 строке прописан display: flex, который сам определяет положения джойстиков основываясь на их размерах, а так же соотношениях заданных в дочерних блоках. Это можно увидеть в 258 строке, где video- cotainer-landscape задан flex: 1 - то есть он будет занимать все возможное пространство.

В 273 строке можно настроить положение блока джойстиков относительно блока с видео.

Кейс с программированием микроквадрокоптера

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

«ProgramHightLevel» (https://github.com/AppliedRobotics/ARA-EDU).

#include "ProgramHightLevel.h"

В месте, где стоит отметка:

//Ваш код

Вводим «Ваш код» на базе библиотеки «ProgramHightLevel» для автономной работы дрона, например:

float height = 0.8;//подъем
program.TakeOff(height);

float angle_l = 90;//разворот на 90 градусов
program.TurnLeft(angle_l);

float angle_r = 90;//разворот на 90 градусов
program.TurnRight(angle_r);

program.Landing();//посадка

Переводим дрон в состояние ARM, нажав на кнопку «ARM», после того как винты закрутятся, нажимаем «Программирование» - дрон поднимется, развернется на заданный угол и сядет. Для отключения дрона, в том числе экстренного, нажимаем «DISARM».