Изложите оценку с неголономными ограничениями
Объект NHConstrainedIMUGPSFuser
реализует сплав датчика инерционного модуля измерения (IMU) и данных о GPS, чтобы оценить положение в ссылочном кадре NED. Данные IMU выведены от данных об акселерометре и гироскопа. Фильтр использует вектор состояния с 16 элементами, чтобы отследить кватернион ориентации, скорость, положение и смещения датчика IMU. Объект NHConstrainedIMUGPSFuser
использует расширенный Фильтр Калмана, чтобы оценить эти количества.
Создайте NHConstrainedIMUGPSFuser
с неголономными ограничениями с помощью insfilter
:
filt = insfilter('NonholonomicHeading', true, 'Magnetometer', false);
IMUSampleRate
— Частота дискретизации IMU (Гц)100
(значение по умолчанию) | положительная скалярная величинаЧастота дискретизации IMU в Гц, заданном как положительная скалярная величина.
Типы данных: single | double
ReferenceLocation
— Ссылочное местоположение (градус, градус, метры)[0 0 0]
(значение по умолчанию) | положительный вектор - строка с 3 элементамиСсылочное местоположение, заданное как вектор - строка с 3 элементами в геодезических координатах (широта, долгота и высота). Высота является высотой выше ссылочной модели эллипсоида, WGS84. Ссылочные модули местоположения являются [метрами степеней степеней].
Типы данных: single | double
DecimationFactor
— Фактор десятикратного уменьшения для кинематического ограничительного исправления2
(значение по умолчанию) | положительный целочисленный скалярФактор десятикратного уменьшения для кинематического ограничительного исправления, заданного как положительный целочисленный скаляр.
Типы данных: single | double
GyroscopeNoise
— Мультипликативное отклонение шума процесса от гироскопа (rad/s) 2[4.8e-6 4.8e-6 4.8e-6]
(значение по умолчанию) | скаляр | вектор - строка с 3 элементамиМультипликативное отклонение шума процесса от гироскопа в (rad/s) 2, заданный как скалярный или вектор - строка с 3 элементами из положительных действительных конечных чисел.
Если GyroscopeNoise
задан как вектор - строка, элементы соответствуют шуму в x, y и осях z гироскопа, соответственно.
Если GyroscopeNoise
задан как скаляр, один элемент применяется к x, y и осям z гироскопа.
Типы данных: single | double
GyroscopeBiasNoise
— Мультипликативное отклонение шума процесса от смещения гироскопа (rad/s) 2[4e-14 4e-14 4e-14]
(значение по умолчанию) | скаляр | вектор - строка с 3 элементамиМультипликативное отклонение шума процесса от гироскопа смещает в (rad/s) 2, заданный как скалярный или вектор - строка с 3 элементами из положительных действительных конечных чисел. Смещение гироскопа моделируется, когда lowpass отфильтровал белый шумовой процесс.
Если GyroscopeBiasNoise
задан как вектор - строка, элементы соответствуют шуму в x, y и осях z гироскопа, соответственно.
Если GyroscopeBiasNoise
задан как скаляр, один элемент применяется к x, y и осям z гироскопа.
Типы данных: single | double
GyroscopeBiasDecayFactor
— Затухните фактор для смещения гироскопа0.999
(значение по умолчанию) | скаляр в области значений [0,1]Фактор затухания для смещения гироскопа, заданного как скаляр в области значений [0,1]. Фактор затухания гироскопа моделей 0
смещает как белый шумовой процесс. Фактор затухания моделей 1
смещение гироскопа как случайный процесс обхода.
Типы данных: single | double
AccelerometerNoise
— Мультипликативное отклонение шума процесса от акселерометра (m/s2) 2[4.8e-2 4.8e-2 4.8e-2]
(значение по умолчанию) | скаляр | вектор - строка с 3 элементамиМультипликативное отклонение шума процесса от акселерометра в (m/s2) 2, заданный как скалярный или вектор - строка с 3 элементами из положительных действительных конечных чисел.
Если AccelerometerNoise
задан как вектор - строка, элементы соответствуют шуму в x, y и осях z акселерометра, соответственно.
Если AccelerometerNoise
задан как скаляр, один элемент применяется к каждой оси.
Типы данных: single | double
AccelerometerBiasNoise
— Мультипликативное отклонение шума процесса от смещения акселерометра (m/s2) 2[4e-14 4e-14 4e-14]
(значение по умолчанию) | положительная скалярная величина | вектор - строка с 3 элементамиМультипликативное отклонение шума процесса от акселерометра смещает в (m/s2) 2, заданный как скалярный или вектор - строка с 3 элементами из положительных вещественных чисел. Смещение акселерометра моделируется, когда lowpass отфильтровал белый шумовой процесс.
Если AccelerometerBiasNoise
задан как вектор - строка, элементы соответствуют шуму в x, y и осях z акселерометра, соответственно.
Если AccelerometerBiasNoise
задан как скаляр, один элемент применяется к каждой оси.
AccelerometerBiasDecayFactor
— Затухните фактор для смещения акселерометра0.9999
(значение по умолчанию) | скаляр в области значений [0,1]Фактор затухания для смещения акселерометра, заданного как скаляр в области значений [0,1]. Фактор затухания акселерометра моделей 0
смещает как белый шумовой процесс. Фактор затухания моделей 1
смещение акселерометра как случайный процесс обхода.
Типы данных: single | double
State
— Вектор состояния расширенного Фильтра Калмана[1;zeros(15,1)]
| вектор-столбец с 16 элементамиВектор состояния расширенного Фильтра Калмана. Значения состояния представляют:
Состояние | Модули | Индекс |
---|---|---|
Ориентация (части кватерниона) | Нет данных | 1:4 |
Смещение гироскопа (XYZ) | rad/s | 5:7 |
Положение (NED) | m | 8:10 |
Скорость (NED) | m/s | 11:13 |
Смещение акселерометра (XYZ) | m/s2 | 14:16 |
Типы данных: single | double
StateCovariance
— Ошибочная ковариация состояния для расширенного Фильтра Калманаeye(16)
(значение по умолчанию) | 16 16 матрицаОшибочная ковариация состояния для расширенного Фильтра Калмана, заданного как 16 16 матрицами элемента или вещественные числа.
Типы данных: single | double
ZeroVelocityConstraintNoise
— Скоростной ограничительный шум (m/s) 21e-2
(значение по умолчанию) | неотрицательный скалярСкоростной ограничительный шум в (m/s) 2, заданный как неотрицательный скаляр.
Типы данных: single | double
correct | Правильные состояния с помощью прямых измерений состояния |
fusegps | Правильные состояния с помощью данных о GPS |
pose | Текущая ориентация и оценка положения |
predict | Обновите состояния с помощью данных о гироскопе и акселерометра |
reset | Сбросьте внутренние состояния |
stateinfo | Отобразите информацию о векторе состояния |
Этот пример показывает, как оценить положение наземного транспортного средства от регистрируемого IMU и измерений датчика GPS и наземной ориентации истины и положения.
Загрузите записанные данные наземного транспортного средства после круговой траектории.
load('loggedGroundVehicleCircle.mat','imuFs','localOrigin','initialState','initialStateCovariance','accelData',... 'gyroData','gpsFs','gpsLLA','Rpos','gpsVel','Rvel','trueOrient','truePos');
Инициализируйте объект фильтра NHConstrainedIMUGPSFuser
.
filt = insfilter('NonholonomicHeading',true,'Magnetometer',false); filt.IMUSampleRate = imuFs; filt.ReferenceLocation = localOrigin; filt.State = initialState; filt.StateCovariance = initialStateCovariance; imuSamplesPerGPS = imuFs/gpsFs;
Данные логов для итогового метрического вычисления. Используйте функцию объекта predict
, чтобы оценить состояние фильтра на основе данных о гироскопе и акселерометра. Затем исправьте состояние фильтра согласно данным о GPS.
numIMUSamples = size(accelData,1); estOrient = quaternion.ones(numIMUSamples,1); estPos = zeros(numIMUSamples,3); gpsIdx = 1; for idx = 1:numIMUSamples predict(filt,accelData(idx,:),gyroData(idx,:)); %Predict filter state if (mod(idx,imuSamplesPerGPS) == 0) %Correct filter state fusegps(filt,gpsLLA(gpsIdx,:),Rpos,gpsVel(gpsIdx,:),Rvel); gpsIdx = gpsIdx + 1; end [estPos(idx,:),estOrient(idx,:)] = pose(filt); %Log estimated pose end
Вычислите и отобразите ошибки RMS.
posd = estPos - truePos;
quatd = rad2deg(dist(estOrient,trueOrient));
msep = sqrt(mean(posd.^2));
fprintf('Position RMS Error\n\tX: %.2f, Y: %.2f, Z: %.2f (meters)\n\n',msep(1),msep(2),msep(3));
Position RMS Error X: 0.15, Y: 0.11, Z: 0.01 (meters)
fprintf('Quaternion Distance RMS Error\n\t%.2f (degrees)\n\n',sqrt(mean(quatd.^2)));
Quaternion Distance RMS Error 0.26 (degrees)
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.