Объедините данные гироскопа и акселерометра

Я строю балансировочный робот, используя систему NXT от Lego Mindstorm. Я использую два датчика от HiTechnic, первый из которых - акселерометр, а второй - гироскоп. Я успешно отфильтровал шум от обоих датчиков и полученных углов для обоих диапазонов от -90 до 90 градусов, при этом 0 градусов были идеально сбалансированы.

Моя следующая задача - объединить оба значения датчиков, чтобы скорректировать дрейф гироскопа с течением времени. Ниже приведен пример графика, который я создал из реальных данных, чтобы продемонстрировать отклонение от гироскопа:

Наиболее часто используемый подход, который я видел, чтобы объединить эти датчики, - это использование фильтра Калмана. Тем не менее, я не специалист по исчислению, и я действительно не понимаю математические символы, хотя я понимаю математику в исходном коде.

Я использую RobotC (который похож на любой другой C-производный) и был бы очень признателен, если бы кто-нибудь дал мне примеры того, как это сделать в C.

Спасибо за помощь!

РЕЗУЛЬТАТЫ РЕШЕНИЯ:

Хорошо, kersny решил мою проблему, познакомив меня с дополнительными фильтрами. Это график, иллюстрирующий мои результаты:

Результат № 1

Результат № 2

Как видите, фильтр корректирует гироскопический дрейф и объединяет оба сигнала в один сглаженный сигнал.

Изменить: Так как я исправлял сломанные изображения в любом случае, я подумал, что было бы интересно показать установку, которую я использовал для генерации этих данных:

2 ответа

Решение

Фильтры Калмана великолепны и все такое, но я считаю, что дополнительный фильтр гораздо проще реализовать с похожими результатами. Лучшие статьи, которые я нашел для кодирования Дополнительного фильтра, - это вики (вместе с этой статьей о преобразовании датчиков в технические единицы) и PDF-файл в zip-файле на этой странице (в разделе Техническая документация я считаю имя файла в zip-файле). является filter.pdf);

PS. Если вы застряли на фильтре Калмана, вот код C-синтаксиса для Arduino, который его реализует.

http://www.gamasutra.com/ опубликовал статью об использовании фильтров Калмана для фильтрации WiiMote.

В конце статьи есть несколько ссылок на исходный код C++.

Другие вопросы по тегам