Настройте ahrsfilter
параметры, чтобы уменьшать ошибку расчета
tune(
настраивает свойства filter
,sensorData
,groundTruth
)ahrsfilter
объект фильтра, filter
, уменьшать ошибку по дальности кватерниона корневого среднеквадратического (RMS) между объединенными данными о датчике и основной истиной. Функция использует значения свойств в фильтре как первоначальная оценка для алгоритма оптимизации.
tune(___,
задает настраивающуюся настройку на основе config
)tunerconfig
объект, config
.
ahrsfilter
улучшить оценку ориентацииЗагрузите зарегистрированные данные о датчике и достоверные данные.
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)');
filter
— Объект фильтраahrsfilter
объектОбъект фильтра в виде ahrsfilter
объект.
sensorData
— Данные о датчикеtable
Данные о датчике в виде table
. В каждой строке данные о датчике заданы как:
Accelerometer
— Данные об акселерометре в виде 1 3 вектора из скаляров в m2S.
Gyroscope
— Данные о гироскопе в виде 1 3 вектора из скаляров в rad/s.
Magnetometer
— Данные о магнитометре в виде 1 3 вектора из скаляров в μT.
Если вы устанавливаете Cost
свойство входа настройки тюнера, config
, к Custom
, затем можно использовать другие типы данных для sensorData
введите на основе своего выбора.
groundTruth
данные Ground Truthtimetable
Достоверные данные в виде table
. Таблица имеет только один столбец Orientation
данные. В каждой строке ориентация задана как quaternion
возразите или 3х3 матрица вращения.
Функциональные процессы каждая строка sensorData
и groundTruth
таблицы последовательно, чтобы вычислить оценку состояния и ошибку RMS от основной истины. Каждая строка sensorData
и groundTruth
таблицы должны соответствовать друг другу.
Если вы устанавливаете Cost
свойство входа настройки тюнера, config
, к Custom
, затем можно использовать другие типы данных для groundTruth
введите на основе своего выбора.
config
— Настройка тюнераtunerconfig
объектНастройка тюнера в виде tunerconfig
объект.
[1] Abbeel, P., Коутс, A., Montemerlo, M., Ын, А.И. и Трун, S. Отличительное Обучение Фильтров Калмана. В Робототехнике: Наука и системы, Издание 2, стр 1, 2005.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.