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 }