Имитационная модель БИНС
The imuSensor Системный object™ моделей приема данных от инерциального измерительного блока (IMU).
Для моделирования БИНС:
Создайте imuSensor Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
возвращает Системный объект, IMU = imuSensorIMU, который вычисляет считывание модуля измерения на основе инерционного входного сигнала. IMU имеет идеальные акселерометр и гироскоп.
IMU = imuSensor( возвращает 'accel-gyro')imuSensor Системный объект с идеальным акселерометром и гироскопом. imuSensor и imuSensor('accel-gyro') являются эквивалентными синтаксисами создания.
IMU = imuSensor( возвращает 'accel-mag')imuSensor Системный объект с идеальными акселерометром и магнитометром.
IMU = imuSensor( возвращает 'accel-gyro-mag')imuSensor Системный объект с идеальным акселерометром, гироскопом и магнитометром.
IMU = imuSensor(___, возвращает 'ReferenceFrame',RF)imuSensor Системный объект, который вычисляет считывание модуля измерения относительно опорной системы координат RF. Задайте RF как 'NED' (Северо-Восток-Даун) или 'ENU' (Восток-Север-Вверх). Значение по умолчанию 'NED'.
IMU = imuSensor(___, устанавливает каждое свойство Name,Value)Name к заданной Value. Неопределенные свойства имеют значения по умолчанию. Этот синтаксис может использоваться в комбинации с любым из предыдущих входных параметров.
Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
IMUType - Тип инерционного модуля измерения'accel-gyro' (по умолчанию) | 'accel-mag' | 'accel-gyro-mag'Тип инерционного модуля измерения, заданный как 'accel-gyro', 'accel-mag', или 'accel-gyro-mag'.
Тип инерционного модуля измерения определяет, какие показания датчика нужно смоделировать:
'accel-gyro' -- Акселерометр и гироскоп
'accel-mag' -- Акселерометр и магнитометр
'accel-gyro-mag' -- Акселерометр, гироскоп и магнитометр
Можно задать IMUType как аргумент только для значения во время создания или как Name,Value пара.
Типы данных: char | string
SampleRate - Частота дискретизации (Гц)100 (по умолчанию) | положительная скалярная величинаЧастота дискретизации модели датчика в Гц, заданная как положительная скалярная величина.
Типы данных: single | double
Temperature - Температура БИНС (oC)25 (по умолчанию) | действительный скалярРабочая температура БИНС в степенях Цельсия, заданная как действительный скаляр.
Когда объект вычисляет коэффициенты шкалы температуры и шум дрейфа среды, 25 oВ качестве номинальной температуры используется C.
Настраиваемый: Да
Типы данных: single | double
MagneticField - Вектор магнитного поля в локальной навигационной системе координат (мкТ)[27.5550 -2.4169 -16.0849] (по умолчанию) | действительный скалярВектор поля в microtesla, заданный как трехэлементный вектор-строка в локальной навигационной системе координат.
Магнитное поле по умолчанию соответствует магнитному полю на нулевой широте, нулевой долготе и нулевой высоте.
Настраиваемый: Да
Типы данных: single | double
Accelerometer - Параметры датчика акселерометраaccelparams объект (по умолчанию)Параметры датчика акселерометра, заданные accelparams объект.
Настраиваемый: Да
Gyroscope - Параметры датчика гироскопаgyroparams объект (по умолчанию)Параметры гироскопа, заданные gyroparams объект.
Настраиваемый: Да
Magnetometer - Параметры датчика магнитометраmagparams объект (по умолчанию)Параметры магнитометра, заданные magparams объект.
Настраиваемый: Да
RandomStream - Источник случайных чисел'Global stream' (по умолчанию) | 'mt19937ar with seed'Источник случайных чисел, заданный в виде вектора символов или строки:
'Global stream' - Случайные числа генерируются с использованием текущего глобального потока случайных чисел.
'mt19937ar with seed' -- Случайные числа генерируются с помощью алгоритма mt19937ar со seed, заданной Seed свойство.
Типы данных: char | string
Seed - Начальный seed67 (по умолчанию) | неотрицательным целочисленным скаляромНачальный seed алгоритма генератора случайных чисел mt19937ar, заданное как вещественный, неотрицательный целочисленный скаляр.
Чтобы включить это свойство, задайте RandomStream на 'mt19937ar with seed'.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
[ генерирует показания акселерометра и гироскопа от входов ускорения и скорости вращения.accelReadings,gyroReadings] = IMU(acc,angVel)
Этот синтаксис действителен только в том случае, если IMUType установлено в 'accel-gyro' или 'accel-gyro-mag'.
[ генерирует показания акселерометра и гироскопа от входов ускорения, скорости вращения и ориентации.accelReadings,gyroReadings] = IMU(acc,angVel,orientation)
Этот синтаксис действителен только в том случае, если IMUType установлено в 'accel-gyro' или 'accel-gyro-mag'.
[ формирует показания акселерометра и магнитометра от входов ускорения и скорости вращения.accelReadings,magReadings] = IMU(acc,angVel)
Этот синтаксис действителен только в том случае, если IMUType установлено в 'accel-mag'.
[ генерирует показания акселерометра и магнитометра от входных входов ускорения, скорости вращения и ориентации.accelReadings,magReadings] = IMU(acc,angVel,orientation)
Этот синтаксис действителен только в том случае, если IMUType установлено в 'accel-mag'.
[ генерирует показания акселерометра, гироскопа и магнитометра от входов ускорения и скорости вращения.accelReadings,gyroReadings,magReadings] = IMU(acc,angVel)
Этот синтаксис действителен только в том случае, если IMUType установлено в 'accel-gyro-mag'.
[ генерирует показания акселерометра, гироскопа и магнитометра от входов ускорения, скорости вращения и ориентации.accelReadings,gyroReadings,magReadings] = IMU(acc,angVel,orientation)
Этот синтаксис действителен только в том случае, если IMUType установлено в 'accel-gyro-mag'.
acc - Ускорение БИНС в локальной навигационной системе координат (м/с2)Ускорение БИНС в локальной навигационной системе координат, заданное как действительный, конечный N - на 3 в метрах в секунду за секунду. N - количество выборок в текущей системе координат.
Типы данных: single | double
angVel - Скорость вращения БИНС в локальной навигационной системе координат (рад/с)Скорость вращения БИНС в локальной навигационной системе координат, заданная как вещественная, конечная N -на-3 массив в радианах в секунду. N - количество выборок в текущей системе координат.
Типы данных: single | double
orientation - Ориентация БИНС в локальной навигационной системе координатОриентация БИНС относительно локальной навигационной системы координат, заданная как quaternion
N вектор -элемент или матрица вращения 3 на 3 N байта. Каждый quaternion или матрица вращения представляет поворот кадра от локальной навигационной системы координат к текущей системе координат тела датчика БИНС. N - количество выборок в текущей системе координат.
Типы данных: single | double | quaternion
accelReadings - Измерение акселерометра БИНС в системе координат тела датчика (м/с2)Измерение акселерометра БИНС в системе координат тела датчика, заданное как действительный, конечный массив N -на 3 в метрах в секунду в квадрате. N - количество выборок в текущей системе координат.
Типы данных: single | double
gyroReadings - Гироскоп измерения БИНС в системе координат тела датчика (рад/с)Гироскопическое измерение БИНС в системе координат тела датчика, заданное как действительная, конечная решётка N -на 3 в радианах в секунду. N - количество выборок в текущей системе координат.
Типы данных: single | double
magReadings - Магнитометрическое измерение БИНС в системе координат тела датчика (мкТ)Магнитометрическое измерение БИНС в системе координат тела датчика, заданное как действительная, конечная N -на-3 массив в микротелсе. N - количество выборок в текущей системе координат.
Типы данных: single | double
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:
release(obj)
imuSensorloadparams | Загрузите параметры датчика из файла JSON |
imuSensor по умолчанию Системный объектThe imuSensor Системная object™ позволяет вам смоделировать данные, полученные из инерционного модуля измерения, состоящей из комбинации гироскопа, акселерометра и магнитометра.
Создайте imuSensor по умолчанию объект.
IMU = imuSensor
IMU =
imuSensor with properties:
IMUType: 'accel-gyro'
SampleRate: 100
Temperature: 25
Accelerometer: [1x1 accelparams]
Gyroscope: [1x1 gyroparams]
RandomStream: 'Global stream'
The imuSensor объект, IMU, содержит идеализированный гироскоп и акселерометр. Используйте запись через точку для просмотра свойств гироскопа.
IMU.Gyroscope
ans =
gyroparams with properties:
MeasurementRange: Inf rad/s
Resolution: 0 (rad/s)/LSB
ConstantBias: [0 0 0] rad/s
AxesMisalignment: [0 0 0] %
NoiseDensity: [0 0 0] (rad/s)/√Hz
BiasInstability: [0 0 0] rad/s
RandomWalk: [0 0 0] (rad/s)*√Hz
TemperatureBias: [0 0 0] (rad/s)/°C
TemperatureScaleFactor: [0 0 0] %/°C
AccelerationBias: [0 0 0] (rad/s)/(m/s²)
Свойства датчика заданы соответствующими объектами параметра. Для примера, модель гироскопа, используемая imuSensor определяется образцом gyroparams класс. Можно изменить свойства модели гироскопа с помощью записи через точку. Установите область значений измерений гироскопа равным 4,3 рад/с.
IMU.Gyroscope.MeasurementRange = 4.3;
Можно также задать свойства датчика для предустановленных объектов параметра. Создайте accelparams объект для имитации конкретного оборудования, а затем установки БИНС Accelerometer свойство для accelparams объект. Отобразите Accelerometer свойство для проверки правильности установки свойств.
SpecSheet1 = accelparams( ... 'MeasurementRange',19.62, ... 'Resolution',0.00059875, ... 'ConstantBias',0.4905, ... 'AxesMisalignment',2, ... 'NoiseDensity',0.003924, ... 'BiasInstability',0, ... 'TemperatureBias', [0.34335 0.34335 0.5886], ... 'TemperatureScaleFactor', 0.02); IMU.Accelerometer = SpecSheet1; IMU.Accelerometer
ans =
accelparams with properties:
MeasurementRange: 19.62 m/s²
Resolution: 0.00059875 (m/s²)/LSB
ConstantBias: [0.4905 0.4905 0.4905] m/s²
AxesMisalignment: [2 2 2] %
NoiseDensity: [0.003924 0.003924 0.003924] (m/s²)/√Hz
BiasInstability: [0 0 0] m/s²
RandomWalk: [0 0 0] (m/s²)*√Hz
TemperatureBias: [0.34335 0.34335 0.5886] (m/s²)/°C
TemperatureScaleFactor: [0.02 0.02 0.02] %/°C
Используйте imuSensor Система object™ для модели приема данных от стационарного идеального БИНС, содержащего акселерометр, гироскоп и магнитометр.
Создайте идеальную модель датчика IMU, которая содержит акселерометр, гироскоп и магнитометр.
IMU = imuSensor('accel-gyro-mag')IMU =
imuSensor with properties:
IMUType: 'accel-gyro-mag'
SampleRate: 100
Temperature: 25
MagneticField: [27.5550 -2.4169 -16.0849]
Accelerometer: [1x1 accelparams]
Gyroscope: [1x1 gyroparams]
Magnetometer: [1x1 magparams]
RandomStream: 'Global stream'
Задайте основную истину, базовое движение IMU, который вы моделируете. Ускорение и скорость вращения заданы относительно локальной системы координат NED.
numSamples = 1000; acceleration = zeros(numSamples,3); angularVelocity = zeros(numSamples,3);
Функции IMU с ускорением «земля-правда» и скоростью вращения. Объект выводит показания акселерометра, показания гироскопа и показания магнитометра, как смоделировано свойствами imuSensor Системный объект. Показания акселерометра, показания гироскопа и показания магнитометра соответствуют системе координат корпуса датчика БИНС.
[accelReading,gyroReading,magReading] = IMU(acceleration,angularVelocity);
Постройте график показаний акселерометра, показаний гироскопа и показаний магнитометра.
t = (0:(numSamples-1))/IMU.SampleRate; subplot(3,1,1) plot(t,accelReading) legend('X-axis','Y-axis','Z-axis') title('Accelerometer Readings') ylabel('Acceleration (m/s^2)') subplot(3,1,2) plot(t,gyroReading) legend('X-axis','Y-axis','Z-axis') title('Gyroscope Readings') ylabel('Angular Velocity (rad/s)') subplot(3,1,3) plot(t,magReading) legend('X-axis','Y-axis','Z-axis') title('Magnetometer Readings') xlabel('Time (s)') ylabel('Magnetic Field (uT)')

Ориентация не задана, и движение «земля-правда» является стационарным, поэтому система координат тела датчика IMU и локальная система координат NED перекрываются для всей симуляции.
Показания акселерометра: Ось Z тела датчика соответствует оси Вниз. Ускорение 9,8 м/с ^ 2 по оси Z обусловлено гравитацией.
Показания гироскопа: показания гироскопа - нуль вдоль каждой оси, как ожидалось.
Показания магнитометра: Поскольку система координат тела датчика выровнена с локальной системой координат NED, показания магнитометра соответствуют MagneticField свойство imuSensor. The MagneticField свойство определяется в локальной системе координат NED.
Использование imuSensor для данных моделей, полученных из вращающегося БИНС, содержащего идеальный акселерометр и идеальный магнитометр. Использование kinematicTrajectory для определения движения « основной истины». Предохраните imuSensor моделируйте выход с помощью ecompass функция для определения ориентации с течением времени.
Задайте движение « основную истину» для платформы, которая вращается на 360 степени за четыре секунды, а затем еще на 360 степени за две секунды. Использование kinematicTrajectory для вывода ориентации, ускорения и скорости вращения в системе координат NED.
fs = 100;
firstLoopNumSamples = fs*4;
secondLoopNumSamples = fs*2;
totalNumSamples = firstLoopNumSamples + secondLoopNumSamples;
traj = kinematicTrajectory('SampleRate',fs);
accBody = zeros(totalNumSamples,3);
angVelBody = zeros(totalNumSamples,3);
angVelBody(1:firstLoopNumSamples,3) = (2*pi)/4;
angVelBody(firstLoopNumSamples+1:end,3) = (2*pi)/2;
[~,orientationNED,~,accNED,angVelNED] = traj(accBody,angVelBody);Создайте imuSensor объект с идеальным акселерометром и идеальным магнитометром. Функции IMU с ускорением «земля-правда», скоростью вращения и ориентацией на вывод показаний акселерометра и показаний магнитометра. Постройте график результатов.
IMU = imuSensor('accel-mag','SampleRate',fs); [accelReadings,magReadings] = IMU(accNED,angVelNED,orientationNED); figure(1) t = (0:(totalNumSamples-1))/fs; subplot(2,1,1) plot(t,accelReadings) legend('X-axis','Y-axis','Z-axis') ylabel('Acceleration (m/s^2)') title('Accelerometer Readings') subplot(2,1,2) plot(t,magReadings) legend('X-axis','Y-axis','Z-axis') ylabel('Magnetic Field (\muT)') xlabel('Time (s)') title('Magnetometer Readings')

Показания акселерометра указывают, что платформа не имеет никакого перевода. Показания магнитометра показывают, что платформа вращается вокруг оси Z.
Подайте показания акселерометра и магнитометра в ecompass функция для оценки ориентации с течением времени. The ecompass функция возвращает ориентацию в кватернионном формате. Преобразуйте ориентацию в углы Эйлера и постройте график результатов. График ориентации указывает, что платформа вращается только вокруг оси Z.
orientation = ecompass(accelReadings,magReadings); orientationEuler = eulerd(orientation,'ZYX','frame'); figure(2) plot(t,orientationEuler) legend('Z-axis','Y-axis','X-axis') xlabel('Time (s)') ylabel('Rotation (degrees)') title('Orientation')

Использование imuSensor для данных моделей, полученных из вращающегося БИНС, содержащего реалистичный акселерометр и реалистичный магнитометр. Использование kinematicTrajectory для определения движения « основной истины». Предохраните imuSensor моделируйте выход с помощью ecompass функция для определения ориентации с течением времени.
Задайте движение « основную истину» для платформы, которая вращается на 360 степени за четыре секунды, а затем еще на 360 степени за две секунды. Использование kinematicTrajectory для вывода ориентации, ускорения и скорости вращения в системе координат NED.
fs = 100;
firstLoopNumSamples = fs*4;
secondLoopNumSamples = fs*2;
totalNumSamples = firstLoopNumSamples + secondLoopNumSamples;
traj = kinematicTrajectory('SampleRate',fs);
accBody = zeros(totalNumSamples,3);
angVelBody = zeros(totalNumSamples,3);
angVelBody(1:firstLoopNumSamples,3) = (2*pi)/4;
angVelBody(firstLoopNumSamples+1:end,3) = (2*pi)/2;
[~,orientationNED,~,accNED,angVelNED] = traj(accBody,angVelBody);Создайте imuSensor объект с реалистичным акселерометром и реалистичным магнитометром. Функции IMU с ускорением «земля-правда», скоростью вращения и ориентацией на вывод показаний акселерометра и показаний магнитометра. Постройте график результатов.
IMU = imuSensor('accel-mag','SampleRate',fs); IMU.Accelerometer = accelparams( ... 'MeasurementRange',19.62, ... % m/s^2 'Resolution',0.0023936, ... % m/s^2 / LSB 'TemperatureScaleFactor',0.008, ... % % / degree C 'ConstantBias',0.1962, ... % m/s^2 'TemperatureBias',0.0014715, ... % m/s^2 / degree C 'NoiseDensity',0.0012361); % m/s^2 / Hz^(1/2) IMU.Magnetometer = magparams( ... 'MeasurementRange',1200, ... % uT 'Resolution',0.1, ... % uT / LSB 'TemperatureScaleFactor',0.1, ... % % / degree C 'ConstantBias',1, ... % uT 'TemperatureBias',[0.8 0.8 2.4], ... % uT / degree C 'NoiseDensity',[0.6 0.6 0.9]/sqrt(100)); % uT / Hz^(1/2) [accelReadings,magReadings] = IMU(accNED,angVelNED,orientationNED); figure(1) t = (0:(totalNumSamples-1))/fs; subplot(2,1,1) plot(t,accelReadings) legend('X-axis','Y-axis','Z-axis') ylabel('Acceleration (m/s^2)') title('Accelerometer Readings') subplot(2,1,2) plot(t,magReadings) legend('X-axis','Y-axis','Z-axis') ylabel('Magnetic Field (\muT)') xlabel('Time (s)') title('Magnetometer Readings')

Показания акселерометра указывают, что платформа не имеет никакого перевода. Показания магнитометра показывают, что платформа вращается вокруг оси Z.
Подайте показания акселерометра и магнитометра в ecompass функция для оценки ориентации с течением времени. The ecompass функция возвращает ориентацию в кватернионном формате. Преобразуйте ориентацию в углы Эйлера и постройте график результатов. График ориентации указывает, что платформа вращается только вокруг оси Z.
orientation = ecompass(accelReadings,magReadings); orientationEuler = eulerd(orientation,'ZYX','frame'); figure(2) plot(t,orientationEuler) legend('Z-axis','Y-axis','X-axis') xlabel('Time (s)') ylabel('Rotation (degrees)') title('Orientation')

%Моделируйте наклоняющийся БИНС, который содержит акселерометр и гироскоп, используя imuSensor Системные object™. Используйте идеальные и реалистичные модели, чтобы сравнить результаты отслеживания ориентации с помощью imufilter Системный объект.
Загрузите struct, описывающую основную истину движение и частоту дискретизации. Структура движения t описывает последовательные повороты:
рыскание: 120 степени за две секунды
тангаж: 60 степени более одной секунды
крен: 30 степени за полсекунды
крен: -30 степени за полсекунды
тангаж: -60 степени в течение одной секунды
рыскание: -120 степени за две секунды
На последнем этапе struct движения объединяет 1-е, 2-е и 3-е повороты в вращение с одной осью. Ускорение, скорость вращения и ориентация заданы в локальной системе координат NED.
load y120p60r30.mat motion fs accNED = motion.Acceleration; angVelNED = motion.AngularVelocity; orientationNED = motion.Orientation; numSamples = size(motion.Orientation,1); t = (0:(numSamples-1)).'/fs;
Создайте идеальный объект датчика IMU и объект фильтра IMU по умолчанию.
IMU = imuSensor('accel-gyro','SampleRate',fs); aFilter = imufilter('SampleRate',fs);
В цикле:
Симулируйте выход БИНС путем подачи движения основная истина к объекту датчика БИНС.
Фильтрация выхода БИНС с помощью объекта фильтра БИНС по умолчанию.
orientation = zeros(numSamples,1,'quaternion'); for i = 1:numSamples [accelBody,gyroBody] = IMU(accNED(i,:),angVelNED(i,:),orientationNED(i,:)); orientation(i) = aFilter(accelBody,gyroBody); end release(aFilter)
Постройте график ориентации с течением времени.
figure(1) plot(t,eulerd(orientation,'ZYX','frame')) xlabel('Time (s)') ylabel('Rotation (degrees)') title('Orientation Estimation -- Ideal IMU Data, Default IMU Filter') legend('Z-axis','Y-axis','X-axis')

Измените свойства своего imuSensor для моделирования реальных датчиков. Еще раз запустите цикл и постройте график оценки ориентации с течением времени.
IMU.Accelerometer = accelparams( ... 'MeasurementRange',19.62, ... 'Resolution',0.00059875, ... 'ConstantBias',0.4905, ... 'AxesMisalignment',2, ... 'NoiseDensity',0.003924, ... 'BiasInstability',0, ... 'TemperatureBias', [0.34335 0.34335 0.5886], ... 'TemperatureScaleFactor',0.02); IMU.Gyroscope = gyroparams( ... 'MeasurementRange',4.3633, ... 'Resolution',0.00013323, ... 'AxesMisalignment',2, ... 'NoiseDensity',8.7266e-05, ... 'TemperatureBias',0.34907, ... 'TemperatureScaleFactor',0.02, ... 'AccelerationBias',0.00017809, ... 'ConstantBias',[0.3491,0.5,0]); orientationDefault = zeros(numSamples,1,'quaternion'); for i = 1:numSamples [accelBody,gyroBody] = IMU(accNED(i,:),angVelNED(i,:),orientationNED(i,:)); orientationDefault(i) = aFilter(accelBody,gyroBody); end release(aFilter) figure(2) plot(t,eulerd(orientationDefault,'ZYX','frame')) xlabel('Time (s)') ylabel('Rotation (degrees)') title('Orientation Estimation -- Realistic IMU Data, Default IMU Filter') legend('Z-axis','Y-axis','X-axis')

Способность imufilter отслеживать достоверные данные значительно уменьшается при моделировании реалистичного БИНС. Чтобы улучшить эффективность, измените свойства своего imufilter объект. Эти значения определяли эмпирически. Еще раз запустите цикл и постройте график оценки ориентации с течением времени.
aFilter.GyroscopeNoise = 7.6154e-7; aFilter.AccelerometerNoise = 0.0015398; aFilter.GyroscopeDriftNoise = 3.0462e-12; aFilter.LinearAccelerationNoise = 0.00096236; aFilter.InitialProcessNoise = aFilter.InitialProcessNoise*10; orientationNondefault = zeros(numSamples,1,'quaternion'); for i = 1:numSamples [accelBody,gyroBody] = IMU(accNED(i,:),angVelNED(i,:),orientationNED(i,:)); orientationNondefault(i) = aFilter(accelBody,gyroBody); end release(aFilter) figure(3) plot(t,eulerd(orientationNondefault,'ZYX','frame')) xlabel('Time (s)') ylabel('Rotation (degrees)') title('Orientation Estimation -- Realistic IMU Data, Nondefault IMU Filter') legend('Z-axis','Y-axis','X-axis')

Количественная оценка улучшенных производительностей измененных imufilter, постройте график кватернионного расстояния между движением основная истина и ориентацией как возвращено imufilter со свойствами по умолчанию и nondefault.
qDistDefault = rad2deg(dist(orientationNED,orientationDefault)); qDistNondefault = rad2deg(dist(orientationNED,orientationNondefault)); figure(4) plot(t,[qDistDefault,qDistNondefault]) title('Quaternion Distance from True Orientation') legend('Realistic IMU Data, Default IMU Filter', ... 'Realistic IMU Data, Nondefault IMU Filter') xlabel('Time (s)') ylabel('Quaternion Distance (degrees)')

Модель акселерометра использует ориентацию и входы ускорения основная истина и imuSensor и accelparams (Sensor Fusion and Tracking Toolbox) свойства для моделирования показаний акселерометра.

Чтобы получить полное ускорение (totalAcc), ускорение предварительно обрабатывается путем отрицания и добавления вектора постоянной силы тяжести (g = [0; 0; 9,8] м/с2) как:
Затем полное ускорение преобразуется из локальной навигационной системы координат в систему координат датчика с помощью:
Если ориентация введена в кватернионной форме, она преобразуется в матрицу вращения перед обработкой.
Ускорение основной истины в системе координат датчика, a, проходит через объемную модель, которая добавляет расхождения осей и смещения:
где ConstantBias (Sensor Fusion and Tracking Toolbox) является свойством accelparams (Sensor Fusion and Tracking Toolbox), и α 1, α 2 и α 3 заданы первым, вторым и третьим элементами свойства AxesMisalignment (Sensor Fusion and Tracking Toolbox) accelparams (Sensor Fusion and Tracking Toolbox).
Дрейф нестабильности смещения моделируется как смещенный белый шум и затем фильтруется:
где BiasInstability (Sensor Fusion and Tracking Toolbox) является свойством accelparams (Sensor Fusion and Tracking Toolbox), и h 1 является фильтром, заданным свойством SampleRate (Sensor Fusion and Tracking Toolbox):
Дрейф белого шума моделируется умножением элементов случайного потока белого шума на стандартное отклонение:
где SampleRate (Sensor Fusion and Tracking Toolbox) является imuSensor свойство, и NoiseDensity (Sensor Fusion and Tracking Toolbox) является accelparams (Sensor Fusion and Tracking Toolbox) свойство. Элементами w являются случайные числа, заданные настройками imuSensor случайный поток.
Случайный дрейф ходьбы моделируется элементами смещения случайного потока белого шума и затем фильтрацией:
где RandomWalk (Sensor Fusion and Tracking Toolbox) является свойством accelparams (Sensor Fusion and Tracking Toolbox), SampleRate (Sensor Fusion and Tracking Toolbox) является свойством imuSensor, и h 2 является фильтром, заданным как:
Шум дрейфа среды моделируется путем умножения различия температур от стандарта с температурным смещением:
где Temperature (Sensor Fusion and Tracking Toolbox) является свойством imuSensor, и TemperatureBias (Sensor Fusion and Tracking Toolbox) является свойством accelparams (Sensor Fusion and Tracking Toolbox). Константа 25 соответствует стандартной температуре.
Ошибка коэффициента шкалы температуры моделируется как:
где Temperature (Sensor Fusion and Tracking Toolbox) является свойством imuSensor, и TemperatureScaleFactor (Sensor Fusion and Tracking Toolbox) является свойством accelparams (Sensor Fusion and Tracking Toolbox). Константа 25 соответствует стандартной температуре.
Квантование моделируется путем первого насыщения модели непрерывного сигнала:
а затем установка разрешения:
где MeasurementRange (Sensor Fusion and Tracking Toolbox) является свойством accelparams (Sensor Fusion and Tracking Toolbox).
Модель гироскопа использует ориентацию основной истины, ускорение и скорость вращения входов и imuSensor и gyroparams (Sensor Fusion and Tracking Toolbox) свойства для моделирования показаний акселерометра.

Основная истина скорости вращения преобразуется из локальной системы координат в систему координат датчика с помощью ориентации основной истины:
Если ориентация введена в кватернионной форме, она преобразуется в матрицу вращения перед обработкой.
Основная истина скорости вращения в системе координат датчика, a, проходит через объемную модель, которая добавляет расхождения осей и смещения:
где ConstantBias (Sensor Fusion and Tracking Toolbox) является свойством gyroparams (Sensor Fusion and Tracking Toolbox), и α 1, α 2 и α 3 заданы первым, вторым и третьим элементами свойства AxesMisalignment (Sensor Fusion and Tracking Toolbox) gyroparams (Sensor Fusion and Tracking Toolbox).
Дрейф нестабильности смещения моделируется как смещенный белый шум и затем фильтруется:
где BiasInstability (Sensor Fusion and Tracking Toolbox) является свойством gyroparams (Sensor Fusion and Tracking Toolbox) и h 1 является фильтром, заданным свойством SampleRate (Sensor Fusion and Tracking Toolbox):
Дрейф белого шума моделируется умножением элементов случайного потока белого шума на стандартное отклонение:
где SampleRate (Sensor Fusion and Tracking Toolbox) является imuSensor свойство, и NoiseDensity (Sensor Fusion and Tracking Toolbox) является gyroparams (Sensor Fusion and Tracking Toolbox) свойство. Элементами w являются случайные числа, заданные настройками imuSensor случайный поток.
Случайный дрейф ходьбы моделируется элементами смещения случайного потока белого шума и затем фильтрацией:
где RandomWalk (Sensor Fusion and Tracking Toolbox) является свойством gyroparams (Sensor Fusion and Tracking Toolbox), SampleRate (Sensor Fusion and Tracking Toolbox) является свойством imuSensor, и h 2 является фильтром, заданным как:
Шум дрейфа среды моделируется путем умножения различия температур от стандарта с температурным смещением:
где Temperature (Sensor Fusion and Tracking Toolbox) является свойством imuSensor, и TemperatureBias (Sensor Fusion and Tracking Toolbox) является свойством gyroparams (Sensor Fusion and Tracking Toolbox). Константа 25 соответствует стандартной температуре.
Ошибка коэффициента шкалы температуры моделируется как:
где Temperature (Sensor Fusion and Tracking Toolbox) является свойством imuSensor, и TemperatureScaleFactor (Sensor Fusion and Tracking Toolbox) является свойством gyroparams (Sensor Fusion and Tracking Toolbox). Константа 25 соответствует стандартной температуре.
Квантование моделируется путем первого насыщения модели непрерывного сигнала:
а затем установка разрешения:
где MeasurementRange (Sensor Fusion and Tracking Toolbox) является свойством gyroparams (Sensor Fusion and Tracking Toolbox).
Модель магнитометра использует ориентацию и входы ускорения основная истина, и imuSensor и magparams (Sensor Fusion and Tracking Toolbox) свойства для моделирования показаний магнитометра.

Ускорение основной истины преобразуется из локальной системы координат в систему координат датчика с помощью ориентации основной истины:
Если ориентация введена в кватернионной форме, она преобразуется в матрицу вращения перед обработкой.
Ускорение основной истины в системе координат датчика, a, проходит через объемную модель, которая добавляет расхождения осей и смещения:
где ConstantBias (Sensor Fusion and Tracking Toolbox) является свойством magparams (Sensor Fusion and Tracking Toolbox), и α 1, α 2 и α 3 заданы первым, вторым и третьим элементами свойства AxesMisalignment (Sensor Fusion and Tracking Toolbox) magparams (Sensor Fusion and Tracking Toolbox).
Дрейф нестабильности смещения моделируется как смещенный белый шум и затем фильтруется:
где BiasInstability (Sensor Fusion and Tracking Toolbox) является свойством magparams (Sensor Fusion and Tracking Toolbox) и h 1 является фильтром, заданным свойством SampleRate (Sensor Fusion and Tracking Toolbox):
Дрейф белого шума моделируется умножением элементов случайного потока белого шума на стандартное отклонение:
где SampleRate (Sensor Fusion and Tracking Toolbox) является imuSensor свойство, и NoiseDensity (Sensor Fusion and Tracking Toolbox) является magparams (Sensor Fusion and Tracking Toolbox) свойство. Элементами w являются случайные числа, заданные настройками imuSensor случайный поток.
Случайный дрейф ходьбы моделируется элементами смещения случайного потока белого шума и затем фильтрацией:
где RandomWalk (Sensor Fusion and Tracking Toolbox) является свойством magparams (Sensor Fusion and Tracking Toolbox), SampleRate (Sensor Fusion and Tracking Toolbox) является свойством imuSensor, и h 2 является фильтром, заданным как:
Шум дрейфа среды моделируется путем умножения различия температур от стандарта с температурным смещением:
где Temperature (Sensor Fusion and Tracking Toolbox) является свойством imuSensor, и TemperatureBias (Sensor Fusion and Tracking Toolbox) является свойством magparams (Sensor Fusion and Tracking Toolbox). Константа 25 соответствует стандартной температуре.
Ошибка коэффициента шкалы температуры моделируется как:
где Temperature (Sensor Fusion and Tracking Toolbox) является свойством imuSensor, и TemperatureScaleFactor (Sensor Fusion and Tracking Toolbox) является свойством magparams (Sensor Fusion and Tracking Toolbox). Константа 25 соответствует стандартной температуре.
Квантование моделируется путем первого насыщения модели непрерывного сигнала:
а затем установка разрешения:
где MeasurementRange (Sensor Fusion and Tracking Toolbox) является свойством magparams (Sensor Fusion and Tracking Toolbox).
Указания и ограничения по применению:
Смотрите Системные объекты в Генерации кода MATLAB (MATLAB Coder).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.