5 #ifndef LODESTAR_MODELPREDICTIVECONTROL_HPP
6 #define LODESTAR_MODELPREDICTIVECONTROL_HPP
9 #include "Lodestar/systems/StateSpace.hpp"
10 #include "Lodestar/aux/CompileTimeQualifiers.hpp"
14 template<
const int THorizonLength = Eigen::Dynamic,
15 typename TScalar = double,
16 const int TStateDim = Eigen::Dynamic,
17 const int TInputDim = Eigen::Dynamic,
18 const int TOutputDim = Eigen::Dynamic>
22 const int kHMatrixDim = LS_STATIC_UNLESS_DYNAMIC_VAL(THorizonLength, THorizonLength*(TStateDim + TInputDim));
23 const int kCMatrixRows = LS_STATIC_UNLESS_DYNAMIC_VAL(THorizonLength, TStateDim * THorizonLength);
24 const int kCMatrixCols = LS_STATIC_UNLESS_DYNAMIC_VAL(THorizonLength, THorizonLength*(TStateDim + TInputDim));
26 typedef Eigen::Matrix<TScalar,
27 LS_STATIC_UNLESS_DYNAMIC_VAL(THorizonLength, THorizonLength*(TStateDim + TInputDim)),
28 LS_STATIC_UNLESS_DYNAMIC_VAL(THorizonLength, THorizonLength*(TStateDim + TInputDim))>
31 typedef Eigen::Matrix<TScalar,
32 LS_STATIC_UNLESS_DYNAMIC_VAL(THorizonLength, TStateDim * THorizonLength),
33 LS_STATIC_UNLESS_DYNAMIC_VAL(THorizonLength, THorizonLength*(TStateDim + TInputDim))>
43 IF_DYNAMIC_RETURN(TStateDim, TInputDim, TOutputDim, Eigen::MatrixXd)
46 return Eigen::MatrixXd{};
50 IF_STATIC_RETURN(TStateDim, TInputDim, TOutputDim, TDHMatrix)
62 #endif //LODESTAR_MODELPREDICTIVECONTROL_HPP