Je travaille sur l'accéléromètre d'un téléphone Android. Je souhaite filtrer le bruit horrible que l'accéléromètre retourne l'enregistrement des mouvements du téléphone. P>
Je lisais sur le filtre de Kalman, car la faible passe ne suffit pas. p>
Mais je n'ai pas de modèle de transition de J'ai vu certaines personnes prendre la matrice d'identité dans des exemples simples. Comment cela peut-il fonctionner pour une accélération dynamique? P>
Je connais des filtres de Kalman, les gens produisent toujours une matrice H, je ne sais tout simplement pas comment dans mon cas. P> accélération (k-1) code> à
accélération (k) code> car il s'agit des mouvements de l'utilisateur. Donc, je n'ai aucune matrice de transition de l'état (H ou F dans différents papiers, celui qui multipliez XK-1 dans l'équation XK = H xk-1 + b em> commande + bruit) p>
4 Réponses :
Le filtre Kalman est souvent considéré comme un filtre linéaire où vous avez toutes les matrices de modèle, mais l'idée de filtrer et ses premières applications proviennent de modèles non linéaires. Dans ce cas, vous utilisez des fonctions au lieu de matrices. P>
Si les fonctions de prévision et de mise à jour sont hautement non linéaires, vous pouvez utiliser des méthodes statistiques pour estimer vos paramètres en ligne. Le premier look ce que vous pouvez prendre est Filtre Kalman non parfumé qui récupère moyenne et covariance de la technique d'échantillonnage déterministe - non parfumée Transformation . Je pense que dans votre cas, cela pourrait être le meilleur de commencer. P>
Il y a d'autres variantes du filtre Kalman. Vous pouvez commencer à partir de Wikipedia mais si vous êtes Google "Filtre de Kalman Adaptive Kalman", vous pouvez voir la variété de la sujet. p>
Si vous voulez devenir plus profond dans le sujet mais pas nécessaire commencer par tous les mathématiques que je recommande très bien Book: Kalman Filtre pour les débutants pour commencer par Phil Kim. Il existe également une autre possibilité comme fusion de capteurs, mais c'est un autre sujet large. p>
donné un vecteur d'état si vous écrivez ceci, vous obtenez: p> Ce sont les équations de mouvement pour une Objet se déplaçant avec une accélération constante. P> La manière dont les mouvements de l'utilisateur inconnu ont entraîné des mouvements manipulés dans le cadre de Kalman se trouve à travers le terme de bruit de la plante. Vous supposez que, au lieu de continuer avec exactement la même accélération, il y a une perturbation aléatoire inconnue à l'accélération (et donc aux autres composants de l'état). P> P> [x, v_x, a_x] code>, c'est-à-dire la position, la vitesse et l'accélération
de l'objet dans une direction (la même logique s'applique aux deux autres degrés de liberté).
Vous définissez généralement la matrice de transition d'état comme
Vous pouvez utiliser la matrice d'identité. P>
La matrice de transition de l'état est utilisée pour prédire l'état futur basé sur l'état actuel, Dans de nombreux filtres de Kalman, il strong> est strong> un moyen de prédire l'état futur basé sur l'état actuel, et c'est là qu'une matrice de transition d'état non identitaire intervenait. Par exemple, supposons que votre filtre Kalman. estime la position et la vitesse du véhicule basées sur le GPS et le compteur de vitesse; Ensuite, vous pouvez prédire la position future en modifiant la position basée sur la vitesse, même sans nouvelles mesures. La réponse de Dave montre comment le faire à l'aide de la matrice de transition d'état. P>
La chose avec le filtre Kalman est que cela prédit, puis corrige votre prédiction en fonction de votre observation. Si votre modèle n'est pas très dynamique bien que votre modèle assume une position constante, mais en fonction de votre observation, vous obtiendrez quelque chose entre l'identité. p>
Pourquoi tu le fais toi-même? Pourquoi n'utilisez-vous pas
linear_accente code> pour le sensormanager?
L'idée est de filtrer à nouveau. Je sais que Google a utilisé un filtre Kalman pour créer linéaire_accente (ils ont appelé que la fusion des capteurs). Mais les résultats de l'accélération linéaire sont vraiment bruyants
Vraiment, le
linear_accente code> est bruyant? Et où est ce bruit causant un problème dans votre application? En d'autres termes, que voudriez-vous faire avec l'accélération?
Je peux télécharger des graphiques si vous le souhaitez, mais les mouvements linéaires simples que je fais (une traduction d'un mètre de plus ou moins) est à peine reconnaissable sur le graphique. Mais ce n'est pas même ma question;) Je veux savoir si je peux faire un filtre de Kalman sans connaître une matrice de transition et comment?
Je pense que vous ne pouvez rien faire sans la matrice de transition. Je pense aussi que le filtrage d'un signal déjà filtré n'est pas une bonne idée. C'est pourquoi je pose des questions, pour déterminer ce que vous avez besoin.
Oui Oui, je comprends. Mais même ils savent qu'il y a une quantité très importante de bruit dans leurs capteurs actuels. Cela a dit à différentes occasions et par de nombreuses personnes. J'ai juste besoin d'un signal propre pour doubler et je sais que cela fonctionnera nnot fonctionner à cause de la double intégration. Mais c'est un projet et je dois le faire :( C'est une guerre perdue mais je dois produire quelque chose.: ((((((
Peu importe ce que vous faites, vous ne pouvez pas faire la double intégrale voir Ma réponse .
Bonjour, désolé pour le retard. Bien sûr, j'ai déjà lu votre réponse, savez-vous que c'est l'une des premières informations d'information une rencontre à la recherche de ce thème sur Google? ;) Merci de vous le fournir, je suis sûr que cela a aidé beaucoup de gens. EDIT: N'a pas réalisé que vous étiez la i> ali jusqu'à ce que vous fournisiez le lien ^^
Oh, c'est un tel honneur d'être la i> ali :)