00001
00002
00003
00004
00005
00006 #ifndef __suTrackController_h__
00007 #define __suTrackController_h__
00008
00009
00010
00011
00012
00013 #include "suTrackControllerDLL.h"
00014 #include <rdTools.h>
00015 #include <rdOptimizationTarget.h>
00016 #include <rdModel.h>
00017 #include <rdController.h>
00018 #include <rdFSQP.h>
00019 #include "suTrackObjectSet.h"
00020
00021
00022
00023 #ifndef UNIX
00024
00025 #endif
00026
00027
00028
00029
00037 class SUTRACKCONTROLLER_API suTrackController : public rdController
00038 {
00039
00040
00041
00042
00043 protected:
00045 rdFSQP *_sqp;
00047 rdOptimizationTarget *_target;
00049 suTrackObjectSet *_trackObjectSet;
00051 double _dt;
00054 double _lastDT;
00058 bool _restoreDT;
00063 double _targetTime;
00066 double _targetDT;
00068 bool _checkTargetTime;
00070 rdStorage *_pErrStore;
00072 rdStorage *_vErrStore;
00074 rdControlSet *_controlSet;
00077 rdArray<int> _paramList;
00078
00079
00080
00081
00082
00083
00084 public:
00085 suTrackController(rdModel *aModel,suTrackObjectSet *aTrackObjectSet);
00086 virtual ~suTrackController();
00087 void setNull();
00088
00089
00090
00091
00092 suTrackObjectSet* getTrackObjectSet() const;
00093 rdControlSet* getControlSet() const;
00094 rdArray<int>* getParameterList();
00095 rdFSQP* getOptimizer() const;
00096 rdOptimizationTarget* setOptimizationTarget(rdOptimizationTarget *aTarget);
00097 rdOptimizationTarget* getOptimizationTarget() const;
00098 void setDT(double aDT);
00099 double getDT() const;
00100 void setTargetTime(double aTime);
00101 double getTargetTime() const;
00102 void setTargetDT(double aDT);
00103 double getTargetDT() const;
00104 void setCheckTargetTime(bool aTrueFalse);
00105 bool getCheckTargetTime() const;
00106 rdStorage* getPositionErrorStorage() const;
00107 rdStorage* getVelocityErrorStorage() const;
00108
00109
00110
00111
00112 virtual void
00113 computeControls(double &rDT,double aT,const double *aY,rdControlSet &rX);
00114
00115
00116 };
00117
00118
00119
00120 #endif // __suTrackController_h__
00121
00122