В прошлой статье мы описали нашу идею создания конвертоплана с изменяемыми векторами тяги. Мы получили большой отклик, поэтому в этой статье продолжим рассказ о развитии проекта.
Развивая идею полноценного полета агрегата из предыдущей статьи, мы всеми силами стараемся обойтись весьма скромным бюджетом и не потратить все накопленные остатки стипендии. В связи с этим, возникает множество проблем. Некоторая часть этих проблем заключается в механике, другая часть состоит в не совсем подходящей установленной электронике, системах связи, а также многих других проблем, которые хотя бы теоретически могут быть решены. Остальные проблемы относятся к тем, которые без увеличения бюджета решиться не могут. На мой взгляд, основная проблема в этой группе — это полетный котроллер и сама программа управления конвертопланом.
Мы приняли решение построить прототип, на котором сможем попытаться сымитировать динамику и принципы управления, которые необходимы нашему конвертоплану.
Я в авиамодельном хобби совсем не новичок, хотя сам еще довольно молод (еще пока студент магистратуры), но и мне крайне тяжело, а иногда и невозможно успевать за функционалом существующих прошивок и полетных контроллеров для квадрокоптеров и других БПЛА. Насколько я помню, шесть лет назад простые прошивки для дронов помещались в Arduino IDE и работали на платах от пульта для приставки. Сегодня же китайские фирмы предлагают нам за 20 долларов плату с прошивкой, функционал которой превосходит базовую программу обучения в институте. Таким образом, перед желающими собрать квадрокоптер стоит огромный соблазн даже не пытаться заняться изготовлением полетного контроллера. Выбор имеющихся решений огромен, однако, как я сам убедился, не безграничен.
Прототип
Пытаясь придумать систему управления бикоптером со всеми степенями свободы, наша «дримтим» решила попробовать создать сначала то, что скорее всего точно полетит. Выбор мы остановили на квадрокоптере. Таким образом, мы пришли к выводу, что нам необходимо построить квадрокоптер с управляемыми векторами тяги каждого мотора. Я, конечно, могу сказать, что в технических условиях мы договорились, что управление в горизонтальной плоскости мы будем осуществлять за счет управления вектором тяги, однако по-другому у нас просто не получилось.
Чтобы хоть чем-то отличаться от людей, получающих образование на форумах, хотя сами такой информацией не брезгуем, мы начали с проработки примерной 3D модели. Основной отправной точкой для себя мы взяли микросервоприводы с металлическим редуктором. Таким машинкам точно хватит усилия и прочности. Прикинув период колебаний пятидюймового квадрокоптера я понял, что и скорости работы хватает с достаточно большим запасом. Основываясь на этих компонентах, мы серьезно занялись проблемой выбора моторов. Преодолев долгие душевные терзания, мы вспомнили, что в душе все мы немного акционеры и остановились на квадрокоптерных моторах, которые были по акции на одном известном китайском сайте. Затем, мы перешли к постройке 3D модели. Модель должна была быть максимально простая, чтобы ее можно было быстро изготовить: частично напечатать на 3D-принтере, сделать раму из подручных материалов, ну и, конечно, подогнать сверхточным инструментом — напильником. В итоге, за два вечера в компании интересного собеседника, получилось создать именно ту модель, что отвечала поставленным задачам.
Моделирование системы управления
Какой же проект без научной составляющей? Надо провести исследования. Возможности Simulink (Matlab) позволили нам смоделировать похожую модель с выбранной системой управления. Имея готовую 3D модель, нам не составило труда задать ее физические свойства в Matlab.
Следующим этапом было каким-либо образом сымитировать гироскопический момент, который создают двигатели при наклоне. Правда это оказалось совсем не обязательно в нашем случае, но все познается в процессе.
Стратегию управления мы взяли, как нам показалось, максимально простую. Мы решили стабилизировать квадрокоптер в горизонтальном положении за счет разностей тяг моторов, а перемещаться в горизонтальной плоскости за счет наклона моторов в двух плоскостях.
Со стабилизацией в горизонте вопросов совсем не возникало, так как на эту тему существует огромное количество статей и большой выбор контроллеров: начиная от простейшего PID контроллера, заканчивая контроллерами, самонастраивающимися с помощью нейронных сетей.
Мы остановились на самом простом PID контроллере. Для управления в горизонте мы решили пропорционально отклонять каждый мотор для создания требуемого усилия. Отклонять сервоприводы будем парируя возникающие линейные ускорения PID контроллером. Удерживать позицию нам это не поможет, однако нам это и не надо. Мы пока просто хотим понять, полетит ли такая конструкция. Загвоздка еще состоит и в необходимости добавлять газ мотору при его отклонении, но мы этим пренебрегли.
Изготовление прототипа
Поборов в себе желание создавать всю прошивку для такого квадрокоптера с нуля, мы прибегли к, на мой взгляд, элегантному решению. Мы разделили между двумя платами задачу стабилизации квадрокоптера в горизонте и задачу управления им. Таким образом, моторами у нас управляет самый обыкновенный коптерный полетный контроллер F4, а за управление актуаторами отвечает отдельная плата STM Blue Pill.
Схематично это можно представить следующим образом:
После построения модели в Simulink, написать нужную программу вполне посильная задача. Особенностью нашего контроллера является разделение на два PID контроллера (вперед-назад и вправо-влево), и расшифровка-зашифровка сигнала SBus. То есть с приемника дистанционного управления мы передаем сигнал нашей плате, делаем все что пришло в голову пилоту, а квадрокоптерному полетному контроллеру создаем свой управляющий сигнал, требующий лишь удержания квадрокоптера горизонтально, то есть контролируем лишь тягу моторов.
Описанное чудо на практике выглядит примерно так, как показано на изображениях ниже. На первом изображении показаны внутренности прототипа, на втором — уже готовый к летным испытаниям агрегат.
Летные испытания
Взяв школьника, у которого еще не развит инстинкт самосохранения, мы приступили к летным испытаниям. Конечно же мы предупредили его о возможных опасностях, но лишиться пальца он не боялся. Мы вообще не верили, что это полетит. Но тем не менее, с первой попытки все получилось. Летает он на удивление быстро, возможно, это связано с уменьшением аэродинамического сопротивления в сравнении с классическими моделями квадрокоптеров. Посмотрите видео, там показано, как наш квадрокоптер держится в полете.
За возможность перевозить открытый стакан с жидкостью и топорность конструкции, мы присвоили своему произведению кодовое название «Летающая табуретка». В итоге, получился квадрокоптер, который отлично подходит для перевозки пиццы и напитков. Также его можно использовать для других задач, где требуется горизонтальное положение в полете, например, для отслеживания качества дорожного полотна. Не знаю, конечно, как это поможет, но подобные предложения уже поступали.
P.S.
Для тех кому интересно, насколько полезным может быть такой топорный метод компьютерного моделирования, я добавлю график сравнения отклика прототипа на управляющий сигнал во время летных испытаний и график отклика смоделированной в Matlab модели на лог этого же сигнала.
По оси крена:
По оси рысканья:
Вывод
Таким образом, методом проб и ошибок, мы медленно, но верно приближаемся к своей мечте.