00001 
00014 #include "libKF.h"
00015 #include <uibuilder.h>
00016 
00017 class UIEKF: public UIbuilder {
00018         public:
00019         UIEKF():UIbuilder("EKF"){};
00020         bdmroot* build ( Setting &S ) const {
00021                 diffbifn* IM; UIbuild(S["IM"],IM);
00022                 diffbifn* OM; UIbuild(S["OM"],OM);
00023                 
00024                 
00025                 EKFCh* E; E=new EKFCh;
00026                 E->set_parameters(IM, OM, diag(getvec(S["dQ"])), diag(getvec(S["dR"])));
00027                 
00028                 
00029                 int dim=IM->dimension();
00030                 vec mu0;
00031                 mat P0;
00032                 if (S.exists("mu0")){mu0=getvec(S["mu0"]);}else{mu0=zeros(dim);};
00033                 if (S.exists("P0")){mu0=getmat(S["P0"],dim);}else{P0=eye(dim);};
00034                 E->set_statistics(mu0,P0);
00035                 
00036                 
00037                 RV* drv; UIbuild(S["drv"],drv);
00038                 E->set_drv(*drv);
00039                 RV* rv; UIbuild(S["rv"],rv);
00040                 E->set_rv(*rv);
00041                 return E;
00042         }       
00043 };
00044 UIREGISTER ( UIEKF );
00045 
00046