Sensor Fusion and Tracking Toolbox™ позволяет вам сплавлять данные, считанные из БИНС и GPS, чтобы оценить положение. Используйте insfilter
функция для создания комплексного фильтра INS/GPS, подходящего для вашей системы:
MARGGPSFuser
- Оцените положение с помощью магнитометра, гироскопа, акселерометра и данных GPS.
NHConstrainedIMUGPSFuser
- Оцените положение с помощью гироскопа, акселерометра и данных GPS. Этот алгоритм использует неголономические ограничения.
В этом руководстве представлен обзор слияния инерционных датчиков с GPS в Sensor Fusion and Tracking Toolbox.
Чтобы узнать, как смоделировать инерционные датчики и GPS, смотрите Model IMU, GPS и INS/GPS. Чтобы узнать, как сгенерировать движение «земля-правда», которое управляет моделями датчика, смотрите waypointTrajectory
и kinematicTrajectory
.
Можно также сплавить данные инерционного датчика без GPS, чтобы оценить ориентацию. См. «Определение ориентации с помощью инерционных датчиков».
Инерционная навигационная система (INS) состоит из датчиков, которые обнаруживают поступательное движение (акселерометры), вращение (гироскопы), и в некоторых системах магнитные поля (магнитометры). При непрерывном сплавлении данных о датчике INS может считаться с положением платформы без внешних датчиков. Однако оценка положения 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