flybrain. передатчик + приемник + автопилот. powered by stm32
. Кстати у народа в основном какие камеры? PAL или NTSC ???
Ну пал вроде как.
Я тут в Нижнем буду. Вы АлексСнег пива пьйоте?
У copterControl, например, тоже питание от USB. До 4.0 В на входном разъеме работу гарантируют.
Я просто констатирую факт. Может L3G4200D проблемы испытывает на границе 3В. Ведь в принципе именно она вешает шину. Процу по фиг, акселю по фиг, барометру так же по фиг. Ну вот есть факт неоспоримый. Я конечно попробую еще запендюрить емкостей после диода побольше, но это позже. слава Богу все сейчас работает железобетонно, я на ночь оставлял. Думаю это достаточный тест по надежности. Можно пока дальше двигаться.
У LP2985-3.3 падение 0,3 вольта, а у той, что я поставил, падение 0,9. Ну ладно, это все мелочевка. Главное понятно в чем проблема. Никто ведь не говорил, что прототип без недостатков. В серийной печатке сделаем работу над ошибками.
Вы АлексСнег пива пьйоте
Пьйом. тока надо заранее предупредить, а то я за рулем не пью 😃 Руль надо заранее дома оставить.
Небольшой отчетец.
Портировал код DCM алгоритма от МегаПирата на свою платформу. Поигрался, в принципе работает. Вижу недостатки. Задал вопросы в теме Олега. Ответит - хорошо, не ответит - ничего страшного. Пока буду реализовывать EKF, чтобы в живую сравнить два алгоритма. А потом еще третий добавлю с кватернионами. Если вычислительной мощи хватит, то все три алгоритма оставлю, буду на ходу выбирать какой правду показывает, по тому и корректироваться в полете. Но даже сейчас Roll и Pitch вполне себе хорошо правду показывают, если без фанатичных перегрузок платформу механически трясти. Если прилагать усилия сбить горизонт, то оно конечно сбивается - соответствующие вопросы задал в другой теме.
PS: проблема I2C за все это время так ни разу и не выплывала. Можно считать этот глюк окончательно побежденным.
Пока буду реализовывать EKF, чтобы
Готовый EKF для Кортекса можно взять у OpenPilotа. Советую так-же посмотреть Мардж.
вот от сюда что ли?
link
Я не пойму что там за язык. matlb что ли?
В любом случае, у меня уже заработал EKF. Ща исследовать буду.
вот от сюда что ли? link
Нет, я имел в виду Си-шные исходники. Открытые и скачиваемые через Git: wiki.openpilot.org/display/…/Building+on+Windows
В любом случае, у меня уже заработал EKF
Тогда - удачи!
Но даже сейчас Roll и Pitch вполне себе хорошо правду показывают, если без фанатичных перегрузок платформу механически трясти
не покажете?
Нет, я имел в виду Си-шные исходники.
Ой! Как там все мутно 😦
Реализация на кватернионах с непонятной функцией предсказания. Я пока кватернионы не реализовал, сейчас чисто на углах Эйлера работает, и работает отменно. Может потом этим займусь, сейчас визуализацию сравнения EKF и DCM делаю.
не покажете?
Покажу. Как раз пишу софтину, чтобы два уровня горизонта на экране монитора сравнить. Если сегодня закончу, дома засниму видео ролик, покажу.
Если сегодня закончу, дома засниму видео ролик, покажу.
Жду посмотреть.
вот первое видео моего EKF работает только гира и только аксель. Время одного цикла EKF занимает примерно 50мкс Вот для сравнения алгоритм DCM
Любопытно. Не ожидал такой разницы от ЕКF, без комплексирования с GPS/компас.
Есть еще алгоритм Мардж: varesano.net/…/initial-implementation-9-domdof-mar…
Предлагаю определиться с терминологией. “алгоритм DCM” - что под этим подразумевается? DCM в общем виде, как и кватернионы - описание поворота. Разницы по принципу применения- нет, и тот и другой метод описывает поворот, только вычислительные затраты немного отличаются, и точность при одинаковой разрядности, но в нашем случае точности метода не принципиальна- неидеальность датчиков сильно “перевешивает”.
Следует , вероятно говорить о методе коррекции гироскопов.
В случае " EKF" также, вероятно, имеет место какое- либо описание поворота на основе интегрирования угловых скоростей, и какой-то метод коррекции, адаптивный в зависимости от величины угловых скоростей и ускорений и предыдущего состояния системы.
“Алгоритм DCM” также имеет метод описания поворота ( очевидно, DCM) и метод коррекции. Обычно в качестве корректирующего метода применяют ПИ регулятор.
Опишите, что именно вы используете в разных случаях (если представляете, как работают примененные вами алгоритмы). Тогда можно что- либо посоветовать, да и остальным участникам будет , надеюсь, понятнее.
По поведению платформы в случае “алгоритма DCM” общем виде видно, что при околонулевых угловых скоростях имеет место колебательный затухающий процесс. То есть система коррекции имеет колебательный характер (причем декремент затухания слишком мал), а желательно иметь апериодический. Также кажется, что при движении вправо- влево платы происходит “зашкаливание” акселерометров.
примерно 50мкс
Так мало не может быть.
20кгц екстендед калмана не бывает, если только на гигагерцовых процах.
20кгц екстендед калмана не бывает
50мкс это время затрачиваемое процом на одну итерацию по кальману.
А частота расчета равно 400Hz, то есть 1 в 1, то что сейчас гира выдает
аксель выдает на частоте 50Гц
работает только гира и только аксель. Время одного цикла EKF занимает примерно 50мкс
Не пойму почему картинка не дрейфует вокруг вертикальной оси ? (магнитометр ведь не подключен)
Или она “отключена” и остались (отслеживаются) только два угла ?
В EKF две переменных и шесть наблюдаемых, так?
В случае " EKF" также, вероятно
Не, там не так все просто. Там есть матрица предсказывающего физического поведения модели на следующем шаге исходя из предыдущей историии, есть матрица предсказания ошибки, которая так же в процессе накопления статистики обучается. Процесс обучения четко заметен в самом конце, когда после нереальных расколбасов по всем осям, я резко ставлю плату в горизонт.
Оно встает с ошибкой градусов на 15, потом медленно ползет к нулю. Это происходит потому, что у алгоритм тупеет в этот момент так как обученная матрица ошибок вываливается за границы предсказаний физической модели, а гироскоп показывает нули по всем осям. Алгоритм ошалело пытается понять что происходит, а информации ноль. Соответственно необходимо время для переобучения, что и видно. А если в этот момент слегка покачать платформу (даже едва заметно), оно тут же приходит в себя, потому что поперла различная инфа с гироскопа.
Алгоритм DCM
Вот здесь, все так. Есть просто матрица вращения и алгоритм принятия решения корректироваться по акселю или нет. А если да, то насколько верить.
DCM у меня тупо из мегапирата содран. И вообщем-то, если использовать без фанатизма для спокойного полета блинчиком, вполне себе работает. Видео это подтверждает.
Или она “отключена”
да, я специально отключил. Какой в ней смысл, если компас отключен. Есть там небольшой дрейф, вполне ожидаемый. Как научусь компас калибровать, так включу.
В EKF две переменных и шесть наблюдаемых, так
сейчас да, скоро добавлю компас, будет 9 параметов. Хотя, даже сейчас уже практически все шоколадно и с этим уже можно дальше двигаться.
Насчет времени итерации я имел ввиду, что судя по посту в тему мегапирата на дцм уходит 19 мкс, а на калмана всего в 2.2 раза больше. Нормальный фильтр калмана гораздо больших вычислительных ресурсов требует чем дцм и точно не в 2 раза.
Как научусь компас калибровать, так включу.
Для начала можно так: (max-min)/2 - это ноль, так по каждой оси.
И оси выровнять друг с другом - подбираем k_x, так, чтобы d_x=k_x*(max_x-min_x) равны для всех осей (т.е. d_x=d_y=d_z).
фильтр калмана гораздо больших вычислительных ресурсов требует чем дцм и точно не в 2 раза.
Он тут пока очень маленький, 2 оси. С маг-ом время увеличится вдвое (примерно квадрат от кол-ва переменных).
Что не в два раза - это точно… Хотя, например можно пересчитывать ковариционную матрицу ( " обучать" 😃 как важно сказал Алекс,) с частой отсчетов по акселерометрам? быстрее-то информация не приходит, угловые ускорения у нас не так велики.
Также , по времени надо помнить что М4 имеет аппаратный арифметический блок для операций с плавающей точкой, и сильно шустрее в этом применении.
Также, есть еще один способ комплексироания данных - комплементарный фильтр (CF) (описан у Махони, кстати)…
На Ютубе есть замечательное видео под бодрую музыку сравнения калмана, расширенного калмана, и CF.
Хотя, например можно пересчитывать ковариционную матрицу
Верно, например на 10 предикторов 1 корректирующий шаг выполнить.
комплементарный фильтр (CF)
Кстати почти те-же результаты дает что и екф, но раз в 10 быстрее выполняется. Для ардуины идеален.
Что не в два раза - это точно…
Почему? Как считать?
Было 2 оси, матрица F 2х2 =4, будет 3оси 3x3=9, время подсчетов увеличится в 9/4=2 раза.
ПРИМЕРНО, без учета усложнения модели.
Сорри, похоже это был ответ не мне 😃, ну пусть остается, как пояснение к подсчетам.