Pourquoi ai-je besoin d'un filtre de Kalman?

61

Je conçois un véhicule aérien sans pilote, qui inclura plusieurs types de capteurs:

  • Accéléromètre 3 axes
  • Gyroscope à 3 axes
  • Magnétomètre à 3 axes
  • capteur d'horizon
  • GPS
  • échographie dirigée vers le bas.

Un de mes amis m'a dit que je devrais faire passer toutes ces données de capteur à travers un filtre de Kalman, mais je ne comprends pas pourquoi. Pourquoi ne puis-je pas mettre cela directement dans mon micro-contrôleur. Comment le filtre de Kalman m'aide-t-il à propos des données de mon capteur?

Rocketmagnet
la source

Réponses:

52

Vous ne connectez tous ces capteurs directement à un microcontrôleur. Le filtre de Kalman n'est pas un filtre électronique, comme un filtre LRC, qui relie les capteurs au microcontrôleur. Le filtre de Kalman est un filtre mathématique implémenté en tant que routine logicielle dans le microcontrôleur.

Les capteurs que vous avez répertoriés fournissent au microcontrôleur 14 ou 15 nombres bruts chaque fois qu'ils sont tous mis à jour.

Lorsque je pilote un petit avion, ce que je veux vraiment savoir, c’est sa position et son orientation et à quelle distance se trouve-t-il au-dessus du sol - 7 chiffres.

J'ai besoin de quelque chose qui me donne ces 7 chiffres.

Idéalement, je veux une nouvelle estimation de ces 7 nombres à chaque fois via ma boucle de contrôle. Les mises à jour toutes les secondes que je reçois avec mon GPS bon marché ne sont pas assez rapides. (Les personnes à quelle fréquence ma boucle de mise à jour de sortie-calcul-détection-sortie-sortie quadricoptère doit-elle rester stable? Me disent que même 50 fois par seconde ne sera pas assez rapide).

D'une manière ou d'une autre, je vais devoir réduire ces 14 ou 15 chiffres bruts, dont certains ne sont mis à jour que de temps en temps, en (estimations de) les 7 chiffres que je veux vraiment.

Comme Josh l'a souligné, il existe de nombreux moyens ad hoc de convertir ces nombres bruts en données utilisables. Toute routine qui convertit 15 nombres en 7 nombres peut être décrite comme un "filtre".

Vous n'êtes pas obligé d'utiliser le filtre optimal. Mais vous utiliserez une sorte de filtre - c’est-à-dire un élément qui convertit les 15 chiffres de données brutes que vous avez en (estimations de) les 7 chiffres que vous voulez vraiment.

Le filtre de Kalman est, dans certaines conditions, le filtre "optimal", le meilleur moyen de convertir ces données brutes en 7 chiffres que je souhaite vraiment.

Utiliser un filtre de Kalman déjà écrit et débogué par un autre filtre nécessite moins de travail que d'écrire un autre filtre à partir de zéro, de le déboguer et de continuer à l'ajouter jusqu'à ce qu'il soit utilisable, un filtre qui se révèlent inévitablement être sous-optimum.

David Cary
la source
28

La réponse courte et sournoise est "essayez-le sans un." La meilleure réponse est un exemple: lorsque vos accéléromètres disent que vous êtes à 10 degrés de la verticale, alors que votre gyroscope indique que vous n’avez pas pivoté à la verticale et que vos magnétomètres indiquent un décalage de 30 degrés par rapport au nord, alors que votre gyroscope indique 32 degrés. Quel est le cap et l'inclinaison actuels?

Vous allez probablement trouver un million de méthodes ad hoc qui semblent fonctionner dans un exemple, mais échouent dans d'autres. Le filtre de Kalman (filtre de Kalman étendu (EKF) pour cette tâche!) Vous fournira un moyen rigoureux de répondre à ces questions. La qualité des réponses est toujours l' objet de recherches - bien que les antécédents du EKF est très bon - mais au moins tout le monde sera d' accord que les réponses sont .

Josh Vander Hook
la source
1
Exactement la réponse que je cherchais. "Que se passerait-il si je n'utilisais pas le filtre de Kalman". Merci!
Manav Kataria
22

Les données du capteur sont bruyantes. Si vous ne le filtrez pas, votre véhicule agirait au moins de manière erratique s'il était même suffisamment stable pour voler. Le filtrage, via un filtre de Kalman ou autre, peut réduire le bruit correctement et améliorer la stabilité.

Un filtre de Kalman est un filtre particulièrement puissant. Il faut un modèle du système et des modèles de bruit pour le système et vos capteurs. Il estime ensuite l'état du véhicule en fonction d'une estimation d'état fournie et des contrôles appliqués à tout moment. Cet état estimé sera plus précis que ce que les capteurs rapportent.

DaemonMaker
la source
8

Vous pouvez également utiliser des filtres à particules. Pour l'introduction de base aux filtres à particules, vous pouvez consulter les vidéos du professeur Thrun dans Programmation d'une voiture robotique.

http://www.youtube.com/watch?v=H0G1yslM5rc

http://www.youtube.com/watch?v=QgOUu2sUDzg

Les filtres à particules sont plus robustes et ont une probabilité beaucoup plus faible d'erreur de fermeture de boucle, ce qui se produit généralement lors de la mise en œuvre d'une fonction EKF.

Les vidéos décrivent le fonctionnement d'un filtre à particules.

Naresh
la source
Généralement, les réponses ne contenant pas plus d'un lien ne sont pas préférées. Si vous pouviez écrire un paragraphe ou deux sur l'essentiel de la vidéo, ce serait bien.
Manishearth
parle pour toi. Je vois peu d’avantages à reformuler les informations dans un autre lien. Le lien peut contenir des informations que je ne connaissais pas et qu'il n'est pas nécessaire que quelqu'un les ressaisisse pour m'en avertir. Je peux cliquer et lire très facilement, merci.
Spiked3
8

Un filtre de Kalman est un algorithme couramment utilisé dans les drones pour fusionner plusieurs mesures de capteurs afin de fournir une estimation "optimale" de la position et / ou de l'orientation du drone. Par exemple, un filtre de Kalman peut fusionner les mesures de l'accéléromètre, du gyroscope et du magnétomètre avec une estimation de la vitesse pour estimer le tangage et le roulis de l'UAV.

Pour plus d'informations sur les capteurs et les algorithmes utilisés dans l'estimation de l'état des UAV, consultez l'article indépendant Principes de base du vol d'un petit aéronef sans pilote .

L'article contient également des liens vers le code Matlab d'accompagnement implémentant les algorithmes d'estimation d'état décrits dans le filtre de Kalman Filter.

utilisateur486
la source