Акселерометры в самобалансирующемся роботе, разве мы не можем добиться большего успеха?

9

В настоящее время я читаю о самобалансирующихся роботах, которые используют IMU (гироскопы + акселерометры), чтобы оценить их текущий угол наклона.

Большинство документов, которые я нашел, говорят о том же:

  • Вы не можете просто взять арктангенс данных акселерометров, чтобы найти направление силы тяжести, потому что на них влияют "инерционные шумы".
  • Вы не можете просто интегрировать выход гироскопа с течением времени, потому что он дрейфует.
  • Существует два общепринятых решения для объединения этих данных:
    1. Фильтр Калмана оценки текущего наклона вместе с текущим смещением гироскопа .
    2. Дополнительный фильтр, применяющий фильтр нижних частот к данным акселерометра (им можно доверять в долгосрочной перспективе) и фильтр верхних частот к данным гироскопа (ему можно доверять в краткосрочной перспективе).

Все источники, которые я обнаружил, по-видимому, используют необработанные данные акселерометров в этих фильтрах, несмотря на тот факт, что в самобалансирующемся роботе мы можем очень хорошо оценить упомянутый выше «инерционный шум».

Вот мой хотя

Давайте смоделируем нашего робота с перевернутым маятником с движущейся точкой опоры и используем этот плохой рисунок в качестве эталона.

введите описание изображения здесь

Силы инерции, которые чувствуют акселерометры на C, могут быть получены из (если я не сделал никакой ошибки)

(ср¨сΘ¨)знак равно(-Икс¨грех(Θ)-рΘ˙2-Икс¨соз(Θ)+рΘ¨)

При условии, что

  • Наш робот катится без скольжения
  • Мы можем измерить х (используя шаговые двигатели или двигатели постоянного тока с датчиками)

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

  • Икс¨^К : Конечные различия по сравнению с нашими текущими и предыдущими показателями Икс
  • Θ˙^К : Текущие показания гироскопа
  • Θ^К : Предыдущая оценка Θ плюс интеграция Θ˙^К а также Θ˙^К-1 более одного ΔT
  • Θ¨^К : Конечные различия Θ˙^К а также Θ˙^К-1

Получив это, мы можем свести на нет влияние инерционных сил в акселерометрах, оставив лишь гораздо лучший показатель силы тяжести.

Вероятно, все еще будет хорошей идеей использовать это как входной сигнал обычного фильтра Калмана, как в 1. выше.

Может быть, мы можем даже построить фильтр Калмана, который мог бы оценить все эти переменные одновременно? Я собираюсь попробовать это.

Что вы думаете? Я что-то здесь упускаю?

Я думаю, что self-balancing-robot может быть хорошим тегом, но я не могу его создать

Julien
источник
Лазерный дальномер был бы невероятно полезен.
Holmeski

Ответы:

1

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

Некоторые вещи, которые вы можете рассмотреть в своих путешествиях:

  1. Полноценный фильтр Калмана требует значительных вычислительных ресурсов, но стационарный Калман - это, по сути, дополнительный фильтр с частотами спада, выбранными по конструкции, а не b'guess и b'gosh.
  2. Говоря о b'guess и b'gosh, если вы хотите, чтобы Kalman работал хорошо (а иногда и вообще), вам нужно очень точно учитывать все, что входит в ваши отклонения. Кальманы печально известны тем, что не реагируют на несоответствия между вашей моделью и реальностью. Если вы хотите заняться математикой, изучите H-бесконечность и другие надежные методы оценки состояния.
  3. Если вы пойдете по дороге H-бесконечности, вы также можете найти устойчивый фильтр H-бесконечности и получить то же вычислительное преимущество (и, фактически, фактическая структура фильтра во встроенном коде будет той же; Я просто буду иметь разные значения в коэффициентах).
TimWescott
источник
Я думаю, что вы преувеличиваете вычислительную стоимость полного фильтра Калмана. Жюльен, скорее всего, будет иметь менее 6 штатов, что не будет проблемой на большинстве плат.
Holmeski
1

Хотя это не полный ответ на ваш вопрос, я хочу оставить некоторые из моих мыслей. Я думаю, что вы пропустили:

  1. Сама сила тяжести, которая указывает вниз и обычно составляет около 9,81 м / с², но может отличаться в зависимости от вашего местоположения (вы измеряете 0 гравитации, только когда робот находится в свободном падении)
  2. Датчики, как правило, не выровнены на 100% относительно вашей оси x / y / z (микросхема не полностью горизонтальна на печатной плате ... печатная плата не установлена ​​полностью горизонтально / вертикально в вашем роботе и т. Д.); вам нужно компенсировать это
  3. Акселерометр-датчики имеют величину смещения и усиления, которые вы должны компенсировать. На них влияют, например, температура и производственные допуски. Для этого есть алгоритмы онлайн-калибровки; но вы также можете поместить эти неизвестные переменные в фильтр Калмана.
  4. Гироскопы имеют дрейф, который также зависит от температуры. Это не константа, но может измениться со временем. Этот дрейф можно слегка компенсировать с помощью магнитометра.
  5. Магнитометры или датчики Compass в 3D можно использовать для компенсации дрейфа гироскопов. Однако на них иногда влияют электромагнитные поля (двигатели, магниты, сталь в стенах и т. Д.). Поэтому им нельзя полностью доверять.

Модель фильтра Калмана - хороший подход. Чем больше знаний о модели движения, которую вы поместите в модель, тем лучше она будет работать. Вам также необходимо знать (со) дисперсии всех переменных ... Насколько вы уверены, что измерения каждого датчика.

SDwarfs
источник
Хорошие замечания о реальных проблемах, таких как калибровка, дрейф, температура и т. Д.
Бен