2015-10-02 4 views
1

Je construis un quadcoptère et j'utilise le système de pilote automatique pixhawk avec le capteur px4flow joint pour les données de flux optique. Le px4flow est une caméra intelligente à haute vitesse (processeur de bras) avec capteur de gyroscope et de hauteur intégré, et il délivre des vitesses linéaires à partir de l'algorithme de flux optique interne.Comment utiliser le filtre kalman étendu pour la fusion IMU et capteur optique?

Maintenant, je voudrais améliorer mes estimations de position et de vitesse en utilisant un filtre kalman étendu pour fusionner l'IMU et les données de flux optique. J'ai déjà dérivé la fonction de modèle d'état et la matrice de transition d'état pour l'étape de prédiction. Par problème réside dans la dérivation d'un modèle de mesure/fonction pour les vitesses de flux optiques, à utiliser dans la phase de mise à jour du filtre étendu de Kalman. Je crois que je dois dériver de l'algorithme de flux optique d'une certaine façon, mais c'est aussi loin que je l'ai eu. * Edit: Voici un article décrivant l'unité px4flow et comment elle calcule les vélocités. (Oublié d'ajouter le lien, maintenant il est là)

https://pixhawk.org/_media/modules/px4flow_paper.pdf

+0

Si vous voulez montrer votre travail, vous obtiendrez probablement de meilleurs commentaires. Pour utiliser EFK, vous avez besoin d'un modèle de mesure basé sur votre capteur. Je ne suis pas certain que vous ayez fourni suffisamment d'information pour que quelqu'un puisse vous donner des détails à ce sujet. Pour utiliser EFK, vous aurez également besoin de jacobiens (premiers dérivés) de ces fonctions, ce qui pourrait être difficile. Une alternative pourrait être de faire un filtre de Kalman non parfumé ou une autre formulation sans dérivé - Avant d'aller trop loin dans un modèle compliqué, vous pourriez vouloir penser à votre jeu final à cet égard aussi. – Brick

+0

Je viens d'ajouter un article décrivant comment le capteur px4flow calcule les vélocités. Je pense que cet article a la réponse pour moi, mais je ne suis pas capable de l'extrapoler. J'ai déjà conçu EKF pour la fusion de capteurs IMU et GPS, donc j'ai une bonne compréhension de son fonctionnement. J'ai également regardé dans le filtre kalman non parfumé, mais j'ai toujours besoin de la fonction de mesure pour l'utiliser. – trudesagen

Répondre

2

Je suppose (puisque vous ne donnez pas de détails) que vecteur d'état contient vitesse et de position en coordonnées monde. Le flux optique renvoie la vitesse XY dans les coordonnées du corps, vous devez donc le faire pivoter en fonction de l'angle de lacet pour obtenir la vitesse dans les coordonnées du monde.

Si tel est votre cas, vous pouvez choisir entre:

  • Si vecteur d'état ne comprend pas l'orientation, avant de transformer la vitesse de flux optique coordonnées du monde, puis utiliser un modèle d'observation linéaire (zéro matrice ceux dans la position de X, vitesse Y dans votre vecteur d'état)
  • Si le vecteur d'état inclut l'orientation, vous pouvez écrire le modèle d'observation complet qui transforme les coordonnées du corps en utilisant des angles.

C'est essentiellement le processus. Cependant, pour obtenir une meilleure réponse, vous devez fournir plus de détails.