реклама на сайте
подробности

 
 
> STM32F3 FPU для фильтрации, обработка данных с магнетометра и акселерометра
serjj
сообщение Jun 10 2015, 09:16
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Всем доброго дня.
Еще немного нубских вопросов про stm от плисовода.. )
Есть STM32F303, который принимает данные с датчиков LSM303DLHC (магнетометр + акселерометр) и L3GD20 (гироскоп, на самом деле измеряет угловую скорость). Итого получается 9 каналов, предварительно: 3x220Гц, 3х50Гц, 3х95Гц. В силу низкочастотного характера измеряемых процессов, ставлю ФНЧ с достаточно узкой полосой. На каждом канале сначала делаю медианный фильтр с окном 7, а потом FIR фильтр с порядком 32-64. Все операции во floating point. Затем децимация всех каналов до 10 Гц и там окончательные рассчёты также в плавучке и передача данных "вверх". Вероятно, что какой-то еще значительной вычислительной нагрузки сверх описанной не будет. Пока проверял с фильтрами до 48 порядка по отдельным группам каналов, вроде все ок.
Интересуют вычислительные возможности FPU на борту - какие тут могут быть подводные камни при запуске всех каналов? Или если я захочу, например поднять порядки FIR фильтров до 64-128? Как правильно оценить его силы и на какой вычислительной загрузке лучше остановиться, чтобы не было неожиданных сюрпризов, когда он начнёт не успевать обрабатывать поток. Или я может быть зря беспокоюсь и такие полосы для него это фигня и смело можно лепить длинные фильтры?
Заранее благодарен!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
serjj
сообщение Jun 10 2015, 11:31
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
...про полифазную рализацию фильтров
Считайте все на 10Гц, какие уж тут ресурсы прости господи

Надеюсь до этого не дойдёт biggrin.gif

Цитата
Если можете то опишите вашу цель или рашаемую задачу вашими датчиками LSM303DLHC (магнетометр + акселерометр) и L3GD20. Свою решил успешно. Фильтры фнч есть в чипах, зачем еще в софте? Конечно никакого бпф там не нужно, также как и CIC, FIR фильтры. Многие задачи решаются, если грубо - медианными, временными, калмановскими фильтрами перед кватернионной матрицей. Если решаете 3D, то как у многих с разнесенными датчиками возникнут проблемы с накоплением ошибок, синхронизацией, соосностью вертикалей и тп. От которых не так просто избавиться. А про производительности чипа хватит за глаза, если не лезть в бпф и цифровую фильтрацию высоких порядков.

Одна пара датчиков: то есть LSM303DLHC и L3GD20. Стоит задача определения ориентации по сторонам света и определение положения в пространстве, а также самостабилизация. Движение по электронным меркам медленное, поэтому процессы, как я описал низкочастотные. Всё что выше 3-5 Гц считаю хламом, вибрацией и магнитными наводками. Экспериментирую пока на демо от STM для Discovery, снёс все лишнее, сижу играюсь с фильтрами и настройками датчиков.

LSM303DLHC используется чтобы определять положение в полярной системе координат по акселерометру и соответственно направление на север. L3GD20 - для определения вращения и подачи этого сигнала на алгоритм стабилизации, который должен это вращение подавить. Ну, пока такая идея во всяком случае.

Медианное сглаживание малым окном применяю чтобы избавиться от резких коротких выбросов в сигнале (вы кстати такие наблюдали у себя? природа их мне пока неясна..). Далее чтобы избавиться от шумов и эффектов вибрации добавляю FIR с очень узкой полосой и подавлением около 30 дБ. Делал в лоб как FIR с симметричной вещественной импульсной. Например, полосу магнетометра выставил 220 Гц (если беру ниже, то сигнал идёт какими-то скачками), а фильтруюсь до полосы ~2-3 Гц с подавлением ~25-30 дБ фильтром 48 порядка. К слову сначала думал пользоваться фильтрами в датчиках, но смутило полное отсутствие в документации их описания. Они упоминаются в registers description, а какие у них полосы, характеристики - глухо. Поэтому решил, что такой кот в мешке мне не нужен и пилю свою фильтрацию.

Про применение Калмана в данных задачах слышал, но мне кажется, что для моего случая это перебор. Если вы применяли его в месте с данными датчиками, то расскажите, будет интересно узнать как и зачем, чем адаптивная фильтрация здесь улучшит качество сигнала в сравнении с обычной. Тем более такая серьезная. Может быть я неправ, но мое личное понимание, что Калман применим уже на верхнем уровне и работает с сигналами после шумовой фильтрации для решения комплексной задачи навигации. И что такое кватернионная матрица, аж интересно стало rolleyes.gif

Цитата
mpu-9150 поглядите может вам он больше понравиться чем так активно фильтровать 9 каналов

Спасибо, но к сожалению счастью, не я принимаю решение, какие камни ставить. Но про него почитаю rolleyes.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016