Двойная интеграция ускорения в C ++ с использованием 9DOF IMU с сенсором Fusion

Я потратил несколько часов на изучение числовой интеграции и оценки скорости / положения, но не смог найти ответ, который был бы понятен моему мозгу или соответствовал бы моей ситуации.

У меня есть IMU (Inertial Measurement Unit), в котором есть гироскоп, акселерометр и магнитометр. Все эти датчики находятся в состоянии слияния, что означает, например, использование гироскопа, который я могу компенсировать гравитацией в показаниях акселерометра, а магнитометр компенсирует дрейф.
Другими словами, я могу получить чистые показания ускорения с помощью такой настройки.

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

Спасибо

2

Решение

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

тем не мение у вас есть большая проблема.

Короче говоря: если у вас нет IMU военно-морского качества (200 000 долларов США +), вы не можете просто интегрировать ускорения и угловые скорости для получения точных оценок положения (положения и ориентации).

Я предполагаю, что вы используете недорогой (менее 1000 долларов США) IMU — ваш акселерометр и гироскоп подвержены как шуму, так и смещению. Это сделает невозможным получение точной позы путем простой интеграции.

На практике, чтобы сделать то, что вы намереваетесь, необходимо объединить «корректирующие» измерения положения и, возможно, ориентации. IMU «прогнозирует» положение / ориентацию, в то время как другая модель датчика (характеристики камеры, GPS, альтиметр, измерения дальности / пеленга) берет прогнозируемое положение и «корректирует» его. Существуют различные методы слияния этих данных, наиболее плодотворным из которых является расширенный фильтр Калмана или непрямой (непрямой) фильтр Калмана.

Вернуться к исходному вопросу; Я бы представлял ориентацию как кватернионы, а вы можете распространять ориентацию кватернионов, используякватернионная производная и угловые показатели от вашего гироскопа.

РЕДАКТИРОВАТЬ:

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

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

4

Другие решения


По вопросам рекламы [email protected]