costfunction.hh
Go to the documentation of this file.
1 #ifndef COSTFUNCTION_H
2 #define COSTFUNCTION_H
3 
4 #include <Eigen/Core>
5 
6 template<typename precision,int stateSize,int commandSize>
8 {
9 public:
10  typedef Eigen::Matrix<precision,stateSize,1> stateVec_t; // 1 x stateSize
11  typedef Eigen::Matrix<precision,1,stateSize> stateVecTrans_t; // 1 x stateSize
12  typedef Eigen::Matrix<precision,stateSize,stateSize> stateMat_t; // stateSize x stateSize
13  typedef Eigen::Matrix<precision,stateSize,stateSize> stateTens_t[stateSize]; // stateSize x stateSize x stateSize
14 
15  // typedef for commandSize types
16  typedef Eigen::Matrix<precision,commandSize,1> commandVec_t; // commandSize x 1
17  typedef Eigen::Matrix<precision,1,commandSize> commandVecTrans_t; // 1 x commandSize
18  typedef Eigen::Matrix<precision,commandSize,commandSize> commandMat_t; // commandSize x commandSize
19  typedef Eigen::Matrix<precision,commandSize,commandSize> commandTens_t[commandSize]; // stateSize x commandSize x commandSize
20 
21 
22 
23  // typedef for mixed stateSize and commandSize types
24  typedef Eigen::Matrix<precision,stateSize,commandSize> stateR_commandC_t; // stateSize x commandSize
25  typedef Eigen::Matrix<precision,stateSize,commandSize> stateR_commandC_stateD_t[stateSize]; // stateSize x commandSize x stateSize
26  typedef Eigen::Matrix<precision,stateSize,commandSize> stateR_commandC_commandD_t[commandSize]; // stateSize x commandSize x commandSize
27  typedef Eigen::Matrix<precision,commandSize,stateSize> commandR_stateC_t; // commandSize x stateSize
28  typedef Eigen::Matrix<precision,commandSize,stateSize> commandR_stateC_stateD_t[stateSize]; // commandSize x stateSize x stateSize
29  typedef Eigen::Matrix<precision,commandSize,stateSize> commandR_stateC_commandD_t[commandSize]; // commandSize x stateSize x commandSize
30  typedef Eigen::Matrix<precision,stateSize,stateSize> stateR_stateC_commandD_t[commandSize]; // stateSize x stateSize x commandSize
31  typedef Eigen::Matrix<precision,commandSize,commandSize> commandR_commandC_stateD_t[stateSize]; // commandSize x commandSize x stateSize
32 
33 public:
34 private:
35 protected:
36  // attributes //
37 public:
38 private:
39 
40 protected:
41  double dt;
42  double final_cost;
43  double running_cost;
50  // methods //
51 public:
52  virtual void computeCostAndDeriv(const stateVec_t& X,const stateVec_t& Xdes, const commandVec_t& U)=0;
53  virtual void computeFinalCostAndDeriv(const stateVec_t& X,const stateVec_t& Xdes)=0;
54 private:
55 protected:
56  // accessors //
57 public:
58  double& getRunningCost() { return running_cost;}
59  double& getFinalCost() { return final_cost; }
60  stateVec_t& getlx() {return lx;}
61  stateMat_t& getlxx() {return lxx;}
62  commandVec_t& getlu() {return lu;}
63  commandMat_t& getluu() {return luu;}
66 };
67 
68 #endif // COSTFUNCTION_H
CostFunction::getlu
commandVec_t & getlu()
Definition: costfunction.hh:62
CostFunction::lu
commandVec_t lu
Definition: costfunction.hh:46
CostFunction::getluu
commandMat_t & getluu()
Definition: costfunction.hh:63
CostFunction::stateVecTrans_t
Eigen::Matrix< precision, 1, stateSize > stateVecTrans_t
Definition: costfunction.hh:11
CostFunction::commandR_stateC_commandD_t
Eigen::Matrix< precision, commandSize, stateSize > commandR_stateC_commandD_t[commandSize]
Definition: costfunction.hh:29
CostFunction::stateVec_t
Eigen::Matrix< precision, stateSize, 1 > stateVec_t
Definition: costfunction.hh:10
CostFunction::commandR_commandC_stateD_t
Eigen::Matrix< precision, commandSize, commandSize > commandR_commandC_stateD_t[stateSize]
Definition: costfunction.hh:31
CostFunction::stateMat_t
Eigen::Matrix< precision, stateSize, stateSize > stateMat_t
Definition: costfunction.hh:12
CostFunction::getFinalCost
double & getFinalCost()
Definition: costfunction.hh:59
CostFunction::commandR_stateC_stateD_t
Eigen::Matrix< precision, commandSize, stateSize > commandR_stateC_stateD_t[stateSize]
Definition: costfunction.hh:28
CostFunction::luu
commandMat_t luu
Definition: costfunction.hh:47
CostFunction::lxu
stateR_commandC_t lxu
Definition: costfunction.hh:49
CostFunction::running_cost
double running_cost
Definition: costfunction.hh:43
CostFunction::final_cost
double final_cost
Definition: costfunction.hh:42
CostFunction::lxx
stateMat_t lxx
Definition: costfunction.hh:45
CostFunction
Definition: costfunction.hh:7
CostFunction::commandVec_t
Eigen::Matrix< precision, commandSize, 1 > commandVec_t
Definition: costfunction.hh:16
CostFunction::lux
commandR_stateC_t lux
Definition: costfunction.hh:48
CostFunction::getRunningCost
double & getRunningCost()
Definition: costfunction.hh:58
CostFunction::getlxx
stateMat_t & getlxx()
Definition: costfunction.hh:61
CostFunction::stateTens_t
Eigen::Matrix< precision, stateSize, stateSize > stateTens_t[stateSize]
Definition: costfunction.hh:13
CostFunction::computeCostAndDeriv
virtual void computeCostAndDeriv(const stateVec_t &X, const stateVec_t &Xdes, const commandVec_t &U)=0
CostFunction::commandVecTrans_t
Eigen::Matrix< precision, 1, commandSize > commandVecTrans_t
Definition: costfunction.hh:17
CostFunction::commandR_stateC_t
Eigen::Matrix< precision, commandSize, stateSize > commandR_stateC_t
Definition: costfunction.hh:27
CostFunction::getlxu
stateR_commandC_t & getlxu()
Definition: costfunction.hh:65
CostFunction::getlux
commandR_stateC_t & getlux()
Definition: costfunction.hh:64
CostFunction::stateR_commandC_commandD_t
Eigen::Matrix< precision, stateSize, commandSize > stateR_commandC_commandD_t[commandSize]
Definition: costfunction.hh:26
CostFunction::getlx
stateVec_t & getlx()
Definition: costfunction.hh:60
CostFunction::computeFinalCostAndDeriv
virtual void computeFinalCostAndDeriv(const stateVec_t &X, const stateVec_t &Xdes)=0
CostFunction::commandMat_t
Eigen::Matrix< precision, commandSize, commandSize > commandMat_t
Definition: costfunction.hh:18
CostFunction::lx
stateVec_t lx
Definition: costfunction.hh:44
CostFunction::stateR_commandC_t
Eigen::Matrix< precision, stateSize, commandSize > stateR_commandC_t
Definition: costfunction.hh:24
CostFunction::stateR_stateC_commandD_t
Eigen::Matrix< precision, stateSize, stateSize > stateR_stateC_commandD_t[commandSize]
Definition: costfunction.hh:30
CostFunction::dt
double dt
Definition: costfunction.hh:41
CostFunction::commandTens_t
Eigen::Matrix< precision, commandSize, commandSize > commandTens_t[commandSize]
Definition: costfunction.hh:19
CostFunction::stateR_commandC_stateD_t
Eigen::Matrix< precision, stateSize, commandSize > stateR_commandC_stateD_t[stateSize]
Definition: costfunction.hh:25