Документация Engee

AHRS

Ориентация на основе показаний акселерометра, гироскопа и магнитометра.

Тип: AHRS

Путь в библиотеке:

/Navigation/Multisensor Positioning/Navigation filters/AHRS

Описание

Блок AHRS объединяет данные акселерометра, магнитометра и гироскопа для оценки ориентации устройства.

Порты

Вход

# Accel — показания акселерометра в системе координат корпуса датчика, м/с2
матрица вещественных скаляров N на 3

Details

Показания акселерометра в системе координат корпуса датчика в м/с2, заданные в виде матрицы на вещественных скалярных величин, где — количество отсчетов, а три столбца матрицы Accel представляют собой измерения соответственно.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

# Gyro — показания гироскопа в системе координат корпуса датчика, рад/с
матрица вещественных скаляров N на 3

Details

Показания гироскопа в системе координат корпуса датчика в рад/с, заданные в виде матрицы на вещественных скалярных величин, где — количество отсчетов, а три столбца матрицы Gyro представляют собой измерения соответственно.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

# Mag — показания магнитометра в системе координат корпуса датчика, мкТл
матрица вещественных скаляров N на 3

Details

Показания магнитометра в системе координат корпуса датчика в мкТл, заданные в виде матрицы на вещественных скалярных величин, где — количество отсчетов, а три столбца матрицы Gyro представляют собой измерения соответственно.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

Выход

# Orientation — ориентация системы координат корпуса датчика относительно системы координат навигации
матрица скаляров M на 4 | массив матриц вращения 3 на 3 на М

Details

Ориентация системы координат корпуса датчика относительно системы координат навигации, возвращаемая в виде матрицы скаляров на или в виде массива матриц вращения на на . Каждая строка матрицы на содержит четыре элемента кватерниона. Количество входных отсчетов и значение параметра Decimation factor определяют размер выходных данных .

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

# Angular Velocity — угловая скорость в системе координат корпуса датчика, рад/с
матрица вещественных скаляров M на 3

Details

Угловая скорость с учетом смещения гироскопа в системе координат корпуса датчика в рад/с, возвращаемая в виде матрицы на вещественных скалярных величин. Количество входных отсчетов и значение параметра Decimation factor определяют размер выходных данных .

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

Параметры

Main

# Reference frame — система координат навигации
NED | ENU

Details

Система координат навигации, заданная как NED (север-восток-вниз) или ENU (восток-север-вверх).

Значения

NED | ENU

Значение по умолчанию

NED

Имя для программного использования

DispRefFrame

Настраиваемый

Нет

Вычисляемый

Нет

# Decimation factor — коэффициент децимации
Real number

Details

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

Количество строк в матрицах входных данных Accel, Gyro и Mag должно быть кратным коэффициенту децимации.

Значение по умолчанию

1

Имя для программного использования

DecimationFactor

Настраиваемый

Нет

Вычисляемый

Да

# Initial process noise — начальный шум процесса
Matrix of real numbers

Details

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

Значение по умолчанию

[0.000006092348396 0 0 0 0 0 0 0 0 0 0 0; 0 0.000006092348396 0 0 0 0 0 0 0 0 0 0; 0 0 0.000006092348396 0 0 0 0 0 0 0 0 0; 0 0 0 0.000076154354947 0 0 0 0 0 0 0 0; 0 0 0 0 0.000076154354947 0 0 0 0 0 0 0; 0 0 0 0 0 0.000076154354947 0 0 0 0 0 0; 0 0 0 0 0 0 0.009623610000000 0 0 0 0 0; 0 0 0 0 0 0 0 0.009623610000000 0 0 0 0; 0 0 0 0 0 0 0 0 0.009623610000000 0 0 0; 0 0 0 0 0 0 0 0 0 0.6 0 0; 0 0 0 0 0 0 0 0 0 0 0.6 0; 0 0 0 0 0 0 0 0 0 0 0 0.6]

Имя для программного использования

InitialProcessNoise

Настраиваемый

Нет

Вычисляемый

Да

# Orientation format — формат ориентации выходных данных
quaternion | Rotation matrix

Details

Формат ориентации выходных данных, заданный как quaternion или Rotation matrix:

  • quaternion — выходная матрица вещественных скаляров на . Каждая строка матрицы содержит четыре элемента кватерниона.

  • Rotation matrix — выходной массив матриц вращения на на

Количество входных отсчетов и значение параметра Decimation factor определяют размер выходных данных .

Значения

quaternion | Rotation matrix

Значение по умолчанию

quaternion

Имя для программного использования

OrientationFormat

Настраиваемый

Нет

Вычисляемый

Нет

Main

# Accelerometer noise ((m/s²)²) — дисперсия шума сигнала акселерометра, (м/с2)2
Real number

Details

Дисперсия шума сигнала акселерометра в (м/с2)2, заданная как положительный вещественный скаляр.

Значение по умолчанию

0.0001924722

Имя для программного использования

AccelerometerNoise

Настраиваемый

Да

Вычисляемый

Да

# Gyroscope noise ((rad/s)²) — дисперсия шума сигнала гироскопа, (рад/с)2
Real number

Details

Дисперсия шума сигнала гироскопа в (рад/с)2, заданная как положительный вещественный скаляр.

Значение по умолчанию

9.1385e-05

Имя для программного использования

GyroscopeNoise

Настраиваемый

Да

Вычисляемый

Да

# Magnetometer noise ((μT)²) — дисперсия шума сигнала магнитометра, мкТл2
Real number

Details

Дисперсия шума сигнала магнитометра в мкТл2, заданная как положительный вещественный скаляр.

Значение по умолчанию

0.1

Имя для программного использования

MagnetometerNoise

Настраиваемый

Да

Вычисляемый

Да

# Gyroscope drift noise ((rad/s)²) — дисперсия дрейфа смещения гироскопа, (рад/с)2
Real number

Details

Дисперсия дрейфа смещения гироскопа в (рад/с)2, заданная как положительный вещественный скаляр.

Значение по умолчанию

3.0462e-13

Имя для программного использования

GyroscopeDriftNoise

Настраиваемый

Да

Вычисляемый

Да

Main

# Linear acceleration noise ((m/s²)²) — дисперсия шума линейного ускорения, (м/с2)2
Real number

Details

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

Значение по умолчанию

0.009623610000000001

Имя для программного использования

LinearAccelerationNoise

Настраиваемый

Да

Вычисляемый

Да

# Magnetic disturbance noise ((μT)²) — дисперсия шума магнитных помех, мкТл2
Real number

Details

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

Значение по умолчанию

0.5

Имя для программного использования

MagneticDisturbanceNoise

Настраиваемый

Да

Вычисляемый

Да

# Linear acceleration decay factor — коэффициент затухания для дрейфа линейного ускорения
Real number

Details

Коэффициент затухания для дрейфа линейного ускорения, заданный как скаляр в диапазоне [0, 1). Если линейное ускорение изменяется быстро, установите этот параметр на меньшее значение. Если линейное ускорение изменяется медленно, установите этот параметр на большее значение. Дрейф линейного ускорения моделируется как процесс белого шума, отфильтрованный низкочастотным фильтром.

Значение по умолчанию

0.5

Имя для программного использования

LinearAccelerationDecayFactor

Настраиваемый

Да

Вычисляемый

Да

# Magnetic disturbance decay factor — коэффициент затухания магнитного возмущения
Real number

Details

Коэффициент затухания магнитного возмущения, заданный как скаляр в диапазоне [0, 1]. Магнитное возмущение моделируется как процесс Маркова первого порядка.

Значение по умолчанию

0.5

Имя для программного использования

MagneticDisturbanceDecayFactor

Настраиваемый

Да

Вычисляемый

Да

# Magnetic field strength (μT) — напряженность магнитного поля, мкТл
Real number

Details

Напряженность магнитного поля в мкТл, заданная как вещественный положительный скаляр. Напряженность магнитного поля — это оценка напряженности магнитного поля Земли в текущем местоположении.

Значение по умолчанию

50

Имя для программного использования

ExpectedMagneticFieldStrength

Настраиваемый

Да

Вычисляемый

Да

Алгоритмы

Приведенный в этом разделе алгоритм применим только к системе координат NED.

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

где

  • — вектор на , содержащий:

    • — вектор ориентации на , в градусах, в момент времени ;

    • — вектор смещения нулевой угловой скорости гироскопа на , в град/с, в момент времени ;

    • — вектор ошибки ускорения на , измеренный в системе координат датчика, в м/c2, в момент времени ;

    • — вектор ошибки магнитного возмущения на , измеренный в системе координат датчика, в мкТл, в момент времени ;

  • — аддитивный вектор шума на ;

  • — модель перехода состояний.

Поскольку определяется как процесс ошибки, априорная оценка всегда равна нулю, и, следовательно, модель перехода состояний равна нулю. Это приводит к следующему упрощению стандартных уравнений Калмана:















Уравнения Калмана, используемые в этом алгоритме:















где

  • — прогнозируемая (априорная) оценка состояния; процесс ошибки;

  • — прогнозируемая (априорная) оценка ковариации;

  • — невязка;

  • — ковариация невязок;

  • — коэффициент усиления Калмана;

  • — обновленная (апостериорная) оценка состояния;

  • — обновленная (апостериорная) оценка ковариации;

  • нижний индекс — номер итерации;

  • верхний индекс — апостериорная оценка;

  • верхний индекс — априорная оценка.

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

ahrs 1 ru

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

Подробное описание

Details

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

ahrs 2 ru

Модель

Details

Алгоритм моделирует ускорение и изменение угла как линейные процессы.

ahrs 3 ru

Прогнозирование ориентации

Ориентация для текущего кадра определяется путем предварительной оценки углового изменения по сравнению с предыдущим кадром:

где

  • — коэффициент децимации, заданный параметром Decimation factor;

  • — частота дискретизации.

Угловое изменение преобразуется в кватернионы с использованием синтаксиса построения кватернионов:

Предыдущая оценка ориентации обновляется путем поворота на :

В ходе первой итерации оценка ориентации инициализируется с помощью ecompass.

Оценка гравитации по ориентации

Вектор гравитации интерпретируется как третий столбец кватерниона в форме матрицы вращения:

Оценка гравитации по ускорению

Вторая оценка вектора гравитации производится путем вычитания оценки затухающего линейного ускорения из предыдущей итерации из показаний акселерометра:

Оценка магнитного вектора Земли

Магнитный вектор Земли оценивается путем поворота оценки магнитного вектора из предыдущей итерации на априорную оценку ориентации в виде матрицы поворота:

Модель ошибок

Details

ahrs 4 ru

Модель ошибок объединяет две разности:

  • разность между оценкой гравитации по показаниям акселерометра и оценкой гравитации по показаниям гироскопа: ;

  • разность между оценкой магнитного вектора по показаниям гироскопа и оценкой магнитного вектора по показаниям магнитометра: .

Поправка магнитометра

Details

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

ahrs 5 ru

Ошибка магнитного возмущения

Ошибка магнитного возмущения рассчитывается путем матричного умножения коэффициента усиления Калмана, связанного с магнитным вектором, на сигнал ошибки:

Коэффициент усиления Калмана — это коэффициент усиления Калмана, рассчитанный в текущей итерации.

Обнаружение магнитных помех

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

Уравнения Калмана

Details

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

ahrs 6 ru

Модель измерений

Модель измерений отображает наблюдаемые состояния размером на , и , в истинное состояние размером на .

Модель измерений строится следующим образом:

ahrs matrix 1

где

  • , и -, - и -элементы вектора гравитации, оцененные на основе априорной ориентации, соответственно;

  • , и -, - и -элементы вектора магнитного поля, оцененные на основе априорной ориентации, соответственно;

  • — константа, равная отношению коэффициента децимации к частоте дискретизации.

Ковариация невязок

Ковариация невязок — это матрица размером на , используемая для отслеживания изменчивости измерений. Матрица ковариации невязок рассчитывается следующим образом:

где

  • — матрица модели измерений;

  • — прогнозируемая (априорная) оценка ковариации модели измерений, рассчитанная на предыдущей итерации;

  • — ковариация шума модели измерений, рассчитанная следующим образом:

    где

Обновление ковариации оценки ошибки

Ковариация оценки ошибки представляет собой матрицу на , используемую для отслеживания изменчивости состояния.

Матрица ковариации оценки ошибки обновляется следующим образом:

где

  • — коэффициент усиления Калмана;

  • — матрица измерений;

  • — ковариация оценки ошибки, вычисленная на предыдущей итерации.

Прогнозируемая ковариация оценки ошибки

Ковариация оценки ошибки представляет собой матрицу на , используемую для отслеживания изменчивости состояния. Априорная ковариация оценки ошибки устанавливается равной ковариации шума процесса , определенной на предыдущей итерации. вычисляется как функция апостериорной ковариации оценки ошибки . При вычислении предполагается, что члены взаимной корреляции пренебрежимо малы по сравнению с членами автокорреляции и устанавливаются равными нулю:

ahrs matrix 2

где

  • — обновленная (апостериорная) ковариация оценки ошибки;

  • — коэффициент децимации, деленный на частоту дискретизации;

  • — шум дрейфа гироскопа;

  • — шум гироскопа;

  • — коэффициент затухания линейного ускорения;

  • — шум линейного ускорения;

  • — коэффициент затухания магнитных помех;

  • — шум магнитных помех.

Коэффициент усиления Калмана

Матрица коэффициента усиления Калмана — это матрица размером на , используемая для взвешивания невязки. В этом алгоритме невязка интерпретируется как процесс ошибки .

Матрица коэффициента усиления Калмана строится следующим образом:

где

  • — прогнозируемая ковариация ошибок;

  • — модель измерений;

  • — ковариация невязок.

Обновление апостериорной ошибки

Апостериорная оценка ошибки определяется путем объединения матрицы коэффициентов усиления Калмана с ошибкой в оценках вектора гравитации и вектора магнитного поля:

Если в текущей итерации обнаружены магнитные помехи, то сигнал ошибки магнитного вектора игнорируется, и апостериорная оценка ошибки вычисляется следующим образом:

Поправка

Details

ahrs 7 ru

Оценка ориентации

Оценка ориентации обновляется путем умножения предыдущей оценки на ошибку:

Оценка линейного ускорения

Оценка линейного ускорения обновляется путем уменьшения оценки линейного ускорения из предыдущей итерации и вычитания ошибки:

где — коэффициент затухания линейного ускорения.

Оценка смещения гироскопа

Оценка смещения гироскопа обновляется путем вычитания ошибки смещения гироскопа из значения смещения, полученного на предыдущей итерации:

Вычисление угловой скорости

Details

Для оценки угловой скорости усредняются данные , а затем вычитается смещение гироскопа, вычисленное на предыдущей итерации:

где — коэффициент децимации.

Оценка смещения гироскопа инициализируется нулями для первой итерации.

Обновление магнитного вектора

Details

Если в текущей итерации магнитные помехи не были обнаружены, оценка магнитного вектора обновляется с использованием апостериорной ошибки магнитного возмущения и апостериорной ориентации.

Ошибка магнитного возмущения преобразуется в навигационную систему координат:

Ошибка магнитного возмущения в навигационной системе координат вычитается из предыдущей оценки магнитного вектора, а затем интерпретируется как наклонение:

Наклонение преобразуется в ограниченную оценку вектора магнитного поля для следующей итерации:

Литература

  1. Open Source Sensor Fusion. https://github.com/memsindustrygroup/Open-Source-Sensor-Fusion/tree/master/docs

  2. D. Roetenberg, H.J. Luinge, C.T.M. Baten, P.H. Veltink. Compensation of Magnetic Disturbances Improves Inertial and Magnetic Sensing of Human Body Segment Orientation, IEEE Transactions on Neural Systems and Rehabilitation Engineering, Vol. 13, Issue 3, 2005, pp. 395–405.