Имитационная модель IMU
Система imuSensor object™ модели, получающие данные из инерционного модуля измерения (IMU).
Смоделировать IMU:
Создайте объект imuSensor и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
IMU = imuSensorIMU = imuSensor('accel-gyro')IMU = imuSensor('accel-mag')IMU = imuSensor('accel-gyro-mag')IMU = imuSensor(___,Name,Value) возвращает Системный объект, 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(___, наборы каждое свойство Name,Value)Name к заданному Value. Незаданные свойства имеют значения по умолчанию. Этот синтаксис может использоваться в сочетании с любым из предыдущих входных параметров.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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 — Температура IMU (oC)25 (значение по умолчанию) | действительный скалярРабочая температура IMU, в градусах Цельсия, заданного как действительный скаляр.
Настраиваемый: да
Типы данных: single | double
MagneticField — Вектор магнитного поля в локальной системе координат NED (μT)[27.5550 -2.4169 -16.0849] (значение по умолчанию) | действительный скалярВектор магнитного поля в микротесла, заданном как трехэлементный вектор - строка в локальной системе координат NED.
Магнитное поле по умолчанию соответствует магнитному полю в нуле широты, нуле долготы и высотном нуле.
Настраиваемый: да
Типы данных: 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)[accelReadings,gyroReadings] = IMU(acc,angVel,orientation)[accelReadings,magReadings] = IMU(acc,angVel)[accelReadings,magReadings] = IMU(acc,angVel,orientation)[accelReadings,gyroReadings,magReadings] = IMU(acc,angVel)[accelReadings,gyroReadings,magReadings] = IMU(acc,angVel,orientation)[ генерирует акселерометр и показания гироскопа от ускорения и угловых скоростных входных параметров.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 — Ускорение IMU в локальной системе координат NED (m/s2)Ускорение IMU в локальной системе координат NED, заданной как действительный, конечный N-by-3 массив в метрах в секунду, придало квадратную форму. N является количеством выборок в текущем кадре.
Типы данных: single | double
angVel — Угловая скорость IMU в локальной системе координат NED (rad/s)Угловая скорость IMU в локальной системе координат NED, заданной как действительный, конечный N-by-3 массив в радианах в секунду. N является количеством выборок в текущем кадре.
Типы данных: single | double
orientation — Ориентация IMU в локальной системе координат NEDОриентация IMU относительно локальной системы координат NED, заданной как
N quaternion - вектор-столбец элемента или 3 3 N матрицей вращения. Каждая матрица quaternion или вращения представляет вращение кадра от локальной системы координат NED до текущей системы координат корпуса датчика IMU. N является количеством выборок в текущем кадре.
Типы данных: single | double | quaternion
accelReadings — Измерение акселерометра IMU в системе координат корпуса датчика (m/s2)Измерение акселератора IMU в системе координат корпуса датчика, заданной как действительный, конечный N-by-3 массив в метрах в секунду, придало квадратную форму. N является количеством выборок в текущем кадре.
Типы данных: single | double
gyroReadings — Измерение гироскопа IMU в системе координат корпуса датчика (rad/s)Измерение гироскопа IMU в системе координат корпуса датчика, заданной как действительный, конечный N-by-3 массив в радианах в секунду. N является количеством выборок в текущем кадре.
Типы данных: single | double
magReadings — Измерение магнитометра IMU в системе координат корпуса датчика (μT)Измерение магнитометра IMU в системе координат корпуса датчика, заданной как действительный, конечный N-by-3 массив в microtelsa. N является количеством выборок в текущем кадре.
Типы данных: single | double
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:
release(obj)
imuSensorСистема 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'
Объект 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 подражать определенному оборудованию, и затем установить свойство IMU 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, которая содержит акселерометр, гироскоп и магнитометр.
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. Показания акселерометра, показания гироскопа и показания магнитометра относительно системы координат корпуса датчика IMU.
[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 ускорений m/s^2 вдоль оси z происходят из-за силы тяжести.
Показания гироскопа: показания гироскопа являются нулем вдоль каждой оси, как ожидалось.
Показания магнитометра: Поскольку система координат корпуса датчика выравнивается с локальной системой координат NED, показания магнитометра соответствуют свойству MagneticField imuSensor. Свойство MagneticField задано в локальной системе координат NED.
Используйте imuSensor для данных модели, полученных из вращения IMU, содержащий идеальный акселерометр и идеальный магнитометр. Используйте 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, чтобы оценивать ориентацию в зависимости от времени. Функция 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 для данных модели, полученных из вращения IMU, содержащий реалистический акселерометр и реалистический магнитометр. Используйте 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, чтобы оценивать ориентацию в зависимости от времени. Функция 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') %

Смоделируйте наклон IMU, который содержит акселерометр и гироскоп с помощью Системы imuSensor object™. Используйте идеальные и реалистические модели, чтобы сравнить результаты отслеживания ориентации с помощью Системного объекта imufilter.
Загрузите struct, описывающий движение наземной истины и частоту дискретизации. Struct движения описывает последовательные вращения:
отклонение от курса: 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);
В цикле:
Моделируйте IMU вывод путем питания движения наземной истины объект датчика IMU.
Отфильтруйте IMU вывод с помощью объекта фильтра IMU по умолчанию.
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 отследить данные наземной истины значительно уменьшается при моделировании реалистического IMU. Чтобы улучшать производительность, измените свойства своего объекта 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 со свойствами не по умолчанию и по умолчанию.
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 смоделировать показания акселерометра.

Ускорение наземной истины преобразовано от локального кадра до кадра датчика с помощью ориентации наземной истины:
Если ориентация вводится в форме кватерниона, она преобразована в матрицу вращения перед обработкой.
Ускорение наземной истины в кадре датчика, a, проходит через объемную модель, которая добавляет неточное совмещение осей и смещение:
где ConstantBias является свойством accelparams и α 1, α 2, и α 3 дан первыми, вторыми, и третьими элементами свойства AxesMisalignment accelparams.
Дрейф нестабильности смещения моделируется как белый смещенный шум и затем отфильтрованный:
где BiasInstability является свойством accelparams, и h 1 является фильтром, заданным свойством SampleRate:
Белый шумовой дрейф моделируется путем умножения элементов белого шумового случайного потока стандартным отклонением:
где SampleRate является свойством imuSensor, и NoiseDensity является свойством accelparams. Элементы w являются случайными числами, данными настройками imuSensor случайный поток.
Случайный дрейф обхода моделируется путем смещения элементов белого шумового случайного потока и затем фильтрации:
где RandomWalk является свойством accelparams, SampleRate является свойством imuSensor, и h 2 является фильтром, заданным как:
Экологический шум дрейфа моделируется путем умножения перепада температур от стандарта с температурным смещением:
где Температура является свойством imuSensor, и TemperatureBias является свойством accelparams. Постоянные 25 соответствуют стандартной температуре.
Температурная ошибка масштабного коэффициента моделируется как:
где Температура является свойством imuSensor, и TemperatureScaleFactor является свойством accelparams. Постоянные 25 соответствуют стандартной температуре.
Квантование моделируется первым насыщением непрерывной модели сигнала:
и затем установка разрешения:
где MeasurementRange является свойством accelparams.
Модель гироскопа использует ориентацию наземной истины, ускорение, и угловые скоростные входные параметры и свойства imuSensor и gyroparams смоделировать показания акселерометра.

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

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