Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 01. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

Kalman Filter

Der selbst balancierende einachsige Elektro-Roller

Postby kritias » Sat Nov 12, 2011 12:00 am

Irgendwie habe ich den Verdacht, daß das Kalman-Filter hier als Wundermittel gesehen wird. Das ist absolut nicht so. Ich verwende kein Kalman-Filter (ich verstehs auch nicht). Wenn ich mir meine Rohdaten der Sensoren und die Ausgabe meines Filters am Bildschirm ansehe, dann gibt es keine Möglichkeit das zu berbessern. Vieleicht sollte man sich das Wheelie-Filter einfach mal genauer ansehen. Ich glaube das ist einfach nicht richtig eingestellt. Bei mir sind die gefilterten Werte jedenfalls absolut zeitgleich zur tatsächlichen lage. Nur eben ohne die störenden Spitzen die ein Beschleinigungssensor bei jeder Unebenheit bringt.
User avatar
kritias
 
Posts: 277
Joined: Fri Jan 03, 2014 1:47 pm

Postby guenter » Sun Nov 13, 2011 12:00 am

Hallo Kritias,

das sehe ich genauso. Bei beiden Filtern ist der genaue Abgleich das A und O. Ohne Telemetrie kommt man da nicht weit. Kleine Unterschiede habe ich bei der Sprungantwort und beim Offset festgestellt:
Nach einer abrupten Änderung konnte ich beim PID entweder die Ecke der Kennlinie etwas abrunden oder einen leichten Überschwinger einbauen. Das konnte der Kalman besser, jedoch wird man das beim Fahren nicht bemerken.
Wenn ich die Sensorplatine ein paar Sekunden geschüttelt habe und dann abrupt wieder in die Horizontale brachte, brauchte der PID einige Sekunden bis der Offset wieder genau stimmte. Der Kalman macht das nicht. Ich meine dass ich das auch beim Geländefahren merke. Jedoch habe ich in den Elektor-PID auch nicht sehr verändert.
http://www.youtube.com/watch?v=eOmlB13yijU
In dem Video habe ich die Sprungantwort getestet (abrupte Lageänderung). Nach dem abrupten Stoppen ist kein Nachschingen sichtbar. Beim Schütteln bringt der Beschleunigungssensor ganz wilde Werte, den Gyro lässt das unbeeindruckt, da ich nur die unbenutzten Achsen schüttle. Nach dem Schütteln sollte die Lage sofort wieder stimmen, was bei einer starken Integration der Werte nicht so einfach ist.
User avatar
guenter
 
Posts: 1117
Joined: Thu Jan 02, 2014 10:38 am

Postby guenter » Sun Nov 13, 2011 12:00 am

Ich verwende kein Kalman-Filter (ich verstehs auch nicht).

Ich auch nicht
Bis mir jemand das so erklären kann dass ich es kapiere gehe ich von folgendem Modell aus:

In eine Matrix werden die aktuellen Gyro und ADXL Werte abgelegt. Mit einer einzustellenden Gewichtung aus beiden Werten wird die vorläufige Lage berechnet. Aus diesen Lagewerten wird eine "Vorhersage" auf den künftigen Wert gemacht. Als dritte Komponente kommt noch die "Trefferquote" hinzu, also wie gut die letzte Vorhersage gepasst hat.
Den Unterschied zum PID vermute ich darin, dass das "Vertrauen" in den Adxl bei großen Vorhersagefehlern schwindet und so die Lage nicht verfälschen. Stimmt der ADXL wieder, sind keine "Altlasten" vorhanden wie bei einem stark integrierten ADXL im PID.
User avatar
guenter
 
Posts: 1117
Joined: Thu Jan 02, 2014 10:38 am

Postby kritias » Sun Nov 13, 2011 12:00 am

Hallo Günter,

Ich glaube da kommen jetzt die Begriffe durcheinander.
Der Filter, egal ob Kalman oder was anderes, macht aus einem Signal mit wilden Spitzen ein Signal das die tatsächliche Lage der Plattform wiedergibt. Ohne dabei in der Zeit hinterherzuhinken.
Der PID-Regler kommt erst danach. Der verwendet diesen aufbereiteten Wert für den P und I-Anteil. Für den D-Anteil eignet sich das Gyrosignal direkt. So habe ich das jedenfalls gemacht. Wenn ich mir mein Signal vom ACC ungefiltert und das gefilterte ansehe dann liegen die genau übereinander. Nur daß im gefilterten Signal keinerlei Spitzen mehr zu sehen sind.

Gemacht habe ich das so:
Mit dem ACC-Signal wird ein Mittelwert gebildet. (50 Werte)
Dieses Signal ist schön glatt, hinkt aber der tatsächlichen Lage zeitlich weit hinterher. (weit mehr als 0,5s was die 50 Werte vermuten lassen)
Darum kommt bei der Mittelwertbildung zu der Summe immer ein Anteil vom Gyrosignal hinzu. Wie groß der Anteil ist kann nur im Versuch ermittelt werden. (Linien am Bildschirm!) Wenn der Anteil richtig gewählt ist, hast du hinterher ein ideales Signal mit dem du deinen PID-Regler füttern kannst.
User avatar
kritias
 
Posts: 277
Joined: Fri Jan 03, 2014 1:47 pm

Postby guenter » Sun Nov 13, 2011 12:00 am

Hallo,

genauso wirds beim Wheelie gemacht:

1. Der Acc wird stark integriert und mit Gyrowerten korrigiert. Das ergebnis ist eine fehlerkorrigierte Lage.

2 Die korrigierte Lage und der Gyro bilden den PID-Regler

mit dem Kalman habe ich nur 1. ersetzt!
der 2. Teil ist ebenfalls ein PID:

    Balance_moment =  Angle_Rate * Parameter5 / 100  + tilt_angle;                        //Angle_Rate is D-Part, tilt_angle is P-Part of the PID-Controller    Balance_moment = Balance_moment * 29; //29;        //The I-Part of the PID-Controller        Drive_sum += Balance_moment;  
User avatar
guenter
 
Posts: 1117
Joined: Thu Jan 02, 2014 10:38 am

Postby kritias » Sun Nov 13, 2011 12:00 am

Jo. genau so mache ich das auch. Am wichtigsten dabei ist, wie stark mit den Gyrowerten korrigiert wird. Das kann im fertigen Apparat nicht getestet werden sondern nur mit den Sensoren auf der Tischplatte. Dabei immer schön die ursprünglichen und die gefilterten Signale als Kurve auf dem Bildschirm verfolgen. Wenn die Sensoren nach einer heftigen Bewegung ruhig liegen muß das gefilterte Signal auch sofort ruhig stehen. Ansonsten stimmt die Gewichtung der Gyrosignale nicht. Wenn das aber erreicht ist, weis ich nicht was ein Kalman-Filter da noch verbessern soll. Darum habe ich mich überhaupt nie bemüht das Kalman-Filter zu verstehen.

Bei mir kommt nach dem PID-Regler noch eine Anpassung an die Motorkennlinie. Das ist notwendig weil das Drehmoment des Motors mit der Drehzahl abnimmt. Es muss also mehr Gas gegeben werden um die gleiche Beschleunigung zu erreichen.
Tut man das nicht sollte auf jeden fall eine Ersatzunterhose bereitliegen wenns mal schneller wird.
User avatar
kritias
 
Posts: 277
Joined: Fri Jan 03, 2014 1:47 pm

Postby guenter » Sun Nov 13, 2011 12:00 am

Das habe ich ohne den Kalman nicht so gut hinbekommen, entweder mit Nachschwinger oder zu träge (siehe Grafik). Wobei ich schon recht heftig mit den Sensoren umgehe...
Attachments
1.4.png
User avatar
guenter
 
Posts: 1117
Joined: Thu Jan 02, 2014 10:38 am

Postby guenter » Sun Nov 13, 2011 12:00 am

stellst du bei den BLDCs dann die Drehzahl?

Bei den Bürstenmotoren stellen wir ja die PWM, also den Strom durch den Motor ein. Deshalb ist da nichts weiter nötig, eigentlich...
User avatar
guenter
 
Posts: 1117
Joined: Thu Jan 02, 2014 10:38 am

Postby kritias » Sun Nov 13, 2011 12:00 am

Bei mir hat das recht gut geklappt. Aber auch nicht aufs erste mal. Ich bin über die ganze Sache auch mehrfach drüber bis ich eingesehen habe, daß das ein sehr wichtiger Punkt ist.

Ich gebe denen die Spannungen auf den drei Wicklungen vor. Natürlich auch über PWM. Während der Wheelie einfach eine PWM von z.B. 45 vorgegeben bekommt sende ich diese 45 an die Motorregler und die berechnen dann die Spannung für die einzelnen Wicklungen je nach Stellung des Rotors. Wobei ich die Motoren auch noch umgebaut habe um eine genauere Position zu erhalten.
Genaueres hier:
http://rn-wissen.de/index.php/Rutscherle_-_selbstbalancierender_Elektroroller#Motorumbau
User avatar
kritias
 
Posts: 277
Joined: Fri Jan 03, 2014 1:47 pm

Postby guenter » Sun May 06, 2012 12:00 am

Hallo,

hier mal wieder ein Plot des Kalmanfilters:

rot der Accelerometer, blau der Kalman
Attachments
Unbenannt.2.png
User avatar
guenter
 
Posts: 1117
Joined: Thu Jan 02, 2014 10:38 am

PreviousNext

Return to ElektorWheelie

Who is online

Users browsing this forum: No registered users and 2 guests