15 template<
int StateDim,
int InputDim>
38 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
46 static_assert(StateDim > 0,
"[DDP] Template param StateDim should be positive.");
47 static_assert(InputDim >= 0 || InputDim == Eigen::Dynamic,
48 "[DDP] Template param InputDim should be non-negative or Eigen::Dynamic.");
63 if constexpr(InputDim == Eigen::Dynamic)
65 throw std::runtime_error(
"Since input dimension is dynamic, time must be passed to inputDim().");
77 if constexpr(InputDim == Eigen::Dynamic)
79 throw std::runtime_error(
"inputDim(t) must be overridden if input dimension is dynamic.");
88 inline double dt()
const
126 Eigen::Ref<StateStateDimMatrix> state_eq_deriv_x,
127 Eigen::Ref<StateInputDimMatrix> state_eq_deriv_u)
const = 0;
142 Eigen::Ref<StateStateDimMatrix> state_eq_deriv_x,
143 Eigen::Ref<StateInputDimMatrix> state_eq_deriv_u,
144 std::vector<StateStateDimMatrix> & state_eq_deriv_xx,
145 std::vector<InputInputDimMatrix> & state_eq_deriv_uu,
146 std::vector<StateInputDimMatrix> & state_eq_deriv_xu)
const = 0;
158 Eigen::Ref<StateDimVector> running_cost_deriv_x,
159 Eigen::Ref<InputDimVector> running_cost_deriv_u)
const = 0;
174 Eigen::Ref<StateDimVector> running_cost_deriv_x,
175 Eigen::Ref<InputDimVector> running_cost_deriv_u,
176 Eigen::Ref<StateStateDimMatrix> running_cost_deriv_xx,
177 Eigen::Ref<InputInputDimMatrix> running_cost_deriv_uu,
178 Eigen::Ref<StateInputDimMatrix> running_cost_deriv_xu)
const = 0;
187 Eigen::Ref<StateDimVector> terminal_cost_deriv_x)
const = 0;
197 Eigen::Ref<StateDimVector> terminal_cost_deriv_x,
198 Eigen::Ref<StateStateDimMatrix> terminal_cost_deriv_xx)
const = 0;