Professional Documents
Culture Documents
x(0)
y k = C k xk + z k
(11.1a)
(11.1b)
Itt u k determinisztikus jel. A v k s z k zajokra s az x(0) kezdeti llapotra a kvetkez sztochasztikus hipotzis legyen rvnyes ( kl a Kronecker-delta):
x(0) fggetlen v k -tl s z k -tl,
(11.2a)
(11.2c)
(11.2d)
E[v k z lT ] = 0 , E[ z l v kT ] = 0 ( v k s z l korrellatlanok)
(11.2e)
140
x (0)
(11.3)
(11.4a)
E[( x k x k )( x k x k ) ] = k infimum .
(11.4b)
Ex (0) = x 0 := x 0 E[( x 0 x 0 )( x 0 x 0 ) T ] = 0 .
(11.5)
(11.6)
H k := ( I G k +1C k +1 ) B k ,
(11.7)
ezrt
~
x k +1 := x k +1 x k +1 =
= ( I G k +1C k +1 ) Ak ( x k x k ) + ( I G k +1C k +1 )v k G k +1 z k +1 =
= ( I G k +1C k +1 ){ Ak x k + B k u k + v k Ak x k B k u k } G k +1 z k +1
Vezessk be az
(11.8)
x k +1 := Ak x k + Bk u k
M k +1 := E[( x k +1 x k +1 )( x k +1 x k +1 ) T ]
141
(11.9)
jellst, akkor
(11.10)
Mivel k +1 -et infimumm kell tenni, ezrt k +1 -nek a G k +1 szerinti derivltjnak a O() nulla transzformcit kell adnia. Kpezzk ezrt a G k +1 szerinti differencilt:
dG k +1C k +1 M k +1 ( I G k +1C k +1 ) T ( I G k +1C k +1 ) M k +1C kT+1 (dG k +1 ) T +
+ dG k +1 R z ,k +1G kT+1 + G k +1 R z ,k +1 (dG k +1 ) T = O(dG k +1 ).
(11.11)
Vezessk be az U () s T () transzformcikat:
U ( X ) := X + X T ,
T ( X ) := X T .
(11.12)
A differencilt trhatjuk az
U {[( I G k +1C k +1 ) M k +1C kT+1 + G k +1 R z , k +1 ]T (dG k +1 )} = O(dG k +1 )
(11.13)
(11.14)
(11.15)
(11.16)
142
(11.17)
= ( I G k +1C k +1 ) M k +1 = M k +1 G k +1C k +1 M k +1
A becslsi hiba optimlis kovariancia mtrixa ezrt
(11.18)
x k +1
x k +1 = Ak x k + B k u k ,
x k +1 = Ak ( x k x k ) + v k ,
M k +1 =
Ak k AkT
(11.19)
+ Rv ,k ,
(11.20)
= xk + Gk ( y k C k xk )
alakban is. Vgl felhasznlvn a (11.17) egyenletet G k tovbb egyszersthat:
G k = M k C kT (C k M k C kT + R z ,k ) 1
M k C kT = G k (C k M k C kT + R z ,k ) = G k C k M k C kT + G k R z , k
G k R z ,k = ( I G k C k ) M k C kT = k C kT
G k = k C kT R z,1k .
(11.21)
143
k = M k M k C kT (C k M k C kT + R z ,k ) 1 C k M k ,
(11.22)
G k = M k C kT (C k M k C kT + R z ,k ) 1 = k C kT R z,1k .
2.
(11.23)
Megjegyzs:
1. Klnleges eset, ha nincs kimeneti zaj, mert ekkor R z , k = 0 s G k szmtsra
(11.21) nem hasznlhat. Ekkor (11.17) hasznland.
2. Vegyk szre, hogy a (11.22)-(11.23) egyenletek elretart rekurzv egyenletek,
ezrt a Kalman szrsi algoritmus online realizlhat. A Kalman szrsi algoritmus idben vltoz rendszer esetn a kvetkez smval brzolhat:
Inicializls: x 0 := x 0 = Ex(0), 0 := E[( x(0) x 0 )( x(0) x 0 ) T ]
Elretart rekurzi k = 1,2, K :
y k , (11.23)
11.22 )
x k 1 (
M k , k , G k , x k
x k
144
(11.24a)
y k = g (xk , z k ) .
(11.24b)
Teljesljenek a lineris eset sztochasztikus hipotzisei, ezen bell legyen az egyszersg kedvrt a rendszerzaj s a mrsi zaj korrellatlan.
Tegyk fel, hogy ismerjk a rendszer llapotnak x k 1 becslst a [(k 1)T , kT ]
idintervallum bal oldali vgpontjban, s keressk az llapot x k becslst a jobb
oldali vgpontban. Ha a rendszer sima, akkor prblkozhatunk a nemlineris modell
linearizlsval az ismert x k 1 s v k 1 = 0 esetn az llapot, valamint az x k 1 s
u k 1 rtkbl kiszmthat x k s z k = 0 esetn a kimenet szmra:
f ( x k 1 , u k 1 ,0)
f ( x k 1 , u k 1 ,0)
v k 1 (11.25a)
( x k x k 1 ) +
x
v
g ( x k ,0)
g ( x k ,0)
y k g ( x k ,0 ) +
( xk xk ) +
zk .
(11.25b)
x
z
x k f ( x k 1 , u k 1 ,0) +
f ( x k 1 , u k 1 ,0)
x k 1
x
(11.26a)
g ( x k ,0)
xk
x
(11.26b)
s
g ( x k ,0)
(11.27a)
(11.27b)
(11.27c)
(11.27d)
145
Rv ,k 1 := Bv ,k 1 Rv, k 1 BvT,k 1
(11.27e)
R z , k := C z ,k R z ,k C zT,k
(11.27f)
k = M k M k C kT (C k M k C kT + R z ,k ) 1 C k M k ,
(11.28)
G k = M k C kT (C k M k C kT + R z ,k ) 1 = k C kT R z,1k .
x k = x k + G k ( y k g ( x k ,0))
(11.29)
Megjegyzs: A kiterjesztett Kalman-szr algoritmusban az f () s g () nemlineris fggvnyekhez gy jutottunk, hogy a Taylor sorok helyett a nemlineris fggvnyek rtkt rtuk vissza, s figyelembe vettk Ak 1 s C k defincijt:
f ( x k 1 , u k 1 ,0)
x k 1 f ( x k 1 , u k 1 ,0)
x
g ( x k ,0)
x k = x k + G k ( y k g ( x k ,0) +
x k C k x k )) x k + G k ( y k g ( x k ,0))
x
x k = Ak 1 x k 1 + f ( x k 1 , u k 1 ,0)
146
147
ie =
= 7.2921151467 10 5 rad / s .
365.25 24 h
3600 s / h
(12.1)
A Fld forgsellipszoiddal approximlhat a GPS alapjt kpez WGS-84 szabvny szerint. Az ellipszis fltengelyei:
a = 6388137.0 m ,
b = 6356752.3142 m ,
( a > b)
(12.2)
ab
= 0.0034, e = f (2 f ) = 0.0818
a
b2
ab
a b (a b)(a + b) a 2 b 2
b2
2
2
e2 =
=
=
e
=
1
1
=
a
a
a2
a2
a2
a2
f =
(12.3)
(12.4)
148
tekinthetjk az ellipszis rintjt s az arra merleges egyenest, amely utbbi a z tengelyen egy R = (0,c) pontot metsz ki. A QR egyenes az rint normlisa,
hossza N . Az rintnek Q -tl az y tengellyel val metszspontig terjed hossza
N . Az rint normlisa s az y tengely ltal bezrt szg . A viszonyokat a 12.2.
bra mutatja be.
Derivlt:
z2
b2
y2
a2
=1 z = b 1
z = b
rint meredeksge:
Normlis egyenlete:
m=
z = z0
a2
2y
2
a
a2
y0
b
a
y2
y2
y 02
a2
1
( y y0 )
m
149
c = z0 +
a2
b
y 02
a2
( y 0 ) z 0 + c =
y0
y2 a2
a2
1 02 = 2 z 0
b
a
b
Hasonl hromszgekbl:
N z0 + c a 2
b2
=
= 2 N = 2 N
z0
N
b
a
b2
z = ( N + h) S = 2 N + h S
Geometribl:
z = N (1 e 2 ) + h S
(12.5)
y 0 = ( N + h)C
Geometribl:
x = ( N + h)C C
(12.6)
y = ( N + h)C S
Azonossgok:
z0 + c =
y 02 +
a2
b2
a2 b4
b2 a4
b2
z 0 z 02 =
y 02
a2
b4
a4
= 1 y 02 +
a2 b4
2
b2
z 02 = a 2
( z 0 + c) 2
( z 0 + c) 2 = a 2 y 02 +
z 0 + c = NS , y 02 +
a2
b2
a2
( z 0 + c) 2 = a 2
( z 0 + c) 2 = a 2 y 0 = NC ,
b a
N C + (1 e ) N S 2 = N 2 (1 e 2 ) S 2 = a 2
2
b2
a
= 1 e2
N ( ) =
a
1 e 2 S 2
(12.7)
150
N ( ) =
1 e 2 S 2
x = ( N + h )C C
y = ( N + h )C S
(12.8)
z = N (1 e 2 ) + h S
A GPS informcibl a ksbb megismert mdon derkszg koordintkat lehet kiszmtani, a konverzi geodetikus koordintkra egy rekurzv algoritmussal
vgezhet el a fenti sszefggsek felhasznlsval.
Konverzi derkszg koordintkrl geodetikus koordintkra:
( x , y , z ) T ( , , h ) T
Inicializls:
h := 0, N := a, p := x 2 + y 2 p := ( N + h)C , T = y / x atan2
(12.9a)
Ciklus:
S :=
z
N (1 e 2 ) + h
, T :=
z + e 2 NS ( N + h) S
S
=
= atan
p
( N + h)C C
(12.9b)
p
N
N ( ) := a / 1 e S , h =
C
A tapasztalat azt mutatja, hogy gyorsabb a konvergencia, ha rtkt nem asin,
2
Mm r
r
= GMm 3
2
r
r
r
(12.10)
(12.11)
GM
r
151
(12.12)
152
lambda_deg=lambda*180/pi;
N=a/sqrt(1-e^2*S_lambda^2);
h=p/cos(lambda)-N;
data_iter(i,:)=[lambda_deg N h];
end;
%Geodetic data of Los Angeles
fprintf('Iteracios lepesek eredmenyei: lambda_deg,N,h sorrend\n');
data_iter
fprintf('Inverz problem: x,y,z ECEF -> lambda_deg,phi_deg,h\n')
x
y
z
lambda_deg=data_iter(niter,1);
N=data_iter(niter,2);
h=data_iter(niter,3);
N
lambda_deg
phi_deg
h
format short
0.00023765195628
0.00025173252342
0.00025170199822
0.00025170199987
0.00025170200000
0.00025170200000
0.00025170200000
0.00025170200000
0.00025170200000
-2.430601829367448e+006
-4.702442706380628e+006
153
154
155
156
157
(i)
+ E
(i)
+ MP
(i)
(i)
(13.1)
~ (i ) = ( X (i ) x) 2 + (Y (i ) y ) 2 + ( Z (i ) z ) 2 + ct r
(i )
+ct SV
+ ct a(i ) + SA (i ) + E (i ) + MP (i ) + (i ) , i = 1,2,3,4
(13.2)
(13.3)
( X (i ) x 0 )
+ (Y (i ) y 0 ) 2 + ( Z (i ) z 0 ) 2
(Y (i ) y 0 )
+ (Y (i ) y 0 ) 2 + ( Z (i ) z 0 ) 2
( Z (i ) z 0 )
(13.4)
+ (Y (i ) y 0 ) 2 + ( Z (i ) z 0 ) 2
158
x
~ ( 2)
x
H = ~ ( 3)
x
~ ( 4)
x
~ (1)
y
~
( 2)
y
~ (3)
y
~ ( 4)
y
~ (1)
z
~
( 2)
z
~ (3)
z
~ ( 4)
z
1
( x0 , y 0 , z 0 ) T ,
x x0
y y0
x =
,
z z0
ct ct
r
r0
(13.5)
~ (1)
~ ( 2)
~
= ~ ( 3)
~ ( 4)
~ (1)
( x 0 , y 0 , z 0 , ct r 0 )
~ ( 2) ( x 0 , y 0 , z 0 , ct r 0 )
~ (3) ( x 0 , y 0 , z 0 , ct r 0 )
~ ( 4) ( x 0 , y 0 , z 0 , ct r 0 )
(13.6)
t = t SV t SV valdi GPS id
(13.7)
t SV = a f 0 + a f 1 (t t oc ) + a f 2 (t t oc ) 2 + t r ,
(13.8)
159
t r = Fe A sin( E k )
(13.9)
TGD
IODC
t oc
Group delay [s ]
af2
a f1
af0
160
M0
eccentricity
1/ 2
i0
&
i&
C ue
C us
C rc
C rs
C ic
C is
t oe
IODE
161
t r = Fe A sin( E k )
t SV = a 0 + a1 (t SV t oc ) + a 2 (t SV t oc ) 2
+ t r
t = t SV t SV
A = ( A)2
Corrected message
transmission time
Orbit semimajor axis
n0 = / A 3
rad/s
t k = t t oe
n = n 0 + n
rad/s
Time
from
ephemeris
reference epoch
Corrected mean motion
M k = M 0 + tk n
rad
Mean anomaly
E k = M k + e sin( E k )
rad
1 e 2 sin( E ) cos( E ) e
k
k
,
v k = arctan 2
1 e cos( E ) 1 e cos( E )
k
k
k = vk +
rad
rad
Argument of latitude
u k = C us sin( 2 k ) + C uc cos( 2 k )
rad
rk = C rs sin( 2 k ) + C rc cos( 2 k )
i k = C is sin( 2 k ) + C ic cos( 2 k )
u k = k + u k
rk = A[1 e cos( E k )] + rk
i k = i0 + i k + t k i&
Argument
of
correction
Radius correction
rad
Inclination correction
rad
Corrected radius
rad
Corrected inclination
x k = rk cos(u k )
y k = rk sin(u k )
k = 0 + (& ie )t k ie t oe
rad
Corrected longitude of
ascending node
Satellit x ECEF coordinate
z k = y k sin(i k )
latitude
162
SV 2
SV 26
SV 4
SV 7
X
+7766188.44
-25922679.66
-5743774.02
-2786005.69
Y
-21960535.34
-6629461.28
-25828319.92
-15900725.80
Z
+12522838.56
+31864.37
+1692757.72
+21302003.49
~
22228206.42
24096139.11
21729070.63
21259581.09
Az [xyzc,xyzciter,H]=solveRange(Satsxyz,Satsrho,niter)
fggvny az itercit valstja meg, a keretprogram pedig frame_SolveRange.
function [xyzc,xyzciter,H]=solveRange(Satsxyz,Satsrho,niter)
%Solve Pseudorange Equations for Satposes in ECEF
n=size(Satsxyz,1);
xyzc0=zeros(4,1);
xyzcact=xyzc0;
xyzciter=zeros(niter+1,4);
xyzciter(1,:)=xyzc0';
xyzcact=xyzc0;
for j=1:niter
H=[zeros(4,3) ones(4,1)];
rhoj=zeros(4,1);
for i=1:4
Satixyz=Satsxyz(i,:)';
dixyz=Satixyz-xyzcact(1:3);
di=norm(dixyz,2);
H(i,1:3)=-dixyz'/di;
rhoj(i)=di+xyzcact(4);
163
end;
drhohat=Satsrho-rhoj;
dxyzchat=inv(H'*H)*H'*drhohat;
xyzcact=xyzcact+dxyzchat;
xyzciter(j+1,:)=xyzcact';
end;
xyzc=xyzciter(niter+1,:)';
%frame_SolveRange.m
%Compute estimated rover coordinates
clear all
close all
clc
format long
Satsxyz=[+7766188.44 -21960535.34 +12522838.56; ...
-25922679.66 -6629461.28 +31864.37; ...
-5743774.02 -25828319.92 +1692757.72; ...
-2786005.69 -15900725.80 +21302003.49]
Satsrho=[22228206.42 24096139.11 21729070.63 21259581.09]'
niter=5
[xyzc,xyzciter,H]=solveRange(Satsxyz,Satsrho,niter);
fprintf('Results of iteration in x,y,z,c*Delta_tr order\n');
xyzciter
fprintf('Last H matrix\n');
H
fprintf('Receiver coordinates in x,y,z,c*Delta_tr order\n');
xyzc
format short
Futsi eredmnyek:
Results of iteration in x,y,z,c*Delta_tr order
xyzciter =
1.0e+006 *
0
-2.97757147597244
-2.45172853419043
-2.43077221884605
-2.43074509597674
-2.43074509593620
0
-5.63527815933950
-4.73087846098026
-4.70237580233497
-4.70234511363092
-4.70234511359277
0
4.30423450558470
3.57399752045577
3.54660387208444
3.54656870605020
3.54656870599656
0
1.62523980181658
0.31407073267925
0.26474970653356
0.26469112951536
0.26469112943121
164
Last H matrix
H =
Columns 1 through 3
-0.46426691725303
0.98575355484955
0.15435009076044
0.01692128868937
0.78576630371213
0.08086441780387
0.98423412639754
0.53338601476057
-0.40869003596240
0.14748177865320
0.08636685658695
-0.84570268371747
Column 4
1.00000000000000
1.00000000000000
1.00000000000000
1.00000000000000
Receiver coordinates in x,y,z,c*Delta_tr order
xyzc =
1.0e+006 *
-2.43074509593620
-4.70234511359277
3.54656870599656
0.26469112943121
x ECEF
y ECEF
z ECEF
0
-2977571.48
-2451728.53
-2430772.22
-2430745.10
-2430745.10
0
-5635278.16
-4730878.46
-4702375.80
-4702345.11
-4702345.11
0
4304234.51
3573997.52
3546603.87
3546568.71
3546568.71
ct r
0
1625239.81
314070.73
264749.71
264691.13
264691.13
165
t SV
4.03272930e+05
910
403230
t gd %group delay in s
2.3283e-09
409
410400
t oc
a2
0.00000e+00
a1
1.819e-12
a0
3.2977667e-05
153
4.3123e-09
n
M0
e
1/ 2
2.24295542
4.27323824e-03
5.15353571e+03
A
t oe
410400
C ic
9.8720193e-08
C rc
282.28125
C is
-3.9115548e-08
C rs
-132.71875
C uc
-6.60121440e-06
C us
5.31412661e-06
2.29116688
i0
&
i&
-0.88396725
0.97477102
-8.025691e-09
-4.23946e-10
166
function EE_k=compEk(t,E_k0)
%Compute Ek
global t_sv w_n t_ow t_gd aodc t_oc a_2 a_1 a_0 AODE D_n M_0 e
global sqrtA t_oe C_ic C_rc C_is C_rs C_uc C_us DOmega omega i_0
global DOmegaDot DiDot
global omega_ie mu c F f_1 f_2 lambda_1 lambda_2 lambda_w lambda_n
global A n_0 Dt_sv t t_k n M_k E_k
A=sqrtA^2;
n_0=sqrt(mu/A^3);
t_k=t-t_oe;
if t_k>302400, t_k=t_k-604800; end;
if t_k<-302400, t_k=t_k+604800; end;
n=n_0+D_n;
M_k=M_0+t_k*n;
option=optimset('TolFun',1e-10);
EE_k=fsolve(@funEk,E_k0,option);
function y=funEk(x)
%Function solve funEk(x)=0
global t_sv w_n t_ow t_gd aodc t_oc a_2 a_1 a_0 AODE D_n M_0 e
global sqrtA t_oe C_ic C_rc C_is C_rs C_uc C_us DOmega omega i_0
global DOmegaDot DiDot
global omega_ie mu c F f_1 f_2 lambda_1 lambda_2 lambda_w lambda_n
global A n_0 Dt_sv t t_k n M_k E_k
y=M_k+e*sin(x)-x;
%frame_Ephemeris.m
%Frame program for ephemeris computation
clear all
close all
clc
global t_sv w_n t_ow t_gd aodc t_oc a_2 a_1 a_0 AODE D_n M_0 e
global sqrtA t_oe C_ic C_rc C_is C_rs C_uc C_us DOmega omega i_0
global DOmegaDot DiDot
global omega_ie mu c F f_1 f_2 lambda_1 lambda_2 lambda_w lambda_n
global A n_0 Dt_sv t t_k n M_k E_k
%
t=t_sv;
runEk=1;
E_k0=0;
while runEk
E_k=compEk(t,E_k0)
Dt_r=F*e*sqrtA*sin(E_k)
Dt_sv=a_0+a_1*(t_sv-t_oc)+a_2*(t_sv-t_oc)^2+Dt_r
t=t_sv-Dt_sv
E_k0=E_k;
runEk=input('runEk=');
end;
167
168
%
[E_k,A,n,t_k,n,M_k]=compEk(t,E_k0);
E_k
A
n
t_k
M_k
v_k=atan2(sqrt(1-e^2)*sin(E_k)/(1-e*cos(E_k)),(cos(E_k)-e)/(1e*cos(E_k)))
phi_k=v_k+omega
du_k=C_us*sin(2*phi_k)+C_uc*cos(2*phi_k)
dr_k=C_rs*sin(2*phi_k)+C_rc*cos(2*phi_k)
di_k=C_is*sin(2*phi_k)+C_ic*cos(2*phi_k)
u_k=phi_k+du_k
r_k=A*(1-e*cos(E_k))+dr_k
i_k=i_0+di_k+t_k*DiDot
x_kprime=r_k*cos(u_k)
y_kprime=r_k*sin(u_k)
Omega_k=DOmega_0+(DOmegaDot-omega_ie)*t_k-omega_ie*t_oe
format long
x_k=x_kprime*cos(Omega_k)-y_kprime*cos(i_k)*sin(Omega_k)
y_k=x_kprime*sin(Omega_k)+y_kprime*cos(i_k)*cos(Omega_k)
z_k=y_kprime*sin(i_k)
format short
169
y_kprime = 8.5267e+006
Omega_k = -27.1159
x_k =
-5.678411013083118e+006
y_k =
-2.492396293091095e+007
z_k =
7.056518876151539e+006
Ek
t r = Fe A sin( E k )
-9.1449e-009
t SV = a 0 + a1 (t SV t oc ) + a 2 (t SV t oc ) 2
+ t r
t = t SV t SV
3.2956e-005
4.0327e+005
2.6559e+007
n0 = / A 3
rad/s
1.4587e-004
t k = t t oe
-7.1271e+003
n = n 0 + n
rad/s
1.4587e-004
M k = M 0 + tk n
rad
1.2033
E k = M k + e sin( E k )
rad
1.2073
1 e 2 sin( E ) cos( E ) e
k
k
,
v k = arctan 2
1 e cos( E ) 1 e cos( E )
k
k
k = vk +
rad
1.2113
rad
0.3274
u k = C us sin( 2 k ) + C uc cos( 2 k )
rk = C rs sin( 2 k ) + C rc cos( 2 k )
i k = C is sin( 2 k ) + C ic cos( 2 k )
u k = k + u k
rk = A[1 e cos( E k )] + rk
i k = i0 + i k + t k i&
rad
-2.0003e-006
143.0967
rad
5.4489e-008
rad
0.3274
2.6519e+007
rad
0.9748
x k = rk cos(u k )
2.5111e+007
y k = rk sin(u k )
8.5267e+006
k = 0 + (& ie )t k ie t oe
rad
-27.1159
A = ( A)
170
-5678411.01
-24923962.93
z k = y k sin(i k )
7056518.87
0
0
0
(13.10)
~
r = Hx r + + r
Mivel 0 , r normja jelentsen kisebb, mint normja, ezrt csak kompenzlsra koncentrlunk. (13.10)-bl s a bzislloms helyzetnek pontos ismeretbl kvetkezik, hogy
~ = x + (HT H ) 1 HT ( + ) x + (HT H ) 1 HT
(HT H ) 1 HT
0
0
0
0
x 0 = x 0 + x 0 x 0 = 0
~ (HT H ) 1 HT
(HT H ) 1 HT
(13.11)
~ = x + (H T H ) 1 H T ( + ) x + (H T H ) 1 H T
(H H) H
r
r
r
r
~ (H T H ) 1 H T
x (H T H ) 1 H T
T
~ (H T H ) 1 H T ~
= (H H ) H
0
r
T
(13.12)
(13.13)
Clszer teht bevezetni egy x corr korrekcis tagot, amellyel a vev ECEF pozcijnak a becslsbl eltntethet a dominns (H T H ) 1 H T tag hatsa, miltal
a vev pozci-meghatrozsnak pontossga jelentsen javul:
171
x corr = (H T H ) 1 H T ~
0
(13.14a)
~ + x
x r := (H T H ) 1 H T
r
corr
x r := x r 0 + x r
(13.14b)
(13.14c)
Egyttal az is kvetkezik a fentiekbl, hogy a bzisllomsnak a jrmvek szmra a x corr zenetet kell forgalmaznia.
172
(14.1)
(14.2)
ax
1
a y = v& + v Fgravity .
m
a
z
(14.3)
173
A tovbbiakban gyelni kell arra, hogy az egyes vektorok milyen koordintarendszerben keletkeznek, s a szksges koordinta transzformcikat ki kell dolgozni s alkalmazni kell.
A vizsglt problma egy ngyrotoros beltri helikopter (UAV)
rzkelrendszert mutatja be, ezrt a beltri jelleg kvetkeztben pozci/orientci
rzkelsre GPS technika nem alkalmazhat (beltrben rendszerint nem vehet a
szatellitek jele). Ezrt pozci s orientci rzkelsre marker-bzis kpfeldolgoz
rendszer alkalmazhat. A helikopterre vilgt ledek vannak szerelve, amelyek
markerknt szolglnak, s amelyek mozgst a szoba mennyezetre szerelt kamera
detektlja, s a mozgs sztereo (motion stereo) elmletre alapozva meghatrozza a
helikopter pozcijt s orientcijt.
Az IMU a helikopterre van szerelve, sajt processzora van, amely CAN buszon
keresztk kommunikl a helikopter begyazott szablyozjval, amely egy
Freescale MPC555 processzorral van megvalstva. Az IMU kb. 100 Hz mintavteli
frekvencival tudja mrni a 3D gyorsulst s szggyorsulst. A kpfeldolgoz rendszer egy host szmtgpen fut, 10 frame/sec gyakorisggal kld pozci s orientci informcit a begyazott szablyoz szmra. A nem mrhet llapotvltozk
becslse a mrt jelekre van alapozva, az llapotbecslst kiterjesztett Kalman-szrk
vgzik.
(14.4)
A K W keretet j kzeltsel inercia keretnek tekinthetjk a rvididej szablyozsok szmra. A helikopter pozcijt s orientcijt K W = K H 0 -hoz kpest jellemezhetjk a = ( x, y , z ) T pozcivektorral s a = ( , , ) T orientcival,
ahol , , a navigciban hasznlt Euler-szgek (a robotikban RPY-szgek)
s AKW , K H = A( , , ) az orientcis mtrix:
174
C S S S C
S S S + C C
C S
C S C + S S
S S C C S
C C
(14.5)
= 0 C
0 S
S
C S
C C
(14.6)
Itt
KH
S = S , 0 + S ,b + S , n
(14.7a)
AS S = AS S ,0 + AS S ,b + AS s , n
(14.7b)
:= AS S ,0 = AS S AS S ,b + AS s ,n
(14.7c)
navigciban
= ( P, Q, R) T , amelybl
kiszmthatk, felhasznlvn hogy
1 T S
C
=: F ( , ) = 0
0 S / C
az
Euler-szgek
T C
S
C / C
derivltjai
(14.8)
175
&
& = F ( , ) == FAS S ,b + FAS S + FAS S ,n
&
& S ,b = S ,b, n
(14.9a)
= +
m n
(14.9b)
(14.10)
y k = x1,k + z k
x k +1 = f ( x k , u k , wk )
y k = g (xk , z k )
Tegyk fel, hogy w s z korrellatlanok, s vezessk be a kvetkez jellseket:
R w, k = E[ wk wkT ], R z ,k = E[ z k z kT ]
Ak 1 =
f ( x k 1 , u k 1 ,0)
f ( x k 1 , u k 1 ,0)
, B w,k 1 =
, R w,k 1 := B w, k 1 R w,k 1 B wT ,k 1
x
w
g ( x k ,0)
g ( x k ,0)
Ck =
, C z ,k =
, R z ,k := C z ,k R z ,k C zT,k
x
z
(14.11)
176
2. Time update:
S k = C k M k C kT + C z , k R z ,k C zT, k
G k = M k C kT S k1
x k = x k + G k ( y k g ( x k ,0) )
k = M k G k S k G kT
Mivel az IMU mintavteli ideje 10 ms, mg a kpfeldolgozs 100 ms, ezrt ha
nem rkezett orientci adat, akkor a time update mdosul: x k := x k + 0 , mikzben
a tbbi szmts elvgrsre kerl.
AS1
(a + p S
(14.12a)
+ ( p S ) )
(14.12b)
1
a m := AS a S p S ( p S ) + A( , , ) g
(14.12c)
(14.13a)
p& = A( , , )v + v p ,n
pm = p + pn
(14.13b)
A folytonosidej nemlineris modell knnyen trhat diszkrtidejv az Eulerapproximci felhasznlsval, s a kvetkez alakot veszi fel:
177
x = (v T , a ST ,b , p T ) T , u = a m , w = (a ST , n , a ST ,b, n , v Tp , n ) T
y = pm , z = pn
v k +1 = v k + T ( k v k AS , k a S ,b,k + a m,k ) + TAS ,k a S ,n, k
a S ,b,k +1 = a S ,b,k + Ta S ,b,n,k
p k +1 = p k + TAk v k + Tv p ,n, k
(14.14)
p m, k = p k + p n, k
x k +1 = f ( x k , u k , wk )
y k = g (xk , z k )
178
Ezen kvl fontos rendszertechnikai szempont, hogy az EKF-en alapul llapotbecsls stabilitst az elmlet ltalban nem garantlja. Problmk esetn a T mintavteli id cskkentse javasolhat, amely az Euler-approximci pontossgt is
javtja. A ngyrotoros helikopter (UAV) begyazott irnytsa sorn a ktszint kiterjesztett Kalman-szrvel stabilitsi problmk nem lptek fel.
Az llapotbecsls az irnytsi algoritmus rsze. Az irnytsi trvny n.
visszalpses (backstepping) stabilizlsi technikt hasznl (lsd pl. Lantos: Irnytsi rendszerek elmlete s tervezse II. Akadmiai Kiad, 2003).
Az llapotbecslst s az irnytsi trvnyt Freescale MPC 555 processzor realizlja vals idben. A begyazott szablyoz MATLAB/Simulink krnyezetben fejleszthet s a MATLAB, Simulink, Real Time Workshop, MPC555 Target
Compiler segtsgvel kifordthat a target processzorra (gyors prototpus tervezs).
A begyazott szablyoz repls eltti tesztelse hasonl technikval vgezhet
a dSPACE DS1103 eszkz bevonsval, ahol a DS1103 szimullja a helikopter dinamikt, a beavatkoz szerveket s a szenzor rendszert (hardware-in-the-loop test).
A kt komponens kztt az adatforgalom a valsgnak megfelelen CAN
buszon keresztl trtnhet a tesztels sorn.