Получение точных показаний скорости от IMU

Привет, в настоящее время я использую BNO055 для дизайн-проекта. Этот датчик выдает вектор линейного ускорения, соответствующий трем направлениям (xyz). Я пытаюсь "интегрировать" ускорение, чтобы получить скорость, с которой движется объект, на который он установлен. Я рано заметил, что на моем графике скорости наблюдается большой дрейф. Я искал какие-либо рекомендации, которые могли бы быть у кого-то для настройки дрейфа каким-либо образом, или параметры фильтрации, которые я мог бы использовать для данных ускорения, чтобы уменьшить дрейф

, 👍3


1 ответ


Лучший ответ:

2

Процесс интегрирования ускорения для получения скорости и интегрирования скорости для определения положения обычно известен как расчетс точностью до наоборот. В этой ссылке указано:

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

Это может помочь откалибровать каждый из 3 акселерометров, используя гравитацию Земли в качестве постоянной. Проверьте, симметричен ли каждый акселерометр, обеспечивающий те же абсолютные значения, когда он направлен в сторону Земли, что и когда он направлен в сторону от Земли. Если какие-либо из них не являются симметричными, вычислите соответствующее смещение. Затем сравните диапазон каждого из 3 акселерометров. Если они не совпадают, рассчитайте соответствующий поправочный коэффициент для максимального и минимального диапазонов акселерометра.

Чтобы найти значения коррекции смещения и диапазона, посмотрите страницу 26 спецификации BNO055. Там вы найдете изображение чипа BNO055, которое относится к направлению акселерометров X, Y и Z. Расположите микросхему таким образом, чтобы акселерометр X был направлен вниз, к земле. Запишите исходное значение. Теперь повторите измерение с акселерометром X, направленным в сторону от земли. Абсолютное значение этих двух измерений должно быть одинаковым. Если нет, определите смещение, необходимое для коррекции измерений акселерометра X, и включите это значение в свою программу. Повторите это для векторов Y и Z.

Теперь сравните максимальные и минимальные значения для акселерометров X, Y и Z. Эти 3 значения должны быть одинаковыми. Если нет, найдите значение для умножения наименьшего из трех так, чтобы оно соответствовало среднему значению, и включите это значение в свою программу. Повторите это для наибольшего из трех значений.

Желательно, чтобы все 3 акселерометра работали одинаково. Если они этого не делают, используя значения, полученные выше, следует скорректировать исходные значения, например, результат отображается в виде 3 почти идентичных акселерометров.

Тем не менее, большинство акселерометров очень удобны в использовании без каких-либо поправочных коэффициентов. И ожидается, что любые поправочные коэффициенты будут небольшими. Однако, как показывает опыт, при интеграции небольшие ошибки могут быстро накапливаться.

Далее рассмотрим приложение, в котором будет использоваться мертвый расчет. Могут быть подсказки относительно скорости в данный момент, которые, если их использовать, могут привести предполагаемую скорость к известному значению. Например, если акселерометр был прикреплен к ноге бегуна, можно предположить, что скорость равна нулю для каждой обнаруженной ноги до удара о землю.

,

Как мне найти диапазоны для акселерометров?, @Jonathan Seffinga

Я добавил процедуру к ответу., @st2000