insfilterMARG

Оценка положения по данным MARG и GPS

Описание

The insfilterMARG объект реализует слияние датчиков данных MARG и GPS для оценки положения в системе координат NED (или ENU). Данные MARG (магнитная, угловая скорость, гравитация) обычно получают из магнитометра, гироскопа и датчиков акселерометра. Фильтр использует вектор состояния 22 элемента, чтобы отслеживать кватернион ориентации, скорость, положение, смещения датчика MARG и геомагнитный вектор. The insfilterMARG объект использует расширенный фильтр Калмана, чтобы оценить эти величины.

Создание

Описание

пример

filter = insfilterMARG создает insfilterMARG объект со значениями свойств по умолчанию.

filter = insfilterMARG('ReferenceFrame',RF) позволяет вам задать опорную систему координат, RF, из filter. Задайте RF как 'NED' (Северо-Восток-Даун) или 'ENU' (Восток-Север-Вверх). Значение по умолчанию 'NED'.

filter = insfilterMARG(___,Name,Value) также позволяет вам задать свойства созданного filter использование одной или нескольких пар "имя-значение". Заключайте каждое имя свойства в одинарные кавычки.

Свойства

расширить все

Частота дискретизации инерциального измерительного блока (IMU) в Гц, заданная как положительная скалярная величина.

Типы данных: single | double

Опорное расположение, заданное как 3-элементный вектор-строка в геодезических координатах (широта, долгота и высота). Высота над уровнем ссылки модели эллипсоида, WGS84. Единицами базового местоположения являются [градусы метра].

Типы данных: single | double

Мультипликативное отклонение шума процесса от гироскопа в (рад/с)2, заданный как скалярный или 3-элементный вектор-строка положительных вещественных конечных чисел.

  • Если GyroscopeNoise задается как вектор-строка, элементы соответствуют шуму в x, y и z осях гироскопа, соответственно.

  • Если GyroscopeNoise задается как скаляр, один элемент применяется к x, y и z осям гироскопа.

Типы данных: single | double

Мультипликативное отклонение шума процесса от смещения гироскопа в (рад/с)2, заданный как скалярный или 3-элементный вектор-строка положительных вещественных чисел.

  • Если GyroscopeBiasNoise задается как вектор-строка, элементы соответствуют шуму в x, y и z осях смещения гироскопа, соответственно.

  • Если GyroscopeBiasNoise задается как скаляр, один элемент применяется к каждой оси.

Типы данных: single | double

Мультипликативное отклонение шума процесса от акселерометра в (м/с2)2, заданный как скалярный или 3-элементный вектор-строка положительных вещественных конечных чисел.

  • Если AccelerometerNoise задается как вектор-строка, элементы соответствуют шуму в x, y и z осях акселерометра, соответственно.

  • Если AccelerometerNoise задается как скаляр, один элемент применяется к каждой оси.

Типы данных: single | double

Мультипликативное отклонение шума процесса от смещения акселерометра в (м/с2)2, заданный как скалярный или 3-элементный вектор-строка положительных вещественных чисел.

  • Если AccelerometerBiasNoise задается как вектор-строка, элементы соответствуют шуму в x, y и z осях смещения акселерометра, соответственно.

  • Если AccelerometerBiasNoise задается как скаляр, один элемент применяется к каждой оси.

Типы данных: single | double

Аддитивный технологический шум для геомагнитного вектора в мкТ2, заданный как скалярный или 3-элементный вектор-строка положительных вещественных чисел.

  • Если GeomagneticVectorNoise задается как вектор-строка, элементы соответствуют шуму в x, y и z осях геомагнитного вектора, соответственно.

  • Если GeomagneticVectorNoise задается как скаляр, один элемент применяется к каждой оси.

Типы данных: single | double

Аддитивный технологический шум для смещения магнитометра в мкТ2, заданный как скалярный или 3-элементный вектор-строка.

  • Если MagnetometerBiasNoise задается как вектор-строка, элементы соответствуют шуму в x, y и z осях смещения магнитометра, соответственно.

  • Если MagnetometerBiasNoise задается как скаляр, один элемент применяется к каждой оси.

Типы данных: single | double

Вектор состояния расширенного фильтра Калмана. Значения состояния представляют:

ГосударствоМодулиИндекс
Ориентация (кватернионные части)Н/Д1:4
Положение (NED или ENU)m5:7
Скорость (NED или ENU)м/с8:10
Смещение угла дельты (XYZ)рад11:13
Смещение скорости в дельте (XYZ)м/с14:16
Геомагнитные Вектора поля (NED или ENU)µT17:19
Смещение магнитометра (XYZ)µT20:22

Типы данных: single | double

Ковариация ошибки состояния для расширенного фильтра Калмана, заданная как матрица 22 на 22 элемента или вещественные числа.

Типы данных: single | double

Функции объекта

correctИсправьте состояния, используя прямые измерения состояния для insfilterMARG
residualНевязки и остаточные ковариации от прямых измерений состояния для insfilterMARG
fusegpsИсправьте состояния, используя данные GPS для insfilterMARG
residualgpsНевязки и остаточная ковариация от измерений для insfilterMARG
fusemagИсправьте состояния, используя данные магнитометра для insfilterMARG
residualmagНевязки и остаточная ковариация от измерений магнитометра для insfilterMARG
poseТекущая ориентация и оценка положения для insfilterMARG
predictОбновите состояния, используя данные акселерометра и гироскопа для insfilterMARG
resetСбросьте внутренние состояния для insfilterMARG
stateinfoОтобразите информацию о векторе состояния для insfilterMARG
tuneНастройка insfilterMARG параметры для уменьшения ошибки расчета
copyСоздание копии insfitlerMARG

Примеры

свернуть все

Этот пример показов, как оценить положение беспилотного воздушного транспортного средства (БПЛА) по записанным данным датчика и основной истины положению.

Загрузите данные регистрируемого датчика и основной истины положение БПЛА.

load uavshort.mat

Инициализируйте insfilterMARG объект фильтра.

f = insfilterMARG;
f.IMUSampleRate = imuFs;
f.ReferenceLocation = refloc;
f.AccelerometerBiasNoise = 2e-4;
f.AccelerometerNoise = 2;
f.GyroscopeBiasNoise = 1e-16;
f.GyroscopeNoise = 1e-5;
f.MagnetometerBiasNoise = 1e-10;
f.GeomagneticVectorNoise = 1e-12;
f.StateCovariance = 1e-9*ones(22);
f.State = initstate;
 
gpsidx = 1;
N = size(accel,1);
p = zeros(N,3);
q = zeros(N,1,'quaternion');

Акселерометр предохранителя, гироскоп, магнитометр и данные GPS.

for ii = 1:size(accel,1)               % Fuse IMU
   f.predict(accel(ii,:), gyro(ii,:));
        
   if ~mod(ii,fix(imuFs/2))            % Fuse magnetometer at 1/2 the IMU rate
       f.fusemag(mag(ii,:),Rmag);
   end
  
   if ~mod(ii,imuFs)                   % Fuse GPS once per second
       f.fusegps(lla(gpsidx,:),Rpos,gpsvel(gpsidx,:),Rvel);
       gpsidx = gpsidx + 1;
   end
 
   [p(ii,:),q(ii)] = pose(f);           %Log estimated pose
end

Вычислите и отобразите ошибки RMS.

posErr = truePos - p;
qErr = rad2deg(dist(trueOrient,q));
pRMS = sqrt(mean(posErr.^2));
qRMS = sqrt(mean(qErr.^2));
fprintf('Position RMS Error\n\tX: %.2f, Y: %.2f, Z: %.2f (meters)\n\n',pRMS(1),pRMS(2),pRMS(3));
Position RMS Error
	X: 0.57, Y: 0.53, Z: 0.68 (meters)
    
fprintf('Quaternion Distance RMS Error\n\t%.2f (degrees)\n\n',qRMS);
Quaternion Distance RMS Error
	0.28 (degrees)

Алгоритмы

Примечание: Следующий алгоритм применяется только к опорной системе координат NED.

insfilterMARG использует 22-осевую расширенную структуру фильтра Калмана для оценки положения в опорной системе координат NED. Состояние определяется как:

x=[q0q1q2q3positionNpositionEpositionDνNνEνDΔθbiasXΔθbiasYΔθbiasZΔνbiasXΔνbiasYΔνbiasZgeomagneticFieldVectorNgeomagneticFieldVectorEgeomagneticFieldVectorDmagbiasXmagbiasYmagbiasZ]

где

  • q 0, q 1, q 2, q 3 -- Части ориентационного кватерниона. Кватернион ориентации представляет поворот системы координат от текущей ориентации платформы к локальной системе координат NED.

  • position N, position E, position D -- Положение платформы в локальной системе координат NED.

  • ν N, ν E, ν D - Скорость платформы в локальной системе координат NED.

  • .R. θbias X, И θbias Y, И θbias Z - Смещение во встроенном показании гироскопа.

  • .R. νbias X, И νbias Y, И νbias Z - Смещение в интегрированных показаниях акселерометра.

  • geomagneticFieldVector N, geomagneticFieldVector E, geomagneticFieldVector D -- Оценка вектора геомагнитного поля в опорном месте.

  • magbias X, magbias Y magbias Z -- Смещение в показаниях магнитометра.

Учитывая обычное формирование прогнозируемой оценки состояния,

xk|k1=f(x^k1|k1,uk)

u k управляется данными акселерометра и гироскопа, которые были преобразованы в скорость дельты и угол дельты через трапеций интегрирования. Прогнозируемая оценка состояния:

xk|k1=[q0q1(ΔθXΔθbiasX2)q2(ΔθYΔθbiasY2)q3(ΔθZΔθbiasZ2)q1+q0(ΔθXΔθbiasX2)q3(ΔθYΔθbiasY2)+q2(ΔθZΔθbiasZ2)q2+q3(ΔθXΔθbiasX2)+q0(ΔθYΔθbiasY2)q1(ΔθZΔθbiasZ2)q3q2(ΔθXΔθbiasX2)+q1(ΔθYΔθbiasY2)+q0(ΔθZΔθbiasZ2)positionN+(Δt)(νN)positionE+(Δt)(νE)positionD+(Δt)(νD)νN+(Δt)(gN)+(ΔνXΔνbiasX)(q02+q12q22q32)2(ΔνYΔνbiasY)(q0q3q1q2)+2(ΔνZΔνbiasZ)(q0q2+q1q3)νE+(Δt)(gE)+(ΔνYΔνbiasY)(q02q12+q22q32)+2(ΔνXΔνbiasX)(q0q3+q1q2)2(ΔνZΔνbiasZ)(q0q1q2q3)νD+(Δt)(gD)+(ΔνZΔνbiasZ)(q02q12q22+q32)2(ΔνXΔνbiasX)(q0q2q1q3)+2(ΔνYΔνbiasY)(q0q1+q2q3)ΔθbiasXΔθbiasYΔθbiasZΔνbiasXΔνbiasYΔνbiasZgeomagneticFieldVectorNgeomagneticFieldVectorEgeomagneticFieldVectorDmagbiasXmagbiasYmagbiasZ]

где

  • .R. θ X, В θ Y, В θ Z - Интегрированное чтение гироскопа.

  • .R. ν X, В ν Y, В ν Z - Интегрированные показания акселерометра.

  • И t -- шаг расчета БИНС.

  • g N, g E, g D - Вектор постоянной гравитации в системе координат.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2018b