Ориентация от показаний акселерометра, гироскопа и магнитометра
Navigation Toolbox Toolbox/Мультисенсорное позиционирование/Навигационные фильтры
Sensor Fusion and Tracking Toolbox/Мультисенсорные позиционные/навигационные фильтры
The AHRS
Simulink® блок использует акселерометр, магнитометр и данные гироскопического датчика для оценки ориентации устройства.
Accel
- Показания акселерометра в системе координат тела датчика (м/с2)Показания акселерометра в системе координат тела датчика в м/с2, заданный как N-на-3 матрица действительных скаляров. N - количество выборок и три столбца Accel
представляют измерения [x
y z],
соответственно.
Типы данных: single
| double
Gyro
- Показания гироскопа в системе координат тела датчика (рад/с)Показания гироскопа в системе координат тела датчика в рад/с, заданные как матрица N-на-3 действительных скаляров. N - количество выборок и три столбца Gyro
представляют измерения [x
y z],
соответственно.
Типы данных: single
| double
Mag
- Показания магнитометра в системе координат тела датчика (мкТ)Показания магнитометра в системе координат тела датчика в мкТ, заданные как N-на-3 матрица действительных скаляров. N - количество выборок и три столбца magReadings
представляют измерения [x
y z],
соответственно.
Типы данных: single
| double
Orientation
- Ориентация каркаса кузова датчика относительно навигационной системы координатОриентация датчика каркаса кузова относительно навигационной системы координат, возвращается как M-на-4 массив скаляров или 3х3-бай- M массив матриц вращения. Каждая строка массива N -by-4 принята как четыре элементов массиваquaternion
. Количество входных выборок, N и параметр Decimation Factor определяют выходной M размера.
Типы данных: single
| double
Angular Velocity
- Скорость вращения в системе координат тела датчика (рад/с) Скорость вращения с смещением гироскопа, удаленным в системе координат тела датчика в рад/с, возвращенная как M-на-3 массив действительных скаляров. Количество входных выборок, N и параметр Decimation Factor определяют выходной M размера.
Типы данных: single
| double
Reference frame
- Навигационная система координатNED
(по умолчанию) | ENU
Навигационная система координат, заданная как NED
(Северо-Восток-Даун) или ENU
(Восток-Север-Вверх).
Decimation factor
- Коэффициент десятикратного уменьшения1
(по умолчанию) | положительное целое числоДесятикратное уменьшение, на который можно уменьшить скорость данных входного датчика, заданную как положительное целое число.
Количество строк входов - Accel, Gyro и Mag - должно быть кратным коэффициенту десятикратного уменьшения.
Типы данных: single
| double
Initial process noise
- Начальный технологический шумahrsfilter.defaultProcessNoise
(по умолчанию) | матрицу 12 на 12 действительного скаляраНачальный шум процесса, заданный как матрица 12 на 12 действительных скаляров. Значение по умолчанию, ahrsfilter.defaultProcessNoise
, является диагональной матрицей 12 на 12 как:
Columns 1 through 6 0.000006092348396 0 0 0 0 0 0 0.000006092348396 0 0 0 0 0 0 0.000006092348396 0 0 0 0 0 0 0.000076154354947 0 0 0 0 0 0 0.000076154354947 0 0 0 0 0 0 0.000076154354947 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Columns 7 through 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009623610000000 0 0 0 0 0 0 0.009623610000000 0 0 0 0 0 0 0.009623610000000 0 0 0 0 0 0 0.600000000000000 0 0 0 0 0 0 0.600000000000000 0 0 0 0 0 0 0.600000000000000
Типы данных: single
| double
Orientation format
- Формат выхода ориентации'quaternion'
(по умолчанию) | 'Rotation matrix'
Выход выходной ориентации, заданный как 'quaternion'
или 'Rotation matrix'
:
'quaternion'
- Выход является M -на-4 массивом действительных скаляров. Каждая строка массива представляет четыре компонента quaternion
.
'Rotation matrix'
-- Выход является матрицей вращения M 3 на 3 байта.
Выходной размер M зависит от входного размера N и параметра Decimation Factor.
Типы данных: char
| string
Simulate using
- Тип выполняемой симуляцииInterpreted Execution
(по умолчанию) | Code Generation
Interpreted execution
- Симулируйте модель с помощью MATLAB® интерпретатор. Эта опция сокращает время запуска. В Interpreted execution
mode, можно отлаживать исходный код блока.
Code generation
- Симулируйте модель с помощью сгенерированного кода C. При первом запуске симуляции Simulink генерирует код С для блока. Код С повторно используется для последующих симуляций, пока модель не меняется. Эта опция требует дополнительного времени запуска.
Шум акселерометра ((м/с2)2)
- Отклонение шума сигнала акселерометра ((м/с2)2)0.00019247
(по умолчанию) | положительный действительный скалярОтклонение шума сигнала акселерометра в (м/с2)2, заданный как положительный действительный скаляр.
Типы данных: single
| double
Шум гироскопа ((рад/с)2)
- Отклонение шума сигнала гироскопа ((рад/с)2)9.1385e-5
(по умолчанию) | положительный действительный скалярОтклонение шума сигнала гироскопа в (рад/с)2, заданный как положительный действительный скаляр.
Типы данных: single
| double
Шум магнитометра (мкТ2)
- Отклонение шума сигнала магнитометра (мкТ2)0.1
(по умолчанию) | положительный действительный скалярОтклонение шума сигнала магнитометра в мкТ2, заданный как положительный действительный скаляр.
Типы данных: single
| double
Gyroscope drift noise (rad/s)
- Отклонение смещения гироскопа ((рад/с)2)3.0462e-13
(по умолчанию) | положительный действительный скалярОтклонение дрейфа смещения гироскопа в (рад/с)2, заданный как положительный действительный скаляр.
Типы данных: single
| double
Линейный шум ускорения ((м/с2)2)
- Отклонение линейного шума ускорения (м/с2)20.0096236
(по умолчанию) | положительный действительный скалярОтклонение линейного шума ускорения в (м/с2)2, заданный как положительный действительный скаляр. Линейное ускорение моделируется как процесс белого шума с фильтрацией методом lowpass.
Типы данных: single
| double
Магнитный возмущающий шум (мкТ2)
- Отклонение магнитного нарушения порядка шума (мкТ2)0.5
(по умолчанию) | действительная конечная положительная скалярная величинаОтклонение магнитного нарушения порядка шума в мкТ2, заданный как действительная конечная положительная скалярная величина.
Типы данных: single
| double
Linear acceleration decay factor
- Коэффициент затухания для дрейфа линейного ускорения0.5
(по умолчанию) | скаляром в области значений [0,1)Коэффициент распада для дрейфа линейного ускорения, заданный как скаляр в области значений [0,1). Если линейное ускорение изменяется быстро, установите этот параметр на более низкое значение. Если линейное ускорение изменяется медленно, установите этот параметр на более высокое значение. Дрейф линейного ускорения моделируется как процесс белого шума с фильтрацией методом lowpass.
Типы данных: single
| double
Magnetic disturbance decay factor
- Коэффициент распада для магнитного нарушения порядка0.5
(по умолчанию) | положительная скалярная величина в области значений [0,1]Коэффициент распада для магнитных нарушений порядка, заданный как положительная скалярная величина в область значений [0,1]. Магнитное нарушение порядка моделируется как марковский процесс первого порядка.
Типы данных: single
| double
Magnetic field strength (μT)
- Напряженность магнитного поля (мкТ)50
(по умолчанию) | реальная положительная скалярная величинаНапряженность магнитного поля в мкТ, заданная как действительная положительная скалярная величина. Напряженность магнитного поля является оценкой напряженности магнитного поля Земли в текущем месте.
Типы данных: single
| double
Примечание: Следующий алгоритм применяется только к опорной системе координат NED.
Блок AHRS использует девять-осевую структуру фильтра Калмана, описанную в [1]. Алгоритм пытается отследить ошибки в ориентации, смещении гироскопа, линейном ускорении и магнитном нарушении порядка, чтобы вывести конечную ориентацию и скорость вращения. Вместо непосредственного отслеживания ориентации косвенный фильтр Калмана моделирует процесс ошибки, x, с рекурсивным обновлением:
где x k является вектором 12 на 1, состоящим из:
θk -- вектор ошибки ориентации 3 на 1, в степенях, в момент времени k
bk -- гироскоп 3 на 1 нуле вектор смещения угловой скорости, в град/с, в момент времени k
ak -- вектор ошибки ускорения 3 на 1, измеренный в системе координат датчика, в g, в момент времени k
dk -- 3 на 1 вектор ошибки магнитного нарушения порядка, измеренный в системе координат датчика, в мкТ, в момент времени k
и где w k является аддитивным вектором шума 12 на 1, и F k является моделью перехода состояния.
Поскольку x k задан как процесс ошибки, априорная оценка всегда равна нулю, и, следовательно, модель перехода состояния, F k, равна нулю. Это понимание приводит к следующему уменьшению стандартных уравнений Калмана:
Стандартные уравнения Калмана:
Уравнения Калмана, используемые в этом алгоритме:
где:
xk− - прогнозируемая (априори) оценка состояния; процесс ошибки
Pk− - предсказанная (априорная) оценка ковариации
yk -- инновации
Sk -- инновационная ковариация
Kk -- коэффициент усиления Калмана
xk+ - обновленная (апостериорная) оценка состояния
Pk+ - обновленная (a posteriori) оценка ковариации
k представляет итерацию, надстрочный индекс + представляет апостериорную оценку и надстрочный индекс − представляет априорную оценку.
Графические и последующие шаги описывают итерацию на основе одного кадра через алгоритм.
Перед первой итерацией accelReadings
, gyroReadings
, и magReadings
входы шунтируются в DecimationFactor
-by-3 системы координат. Для каждого фрагмента алгоритм использует самые актуальные показания акселерометра и магнитометра, соответствующие фрагменту показаний гироскопа.
Пройдите по алгоритму для объяснения каждого этапа подробного обзора.
Алгоритм моделирует ускорение и угловое изменение как линейные процессы.
Ориентация для текущей системы координат предсказывается путем первой оценки углового изменения по сравнению с предыдущей системой координат:
где N - коэффициент десятикратного уменьшения, заданный коэффициентом десятикратного уменьшения, и fs является частотой дискретизации.
Угловое изменение преобразуется в кватернионы с помощью rotvec
quaternion
синтаксис конструкции:
Предыдущая оценка ориентации обновляется путем поворота ее на И Q:
Во время первой итерации оценка ориентации, q−, инициализируется ecompass
.
Вектор гравитации интерпретируется как третий столбец кватерниона, q−, в матричном виде вращения:
Вторую оценку вектора гравитации производят путем вычитания из показаний акселерометра истекшей оценки линейного ускорения предыдущей итерации:
Магнитный вектор Земли оценивается вращением оценки магнитного вектора из предыдущей итерации априорной оценкой ориентации в матричной форме вращения:
Модель ошибки сочетает в себе два различия:
Различие между оценкой силы тяжести из показаний акселерометра и оценкой силы тяжести из показаний гироскопа:
Различие между оценкой магнитного вектора из показаний гироскопа и оценкой магнитного вектора из магнитометра:
Правильный магнитометр оценивает ошибку в оценке магнитного вектора и обнаруживает магнитные помехи.
Ошибка магнитного нарушения порядка вычисляется матричным умножением усиления Калмана, сопоставленного с магнитным вектором с сигналом ошибки:
Коэффициент усиления Калмана, K, является коэффициентом усиления Калмана, вычисленным в текущей итерации.
Магнитное заедание определяется путем проверки, что степень обнаруженного магнитного нарушения порядка меньше или равна четырём степеням ожидаемого напряжения магнитного поля:
ExpectedMagneticFieldStrength является свойством ahrsfilter
.
Уравнения Калмана используют оценку тяжести, полученную из показаний гироскопа, g, оценку магнитного вектора, полученную из показаний гироскопа, mGyro и наблюдения процесса ошибки, z, чтобы обновить усиление Калмана и промежуточные ковариационные матрицы. Коэффициент усиления Калмана применяется к сигналу ошибки, z, для вывода апостериорной оценки ошибки x+.
Модель наблюдения преобразует наблюдаемые состояния 1 на 3, g и mGyro, в истинное состояние 6 на 12, H.
Модель наблюдения построена как:
где g x, g y и g z являются x -, y - и z - элементами вектора тяжести, оцененными из априорной ориентации, соответственно. m x, m y и m z являются x -, y - и z - элементами магнитного вектора, оцененными из априорной ориентации, соответственно. κ является константой, определяемой свойствами Sample rate и Decimation factor: κ = Decimation factor
/ Sample rate
.
Инновационная ковариация является матрицей 6 на 6, используемой для отслеживания изменчивости измерений. Инновационная ковариационная матрица вычисляется как:
где
H - матрица модели наблюдения
P− - предсказанная (априорная) оценка ковариации модели наблюдения, вычисленная в предыдущей итерации
R - ковариация шума модели наблюдения, рассчитанная как:
где
и
Ковариация оценки ошибки является матрицей 12 на 12, используемой для отслеживания изменчивости состояния.
Ковариационная матрица оценки ошибки обновляется следующим образом:
где K - коэффициент усиления Калмана, H - матрица измерений и P− - ковариация оценки ошибки, вычисленная во время предыдущей итерации.
Ковариация оценки ошибки является матрицей 12 на 12, используемой для отслеживания изменчивости состояния. Априорная оценка ошибки, ковариация, P−, устанавливается в ковариацию шума процесса, Q, определенную во время предыдущей итерации. Q вычисляется как функция ковариации оценки апостериорной ошибки, P+. При вычислении Q принято, что условия перекрестной корреляции незначительны по сравнению с терминами автокорреляции и равны нулю:
где
P+ - обновленная (a posteriori) оценка ошибки ковариация
κ -- Коэффициент десятикратного уменьшения, разделенный на частоту дискретизации.
β -- Шум дрейфа гироскопа.
η -- Гироскоп шум.
ν - Коэффициент распада линейного ускорения.
ξ -- Линейный шум ускорения.
σ -- Коэффициент распада магнитных нарушений порядка.
γ -- Магнитное нарушение порядка шум.
Матрица усиления Калмана является матрицей 12 на 6, используемой для взвешивания нововведения. В этом алгоритме нововведение интерпретируется как процесс ошибки, z.
Матрица усиления Калмана построена как:
где
P− -- предсказанная ковариация ошибок
H -- модель наблюдения
S -- инновационная ковариация
Апостериорная оценка ошибки определяется путем объединения матрицы усиления Калмана с ошибкой в оценках вектора гравитации и магнитного вектора:
Если в текущей итерации обнаруживается магнитное глушение, сигнал ошибки магнитного вектора игнорируется, и оценка апостериорной ошибки вычисляется как:
Оценка ориентации обновляется путем умножения предыдущей оценки на ошибку:
Линейная оценка ускорения обновляется путем распада линейной оценки ускорения из предыдущей итерации и вычитания ошибки:
где
ν -- Коэффициент распада линейного ускорения
Оценка смещения гироскопа обновлена, вычтя ошибку смещения гироскопа из смещения гироскопа от предыдущей итерации:
Чтобы оценить скорость вращения, система координат gyroReadings
усредняются, и вычисленное в предыдущей итерации смещение гироскопа вычитается:
где N - коэффициент десятикратного уменьшения, заданный DecimationFactor
свойство.
Оценка смещения гироскопа инициализируется в нули для первой итерации.
Если магнитное глушение не было обнаружено в текущей итерации, оценка магнитного вектора, m, обновляется с помощью a posteriori ошибки магнитного нарушения порядка и a posteriori ориентации.
Ошибка магнитного нарушения порядка преобразуется в навигационную систему координат:
Ошибка магнитного нарушения порядка в навигационной системе координат вычитается из предыдущей оценки магнитного вектора и затем интерпретируется как наклон:
Наклон преобразуется в оценку магнитного вектора с ограничениями для следующей итерации:
[1] Комплексирование датчиков с открытым исходным кодом. https://github.com/memsindustrygroup/Open-Source-Sensor-Fusion/tree/master/docs
[2] Roetenberg, D., H.J. Luinge, C.T.M. Бэтен и П.Х. Велтинк. Компенсация магнитных нарушений порядка улучшает инерционное и магнитное измерение ориентации сегмента тела человека. Транзакции IEEE по нейронным системам и реабилитационной инженерии. Том 13. Выпуск 3, 2005, с. 395-405.
ahrsfilter
| ecompass
| gpsSensor
| imufilter
| imuSensor
| quaternion
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.