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

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

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

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

Спасибо


person ImQ009    schedule 22.01.2015    source источник
comment
Просто любопытно - какой у вас ИДУ? Как вы берете из него данные?   -  person Rakshit Kothari    schedule 15.09.2016


Ответы (1)


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

Однако у вас есть более серьезная проблема.

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

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

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

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

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

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

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

person Gouda    schedule 23.01.2015
comment
Предлагаемый вами метод интегрирования - это метод Эйлера, верно? Потому что он очень ненадежен при неправильном вводе, и ошибка, которую он дает, со временем накапливается. Кроме того, я уже соединяю датчики вместе, используя фильтр Мэджвика. - person ImQ009; 23.01.2015
comment
Да, для ускорений, которые я предлагал Эйлеру, обычно достаточно, потому что корректирующие измерения компенсируют это, если коррекции происходят часто. Если вас это беспокоит, вы можете использовать интеграцию 4-го порядка Рунге-Кутты, которая не слишком сложна в вычислительном отношении. По памяти фильтр Мэджвика объединяет ускорения, магнитометр и гироскоп для получения объединенной оценки ориентации, он вообще не корректирует ускорения, поэтому проблемы с шумом и смещением все еще присутствуют. - person Gouda; 23.01.2015
comment
Проблему шума можно частично обойти, используя фильтр высоких частот, но о каком смещении вы конкретно говорите? Если это сила тяжести, я могу использовать показания гироскопа, чтобы исправить это. - person ImQ009; 24.01.2015