Hallo! Mir stellt sich folgendes Problem in den Weg. Ich sollte mit einem Gyroskope und einem Beschleunigungssensor den Winkel ermitteln. Nun fand ich weder im WWW noch im Forum beschreibungen wie dies am besten zu realiesieren ist. Bei meinem ersten Versuchsaufbau kam ich auf keinen günen Zweig da der Sensor, trotz Filter keinen halbwegs stabilen Wert am ADW erzeugte. Außerdem weiß ich nicht wie ich den Beschleunigungssensor mit einbeziehen muss. Vielleicht hat jemand dies schon gemacht und könnte mir ein paar Tipps geben. Ich wäre euch sehr Dankbar!
Wenn du ein 2-Achsen Beschleunigungssensor hast, könntest du damit die Richtung der Erdanziehung bestimmen und du hast schon eine erste lageerkennung!
Das heißt wenn zB die x Achse gegen Boden zeigt, hat diese den höheren Spannungswert am Ausgang wie die um 90° verschobene y Achse. Bin ich da Richtig?
Simon A. schrieb: > Nun fand ich weder im WWW noch im Forum beschreibungen > wie dies am besten zu realiesieren ist. Halte ich für ein Gerücht, da ich so was selber schon gemacht habe und weiß das es da Unmengen dazu gibt! Gerade bei Quadrokoptern o.ä. ist sowas standardmäßig drin. Nun zum Thema: Die Sensoren rauschen im Normalfall wie Sau! Sie sind oft stark Temperaturabhängig haben systematische (Nullpunkt-, Skalen-, und Justierungsfehler) und zufällige Fehler. In der Praxis wird nun versucht (meist durch einen Kalmanfilter) diese Fehler durch Sensordatenfusion optimal zu minimieren (Gütekriterium). Ein paar Stichwörter dazu sind Steady-State-Kalmanfilter, Extended-Kalman-Filter(EKF) und Unscented-Kalman-Filter(UKF). Der Aufwand wächst dabei mit der Aufzählung. Eine weitere Methode ist die Direction Cosine Matrix (DCM). Hier mal ein paar Links vom Forum: Beitrag "Kompass / Neigungssensor" Beitrag "Suche Projektpartner für Kalmanfilter-Implementierung" Oder noch was zur DCM (mit STM32): http://www.chrobotics.com/forum/index.php http://vrhome.net/vassilis/dcm/ Kaufquelle Fertigteil: http://www.watterott.com/de/CHR-6d-IMU
Simon A. schrieb: > Das heißt wenn zB die x Achse gegen Boden zeigt, hat diese den höheren > Spannungswert am Ausgang wie die um 90° verschobene y Achse. > Bin ich da Richtig? Das kommt darauf an in welche Richtung der Vektor als positiv (Pfeilrichtung) angenommen wird! Aber prinzipiell kannst Du im statischen Fall (keine oder nur langsame Bewegung) den Winkel über 2 im Rechten Winkel angeordnete Beschleunigungssensoren bestimmen (Pythagoras). Dazu musst Du natürlich zuerst den Offset Deines Sensor bestimmen und da ist dann Teilweise wieder das Problem, da dieser Offset teilweise auch sehr Temperaturabhängig (und sogar Lageabhängig) ist. Sobald irgendwelche Vibrationen oder Bewegungen mit ins Spiel kommen kannst Du alleine über die Beschleunigungssensoren keine Winkel mehr bestimmen. Das Gyroskop wird sozusagen für schnelle Winkeländerungen und für die Unempfindlichkeit gegenüber Beschleunigungen (Vibrationen, wackeln, usw.) genommen. Die Beschleunigungssensoren dienen dann zum stützen des berechneten Winkels (über Gyro) damit durch die Integration der Winkelgeschwindigkeit keine Fehler entstehen. Man hat ja wie oben schon gesagt einen absoluten Bezugspunkt (im statischen Fall) mit den Beschleunigungssensoren, mit dem Gyro kann man nur relative Winkel angeben!!! Grüße
Ach ja, noch so als Anmerkung: Wenn Dein Mathe nicht mindestens auf Hochschulniveua ist, dann such Dir lieber ne andere Beschäftigung ;-) Ist nicht gerade Trivial (ne Vernüntige IMU kostet >5k Euro).
Über Kalmanfilter bin ich bereits infomiert. Auch über dessen Verwendung auf 8 bit Prozessoren. Ich habe für den Testaufbau den Code von http://www.gerold-online.de/cms/wheelie/einleitung.html verwendet und auch dessen Auswertungsprogramm über RS232. Nur dreht sich bei mir der künstliche Horizont ständig um 360° bzw wenn er den Nullpunkt gefunden, erkennt das Programm kleine und schnelle Veränderungen, geht dann aber anschließend immer in die Nulllage zurück. Meines erachtens wäre der Gyro eingegangen, da auch der verstärkte Ausgang nicht mehr funktioniert. Also um Kalman und 2 Sensoren kommt man woll nicht herum.
Simon A. schrieb: > Meines erachtens wäre der > Gyro eingegangen, da auch der verstärkte Ausgang nicht mehr > funktioniert. Na dann solltes Du mal zuerst versuchen nachzuweisen, dass das auch so ist. Raten hilft da nicht weiter. Schritt für Schritt...erst mal schauen ob Deine Sensoren noch ordentliche Werte liefern, dann versuchen den Code zu verstehen und dann die Anpassungen vornehmen. Simon A. schrieb: > Über Kalmanfilter bin ich bereits infomiert. Auch über dessen Verwendung > auf 8 bit Prozessoren. Informiert heißt nicht verstanden.
Simon A. schrieb: > Ich habe für den Testaufbau den Code von > http://www.gerold-online.de/cms/wheelie/einleitung.html verwendet Ach ja, ganz vergessen...das ist übrigens der Elektor-Wheelie. Wenn es um Kalmanfilter geht, dann kopieren sie sowieso alle zusammen im Internet. Bei meinen Recherchen damals habe ich mindesten 5 Projekte gefunden, die alle einen Kalmanfilter entwickelt haben...komisch dass die alle genau gleich ausgesehen haben. Wie es schon oben im Link nachzulesen ist...der ist von Tom Pyke: http://tom.pycke.be/mav/92/kalman-demo-application Es sei denn der hat ihn auch irgendwo kopiert...
Hi, Simon, > Ich sollte mit einem Gyroskope und einem Beschleunigungssensor den > Winkel ermitteln. > Bei meinem ersten Versuchsaufbau > kam ich auf keinen günen Zweig da der Sensor, trotz Filter keinen > halbwegs stabilen Wert am ADW erzeugte. Diese Lastenheftangaben sind noch zu mager für brauchbare Antworten: 1. Wieviel Drift ist pro Stunde akzeptabel? 2. Welche Störgrößen müssen ausgeglichen werden? 3. Kann die mobile Plattform auch schlingern und stampfen oder ist sie fest horizontal ausgerichtet? 4. Welche lateralen Beschleunigungen treten auf? In www.roboternetz.de findest Du Hunderte von Beiträgen, wie man nur einen Quadrokopter stabil kriegt mit einem Drehratensensor als Gyroskop. Oder mit einem Vibrationskreisel. Ein Kollege am Nachbartisch hatte eine ähnliche Aufgabe wie Du. Die Vorgaben des Produktmanagers hätten mit einem Wendezeiger mit einem mechanischen Kreisel gelöst werden können, ergänzt um einen nordsuchenden mechanischen Kreisel (Beschaffungskosten >20k€, dazu jährliche Wartung) oder auch Laserkreisel (Litef). Das wagte der Kollege dem Produktmanager monatelang nicht zu sagen. Stattdessen mühte er sich lieber mit Kalmanfilterei herum. Die aber kann die Drift des Nordsensors nicht ausgleichen. Wenn Du eine deutlich bessere Lösung hast als die im Roboternetz mit einem elektronischen Kompass im schwankenden geomagnetischen Feld und in schwankenden Störfeldern infolge Gleichströme, das wäre auch hier interessant. (Mein erster Ansatz dazu ähnelt DGPS - ein Sensor fest am Boden misst die Schwankungen des geomagnetischen Feldes (Kompassnadeln zittern allein wegen Sonnenwind, die Dämpfung der Nadel ist nur eine Art Tiefpass.) und informiert das mobile Gerät, das stabilisiert werden soll. Meinen zweiten Ansatz würde ich verkaufen, daher keine Details in der Öffentlichkeit.) Produktmanager fanden das perpetuum mobile wohl schon immer interessanter als die Hauptsätze der Thermodynamik, in welcher Form sie dies auch immer neu erfinden. Ciao Wolfgang Horn
Hallo Simon, der Kalmanfilter ist kein Wunderding, das alle Probleme löst. Jedoch ist es in Bezug auf Störungen und Sprungantwort einem PID-Regler überlegen. Bei meinem Beispielcode sind ein paar Dinge zu beachten: 1. Je nach eingesetztem Sensor muss der Code der Einbaulage angepasst (invertiert) werden. Soll heißen, wenn der Beschleunigungssensor beim Bewegen positivere Werte liefert, muss auch der Gyro positivere Werte liefern. 2. Der Code liegt in einem Interrupt der von einem Timer ausgelöst wird. Das stellt sicher, dass der Filter in einem festen Intervall aufgerufen wird. Nur so habe ich gute Ergebnisse erzielt. 3. Die Sensoren müssen auf eine gemeinsame Basis gebracht werden. In meinem Fall habe ich die ADC-Werte in ° bzw. °/s umgerechnet. Code: gyro_sensor = (double)(ReadChannel(Ad_kanal_gyro)-Average_gyro)* 1.4634135; // /1025*3.0V/0.002 adxl_sensor = ((double)(ReadChannel(Ad_kanal_adxl)-Adxl_zero))* 1.5139; // /1025*3.0V/0.0019333 0,348V for 180° = 1,9333mV per ° Die Werte habe ich aus den Datasheets der Sensoren. Zitat: >Wenn es um Kalmanfilter geht, dann kopieren sie sowieso alle zusammen im Internet. Bis auf Herrn Kalman selber haben es wohl alle kopiert. Das ist auch nicht weiter verwerflich, solange man immer schön die Quellen nennt. Natürlich habe ich auch Tom gefragt, ob ich Teile seines Codes verwenden darf. Zitat: >Wenn Dein Mathe nicht mindestens auf Hochschulniveua ist, dann such Dir lieber ne andere Beschäftigung ;-) Ich habe kein Abitur und auch nie studiert. Also lass dich nicht entmutigen, die Ausdauer ist das einzig entscheidende!
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.