Блок 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
Начальный уровень шума процесса, заданный как матрица вещественных скалярных величин размером на .
#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, в момент времени ;
— вектор ошибки магнитного возмущения на , измеренный в системе координат датчика, в мкТл, в момент времени ;
— аддитивный вектор шума на ;
— модель перехода состояний.
Поскольку определяется как процесс ошибки, априорная оценка всегда равна нулю, и, следовательно, модель перехода состояний равна нулю. Это приводит к следующему упрощению стандартных уравнений Калмана:
Уравнения Калмана, используемые в этом алгоритме:
где
— прогнозируемая (априорная) оценка состояния; процесс ошибки;
— прогнозируемая (априорная) оценка ковариации;
— невязка;
— ковариация невязок;
— коэффициент усиления Калмана;
— обновленная (апостериорная) оценка состояния;
— обновленная (апостериорная) оценка ковариации;
нижний индекс — номер итерации;
верхний индекс — апостериорная оценка;
верхний индекс — априорная оценка.
Графическое изображение и последующие шаги описывают одну итерацию алгоритма на основе отдельных кадров.
Перед первой итерацией входные данные , и разбиваются на кадры с коэффициентом децимации 3. Для каждого кадра алгоритм использует самые актуальные показания акселерометра и магнитометра, соответствующие кадру показаний гироскопа.
Подробное описание
Details
Для получения подробного описания каждого этапа обзора ознакомьтесь с алгоритмом.
Модель
Details
Алгоритм моделирует ускорение и изменение угла как линейные процессы.
Прогнозирование ориентации
Ориентация для текущего кадра определяется путем предварительной оценки углового изменения по сравнению с предыдущим кадром:
Угловое изменение преобразуется в кватернионы с использованием синтаксиса построения кватернионов:
Предыдущая оценка ориентации обновляется путем поворота на :
В ходе первой итерации оценка ориентации инициализируется с помощью ecompass.
Оценка гравитации по ориентации
Вектор гравитации интерпретируется как третий столбец кватерниона в форме матрицы вращения:
Оценка гравитации по ускорению
Вторая оценка вектора гравитации производится путем вычитания оценки затухающего линейного ускорения из предыдущей итерации из показаний акселерометра:
Оценка магнитного вектора Земли
Магнитный вектор Земли оценивается путем поворота оценки магнитного вектора из предыдущей итерации на априорную оценку ориентации в виде матрицы поворота:
Модель ошибок
Details
Модель ошибок объединяет две разности:
разность между оценкой гравитации по показаниям акселерометра и оценкой гравитации по показаниям гироскопа: ;
разность между оценкой магнитного вектора по показаниям гироскопа и оценкой магнитного вектора по показаниям магнитометра: .
Поправка магнитометра
Details
Поправка магнитометра определяет погрешность в оценке магнитного вектора и обнаруживает магнитные помехи.
Ошибка магнитного возмущения
Ошибка магнитного возмущения рассчитывается путем матричного умножения коэффициента усиления Калмана, связанного с магнитным вектором, на сигнал ошибки:
Коэффициент усиления Калмана — это коэффициент усиления Калмана, рассчитанный в текущей итерации.
Обнаружение магнитных помех
Магнитные помехи определяются путем проверки того, что мощность обнаруженного магнитного возмущения меньше или равна четырехкратному значению мощности ожидаемой напряженности магнитного поля:
Уравнения Калмана
Details
В уравнениях Калмана используется оценка гравитации , полученная из показаний гироскопа, оценка магнитного вектора , полученная из показаний гироскопа, и измерение процесса ошибки для обновления коэффициента усиления Калмана и промежуточных ковариационных матриц. Коэффициент усиления Калмана применяется к сигналу ошибки для получения апостериорной оценки ошибки .
Модель измерений
Модель измерений отображает наблюдаемые состояния размером на , и , в истинное состояние размером на .
Модель измерений строится следующим образом:
где
, и — -, - и -элементы вектора гравитации, оцененные на основе априорной ориентации, соответственно;
, и — -, - и -элементы вектора магнитного поля, оцененные на основе априорной ориентации, соответственно;
— константа, равная отношению коэффициента децимации к частоте дискретизации.
Ковариация невязок
Ковариация невязок — это матрица размером на , используемая для отслеживания изменчивости измерений. Матрица ковариации невязок рассчитывается следующим образом:
где
— матрица модели измерений;
— прогнозируемая (априорная) оценка ковариации модели измерений, рассчитанная на предыдущей итерации;
— ковариация шума модели измерений, рассчитанная следующим образом:
где
Обновление ковариации оценки ошибки
Ковариация оценки ошибки представляет собой матрицу на , используемую для отслеживания изменчивости состояния.
Матрица ковариации оценки ошибки обновляется следующим образом:
где
— коэффициент усиления Калмана;
— матрица измерений;
— ковариация оценки ошибки, вычисленная на предыдущей итерации.
Прогнозируемая ковариация оценки ошибки
Ковариация оценки ошибки представляет собой матрицу на , используемую для отслеживания изменчивости состояния. Априорная ковариация оценки ошибки устанавливается равной ковариации шума процесса , определенной на предыдущей итерации. вычисляется как функция апостериорной ковариации оценки ошибки . При вычислении предполагается, что члены взаимной корреляции пренебрежимо малы по сравнению с членами автокорреляции и устанавливаются равными нулю:
где
— обновленная (апостериорная) ковариация оценки ошибки;
— коэффициент децимации, деленный на частоту дискретизации;
— шум дрейфа гироскопа;
— шум гироскопа;
— коэффициент затухания линейного ускорения;
— шум линейного ускорения;
— коэффициент затухания магнитных помех;
— шум магнитных помех.
Коэффициент усиления Калмана
Матрица коэффициента усиления Калмана — это матрица размером на , используемая для взвешивания невязки. В этом алгоритме невязка интерпретируется как процесс ошибки .
Матрица коэффициента усиления Калмана строится следующим образом:
где
— прогнозируемая ковариация ошибок;
— модель измерений;
— ковариация невязок.
Обновление апостериорной ошибки
Апостериорная оценка ошибки определяется путем объединения матрицы коэффициентов усиления Калмана с ошибкой в оценках вектора гравитации и вектора магнитного поля:
Если в текущей итерации обнаружены магнитные помехи, то сигнал ошибки магнитного вектора игнорируется, и апостериорная оценка ошибки вычисляется следующим образом:
Поправка
Details
Оценка ориентации
Оценка ориентации обновляется путем умножения предыдущей оценки на ошибку:
Оценка линейного ускорения
Оценка линейного ускорения обновляется путем уменьшения оценки линейного ускорения из предыдущей итерации и вычитания ошибки:
где — коэффициент затухания линейного ускорения.
Оценка смещения гироскопа
Оценка смещения гироскопа обновляется путем вычитания ошибки смещения гироскопа из значения смещения, полученного на предыдущей итерации:
Вычисление угловой скорости
Details
Для оценки угловой скорости усредняются данные , а затем вычитается смещение гироскопа, вычисленное на предыдущей итерации:
где — коэффициент децимации.
Оценка смещения гироскопа инициализируется нулями для первой итерации.
Обновление магнитного вектора
Details
Если в текущей итерации магнитные помехи не были обнаружены, оценка магнитного вектора обновляется с использованием апостериорной ошибки магнитного возмущения и апостериорной ориентации.
Ошибка магнитного возмущения преобразуется в навигационную систему координат:
Ошибка магнитного возмущения в навигационной системе координат вычитается из предыдущей оценки магнитного вектора, а затем интерпретируется как наклонение:
Наклонение преобразуется в ограниченную оценку вектора магнитного поля для следующей итерации:
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.