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
00035 void initialize() {
00036
00037 }
00039 void adapt(){
00040 ARX.to_state_space(stsp);
00041 }
00044
00056 void from_settings(const Settings &set){
00057 ar=UI::build<ARX> (set, "ARX",UI::compulsory);
00058
00059 UI::get(Qu, set, "Qu", UI::compulsory);
00060 UI::get(Qy, set, "Qy", UI::compulsory);
00061
00062 if (!UI::get(y_req, set, "yreq", UI::optional))
00063 y_req = zeros(yrv._dsize());
00064 if (!UI::get(u_req, set, "ureq", UI::optional))
00065 u_req = zeros(urv._dsize());
00066 }
00067 };
00068
00069 }