flybrain. передатчик + приемник + автопилот. powered by stm32
У тебя в этом логе только приближение к pitch 90
вот у тебя конец лога. Ты почти приблизился и пошел эфект плавного переворота.
-0.61,88.70,14.65,-0.75 -2.87,88.84,14.06,-0.75 -6.45,88.91,8.01,-0.75 -8.87,88.91,11.46,-0.76 -8.36,88.91,6.14,-0.76 -12.50,88.95,3.00,-0.76 -15.75,89.11,-0.23,-0.76 -18.38,89.14,-0.23,-0.77 -17.10,89.17,-2.18,-0.77 -25.29,89.30,-14.01,-0.77 -35.72,89.51,-14.56,-0.77 -30.35,89.58,-16.71,-0.78 -35.37,89.68,-16.60,-0.78 -50.48,89.93,-128.19,-0.78 -158.21,89.64,-146.95,-0.78
Давай так. Сделай файл подлиннее, только двигайся по pitch медленно и несколько раз, стараясь держать плату горизонтально пройдешь питч несколько раз от 45 <-> -45 с переходом через 90. Давай мне свой текстовый файл, я его тебе визуализирую на экране и дам видео посмотреть. вот тогда ты сам убедишься. А можешь еще чего накрутить, чтобы мы красивую картинку посмотрели. Потряси там платку всяко разно.
Формулами ты пользуешься теми же, что и я 😃 Значит эффект есть, не может не быть. Давай длинный лог мне в личку зашли или тут ссылку дай на закачку.
эфект плавного переворота.
-0.61,88.70,14.65,-0.75
-2.87,88.84,14.06,-0.75
-6.45,88.91,8.01,-0.75
-8.87,88.91,11.46,-0.76
-8.36,88.91,6.14,-0.76
-12.50,88.95,3.00,-0.76
-15.75,89.11,-0.23,-0.76
-18.38,89.14,-0.23,-0.77
-17.10,89.17,-2.18,-0.77
-25.29,89.30,-14.01,-0.77
-35.72,89.51,-14.56,-0.77
-30.35,89.58,-16.71,-0.78
-35.37,89.68,-16.60,-0.78
-50.48,89.93,-128.19,-0.78
-158.21,89.64,-146.95,-0.78
Ага, щяс. Афигенно плавно, учитывая частоту 250герц. Целых 0.056 секунды длился процесс.
Ты что, хотел чтобы мгновенно?
Формулами ты пользуешься теми же
Вообще-то других и быть не может.
Ставим самоль на бок под 90 градусов, чем точнее, те лучше. А теперь пробуем вращать его медленно вокруг pitch оси.
А этот опыт зачем? Если так делать, то только яв будет меняться.
Ты что, хотел чтобы мгновенно?
я бы хотел, чтобы вообще никак. И дело не во времени, сколько он длится, а в том, что даже по твоим цифрам, если самолет попадает в -25.29,89.30, и там зависает, то ты не знаешь какой у тебя roll. И реально твои цифры говорят о том, что в промежутке от 85…95 ты будешь иметь зону неопределенности. Много ли это 10 градусов? По моим понятиям это дофига. Или ты будешь пытаться рулить в этом промежутке?
А этот опыт зачем? Если так делать, то только яв будет меняться.
Проделай на своей платформе, только с визуализацией вращающегося тела, а то не поймешь. В свои собственные цифры ты не веришь.
Короче, Алекс похоже не может “пощупать”, что такое углы Эйлера 😃
Каждый следующий угол отсчитывается от предыдущего. Они так построены. Обычно все используют последовательность YPR, ( Yaw Pitch Roll ) но можно делать и RPY, никто не запрещает.
тогда ничего крутится при 90 градусном тангаже не будет…
Вообще откуда эта непонятная привязанность - что надо управлять по углам эйлера, которые в принципе не могут описать вращение полностью, как широта и долгота- земной шар?
Ребята, вы столько страшных слов наговорили - а не поясните и мне заодно, как-нибудь посермяжнее: на входе фильтра Калмана при перевороте получается разрыв - от 180 градусов до -180. Фильтр от этого просто дичает. Как “свернуть” шкалу и сделать непрерывной? Только, если можно, без страшных слов 😃 Хорошо, когда складываешь целые числа - и проблемы нет, после 0xFFFF следует 0. А как бы здесь извратится? Простите, если вопрос глупый - ну ни разу ни арихметик я.
Калмана при перевороте получается разрыв - от 180 градусов до -180. Фильтр от этого просто дичает. Как “свернуть” шкалу и сделать непрерывной?
Ё-ма-ё. Не буду более пугать народ пустой дискуссией. Автор подрастет, пооботрецца в этом вопросе и всё будет пучком.
Или ты будешь пытаться рулить в этом промежутке?
Вам бы полетать реально, батенька. Или начать двигаться к реализации стаба. Там эти вопросы и отпадут.
Ё-ма-ё. Не буду более пугать народ пустой дискуссией. Автор подрастет, пооботрецца в этом вопросе и всё будет пучком.
эээ… Что-то не понял ответа. Откровенно говоря, меня больше волнует своя железка - поскольку тут пир горой, может и мне чего с барского стола перепадет. Или ответ уже был, да я не разглядел его за забором слов? У меня-то все значительно проще - всего одну ось стабилизировать надо, глобальных задач не решаю, в космос тоже не лечу.
А если у кого что-то и пучком будет - я ж только рад за него. Хотя и свой пучок тоже бы неплохо.
получается разрыв - от 180 градусов до -180. Фильтр от этого просто дичает. Как “свернуть” шкалу и сделать непрерывной?
Если вместо одной переменной “угол a” использовать пару (x1=cos(a), x2=sin(a)), то разрыва нет.
У (sin(a), cos(a)) обе компоненты гладко растут/убывают при переходе через 180град.
Поэтому считают в кватернионах. Вместо трех углов будет четыре переменных,
каждая из них - “замес” из синусов и косинусов.
Фильтр от этого просто дичает
Фильтр это просто набор операторов. Если у тебя фильтр дичает от углов, то ты неправильно модель построил.
Самое простой вариант, если в твоей модели критично находится именно в диапазоне +180,-180 можно после всех апдейтов открутить угол в нужную зону искусственно. Но какой-то диапазон странный, обычно удобнее оперировать 0 - 360
Если у тебя одна ось, то непонятно откуда ты там сингулярности надыбил, у тебя чисто синусы и косинусы в худшем случае должны быть, если это процесс вращения.
эээ… Что-то не понял ответа
В самом фильтре, будь то калман, дсм и прочие, никаких разрывов нет. Разрывы получаются так сказать искусственно в процессе преобразования кватерниона, взятого из фильтра в углы эйлера. В вышеописанной байде скачок ролла с 0 до 180 град при переходе через питч 90 град очень кстати, потомучто самик в этот момент на спину ложится, а стабилизатор его тутже переворачивает в нормальное положение. Но это плюс сугубо для реализации стаба. Это какбэ по-простому я постарался объяснить.
2 varvar и ещще нужно чотко понимать, что интерпретировать результаты работы фильтров можно по-разному. Переход на углы эйлера - один из вариантов.
А для полетов по камере, в коей теме мы находимся, очень важна именно система стабилизации, которая не даст самику уходить за некие предельные углы по крену и тангажу (и конечно тангаж в 90 градусов тут совсем не нужен).
Задача автопилота задавать углы относительно земли, а стаба - удерживать их. В этой задаче ±45 град по крену и тангажу за глаза хватает.
Вообще откуда эта непонятная привязанность
Посмотри в любой открытый код любого автопилота. Конечный алгоритм стабилизации всегда опирается на углы Эйлера при оценке положения тела. Так что это не я придумал.
У меня персонально нет привязанности никакой. Мне просто нужны углы наклона тела ко всем трем осям + направление вперед в любой момент времени для дальнейшего программного анализа. А стандартный, общеупотребительный набор формул не дает этого сделать в любой момент времени. А то, что Дринкер считает, что наличие неопределенности положения в определенных обстоятельствах это правильно, так это его дело. Я для себя так не считаю, только и всего. Доказывать кому-то, чего-то у меня задача сейчас так не ставится. А вообще то по большому счету, у нас ведь с Дринкером разногласие не в математике или кривой реализации алгоритма вращения ( и у него и у меня все одинаково работает), у нас с ним разногласия в том как результаты интерпретировать.
Каждый следующий угол отсчитывается от предыдущего. Они так построены
Вообще-то изначально углы Эйлера это базис. Другое дело, вращение тела в этом базисе. Вероятно так и придется кватернион преобразовывать в читабельный вид, через расчет кватерниона вращения от предыдущего состояния к новому. Сейчас я эту тему отложил до праздников, надо получше все обдумать.
А то, что Дринкер считает, что наличие неопределенности положения в определенных обстоятельствах это правильно, так это его дело
Дринкер считает, что неоправдано заморачиваться с проблемой исходя из соотношения гимор / актуальность.
Большинство проектов летают при наличии этой проблемы. У Дринкера кстати тоже.
Большинство проектов летают при наличии этой проблемы
Не вопрос, пусть летает. Просто я хочу решить задачу более широко и не только для FPV. Я хочу чтобы мой самолет умел летать как угодно под автопилотом. В том числе и под 90 градусов вверх и вниз.
2Алекс. А вот так нормально? Чистые повороты относительно “земли”
Через 30 минут мона смотреть
Тряска, как заказано
А вот так нормально?
ДА. Если пирамида гранями не вращает (а то уж больно симметричное тело выбрал) то это как раз то, что надо. Молоток. Расскажешь как преобразовывал кватернион в углы или секрет фирмы?
Спасибо всем ответившим. Видимо, варианта у меня два - или читать страшные слова, или оставить все как есть, тем более, что скопипасченная подпрограмма работает: не трогай технику - она не подведет. Скорее всего просто буду использовать значение -180 градусов, когда приближаюсь к этому значению. Точность “вверх ногами” мне вроде как не нужна.
Расскажешь как преобразовывал кватернион в углы и
Да
Видимо, варианта у меня два - или читать страшные слова, или оставить все как есть, тем более, что скопипасченная подпрограмма работает: не трогай технику - она не подведет. Скорее всего просто буду использовать значение -180 градусов, когда приближаюсь
А подробнее?
А подробнее?
да в общем-то и описывать особо нечего - управляю я самолетиками (летающее крыло) такой штукой - rcopen.com/forum/f8/topic222710 , к которой прикручен motion plus в качестве стабилизатора. Естественно, компенсирует только порывы ветра и всякие возмущения, т.е. стабилизатором это можно назвать чисто условно. Решил все это немного переделать - rcopen.com/forum/f8/topic263075 . Ну и заодно немного улучшить стабилизацию - чтобы видеокамеру не слишком бросало. Собственно, не потому, как надо, а потому как изготовление плат на заказ стало очень дешево.
А так как это всего лишь хобби, и причем достаточно новое для меня - предпочитаю все сделать сам. Собственно, и крылья все вырезаны из куска пенопласта. Бюджетный вариант - из куска ценой меньше 10 евриков можно вырезать 4 крыла с размахом 1.2 м 😃 В общем, каждый с ума сходит по-своему 😃
да в общем-то и описывать особо нечего - управляю я самолетиками (летающее крыло) такой штукой
А это причем?
не поясните и мне заодно, как-нибудь посермяжнее: на входе фильтра Калмана при перевороте получается разрыв - от 180 градусов до -180. Фильтр от этого просто дичает. Как “свернуть” шкалу и сделать непрерывной? Т
Вопрос -то в чем сопссно?
Между делом подключил компас. Еще более интересненько стало все работать. Исчез дрейф по yaw и ошибка после тряски почти совсем пропала. Вообщем с компасом конечно лучше, что и говорить, но уж больно зависим от разных внешних воздействий. Будем в дальнейшем как-то искать функцию компромиса между вкладом компаса и гироскопа в процесс корректировки.
Пробовал подносить мотор к плате. Конечно магниты мотора воздействуют на компас, начинаются искажения, но не фатальные. похоже мотор должен находится от платы на расстоянии не менее 10( а лучше 15) см. Тогда я искажений практически не наблюдаю. Если удастся размещать мотор и плату на 20 см, то вообще все почти хорошо.
Еще пробовал плату ставить с ноутом на вращающийся стул и крутил, эмитируя развороты самолета в полете. Горизонт стоит и не дрыгается. Вообщем, все даже лучше, чем я предполагал.
Начал пробовать детектор синхры в видеосигнале. Вроде теория сходится с практикой. Прерывания пошли по синхроимпульсам. За праздники попробую забацать горизонт на экране. Сделаю видео на показать.
Цитата Сообщение от AlexSneg Посмотреть сообщение Расскажешь как преобразовывал кватернион в углы и? Да
Расскажи принцип, я дальше сам попробую.
Видимо, варианта у меня два - или читать страшные слова, или оставить все как есть
Мы не можем тебе помочь до тех пор, пока ты не опишешь какие у тебя датчики, и что они измеряют. И какой процесс ты пытаешься моделировать. А умные слова придется в любом случае освоить, ибо “векторный матанализ”, сам понимаешь не есть тема средней школы. 😃
Расскажи принцип
q.x = sin(theta/2) * axis.x
q.y = sin(theta/2) * axis.y
q.z = sin(theta/2) * axis.z
q.w = cos(theta/2)
Между делом подключил компас.
А калиброффка?
Яв стремицца к истинному направлению оси X относительно Севера Земли?
Как стартует алгоритм? Яв с 0 ползет к истинному значению, или инициализация по вычисленному значению курса из показаний магнитометра?