В настоящее время я читаю о самобалансирующихся роботах, которые используют IMU (гироскопы + акселерометры), чтобы оценить их текущий угол наклона.
Большинство документов, которые я нашел, говорят о том же:
- Вы не можете просто взять арктангенс данных акселерометров, чтобы найти направление силы тяжести, потому что на них влияют "инерционные шумы".
- Вы не можете просто интегрировать выход гироскопа с течением времени, потому что он дрейфует.
- Существует два общепринятых решения для объединения этих данных:
- Фильтр Калмана оценки текущего наклона вместе с текущим смещением гироскопа .
- Дополнительный фильтр, применяющий фильтр нижних частот к данным акселерометра (им можно доверять в долгосрочной перспективе) и фильтр верхних частот к данным гироскопа (ему можно доверять в краткосрочной перспективе).
Все источники, которые я обнаружил, по-видимому, используют необработанные данные акселерометров в этих фильтрах, несмотря на тот факт, что в самобалансирующемся роботе мы можем очень хорошо оценить упомянутый выше «инерционный шум».
Вот мой хотя
Давайте смоделируем нашего робота с перевернутым маятником с движущейся точкой опоры и используем этот плохой рисунок в качестве эталона.
Силы инерции, которые чувствуют акселерометры на C, могут быть получены из (если я не сделал никакой ошибки)
При условии, что
- Наш робот катится без скольжения
- Мы можем измерить х (используя шаговые двигатели или двигатели постоянного тока с датчиками)
Тогда мы можем получить хорошую оценку всех этих переменных:
- : Конечные различия по сравнению с нашими текущими и предыдущими показателями
- : Текущие показания гироскопа
- : Предыдущая оценка плюс интеграция а также более одного
- : Конечные различия а также
Получив это, мы можем свести на нет влияние инерционных сил в акселерометрах, оставив лишь гораздо лучший показатель силы тяжести.
Вероятно, все еще будет хорошей идеей использовать это как входной сигнал обычного фильтра Калмана, как в 1. выше.
Может быть, мы можем даже построить фильтр Калмана, который мог бы оценить все эти переменные одновременно? Я собираюсь попробовать это.
Что вы думаете? Я что-то здесь упускаю?
Я думаю, что self-balancing-robot может быть хорошим тегом, но я не могу его создать