- 3.0.2 optimal control module.
CostFunction.hpp
Go to the documentation of this file.
1 /**********************************************************************************************************************
2 This file is part of the Control Toolbox (https://github.com/ethz-adrl/control-toolbox), copyright by ETH Zurich.
3 Licensed under the BSD-2 license (see LICENSE file in main directory)
4 **********************************************************************************************************************/
5 
6 #pragma once
7 
8 #include <vector>
9 
10 namespace ct {
11 namespace optcon {
12 
24 template <size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
26 {
27 public:
28  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
29 
32 
38  CostFunction();
39 
45  virtual ~CostFunction();
46 
51  CostFunction(const CostFunction& arg);
52 
58 
66  virtual void setCurrentStateAndControl(const state_vector_t& x,
67  const control_vector_t& u,
68  const SCALAR& t = SCALAR(0.0));
69 
79  virtual void getCurrentStateAndControl(Eigen::Matrix<SCALAR, STATE_DIM, 1>& x,
80  Eigen::Matrix<SCALAR, CONTROL_DIM, 1>& u,
81  SCALAR& t) const;
82 
89  virtual SCALAR evaluateIntermediate() = 0;
90 
97  virtual SCALAR evaluateTerminal() = 0;
98 
99  virtual void shiftTime(const SCALAR t);
100 
101 
102 protected:
103  state_vector_t x_;
104  control_vector_t u_;
108 };
109 
110 } // namespace optcon
111 } // namespace ct
state_vector_t x_
Definition: CostFunction.hpp:103
virtual SCALAR evaluateIntermediate()=0
evaluate intermediate costs
A base function for cost functions. All cost functions should derive from this.
Definition: CostFunction.hpp:25
virtual void setCurrentStateAndControl(const state_vector_t &x, const control_vector_t &u, const SCALAR &t=SCALAR(0.0))
Definition: CostFunction-impl.hpp:30
ct::core::ControlVector< control_dim > u
Definition: LoadFromFileTest.cpp:21
virtual ~CostFunction()
Destructor.
Definition: CostFunction-impl.hpp:19
SCALAR t_
Definition: CostFunction.hpp:105
clear all close all load ct GNMSLog0 mat reformat t
Definition: gnmsPlot.m:6
virtual CostFunction< STATE_DIM, CONTROL_DIM, SCALAR > * clone() const =0
CppAD::AD< CppAD::cg::CG< double > > SCALAR
ct::core::StateVector< state_dim > x
Definition: LoadFromFileTest.cpp:20
control_vector_t u_
Definition: CostFunction.hpp:104
virtual void shiftTime(const SCALAR t)
Definition: CostFunction-impl.hpp:50
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef core::StateVector< STATE_DIM, SCALAR > state_vector_t
Definition: CostFunction.hpp:30
core::ControlVector< CONTROL_DIM, SCALAR > control_vector_t
Definition: CostFunction.hpp:31
CostFunction()
Default constructor.
Definition: CostFunction-impl.hpp:12
virtual SCALAR evaluateTerminal()=0
evaluate terminal costs
virtual void getCurrentStateAndControl(Eigen::Matrix< SCALAR, STATE_DIM, 1 > &x, Eigen::Matrix< SCALAR, CONTROL_DIM, 1 > &u, SCALAR &t) const
sets current state, control and time
Definition: CostFunction-impl.hpp:40
SCALAR t_shift_
Definition: CostFunction.hpp:107