Skip to content
Snippets Groups Projects
Commit 9415dc13 authored by Sebastian Schwarz's avatar Sebastian Schwarz
Browse files

add notebook V10.2.ipynb

parent fb977f5f
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id:a2b19476-4bf6-4dba-b506-3d530bf60bd2 tags:
# <span style='color:OrangeRed'>V10 KALMAN FILTER</span>
# <span style='color:OrangeRed'>V10 KALMAN FILTER - TEIL 1</span>
%% Cell type:markdown id:68f373f1-ea17-4b52-86ed-b4c3afaf5b21 tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
Gegeben ist einen Wechselstrommotor als zeitdiskretes System.
Es wird nun ein Kalman-Filter zur Schätzung des Zustandsvektors
x(k) verwendet. Als Messung liegt der Motorwellenwinkel als ein verrauschtes Sensorsignal
vor. Ferner ist der Eingang des Motors eine verrauschte Eingangsspannung,
die nicht mit dem Messrauschen korreliert ist. Ein äquivalentes zeidiskretes System des
Wechselstrommotors wird mittels gestörter Zustandsgleichungen wie folgt beschrieben:
%% Cell type:code id:402f525f-8a64-4584-8d05-dbd5e42e5516 tags:
``` octave
Ad = [1 0.09516; 0 0.9048]
Bd = [0.004837; 0.09516]
Cd = [1 0]
Dd = 0
```
%% Output
Ad =
1.00000 0.09516
0.00000 0.90480
Bd =
0.0048370
0.0951600
Cd =
1 0
Dd = 0
%% Cell type:markdown id:8629e5a2-ae35-418d-8a65-7e511440917e tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
Die Varianz des Prozessrauschens ist mit Qk = 1,0 und die Varianz des Messrauschens
mit Rk = 0,45 angegeben — beide sind zeitinvariant. Der initiale Schätzfehler ist mittelwertfrei
und Gauß-verteilt, wobei dessen initiale Kovarianz durch einen Matrix Sigma beschrieben wird.
Der Motor rotiert initial nicht und der Anfangswert des Motorwellenwinkels
beträgt pi/4.
%% Cell type:code id:12fc81f8-de9e-4a3d-9210-2fdc15f0338c tags:
``` octave
Qk = 1.0
Rk = 0.45
Sigma = [100 0; 0 10]
xo = [pi/4; 0]
```
%% Output
Qk = 1
Rk = 0.45000
Sigma =
100 0
0 10
xo =
0.78540
0.00000
%% Cell type:markdown id:5292b94c-4bbe-4127-8c8a-55f20706ba40 tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
a) Überprüfen Sie zunächst, ob das System beobachtar ist.
%% Cell type:markdown id:4f60313c-d4d0-4fe8-892f-1a9e96774d0a tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
Die Beobachtbarkeit lässt sich wie folgt prüfen durch:
%% Cell type:code id:a579b6da-ea06-469d-bdad-e438d840fd37 tags:
``` octave
So = [Cd; Cd*Ad]
```
%% Output
So =
1.00000 0.00000
1.00000 0.09516
%% Cell type:markdown id:d4fac333-e43d-49c7-aaec-6168b86bd6a6 tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
Das System ist beobachtar wenn der Rang ist 2, d.h. wenn die Determinante nicht null ist:
%% Cell type:code id:0d90c253-316f-47ed-9f7b-561ff0ed4868 tags:
``` octave
det(So)
```
%% Output
ans = 0.095160
%% Cell type:markdown id:a6ed8d3e-8d76-451c-8480-7182a8723ab2 tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
b) Berechnen Sie den Anfangswert der Kalman-Verstärkung und den Wert der Zustandsschätzung
nach dem ersten Korrekturschritt.
%% Cell type:code id:828217c8-bd90-42da-8b36-9e1f05727a24 tags:
``` octave
Ko = (Sigma*Cd')*inv(Cd*Sigma*Cd'+Rk)
```
%% Output
Ko =
0.99552
0.00000
%% Cell type:markdown id:8a4be558-f51c-415e-96f7-922b8e417422 tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
Der Wert der Zustandsschätzung nach dem ersten Korrekturschritt lautet:
%% Cell type:code id:058ad783-d553-4bcc-873c-a6f521c16975 tags:
``` octave
yo = pi/4;
xc = xo+Ko*(yo-Cd*xo)
```
%% Output
xc =
0.78540
0.00000
%% Cell type:markdown id:ebc1ad68-243b-41eb-909d-0520bc17630d tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
c) Berechnen Sie die Kovarianzmatrix des Schätzfehlers nach dem ersten Korrekturschritt.
%% Cell type:code id:6bce8c32-255e-4236-8fb7-fb5e7bcdac6e tags:
``` octave
Sigma2 = (eye(2)-Ko*Cd)*Sigma
```
%% Output
Sigma2 =
0.44798 0.00000
0.00000 10.00000
%% Cell type:markdown id:4ed1cc00-cac1-4390-b64e-6dac83a0f0aa tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
d) Berechnen Sie den Anfangswert der Kalman-Verstärkung und den Wert der Zustandsschätzung
nach dem ersten Korrekturschritt für den Fall, dass die Kovarianz
des Schätzfehlers vernachlässigbar ist.
%% Cell type:markdown id:05bfa508-a9f3-4fc7-9978-a8c83f8580e5 tags:
<div style="font-family: 'times'; font-size: 13pt; text-align: justify">
In diesem Fall ist die Kalman-Verstärkung = 0.
%% Cell type:code id:4234449c-03a4-493c-9e00-ef44ec741442 tags:
``` octave
```
......
%% Cell type:markdown id:b2072a45-5125-4e7b-834a-5b56b15f8d6e tags:
# <span style='color:OrangeRed'>V10 KALMAN FILTER - TEIL 2</span>
%% Cell type:markdown id:0eca61e4-d40e-4255-b7c8-f866af94c1cd tags:
Das folgende lineare, zeitdiskrete sei gegeben:
%% Cell type:code id:efe2a8c2-841a-4f63-813c-4c137247929f tags:
``` octave
As = 1
Bs = 1
Cs = 0.5
```
%% Output
As = 1
Bs = 1
Cs = 0.50000
%% Cell type:markdown id:4088bf0b-5578-4e2d-8553-a40b8f92d4a4 tags:
Der Anfangszustand sei zweifelsfrei gegeben:
%% Cell type:code id:fc64f0c8-a86d-4c90-b938-4b70ff1b2cea tags:
``` octave
xo = 1
xov = 0
```
%% Output
xo = 1
xov = 0
%% Cell type:markdown id:09876fc3-650d-4f38-a936-b82de673812f tags:
Anders als in der Standardform, wird das Prozessrauschen durch ein Störmodell beschrieben:
%% Cell type:code id:c699f9e3-7886-4f2a-ba27-f0c6a40cedf0 tags:
``` octave
Ar = 1
Br = 1
```
%% Output
Ar = 1
Br = 1
%% Cell type:markdown id:a05183dd-1ff7-477a-bea7-177bdac6d3be tags:
Eingang für das Störmodell ist ein mittelwertfreies Signal mit der Gauß'schen Verteilung und Varianz:
%% Cell type:code id:157ab316-4e77-4df1-a3de-3f6c09f81618 tags:
``` octave
rk = 0.5
```
%% Output
rk = 0.50000
%% Cell type:markdown id:91c85755-9ef5-40d9-8331-43b9dcac0aac tags:
Das Messrauschen ist ebenso Gauß-verteilt mit Varianz:
%% Cell type:code id:667a52bf-771b-40b8-a598-67f3bcb1b86d tags:
``` octave
sk = 0.5
```
%% Output
sk = 0.50000
%% Cell type:markdown id:0f8c69f5-d96b-4bae-85e7-cafdce802b5d tags:
Passen Sie die Zusandsraumdarstellung so an, dass die bekannten Formeln des Kalman-Filter angewendet werden können. Fasses Sie zu diesem Zweck das Störmodell und das zeitdiskrete System zu einem neuen Gesamtsystem zusammen.
%% Cell type:code id:92391d85-4a55-4191-b9db-abd84a6b9be0 tags:
``` octave
Ag = [As 1;0 Ar]
Bg = [Bs;0]
Bd = [0; Br]
Cg = [Cs 0]
```
%% Output
Ag =
1 1
0 1
Bg =
1
0
Bd =
0
1
Cg =
0.50000 0.00000
%% Cell type:markdown id:aab57f38-99e5-4a6f-8ae7-e6c907a40762 tags:
Berechnen Sie die Varianz des Messrauschens und des Prozessrauschens. Berechnen Sie zusätlich die Kalman Filter Anfangswerte.
%% Cell type:code id:c17a8cd9-f92b-4b63-8732-55d484cff5c2 tags:
``` octave
Rk = rk
Qk = Bd*rk*Bd'
Sigmao=zeros(2,2)
```
%% Output
Rk = 0.50000
Qk =
0.00000 0.00000
0.00000 0.50000
Sigmao =
0 0
0 0
%% Cell type:markdown id:118da55d-dd12-414d-99a7-cccfa1241412 tags:
Es gilt uk=-1. Führen Sie nun einen weiteren Prädiktionsschritt durch und bestimmen Sie die Schätzung des Zustandsvektors sowie die zugehörige Kovarianzmatrix.
%% Cell type:code id:e6eec8c3-8245-472e-acae-f06e707b6d4e tags:
``` octave
eta0 = [xo; 0]
uk = -1
y1 = 10
eta1m = Ag*eta0+Bg*uk
Sigma1m = Ag*Sigmao*Ag'+Qk
K1 = Sigma1m*Cg'*(Cg*Sigma1m*Cg'+Rk)
eta1 = eta1m+K1*(y1-Cg*eta1m)
Sigma1 = (eye(2)-K1*Cg)*Sigma1m
```
%% Output
eta0 =
1
0
uk = -1
y1 = 10
eta1m =
0
0
Sigma1m =
0.00000 0.00000
0.00000 0.50000
K1 =
0
0
eta1 =
0
0
Sigma1 =
0.00000 0.00000
0.00000 0.50000
%% Cell type:markdown id:a5adb980-c7e1-45c8-bb0f-d2bb5c9e1c8c tags:
Es gilt weiterhin uk=-1. Führen Sie nun einen weiteren Prädiktionsschritt durch und bestimmen Sie die Schätzung des Zustandsvektors sowie die zugehörige Kovarianzmatrix.
%% Cell type:code id:fc517de3-3041-4aa5-9377-80416d82bd74 tags:
``` octave
uk2 = -1
eta2 = Ag*eta1+Bg*uk2
Sigma2m = Ag*Sigma1*Ag'+Qk
```
%% Output
uk2 = -1
eta2 =
-1
0
Sigma2m =
0.50000 0.50000
0.50000 1.00000
%% Cell type:markdown id:825ff5a3-d5aa-4a1d-b831-0cbd75f1ef8e tags:
Das Ergebnis eines weiteren Korrekturschritts ist nun abhängig von der Messung y2, da
die aktuelle Zustandsschätzung nur durch das Prozessrauschen gestört ist und somit
mittels Messung die Unsicherheit reduziert werden kann.
%% Cell type:code id:a7c63002-450b-4713-965c-0d5de273210b tags:
``` octave
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment