flybrain. передатчик + приемник + автопилот. powered by stm32

AlexSneg
kimu:

Она подаёт сигнал на серву и смотрит по гироскопу за реакцией модели

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

  1. сколько надо подать на серву, чтобы оно скомпенсировало некоторое отклонение и почему именно столько а не больше или меньше?
  2. Сколько надо ждать, чтобы понять, что ответ получен? Ответ на серву может придти через несколько секунд, а может и сразу. У самолета нет мгновенного ответа на воздействие, и этот временной лаг может быть от раза к разу абсолютно разным
  3. Если ответа нужного нет, то что это означает и где критерий того, что его нет? Жать серву еще дальше? То есть, реально в данной системе будет постоянная раскачка, ибо никогда не будет достигнуто состояние равновесия.
  4. Как я теперь знаю, самолет это колебательная система, с собственным резонансом, и судя по умному учебнику, мероприятия по недопущению случайного резонанса, сравнимы по сложности с изобретением космического корабля. А вот что делает колебательная система при отсутствии в ней грамотного демпфирующего воздействия, надеюсь, не надо объяснять? Никогда не видели идиотов на дороге с мертвыми амортизаторами но работающими пружинами? Занимательное зрелище, рекомендую.
  5. До кучи надо сначала понять, а чего мы ждем от п.2
kimu:

а не для штатных полётов?

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

Oliver
AlexSneg:

вариант действия на аварийный случай

Ну для начала надо определиться, какой конкретно аварийный случай рассматриваем. Если только отваливание гпс… Но честно говоря например у меня даже со старым EM403 гпс отваливался куда реже, чем происходили другие “аварийные случаи” и как правило, гпс возвращался через несколько секунд, в отличие например от сорванной сервы… Последние же наверное года два вообще не припомню отваливания гпс. Так что лучше ИМХО направить усилия на красивую и глубокую реализацию управления моделью в нормальном состоянии, чем придумывать кейсы типа а что мы будем делать, если мотор сорвет с одного крепления, он уйдет в расколбас, заденет крыло, отчего элерон встанет раком, а аккум от вибрации уедет на 5см назад…

AlexSneg
Oliver:

Так что лучше ИМХО направить усилия на красивую и глубокую реализацию управления моделью в нормальном состоянии

Я сейчас так и делаю 😃 Но думать про особые кейсы заранее тоже полезно

RedSun
AlexSneg:

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

Алексей, у Вас была куча вопросов по динамике самолета. Вам посоветовали почитать соответствующую книжку, и почти все ответы нашлись. Так вот, попробуйте почитать книжку по системам автоматического управления, причем такие книжки есть уже с самолетной спецификой. Вы не поверите, но практически все современные системы стабилизации используют в том или ином виде вышеописанный алгоритм. Это называется “системы с обратной связью” 😃).
Что касается борьбы с автоколебаниями и резонансом, то все давным-давно придумано. Погуглите по слову “демпфер”. Это отрицательная обратная связь по скорости изменения регулируемой координаты. При наличии датчика, эту самую скорость измеряющего, добавляется одна строчка кода. Если мы стабилизируем угол, нам нужна информация об угловой скорости. Измеряет угловую скорость кто ? Правильно, гироскоп в режиме ДУС. 😃))

AlexSneg
RedSun:

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

Я как раз такую и читал, там и про динамику и про автопилоты все разжевано.
Атоматическое управление полетом самолета.В.Г. Воробьев, С.В. Кузнецов Москва “Транспорт” 1995 г.
Нет там такого, чтобы что-то подал и посмотрел что получится. Обратная связь там идет с показаний гировертикали.

RedSun:

Погуглите по слову “демпфер”.

Спасибо, я уже все сделал на эту тему 😉

RedSun:

Правильно, гироскоп в режиме ДУС

Нет, в общем случае это неправильно. Никто не гарантировал что оси ДУС в модели сорентированы в соответствии с осями самолета. Тут надо хитро, я уже все сделал 😉

RedSun

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

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

Никто не гарантировал что оси ДУС в модели сорентированы в соответствии с осями самолета. Тут надо хитро, я уже все сделал 😉

А не проще один раз выставить платформу геометрически верно, и в дальнейшем не париться ? Ну а если очень хочется ее переставлять и двигать, никто не мешает каждый раз проводить предполетную калибровку 😃))

AlexSneg
RedSun:

Так что вполне хватит обратной связи по угловой скорости, которую, собственно, механический флайбар и обеспечивает.

Таую штуку я уже внедрил по результатам работы над ошибками.

RedSun:

требующий в общем случае дополнительных датчиков…

Ну вот как-бы да, было бы супер, но увы и ах… приходится работать с теми сервами, что реально существуют на практике, а не в сферическом вакууме.

RedSun:

каждый раз проводить предполетную калибровку

Как калибровку не проводи, ДУС все равно врать будет по отношению к реальным осям bodyframe. В общем случае нельзя считать что показание по ДУС по х это pitch, а по y - roll. Вообщем не хотелось бы сейчас в детали вдаваться, но я эту проблему порешал. Сейчас платформу можно ставить в самолет с очень большими допусками во всех плоскостях и кренах. Сейчас “удобство пользователя” хотя бы через консоль доведу до более менее приемлемого варианта и буду новые тесты проводить. Вчера сделал режим полета по кругу и удержание высоты без использования GPS. Посмотрю как будет отрабатывать маневры разворотов, там уже будет видно где еще подшаманить.

kimu
RedSun:

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

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

AlexSneg:

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

Если не нравится обратная связь, можно при настройке попросить отклонить рули (по очереди) на определённый угол (+5, 0, -5) и по ширине импульса управляющего сигнала примерно определить геометрию.
Правда не понимаю что даст угол отклонения сервы без знания формы рулевой поверхности…

RedSun
AlexSneg:

Ну вот как-бы да, было бы супер, но увы и ах… приходится работать с теми сервами, что реально существуют на практике, а не в сферическом вакууме.

Как калибровку не проводи, ДУС все равно врать будет по отношению к реальным осям bodyframe. В общем случае нельзя считать что показание по ДУС по х это pitch, а по y - roll. Вообщем не хотелось бы сейчас в детали вдаваться, но я эту проблему порешал. Сейчас платформу можно ставить в самолет с очень большими допусками во всех плоскостях и кренах.

Я под калибровкой в данном случае подразумевал не только оценку собственного дрейфа гироскопов, а оценку платформы целиком. То есть ставим самолет неподвижно в положение, которое нам хочется считать горизонтальным. По сигналам акселерометров определяем рассогласование осей платформы и ероплана. Заранее считаем все синусы-косинусы, чтобы потом время не терять. А в полете пересчитываем оси платформы в связанные. Я имел в виду именно это. Подозреваю, что у Вас эта проблема как-то так и решена.

kimu:

Только для получения угла из скорости никаких лишних датчиков не надо, нужен интеграл.

Фигня в том, что дрейф гироскопа (сиречь ошибка оценки угловой скорости) при простом интегрировании вызывает нарастающую со временем ошибку оценки угла. Именно поэтому для коррекции горизонта используются еще и сигналы с акселерометров. А вот с курсом такой фокус не проходит, оттого и приходится коптерщикам-вертолетчикам всякие компасы использовать…

kimu:

Правда не понимаю что даст угол отклонения сервы без знания формы рулевой поверхности…

…а еще без знания ее площади, плеча и прочих нужных параметров…

AlexSneg
RedSun:

Подозреваю, что у Вас эта проблема как-то так и решена.

Да, решена. Я постоянно привожу текущие проекции векторов датчиков к реальным осям bodyframe, заданному референсному положению. У меня есть все эти показатели, только они уже после соответствующей обработки математической появляются.

RedSun:

всякие компасы использовать…

Тут все в порядке. У меня полноценные 9 осей: гира+аксель+компас. Курс держится четко, никуда не уходит. Погрешность в пределах 0,5 градуса

Drinker

Вставлюсь. С точки зрения созерцателя вроде бы все идет как и должно.
Но последнее утверждение вызвало улыбку что-ли. Я про нольпять градуса.

Syberian
Drinker:

утверждение вызвало улыбку

Если алгоритм содран с моего, там действительно в карусельном тесте не более чем на 0.5 град уходит по крену и тангажу. Курс шарится ± 3 градуса, что с компаса возьмешь…
А вот обсуждение “формы закрылков” и какой-то “телорамы” с осями в разные стороны реально доставляет 😁

Drinker
Syberian:

Если алгоритм содран с моего

А у тебя какой алгоритм? арг или марг товарища себастьяна магвика? или дцм?

Syberian:

и какой-то “телорамы”

Тут правильный термин - бодифрейм это система координат связанная с телом.

AlexSneg
Drinker:

А у тебя какой алгоритм?

У меня EKF на кватернионах полноценный. Используется gyro (400Гц) + accel(100Гц) + Mag(~50Гц). Цикл update+predict работает на частоте гироскопа. Дрейф по всем плоскостям практически нулевой, сколько бы я плату ни крутил и как бы долго ее не оставлял на месте лежать. Цифры плавают в пределах 0,8-0,5 градуса.

Drinker
AlexSneg:

полноценный

Что значит полноценный? екф бывает неполноценный.

AlexSneg:

Дрейф по всем плоскостям практически нулевой

Дрейф и точность разные вещи. Ты говорил про точность в нольпять градусов. Чем ты это проверял? Транспортиром?

AlexSneg
Drinker:

екф бывает неполноценный

Да, запросто, буквально недавно видел один проект с исходниками. Нет оно конечно как-то работает, но…
www.gluonpilot.com/wiki/Main_Page Скачай исходники, получи удовольствие

Drinker:

Дрейф и точность разные вещи

Может быть терминология неудачная. Дрейф это когда я положил, засек сколько градусов по всем осям, потом через час пришел, проверил. В градусах все три оси в тех же положениях.
Про точность. Кладем на лист бумаги, обвели ручкой контур. Взяли плату, покрутили, положили. Выровняли по отрисовке. Смотрим сколько показывают. Расхождение меньше градуса от начального варианта. Если рядом сильный магнит, оно конечно поедет на пару градусов по Yaw. Такое объяснение устраивает? Терминологию придумай сам. Конечно, надо не про точность вести речь, поскольку не с чем сравнивать , но о повторяемости ошибки относительно начального референсного положения говорить вполне можно. Знать конкретно где север, а где юг, мне на фиг не нужно и глубоко безразлично. Для ОСД конечно я прямо в поле на взлете сравниваю GPS и компас и засекаю реальную ошибку, после этого это изначение использую для показания истинного направления на север. Сейчас на показания YAW при вычислениях можно опираться примерно до крена в 80 градусов в любом направлении, это я выяснил чисто экспериментом. В принципе при кренах больше, о курсе речь уже не идет чисто физически.

Drinker

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

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

AlexSneg

Ок, я понял о чем ты. Сегодня сделаю такой тест. Но что бы там ни было, оно вообщем-то не важно для самолета, у которого GPS есть на борту. Я даже уверен , что там будет ошибка, это же от качества калибровки магнетометра зависит. Главное, чтобы ошибка повторялась одинаково.

Oliver
AlexSneg:

Но что бы там ни было, оно вообщем-то не важно для самолета, у которого GPS есть на борту

Эгм? Большинство людей считают, что самолеты не могут летать боком или хвостом вперед. Они ошибаются.

AlexSneg

ошибка курса это разность показаний GPS по курсу и компаса по курсу. Где здесь затруднение в определении летим мы хвостом вперед или боком?

Oliver
AlexSneg:

ошибка курса это разность показаний GPS по курсу и компаса по курсу.

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