Ich habe einen 3-Achsen-Beschleunigungsmesser und ein 2-Achsen-Gyroskop. Ich beabsichtige, etwas zu messen, das sich nur in der X- und Z-Achse bewegt. Ich habe von der Verwendung von Kalman-Filtern gehört, um die Beschleunigungsvektoren zu glätten, aber ich kann kein gutes Tutorial für einen absoluten Anfänger des Themas finden. Ich weiß auch, dass ich die Beschleunigung doppelt integrieren kann, um die Position zu erhalten, aber wie mache ich das mit einer endlichen Anzahl von abgetasteten Beschleunigungsvektoren? Ich würde mich über Links zu guten Tutorials für Anfänger zu diesen beiden Themen freuen.
Hier ist ein Tutorial zur Implementierung einer Richtungskosinusmatrix für eine IMU: http://gentlenav.googlecode.com/files/DCMDraft2.pdf
Schauen Sie sich die ArduIMU-Seiten an: http://code.google.com/p/ardu-imu/wiki/Theory
Hier sind ein paar Open-Source-Projekte, die dies tun. Das Lesen des Codes sollte einige Hinweise geben:
Nun, der Kalman-Filter ist eine Art Magie, die auf mysteriöse Weise funktioniert. :)
Ich habe zuerst mit digitalen Filtern angefangen . Für den Anfang gut erklärt. Und leicht verständlich. Diese einfachen Filter eignen sich gut für Roll und Pitch jedes Systems. Sie müssen nur das Verhältnis von Genauigkeit zu Antwort durch Experimentieren anpassen. Der Trick ist [ Genauigkeit = 1 - Antwort ].
Versuche es.
Um dann den Kalman-Filter zu verstehen, müssen Sie Folgendes durchgehen:
Und muss teilen, wenn Sie auf so etwas stoßen.
... Beschleunigung doppelt integrieren, um Position zu erhalten
Theoretisch (vorausgesetzt, Sie haben perfekte Sensoren und Messungen) können Sie das tun, aber in der Praxis können Sie das nicht. Das Problem ist, dass der Beschleunigungsmesser eine konstante Kraft von 1 G hat, die durch die Schwerkraft verursacht wird, wenn das Objekt stillliegt (Null G im Falle eines freien Falls), aber dies wird nicht als genau 1,00000000 ... G gemessen. Wenn Sie das Objekt bewegen, haben Sie einen Vektor als Summe aus 1 G Schwerkraft und der Beschleunigung durch die Bewegung (die normalerweise viel kleiner als 1 G ist), und Ihre Messungen werden im Laufe der Zeit viel zu viel Rauschen ansammeln, um nützlich zu sein, wenn Sie versuchen, gemessene zu integrieren Beschleunigung minus 1 G Schwerkraft.
Ich habe vor knapp 6 Monaten angefangen ein Quad zu bauen, hatte viele Probleme mit der korrekten Winkelbestimmung :)
Zuallererst sollten Sie diese Präsentation ausprobieren - http://web.mit.edu/scolton/www/filter.pdf Sie ist wirklich umfassend und könnte Ihnen helfen, eine bessere Vorstellung davon zu bekommen, was Sie wirklich wollen, sie hat ziemlich gut funktioniert Für mich.
Ich denke, es liegt ziemlich an Ihnen, aber die Implementierung des Kalman-Filters erfordert nicht nur ziemlich solides Know-how in Mathematik, Systemtheorie und in diesem Fall Physik, sondern ist auch sehr anspruchsvoll in Bezug auf die CPU-Auslastung. Falls Sie daran denken, beispielsweise einen Atmega328 zu verwenden, der mit 16 MHz getaktet ist, haben Sie möglicherweise Probleme mit dieser Art von Filter. Es ist wirklich effektiv, wenn Sie einen DSP verwenden, damit Sie Ihren Acc-Eingang tiefpassfiltern können.
Alles in allem ist mein Rat - versuchen Sie es mit dem Komplementärfilter 1. Ordnung oder vielleicht sogar mit dem Komplementärfilter 2. Ordnung, falls Sie mit den Ergebnissen nicht zufrieden sind. Wenn Ihr System frei von hochfrequenten Vibrationen ist, sollte das großartig funktionieren. Abgesehen davon, dass der Link von JustJeff der perfekte Ausgangspunkt ist, falls Sie bei der Implementierung nicht weiterkommen :)
Alles Gute Dan
Ich bin auch ein Neuling und suche auch nach einer Lösung für meine Navigationsarbeit. Genau wie Sie habe ich ein Board, das mit einem 3-Achsen-Beschleunigungsmesser und einem 2D-Gyroskop konfiguriert ist. Bis jetzt habe ich viele Materialien darüber gelesen, ebenso entscheide ich mich, den Kalman-Filter in meinen Signalhandel aufzunehmen. Vielleicht habe ich keinen Vorschlag für Sie, aber ich möchte etwas mit Ihnen teilen, das ich zuvor gesehen habe. Es gibt einige Links, die darauf verweisen, ich hoffe, das ist nützlich für Sie.
beschränkt auf meinen Ruf, bin ich nur befugt, weniger als 2 Links zu posten. also die anderen beiden möchte ich wie folgt posten:
Nur Jeff
Ezu