Функция Sensor Fusion and Tracking Toolbox™ позволяет сплавлять данные, считываемые из IMU и GPS, для оценки позы. Используйте insfilter для создания комбинированного фильтра INS/GPS, подходящего для вашей системы:
MARGGPSFuser - Оцените позу, используя магнитометр, гироскоп, акселерометр и данные GPS.
NHConstrainedIMUGPSFuser - Оцените позу с помощью гироскопа, акселерометра и данных GPS. Этот алгоритм использует неголономные ограничения.
В этом учебном пособии представлен обзор инерционного слияния датчиков с GPS в Sensor Fusion и Tracking Toolbox.

Сведения о моделировании инерционных датчиков и GPS см. в разделе Модель IMU, GPS и INS/GPS. Чтобы узнать, как создать движение «земля-истина», которое управляет моделями датчиков, см. раздел waypointTrajectory и kinematicTrajectory.
Также можно сплавить данные инерциального датчика без GPS для оценки ориентации. См. раздел Определение ориентации с помощью инерционных датчиков.
Инерциальная навигационная система (ИНС) состоит из датчиков, которые обнаруживают поступательное движение (акселерометры), вращение (гироскопы), а в некоторых системах магнитные поля (магнитометры). Благодаря непрерывному сплавлению данных датчиков ИНС может полностью учитывать позу платформы без внешних датчиков. Однако оценка позы INS обычно уменьшается с течением времени и должна быть скорректирована с использованием внешней ссылки, такой как показания GPS. Общие конфигурации для слияния INS/GPS включают MARG + GPS для летательных аппаратов и акселерометр + гироскоп + GPS с неголономными ограничениями для наземных транспортных средств.
Магнитная, угловая и гравитационная система (MARG) состоит из магнитометра, гироскопа и акселерометра. Для слияния данных MARG и GPS создайте insfilterMARG объект:
FUSE = insfilterMARG
FUSE =
insfilterMARG with properties:
IMUSampleRate: 100 Hz
ReferenceLocation: [0 0 0] [deg deg m]
State: [22x1 double]
StateCovariance: [22x22 double]
Multiplicative Process Noise Variances
GyroscopeNoise: [1e-09 1e-09 1e-09] (rad/s)²
AccelerometerNoise: [0.0001 0.0001 0.0001] (m/s²)²
GyroscopeBiasNoise: [1e-10 1e-10 1e-10] (rad/s)²
AccelerometerBiasNoise: [0.0001 0.0001 0.0001] (m/s²)²
Additive Process Noise Variances
GeomagneticVectorNoise: [1e-06 1e-06 1e-06] uT²
MagnetometerBiasNoise: [0.1 0.1 0.1] uT²insfilterMARG использует расширенный фильтр Калмана со следующими методами:
predict - Обновление состояний с использованием данных акселерометра и гироскопа
fusemag - Правильные состояния с использованием данных магнитометра
fusegps - Правильные состояния с использованием данных GPS
Обычно данные акселерометра и гироскопа получают с более высокой скоростью, чем данные магнитометра и GPS. Для вызова можно использовать вложенные циклы predict, fusemag, и fusegps по разным ставкам.
accelData = [0 0 9.8]; gyroData = [0 0 0]; magData = [19.535 -5.109 47.930]; magCov = 0; position = [0 0 0]; positionCov = 0; velocity = rand(1,3); velocityCov = 0; predictDataSampleRate = 100; fuseDataSampleRate = 2; predictSamplesPerFuse = predictDataSampleRate/fuseDataSampleRate; duration = 5; for i = 1:duration*fuseDataSampleRate for j = 1:predictSamplesPerFuse predict(FUSE,accelData,gyroData); end fusegps(FUSE,position,positionCov,velocity,velocityCov); fusemag(FUSE,magData,magCov); end
В любое время можно позвонить pose для возврата текущей оценки положения и ориентации:
[position, orientation] = pose(FUSE)
position = 1×3
10-15 ×
-0.3331 -0.2775 0.3886
orientation = quaternion
0.84705 - 0.25459i - 0.46613j - 0.020379kДля полного примера рабочего процесса с использованием MARGGPSFuser, см. IMU и GPS Fusion для инерциальной навигации.
Комбинированный акселерометр, гироскоп и данные GPS с неголономными ограничениями являются общей конфигурацией для оценки позы наземного транспортного средства. Чтобы сплавить акселерометр, гироскоп и данные GPS, создайте insfilterNonholonomic объект:
FUSE = insfilterNonholonomic
FUSE =
insfilterNonholonomic with properties:
IMUSampleRate: 100 Hz
ReferenceLocation: [0 0 0] [deg deg m]
DecimationFactor: 2
Extended Kalman Filter Values
State: [16x1 double]
StateCovariance: [16x16 double]
Process Noise Variances
GyroscopeNoise: [4.8e-06 4.8e-06 4.8e-06] (rad/s)²
AccelerometerNoise: [0.048 0.048 0.048] (m/s²)²
GyroscopeBiasNoise: [4e-14 4e-14 4e-14] (rad/s)²
GyroscopeBiasDecayFactor: 0.999
AccelerometerBiasNoise: [4e-14 4e-14 4e-14] (m/s²)²
AccelerometerBiasDecayFactor: 0.9999
Measurement Noise Variances
ZeroVelocityConstraintNoise: 0.01 (m/s)²insfilterNonholonomic использует расширенный фильтр Калмана со следующими функциями:
predict - Обновление состояний с использованием данных акселерометра и гироскопа
fusegps - Правильные состояния с использованием данных GPS
Обычно данные акселерометра и гироскопа получают с более высокой скоростью, чем данные GPS. Для вызова можно использовать вложенные циклы predict и fusegps по разным ставкам.
accelData = [0 0 9.8]; gyroData = [0 0 0]; position = [0 0 0]; positionCov = 0; velocity = rand(1,3); velocityCov = 0; predictDataSampleRate = 100; fuseDataSampleRate = 2; predictSamplesPerFuse = predictDataSampleRate/fuseDataSampleRate; duration = 5; for i = 1:duration*fuseDataSampleRate for j = 1:predictSamplesPerFuse predict(FUSE,accelData,gyroData); end fusegps(FUSE,position,positionCov,velocity,velocityCov); end
В любое время можно позвонить pose для возврата текущей оценки положения и ориентации:
[position, orientation] = pose(FUSE)
position = 1×3
0 0 0
orientation = quaternion
0.9726 + 0i + 0j + 0.23248kДля полного примера рабочего процесса с использованием NHConstrainedIMUGPSFuser, см. раздел Оценка положения и ориентации наземного транспортного средства.
ahrs10filter | ahrsfilter | ecompass | imufilter | imuSensor | insfilter