2016-03-15 2 views
0

J'ai un programme basé sur un filtre, où un filtre reçoit des données toutes les ~ 200ms. Lorsqu'un nouvel échantillon est reçu, un événement correspondant est déclenché. Je traite les données via un filtre de Kalman. Ensuite, j'envoie les données traitées au filtre suivant. Maintenant, je veux générer des données du côté de la sortie (données d'entrée filtrées de Kalman) avec un cycle plus court (~ 30ms). Ma question est, quel est un bon moyen d'y parvenir.Envoi de données en continu via le filtre de Kalman dans un système basé sur les événements

Mon idée est d'avoir un fil séparé avec une minuterie de cycle (30ms). Lorsqu'un nouvel échantillon est reçu, il est ajouté à une file d'attente. À chaque événement de minuteur, je vérifie s'il y a des échantillons dans la file d'attente. Si c'est le cas, j'utilise cette valeur comme entrée de mesure pour le filtre de Kalman. Sinon, j'utilise la capacité de prédiction du Kalman en utilisant le temps de cycle.

Est-ce la voie à suivre ou existe-t-il une meilleure solution?

Répondre

0

La réponse est oui et non! Pouvez-vous utiliser le premier filtre de Kalman pour se propager entre les intervalles de mesure de 30 ms du deuxième filtre de Kalman? Oui, vous pouvez. Si votre dernière mesure dans le premier filtre était à 400 ms, alors votre meilleure estimation de la sortie du premier filtre 30 ms plus tard vient de propager celle-ci vers 430 ms. Si la propagation d'état est linéaire, vous utilisez la même matrice de transition (généralement notée Phi) avec le delta-temps de 30 ms pour propager l'état.

Le problème vient dans le second filtre. Si l'on suppose qu'il obtient des mesures avec un bruit gaussien blanc comme le font la plupart des implémentations de filtres, la sortie des 430 ms sera une mesure mal modélisée, car les erreurs dans la mesure à 430 ms seront fortement corrélées avec les erreurs dans la mesure à 400 ms. Dans les deux cas, la dernière mesure traitée dans le premier filtre était la mesure de 400 ms.

Il existe plusieurs méthodes possibles de traitement du bruit de mesure corrélé au temps dans le second filtre. Ils comprennent l'ajout d'un ou plusieurs états au second filtre pour suivre la partie corrélée du bruit de mesure, et la soustraction de cette estimation du bruit corrélé à partir de l'entrée provenant du premier filtre. Cela "pré-blanchit" la séquence de mesure dans le second filtre.