Adaptative high-gain extended Kalman filter and applications
Adaptative high-gain extended Kalman filter and applications
Adaptative high-gain extended Kalman filter and applications
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
tel-00559107, version 1 - 24 Jan 2011<br />
C.3 AEKF Computational Functions C Code<br />
block−>x [1]= block−>x [ 1 ] ∗ block−>x [ 0 ] ;<br />
block−>x [2]= block−>x [ 2 ] ∗ block−>x [ 0 ] ;<br />
}<br />
else if ( f l a g ==1)<br />
{/∗ OUTPUT ∗/<br />
/∗ change o f v a r i a b l e s , normal form c o o r d i n a t e s −> o r i g i n a l ..<br />
c o o r d i n a t e s ∗/<br />
block−>outptr [ 0 ] [ 0 ] = block−>x [ 0 ] ;<br />
block−>outptr [ 0 ] [ 1 ] = block−>x [ 1 ] / block−>x [ 0 ] ;<br />
/∗ Estimated t o r q u e ∗/<br />
block−>outptr [ 0 ] [ 2 ] = block−>x [ 2 ] / block−>x [ 0 ] ;<br />
/∗ High−<strong>gain</strong> parameter ∗/<br />
block−>outptr [ 0 ] [ 3 ] = block−>x [ n+N ] ;<br />
}<br />
else if ( f l a g ==0)<br />
{/∗ DERIVATIVE ∗/<br />
double p=0,K2=0.068 , J =0.0044 , B=0.0026;<br />
double L=1.22 , Res =5.4183 , K1=0.068;<br />
double DT=0.01 , theta1 =1.25 , lambda=100 , Beta =2000;<br />
double m1=0.005 ,m2=0.004 ,m=m1+m2;<br />
double V=block−>i n p t r [ 0 ] [ 0 ] ;<br />
double Y=block−>i n p t r [ 0 ] [ 1 ] ;<br />
double Inn=block−>i n p t r [ 0 ] [ 2 ] ;<br />
double SI , F0 ;<br />
double z1=block−>x [ 0 ] , z2=block−>x [ 1 ] ;<br />
double z3=block−>x [ 2 ] , t heta=block−>x [ n+N ] ;<br />
double e r r e u r=Y−z1 ;<br />
double Ab [ 9 ] ;<br />
double P11=block−>x [ 3 ] , P21=block−>x [ 4 ] , P31=block−>x [ 5 ] , P22=..<br />
block−>x [ 6 ] , P32=block−>x [ 7 ] , P33=block−>x [ 8 ] ;<br />
double q1=1, q2 =0.1 , q3 =0.01;<br />
if(Yxd [ 0 ] = (V−Res∗z1−K1∗ z2 ) /L+theta ∗ block−>x [ n+0]∗ e r r e u r ; ..<br />
// dz1 / dt =...+P11∗ e r r e u r<br />
block−>xd [ 1 ] = (V∗ z2 /z1−Res∗z2−K1∗ z2∗ z2 / z1 ) /L+(K2∗ z1∗ z1∗z1−B∗..<br />
z2−z3−p∗pow( z2 , 2 . 0 8 ) /pow( z1 , 1 . 0 8 ) ) /J+theta ∗ block−>x [ n..<br />
+1]∗ e r r e u r ; // dz2 / dt =...+P21∗ e r r e u r<br />
block−>xd [ 2 ] = (V∗ z3 /z1−Res∗z3−K1∗ z2∗ z3 / z1 ) /L+theta ∗ block−>x [ n..<br />
+2]∗ e r r e u r ; // dz3 / dt =...+P31∗ e r r e u r<br />
/∗ D e f i n i t i o n o f t h e matrix Ab=(A( u )+b s t a r ) ∗/<br />
Ab[0]=−Res/L ; // b ( 1 , 1 )<br />
Ab[ 1 ] = (K1∗ z2∗z2−V∗ z2 ) /(L∗ z1∗ z1 ) +(3∗K2∗ z1∗ z1 +1.08∗p∗pow( z2 /z1 ..<br />
, 2 . 0 8 ) ) /J ; // b ( 2 , 1 )<br />
Ab[ 2 ] = (K1∗ z2∗z3−V∗ z3 ) /(L∗ z1∗ z1 ) ; // b ( 3 , 1 )<br />
Ab[3]=−K1/L ;<br />
158