Объедините данные гироскопа и акселерометра
-
22-09-2019 - |
Вопрос
Я строю балансирующего робота, используя систему NXT Lego Mindstorm. Я использую два датчика из Hitechnic, первым из которых является акселерометр, а второй - гироскоп. Я успешно отфильтровал шум от обоих датчиков и полученных углов для обоих в диапазоне от -90 до 90 градусов, причем 0 градусов идеально сбалансировано.
Моя следующая задача состоит в том, чтобы объединить оба значения датчика, чтобы исправить дрейф гироскопа с течением времени. Ниже приведен пример графика, который я создал из фактических данных, чтобы продемонстрировать дрейф из гироскопа:
Наиболее часто используемый подход, который я видел, чтобы сделать объединение этих датчиков сплошными, - это использование фильтра Калмана. Тем не менее, я не эксперт в исчислении, и я действительно не понимаю математических символов, я действительно понимаю математику в исходном коде.
Я использую ROBOTC (что похоже на любое другое CRIVATION) и очень признателен, если кто -то сможет привести мне примеры того, как это сделать в C.
Спасибо за помощь!
Результаты решения:
Хорошо, Керсни решил мою проблему, познакомив меня с дополнительными фильтрами. Это график, иллюстрирующий мои результаты:
Результат № 1
Результат № 2
Как вы можете видеть, фильтр исправляет гироскопический дрейф и объединяет оба сигнала в один гладкий сигнал.
Редактировать: Поскольку я все равно исправлял разбитые изображения, я подумал, что было бы весело показать установку, которую я использовал для генерации этих данных:
Решение
Фильтры Калмана великолепны и все, но я нахожу дополнительный фильтр намного проще в реализации с аналогичными результатами. Лучшие статьи, которые я нашел для кодирования дополнительного фильтра, - это это вики (вместе с эта статья о преобразовании датчиков в инженерные единицы) и PDF в файле ZIP на эта страница (В соответствии с технической документацией, я считаю, что имя файла в ZIP IS filter.pdf);
Пса Если вы застряли на фильтре Калмана, здесь является некоторым кодом C-Syntax для Arduino, который его реализует.
Другие советы
Gamasutra.com пробег Статья об использовании фильтров Калмана для фильтрации Wiimote.
В конце статьи есть некоторые ссылки на исходный код C ++.