Свободный полет. Как программируют беспилотники — «Хакер»

Автономная навигация

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

Для автономного управления дрону надо как минимум знать с высокой точностью свои координаты в пространстве. На открытом пространстве можно использовать GPS — точность достигается в несколько метров. Дополнительная наземная станция и технология GPS RTK увеличат точность до нескольких сантиметров.

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

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

Есть еще одна важная проблема: если мы летаем в замкнутом пространстве или между высокими зданиями, то сигнал GPS будет недоступен и необходимо иметь другой источник координат дрона в пространстве. Можно определять свои координаты на борту, обрабатывая видеопоток с бортовых камер — лучше использовать стереокамеры или камеры глубины. Такой алгоритм называется SLAM (Simultaneous Localization and Mapping).

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

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

В итоге получается оценка перемещения камеры в пространстве. Обычно алгоритм SLAM очень требователен к вычислительным ресурсам, но есть камера Intel RealSense T265 с микросхемой, реализующей вычисления SLAM на аппаратном уровне.

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

  1. Определить координаты дрона в пространстве. Использовать для этого GPS-приемник или вычислять на борту координаты, обрабатывая видеопоток алгоритмом SLAM. А лучше использовать оба подхода, чтобы знать как глобальные, так и локальные координаты дрона
  2. Построить 3D-карту окружения дрона с помощью сенсоров типа стереокамер, камер глубины, лидаров.
  3. Добавить софт для планирования маршрута с учетом цели полета, текущих координат и карты окружения.

Базовые понятия

Квадрокоптеры бывают разные, но всех их объединяют четыре несущих винта:

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

Это таит в себе опасность: новичкам бывает трудно вернуть к себе подхваченный ветром аппарат, развернутый как-нибудь боком (мы, конечно, не говорим про полеты по камере от первого лица и про «умные» режимы полета с использованием компаса и GPS.) Решению этой проблемы частично могут помочь передние винты или лучи другого цвета, какой-нибудь шарик спереди или разноцветные светодиоды. Но все это оказывается бесполезным, когда пепелац стремительно превращается в точку над горизонтом.

Мы будем летать на раме квадрокоптера формы «X», потому что она мне больше нравится внешне. У каждой конструкции свои плюсы и свое предназначение. Кроме квадрокоптеров есть и другие мультикоптеры. Даже если не считать экзотические варианты, все равно их видов — целая куча!
Свободный полет. Как программируют беспилотники — «Хакер»

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

Углы тангажа, крена и рыскания (pitch, roll, yaw) — углы, которыми принято определять и задавать ориентацию квадрокоптера в пространстве.
Свободный полет. Как программируют беспилотники — «Хакер»Википедии это не совсем точно. Полет квадрокоптера в необходимом направлении достигается изменением этих трех углов. Например, чтобы полететь вперед квадрокоптер должен наклониться за счет того, что задние моторы закрутятся чуть сильнее передних:
Свободный полет. Как программируют беспилотники — «Хакер»
Газ квадрокоптера — среднее арифметическое между скоростями вращения всех моторов. Чем больше газ, тем больше суммарная тяга моторов, тем сильнее они тащат квадрокоптер вверх (НЕ ВПЕРЕД!!! «Тапок в пол» здесь означает наискорейший подъем). Обычно измеряется в процентах: 0% — моторы остановлены, 100% — вращаются с максимальной скоростью. Газ висения — минимальный уровень газа, который необходим, чтобы квадрокоптер не терял высоту.

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

Режимов полета существует много. Используется и GPS, и барометр, и дальномер. Но мы хотим реализовать базовый — режим стабилизации (stab, stabilize, летать в «стабе»), в котором квадрокоптер держит те углы, которые ему задаются с пульта не зависимо от внешних факторов. В этом режиме при отсутствии ветра квадрокоптер может висеть почти на месте. Ветер же придется компенсировать пилоту.

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

  • LFW — left front clockwise rotation (левый передний, вращение по часовой стрелке)
  • RFC — right front counter clockwise rotation (правый передний, вращение против часовой стрелке)
  • LBC — left back counter clockwise rotation (левый задний, вращение против часовой стрелке)
  • RBW — right back clockwise rotation (правый задний, вращение по часовой стрелке)

Скоростью вращения моторов управляет

полетный контроллер (контроллер, мозги)

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

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

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

Благодаря им полетный контроллер узнает текущие углы тангажа, крена и рыскания. Эти датчики бывают встроенными в полетный контроллер, а бывают внешними. Процесс вычисления трех углов по показаниям датчиков — тема для отдельной статьи. Но нам этого здесь знать не надо: за нас все сделает MPU-6050.

Моторы на мультикоптерах потребляют большие токи, поэтому полетный контроллер управляет ими не напрямую, а через специальные аппаратные драйвера, называемые регуляторами скорости (ESC, ре́гуль, е́ска).

«Протокол» общения между регулятором и мотором нам не так важен, как «протокол» общения между полетным контроллером и регулятором, ведь нам предстоит из контроллера программно управлять регулятором. Бывают регуляторы, управляемые по i2c, но наиболее распространенные управляются сигналом прямоугольной формы с минимумом 0 вольт и максимумом 3-5 вольт (его называют ШИМ или PWM, а некоторые утверждают, что правильнее — PPM. Подробнее, например, здесь).

«Протокол» — это громко сказано: чтобы дать команду мотору вращаться с максимальной скоростью контроллер должен отправлять импульсы длительностью 2 миллисекунды, перемежающиеся логическим нулем длительностью 10 — 20 миллисекунд. Длительности импульса в 1 миллисекунду соответствует остановка мотора, 1.

При всей кажущейся простоте, здесь кроется засада: полетные контроллеры бывают разные с разными настройками, регуляторы бывают разные, и минимум (1 мс) и максимум (2 мс) — не универсальны. В зависимости от множества факторов диапазон 1-2 мс может на деле оказаться 1.1 — 1.9 мс.

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

  • Отключить питание регулятора.
  • Снять с мотора пропеллер.
  • Подать на вход регулятора сигнал, соответствующий максимальной скорости вращения.
  • Подать на регулятор питание. Мотор при этом должен сохранять неподвижность без посторонней помощи.
  • Сделать паузу 1-2 секунды, дождаться характерного писка.
  • Подать на вход регулятора сигнал, соответствующий минимальной скорости вращения.
  • Сделать паузу 1-2 секунды, дождаться характерного писка.
  • Отключить питание регулятора.
Смотрите про коптеры:  Обзор неоднозначного боевого квадрокоптера Byrobot Drone Fighter

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

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

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

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

Итак: во время калибровки радио полетный контроллер запоминает диапазоны приемника по всем каналам управления; во время калибровки регуляторов диапазон полетного контроллера заносится во все регуляторы.

Помимо программы для полетного контроллера необходима еще одна программа: интерфейс настройки полетного контроллера. Чаще всего им является программа для PC, которая соединяется с полетным контроллером по USB и позволяет пользователю настраивать и проверять полетную программу, например: запускать калибровку радио, настраивать параметры стабилизации, проверять работу датчиков, задавать маршрут полета на карте, определять поведение мультикоптера при потере сигнала и многое другое. Мы свой интерфейс настройки будем писать на C и Qt в виде консольной утилиты. Вот она, если заглянуть в будущее:

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

Поэтому полетный контроллер должен обеспечивать хоть какую-то безопасность: механизм armed/disarmed. Состояние квадрокоптера «disarmed» означает, что моторы отключены и даже команда полного газа с пульта не имеет никакого эффекта, хотя питание подано.

Состояние «armed» квадрокоптера означает, что команды с пульта выполняются полетным контроллером. В этом состоянии квадрокоптеры взлетают, летают и садятся. Квадрокоптер включается и должен сразу попасть в состояние disarmed на тот случай, если невнимальельный пилот включает его, когда стик газа на пульте находится не в нуле.

Чтобы перевести коптер в состояние «armed» пилоту необхоимо сделать какой-то заранее оговоренный жест стиками пульта. Часто этим жестом является удержание левого стика в правом нижнем углу (газ = 0%, рыскание = 100%) втечении пары секунд. После этого полетный контроллер делает хотя бы минимальную самопроверку и при ее успешном прохождении «армится» (к полету готов!)

О моторах, аккумуляторах, регуляторах, пропеллерах

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

И все же для общего понимания полезно знать основные моменты.

Аккумуляторы

Среди любителей и профессионалов многороторных систем наиболее распространены литий-полимерные аккумуляторы, как основные источники питания бортовой электроники и моторов. Их различают по емкости, напряжению и максимальной токоотдаче. Емкость, как обычно, измеряется в ампер-часах или миллиампер-часах. Напряжение измеряется в количестве «банок» аккумулятора. Одна «банка» — в среднем 3.7 вольт. Полностью заряженая «банка» — 4.2 вольта. Наиболее распространеты аккумуляторы с количеством банок от трех до шести. Максимальная токоотдача измеряется в амперах, а маркируется, например вот так: 25C. C — емкость аккумулятора, 25 — множитель. Если емкость равна 5 амперам, то такой аккумулятор может отдавать 25 * 5 = 125 ампер. Конечно же параметр токоотдачи лучше брать с запасом, но, в основном, чем он больше, тем дороже аккумулятор. Пример маркировки: 25C 3S 4500mah.

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

Моторы, пропеллеры, регуляторы

Основной параметр бесколлекторного мотора — его kv. Это количество оборотов в минуту на каждый вольт поданного напряжения. Наиболее распространены моторы с kv от 300 до 1100. Kv ближе к 1000 обычно выбирают для малых квадрокоптеров (1-2 килограмма плюс 500 граммов полезной нагрузки) и ставят на них пластиковые пропеллеры до 12 дюймов в диаметре. На больших мультикоптерах (для поднятия хорошей и тяжелой фото-видео техники) или на долголетах (для рекордов по времени полета) обычно стоят моторы с низким kv (300-500) и огромными карбоновыми пропеллерами (15 — 20 дюймов в диаметре). Kv — не единственный важный параметр мотора: часто можно встретить целые таблицы зависимости мощности мотора и тяги от подаваемого напряжения и типа установленного пропеллера. Кроме того, каждый мотор рассчитан на свой диапазон напряжений (количество банок аккумулятора) и на свой максимальный ток. Если производитель пишет 3-4S, не стоит использовать его с 5S аккумуляторами. Это же касается и регуляторов.

Если мотор рассчитан на ток до 30А, то регулятор стоит рассчитывать на ток до 30 10А, чтобы не допускать перегревов. Некачественные или неподходящие регуляторы могут вызвать так называемые «срывы синхронизации» и остановку мотора в полете, и вы узнаете еще один мультироторный термин: «поймал планету.» Еще один важный момент — толщина и качество проводов. Неправильно рассчитанное сечение провода или плохой коннектор могут привести к пожару в воздухе.

Как видите, нюансов очень много. Я не перечислил даже половины, поэтому самому подобрать комплектующие для первого мультикоптера довольно трудно.

Как летать на fpv

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

С изобретением режима First Person View каждому владельцу доступен просмотр видеокартинки с камеры летящего дрона в то время, когда сам он стоит на земле.

Эта возможность осуществляется за счет установки передатчиков на корпус беспилотника и пульт управления. По каналу Wi-Fi снимаемое видео сразу передается на монитор, находящийся на земле.

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

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

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

https://www.youtube.com/watch?v=videoseries

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

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

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

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

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

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

В принципе, любой коптер может быть дополнен функцией FPV. Главное при этом — мощность беспилотника.

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

Смотрите про коптеры:  Eachine E010 Mini: обзор, характеристики, плюсы и минусы

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

Из-за этого были введены зоны No-Fly, где полеты на квадрокоптерах запрещены. К ним относятся военные базы и прочие важные объекты. Кроме того, сейчас каждый владелец должен обязательно зарегистрировать свой дрон.

Как повлияет принятие нового закона о квадрокоптерах от 22.12.2020 на вас?

Какие бывают дроны

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

  • мультироторный — коптеры;
  • самолетный — fixed wing;
  • гибридный — он взлетает вертикально, потом использует крылья.

Также дроны делятся на потребительские (consumer) и коммерческие (commercial).

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

Как правило, такие дроны летают на ручном управлении, реже по миссии в автономном режиме по GPS-координатам. Рынок потребительских квадрокоптеров больше чем наполовину принадлежит одной компании — DJI. С ней очень сложно конкурировать, поскольку там делают реально крутой продукт: доступный, функциональный, удобный.

Хотя в области квадрокоптеров для селфи DJI начинает теснить компания Skydio со своим дроном R2. Фишка этого дрона в том, что он может летать автономно, например за мотоциклистом в лесу. При этом беспилотник видит все препятствия и прокладывает автономный безопасный маршрут в реальном времени так, чтобы человек всегда оставался в кадре. Реально крутая штука.

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

Пример российской компании, которая активно работает с этой технологией на рынке США, — Traceair.

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

Ну и конечно, у всех на слуху доставка товаров дронами. Не знаю, заработает ли когда-нибудь сервис Amazon Prime Air, но уже сейчас компания Matternet доставляет товары в Цюрихе и некоторых городах США, а компания Zipline давно отправляет медикаменты в полет над просторами Африки.

Компании Volocopter и Ehang уже имеют летающие прототипы такси, а компания с российскими корнями Hoversurf разрабатывает летающий байк.

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

Поживем — увидим, какие проекты будут реализованы и задисраптят нашу жизнь. Глобальная цель — сделать систему управления дроном, которой герой фильма «Бегущий по лезвию 2049» мог бы сказать: «Сфотографируй тут все!»

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

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

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

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

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

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

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

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

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

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

Уровень газа поступает из приемника в контроллер. Обозначим его Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»

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

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

За несколько десятков миллисекунд (несколько итераций цикла обработки) под воздействием пропорционального регулятора квадрокоптер вернется в требуемое (в данном случае горизонтальное) положение. Все это время ошибка Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»

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

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

Ошибку Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»

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

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

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

где Свободный полет. Как программируют беспилотники — «Хакер»Свободный полет. Как программируют беспилотники — «Хакер»

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

Обзор 10 программ для построения отрофотоплана,картографии геодезии

Основные функциональные возможности Pix4DMapper
Вот лишь основные функциональные возможности ПО для фотограмметрии Pix4D Mapper:
Облако точек Densified 3D Point Cloud

– это набор трехмерных точек, по которым восстанавливается модель. Для каждой точки облака Densified Point хранятся координаты X, Y, Z и информация о цвете;

Цифровая поверхность и рельефная модель

– определяется значение высоты каждого пикселя, вместе или без надземных объектов; данные готовы для любого рабочего процесса ГИС, который вы выберете;

Ортомозаика

– геолокационная карта высокого разрешения, где каждый пиксель исходных изображений проецируется на цифровую поверхность;

Вычисление объема

– точные расчеты объема для идеального представления ваших запасов, с полностью регулируемой базовой высотой;

Контурные линии –

упрощенное представление топографии с закрытыми контурами, с отображением высоты;

3D-текстурированная модель –

треугольная сетка с реалистичным фотоизображением;

Карты отражения –

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

Карты индексов (NDVI, NDRE)

– работа с известными в земледелии индексами, такими как NDVI и NDRE создание собственных индексов;

Смотрите про коптеры:  Лучшие симуляторы полёта на квадрокоптерах

Карты приложений

– обобщение и визуализация значений, полученных из ваших индексных карт;

Термография

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

Форматы выходных данных в ПО для фотограмметрии Pix4DMapper

Облака цветных точек – .las, .laz, .ply, .xyz
Облака классифицированных точек
Модель наземной цифровой поверхности (DSM) – GeoTiff (.tif), .xyz, .las, .laz
Цифровая модель рельефа (DTM) / Цифровая модель высот (DEM) -GeoTiff (.tif)
Наземная ортомозаика – GeoTiff (.tif), .kml
Контурные линии – .shp, .dxf, .pdf
Модель цифровой поверхности фасада – GeoTiff (.tif)
Фасадная ортомозаика – GeoTiff (.tif)
3D-текстурированная сетка – .ply, .fbx, .dxf, .obj, .pdf
Уровневая сетка детализации -.osgb, .slpk
Оцифрованные векторы – .shp
Карты указателей – GeoTiff (.tif), .shp
Термальные карты – GeoTiff (.tif)

Это действительно замечательное ПО для 3D-картирования. Стартовать можно с бесплатной версии Pix4DMapper. Если вы решите приобрести Pix4DMapper, то вам будет предложен план ежемесячных платежей.

На этом видео представлено очень хорошее введение в ПО для фотограмметрии Pix4D Mapper

ПОСМОТРЕТЬ ОБНОВЛЕНИЯ 2020

Практика

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

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

Для настройки доступны параметры P, I, D. Теперь вы знаете что с ними делать. «Скролом» под квадрокоптером можно управлять требуемым значением крена. «Interval (ms):» — интервал регулирования. Уменьшать его — «читерство», но посмотреть как он влияет на качество стабилизации — очень полезно.

Для любителей «чистой» математики можно предложить настроить абстрактный ПИД-регулятор

Введенные параметры автоматически не применяются: нужно жмакать «Apply». Пара небольших советов: если вам кажется, что квадрокоптер слишком медленно реагирует на управление — можно увеличить P, но слишком большое значение P может привести к перерегулированию.

С перерегулированием поможет справиться параметр D, но слишком большие значения приведут к частым колебаниям, или опять к перерегулированию. Параметр I, обычно, в 10 — 100 раз меньше, чем параметр P т.к. его сила в накоплении во времени, а не в быстром реагировании.

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

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

Удобно ли управлять с телефона

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

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

https://www.youtube.com/watch?v=glIJc8itpn4

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

Управление дроном с помощью смартфона можно разделить на несколько основных элементов:

  • Непосредственно управление движением коптера в воздухе
  • Настройка режимов полета, активация функций
  • Управление через FPV

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

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

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

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

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

  • Подключение телефона к коптеру через Wi-Fi точку
  • Подключение телефона к пульту через Wi-Fi точку
  • Подключение телефона к пульту через кабель

Первый вариант является самым простым. После включения коптера создается Wi-Fi точка доступа, к которой подсоединяется смартфон пилота. Во втором варианте точку доступа создает пульт. В третьем случае смартфон просто подключается кабелем к аппаратуре.

В мобильном приложении выбирается способ управления с телефона, на дисплее появляются стики и кнопки. Управляемый с Android или iOS коптер ведет себя точно также, как если бы он управлялся с пульта.

Кстати, вариант с подключением телефона напрямую к коптеру используется не очень часто, ведь дальность полета ограничивается 50-100 метрами. В смартфоне установлен маломощный передатчик, но в некоторых случаях (например для селфи-дронов), его мощности будет вполне достаточно.

Чем и как управлять квадрокоптером в симуляторе?

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

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

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

  • Через USB;
  • Через адаптер-кабель.

Преимущество безусловно у USB, но этот порт есть не у всей аппаратуры, а только в дорогой, такой как Taranis QX7 или X9D. В бюджетной FlySky, но очень популярной, нужен специальный адаптер, так как на задней панели пульта есть только специальный 5-пиновый разъем, а провод преобразовывает сигнал из этого порта в понятный компьютеру сигнал.

Лучшие FPV симуляторы гоночного квадрокоптера: обзор, видео и ссылки
Схема тренерского порта y FlyaSky

И вот так выглядит на корпусе:

Пульт FlySky с задней стороны. Тренерский порт.
Пульт FlySky с задней стороны. Тренерский порт.

А кабель-переходник для FlySky выглядит вот так:

Кабель-переходник FlySky
Кабель-переходник FlySky

У Taranis QX7 и X9D все просто, у QX7 usb порт расположен в нижней части за резиновой заглушкой, а у Taranis X9D на задней панели. Докупать для них ничего не нужно, подойдет любой телефонный USB кабель для передачи данных.

Заключение первой части

В этой статье мы познакомились с базовыми понятиями:

квадрокоптер и принцип полета, тангаж, крен, рыскание, газ, газ висения, режим полета stabilize, полетный контроллер, гироскоп, акселерометр, регулятор скорости, ШИМ, калибровка регуляторов, калибровка радио, бортовой приемник, интерфейс настройки полетного контроллера, состояния armed/disarmed, автодизарм

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

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

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

В награду тем, кто смог промотать всю эту простыню, выкладываю обещанное маленькое видео, как наш квадрокоптер с нашими «изобретенными» ПИД-регуляторами, на нашей программе для Arduino Mega 2560 летает:

Конечно, ему не хватает GPS, как в коммерческих и массовых продуктах, немного не хватает устойчивости, но зато — НАШ, и мы знаем его вдоль и поперек до последнего множителя при интегральном коэффициенте! И это действительно круто, что сегодня нам доступны такие технологии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector