kramann.info
© Guido Kramann

Login: Passwort:










Robuste Systemintegration
1 Grundlagen
..1.1 Newton
....1.1.1 LinearSchwinger
....1.1.2 Daempfung
....1.1.4 ODE
....1.1.5 Saaluebung
..1.2 NewtonEuler
....1.2.1 Traegheitsmomente
....1.2.2 Modellgleichungen
....1.2.3 Einfachpendel
..1.3 Scilab
....1.3.1 Erste_Schritte
....1.3.2 Skripte
....1.3.3 Funktionen
..1.4 Laplace
....1.4.1 Eigenwerte
....1.4.2 PT1
..1.5 Regleroptimierung
....1.5.1 Guetefunktion
....1.5.2 Heuristiken
....1.5.3 Scilab
..1.6 Einstellregeln
....1.6.1 Totzeit
....1.6.2 Methode1
....1.6.3 Methode2
....1.6.4 Scilab
..1.7 Zustandsregler
..1.8 Polvorgabe
..1.8 Polvorgabe_alt
..1.9 Beobachter
....1.9.1 Haengependel
..1.10 Daempfungsgrad
..1.11 Processing
....1.11.1 Installation
....1.11.2 Erste_Schritte
....1.11.3 Mechatronik
....1.11.4 Bibliotheken
....1.11.5 Uebung
....1.11.6 Snippets
......1.11.6.1 Dateioperationen
......1.11.6.2 Bilder
......1.11.6.3 GUI
......1.11.6.4 Text
......1.11.6.5 PDF
......1.11.6.8 Maus
......1.11.6.10 Zeit
......1.11.6.13 Animation
......1.11.6.15 Simulation
....1.11.7 Referenzen
..1.12 Breakout
2 Beispiel
3 Beispielloesung
4 Praxis
5 javasci
6 Fehlertoleranz1
7 Reglerentwurf
..7.1 Sprungantwort
..7.2 Messdaten
..7.3 Systemidentifikation
..7.4 Polvorgabe
..7.5 Beobachter
..7.6 Robuster_Entwurf
..7.7 SIL
8 Systementwicklung
9 Arduino
..9.1 Lauflicht
..9.2 Taster
..9.3 Sensor
..9.12 Motor_PWM1
..9.13 Motor_PWM2_seriell
..9.14 Motor_PWM3_analogWrite
..9.15 Scheduler
..9.20 AV
..9.21 Mikrofon
..9.22 Universal
....9.22.1 Laborplatine
....9.22.2 LED_Leiste
....9.22.3 Motortreiber
....9.22.4 Sensoreingaenge
....9.22.5 Taster
....9.22.6 Tests
....9.22.7 Mikrofon
....9.22.8 Lautsprecher
....9.22.9 Fahrgestell
..9.23 Zauberkiste
..9.24 OOP
....9.24.1 Uebungen
..9.25 AVneu
....9.25.1 Tests
..9.26 DA_Wandler
..9.27 CompBoard
....9.27.1 Tastenmatrix
....9.27.2 ASCIIDisplay
..9.28 CTC
..9.29 Tonerzeugung
10 EvoFuzzy
..10.1 Fuzzy
....10.1.1 Fuzzylogik
....10.1.2 FuzzyRegler
....10.1.3 Uebung9
....10.1.5 Softwareentwicklung
......10.1.5.1 AgileSoftwareentwicklung
......10.1.5.2 FuzzyRegler
......10.1.5.3 Uebung
....10.1.6 Umsetzung
......10.1.6.1 FuzzyRegler
......10.1.6.2 Simulation
......10.1.6.3 Optimierung
......10.1.6.4 Uebung
....10.1.7 Haengependel
......10.1.7.1 Haengependel
......10.1.7.2 Simulation
......10.1.7.3 FuzzyRegler
......10.1.7.4 Optimierer
......10.1.7.5 Genetisch
....10.1.8 Information
....10.1.9 Energie
..10.2 Optimierung
....10.2.1 Gradientenverfahren
....10.2.2 Heuristiken
....10.2.3 ModifizierteG
....10.2.4 optim
..10.3 Genalgorithmus
..10.4 NeuronaleNetze
....10.4.1 Neuron
....10.4.2 Backpropagation
....10.4.3 Umsetzung
....10.4.4 Winkelerkennung
..10.5 RiccatiRegler
11 Agentensysteme
12 Simulation
20 Massnahmen
21 Kalmanfilter
..21.1 Vorarbeit
..21.2 Minimalversion
..21.3 Beispiel
30 Dreirad
31 Gleiter
..31.1 Fehlertoleranz
80 Vorlesung_2014_10_01
81 Vorlesung_2014_10_08
82 Vorlesung_2014_10_15
83 Vorlesung_2014_10_22
84 Vorlesung_2014_10_29

21 Das Kalmanfilter

21 (EN google-translate)

21 (PL google-translate)

Im Zusammenhang mit Zustandsreglern mit Beobachter hat sich das Kalman-Filter bewährt. Nach seinem Erfinder Rudolf Emil Kalman, handelt es sich um einen optimalen Schätzer, der auf Grundlage vergangener verrauschter Zustandsmessungen und einem möglichst genauen Modell, aktuelle Zustände filtern und zukünftige vorhersagen kann. Zur Erinnerung eine Darstellung eines Zustandsreglers (s. Kapitel 8), eines Zustandsreglers mit Beobachter (s. Kapitel 9) und eines Zustandsreglers mit Beobachter und Kalman Filter:

Das Kalman Filter wurde während des Apollo-Programms zum ersten mal praktisch umgesetzt, s. folgenden Artikel:

"Das Kalman Filter wird 50.", http://www.convict.lu/htm/rob/Das%20Kalman%20Filter%20wird%2050_v_1.4.pdf
Prinzip-Blockschaltbild eines Zustandsreglers.

Bild 21-1: Prinzip-Blockschaltbild eines Zustandsreglers.

Zustandsregler mit Beobachtermodell: Die Differenz zwischen realem Systemzustand und simuliertem Systemzustand wird auf den Eingang der simulierten Regelstrecke rückgekoppelt.

Bild 21-2: Zustandsregler mit Beobachtermodell: Die Differenz zwischen realem Systemzustand und simuliertem Systemzustand wird auf den Eingang der simulierten Regelstrecke rückgekoppelt.

Zustandsregler mt Beobachtermodell und Kalmanfilter (Filtermatrix L).

Bild 21-3: Zustandsregler mt Beobachtermodell und Kalmanfilter (Filtermatrix L).

  • In Gleichungsform im Zeitbereich ausgedrückt ergibt sich:

$ \dot y_s = A y_s + B R \left(-y_s\right) + L \left(y-y_s\right) $

Formel 21-1: Simuliertes System beim Zustandsregler mt Beobachtermodell und Kalmanfilter als Filtermatrix L.


$ \dot y = A y + B R \left(-y_s\right) $

Formel 21-2: Reales System beim Zustandsregler mit Beobachtermodell und Kalmanfilter als Filtermatrix L.


  • Gegenüber dem Zustandsregler mt Beobachtermodell unterscheidet sich die Block-Struktur mit Kalman Filter nur darin, dass die rückgeführte Differenz zwischen realem und simuliertem Zustand vor der Rückführung durch den Kalman Filter L geleitet wird.
  • Bereits im Kapitel 9 wurde für L ein konstanter Verstärkungsfaktor eingesetzt.
  • Beim Kalman Filter wird L nun optimal bestimmt mit:

$ L = PC^TS^{-1} $

Formel 21-3: Bestimmung des Kalmanfilters.


  • Die Herleitung der Formel basiert auf der Annahme, dass auf das zu regelnde lineare System normalverteiltes weißes Rauschen rx, bzw. ry wirkt:

$ \dot x = Ax+ Bu + r_x $

Formel 21-4: Einwirkung von Störungen auf das zu regelnde System, hier in allgemeiner Zustandsraumdarstellung, Zustandsgleichungen.


$ y = Cx + Du + r_y $

Formel 21-5: Zus \tan dsraumdarstellung & zugehörige Ausgangsgleichungen.


  • x: Zustandsvektor nx1
  • u: Eingangsvektor rx1
  • y: Ausgangsvektor mx1
  • A: Systemmatrix nxn
  • B: Eingangsmatrix nxr
  • C: Ausgangsmatrix mxn
  • D: Durchgangsmatrix mxr
  • (Vergl. Kapitel 9)
  • Vereinfacht im Fall C==Einheitsmatrix, und D=0:

$ \dot y = Ay+ Bu + r_y $

Formel 21-6: Einwirkung von Störungen auf das zu regelnde System, vereinfacht.


  • Die Matrizen P, C, S bestimmen sich folgendermaßen:
  • P entspricht der P-Matrix nach Riccati, vergl. Kapitel 8.
  • C ist die Ausgangsmatrix
  • S ist die Kovarianzmatrix für den Rauschanteil der Ausgangsgleichungen ry.
  • S ist im allgemeinen nicht bekannt und wird dann als Einheitsmatrix angesetzt und später optimiert.
Übungsbeispiel
  • Der Umgang mit einem Kalman Filter soll an einem konkreten Beispiel geübt werden.
  • Ein invertierendes Pendel wird durch einen mit einem Ende Q auf einer Ebene reibungsfrei gleitenden Stab modelliert.
  • Eine Antriebskraft FA wirke in Q.
  • Sonstige Parameter:
  • Dicker homogener Stab, r=0.5m, Stabdicke d=0.05m, vergl. Kapitel 9.1.
Neue Variante zur Modellierung eines invertierenden Pendels.

Bild 21-4: Neue Variante zur Modellierung eines invertierenden Pendels.

Aufgabe 1 (Vorbereitungen)
  • Modellieren Sie obiges System über die Newton-Euler-Gleichungen bzgl. des Schwerpunktes.
  • Verwenden Sie folgenden Zustandsvektor: y=[φ, ω, x, v].
  • Linearisieren Sie das System anschließend um y=0 folgendermaßen: cosφ=1, sinφ=φ, quadratische Zustandsgrößen werden Null gesetzt.
  • Bestimmen Sie dann mit Scilab nach Riccati die optimierte Rückführungsmatrix R eines passenden Zustandsreglers und damit auch die Matrix P (vergl. Kapitel 8 unten und Code 9-3 in Kapitel 9: XX entspricht P).
  • Simulieren Sie das linearisierte System für y0=[0.1,0,0.1,0] für t=[0,10] mit Δt=0.01s.
  • Es sollte folgender Verlauf heruaskommen:
Plot zur Simulation des linearisierten Riccati-geregelten invertierenden Pendels.

Bild 21-5: Plot zur Simulation des linearisierten Riccati-geregelten invertierenden Pendels.

Aufgabe 2 (Vorbereitungen)
  • Setzen Sie nun das Schema Bild 21-2, Formel 21-1, Formel 21-2 mit Scilab um, wobei Sie das reale System über die Simulation des nichtlinearen Systems abbilden.
  • Es gibt im Simulationsprogramm also 8 Zustandsgleichungen.
  • Die ersten vier sollen das reale System sein, die nachfolgenden vier das Beobachtersystem.
  • Zunächst soll es keine Störungen geben und keine Unterschiede in den AB zwischen realem und simuliertem System.
  • Vorlage für Aufgabe 1:
//Bestimmung der Rückführmatrix für einen Riccati-Zustandsregler
//Danach Simulation des linearisierten Systems.
r=0.5;
d=0.05;
m=1.0;
J=0.25*m*((d/2)^2)+(1/12)*m*((2*r)^2);
g=9.81;

//Systemmatrix:
AA=[????];

//Eingangsmatrix / Rückführungsmatrix
BB=[????];

//Durchgangsmatrix:
DD=[0;0;0;0];

//Ausgangsmatrix:
CC=[1,0,0,0; 0,1,0,0; 0,0,1,0; 0,0,0,1];

GG = syslin('c',AA,BB,CC,DD);
[PP,FF] = gcare(GG);

//Matrix P:
PP

RR = BB'*PP

global r,d,m,J,g,  AA,BB,DD,CC,PP,RR;

function f = rechteSeite(t,y)
    f = (????)*y
endfunction


t = 0:0.01:10;
y0 = [0.1,0,0.1,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:),'red',t,y(3,:),'blu',);
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'y';
a.title.text = 'Riccati-optimierter Zustandsregler für lin. inv. Pendel';
hl=legend(['phi';'x'],a=1);

Code 21-1: Vorlage für Aufgabe 1.