flybrain. передатчик + приемник + автопилот. powered by stm32
Не похоже ли это на причину неадекватного поведения FY-ххх ?
Не похоже ли это на причину неадекватного поведения FY-ххх ?
У меня нет FY я не очень в теме.
Проверить имеет ли плюшка место быть очень легко.
Берем самоль с фишкой, калибруем в горизонт. Проверяем, что при покачивании влево - вправо элероны отрабатывают крены в противоположную сторону. Если все ОК, то ставим самоль в горизонт. Затем МЕДЛЕННО начинаем поднимать нос самоля вверх и внимательно следим за элеронами. Если при достижении угла близкого к 80 градусам начинаем видеть, что помимо руля высоты начинают двигаться элероны или рудер (хвост), значит проблема имеет место присутствовать. Далее двигаем самоль в 90 градусов. Начинаем раскачивать самолет в окрестности 90 градусов носом вверх, заставляя переходить его туда-сюда через pitch = 90 градусов раскачка должна быть очень медленной, это важно. Во время этой процедуры наблюдаем рули самолета, если начнется дурацкое активное руление, значит мои поздравления всем владельцем FY-ххх девайсов. Если самолет продолжает рулить ТОЛЬКО рулем высоты, значит есть надежда, что авторы по крайней мере поставили припарку. Тогда надо провести еще одну проверку на вшивость.
Ставим самоль на бок под 90 градусов, чем точнее, те лучше. А теперь пробуем вращать его медленно вокруг pitch оси. Внимательно наблюдаем, что самолет делает рулями. Если начнет чем-то рулить акромя элеронов, значит авторы поставили патч на pitch, но забыли патч на roll.
А реально это на 100% достоверно можно проверить, только имея графический уровень горизонта с фишки в момент теста.
А реально это на 100% достоверно можно проверить, только имея графический уровень горизонта с фишки в момент теста.
Фишка ведет себя точно так-же как Ваша платка - начинает кувыркаться. 😃
Не похоже ли это на причину неадекватного поведения FY-ххх ?
Но это не то, что ее ставится в вину в первую очередь. Проблемма неопределенности roll при pitch близком к 90 градусов есть у ВСЕХ систем стабилазации, как у пирометрических, так и инерциальных. Обычно она решается чисто программными затычками, типа if/else…
Но это не то, что ее ставится в вину в первую очередь. Проблемма неопределенности roll при pitch близком к 90 градусов есть у ВСЕХ систем стабилазации, как у пирометрических, так и инерциальных. Обычно она решается чисто программными затычками, типа if/else…
Дойду на работу и проделаю тест с CoterControl уже самому интересно
Это хорошо что Вы, Александр, быстро нашлись 😃 только начал писать на вас ссылку 😃
Проблемма неопределенности roll при pitch близком к 90 градусов есть у ВСЕХ систем стабилазации, как у пирометрических, так и инерциальных.
А вариант поставить второй гироскоп/пиродатчик повернутый градусов на 45 относительно первого не рассматривается по чисто экономическим соображениям?
А вариант поставить второй гироскоп/пиродатчик повернутый градусов на 45 относительно первого не рассматривается по чисто экономическим соображениям?
Проблемма совсем не в датчиках. Показания датчков непрерывны. Разрыв начинается в арктангенсе, когда при неопределенности надо вычислять реальный roll. ИМХО, проще вообще не пытаться вычислять его в такой ситуации, как например делает АП от Smalltim.
Фишка ведет себя точно так-же как Ваша платка - начинает кувыркаться.
Вот спасибо за видео. 100% точняк 1 в 1 поведение, которое я наблюдаю на своей платформе, а результат именно тот, который я и предполагал. Она пыталась рулить… и бум! Александр, вы просто спасли мой сон. Я реально 2 ночи не спал, ворочался, думал у меня проблемы в алгоритме. Теперь я вижу, что у меня все правильно.
Проблемма неопределенности roll при pitch близком к 90 градусов есть у ВСЕХ систем стабилазации, как у пирометрических, так и инерциальных.
Не, не так. Это не проблема инерциальных систем. Дринкер уже поставил точный диагноз. Это банально:
Вот это говорит о том, что проблемы нет никакой.
вот я запостил видео выше, где у парней этой проблемы нет. И я вижу их исходники. Они не работают углами эйлера. Но OpenGL обучен прямой работе с кватернионами при развороте камеры обзора. Осталось разузнать как оно это делает. Блин сколько всего нового приходится узнавать по ходу дела… Ладно, надо в этом вопросе сделать паузу. Понятно, что решение есть, просто оно не на поверхности. Надо дать мозгу отдохнуть. Вот был бы, кто в 3D анимаци понимает, наверно бы объяснил, как они объекты на 360 градусов во все стороны крутят. Нашел старый фотик с убитой ПЗС, который PAL отдает в телек. Спаял разъемы, буду сейчас OSD осиливать. К извлечению roll - pitch - yaw углов из кватерниона вернусь позже, когда мозг от этого отдохнет. И еще хочу компас уже подключить к расчету положения тела. Надо только наладить его калибровку. Тут мозга много не надо. Вот и займусь пока.
Дойду на работу и проделаю тест с CoterControl уже самому интересно
Крчу в данный момент на столе. 😃 При чистой постановке на хвост, ведет себя более грамотно, чем Фишка в том полете, но если чуть покачать - тоже начинается вращение.
Но в CopterControl - алгоритм DCM (в OpenPilot - EKF), а что прошито в Фишке - неизвестно.
если чуть покачать - тоже начинается вращение.
Вот! Понятно, что сделали припарку if/else если внезапно на хвост встали, чтобы в штопор на падать с разу. По идее дальше тупо ждать, когда тело уйдет из зоны неопределенности. А если долго не уходит, то…
Короче, косвенно подтверждается, что я прав. Общие грабли обозначены, осталось понять пути решения и не закрывать на это глаза.
Дринкер уже поставил точный диагноз. Это банально:
А нафига в фпв летать с такими углами?
Да и что вы стабилизировать собрались? Полёт свечкой вверх?
А нафига в фпв летать с такими углами?
Уж если делать, то делать хорошо, либо не делать совсем.
второй гироскоп/пиродатчик повернутый градусов на 45 относительно первого
Для инерциалки это не имеет никакого смысла. проще иметь 8 референсных body frame’ов и переключаться между ними на ходу при переходе арктангенсов из одной четверти в другую во время расчета углов эйлера. А кватерниону положения вообще наплевать, он про арктангенс даже не догадывается. Он везде гладко без сингулярностей вращается. Кстати, похоже в 3D анимации так и делают.
Уж если делать, то делать хорошо, либо не делать совсем.
Сейчас я у себя проверю, хорошо-ли я сделал.
Разрыв начинается в арктангенсе, когда при неопределенности надо вычислять реальный roll.
Тогда также радикально как и со вторым гироскопом:
Считать параллельно второй roll, но сдвинутый градусов на 45. Когда первый приближается к 80 градусам, данные берутся со второго (сдвинутого)+45 градусов на который он сдвинут. Вышли из опасной зоны - переключаемся обратно на образцовый roll.
Только наверно сожранные ресурсы не будут стоить полученного результата…
А нафига в фпв летать с такими углами?
Сказали в FY и сделали, как есть… 😃
Уж если делать, то делать хорошо, либо не делать совсем.
Спасибо, Вам, Алекс, за вашу работу! С таким подходом просто не может получится плохо.
Считать параллельно второй roll
Или даже даже тому единственному roll сдвигать ноль. На выходе же не будет разницы, оно сразу насчитало 90 градусов, или сначала 45, а потом к ним отдельно ещё 45 прибавили.
Так и на обычных, железных, гироскопах (если память не отшибло) рамки двигают чтоб не сложились, а реальный угол определяется с учётом поправки.
ИМХО, проще вообще не пытаться вычислять его в такой ситуации, как например делает АП от Smalltim.
Я вычисляю, но у меня Roll не крутится 😉
Я вычисляю, но у меня Roll не крутится
И у меня не крутицца, а честно ложится “на спину”
через 20 минут обещают можно смотреть.
вычисляю, но у меня Roll не крутится
Насколько я помню, ты ввел дополнительную логику защищающую алгоритм горизонта от неопределенностей.
Или теперь все “гораздо проще”? 😃
И у меня не крутицца, а честно ложится “на спину”
На видео вижу график pitch, про roll ничего не вижу. Можешь одновременно показания pitch + roll + yaw совместить разными цветными линиями?
Я вычисляю, но у меня Roll не крутится
Дельтами по углам работаешь, при этом постоянно изменяя референсное положение? У тебя положение тела кватернионом описывается?
На видео вижу график pitch
Это ролл. Специально только его выводил, чтобы мешанины не было. В примере ролл прыгает от 0 до 180 град при переходе питча через 90 град.
Можешь одновременно показания pitch + roll + yaw совместить разными цветными линиями?
Щя сделаю.
Яв гад, мешает на графике - затирает линии ролла и питча. Оставил тока их. Ролл красный, питч синий. Все отлично видно.
Ролл красный, питч синий
Ну, ролл то почему у тебя поплыл? Он не должен плыть. Ты же ось ролл не вращаешь. С какого бодуна он вдруг на 180 развернулся?
Еще раз. Если ты берешь плату, ставишь ее горизонтально и начинаешь вращать pitch, то изменяться по кругу должен только один угол - pitch.
У тебя же мы наблюдаем как раз обсуждаемый эффект. Поначалу roll = 0, а pitch растет. Начиная с какого-то момента pitch ~80 градусов, roll резко начинает расти. И растет до тех пор, пока pitch не выйдет с другой стороны. Сделай масштаб мельче по временной оси для первого подъема графиков, ты увидишь сразу.