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

Drinker
AlexSneg:

. Кстати у народа в основном какие камеры? PAL или NTSC ???

Ну пал вроде как.

Я тут в Нижнем буду. Вы АлексСнег пива пьйоте?

AlexSneg
baychi:

У copterControl, например, тоже питание от USB. До 4.0 В на входном разъеме работу гарантируют.

Я просто констатирую факт. Может L3G4200D проблемы испытывает на границе 3В. Ведь в принципе именно она вешает шину. Процу по фиг, акселю по фиг, барометру так же по фиг. Ну вот есть факт неоспоримый. Я конечно попробую еще запендюрить емкостей после диода побольше, но это позже. слава Богу все сейчас работает железобетонно, я на ночь оставлял. Думаю это достаточный тест по надежности. Можно пока дальше двигаться.

У LP2985-3.3 падение 0,3 вольта, а у той, что я поставил, падение 0,9. Ну ладно, это все мелочевка. Главное понятно в чем проблема. Никто ведь не говорил, что прототип без недостатков. В серийной печатке сделаем работу над ошибками.

Drinker:

Вы АлексСнег пива пьйоте

Пьйом. тока надо заранее предупредить, а то я за рулем не пью 😃 Руль надо заранее дома оставить.

AlexSneg

Небольшой отчетец.
Портировал код DCM алгоритма от МегаПирата на свою платформу. Поигрался, в принципе работает. Вижу недостатки. Задал вопросы в теме Олега. Ответит - хорошо, не ответит - ничего страшного. Пока буду реализовывать EKF, чтобы в живую сравнить два алгоритма. А потом еще третий добавлю с кватернионами. Если вычислительной мощи хватит, то все три алгоритма оставлю, буду на ходу выбирать какой правду показывает, по тому и корректироваться в полете. Но даже сейчас Roll и Pitch вполне себе хорошо правду показывают, если без фанатичных перегрузок платформу механически трясти. Если прилагать усилия сбить горизонт, то оно конечно сбивается - соответствующие вопросы задал в другой теме.

PS: проблема I2C за все это время так ни разу и не выплывала. Можно считать этот глюк окончательно побежденным.

baychi
AlexSneg:

Пока буду реализовывать EKF, чтобы

Готовый EKF для Кортекса можно взять у OpenPilotа. Советую так-же посмотреть Мардж.

AlexSneg

вот от сюда что ли?
link

Я не пойму что там за язык. matlb что ли?
В любом случае, у меня уже заработал EKF. Ща исследовать буду.

baychi
AlexSneg:

вот от сюда что ли? link

Нет, я имел в виду Си-шные исходники. Открытые и скачиваемые через Git: wiki.openpilot.org/display/…/Building+on+Windows

AlexSneg:

В любом случае, у меня уже заработал EKF

Тогда - удачи!

Drinker
AlexSneg:

Но даже сейчас Roll и Pitch вполне себе хорошо правду показывают, если без фанатичных перегрузок платформу механически трясти

не покажете?

AlexSneg
baychi:

Нет, я имел в виду Си-шные исходники.

Ой! Как там все мутно 😦
Реализация на кватернионах с непонятной функцией предсказания. Я пока кватернионы не реализовал, сейчас чисто на углах Эйлера работает, и работает отменно. Может потом этим займусь, сейчас визуализацию сравнения EKF и DCM делаю.

Drinker:

не покажете?

Покажу. Как раз пишу софтину, чтобы два уровня горизонта на экране монитора сравнить. Если сегодня закончу, дома засниму видео ролик, покажу.

Drinker
AlexSneg:

Если сегодня закончу, дома засниму видео ролик, покажу.

Жду посмотреть.

AlexSneg

вот первое видео моего EKF
работает только гира и только аксель. Время одного цикла EKF занимает примерно 50мкс

Вот для сравнения алгоритм DCM

baychi
AlexSneg:

вот первое видео моего EKF работает только гира и только аксель. Время одного цикла EKF занимает примерно 50мкс Вот для сравнения алгоритм DCM

Любопытно. Не ожидал такой разницы от ЕКF, без комплексирования с GPS/компас.
Есть еще алгоритм Мардж: varesano.net/…/initial-implementation-9-domdof-mar…

serj

Предлагаю определиться с терминологией. “алгоритм DCM” - что под этим подразумевается? DCM в общем виде, как и кватернионы - описание поворота. Разницы по принципу применения- нет, и тот и другой метод описывает поворот, только вычислительные затраты немного отличаются, и точность при одинаковой разрядности, но в нашем случае точности метода не принципиальна- неидеальность датчиков сильно “перевешивает”.

Следует , вероятно говорить о методе коррекции гироскопов.

В случае " EKF" также, вероятно, имеет место какое- либо описание поворота на основе интегрирования угловых скоростей, и какой-то метод коррекции, адаптивный в зависимости от величины угловых скоростей и ускорений и предыдущего состояния системы.

“Алгоритм DCM” также имеет метод описания поворота ( очевидно, DCM) и метод коррекции. Обычно в качестве корректирующего метода применяют ПИ регулятор.

Опишите, что именно вы используете в разных случаях (если представляете, как работают примененные вами алгоритмы). Тогда можно что- либо посоветовать, да и остальным участникам будет , надеюсь, понятнее.

По поведению платформы в случае “алгоритма DCM” общем виде видно, что при околонулевых угловых скоростях имеет место колебательный затухающий процесс. То есть система коррекции имеет колебательный характер (причем декремент затухания слишком мал), а желательно иметь апериодический. Также кажется, что при движении вправо- влево платы происходит “зашкаливание” акселерометров.

Drinker
AlexSneg:

примерно 50мкс

Так мало не может быть.
20кгц екстендед калмана не бывает, если только на гигагерцовых процах.

AlexSneg
Drinker:

20кгц екстендед калмана не бывает

50мкс это время затрачиваемое процом на одну итерацию по кальману.
А частота расчета равно 400Hz, то есть 1 в 1, то что сейчас гира выдает
аксель выдает на частоте 50Гц

Frr
AlexSneg:

работает только гира и только аксель. Время одного цикла EKF занимает примерно 50мкс

Не пойму почему картинка не дрейфует вокруг вертикальной оси ? (магнитометр ведь не подключен)
Или она “отключена” и остались (отслеживаются) только два угла ?
В EKF две переменных и шесть наблюдаемых, так?

AlexSneg
serj:

В случае " EKF" также, вероятно

Не, там не так все просто. Там есть матрица предсказывающего физического поведения модели на следующем шаге исходя из предыдущей историии, есть матрица предсказания ошибки, которая так же в процессе накопления статистики обучается. Процесс обучения четко заметен в самом конце, когда после нереальных расколбасов по всем осям, я резко ставлю плату в горизонт.
Оно встает с ошибкой градусов на 15, потом медленно ползет к нулю. Это происходит потому, что у алгоритм тупеет в этот момент так как обученная матрица ошибок вываливается за границы предсказаний физической модели, а гироскоп показывает нули по всем осям. Алгоритм ошалело пытается понять что происходит, а информации ноль. Соответственно необходимо время для переобучения, что и видно. А если в этот момент слегка покачать платформу (даже едва заметно), оно тут же приходит в себя, потому что поперла различная инфа с гироскопа.

serj:

Алгоритм DCM

Вот здесь, все так. Есть просто матрица вращения и алгоритм принятия решения корректироваться по акселю или нет. А если да, то насколько верить.
DCM у меня тупо из мегапирата содран. И вообщем-то, если использовать без фанатизма для спокойного полета блинчиком, вполне себе работает. Видео это подтверждает.

Frr:

Или она “отключена”

да, я специально отключил. Какой в ней смысл, если компас отключен. Есть там небольшой дрейф, вполне ожидаемый. Как научусь компас калибровать, так включу.

Frr:

В EKF две переменных и шесть наблюдаемых, так

сейчас да, скоро добавлю компас, будет 9 параметов. Хотя, даже сейчас уже практически все шоколадно и с этим уже можно дальше двигаться.

Drinker

Насчет времени итерации я имел ввиду, что судя по посту в тему мегапирата на дцм уходит 19 мкс, а на калмана всего в 2.2 раза больше. Нормальный фильтр калмана гораздо больших вычислительных ресурсов требует чем дцм и точно не в 2 раза.

Frr
AlexSneg:

Как научусь компас калибровать, так включу.

Для начала можно так: (max-min)/2 - это ноль, так по каждой оси.
И оси выровнять друг с другом - подбираем k_x, так, чтобы d_x=k_x*(max_x-min_x) равны для всех осей (т.е. d_x=d_y=d_z).

Drinker:

фильтр калмана гораздо больших вычислительных ресурсов требует чем дцм и точно не в 2 раза.

Он тут пока очень маленький, 2 оси. С маг-ом время увеличится вдвое (примерно квадрат от кол-ва переменных).

serj

Что не в два раза - это точно… Хотя, например можно пересчитывать ковариционную матрицу ( " обучать" 😃 как важно сказал Алекс,) с частой отсчетов по акселерометрам? быстрее-то информация не приходит, угловые ускорения у нас не так велики.

Также , по времени надо помнить что М4 имеет аппаратный арифметический блок для операций с плавающей точкой, и сильно шустрее в этом применении.

Также, есть еще один способ комплексироания данных - комплементарный фильтр (CF) (описан у Махони, кстати)…
На Ютубе есть замечательное видео под бодрую музыку сравнения калмана, расширенного калмана, и CF.

Drinker
serj:

Хотя, например можно пересчитывать ковариционную матрицу

Верно, например на 10 предикторов 1 корректирующий шаг выполнить.

serj:

комплементарный фильтр (CF)

Кстати почти те-же результаты дает что и екф, но раз в 10 быстрее выполняется. Для ардуины идеален.

Frr
serj:

Что не в два раза - это точно…

Почему? Как считать?
Было 2 оси, матрица F 2х2 =4, будет 3оси 3x3=9, время подсчетов увеличится в 9/4=2 раза.
ПРИМЕРНО, без учета усложнения модели.

Сорри, похоже это был ответ не мне 😃, ну пусть остается, как пояснение к подсчетам.