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


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

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

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

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

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

РЕШЕНИЕ:

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

результат № 1

результат № 2

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

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

2 66

2 ответа:

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

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

Gamasutra.com РАН статья об использовании фильтров Калмана для фильтрации WiiMote.

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