Имитационная модель БИНС
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)
imuSensor
loadparams | Загрузите параметры датчика из файла 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
свойства для моделирования показаний акселерометра.
Чтобы получить полное ускорение (totalAcc), ускорение предварительно обрабатывается путем отрицания и добавления вектора постоянной силы тяжести (g = [0; 0; 9,8] м/с2) как:
Затем полное ускорение преобразуется из локальной навигационной системы координат в систему координат датчика с помощью:
Если ориентация введена в кватернионной форме, она преобразуется в матрицу вращения перед обработкой.
Ускорение основной истины в системе координат датчика, 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.