Changeset 1168 for applications/pmsm

Show
Ignore:
Timestamp:
08/27/10 17:05:55 (14 years ago)
Author:
smidl
Message:

pmsm stuff fro bierman

Location:
applications/pmsm
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • applications/pmsm/CMakeLists.txt

    r744 r1168  
    2222## Build simulator 
    2323add_subdirectory (simulator_zdenek) 
    24 #add_subdirectory (simulator_zdenek/ekf_example) 
     24add_subdirectory (simulator_zdenek/ekf_example) 
    2525 
    2626## Use it 
    2727include_directories (./simulator_zdenek) 
    2828link_directories (./simulator_zdenek) 
    29 #link_directories (./simulator_zdenek/ekf_example) 
     29link_directories (./simulator_zdenek/ekf_example) 
    3030 
    31 EXEC (pmsm_estim pmsmsim) 
     31EXEC (pmsm_estim pmsmsim ekf_obj) 
    3232#EXEC (sim pmsmsim) 
    3333#EXEC (sim_var pmsmsim) 
  • applications/pmsm/pmsm_estim.cpp

    r706 r1168  
    1313#include "filters.h" 
    1414#include "base/datasources.h" 
    15  
     15#include "simulator_zdenek/ekf_example/ekf_obj.h" 
    1616 
    1717using namespace bdm; 
  • applications/pmsm/simulator_zdenek/ekf_example/ekf_obj.cpp

    r384 r1168  
    88 
    99/////////////// 
    10 void EKFfixed::bayes(const vec &dt){ 
    11         ekf(dt(2),dt(3),dt(0),dt(1)); 
     10void EKFfixed::bayes(const vec &yt, const vec &ut){ 
     11        ekf(yt(0),yt(1),ut(0),ut(1)); 
     12         
    1213        vec xhat(4);     
    1314        //UGLY HACK!!! reliance on a predictor!! 
     
    1516        xhat(1)=zprevod(x_est[1],Qm)*Iref; 
    1617        xhat(2)=zprevod(x_est[2],Qm)*Wref; 
    17         xhat(3)=zprevod(x_est[3],15); 
     18        xhat(3)=zprevod(x_est[3],15)*Thetaref; 
    1819         
    1920        E.set_mu(xhat); 
     
    3334                double* Pp=Pfull._data(); 
    3435                for(int i=0;i<16;i++){*(Pp++) = zprevod(P_est[i],15);} 
     36                 
     37                E._R()._M()=Pfull; 
     38                 
    3539                 
    3640                BM::ll = -0.5* ( 4 * 1.83787706640935 +log ( det ( Pfull ) ) +xdif* ( inv(Pfull)*xdif ) ); 
  • applications/pmsm/simulator_zdenek/ekf_example/ekf_obj.h

    r384 r1168  
    6565        //! Default constructor 
    6666        EKFfixed ():BM(),E(),Ry(2,2){ 
    67         int i; 
    68  for(i=0;i<16;i++){Q[i]=0;} 
    69  for(i=0;i<4;i++){R[i]=0;} 
     67                int i; 
     68                for(i=0;i<16;i++){Q[i]=0;} 
     69                for(i=0;i<4;i++){R[i]=0;} 
    7070 
    71  for(i=0;i<4;i++){x_est[i]=0;} 
    72  for(i=0;i<4;i++){x_pred[i]=0;} 
    73  for(i=0;i<16;i++){P_pred[i]=0;} 
    74  for(i=0;i<16;i++){P_est[i]=0;} 
    75  P_est[0]=0x7FFF; 
    76  P_est[5]=0x7FFF; 
    77  P_est[10]=0x7FFF; 
    78  P_est[15]=0x7FFF; 
    79  for(i=0;i<2;i++){Y_mes[i]=0;} 
    80  for(i=0;i<2;i++){ukalm[i]=0;} 
    81  for(i=0;i<8;i++){Kalm[i]=0;} 
     71                for(i=0;i<4;i++){x_est[i]=0;} 
     72                for(i=0;i<4;i++){x_pred[i]=0;} 
     73                for(i=0;i<16;i++){P_pred[i]=0;} 
     74                for(i=0;i<16;i++){P_est[i]=0;} 
     75                P_est[0]=0x7FFF; 
     76                P_est[5]=0x7FFF; 
     77                P_est[10]=0x7FFF; 
     78                P_est[15]=0x7FFF; 
     79                for(i=0;i<2;i++){Y_mes[i]=0;} 
     80                for(i=0;i<2;i++){ukalm[i]=0;} 
     81                for(i=0;i<8;i++){Kalm[i]=0;} 
    8282 
    83  for(i=0;i<16;i++){PSI[i]=0;} 
    84 }; 
     83                for(i=0;i<16;i++){PSI[i]=0;} 
     84 
     85                set_dim(4); 
     86                E._mu()=zeros(4); 
     87                E._R()=zeros(4,4); 
     88                init_ekf(0.000125); 
     89        }; 
    8590        //! Here dt = [yt;ut] of appropriate dimensions 
    86         void bayes ( const vec &dt ); 
     91        void bayes ( const vec &yt, const vec &ut ); 
    8792        //!dummy! 
    88         epdf& posterior(){return E;}; 
    89         void condition ( const vec &Q0 ) { 
    90                  
    91                 Q[0]=prevod(minQ(Q0(0)),15);       // 0.05 
    92                 Q[5]=prevod(minQ(Q0(1)),15); 
    93                 Q[10]=prevod(minQ(Q0(2)),15);      // 1e-3 
    94                 Q[15]=prevod(minQ(Q0(3)),15);      // 1e-3 
    95  
    96         } 
     93        const epdf& posterior() const {return E;}; 
     94         
    9795}; 
    9896 
     97UIREGISTER(EKFfixed); 
    9998 
    10099#endif // KF_H