Hallo liebe Leute, ich habe folgendes vor: Es sollen Bewegungen oder besser Bewegungsänderungen erkannt werden. Dafür steht eine IMU mit MEMS Beschleunigungssensor und Gyroskop zur Verfügung, die per Mikrocontroller angesprochen werden. Die Kommunikation und funktioniert. Im Prinzip soll nur festgestellt werden, ob sich die Geschwindigkeit eines Objektes (zum Beispiel RC Autos, oder RC Hubschrauber) verändert. Momentan läuft das so, dass ich die kalibrierten Werte des Beschleunigungssensors auswerte, indem ich den Betrag bilde und die Erdbeschleunigung abziehe und nochmal den Betrag bilde ;) Eventuelle Änderungen werden durch einen Schwellenwert als Abweichung von 0 erkannt. Eine Ruhelage (keine Geschwindigkeitsveränderung) wird erkannt, wenn die Norm von oben über einen definierten Zeitraum (100ms) nicht über den Schwellwert rutscht. Das ist natürlich ein sehr primitiver Ansatz, der Schwellwert muss für jeden Einsatzort neu ermittelt werden. Das große Problem sind natürlich Rauschen und Vibrationen. Die Rohdaten werden überabgetastet und per Tiefpass auf 5Hz bandbegrenzt. Rauschen und hochfrequente Vibrationen werden dadurch etwas gedämpft, optimal ist das aber nicht, denn ich erhalte natürlich eine Zeitverzögerung, außerdem verändert sich je nach Drehzahl oder Fahrzeugtyp die Amplitude und Frequenz. Natürlich kommt im Mittel auch nicht 0 heraus, sodass ich immer, auch wenn sich das Fahrzeug nicht bewegt, einen Offset messse. Im Moment ermittle ich offline die Std. Abweichung bei erwarteter Vibration (also z.B. bei eingeschaltetem Motor im Leerlauf) und setze die Schaltschwelle doppelt so hoch an. Das möchte ich aber eigentlich nicht offline machen und suche daher nach einer Lösung, die online funktioniert. Das große Problem: ich kann nicht davon ausgehen, dass sich das System in Ruhe befindet. Es müsste also eine Lösung gefunden werden, die z.B. die Varianz bzw Std. Abweichung oder den Maximalwert, oder irgendwie die Schwelle online schätzt (vllt mit einem adaptiven Filter, RLS oder ähnliches). Wenn ich aber die Varianz im laufenden Betrieb ermittle, weiß ich natürlich nicht, ob ich beschleunige oder nicht. Deswegen wird diese viel zu hoch geschätzt. Macht also gar kein Sinn, man beißt sich in den Schwanz ;) Habt ihr Vorschläge, wie ich eventuell den Schwellwert etwas eleganter, OHNE vorherige Kalibrierung ermitteln kann? Vielen Dank! db
filtern ist schon das richtige wort http://probabilistic-robotics.org/ die frag ist, was du im voraus weißt (modellieren kannst) und daher in deinen code einbeinden kannst. Ohne Modellannahmen gibt's keinen adaptiven Filter ;)
Mach das mit einer Kamera. Das ist ein einfachsten. Entweder von aussen oder vom Gerät aus.
wie klein soll deine auflösung sein? damit meine ich den kleinsten festzustellenden änderungswert? wir machen das hier mit unseren drohnen mittels gps für grobe auflösung bzw mittels kamera für kleine auflösungen. grüße
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.