complementaryFilter

Оценка ориентации из дополнительного фильтра

Описание

The complementaryFilter Система object™ предохраняет данные акселерометра, гироскопа и магнитометра для оценки ориентации устройства и скорости вращения.

Чтобы оценить ориентацию с помощью этого объекта:

  1. Создайте complementaryFilter Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

FUSE = complementaryFilter возвращает complementaryFilter Системный объект, FUSEдля слияния датчика акселерометра, гироскопа и данных магнитометра для оценки ориентации и скорости вращения устройства.

FUSE = complementaryFilter('ReferenceFrame',RF) возвращает complementaryFilter Системный объект, который запирает данные акселерометра, гироскопа и магнитометра для оценки ориентации устройства относительно системы координат RF. Задайте RF как 'NED' (Северо-Восток-Даун) или 'ENU' (Восток-Север-Вверх). Значение по умолчанию 'NED'.

пример

FUSE = complementaryFilter(___,Name,Value) устанавливает каждое свойство Name к заданной Value. Неопределенные свойства имеют значения по умолчанию.

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Вход выборки данных о датчике в Гц в виде положительной скалярной величины.

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

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

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

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

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

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

Включите вход магнитометра, заданный как true или false.

Типы данных: logical

Выход выходной ориентации, заданный как 'quaternion' или 'Rotation matrix'. Размер выхода зависит от формата ориентации выхода:

  • 'quaternion' -- Выход представляет собой N -by-1 quaternion.

  • 'Rotation matrix' -- Выход является матрицей вращения N 3 на 3 байта.

N - количество выборок.

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

Использование

Описание

пример

[orientation,angularVelocity] = FUSE(accelReadings,gyroReadings,magReadings) использует данные акселерометра, гироскопа и магнитометра для вычисления ориентации и скорости вращения. Чтобы использовать этот синтаксис, установите HasMagnetometer свойство как true.

[orientation,angularVelocity] = FUSE(accelReadings,gyroReadings) использует данные акселерометра и гироскопа для вычисления ориентации и скорости вращения. Чтобы использовать этот синтаксис, установите HasMagnetometer свойство как false.

Входные параметры

расширить все

Показания акселерометра в системе координат тела датчика в м/с2, заданный как матрица N -by-3. N - количество выборок и три столбца accelReadings представление измерений [x y z ]. Показания акселерометра приняты соответствующими скорости дискретизации, заданной SampleRate свойство. В фильтре коэффициент тяжести g принимается следующим образом 9.81 м/с2.

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

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

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

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

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

Выходные аргументы

расширить все

Ориентация, которая вращает величины от локальной системы координат навигации к системе координат тела, возвращается как кватернионы или массив. Размер и тип orientation зависит от того, будет ли OrienationFormat для свойства задано значение 'quaternion' или 'Rotation matrix':

  • 'quaternion' - выходы являются вектором кватернионов N-на-1, где N количество выборок.

  • 'Rotation matrix' - выходы представляют собой массив матриц вращения N размером 3 на 3 байта, где N количество выборок.

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

Скорость вращения, выраженная в системе координат тела датчика в рад/с, возвращается как массив N-на-3, где N количество выборок.

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

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта
cloneСоздайте повторяющийся системный объект
isLockedОпределите, используется ли системный объект

Примеры

свернуть все

Загрузите rpy_9axis файл, содержащий зарегистрированные данные акселерометра, гироскопа и датчика магнитометра от устройства, колеблющегося с тангажом (вокруг оси Y), затем рыскание (вокруг оси Z), а затем крен (вокруг оси X). Файл также содержит частоту дискретизации записи.

ld = load('rpy_9axis.mat');
accel = ld.sensorData.Acceleration;
gyro = ld.sensorData.AngularVelocity;
mag = ld.sensorData.MagneticField;

Создайте дополнительный объект фильтра со скоростью дискретизации, равной частоте данных.

Fs  = ld.Fs;  % Hz
fuse = complementaryFilter('SampleRate', Fs);

Данные о предохранителе, гироскопе и магнитометре с помощью фильтра.

q = fuse(accel, gyro, mag);

Визуализация результатов.

plot(eulerd( q, 'ZYX', 'frame'));
title('Orientation Estimate');
legend('Z-rotation', 'Y-rotation', 'X-rotation');
ylabel('Degrees');

Figure contains an axes. The axes with title Orientation Estimate contains 3 objects of type line. These objects represent Z-rotation, Y-rotation, X-rotation.

Ссылки

[1] Valenti, R., I. Dryanovski, and J. Xiao. «Сохранение хорошего отношения: ориентационный фильтр на основе кватернионов для БИНС и МАРГ». Датчики. Том 15, № 8, 2015, стр. 19302-19330.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

|

Введенный в R2019b