www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Regelung eines (nichtlinearen?) Systems mit Kalman


Autor: Markus Hubig (Firma: IMKO GmbH) (mhubig)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich beschäftige mich in meiner BA Praxisphase gerade mit der Regelung 
eines Mischprozesses anhand von Feuchtemessdaten. Dabei soll anhand der 
Feuchte der Trockenmischung das zusätzlich zu dosierende Wasser bestimmt 
werden. Leider sind die gemessenen Werte stark verrauscht und enthalten 
viele prozessbedingte Messfehler. Jetzt bin ich dabei einen Filter zu 
entwerfen der mir aus den vorliegenden Daten[1] eine schön geglättete 
Messkurve macht. Bei meiner Recherche bin ich auf das Kalmanfilter 
gestoßen, welches mit den richtigen Parametern eigentlich schon ganz 
passable Ergebnisse erzeugt[2]. Indem ich das Filter nicht über alle 
Messdaten laufen lasse, sondern mit Hilfe eines Moving Average einen 
begrenzten Bereich aus den Messdaten wähle ist meine Kurve inzwischen 
eigentlich schon ziemlich gut geworden [siehe rote Kurve, 3]. Leider 
habe ich noch das Problem das meine Kurve unter einigen Bedingungen zu 
langsam zur richtigen Zielfeuchte konvergiert. Diese unbequemen 
Bedingungen sind eine sehr geringe Anfangsfeuchte bevor die 
Trockenmischung zugegeben wird. Dann schafft mein Filter es oft nicht 
bis zum Ende der Trockenmischphase zum richtigen Feuchtewert hoch zu 
laufen und es wird zuviel Wasser dossiert.

Da ich inzwischen bezweifle dass sich mein Problem mit dem Kalmanfilter 
lösen lässt wollte ich jetzt hier mal fragen was man an sonnsten noch 
für Algorithmen mutzen könnte um dieses Problem in den Griff zu 
bekommen. Wie würdet ihr da ran gehen? Würde evtl. das Unscented 
Kalman-Filter oder das Extendet Kalman-Filter mein Problem lösen?

Leider kenne ich mich mit Signalverarbeitung noch zu wenig aus, um einen 
Überblick zu haben, was es eigentlich alles für Methoden gibt und welche 
für mein (nichtlineares?) System geeignet sind.

Vielen dank schon mal im Voraus, Markus

[1] http://dl.dropbox.com/u/2721576/raw.png
[2] http://dl.dropbox.com/u/2721576/kal.png
[3] http://dl.dropbox.com/u/2721576/lim.png

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe noch nicht ganz wie du den Kalmanfilter einsetzt.
Hast du ein Systemmodel? Was sind deine Eingangsgrößen?
Oder machst du Sensorfusion mit dem KF?
Der KF setzt ein lineares System voraus. Für nichtlineare Systeme gibt 
es Modifikationen wie den erweiterten KF.
Mit der gleitenden Mittelwertbildung bringst du natürlich auch 
Verzögerung in das System.
Generell halte ich es eh für Blödsinn die Messdaten zu filtern, erst 
recht mit einer gleitenden Mittelwertbildung. Denn diese reduziert nur 
zufälliges Rauschen, ist aber nicht in der Lage Frequenzbänder zu 
trennen.
Der Kalmanfilter basiert aber gerade auf der Annahme, dass das Signal 
von einem normalverteilten weißen Rauschen überlagert ist.
Apropos, sind das in deinem Plott reelle Messdaten?
Es sieht so aus, als ob der Sensor die Daten auf 25 limitiert.
So wird dir auch ein KF keine verlässlichen Daten liefern können.

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nich dass der Prozess nichtlinear waere, .. die Messwerte sind Schrott. 
Einen Filter drueber zulassen und dabei zu hoffen es kaeme was 
Sinnvolles raus ist naiv. Ich wuerd mir den Feuchtemessvorgang neu 
ueberlegen. Es gibt hinreichend Moeglichkeiten die Feuchte zu messen. zB 
Kapazitiv, Leitfaehigkeit, Absorption von Wellen, ...
Was darf's denn kosten ? Wie wichtig ist eine bessere Aussage zur 
Feuchte ?

Autor: freddy feedback (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Standard Kalmanfilter wird bei diesen Messungen nicht gut 
funktionieren.

Er setzt vorraus, dass die Rauschprozesse normalverteilt sind - 
offensichtlich ist dies hier nicht der Fall. Es werden nur Werte 
zwischen 0 und 25 gemessen.

Falls du ein gutes Modell der "Messstrecke" hast/herleiten kannst, dass 
nichtlinear ist, dann wird ein Extened oder Unscented Kalmanfilter etwas 
bringen.

Autor: Markus Hubig (Firma: IMKO GmbH) (mhubig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> Ich verstehe noch nicht ganz wie du den Kalmanfilter einsetzt.
> Hast du ein Systemmodel? Was sind deine Eingangsgrößen?

Hmm also ein Systemmodel habe ich nicht ... das heißt eigentlich ist mir 
nicht ganz klar was man unter einem Systemmodel versteht. Im Fall meiner 
Messwerte sind das ja nur Feuchtewerte. Ich habe eigentlich nichts mit 
dem ich diese Werte in Beziehung setzen könnte ...

> Oder machst du Sensorfusion mit dem KF?
> Der KF setzt ein lineares System voraus. Für nichtlineare Systeme gibt
> es Modifikationen wie den erweiterten KF.

Das ist auch eine Sache die mir noch nicht ganz klar ist. Ist meine 
System linear oder nicht? Und macht es überhaupt Sinn sowas wie den 
erweiterten KF zu benutzen, wenn man nur ein Phänomen misst ... ?!

> Der Kalmanfilter basiert aber gerade auf der Annahme, dass das Signal
> von einem normalverteilten weißen Rauschen überlagert ist.

Hmm also ich habe in den Messdaten, denke ich, nicht nur 
normalverteiltes Rauschen, sondern auch prozessbedingte Falschmessungen 
unterschiedlicher Art. Denn jedesmal wenn beim Prozess des Mischens 
einer der Mischerarme über des Sensor streift, messe ich eine zu hohe 
Feuchte. Der Mischerarm zieht dann meist eine "Luftblase" hinter sich 
her (Null Messungen).

> Apropos, sind das in deinem Plott reelle Messdaten?
> Es sieht so aus, als ob der Sensor die Daten auf 25 limitiert.
> So wird dir auch ein KF keine verlässlichen Daten liefern können.

Ja sind reelle Messdaten. Das abschneiden der Messdaten bei 25 wahr ein 
Fehler der Sondenkonfiguration. Ich werde demnächst deutlich bessere 
Messdaten bekommen.

Autor: Markus Hubig (Firma: IMKO GmbH) (mhubig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hä-jetzt Noch schrieb:
> Nich dass der Prozess nichtlinear waere, .. die Messwerte sind Schrott.
> Einen Filter drueber zulassen und dabei zu hoffen es kaeme was
> Sinnvolles raus ist naiv. Ich wuerd mir den Feuchtemessvorgang neu
> ueberlegen. Es gibt hinreichend Moeglichkeiten die Feuchte zu messen. zB
> Kapazitiv, Leitfaehigkeit, Absorption von Wellen, ...
> Was darf's denn kosten ? Wie wichtig ist eine bessere Aussage zur
> Feuchte ?

Also wir messen mit einem Verfahren die Feuchte das sich TDR[1] nennt. 
Dieses Verfahren ist in der Regel sehr genau. Das Problem sind eher 
Prozessbedingte Falschmessungen (Metall der Rührstäbe, Luftblasen, 
Inhomogenitäten). Und diese sollen ausgefiltert werden. Das Ziel ist es, 
in diesem dynamischen Prozess bei ca 1m³ Material die Feuchte auf einen 
Liter genau zu bestimmen.

[1] http://de.wikipedia.org/wiki/Feuchtemessung_mit_TDR

Autor: Markus Hubig (Firma: IMKO GmbH) (mhubig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
freddy feedback schrieb:
> Ein Standard Kalmanfilter wird bei diesen Messungen nicht gut
> funktionieren.
>
> Er setzt vorraus, dass die Rauschprozesse normalverteilt sind -
> offensichtlich ist dies hier nicht der Fall. Es werden nur Werte
> zwischen 0 und 25 gemessen.

0 Bedeutet bei der momentanen Konfiguration des Sensors Luft, 25 der 
Maximale Feuchtewert. Das ist inzwischen aber schon angepasst worden.

> Falls du ein gutes Modell der "Messstrecke" hast/herleiten kannst, dass
> nichtlinear ist, dann wird ein Extened oder Unscented Kalmanfilter etwas
> bringen.

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus Hubig schrieb:
> Denn jedesmal wenn beim Prozess des Mischens
> einer der Mischerarme über des Sensor streift, messe ich eine zu hohe
> Feuchte. Der Mischerarm zieht dann meist eine "Luftblase" hinter sich
> her (Null Messungen).

Dann solltest Du diese erkennbaren Falschmessungen eliminieren. Es macht 
keinen Sinn mit eindeutig fehlerhaften Werten zu rechnen.

Wenn ich mich richtig an die Uni erinnere dann kann man auch sehr 
starkes Rauschen gut durch Korrelationsanalyseverfahren beseitigen, 
zumindest wenn man grundlegende Eingenschaften des Rauschens kennt. Ich 
habe nur Zweifel, daß das in Echtzeit geht. Stichwort wäre "statistische 
Signaltheorie".

Autor: Markus Hubig (Firma: IMKO GmbH) (mhubig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
U.R. Schmitt schrieb:
> Dann solltest Du diese erkennbaren Falschmessungen eliminieren. Es macht
> keinen Sinn mit eindeutig fehlerhaften Werten zu rechnen.

Jo das denke ich inzwischen auch. Allerdings werde ich da wahrscheinlich 
mit den reinen Messdaten nicht wirklich weiterkommen. Evtl. muss ich 
dazu die rohen Messdaten der Sonde auswerten. Der Feuchtewert errechnet 
sich nämlich anhand von Signallaufzeit und Leitfähigkeit zusammen mit 
einer Kalibrierkurve.

> Wenn ich mich richtig an die Uni erinnere dann kann man auch sehr
> starkes Rauschen gut durch Korrelationsanalyseverfahren beseitigen,
> zumindest wenn man grundlegende Eingenschaften des Rauschens kennt. Ich
> habe nur Zweifel, daß das in Echtzeit geht. Stichwort wäre "statistische
> Signaltheorie".

Werde mal versuchen dazu etwas Literatur zu finden. Echtzeit ist leider 
unbedingt notwendig.

Autor: -Gast_XIV (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus Hubig schrieb:
> Hmm also ich habe in den Messdaten, denke ich, nicht nur
> normalverteiltes Rauschen, sondern auch prozessbedingte Falschmessungen
> unterschiedlicher Art. Denn jedesmal wenn beim Prozess des Mischens
> einer der Mischerarme über des Sensor streift, messe ich eine zu hohe
> Feuchte. Der Mischerarm zieht dann meist eine "Luftblase" hinter sich
> her (Null Messungen).


Nun, wenn du das schon weißt schließe die "Blasen" von der Messung aus. 
Vielleicht geht das über die "Blasenmessung" aber die Position deiner 
Mischerarme zu kennen ist einfacher und robuster.

Du hast vermutlich nicht nur "Null Messungen" sondern auch 
"Mischmessungen"

Aus dem Gewirbel was sinnvolles zu extrahieren wird mit Mathe schwierig. 
Die Formel lautet da wohl Garbage in = garbage out. Besser ist ganz 
banal die Fehler bei der Messung zu eliminieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.