tune
Ajustez les paramètres imufilter
pour réduire l'erreur d'estimation
Depuis R2020b
Description
tune(
ajuste les propriétés de l'objet filtre filter
,sensorData
,groundTruth
)imufilter
, filter
, pour réduire l'erreur de distance des quaternions (RMS). entre les données du capteur fusionnées et la vérité terrain. La fonction fusionne les données du capteur pour estimer l'orientation, qui est comparée à l'orientation de la vérité terrain. La fonction utilise les valeurs des propriétés du filtre comme estimation initiale pour l'algorithme d'optimisation.
tune(___,
spécifie la configuration de réglage basée sur un objet config
)tunerconfig
, config
.
Exemples
Ajustez imufilter
pour optimiser l'estimation de l'orientation
Chargez les données de capteur enregistrées et les données de vérité terrain.
ld = load('imufilterTuneData.mat'); qTrue = ld.groundTruth.Orientation; % true orientation
Créez un objet imufilter
et fusionnez le filtre avec les données du capteur.
fuse = imufilter;
qEstUntuned = fuse(ld.sensorData.Accelerometer, ...
ld.sensorData.Gyroscope);
Créez un objet tunerconfig
et ajustez l'imufilter pour améliorer l'estimation de l'orientation.
cfg = tunerconfig('imufilter');
tune(fuse, ld.sensorData, ld.groundTruth, cfg);
Iteration Parameter Metric _________ _________ ______ 1 AccelerometerNoise 0.1149 1 GyroscopeNoise 0.1146 1 GyroscopeDriftNoise 0.1146 1 LinearAccelerationNoise 0.1122 1 LinearAccelerationDecayFactor 0.1103 2 AccelerometerNoise 0.1102 2 GyroscopeNoise 0.1098 2 GyroscopeDriftNoise 0.1098 2 LinearAccelerationNoise 0.1070 2 LinearAccelerationDecayFactor 0.1053 3 AccelerometerNoise 0.1053 3 GyroscopeNoise 0.1048 3 GyroscopeDriftNoise 0.1048 3 LinearAccelerationNoise 0.1016 3 LinearAccelerationDecayFactor 0.1002 4 AccelerometerNoise 0.1001 4 GyroscopeNoise 0.0996 4 GyroscopeDriftNoise 0.0996 4 LinearAccelerationNoise 0.0962 4 LinearAccelerationDecayFactor 0.0950 5 AccelerometerNoise 0.0950 5 GyroscopeNoise 0.0943 5 GyroscopeDriftNoise 0.0943 5 LinearAccelerationNoise 0.0910 5 LinearAccelerationDecayFactor 0.0901 6 AccelerometerNoise 0.0900 6 GyroscopeNoise 0.0893 6 GyroscopeDriftNoise 0.0893 6 LinearAccelerationNoise 0.0862 6 LinearAccelerationDecayFactor 0.0855 7 AccelerometerNoise 0.0855 7 GyroscopeNoise 0.0848 7 GyroscopeDriftNoise 0.0848 7 LinearAccelerationNoise 0.0822 7 LinearAccelerationDecayFactor 0.0818 8 AccelerometerNoise 0.0817 8 GyroscopeNoise 0.0811 8 GyroscopeDriftNoise 0.0811 8 LinearAccelerationNoise 0.0791 8 LinearAccelerationDecayFactor 0.0789 9 AccelerometerNoise 0.0788 9 GyroscopeNoise 0.0782 9 GyroscopeDriftNoise 0.0782 9 LinearAccelerationNoise 0.0769 9 LinearAccelerationDecayFactor 0.0768 10 AccelerometerNoise 0.0768 10 GyroscopeNoise 0.0762 10 GyroscopeDriftNoise 0.0762 10 LinearAccelerationNoise 0.0754 10 LinearAccelerationDecayFactor 0.0753 11 AccelerometerNoise 0.0753 11 GyroscopeNoise 0.0747 11 GyroscopeDriftNoise 0.0747 11 LinearAccelerationNoise 0.0741 11 LinearAccelerationDecayFactor 0.0740 12 AccelerometerNoise 0.0740 12 GyroscopeNoise 0.0734 12 GyroscopeDriftNoise 0.0734 12 LinearAccelerationNoise 0.0728 12 LinearAccelerationDecayFactor 0.0728 13 AccelerometerNoise 0.0728 13 GyroscopeNoise 0.0721 13 GyroscopeDriftNoise 0.0721 13 LinearAccelerationNoise 0.0715 13 LinearAccelerationDecayFactor 0.0715 14 AccelerometerNoise 0.0715 14 GyroscopeNoise 0.0706 14 GyroscopeDriftNoise 0.0706 14 LinearAccelerationNoise 0.0700 14 LinearAccelerationDecayFactor 0.0700 15 AccelerometerNoise 0.0700 15 GyroscopeNoise 0.0690 15 GyroscopeDriftNoise 0.0690 15 LinearAccelerationNoise 0.0684 15 LinearAccelerationDecayFactor 0.0684 16 AccelerometerNoise 0.0684 16 GyroscopeNoise 0.0672 16 GyroscopeDriftNoise 0.0672 16 LinearAccelerationNoise 0.0668 16 LinearAccelerationDecayFactor 0.0667 17 AccelerometerNoise 0.0667 17 GyroscopeNoise 0.0655 17 GyroscopeDriftNoise 0.0655 17 LinearAccelerationNoise 0.0654 17 LinearAccelerationDecayFactor 0.0654 18 AccelerometerNoise 0.0654 18 GyroscopeNoise 0.0641 18 GyroscopeDriftNoise 0.0641 18 LinearAccelerationNoise 0.0640 18 LinearAccelerationDecayFactor 0.0639 19 AccelerometerNoise 0.0639 19 GyroscopeNoise 0.0627 19 GyroscopeDriftNoise 0.0627 19 LinearAccelerationNoise 0.0627 19 LinearAccelerationDecayFactor 0.0624 20 AccelerometerNoise 0.0624 20 GyroscopeNoise 0.0614 20 GyroscopeDriftNoise 0.0614 20 LinearAccelerationNoise 0.0613 20 LinearAccelerationDecayFactor 0.0613
Fusionnez à nouveau les données du capteur à l’aide du filtre optimisé.
qEstTuned = fuse(ld.sensorData.Accelerometer, ...
ld.sensorData.Gyroscope);
Comparez les performances d'erreur RMS des filtres réglés et non réglés.
dUntuned = rad2deg(dist(qEstUntuned, qTrue)); dTuned = rad2deg(dist(qEstTuned, qTrue)); rmsUntuned = sqrt(mean(dUntuned.^2))
rmsUntuned = 6.5864
rmsTuned = sqrt(mean(dTuned.^2))
rmsTuned = 3.5098
Visualisez les résultats.
N = numel(dUntuned); t = (0:N-1)./ fuse.SampleRate; plot(t, dUntuned, 'r', t, dTuned, 'b'); legend('Untuned', 'Tuned'); title('imufilter - Tuned vs Untuned Error') xlabel('Time (s)'); ylabel('Orientation Error (degrees)');
Arguments d'entrée
filter
— Filtrer l'objet
imufilter
objet
Objet filtre, spécifié comme objet imufilter
.
sensorData
— Données du capteur
table
Données du capteur, spécifiées sous la forme table
. Dans chaque ligne, les données du capteur sont spécifiées comme suit :
Accelerometer
— Données de l'accéléromètre, spécifiées sous la forme d'un vecteur 1 par 3 de scalaires en m2/s.Gyroscope
— Données du gyroscope, spécifiées sous la forme d'un vecteur 1 sur 3 de scalaires en rad/s.
Si vous définissez la propriété Cost
de l'entrée de configuration du tuner, config
, sur Custom
, vous pouvez utiliser d'autres types de données pour le sensorData
entrée en fonction de votre choix.
groundTruth
— Données de vérité terrain
table
Données de vérité terrain, spécifiées comme table
. Le tableau ne contient qu'une seule colonne de données Orientation
. Dans chaque ligne, l'orientation est spécifiée sous la forme d'un objet quaternion
ou d'une matrice de rotation 3 par 3.
La fonction traite chaque ligne des tables sensorData
et groundTruth
séquentiellement pour calculer l'estimation de l'état et l'erreur RMS à partir de la vérité terrain. Chaque ligne des tableaux sensorData
et groundTruth
doit correspondre.
Si vous définissez la propriété Cost
de l'entrée de configuration du tuner, config
, sur Custom
, vous pouvez utiliser d'autres types de données pour le groundTruth
entrée en fonction de votre choix.
config
— Configuration du tuner
Objet tunerconfig
Configuration du tuner, spécifiée comme objet tunerconfig
.
Références
[1] Abbeel, P., Coates, A., Montemerlo, M., Ng, A.Y. and Thrun, S. Discriminative Training of Kalman Filters. In Robotics: Science and systems, Vol. 2, pp. 1, 2005.
Historique des versions
Introduit dans R2020b
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)