00001 
00013 #include "../base/bdmbase.h"
00014 #include "ctrlbase.h"
00015 #include "../estim/arx.h"
00016 #include "../estim/kalman.h"
00017 
00018 namespace bdm{
00019 
00021         class LQG_ARX : public Controller{
00022                 protected:
00024                         shared_prt<ARX> ar;
00026                         LQG lq;
00028                         sharer_ptr<StateSpace> stsp;
00030                 public:
00032                         LQG_ARX(): ar(), lq(), statemodel(new StateSpace) { }
00033                                                 
00034                         void initialize() {
00035                                 
00036                         }
00038                         void adapt(){
00039                                 ARX.to_state_space(stsp);
00040                         }
00043 
00055                         void from_settings(const Settings &set){
00056                                 ar=UI::build<ARX> (set, "ARX",UI::compulsory);
00057                                 
00058                                 UI::get(Qu, set, "Qu", UI::compulsory);
00059                                 UI::get(Qy, set, "Qy", UI::compulsory);
00060                 
00061                                 if (!UI::get(y_req, set, "yreq", UI::optional))
00062                                         y_req = zeros(yrv._dsize());
00063                                 if (!UI::get(u_req, set, "ureq", UI::optional))
00064                                         u_req = zeros(urv._dsize());
00065                         }
00066         };
00067         
00068 }