tune

Настройка ahrsfilter параметры для уменьшения ошибки расчета

Описание

пример

tune(filter,sensorData,groundTruth) настраивает свойства ahrsfilter объект фильтра, filterдля уменьшения среднеквадратичной ошибки кватерниона (RMS) между данными о сросшемся датчике и основной истине. Функция использует значения свойств в фильтре в качестве начальной оценки для алгоритма оптимизации.

tune(___,config) задает строение на основе tunerconfig объект, config.

Примеры

свернуть все

Загрузите записанные данные датчика и достоверные данные.

ld = load('ahrsfilterTuneData.mat');
qTrue = ld.groundTruth.Orientation; % true orientation

Создайте arhsfitler объект.

fuse = ahrsfilter;

Предохраните данные датчика с помощью стандартного, не настроенного фильтра.

qEstUntuned = fuse(ld.sensorData.Accelerometer, ...
    ld.sensorData.Gyroscope, ld.sensorData.Magnetometer);

Создайте tunerconfig объект. Настройка ahrsfilter объект для улучшения оценки ориентации на основе строения.

config = tunerconfig('ahrsfilter');
tune(fuse,ld.sensorData,ld.groundTruth,config);
    Iteration    Parameter                         Metric
    _________    _________                         ______
    1            AccelerometerNoise                0.1345
    1            GyroscopeNoise                    0.1342
    1            MagnetometerNoise                 0.1341
    1            GyroscopeDriftNoise               0.1341
    1            LinearAccelerationNoise           0.1332
    1            MagneticDisturbanceNoise          0.1324
    1            LinearAccelerationDecayFactor     0.1317
    1            MagneticDisturbanceDecayFactor    0.1316
    2            AccelerometerNoise                0.1316
    2            GyroscopeNoise                    0.1312
    2            MagnetometerNoise                 0.1311
    2            GyroscopeDriftNoise               0.1311
    2            LinearAccelerationNoise           0.1300
    2            MagneticDisturbanceNoise          0.1292
    2            LinearAccelerationDecayFactor     0.1285
    2            MagneticDisturbanceDecayFactor    0.1285
    3            AccelerometerNoise                0.1285
    3            GyroscopeNoise                    0.1280
    3            MagnetometerNoise                 0.1279
    3            GyroscopeDriftNoise               0.1279
    3            LinearAccelerationNoise           0.1267
    3            MagneticDisturbanceNoise          0.1258
    3            LinearAccelerationDecayFactor     0.1253
    3            MagneticDisturbanceDecayFactor    0.1253
    4            AccelerometerNoise                0.1252
    4            GyroscopeNoise                    0.1247
    4            MagnetometerNoise                 0.1246
    4            GyroscopeDriftNoise               0.1246
    4            LinearAccelerationNoise           0.1233
    4            MagneticDisturbanceNoise          0.1224
    4            LinearAccelerationDecayFactor     0.1220
    4            MagneticDisturbanceDecayFactor    0.1220
    5            AccelerometerNoise                0.1220
    5            GyroscopeNoise                    0.1213
    5            MagnetometerNoise                 0.1212
    5            GyroscopeDriftNoise               0.1212
    5            LinearAccelerationNoise           0.1200
    5            MagneticDisturbanceNoise          0.1190
    5            LinearAccelerationDecayFactor     0.1187
    5            MagneticDisturbanceDecayFactor    0.1187
    6            AccelerometerNoise                0.1187
    6            GyroscopeNoise                    0.1180
    6            MagnetometerNoise                 0.1178
    6            GyroscopeDriftNoise               0.1178
    6            LinearAccelerationNoise           0.1167
    6            MagneticDisturbanceNoise          0.1156
    6            LinearAccelerationDecayFactor     0.1155
    6            MagneticDisturbanceDecayFactor    0.1155
    7            AccelerometerNoise                0.1155
    7            GyroscopeNoise                    0.1147
    7            MagnetometerNoise                 0.1145
    7            GyroscopeDriftNoise               0.1145
    7            LinearAccelerationNoise           0.1137
    7            MagneticDisturbanceNoise          0.1126
    7            LinearAccelerationDecayFactor     0.1125
    7            MagneticDisturbanceDecayFactor    0.1125
    8            AccelerometerNoise                0.1125
    8            GyroscopeNoise                    0.1117
    8            MagnetometerNoise                 0.1116
    8            GyroscopeDriftNoise               0.1116
    8            LinearAccelerationNoise           0.1112
    8            MagneticDisturbanceNoise          0.1100
    8            LinearAccelerationDecayFactor     0.1099
    8            MagneticDisturbanceDecayFactor    0.1099
    9            AccelerometerNoise                0.1099
    9            GyroscopeNoise                    0.1091
    9            MagnetometerNoise                 0.1090
    9            GyroscopeDriftNoise               0.1090
    9            LinearAccelerationNoise           0.1090
    9            MagneticDisturbanceNoise          0.1076
    9            LinearAccelerationDecayFactor     0.1075
    9            MagneticDisturbanceDecayFactor    0.1075
    10           AccelerometerNoise                0.1075
    10           GyroscopeNoise                    0.1066
    10           MagnetometerNoise                 0.1064
    10           GyroscopeDriftNoise               0.1064
    10           LinearAccelerationNoise           0.1064
    10           MagneticDisturbanceNoise          0.1049
    10           LinearAccelerationDecayFactor     0.1047
    10           MagneticDisturbanceDecayFactor    0.1047
    11           AccelerometerNoise                0.1047
    11           GyroscopeNoise                    0.1038
    11           MagnetometerNoise                 0.1036
    11           GyroscopeDriftNoise               0.1036
    11           LinearAccelerationNoise           0.1036
    11           MagneticDisturbanceNoise          0.1016
    11           LinearAccelerationDecayFactor     0.1014
    11           MagneticDisturbanceDecayFactor    0.1014
    12           AccelerometerNoise                0.1014
    12           GyroscopeNoise                    0.1005
    12           MagnetometerNoise                 0.1002
    12           GyroscopeDriftNoise               0.1002
    12           LinearAccelerationNoise           0.1002
    12           MagneticDisturbanceNoise          0.0978

Предохраните данные датчика с помощью настроенного фильтра.

qEstTuned = fuse(ld.sensorData.Accelerometer, ...
    ld.sensorData.Gyroscope, ld.sensorData.Magnetometer);

Сравнение настроенных и не настроенных характеристик ошибок RMS.

dUntuned = rad2deg(dist(qEstUntuned, qTrue));
dTuned = rad2deg(dist(qEstTuned, qTrue));
rmsUntuned = sqrt(mean(dUntuned.^2))
rmsUntuned = 7.7088
rmsTuned = sqrt(mean(dTuned.^2))
rmsTuned = 5.6033

Визуализируйте ошибки относительно времени.

N = numel(dUntuned);
t = (0:N-1)./ fuse.SampleRate;
plot(t, dUntuned, 'r', t, dTuned, 'b');
legend('Untuned', 'Tuned');
title('ahrsfilter - Tuned vs Untuned Error')
xlabel('Time (s)');
ylabel('Orientation Error (degrees)');

Входные параметры

свернуть все

Объект фильтра, заданный как ahrsfilter объект.

Данные о датчике, заданные как table. В каждой строке данные о датчике задаются как:

  • Accelerometer - Данные акселерометра, заданные как вектор скаляров 1 на 3 в m2/ с .

  • Gyroscope - Данные гироскопа, заданные как вектор 1 на 3 скаляров в рад/с.

  • Magnetometer - Данные магнитометра, заданные как вектор 1 на 3 скаляров в мкТ.

Если вы задаете Cost свойство входа строения тюнера, config, в Custom, тогда можно использовать другие типы данных для sensorData вход, основанный на вашем выборе.

Достоверные данные, заданные как table. Таблица имеет только один столбец Orientation данные. В каждой строке ориентация задается как quaternion объект или матрица поворота 3 на 3.

Функция обрабатывает каждую строку sensorData и groundTruth таблицы для вычисления оценки состояния и ошибки RMS из основной истины. Каждая строка sensorData и groundTruth таблицы должны соответствовать друг другу.

Если вы задаете Cost свойство входа строения тюнера, config, в Custom, затем можно использовать другие типы данных для groundTruth вход, основанный на вашем выборе.

Строение тюнера, заданный как tunerconfig объект.

Ссылки

[1] Abbeel, P., Coates, A., Montemerlo, M., Ng, A.Y. and Thrun, S. Discriminative Training of Фильтры Калмана. In Robotics: Science and systems, Vol. 2, pp. 1, 2005.

Введенный в R2020b