Ist dies eine gültige Methode, um Geschwindigkeitsschätzungen in den Prozess einzufügen?
Wenn Sie Ihr Bundesland entsprechend auswählen, sind die Geschwindigkeitsschätzungen "kostenlos". Siehe die Ableitung des Signalmodells unten (für den einfachen 1-D-Fall, den wir uns angesehen haben).
Signalmodell, Nehmen Sie 2
Wir müssen uns also wirklich auf ein Signalmodell einigen, bevor wir dies vorantreiben können. Aus Ihrer Bearbeitung geht hervor, dass Ihr Modell der Position folgt aussieht :xk
xk + 1x˙k + 1==xk+x˙kΔ t + 12a ( Δ t )2x˙k+ a Δ t
Wenn unser Zustand wie zuvor ist:
dann lautet die Zustandsaktualisierungsgleichung:
wobei nun unser die normalverteilte Beschleunigung ist. xk+1=( 1 & Dgr; t 0 1 )xk+( ( & Dgr ; t ) 2
xk= ( xkx˙k)
akxk + 1= ( 1 & Dgr; t 0 1 ) xk+ ⎛⎝( Δ t )22Δ t⎞⎠eink
eink
Das gibt eine andere -Matrix als die vorherige Version, aber die Matrizen und sollten gleich sein.F HGFH
Wenn ich dies einsetze scilab
(sorry, kein Zugriff auf matlab), sieht es so aus:
// Signal Model
DeltaT = 0.1;
F = [1 DeltaT; 0 1];
G = [DeltaT^2/2; DeltaT];
H = [1 0];
x0 = [0;0];
sigma_a = 0.1;
Q = sigma_a^2;
R = 0.1;
N = 1000;
a = rand(1,N,"normal")*sigma_a;
x_truth(:,1) = x0;
for t=1:N,
x_truth(:,t+1) = F*x_truth(:,t) + G*a(t);
y(t) = H*x_truth(:,t) + rand(1,1,"normal")*sqrt(R);
end
Dann kann ich die Kalman-Filtergleichungen auf dieses (die verrauschten Messungen) anwenden .y
// Kalman Filter
p0 = 100*eye(2,2);
xx(:,1) = x0;
pp = p0;
pp_norm(1) = norm(pp);
for t=1:N,
[x1,p1,x,p] = kalm(y(t),xx(:,t),pp,F,G,H,Q,R);
xx(:,t+1) = x1;
pp = p1;
pp_norm(t+1) = norm(pp);
end
Wir haben also unsere verrauschten Messungen , und wir haben den Kalman-Filter auf sie angewendet und dasselbe Signalmodell verwendet, um zu generieren, wie wir es tun, um den Kalman-Filter anzuwenden (eine ziemlich große Annahme, manchmal!).yyy
Die folgenden Darstellungen zeigen das Ergebnis.
Diagramm 1 : und gegen die Zeit.x kyxk
![Bildbeschreibung hier eingeben](https://i.stack.imgur.com/mAf8u.png)
Diagramm 2 : Eine vergrößerte Ansicht der ersten Beispiele:
![Bildbeschreibung hier eingeben](https://i.stack.imgur.com/FjdL2.png)
Handlung 3 : Etwas, das man im wirklichen Leben nie bekommt, die wahre Position gegen die Zustandsschätzung der Position.
![Bildbeschreibung hier eingeben](https://i.stack.imgur.com/YztSL.png)
Plot 4 : Etwas, das man im wirklichen Leben auch nie bekommt, die wahre Geschwindigkeit gegen die Zustandsschätzung der Geschwindigkeit.
![Bildbeschreibung hier eingeben](https://i.stack.imgur.com/k1c9P.png)
Diagramm 5 : Die Norm der Zustands-Kovarianz-Matrix (etwas, das Sie im wirklichen Leben immer überwachen sollten!). Beachten Sie, dass es sehr schnell von seinem anfänglichen sehr großen Wert zu einem sehr kleinen Wert übergeht, sodass ich nur die ersten Beispiele gezeigt habe.
![Bildbeschreibung hier eingeben](https://i.stack.imgur.com/au56O.png)
Diagramm 6 : Diagramme des Fehlers zwischen der wahren Position und Geschwindigkeit und deren Schätzungen.
![Bildbeschreibung hier eingeben](https://i.stack.imgur.com/TQBT4.png)
Wenn Sie den Fall untersuchen, in dem die Positionsmessungen genau sind, stellen Sie fest, dass die Kalman-Udpate-Gleichungen genaue Ergebnisse für BEIDE Positionen und Geschwindigkeiten liefern. Mathematisch ist es einfach zu verstehen, warum. Unter Verwendung der gleichen Notation wie im Wikipedia-Artikel bedeuten genaue Maße, dass . Wenn Sie davon ausgehen, dass die Ausgangsposition und die Geschwindigkeit bekannt sind, sodass , dann und die Kalman-Gewinnmatrix ist gegeben durchP k =0 P - k + 1 = Q K k + 1zk + 1= xk + 1Pk= 0P-k +1= QKk + 1
Kk +1= ( 12 / dt)
Dies bedeutet, dass der Kalman-Aktualisierungsvorgang erzeugt
x^k + 1= Fk + 1xk+ Kk + 1( zk + 1- Hk + 1Fk + 1xk)= ( xk+x˙kdtx˙k) + ( 12 / dt) ( xk + 1- ( xk+x˙kdt ) )= ( xk + 12 ( xk +1- xk) / dt - x˙k)
Wie Sie sehen, wird der Wert für die Geschwindigkeit durch genau die Formel angegeben, die Sie für die Geschwindigkeitsschätzung vorgeschlagen haben. Also, obwohl du keine Berechnung für die Geschwindigkeit sehen konntest, ist sie doch darin versteckt.( xk- xk - 1) / dt