Changeset 279 for pmsm

Show
Ignore:
Timestamp:
02/24/09 14:12:19 (15 years ago)
Author:
smidl
Message:

Transition of pmsm and libKF

Location:
pmsm
Files:
1 added
1 removed
5 modified
11 moved

Legend:

Unmodified
Added
Removed
  • pmsm/CMakeLists.txt

    r257 r279  
    66 
    77# no simulator needed... 
    8 EXEC (pmsm_unkQ ) 
    9 EXEC (pmsm_unkQpf) 
    108EXEC(testbidiff) 
    119 
     
    2220#link_directories (./simulator_zdenek/ekf_example) 
    2321 
    24 EXEC (pmsm_sim pmsmsim) 
    25 EXEC (pmsm_sim2 pmsmsim) 
    26 EXEC (mpf_test pmsmsim) 
    27 EXEC (mpf_u_weight pmsmsim) 
    28 EXEC (mpf_u_delta pmsmsim) 
    29 EXEC (mpf_u_delta_real pmsmsim) 
    30 EXEC (mpf_load pmsmsim) 
    31  
    32 EXEC (sim pmsmsim) 
    33 EXEC (sim_var pmsmsim) 
    34 EXEC (sim_var_arx pmsmsim) 
    35 EXEC (pmsm_mix pmsmsim) 
    36  
     22EXEC (pmsm_estim pmsmsim) 
  • pmsm/mpf_load.cpp

    r278 r279  
    6262        mat Q =diag( Qdiag ); 
    6363        mat R =diag ( Rdiag ); 
    64         EKFfull Efix ( rx,ry,ru ); 
     64        EKFfull Efix; 
    6565        Efix.set_est ( mu0, 1*eye ( 4 )  ); 
    6666        Efix.set_parameters ( &fxu0,&hxu,diag(Qdiag0),R); 
    6767 
    68         RV rMz=RV("{Mz }"); 
    69         mlnorm<ldmat> evolMz(rMz,rMz); 
     68        mlnorm<ldmat> evolMz; 
    7069        evolMz.set_parameters(mat("1"),vec("0"),ldmat(1.0*vec("1"))); 
    7170        evolMz.condition(" 0.0"); 
    7271         
    73         EKFCh_cond Ep ( rx,ry,ru,rMz ); 
     72        EKFCh_cond Ep; 
    7473        Ep.set_est ( mu0, 1*eye ( 4 ) ); 
    7574        Ep.set_parameters ( &fxu,&hxu,Q,R); 
    7675         
    77         MPF<EKFCh_cond> M ( rx,rMz,evolMz,evolMz, Npart, Ep  ); 
    78         M.set_est(evolMz.posterior()); 
     76        MPF<EKFCh_cond> M ( &evolMz, &evolMz, Npart, Ep  ); 
     77        M.set_est(evolMz._epdf()); 
    7978 
    8079        //LOG 
    8180        int X_log = L.add(rx,"X"); 
    8281        int E_log = L.add(rx,"EX"); 
    83         int M_log = L.add(concat(rMz,rx),"MX"); 
     82        int M_log = L.add(concat(RV("Mz",1),rx),"MX"); 
    8483        L.init(); 
    8584 
  • pmsm/mpf_test.cpp

    r278 r279  
    4545        chmat Q ( Qdiag ); 
    4646        chmat R ( Rdiag ); 
    47         EKFCh KFE ( rx,ry,ru ); 
     47        EKFCh KFE ; 
    4848        KFE.set_parameters ( &fxu,&hxu,Q,R ); 
    4949        KFE.set_est ( mu0, chmat ( zeros ( 4 ) ) ); 
    5050 
    5151        RV rQ ( "{Q }","4" ); 
    52         EKFCh_unQ KFEp ( rx,ry,ru,rQ ); 
     52        EKFCh_unQ KFEp ; 
    5353        KFEp.set_parameters ( &fxu,&hxu,Q,R ); 
    5454        KFEp.set_est ( mu0, chmat ( zeros ( 4 ) ) ); 
    5555 
    5656        //mgamma_fix evolQ ( rQ,rQ ); 
    57         migamma_fix evolQ ( rQ,rQ ); 
    58         MPF<EKFCh_unQ> M ( rx,rQ,evolQ,evolQ,Npart,KFEp ); 
     57        migamma_fix evolQ ; 
     58        MPF<EKFCh_unQ> M ( &evolQ,&evolQ,Npart,KFEp ); 
    5959        // initialize 
    6060        evolQ.set_parameters ( 0.1, 10*Qdiag, 1.0); //sigma = 1/10 mu 
  • pmsm/old/mpf_u_delta.cpp

    r278 r279  
    3030public: 
    3131        //! Default constructor 
    32         EKFCh_du_kQ ( RV rx, RV ry,RV ru,RV rC ) :EKFCh ( rx,ry,ru ),BMcond ( rC ),Qref(rx.count()) {}; 
     32        EKFCh_du_kQ ( ) :EKFCh ( ),BMcond (),Qref() {}; 
    3333        void set_ref(const chmat &Qref0){Qref=Qref0;} 
    3434        void condition ( const vec &val ) { 
     
    9898        mat Q2o=diag(Qdiag); 
    9999        chmat R ( Rdiag ); 
    100         EKFCh KFE ( rx,ry,ru ); 
     100        EKFCh KFE ; 
    101101        KFE.set_parameters ( &fxu0,&hxu,Q,R ); 
    102102        KFE.set_est ( mu0, chmat ( ones ( 4 ) ) ); 
    103103 
    104104        RV rUd ( "{ud k}", "2 1" ); 
    105         EKFCh_du_kQ KFEp ( rx,ry,ru,rUd ); 
     105        EKFCh_du_kQ KFEp ; 
    106106        KFEp.set_parameters ( &fxu,&hxu,Q,R ); 
    107107        KFEp.set_ref(Q); 
    108108        KFEp.set_est ( mu0, chmat ( ones ( 4 ) ) ); 
    109109 
    110         mlnorm<ldmat> evolUd ( rUd,rUd ); 
    111         MPF<EKFCh_du_kQ> M ( rx,rUd,evolUd,evolUd,Npart,KFEp ); 
     110        mlnorm<ldmat> evolUd ; 
     111        MPF<EKFCh_du_kQ> M ( &evolUd,&evolUd,Npart,KFEp ); 
    112112        // initialize 
    113113        vec Ud0="0 0 1.0"; 
    114114        evolUd.set_parameters ( eye ( 3 ), zeros(3), ldmat ( vec( "1e-4 1e-4 10e-4" ))); 
    115115        evolUd.condition ( Ud0 ); 
    116         epdf& pfinit=evolUd.posterior(); 
     116        epdf& pfinit=evolUd._epdf(); 
    117117        M.set_est ( pfinit ); 
    118118        evolUd.set_parameters ( eye ( 3 ), zeros(3), ldmat ( vec(" 7e-4 7e-4 1e-5" ))); 
  • pmsm/old/mpf_u_delta_real.cpp

    r278 r279  
    8383        chmat Q ( Qdiag ); 
    8484        chmat R ( Rdiag ); 
    85         EKFCh KFE ( rx,ry,ru ); 
     85        EKFCh KFE ; 
    8686        KFE.set_parameters ( &fxu0,&hxu,Q,R ); 
    8787        KFE.set_est ( mu0, chmat ( ones ( 4 ) ) ); 
    8888 
    8989        RV rUd ( "{ud }", "2" ); 
    90         EKFCh_cond KFEp ( rx,ry,ru,rUd ); 
     90        EKFCh_cond KFEp ; 
    9191        KFEp.set_parameters ( &fxu,&hxu,Q,R ); 
    9292        KFEp.set_est ( mu0, chmat ( ones ( 4 ) ) ); 
    9393 
    94         mlnorm<ldmat> evolUd ( rUd,rUd ); 
    95         MPF<EKFCh_cond> M ( rx,rUd,evolUd,evolUd,Npart,KFEp ); 
     94        mlnorm<ldmat> evolUd ; 
     95        MPF<EKFCh_cond> M ( &evolUd,&evolUd,Npart,KFEp ); 
    9696        // initialize 
    9797        vec Ud0="0 0"; 
    9898        evolUd.set_parameters ( eye ( 2 ), vec_2 ( 0.0,0.0 ), ldmat ( 10.0*eye ( 2 ) ) ); 
    9999        evolUd.condition ( Ud0 ); 
    100         epdf& pfinit=evolUd.posterior(); 
     100        epdf& pfinit=evolUd._epdf(); 
    101101        M.set_est ( pfinit ); 
    102102        evolUd.set_parameters ( eye ( 2 ), vec_2 ( 0.0,0.0 ), ldmat ( 0.005*eye ( 2 ) ) ); 
  • pmsm/old/mpf_u_weight.cpp

    r278 r279  
    2828class EKFCh_cond : public EKFCh , public BMcond { 
    2929public: 
    30         //! Default constructor 
    31         EKFCh_cond ( RV rx, RV ry,RV ru,RV rC ) :EKFCh ( rx,ry,ru ),BMcond ( rC ) {}; 
     30        //! condition on value of pfxu 
    3231        void condition ( const vec &val ) { 
    3332                pfxu->condition ( val ); 
     
    9291        chmat Q ( Qdiag ); 
    9392        chmat R ( Rdiag ); 
    94         EKFCh KFE ( rx,ry,ru ); 
     93        EKFCh KFE; 
    9594        KFE.set_parameters ( &fxu0,&hxu,Q,R ); 
    9695        KFE.set_est ( mu0, chmat ( ones ( 4 ) ) ); 
    9796 
    9897        RV rW ( "{w }" ); 
    99         EKFCh_cond KFEp ( rx,ry,ru,rW ); 
     98        EKFCh_cond KFEp; 
    10099        KFEp.set_parameters ( &fxu,&hxu,Q,R ); 
    101100        KFEp.set_est ( mu0, chmat ( ones ( 4 ) ) ); 
    102101 
    103         mgamma_fix evolW ( rW,rW ); 
    104         MPF<EKFCh_cond> M ( rx,rW,evolW,evolW,Npart,KFEp ); 
     102        mgamma_fix evolW ; 
     103        MPF<EKFCh_cond> M (&evolW,&evolW,Npart,KFEp ); 
    105104        // initialize 
    106105        vec W0="0.5"; 
    107106        evolW.set_parameters ( 10.0, W0, 1.0 ); //sigma = 1/10 mu 
    108107        evolW.condition ( W0 ); 
    109         epdf& pfinit=evolW.posterior(); 
     108        epdf& pfinit=evolW._epdf(); 
    110109        M.set_est ( pfinit ); 
    111110        evolW.set_parameters ( 100.0, W0, 0.99 ); //sigma = 1/10 mu 
  • pmsm/old/pmsm_mix.cpp

    r271 r279  
    5757        mat Q =diag( Qdiag ); 
    5858        mat R =diag ( Rdiag ); 
    59         EKFfull Efix ( rx,ry,ru ); 
     59        EKFfull Efix ; 
    6060        Efix.set_est ( mu0, 1*eye ( 4 )  ); 
    6161        Efix.set_parameters ( &fxu,&hxu,Q,R); 
    6262 
    6363        RV rQR( "{Q R }", "4 2 "); 
    64         EKFful_unQR EKU (rx,ry,ru,rQR); 
     64        EKFful_unQR EKU; 
    6565        EKU.set_est ( mu0,  1*ones ( 4 ) ); 
    6666        EKU.set_parameters ( &fxu,&hxu,diag(Qdiag),diag(Rdiag) ); 
    6767 
    6868        //QU model 
    69         egamma Gcom(rQR);Gcom.set_parameters(ones(6),vec("1 1 1e4 1e10 1 1")); 
     69        egamma Gcom;Gcom.set_parameters(ones(6),vec("1 1 1e4 1e10 1 1")); 
    7070/*      cout << Gcom.mean() <<endl; 
    7171        cout << Gcom.sample() <<endl;*/ 
    72         euni Ucom(rQR); Ucom.set_parameters(zeros(6),vec("60 60 453 0.03 100 100")); 
     72        euni Ucom; Ucom.set_parameters(zeros(6),vec("60 60 453 0.03 100 100")); 
    7373/*      cout << Ucom.mean() <<endl; 
    7474        cout << Ucom.sample() <<endl;*/ 
     
    7676        Coms(0) = &Gcom; 
    7777        Coms(1) = &Ucom; 
    78         emix Eevol(rQR);        Eevol.set_parameters("0.1 0.9", Coms); 
     78        emix Eevol;     Eevol.set_parameters("0.1 0.9", Coms); 
    7979//      cout << Eevol.sample() <<endl; 
    8080 
    8181        mepdf evolQR(&Eevol); 
    82         MPF<EKFful_unQR> M ( rx,rQR, evolQR, evolQR, Npar, EKU ); 
    83         M.set_est ( evolQR.posterior() ); 
     82        MPF<EKFful_unQR> M (  &evolQR, &evolQR, Npar, EKU ); 
     83        M.set_est ( evolQR._epdf() ); 
    8484 
    8585        const epdf& Efix_ep = Efix.posterior(); 
  • pmsm/old/pmsm_sim.cpp

    r271 r279  
    2525public: 
    2626        //! Default constructor 
    27         EKF_unQ ( RV rx, RV ry,RV ru,RV rQ ) :EKFCh ( rx,ry,ru ),BMcond ( rQ ) {}; 
    2827        void condition ( const vec &Q0 ) { 
    2928                Q.setD ( Q0,0 ); 
     
    5352        chmat Q ( Qdiag ); 
    5453        chmat R ( Rdiag ); 
    55         EKFCh KFE ( rx,ry,ru ); 
     54        EKFCh KFE ; 
    5655        KFE.set_parameters ( &fxu,&hxu,Q,R ); 
    5756        KFE.set_est ( mu0, chmat ( 1*ones ( 4 ) ) ); 
    5857 
    5958        RV rQ ( "{Q }","2" ); 
    60         EKF_unQ KFEp ( rx,ry,ru,rQ ); 
     59        EKF_unQ KFEp; 
    6160        KFEp.set_parameters ( &fxu,&hxu,Q,R ); 
    6261        KFEp.set_est ( mu0, chmat ( zeros ( 4 ) ) ); 
    6362 
    64         mgamma evolQ ( rQ,rQ ); 
    65         MPF<EKF_unQ> M ( rx,rQ,evolQ,evolQ,Npart,KFEp ); 
     63        mgamma evolQ ; 
     64        MPF<EKF_unQ> M (&evolQ,&evolQ,Npart,KFEp ); 
    6665        // initialize 
    67         evolQ.set_parameters ( 10.0 ); //sigma = 1/10 mu 
     66        evolQ.set_parameters ( 10.0, "0.01 0.01" ); //sigma = 1/10 mu 
    6867        evolQ.condition ( "0.01 0.01" ); //Zdenek default 
    69         epdf& pfinit=evolQ.posterior(); 
     68        epdf& pfinit=evolQ._epdf(); 
    7069        M.set_est ( pfinit ); 
    71         evolQ.set_parameters ( 10.0 ); 
     70        evolQ.set_parameters ( 10.0,  "0.01 0.01"); 
    7271 
    7372        // 
  • pmsm/old/pmsm_sim2.cpp

    r271 r279  
    2727public: 
    2828        //! Default constructor 
    29         EKF_unQ ( RV rx, RV ry,RV ru,RV rQ ) :EKFCh ( rx,ry,ru ),BMcond ( rQ ) {}; 
    3029        void condition ( const vec &Q0 ) { 
    3130                Q.setD ( Q0,0 ); 
     
    4847class EKF_unQful : public EKFfull , public BMcond { 
    4948public: 
    50         //! Default constructor 
    51         EKF_unQful ( RV rx, RV ry,RV ru,RV rQ ) :EKFfull ( rx,ry,ru ),BMcond ( rQ ) {}; 
    5249        void condition ( const vec &Q0 ) { 
    5350                Q=diag(Q0); 
     
    8986        chmat Q ( Qdiag ); 
    9087        chmat R ( Rdiag ); 
    91         EKFCh KFE ( rx,ry,ru ); 
     88        EKFCh KFE ; 
    9289        KFE.set_est ( mu0, chmat( 1*eye ( 4 ) ) ); 
    9390        KFE.set_parameters ( &fxu,&hxu,Q,R); 
    9491 
    9592        RV rQ ( "{Q}","4" ); 
    96         EKF_unQful KFEp ( rx,ry,ru,rQ ); 
     93        EKF_unQful KFEp ; 
    9794        KFEp.set_est ( mu0,  1*ones ( 4 ) ); 
    9895        KFEp.set_parameters ( &fxu,&hxu,diag(Qdiag),diag(Rdiag) ); 
    9996 
    100         mgamma_fix evolQ ( rQ,rQ ); 
    101         MPF<EKF_unQful> M ( rx,rQ,evolQ,evolQ,Npart,KFEp ); 
     97        mgamma_fix evolQ ; 
     98        MPF<EKF_unQful> M ( &evolQ,&evolQ,Npart,KFEp ); 
    10299        // initialize 
    103100        evolQ.set_parameters ( 1000.0 ,Qdiag, 0.5); //sigma = 1/10 mu 
    104101        evolQ.condition ( Qdiag ); //Zdenek default 
    105         epdf& pfinit=evolQ.posterior(); 
     102        epdf& pfinit=evolQ._epdf(); 
    106103        M.set_est ( pfinit ); 
    107104        evolQ.set_parameters ( 100000.0, Qdiag, 0.9999 ); 
  • pmsm/old/pmsm_unkQ.cpp

    r278 r279  
    4646        chmat Q ( Qdiag ); 
    4747        chmat R ( Rdiag ); 
    48         EKFCh KFE ( rx,ry,ru ); 
     48        EKFCh KFE ; 
    4949        KFE.set_est ( mu0, chmat ( 1000*ones ( 4 ) ) ); 
    5050        KFE.set_parameters ( &fxu,&hxu,Q,R ); 
     
    5757                vec Qid ( Qdiag ); 
    5858                Qid ( 0 ) = vQ ( i ); Qid ( 1 ) = vQ ( i ); 
    59                 kfArray[i]= new EKFCh ( rx,ry,ru ); 
     59                kfArray[i]= new EKFCh; 
    6060                kfArray[i]->set_est ( mu0, chmat ( 1000*ones ( 4 ) ) ); 
    6161                kfArray[i]->set_parameters ( &fxu,&hxu,chmat ( Qid ),R ); 
  • pmsm/old/pmsm_unkQpf.cpp

    r278 r279  
    2424public: 
    2525        //! Default constructor 
    26         EKF_unQ ( RV rx, RV ry,RV ru,RV rQ ) :EKFCh ( rx,ry,ru ),BMcond ( rQ ) {}; 
    2726        void condition ( const vec &Q0 ) { 
    2827                Q.setD ( Q0,0 ); 
     
    5352 
    5453        RV rQ ( "{Q}","2" ); 
    55         EKF_unQ KFE ( rx,ry,ru,rQ ); 
     54        EKF_unQ KFE ; 
    5655        KFE.set_parameters ( &fxu,&hxu,Q,R ); 
    5756        KFE.set_est ( mu0, chmat ( 1000*ones ( 4 ) ) ); 
    5857 
    59         mgamma evolQ ( rQ,rQ ); 
     58        mgamma evolQ ; 
    6059        //evolQ.set_parameters ( 10000.0 ); //sigma = 1/10 mu 
    6160 
    62         MPF<EKF_unQ> M ( rx,rQ,evolQ,evolQ,100,KFE ); 
     61        MPF<EKF_unQ> M ( &evolQ,&evolQ,100,KFE ); 
    6362 
    6463        const epdf& KFEep = KFE.posterior(); 
    6564        const epdf& Mep = M.posterior(); 
    6665        // initialize 
    67         evolQ.set_parameters ( 1.0 ); //sigma = 1/10 mu 
     66        evolQ.set_parameters ( 1.0, "0.5 0.5" ); //sigma = 1/10 mu 
    6867        evolQ.condition ( "0.5 0.5" ); 
    69         const epdf& pfinit=evolQ.posterior(); 
     68        const epdf& pfinit=evolQ._epdf(); 
    7069        M.set_est ( pfinit ); 
    71         evolQ.set_parameters ( 1000.0 ); //sigma = 1/10 mu 
     70        evolQ.set_parameters ( 1000.0 , "0.5 0.5"); //sigma = 1/10 mu 
    7271 
    7372        //simulator values 
  • pmsm/old/sim_var.cpp

    r271 r279  
    6363        mat Q =diag( Qdiag ); 
    6464        mat R =diag ( Rdiag ); 
    65         EKFfull Efix ( rx,ry,ru ); 
     65        EKFfull Efix ; 
    6666        Efix.set_est ( mu0, 1*eye ( 4 )  ); 
    6767        Efix.set_parameters ( &fxu,&hxu,Q,R); 
    6868 
    69         EKFfull Eop ( rx,ry,ru ); 
     69        EKFfull Eop ; 
    7070        Eop.set_est ( mu0, 1*eye ( 4 ) ); 
    7171        Eop.set_parameters ( &fxu,&hxu,Q,R); 
    7272 
    73         EKFfull Edi ( rx,ry,ru ); 
     73        EKFfull Edi ; 
    7474        Edi.set_est ( mu0, 1*eye ( 4 ) ); 
    7575        Edi.set_parameters ( &fxu,&hxu,Q,R); 
  • pmsm/pmsm.h

    r254 r279  
    2525 
    2626public: 
    27         IMpmsm() :diffbifn (rx.count(), rx, ru ) {}; 
     27        IMpmsm() :diffbifn ( ) {dimy=4; dimx = 4; dimu=2;}; 
    2828        //! Set mechanical and electrical variables 
    2929        void set_parameters ( double Rs0, double Ls0, double dt0, double Ypm0, double kp0, double p0, double J0, double Mz0 ) {Rs=Rs0; Ls=Ls0; dt=dt0; Ypm=Ypm0; kp=kp0; p=p0; J=J0; Mz=Mz0;} 
     
    8686                double iam, ibm, omm, thm, uam, ubm; 
    8787        public: 
    88                 IMpmsm2o() :diffbifn (rx.count(), rx, ru ) {}; 
     88                IMpmsm2o() :diffbifn () {dimy=4;dimx=4;dimu=2;}; 
    8989        //! Set mechanical and electrical variables 
    9090                void set_parameters ( double Rs0, double Ls0, double dt0, double Ypm0, double kp0, double p0, double J0, double Mz0 ) {Rs=Rs0; Ls=Ls0; dt=dt0; Ypm=Ypm0; kp=kp0; p=p0; J=J0; Mz=Mz0; d2t=dt*dt/2;} 
     
    209209class OMpmsm: public diffbifn { 
    210210public: 
    211         OMpmsm() :diffbifn (2, rx,ru ) {}; 
     211        OMpmsm() :diffbifn () {dimy=2;dimx=4;dimu=2;}; 
    212212 
    213213        vec eval ( const vec &x0, const vec &u0 ) { 
  • pmsm/simulator_zdenek/ekf_example/ekf_obj.h

    r271 r279  
    6464public: 
    6565        //! Default constructor 
    66         EKFfixed ( RV rvx,RV rvc ):BM(rvx),BMcond(rvc),E(rvx),Ry(2,2){ 
     66        EKFfixed ():BM(),BMcond(),E(),Ry(2,2){ 
    6767        int i; 
    6868 for(i=0;i<16;i++){Q[i]=0;}