Zitat Zitat von Willa
Das ist echt schick :-D ! Wie komplex ist denn dein Tiefpassfilter? Ich mache in meinem Tricopter eigentlich das gleiche wie Du (nur ohne die schicke 3D Ausgabe), habe aber nen anderen ACC (lis3l02as4). Allerdings muss bei mir alles im µC (Mega32@16MHz) geglättet werden was nur grad so zufriedenstellend funktioniert. Vielleicht hast du eine schöne Filtertechnik?
Die 3D-Ausgabe ist eigentlich auch nur eine Matritzen/Vektorberechnung. Aber darauf basiert auch meine Raumlageberechnung einfach ne Pic-Box genommen und über die gdi32.dll darauf losgelegt.
Die Filtertechnik habe ich in 3 Modis ausgeführt. Das FIR-filter ist mit seinen Koeffizienten auf 200 Werte je Tap auf 5Hz realisiert. Im Grunde ist es in jeder Filterordung (Wiederholung der Filterung) das selbe. Ich multipliziere nach der allgemeinen FIR-Gleichung eben die Koeffizienten von (n) mit einem gleitenden Array (In meinem Fall Pointer auf den Aufnahmebuffer). Daraus ergibt sich das FIR-Filter 1. Ordnung (nach Chebyshev) in seiner Summe über alle Koeffizientenmultiplikationen zum akuten Sample. Der entstandene Verstärkungsfaktor von x(n) zu y(n) in DC-Betrachtung rechne ich über die Summe der Koeffizienten gegen.
Danach kommt erst die Lagebestimmung, nachdem alle drei Achsen in der Filterung durchlaufen wurden. Das bildet ein Rohsignal für die Umrechnung in eine Raumrotationsmatrix. Die Matrix sieht man auch im 3D laufen (diese 3x3 Zahlen).
Diese Berechnung geht folgendermaßen vor: Ich errechne über einen normalisierten Ebenenvektor eine Raumrichtung um Achse Z über X und Y. Über diesen errechneten Winkel (Gamma) neige ich über die nun verdreht gerechnete X-Achse den Raumkörper um eine Alpha-Achse. Damit habe ich die neuen Achsen im Raum (was einer Lage zu Bewegungsrichtungsdecodierung taugt). Nebenbei entstehen bei der Berechnung sechs undefinierte Polstellen im normierten (1er Radus=1g)Kugelraum. Diese müssen sonderbehandelt errechnet werden. Das ganze rotieren und bewegen wird als einzige Summen-3x3-Matrix errechnet, und darüber werden alle Objektpunkte im Raum in einer Vektor-Matritzen-Multiplikation umgerechnet. Deshalb dient es auch 1:1 der Lage im Raum als direkte Verrechnung.

Externes Bild anzeigen   

Grüße Wolfgang