Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
1

STM32. Kalman для IMU

02.03.2017, 21:55. Просмотров 3546. Ответов 10
Метки нет (Все метки)

Добрый вечер! Очень нуждаюсь в вашей помощи.
Ищу реализацию фильтра Калмана для IMU (акселерометра и гироскопа) на С для STM32F4, F7. Нашёл проект тов. omooro http://we.iosyitistromyss.ru/profile/omooro/, но у него фильтр для BLDC. Я конечно гуглить умею, но пока не смог найти полезных проектов.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2017, 21:55
Ответы с готовыми решениями:

Общение с барометром MS5540 на STM32 (Arduino to STM32)
Получил от китайца сей аппарат, пошел тут же гуглить что нибудь готовое, но не тут то было....

Чем связать STM32 + STM32 в одном корпусе?
Есть 2 платы: (1) - STM32 (Вывод на LCD + запись SD) и (2) - STM32F4 (обработка сигналов +...

Функции для работы с кольцевыми буферами для STM32
Написал функции-шаблоны для работы с кольцевыми буферами. Параметры каждого буфера, такие как...

Драйвер для MICROSD (SPI) + FAT32 для STM32
Собственно пишу драйвер для Micro SD карточек и файловую систему FAT32. Тестируем драйвер...

ascold.h для stm32
Встречал кто уже готовый хедер на подобии ascold.h для AVR, только для CooCox STM32 ? очень...

10
Qys
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 73
04.03.2017, 01:19 2
Что? Просто формулу?
ftoot Kotmom (ftoot New, ftoot Old, ftoot K_coef)
{
Old = (K_coef * New)+((1-K_coef) * Old);
return Old;
}
Или чтобы оно через FPU работало?
Я наигрался с дешевым IMU, оно не помогает. Переходим на адаптивную фильтрацию.
0
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
04.03.2017, 14:03 3
Цитата Сообщение от Qys
Что? Просто формулу?
ftoot Kotmom (ftoot New, ftoot Old, ftoot K_coef)
{
Old = (K_coef * New)+((1-K_coef) * Old);
return Old;
}
Или чтобы оно через FPU работало?
Я наигрался с дешевым IMU, оно не помогает. Переходим на адаптивную фильтрацию.
Спасибо! Формулу я видел. И она не полная, по тому как K_coef расчитывается самим фильтром.
И FPU знаю как включать.
А вот про адаптивную фильтрацию данных IMU с удовольствием почитаю! Подскажите где.
0
Qys
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 73
04.03.2017, 14:32 4
Я душе не знаю кто там и как считает, кодер с этой хренью ковырялся, Я реализовал в железе, пришли к выводу что оно работает но в очень узких условиях.
Коэффициент подбирается под параметры "шума", это уже отдельная тема. Мне больше алгоритм Маджвика понравился, он по крайней мере пытается работать, но китайские IMU сильно уплывают.

Пробовали предиктовые ПИД-ы, но потом перешли на нейрорегуляторы, и как управляющие и как фильтрующие - рвут всё остальное. При правильном написании условий обучения - к любым условиям подстраивается уже само. Особенно радует воздушный 9кВт отопитель в нашей лабе, который теперь держит температуру 21*С +/- 0.2*C(погрешность Kтермопары на ПЛК 0.1*С, стоит сбоку от выхлопа) на 40м2. Зима прошла в комфорте.
0
04.03.2017, 14:32
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
04.03.2017, 14:43 5
Цитата Сообщение от Qys
Мне больше алгоритм Маджвика понравился, он по крайней мере пытается работать, но китайские IMU сильно уплывают.
Я обрабатываю данные с STM32F3Dyscovery (акселерометр LSM303DLHC и гироскоп L3DG20H) алгоритмом Маджвика в MatLab. Получаются достаточно точные данные не смотря на то, что сам датчик находится в условиях сильных вибраций. Алгоритм Маджвика рассчитывает углы Эйлера (тангаж, крен, рыскание). А фильтром Калмана я хочу обработать данные акселерометра и гироскопа.
0
omir
0 / 0 / 0
Регистрация: 19.10.2015
04.03.2017, 15:17 6
Вместо Калмана можете и медианный использовать соответствущего порядка, я разницы не увидел. Просто по коду медианный меньше. И такой вопрос: вы вибрации просто игнорируете, то есть программно фильтруете или через корреляцию вычитаете? Благо у них нет гармоник. И наверное как и у меня с Маджвиком проблема с расчетом малых углов мене 2-3 градусов, так как сам проц F3 или F4 плохо их считает из за той 32 битной математики.
0
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
04.03.2017, 15:25 7
Цитата Сообщение от Omyr
... И такой вопрос: вы вибрации просто игнорируете, то есть программно фильтруете или через корреляцию вычитаете?...
На вход Маджвика подаю данные с акселерометра и гироскопа не фильтрованные.
0
omir
0 / 0 / 0
Регистрация: 19.10.2015
04.03.2017, 17:36 8
А с подсчетом, расчетом малых углов как? Или еще не добрались, не понадобились?
0
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
04.03.2017, 18:37 9
Цитата Сообщение от Omyr
А с подсчетом, расчетом малых углов как?
Извините, я Вас не понял. Насколько малых? 1 градус? - Вроде вычисляет.
0
omir
0 / 0 / 0
Регистрация: 19.10.2015
04.03.2017, 20:16 10
Если мене 2-3 градусов у меня дает большую ошибку. Если более то все норм.
Ну тогда вопрос где и какой испльзовали алгоритмом Маджвика из MatLab? И как данные "положили" на STM32F3хх? Какие мат библиотеки для STM32Fxx для реализации использовали, особенно для тригонометрических вычислений для углов? Мне для малых углов пришлось терейти на таблицы.
0
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
04.03.2017, 21:33 11
Цитата Сообщение от Omyr
Ну тогда вопрос где и какой испльзовали алгоритмом Маджвика из MatLab?
Исходные коды брал здесь: https://habrahabr.ru/post/255661/ , http://x-io.co.uk/open-source-imu-omd-ahrs-algorithms/.
Исходные коды лучше брать с сайта автора http://x-io.co.uk/open-source-imu-omd-ahrs-algorithms/. Я где-то читал, что автор исправил ошибку в алгоритме.
Цитата Сообщение от Omyr
И как данные "положили" на STM32F3хх? Какие мат библиотеки для STM32Fxx для реализации использовали, особенно для тригонометрических вычислений для углов? Мне для малых углов пришлось перейти на таблицы.
STM32F3хх ничего с данными не делает. Отправляет в том виде в котором есть в ПК. А далее я обрабатываю данные MatLab.
0
04.03.2017, 21:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2017, 21:33

prvSetupHardware() для STM32
Смотрю в демки, а в демках мудрёная инициализация тактирования и прерываний. Вот такая: ...

Дисплейчик для STM32
Какие ЖК или OLED дисплеи можно подключить к STM32 без навороченой обвязки? () П.С. Есть...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru