Квадрокоптер при потере винта. пиление multiwii

Продолжаю модификацию Multiwii для полета квадрокоптера при отказе двигателя. Сформулированные за час-другой мысли в первой статье и заблуждения прошли крещение огнем. В одном из комментариев меня обрадовали что швейцарцы уже придумали что-то такое - респект им, однако они товарищи коммерческие и свободно распространяемому программному обеспечению их алгоритм не светит, как и бюджетным датчикам. Воодушевленный их успехами переписал PIDMIX, ввел коррекцию изменения веса лучей в результате воздействия центростремительной силы, ввел донирование оборотов от работающих на максимуме двигов, учел все остальное что напридумывал и попробовал взлететь (на оригинальном multiwii вообще не как). В итоге я получил и вправду летающую (правда смертоубийственную) машину. На видео видно как квадрик с включенным headfree накапливает ошибку и летит в сторону… в мою сторону (headfree в данном случае резонно перевести как свободный от головы) ). ) Тут конечно не ощущается, но квадрик 84 см в длину:

Напомню, что кручение квадра при отказе двигов – это нормально и для моего труда вообще полезно, т.к. на этом эффекте все и держится. На видео проявился глюк, о котором репка моя не чесалась когда я в это ввязывался– центростремительная сила действующая на акселерометр и гироскоп. Дело в том, что в реальных условиях невозможно расположить кристалл аселя и гироскопа так, чтобы он оказался в центре вращения, в итоге на него начинают воздействовать боковые силы и ноль плывет, причем проявляется на настолько незначительных скоростях поворота, что я понял почему мои коптеры и в обычной обстановке не поворачивают на месте!
Надо было как-то решать эту проблему и я решил собрать крутящийся стенд на который поместил плату контроллера, для того чтобы понять что происходит и что с этим делать.
Самое сложное было найти и заставить медленно работать какой-нибудь двигатель. 1000 оборотов в сек – запросто, 1-10 – фиг те. В итоге в расход пошел точильный станок и регулятор яркости ламп накаливания, который я одолжил у стены ). После пары манипуляций с алюминиевой рейкой и монтажным столом получился стенд видный на следующем видео. К контроллеру был подключен bluetooh модуль и после пары прогонов картина по палате стала очевидной и пришла идея рецепта - был написан герцовый скользящий фильтр находящий среднюю отклонения с коррекцией обратно пропорциональной силе резкости изменения скорости вращения. В прошивке я произвел подмену выводимых в GUI значений и в итоге получилось три шкалы видные на видео: количество оборотов в секунды умноженное на 100, оригинальные показания для оси акселя и показания пропущенные через мой, упомянутый выше фильтр. Подключаемся к планшету и видим работу алгоритма в режиме реального времени.

На видео видно как работает фильтр центробежных сил действующих на акселерометр при ожидаемой на практике динамике изменения оборотов, а также как проявляется устойчивость к накоплению ошибки при линейных ускорениях. А устойчивость эта оказалась очень прочной, иными словами крутящаяся вокруг своей оси плата корректируется противофазой (если правильно выразился). Надо еще будет об этом подумать, это что-то крутое, (были мысли о крутящемся бикоптере, но компасы накрываются при ~9 оборотах в секунду c максимальной чувствительностью 0x60 (эта планка держится мощностью третьего винта)). Обратите внимание также на начало теста – на нем заданна скорость поворота коптера при обычном рыскании. Мы видим, что даже при среднем по скорости повороте идет смещение нуля без фильтра (multiwii принимает рысканье за ускорение), это и есть она - одна из причин, почему при повороте по YAW квадрокоптер наклоняется ( еще одна, напомню - центростремительная сила искажающая силу коррекции P… про сами двиги и неадекватное перераспределение мощности промолчу 😃 ). Про эти моменты я не забуду и обязательно изучу их для применения в условиях обычного полета (мейби это будет посредствам какого-то теста рыскания).
На данный момент прописал фильтры, избил стенд пока он не развалился – все проверил (в итоге добавил понижатель воздействия фильтра при оборотах менее 2 в секунду, т.к. противофаза не четкая), и вот теперь пришло время новых смертоубийственных полевых испытаний. )

  • 2243
Comments
kostya-tin

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

omegapraim

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

Covax

очкруто! Ж)

dux-viator
kostya-tin;bt127769

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

Это уже будет в рабочем состоянии на базе модифицированной MahoWii 2.1rc2 с исправленными ошибками, т.к. она сама по себе ничего так и держит все что нужно, если логику работы с баром подрихтовать и навсегда забыть про поддержку всяких плат из девяностых. ) Сейчас додумываю самодиагностику события, в остальном уже все на троечку летает. Надеюсь успеть до развала квадра, т.к. алюминий совсем уже устал. 😁

dux-viator
omegapraim;bt127771

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

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

DiscoMan

Такое бы да в Назу - цены бы не было 😃 На видео понравилось восклицание: “О-о-о-у!” и оператор активно пятится задом. Напомнило, как я уворачивался от собственного коптера примерно аналогичного размера, когда назу “понесло”…

ADF

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

dux-viator
ADF;bt127828

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

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