Постройка квадрокоптера шаг за шагом. Делюсь бесценным опытом. / Квадро и прочие коптеры / Сообщество

Постройка квадрокоптера шаг за шагом. Делюсь бесценным опытом. / Квадро и прочие коптеры / Сообщество Вертолеты

«программирование квадрокоптера ryze tech tello boost combo с помощью мобильных приложений и программы scratch» – "академия педагогических проектов российской федерации"

автор: Баканов Антон Константинович 8 “Б” класс

Руководитель: Ахметова Райгул Сматовна учитель информатики МАОУ “СОШ №8” г.Гай Оренбургской области

«Программирование квадрокоптера Ryze Tech Tello Boost Combo с помощью мобильных приложений и программы Scratch»

БАКАНОВ АНТОН – г.Гай Оренбургская область

Муниципальное автономное общеобразовательное учреждение

“Средняя общеобразовательная школа №8”

«Программирование квадрокоптера Ryze Tech Tello Boost Combo    с помощью мобильных приложений и программы Scratch»

Автор проекта:

Баканов Антон, учащийся 8Б  класса

города Гая Оренбургской области

Руководитель проекта:

Ахметова Райгуль Сматовна, 

учитель информатики,

города Гая Оренбургской области

г.Гай, 2023г

Оглавление

ВВЕДЕНИЕ………………………………………………………………………………3

ГЛАВА 1.ТЕОРЕТИЧЕСКАЯ ЧАСТЬ…………………………………………………5

1.1  История создания беспилотных летательных аппаратов вертолётного типа……5

1.2  Виды вертолётных дронов………………………………………………………….6

1.3 Обзор объекта управления. Мультикоптеры………………………………………7

1.4  Принцип работы дронов……………………………………………………………7

1.5  Функции полетного контроллера………………………………………………….8

1.6  Характеристики квадрокоптера Ryze Tech Tello Boost Combo………………….8

ГЛАВА 2. ПРАКТИЧЕСКАЯ ЧАСТЬ…………………………………………………11

2.1  Способы управления дроном  Ryze Tech Tello Boost Combo……………………11

2.2  Управление с помощью мобильного приложения Ryze Tech Tello Boost Combo……………………………………………………………………………………11

2.3  Мобильное приложение Teeeello…………………………………………………12

2.4  Управление с помощью мобильного приложения DroneBlocks………………..13

2.5 Программирование Tello на Scratch……………………………………………….14

2.6  Анализ программного обеспечения………………………………………………16

2.7 Эксперимент…………………………………………………………………………17

ЗАКЛЮЧЕНИЕ…………………………………………………………………………19

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ…………………………………..21

ПРИЛОЖЕНИЯ…………………………………………………………………………22

Введение

В глубине своей робот — всегда раб.

Жан Бодрийар

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

Актуальность темы: нам  очень хотелось познакомиться с теми возможностями, которые предоставляют квадрокоптеры. К нашему общему сожалению, наша  школа не является  Центром образования цифрового и гуманитарного профилей «Точка Роста». Мы решили самостоятельно приобрести оборудование для его детального изучения. Работать с ними никто не умел. Мы провели анкетирование среди обучающихся 8-9 классов и результаты показали, что проблема действительно существует. 

Мы решили начать с простого: изучить квадрокоптера Ryze Tech Tello Boost Combo, узнать, есть ли разница между дронами и коптерами, легко ли управлять этими БПЛА, и научить интересующихся  одноклассников управлению дроном.

Нами была выдвинута гипотеза: любой квадрокоптер TELLO можно приручить.

Объект исследования: квадрокоптер Ryze Tech Tello Boost Combo.

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

Цель исследования:  изучить и освоить квадрокоптер Ryze Tech Tello Boost Combo, применить его на практике.

Для этого мне нужно решить задачи:

  1. Собрать, изучить, систематизировать информацию о дронах вертолётного типа.
  2. Изучить типы вертолётных дронов и принципы их работы.
  3. Сравнить способы взаимодействия и управления дроном квадрокоптер Ryze Tech Tello Boost Combo.
  4. Выяснить правила техники безопасности при использовании квадрокоптеров.
  5. Познакомиться с программным обеспечением для создания видеофильмов.
  6. Создать буклет с практическими рекомендациями для применения квадрокоптера Ryze Tech Tello Boost Combo.

При написании работы использовались следующие методы научного исследования:

  • Теоретический анализ.
  • Реферирование информационных источников.
  • Эмпирический метод исследования (эксперимент).

ГЛАВА 1.ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1. История создания беспилотных летательных аппаратов вертолётного типа

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

Первые дистанционно управляемые роботы появились очень давно. Начать, хотя бы, с изобретения Никола Теслы: 1889 год, первое в истории человечества миниатюрное радиоуправляемое судно. Спустя тридцать лет успех ученого повторил американец Чарльз Кеттеринг, взявший за основу наработки знаменитых братьев Райт 

Беспилотный летательный аппарат (БПЛА, дрон, беспилотник) – летательный. Обладают разной степенью автономности: от дистанционно управляемых до полностью автоматических. Изначально дронами называли военные беспилотники, но в современном обиходе к ним относят и обычные коптеры. 

Первый квадрокоптер, который реально оторвался от земли и мог держаться в воздухе, был создан Георгием Ботезатом и испытан в 1922 году. 

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

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

1.2. Виды вертолётных дронов

Квадрокоптер — это тот же дрон, который приводится в движение четырьмя винтами. 

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

Существует другая классификация беспилотных летательных аппаратов (по размеру и весу). Условно все дроны можно поделить на 4 группы:

  1. Микродроны. Такие БПЛА весят меньше 10 кг, максимальное время нахождения в воздухе – 60 минут. Высота полета – 1 километр. 
  2. Минидроны. Вес этих аппаратов достигает 50 кг, время пребывания в воздухе достигает 5 часов. Высота полета варьируется от 3 до 5 километров.
  3. Мидидроны. Беспилотные летательные аппараты весом до 1 тонны, рассчитаны на 15 часов полета. Такие БПЛА поднимаются на высоту до 10 километров.
  4. Тяжелые беспилотники. Их вес превышает тонну, разработаны аппараты для дальних полетов продолжительностью более суток. Могут перемещаться на высоте 20 километров.

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

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

1.3. Обзор объекта управления. Мультикоптеры

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

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

1.4. Принцип работы дронов

Квадрокоптер представляет собой платформу с четырьмя моторами. Центральная часть квадрокоптера служит для размещения контроллера, батареи и полезной нагрузки (например, видеокамеры). Радиально от центра на балках устанавливаются микроэлектродвигатели с несущими винтами, образуя крестообразную конструкцию аппарата. Чтобы он мог летать, два противоположных мотора должны вращаться в одну сторону, а другие два в другую, поэтомухвостовой винт мультикоптеру не нужен. Принцип полета квадрокоптера проиллюстрирован  на  рисунке 1  в приложении 2:

Углы крена и рыскания (pitch, roll, yaw) — углы, которыми принято определять и задавать ориентацию квадрокоптера в пространстве

Существует три варианта работы пропеллеров:

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

1.5. Функции полетного контроллера

Полетный контроллер – это устройство, которое обеспечивает полет коптера, управляя газом, креном, тангажом и рысканьем

В общем случае, полетный контроллер выполняет следующие функции:

  1. собирает информацию с датчиков (установленных на нем или внешних: компас, гироскопы, GPS  и тому подобных);
  2. устанавливает, рассчитывает свое положение в пространстве согласно датчикам;
  3. собирает информацию  о внешних управляющих воздействиях;
  4. отправляет управляющие/корректирующие сигналы на исполнительные механизмы (на регуляторы оборотов).

1.6. Характеристики  квадрокоптера Ryze Tech Tello Boost Combo

Квадрокоптер Ryze Tello Boost Combo оснащен функциями автовзлета и автопосадки. Точка высоты удерживается при помощи барометра. Прибор может развивать максимальную горизонтальную скорость до 29 км/ч. Летает устройство приблизительно около 13 мин. Встроена возможность распознавания препятствий, режим «Подбрось и лети».  

В комплекте с квадрокоптером Ryze Tello Boost Combo идут 3 сменных аккумулятора Li-Pol с напряжением 3.8 В и емкостью 1100 мА*ч. Управление осуществляется через приложение на смартфоне на базе ОС iOS, Android, радиус действия до 100 м. Также предусмотрен модуль Wi-Fi и подсветка корпуса. Коптер поддерживает два режима полета: быстрый (максимальная скорость – 28,8 км/ч) и медленный (до 14,4 км/ч). По умолчанию установлен медленный режим, переключиться на быстрый режим  можно в приложении. Также в Tello есть несколько интересных полетных интеллектуальных программ, например, 8D Flips. При ее активации дрон фактически будет показывать фигуры высшего пилотажа, вращаясь в 8 различных направлениях. Также модель поддерживает такую востребованную функцию, как взлет с руки.

Характеристики

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

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

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

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

Энергию моторам и электронике дрона дает съемный аккумулятор емкостью 1100 mAh.Полностью заряженная батарея обеспечивает 13 минут полета.

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

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

Вот некоторые технические особенности квадрокоптера для обучения и развлечений:

  • Микропроцессор Intel Movidius Myriad 2;
  • Комплектующие и сенсоры VPS от DJI;
  • Автоматическая посадка и взлет;
  • Пять режимов полета;
  • Запись видео (в том числе круговое панорамирование);
  • Осуществление флипов в восьми направлениях;
  • Страховка от потери связи;
  • Тринадцать минут непрерывного полета;
  • Радиус уверенной связи до 100 метров;
  • Съемка видео в формате  HD (фото 5 Мп);
  • Управления с помощью устройств на базе Android и iOS;
  • Синхронизация с контроллером и VR-гарнитурой (по желанию);
  • Вес 80 грамм;
  • Размеры дрона (в миллиметрах) 98 × 93 × 41.

Благодаря специальной системе «зрения», Tello может парить с поразительной точностью и приземляться на вытянутую руку. За счет своего малого размера он довольно безопасный: поставляется с гибкими пропеллерами, защитой пропеллеров и системой предотвращения столкновений (Приложение 3).

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

ГЛАВА 2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1. Способы управления дроном Ryze Tech Tello Boost Combo    

Управление дроном может осуществляться через смартфон, планшет или пульт. Сейчас есть возможность видеть, куда летит дрон. через специальный шлем или очки с видеоэкраном. Это называется – технология FPV. Аббревиатура FPV означает First Person Vision – изображение от первого лица.

Управлять  нашим дроном возможно с помощью различных программных сред. Это мобильные  приложения: TelloApp, Teeeello (версия TelloFPV в AppStore)  и также с помощью программного обеспечения DroneBlocks,  на языке Scratch (Приложение 4). Мы  разобрались с этими способами управления и  описали,  как правильно смоделировать  полет дрона.

2.2.  Управление с помощью мобильного приложения Tello из App Store

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

  1. Скачайте приложение Tello App. 
  2. Нажмите на кнопку питания сбоку, чтобы включить аппарат.
  3. Зайдите в приложение и нажмите на кнопку  
  4. В настройках Wi-fi выберите сеть Tello-XXXXXX

Функции приложения Tello App:

  • Взлёт.
  • Посадка.
  • Поворот против часовой стрелки.
  • Поворот по часовой стрелке.
  • Поднять вверх.
  • Опустить вниз.
  • Лететь влево.
  • Лететь вправо.
  • Лететь вперёд. 
  • Лететь назад.

Полный функционал приложения Tello можно посмотреть в приложении 5.

В распоряжении пользователя 6 режимов полета:

  • Throw & Go (самолетик) – с помощью этого режима можно просто подкинуть квадрокоптер и он автоматически взлетит
  • Flips (8D-трюк, кувырок) – квадрокоптер делает развороты в различные стороны.
  • Up & Away (воздушный)– в этом режиме квадрокоптер записывает видео во время полета вверх и назад.
  • 3600 – квадрокоптер снимает панораму
  • Bounce Mode (мячик) – квадрокоптер будет автоматически подпрыгивать вверх и вниз в пределах 0,5 и 1,2 метра от поверхности под устройством
  • Circle (круг) – квадрокоптер автоматически вращается вокруг места взлета, записывая видео.

2.3. Мобильное приложение Teeeello

Управление через приложение может происходить в двух режимах: Gesture mode (Режим жестов) или Normal mode (Нормальный режим). В Gesture mode дрон управляется с помощью наклонов гаджета и двух виртуальных джойстиков: движение вперёд и движение назад. В режиме Normal mode дрон управляется только с помощью джойстиков.

Функционал приложения:

В приложении можно контролировать полет DJI Tello с помощью смартфона. В отличие от обычного режима управления джойстиками (когда ваше движение ограничено полетом влево, вправо, вверх вниз), данное приложение дает вам ощущение управление настоящим воздушным «судном».

Это приложение позволяет делать фото, но не видеосъемку. Режим FPV так же не поддерживается.

В приложении встроен режим автоматической съемки панорамы. Для этого нужно нажать кнопку «Auto» и выбрать «Automatic Panorama Photo» — Дрон начнет вращение вокруг своей оси, делая фотографии. После окончания съемки программа сгенерирует панораму автоматически, либо (если выбран режим сохранения фото без генерации панорамы) возможно сшить панораму самостоятельно, используя сторонние приложения.

2.4. Управление с помощью мобильного приложения DroneBlocks

Имеется и совсем удивительная возможность самостоятельно, без знания даже основ программирования, создать собственный алгоритм полета. Это делается в мобильном приложении DroneBlocks, где простым перетаскиванием команд-блоков задается программа движений. DroneBlocks – это среда программирования, которая была разработана специально для детей и подростков. DroneBlocks — это программа, которая позволяет понять азы программирования и привить детям интерес к данной отрасли. В этой среде принцип работы похож как раз на лего — блоки-кирпичики собираются вместе, чтобы воссоздать какую-либо идею (Приложение 6).

 Из этого же приложения дается команда на выполнение созданной Вами последовательности действий 

Для работы в программе:

  1. Скачайте на свой гаджет приложение DroneBlocks.
  2. Запускайте Drone Blocks и выбирайте пункт «Connect to Tello».
  3. Непосредственно после подключения Tello к программе вы увидите пример готовой программы для управления дроном.
  4. Теперь можно создавать свою программу.

Пример моделирования полета квадрокоптера по траектории четырехугольника

Полет без поворота дронаПолет с поворотами дрона
takeoffВзлететьTakeoffВзлететь
fly forward 100 cmЛететь вперед на 100 смFly forward 100 cmЛететь вперед на 100 см
Fly right 100 cmЛететь назад на 100 смYaw right 90 degreesПоворот направо на 900
Fly back 100 cmЛететь назад на 100 смFly forward 100 cmЛететь вперед на 100 см
Fly left 100 cmЛететь влево на 100 смYaw right 90 degreesПоворот направо на 900
Fly forward 100 cmЛететь вперед на 100 см
Yaw right 90 degreesПоворот направо на 900
Fly forward 100 cmЛететь вперед на 100 см
Yaw right 90 degreesПоворот направо на 900
landПриземлиться landПриземлиться

2.5. Программирование Tello на Scratch

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

Окно программы Scratch

Мы познакомились с возможностями этой программы для создания анимаций и небольших анимационных роликов, а затем начал использовать модернизированную версию  Scratch 2, дополненную командами управления квадрокоптером. В результате мы создали программу управления полетом и опробовали её на практике.

Окно программы с инструкциями для коптера Tello.

Программа коптера.

Управление дроном с помощью Scratch происходит в режиме реального времени,  невозможно использовать заранее заготовленный файл с готовой программой (Приложение 7)

2.6. Анализ программного обеспечения

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

2.7. Эксперимент

После изучения программ мы провели эксперимент. Нас волновало два вопроса:

  1. можно ли нам, применяя полученные знания научить управлять дроном одноклассников, друзей, знакомых.
  2. удобно ли снимать видео с помощью квадрокоптера Ryze Tech Tello Boost Combo?

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

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

 В ходе работы над проектом и эксперимента мы выявили преимущества и недостатки коптера.

Преимущества  квадрокоптера Ryze Tech Tello Boost Combo:

  • безопасность;
  • высокие летные показатели;
  • легкость и компактность аппарата;
  • простота управления;
  • наличие сенсорных датчиков;
  • невысокая цена и хорошее качество;
  • возможность совмещения с очками VR.

Недостатки квадрокоптера Ryze Tech Tello Boost Combo:

  • неустойчивость при эксплуатации вне помещений даже при небольшом ветерке; 
  • небольшая длительность полета;
  • небольшой радиус полета;
  • слабые видеовозможности камеры, нестабильная передача видеопотока на смартфон;
  • невысокое качество видеокамеры;
  • отсутствие карты памяти в дроне (запись выполняется в смартфоне).

ЗАКЛЮЧЕНИЕ

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

В своей  работе  мы ставили целью изучить и освоить квадрокоптер DJI Tello Feel The Fun, применить его на практике.

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

Предположение, высказанное в начале работы о том, что любой квадрокоптер TELLO можно приручить  доказано. Управлять летающей машиной несложно. Но учиться все-таки придется, поскольку квадрокоптер несколько отличается от обычных «игрушек» на радиоуправлении.

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

В ходе работы над проектом  мы  изучили: 

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

Мы  научились:

  • применять полученные знания на практике;
  • проводить эксперимент, меняя отдельные параметры, и наблюдать и измерять результаты;
  • выполнять простые действия: полёты на коптере, взлет, полеты по заданной траектории, с разворотом, изменением высоты, преодолением препятствий, посадка; 
  • производить настройку и калибровку полетных контроллеров различных моделей;
  • пользоваться правилами техники безопасности и написал памятку «Техника безопасности при работе с квадрокоптером»;
  • генерировать QR коды; 
  • выполнять фото и видеосъемку;
  • создавать видеофильмы.

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

Данные нашего исследования позволяют  сделать ряд выводов относительно квадрокоптера  Ryze Tech Tello Boost Combo:

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 

  1. Все новости о дронах Tello [Электронный ресурс] URL:  http://protello.com/top-budget-quadcopter 
  2. Википедия – свободная энциклопедия [Электронный ресурс] URL:

https://ru.wikipedia.org/wiki/Мультикоптер 

  1. ДроноМания. Онлайн журнал о дронах [Электронный ресурс] URL:  https://dronomania.ru/faq/istoriya-razvitiya-dronov.html  
  2. Хабр. Сообщество IT специалистов [Электронный ресурс] URL: https://habr.com/ 
  3. Tello руководство Пользователя v1.2

ПРИЛОЖЕНИЯ

Приложение 1

Результаты анкетирования обучающихся 8-9 классов

ВопросыОтветы
Да НетЗатрудняюсь ответить
  1. Знаешь ли ты что такое дрон?
40чел./77%12чел./23%0чел./0%
  1. Знаешь ли ты,  чем отличается дрон от коптера?
19чел./36%31чел./60%2чел./4%
  1. Знаешь ли ты, как работают  квадрокоптеры?
24чел./54%28чел./46%0чел./0%
  1. Есть ли желание освоить управление квадрокоптером?
25чел./48%25чел./48%3чел./6%

Есть опыт

  1. Как тебе было бы удобнее управлять квадрокоптером, через приложение или программируя его?
35чел./68%7чел./14%9чел./18%
  1. Хочешь ли ты иметь личный коптер?
23чел./47%25чел./51%1чел./2%

Уже есть

  1. Хочешь ли ты научиться управлять дроном через приложение?
33чел./61%20чел./37%1чел./2%

Уже умею

  1. Хотел бы ты  научиться программировать дрон?
20чел./38%28чел../54%4чел./8%

Приложение 2

Рисунок 1. Принципы полета квадрокоптера

Рисунок 2. Типы мультикоптеров

Приложение 3

Схема квадрокоптера Ryze Tech Tello Boost Combo    

Приложение 4

Способы управления дроном

Приложение 5

Приложение 6

Скриншот   с экрана смартфона  управления квадрокоптером  в мобильном  приложении  DroneBlocks

Приложение 7

Команды для дрона на Scratch

Программа № 1  «Управление DJI Tello в режиме реального времени с помощью Scratch»

Различным клавишам клавиатуры ПК присваивал  команды для управления Tello. В данном случае для управления коптером в горизонтальной плоскости была использована раскладка WASD. Так же имеются возможность управлять флипами через клавиши навигации.

Программа № 2 «Построение прямоугольного треугольника с помощью Tello через Scratch»

Квадрокоптер начертит прямоугольный треугольник маршрутом полёта Tello в горизонтальной плоскости. Для правильного построения нужно ввести длины гипотенузы и известного катета, а также градусную меру угла между ними. Программа сама вычисляет оставшуюся сторону и второй угол.

Программа № 3 «Построение описанного треугольника и квадрата»

В данной программе tello запрашивает радиус известной окружности и даёт на выбор 2 варианта: начертить описанный треугольник или квадрат. Остальные данные программа вычисляет сама. 

Приложение 8

Эксперимент управления квадрокоптером  в мобильном  приложении  DroneBlocks

Приложение 9

Эксперимент  “Обучение управлению дроном”

Приложение 10

Техника безопасности при работе квадрокоптером

Первое и самое важное – безопасность людей.  

  • Тестирование и настройка аппарата должна производиться при снятых пропеллерах. 
  • Не дотрагивайтесь до движущихся частей моторов и винтов. Они вращаются с огромной скоростью и тяжёлые раны вам обеспечены.
  • Когда аппарат находится в режиме «боевой готовности» не трогайте его, во избежание случайного включения двигателей. 
  • Не пытайтесь продолжать полет если батарея разряжена, иначе это может привести к неконтролируемому падению коптера. 
  • Не рекомендуется переключать коптер из режима стабилизации пока оператор не научится уверенно контролировать полет и справляться с базовыми маневрами 
  • При аварии либо нештатной ситуации во время посадки, когда не известна степень повреждения полетного контроллера необходимо: 
    • бросить полотенце на пропеллеры, так как они могут начать крутиться неожиданно
    • сразу отключить питание
  • Всегда проверяйте безопасное расстояние между коптером и зрителями. 
  • Убедитесь, что между вами и аппаратом нет людей 
  • Зрители всегда должны находится позади оператора 
  • Если кто-то нарушает зону безопасности – сажайте аппарат и подождите пока не освободится пространство для безопасного взлета. 
  • Убедитесь, что батарея не вставлена в коптер до тех пор, пока оператор не готов к полету. 
  • После приземления, отключить питание! 
  • Не используйте аппарат для осуществления действий, нарушающих законы Российской Федерации, не вмешивайтесь в частную жизнь граждан. 

Требования к месту полетов:

  1. НЕ используйте коптер в неблагоприятных погодных условиях.
  2. Летайте только в местах, где вы можете держать коптер по крайней мере в 10 метрах от препятствий.
  3. НЕ летайте на коптере по маршруту, который имеет резкое изменение уровня земли (например, изнутри здания наружу), в противном случае функция позиционирования может быть нарушена, что влияет на безопасность полета.
  4. Эксплуатация коптера и аккумулятора зависит от факторов окружающей среды
  5. НЕ используйте коптер вблизи ЧП.
  6. Во избежание помех между вашим интеллектуальным устройством и другим беспроводным оборудованием, выключите другое беспроводное оборудование во время полета на коптере. 

Код прошивки

Для работы ниже приведённого скетча скачайте и установите библиотеки:

flight-recorder.ino
// библиотеки для работы с датчиком 18B20#include <OneWire.h>#include <DallasTemperature.h>// библиотека для работы с SPI#include <SPI.h>// библиотека для работы с SD-картами#include <SD.h>// библиотека для работы I²C#include <Wire.h>// библиотека для работы с модулями IMU#include <TroykaIMU.h>// библиотека для работы с GPS устройством#include <TroykaGPS.h>// библиотека для работы с GPRS устройством#include <AmperkaGPRS.h>
 
// serial-порт к которому подключён GPS-модуль#define GPS_SERIAL        Serial1// serial-порт к которому подключён GPRS-модуль#define GPRS_SERIAL       Serial3// пин подключения CS microSD-карты#define SD_CS_PIN         10// пин подключения датчика 18B20#define TEMP_18B20_PIN    A1// задаём размер массива для времени#define MAX_SIZE_MASS     16// интервал времени записи данных на SD-карту#define INTERVAL_SD       1000// интервал времени передачи данных через СМС#define INTERVAL_SMS      600000// номер на который будем отправлять сообщение#define PHONE_NUMBER  " 74959379992"
 
// создадаём объект для работы с библиотекой OneWire
OneWire oneWire(TEMP_18B20_PIN);// создадаём объект для работы с библиотекой DallasTemperature
DallasTemperature sensor18B20(&oneWire);
 
// создаём объект для работы с барометром
Barometer barometer;
 
// создаём объект класса GPS и передаём в него объект Serial1 
GPS gps(GPS_SERIAL);// создаём объект класса GPRS и передаём в него объект Serial1 
GPRS gprs(GPRS_SERIAL);// можно указать дополнительные параметры — пины PK и ST// по умолчанию: PK = 2, ST = 3// GPRS gprs(GPRS_SERIAL, 2, 3);
 
// массив для хранения текущего времениchar strTime[MAX_SIZE_MASS];// массив для хранения текущей датыchar strDate[MAX_SIZE_MASS];// массив для хранения широты в градусах, минутах и секундахchar latitudeBase60[MAX_SIZE_MASS];// массив для хранения долготы в градусах, минутах и секундахchar longitudeBase60[MAX_SIZE_MASS];
 
// запоминаем текущее времяlong startMillisSD = millis();// запоминаем текущее времяlong startMillisSMS = millis();
 
// данные модулей для записи на карту SD
String dataStringSD ="";// данные модулей для отправки СМС
String dataStringSMS ="";
 
// переменные для хранения данных с датчиков и модулейfloat temperature18B20;float temperatureBarometer;float pressureBarometer;float altitudeBarometer;
String timeGPS;
String dateGPS;
String altitudeGPS;
String latitudeBase60GPS;
String longitudeBase60GPS;
 
void setup(){// открываем последовательный порт для мониторинга действий в программе
  Serial.begin(115200);// выводим сообщение в Serial-порт о поиске карты памяти
  Serial.println("Initializing SD card...");// если microSD-карта не была обнаруженаif(!SD.begin(SD_CS_PIN)){// выводим сообщение об ошибке
    Serial.println("Card failed, or not present");}else{
    Serial.println("Card initialized");}
 
  // начало работы с датчиком DS18B20
  sensor18B20.begin();// установим разрешение датчика
  sensor18B20.setResolution(12);// выводим сообщение об удачной инициализации
  Serial.println("18B20 is OK");
 
  // инициализация барометра
  barometer.begin();// выводим сообщение об удачной инициализации
  Serial.println("LPS331 is OK");
 
  // открываем Serial-соединение с GPS-модулем
  GPS_SERIAL.begin(115200);// выводим сообщение об удачной инициализации
  Serial.println("GPS is OK");// открываем Serial-соединение с GPRS Shield
  GPRS_SERIAL.begin(115200);// включаем GPRS-шилд
  gprs.powerOn();
  delay(1000);if(!gprs.begin()){// если связи нет, ждём 1 секунду// и выводим сообщение об ошибке;
    Serial.print("GPRS Begin errorrn");}// вывод об удачной инициализации GPRS Shield
  Serial.println("GPRS is OK");}
 
void loop(){// считываем данные с модулей и датчиков
  getTemperature18B20();
  getDataBarometer();
  getDataGPS();
 
  // собираем пакет данных для записи на SD-карту
  dataStringSD = dateGPS;
  dataStringSD ="t";
  dataStringSD = timeGPS;
  dataStringSD ="t";
  dataStringSD = latitudeBase60GPS;
  dataStringSD ="t";
  dataStringSD = longitudeBase60GPS;
  dataStringSD ="t";
  dataStringSD = temperature18B20;
  dataStringSD ="t";
  dataStringSD = temperatureBarometer;
  dataStringSD ="t";
  dataStringSD = pressureBarometer;
  dataStringSD ="t";
  dataStringSD = altitudeBarometer;
  dataStringSD ="t";
  dataStringSD = altitudeGPS;
  dataStringSD ="t";
 
  // собираем пакет данных для СМС
  dataStringSMS = dateGPS;
  dataStringSMS =" ";
  dataStringSMS = timeGPS;
  dataStringSMS =" ";
  dataStringSMS = latitudeBase60GPS;
  dataStringSMS =" ";
  dataStringSMS = longitudeBase60GPS;
  dataStringSMS =" ";
  dataStringSMS = temperature18B20;
  dataStringSMS =" ";
  dataStringSMS = temperatureBarometer;
  dataStringSMS =" ";
  dataStringSMS = pressureBarometer;
  dataStringSMS =" ";
  dataStringSMS = altitudeBarometer;
  dataStringSMS =" ";
  dataStringSMS = altitudeGPS;
  dataStringSMS =" ";
 
  if(millis()- startMillisSD > INTERVAL_SD){// сохраняем данные с модулей на карту памяти
    saveSD();// запоминаем текущее время
    startMillisSD = millis();}
 
  if(millis()- startMillisSMS > INTERVAL_SMS){// отправляем данные СМС сообщениям
    sendSMS();// запоминаем текущее время
    startMillisSMS = millis();}}
 
// функция считывания данных с GPS-модуля в глобальные переменныеvoid getDataGPS(){// если пришли данные с GPS-модуляif(gps.available()){// считываем данные и парсим
    gps.readParsing();// проверяем состояние GPS-модуляswitch(gps.getState()){// всё OKcase GPS_OK:
        gps.getTime(strTime, MAX_SIZE_MASS);
        gps.getDate(strDate, MAX_SIZE_MASS);
        gps.getLatitudeBase60(latitudeBase60, MAX_SIZE_MASS);
        gps.getLongitudeBase60(longitudeBase60, MAX_SIZE_MASS);
        timeGPS =(String)strDate;
        dateGPS =(String)strDate;
        latitudeBase60GPS =(String)latitudeBase60;
        longitudeBase60GPS =(String)longitudeBase60;
        altitudeGPS = gps.getAltitude();break;// ошибка данныхcase GPS_ERROR_DATA:
        dateGPS ="Error";
        timeGPS ="Error";
        latitudeBase60GPS ="Error";
        longitudeBase60GPS ="Error";
        altitudeGPS ="Error";break;// нет соединение со спутникамиcase GPS_ERROR_SAT:
        dateGPS ="No Sat";
        timeGPS ="No Sat";
        latitudeBase60GPS ="No Sat";
        longitudeBase60GPS ="No Sat";
        altitudeGPS ="No Sat";break;}}}
 
// функция считывания данных с барометра в глобальные переменныеvoid getDataBarometer(){
  temperatureBarometer = barometer.readTemperatureC();
  pressureBarometer  = barometer.readPressureMillibars();
  altitudeBarometer = barometer.pressureToAltitudeMeters(pressureBarometer);}
 
// функция считывания данных с датчика 18B20 в глобальную переменнуюvoid getTemperature18B20(){// считываем данные с цифрового термометра 18B20
  sensor18B20.requestTemperatures();
  temperature18B20 =  sensor18B20.getTempCByIndex();}
 
// функция записи данных с модулей на SD-картуvoid saveSD(){// создаём файл для записи
  File dataFile = SD.open("datalog.txt", FILE_WRITE);// если файл доступен для записиif(dataFile){// сохраняем данные
    dataFile.println(dataStringSD);
    Serial.println(dataStringSD);// закрываем файл
    dataFile.close();// выводим сообщение об удачной записи
    Serial.println("Save OK");}else{// если файл не доступен// выводим сообщение об ошибке
    Serial.println("Error opening file");}}
 
// функция отправки данные с модулей СМС сообщениемvoid sendSMS(){char dataSMS[128]="";
  dataStringSMS.toCharArray(dataSMS, 128);
  gprs.sendSMS(PHONE_NUMBER, dataSMS);
  Serial.println("SMS sent OK");}

Математика стабилизации, пид-регуляторы (pid)

Если вы решили заняться мультикоптерами, то рано или поздно вам придется столкнуться с настройкой ПИД-регулятора, поскольку этот математический аппарат применяется почти во всех задачах стабилизации: стабилизация углов квадрокоптера в воздухе, полет и удержание позиции по GPS, удержание высоты по барометру, бесколлекторные механизмы стабилизации видеокамеры в полете (подвес камеры).

Вы приобретаете двухосевой подвес для камеры, ставите туда, например, GoPro, включаете и вместо стабилизации получаете конвульсии, вибрации и дергания, хотя все датчики откалиброваны и механические проблемы устранены. Причина — неверные параметры ПИД-регуляторов.

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

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

Кроме того, мы же собираемся писать собственную систему стабилизации квадрокоптера! Предлагаю вместе со мной самим заново «изобрести» и «на пальцах» понять формулу ПИД-регулятора. Для тех, кому больше нравится сухой математический язык, я рекомендую Википедию, английскую статью, т.к. в русской пока не так подробно изложен материал.

Будем рассматривать квадрокоптер в двумерном пространстве, где у него есть только один угол — угол крена, и два мотора: левый и правый.

В полетный контроллер непрерывно поступают команды с земли: «крен 30 градусов», «крен -10 градусов», «крен 0 градусов (держать горизонт)»; его задача — как можно быстрее и точнее их выполнять с помощью моторов с учетом: ветра, неравномерного распределения веса квадрокоптера, неравномерного износа моторов, инерции квадрокоптера и т.п.

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

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

Уровень газа поступает из приемника в контроллер. Обозначим его Программируем квадрокоптер на Arduino (часть 1). Напомню, что это среднее арифметическое между скоростями вращения всех моторов, выраженное в процентах от максимальной скорости вращения. Если Программируем квадрокоптер на Arduino (часть 1) и Программируем квадрокоптер на Arduino (часть 1) — скорости вращения левого и правого моторов, то:где Программируем квадрокоптер на Arduino (часть 1) — реакция квадрокоптера (усилие), которое создает момент вращения за счет того, что левый мотор вращается на Программируем квадрокоптер на Arduino (часть 1) быстрее, чем газ, а правый — на столько же медленнее. Программируем квадрокоптер на Arduino (часть 1) может принимать и отрицательные значения, тогда правый мотор закрутится быстрее. Если мы научимся вычислять эту величину на каждой итерации цикла обработки, значит мы сможем управлять квадрокоптером. Понятно, что Программируем квадрокоптер на Arduino (часть 1) как минимум должно зависеть от текущего угла крена (Программируем квадрокоптер на Arduino (часть 1)) и желаемого угла крена (Программируем квадрокоптер на Arduino (часть 1)), который поступает с пульта управления.Представим ситуацию: поступает команда «держать горизонт» (Программируем квадрокоптер на Arduino (часть 1) = 0), а квадрокоптер имеет крен влево:Программируем квадрокоптер на Arduino (часть 1) — разность (ошибка) между Программируем квадрокоптер на Arduino (часть 1) и Программируем квадрокоптер на Arduino (часть 1), которую контроллер стремится минимизировать.

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

Здесь P — коэффициент пропорциональности. Чем он больше, тем сильнее будет реакция, тем резче квадрокоптер будет реагировать на отклонение от требуемого угла крена. Эта интуитивно понятная и простая формула описывает работу пропорционального регулятора.

За несколько десятков миллисекунд (несколько итераций цикла обработки) под воздействием пропорционального регулятора квадрокоптер вернется в требуемое (в данном случае горизонтальное) положение. Все это время ошибка Программируем квадрокоптер на Arduino (часть 1) и усилие Программируем квадрокоптер на Arduino (часть 1) будут иметь один и тот же знак, хоть и становиться все меньше по модулю. Набрав какую-то скорость поворота (угловую скорость) квадрокоптер просто перевалится на другой бок, ведь никто его не остановит в требуемом положении. Все равно что пружина, которая всегда стремится вернуться в начальное положение, но если ее оттянуть и отпустить — будет колебаться, пока трение не возьмет верх. Конечно, на квадрокоптер тоже будет действовать трение, но практика показывает, что его не достаточно.По этой причине в пропорциональный регулятор нужно добавить еще одно слагаемое, которое будет тормозить вращение квадрокоптера и препятствовать перерегулированию (переваливанию в противоположную сторону) — своего рода имитация трения в вязкой среде: чем быстрее поворачивается квадрокоптер, тем сильнее надо пытаться его остановить, конечно, в разумных пределах. Скорость вращения (скорость изменения ошибки ) обозначим как Программируем квадрокоптер на Arduino (часть 1), тогда:

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

И вот пропорциональный регулятор превращается в пропорционально-дифференциальный (пропорциональное слагаемое и дифференциальное):

Ошибку Программируем квадрокоптер на Arduino (часть 1) вычислить легко, ведь на каждой итерации мы знаем Программируем квадрокоптер на Arduino (часть 1) и Программируем квадрокоптер на Arduino (часть 1); P и D — настраиваемые перед запуском параметры. Для вычисления производной (скорости изменения Программируем квадрокоптер на Arduino (часть 1)) необходимо хранить предыдущее значениеПрограммируем квадрокоптер на Arduino (часть 1), знать текущее значение Программируем квадрокоптер на Arduino (часть 1) и знать время, которое прошло между измерениями (период регулирования). И вот она — физика шестого класса школы (скорость = расстояние / время):Программируем квадрокоптер на Arduino (часть 1) — период регулирования; Программируем квадрокоптер на Arduino (часть 1) — значение ошибки с предыдущей итерации цикла регуляции. Кстати, эта формула — простейший способ численного дифференцирования, и он нам здесь вполне подойдет.

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

Необходим механизм, который бы отслеживал такие отклонения и исправлял их. Характерной особенностью таких ошибок является то, что они прявляют себя со временем. На помощь приходит интегральное слагаемое. Оно хранит сумму всех ошибкок Программируем квадрокоптер на Arduino (часть 1) по всем итерациям цикла обработки. Как же это поможет? Если пропорционального слагаемого не достаточно, чтобы исправить маленькую ошибку, но она все равно есть — постепенно, со временем, набирает силы интегральное слагаемое, увеличивая реакцию Программируем квадрокоптер на Arduino (часть 1) и квадрокоптер принимает требуемый угол крена.Тут есть нюанс. Предположим Программируем квадрокоптер на Arduino (часть 1) равна 1 градусу, цикл регулирования — 0.1с. Тогда за одну секунду сумма ошибок примет значение 10 градусов. А если цикл обработки — 0.01с, то сумма наберет аж 100 градусов. Чтобы за одно и тоже время интегральное слагаемое набирало одно и тоже значение при разных периодах регулирования, полученную сумму будем умножать на сам период регулирования. Легко посчитать, что в обоих случаях из примера получается сумма в 1 градус. Вот оно — интегральное слагаемое (пока без настраиваемого коэффициента):Эта формула — не что иное, как численный интеграл по времени функции Программируем квадрокоптер на Arduino (часть 1) в интервале от нуля до текущего момента. Именно поэтому слагаемое называется интегральным:

где T — текущий момент времени.Пришло время записать окончательную формулу пропорционально-интергрально-дифференциального регулятора:

где Программируем квадрокоптер на Arduino (часть 1) — один из настраиваемых параметров, которых теперь трое: Программируем квадрокоптер на Arduino (часть 1). Эта формула удобна в применении из программного кода, а вот формула, которая приводится в учебниках:

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

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