exponenta event banner

AHRS

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

  • Библиотека:
  • Панель инструментов навигации Панель инструментов/Мультисенсорные фильтры позиционирования/Навигационные фильтры

    Панель инструментов слияния и отслеживания датчиков/мультисенсорные позиционирующие/навигационные фильтры

  • AHRS block

Описание

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

Порты

Вход

развернуть все

Показания акселерометра в системе координат тела датчика в m/s2, заданные как N-by-3 матрица вещественных скаляров. N - количество выборок и три столбца Accel представляют измерения [x y z] соответственно .

Типы данных: single | double

Показания гироскопа в системе координат тела датчика в рад/с, заданные как N-by-3 матрица вещественных скаляров. N - количество выборок и три столбца Gyro представляют измерения [x y z] соответственно .

Типы данных: single | double

Показания магнитометра в системе координат корпуса датчика в мкТ, указанные как N-by-3 матрица действительных скаляров. N - количество выборок и три столбца magReadings представляют измерения [x y z] соответственно .

Типы данных: single | double

Продукция

развернуть все

Ориентация корпуса датчика относительно навигационного кадра, возвращаемого в виде M-by-4 массива скаляров или 3-by-3-by-M массива матриц вращения. Предполагается, что каждая строка массива N-by-4 является четырьмя элементами quaternion. Количество входных выборок, N и параметр «Коэффициент прореживания» определяют размер выходного сигнала М.

Типы данных: single | double

Угловая скорость с смещением гироскопа, удаленным в системе координат корпуса датчика в рад/с, возвращена в виде M-by-3 массива действительных скаляров. Количество входных выборок, N и параметр «Коэффициент прореживания» определяют размер выходного сигнала М.

Типы данных: single | double

Параметры

развернуть все

Главный

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

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

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

Типы данных: single | double

Начальный шум процесса, заданный как матрица действительных скаляров 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

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

  • 'quaternion' - Вывод - это M-by-4 массив реальных скаляров. Каждая строка массива представляет четыре компонента quaternion.

  • 'Rotation matrix' - Вывод является матрицей ротации 3-by-3-by-M.

Выходной размер M зависит от входного размера N и параметра «Коэффициент прореживания».

Типы данных: char | string

  • Interpreted execution - Моделирование модели с помощью интерпретатора MATLAB ®. Этот параметр сокращает время запуска. ВInterpreted execution можно отладить исходный код блока.

  • Code generation - моделирование модели с использованием сгенерированного кода C. При первом запуске моделирования Simulink генерирует код C для блока. Код C используется повторно для последующего моделирования до тех пор, пока модель не изменится. Для этого параметра требуется дополнительное время запуска.

Измерительный шум

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

Типы данных: single | double

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

Типы данных: single | double

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

Типы данных: single | double

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

Типы данных: single | double

Экологический шум

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

Типы данных: single | double

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

Типы данных: single | double

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

Типы данных: single | double

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

Типы данных: single | double

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

Типы данных: single | double

Алгоритмы

развернуть все

Примечание.Следующий алгоритм применяется только к опорному кадру NED.

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

xk = [startkbkakdk] = Fk [startk 1bk 1ak − 1dk − 1] + wk

где xk - вектор 12 на 1, состоящий из:

  • startk -- вектор ошибки ориентации 3 на 1, в градусах, в момент времени k

  • bk -- вектор смещения нулевой угловой скорости гироскопа 3 на 1, в град/с, в момент времени k

  • ak -- вектор ошибки ускорения 3 на 1, измеренный в кадре датчика, в g, в момент времени k

  • dk -- вектор ошибки магнитного возмущения 3 на 1, измеренный в кадре датчика, в мкТ, в момент времени k

и где wk является вектором аддитивного шума 12 на 1, а Fk является моделью перехода состояния.

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

Стандартные уравнения Калмана:

xk = Fkxk 1 + Pk = FkPk 1 + FkT + Qkyk = zk Hkxk Sk = Rk + HkPk HkTkk = Pk HkT (Sk) − 1xk + = xk − + Kkykpk

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

xk = 0Pk = Qkyk = zkSk = Rk + HkPk HkTKk = Pk HkT (Sk) 1xk + = KkykPk + = Pk − − KkHkPk −

где:

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

  • Pk − -- предсказанная (априорная) оценка ковариации

  • yk -- инновации

  • Sk - инновационная ковариация

  • Kk -- Kalman gain

  • xk + -- обновленная (a posteriori) оценка состояния

  • Pk + -- обновленная (a posteriori) оценка ковариации

k представляет итерацию, верхний индекс + представляет апостериорную оценку, а верхний индекс представляет априорную оценку.

На рисунке и последующих шагах описывается итерация на основе одного кадра в алгоритме.

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

Ссылки

[1] Слияние датчиков с открытым исходным кодом. https://github.com/memsindustrygroup/Open-Source-Sensor-Fusion/tree/master/docs

[2] Роетенберг, Д., Х.Ж. Луинге, К.Т.М. Батен и П.Х. Велтинк. «Компенсация магнитных возмущений улучшает инерционное и магнитное восприятие ориентации сегмента человеческого тела». Сделки IEEE по нейронным системам и инженерии реабилитации. Том 13. Выпуск 3, 2005, стр. 395-405.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью Simulink ® Coder™

.
Представлен в R2020a