Public Member Functions | List of all members
corbo::QuadratureHermiteSimpson Class Reference

Hermite-Simpson rule (approximates function as quadratic polynomial between two points) More...

#include <quadrature.h>

Inheritance diagram for corbo::QuadratureHermiteSimpson:
Inheritance graph
[legend]

Public Member Functions

bool computeIntermediateControls (const Eigen::Ref< const Eigen::VectorXd > &u1, const Eigen::Ref< const Eigen::VectorXd > &u2, std::vector< Eigen::VectorXd * > &intermediate_u) override
 
DynamicsEvalInterface::Ptr getInstance () const override
 Return a newly created shared instance of the implemented class. More...
 
int getNumIntermediateControls () const override
 
int getNumIntermediatePoints () const override
 
int getNumIntermediateStates () const override
 
bool interpolate (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &u1, const Eigen::Ref< const Eigen::VectorXd > &x2, const Eigen::Ref< const Eigen::VectorXd > &u2, double dt, const SystemDynamicsInterface &system, const Range &range, std::vector< Eigen::VectorXd > &states, std::vector< Eigen::VectorXd > &controls) override
 
bool interpolate (const std::vector< const Eigen::VectorXd * > &x, const std::vector< const Eigen::VectorXd * > &u, double dt, const SystemDynamicsInterface &system, const Range &range, std::vector< Eigen::VectorXd > &states, std::vector< Eigen::VectorXd > &controls) override
 
bool interpolate (const std::vector< const Eigen::VectorXd * > &x1_points, const std::vector< const Eigen::VectorXd * > &u1_points, const Eigen::VectorXd &u2, const Eigen::VectorXd &x2, double t1, double dt, double dt_interp, const SystemDynamicsInterface &system, bool skip_u2_x2, TimeSeries &ts_x, TimeSeries &ts_u) override
 
bool isIntermediateControlSubjectToOptim () const override
 
bool isSupportingCompressedStatesMode () const override
 
void quadrature (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &u1, const Eigen::Ref< const Eigen::VectorXd > &x2, const Eigen::Ref< const Eigen::VectorXd > &u2, double dt, const BinaryFunction &fun, Eigen::Ref< Eigen::VectorXd > integral_value) override
 
void quadrature (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &u1, const Eigen::Ref< const Eigen::VectorXd > &x2, const Eigen::Ref< const Eigen::VectorXd > &u2, double dt, const BinaryFunction &fun, Eigen::Ref< Eigen::VectorXd > integral_value, std::vector< Eigen::VectorXd * > &intermediate_x, std::vector< Eigen::VectorXd * > &intermediate_u) override
 
void quadrature (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &u1, const Eigen::Ref< const Eigen::VectorXd > &x2, const Eigen::Ref< const Eigen::VectorXd > &u2, double dt, const std::vector< Eigen::VectorXd * > &intermediate_x, const std::vector< Eigen::VectorXd * > &intermediate_u, const BinaryFunction &fun, Eigen::Ref< Eigen::VectorXd > integral_value) override
 
void quadrature (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &x2, double dt, const std::vector< Eigen::VectorXd * > &intermediate_x, const UnaryFunction &fun, Eigen::Ref< Eigen::VectorXd > integral_value) override
 
void quadrature (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &x2, double dt, const UnaryFunction &fun, Eigen::Ref< Eigen::VectorXd > integral_value) override
 
void quadrature (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &x2, double dt, const UnaryFunction &fun, Eigen::Ref< Eigen::VectorXd > integral_value, std::vector< Eigen::VectorXd * > &intermediate_x) override
 
void quadrature (const StateVector &x1, const InputVector &u1, const StateVector &x2, const InputVector &u2, double dt, const SystemDynamicsInterface &system, const std::vector< Eigen::VectorXd * > &intermediate_u, Eigen::Ref< Eigen::VectorXd > integral_value, std::vector< Eigen::VectorXd * > &intermediate_x) override
 
void quadrature (const StateVector &x1, const InputVector &u1, const StateVector &x2, const InputVector &u2, double dt, const SystemDynamicsInterface &system, const std::vector< Eigen::VectorXd * > &intermediate_x, const std::vector< Eigen::VectorXd * > &intermediate_u, Eigen::Ref< Eigen::VectorXd > integral_value, Eigen::Ref< Eigen::VectorXd > interm_x_error) override
 
void quadrature (const StateVector &x1, const InputVector &u1, const StateVector &x2, const InputVector &u2, double dt, const SystemDynamicsInterface &system, Eigen::Ref< Eigen::VectorXd > integral_value) override
 
void quadrature (const StateVector &x1, const InputVector &u1, const StateVector &x2, const InputVector &u2, double dt, const SystemDynamicsInterface &system, Eigen::Ref< Eigen::VectorXd > integral_value, std::vector< Eigen::VectorXd * > &intermediate_x, std::vector< Eigen::VectorXd * > &intermediate_u) override
 
void quadrature (const StateVector &x1, const InputVector &u1, const StateVector &x2, double dt, const SystemDynamicsInterface &system, Eigen::Ref< Eigen::VectorXd > integral_value) override
 
void quadrature (const StateVector &x1, const InputVector &u1, const StateVector &x2, double dt, const SystemDynamicsInterface &system, Eigen::Ref< Eigen::VectorXd > integral_value, std::vector< Eigen::VectorXd * > &intermediate_x) override
 
void quadrature (const std::vector< const Eigen::VectorXd * > &x1_points, const std::vector< const Eigen::VectorXd * > &u1_points, const Eigen::VectorXd &u2, const Eigen::VectorXd &x2, double dt, const BinaryFunction &fun, Eigen::Ref< Eigen::VectorXd > integral_value) override
 
void quadrature (const std::vector< const Eigen::VectorXd * > &x1_points, const std::vector< const Eigen::VectorXd * > &u1_points, const Eigen::VectorXd &u2, const Eigen::VectorXd &x2, double dt, const SystemDynamicsInterface &system, Eigen::Ref< Eigen::VectorXd > integral_value) override
 Allocate memory for a given state dimension. More...
 
- Public Member Functions inherited from corbo::QuadratureCollocationInterface
void computeEqualityConstraint (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &x2, double dt, const UnaryFunction &fun, Eigen::Ref< Eigen::VectorXd > error)
 
void computeEqualityConstraint (const StateVector &x1, const InputVector &u1, const StateVector &x2, const InputVector &u2, double dt, const SystemDynamicsInterface &system, Eigen::Ref< Eigen::VectorXd > error)
 
void computeEqualityConstraint (const StateVector &x1, const InputVector &u1, const StateVector &x2, double dt, const SystemDynamicsInterface &system, Eigen::Ref< Eigen::VectorXd > error) override
 Compute differentiation error (system dynamics) More...
 
virtual ~QuadratureCollocationInterface ()
 Virtual destructor. More...
 
- Public Member Functions inherited from corbo::CollocationInterface
virtual ~CollocationInterface ()
 Virtual destructor. More...
 
- Public Member Functions inherited from corbo::DynamicsEvalInterface
virtual ~DynamicsEvalInterface ()
 Virtual destructor. More...
 

Additional Inherited Members

- Public Types inherited from corbo::QuadratureCollocationInterface
using BinaryFunction = const std::function< void(const Eigen::VectorXd &, const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)>
 
using Ptr = std::shared_ptr< QuadratureCollocationInterface >
 
using UnaryFunction = const std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)>
 
using UPtr = std::unique_ptr< QuadratureCollocationInterface >
 
- Public Types inherited from corbo::CollocationInterface
using InputVector = Eigen::VectorXd
 
using Ptr = std::shared_ptr< CollocationInterface >
 
using StateVector = Eigen::VectorXd
 
using UPtr = std::unique_ptr< CollocationInterface >
 
- Public Types inherited from corbo::DynamicsEvalInterface
using InputVector = Eigen::VectorXd
 
using Ptr = std::shared_ptr< DynamicsEvalInterface >
 
using StateVector = Eigen::VectorXd
 
using UPtr = std::unique_ptr< DynamicsEvalInterface >
 
- Static Public Member Functions inherited from corbo::DynamicsEvalInterface
static Factory< DynamicsEvalInterface > & getFactory ()
 Get access to the accociated factory. More...
 

Detailed Description

Hermite-Simpson rule (approximates function as quadratic polynomial between two points)

\[ \int_0^{\Delta T} f(t) = \frac{\Delta T}{6} (f(0) + 4 f(0.5 \Delta T) + f(\Delta T) \]

.

Hermite-Simpson collocation approximates the system dynamics and control trajectory by quadratic polynomials between two consecutive points. Hence, the resulting state trajectory is composed of cubic hermite splines. Refer to

See also
NumericalIntegratorInterface NumericalIntegratorImplicitInterface
Author
Christoph Rösmann (chris.nosp@m.toph.nosp@m..roes.nosp@m.mann.nosp@m.@tu-d.nosp@m.ortm.nosp@m.und.d.nosp@m.e)

Definition at line 1109 of file quadrature.h.

Member Function Documentation

◆ computeIntermediateControls()

bool corbo::QuadratureHermiteSimpson::computeIntermediateControls ( const Eigen::Ref< const Eigen::VectorXd > &  u1,
const Eigen::Ref< const Eigen::VectorXd > &  u2,
std::vector< Eigen::VectorXd * > &  intermediate_u 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1498 of file quadrature.h.

◆ getInstance()

DynamicsEvalInterface::Ptr corbo::QuadratureHermiteSimpson::getInstance ( ) const
inlineoverridevirtual

Return a newly created shared instance of the implemented class.

Implements corbo::QuadratureCollocationInterface.

Definition at line 1113 of file quadrature.h.

◆ getNumIntermediateControls()

int corbo::QuadratureHermiteSimpson::getNumIntermediateControls ( ) const
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1120 of file quadrature.h.

◆ getNumIntermediatePoints()

int corbo::QuadratureHermiteSimpson::getNumIntermediatePoints ( ) const
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1118 of file quadrature.h.

◆ getNumIntermediateStates()

int corbo::QuadratureHermiteSimpson::getNumIntermediateStates ( ) const
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1121 of file quadrature.h.

◆ interpolate() [1/3]

bool corbo::QuadratureHermiteSimpson::interpolate ( const Eigen::Ref< const Eigen::VectorXd > &  x1,
const Eigen::Ref< const Eigen::VectorXd > &  u1,
const Eigen::Ref< const Eigen::VectorXd > &  x2,
const Eigen::Ref< const Eigen::VectorXd > &  u2,
double  dt,
const SystemDynamicsInterface system,
const Range range,
std::vector< Eigen::VectorXd > &  states,
std::vector< Eigen::VectorXd > &  controls 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1423 of file quadrature.h.

◆ interpolate() [2/3]

bool corbo::QuadratureHermiteSimpson::interpolate ( const std::vector< const Eigen::VectorXd * > &  x,
const std::vector< const Eigen::VectorXd * > &  u,
double  dt,
const SystemDynamicsInterface system,
const Range range,
std::vector< Eigen::VectorXd > &  states,
std::vector< Eigen::VectorXd > &  controls 
)
inlineoverridevirtual

Reimplemented from corbo::DynamicsEvalInterface.

Definition at line 1431 of file quadrature.h.

◆ interpolate() [3/3]

bool corbo::QuadratureHermiteSimpson::interpolate ( const std::vector< const Eigen::VectorXd * > &  x1_points,
const std::vector< const Eigen::VectorXd * > &  u1_points,
const Eigen::VectorXd &  u2,
const Eigen::VectorXd &  x2,
double  t1,
double  dt,
double  dt_interp,
const SystemDynamicsInterface system,
bool  skip_u2_x2,
TimeSeries ts_x,
TimeSeries ts_u 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1162 of file quadrature.h.

◆ isIntermediateControlSubjectToOptim()

bool corbo::QuadratureHermiteSimpson::isIntermediateControlSubjectToOptim ( ) const
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1117 of file quadrature.h.

◆ isSupportingCompressedStatesMode()

bool corbo::QuadratureHermiteSimpson::isSupportingCompressedStatesMode ( ) const
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1116 of file quadrature.h.

◆ quadrature() [1/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const Eigen::Ref< const Eigen::VectorXd > &  x1,
const Eigen::Ref< const Eigen::VectorXd > &  u1,
const Eigen::Ref< const Eigen::VectorXd > &  x2,
const Eigen::Ref< const Eigen::VectorXd > &  u2,
double  dt,
const BinaryFunction fun,
Eigen::Ref< Eigen::VectorXd >  integral_value 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1380 of file quadrature.h.

◆ quadrature() [2/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const Eigen::Ref< const Eigen::VectorXd > &  x1,
const Eigen::Ref< const Eigen::VectorXd > &  u1,
const Eigen::Ref< const Eigen::VectorXd > &  x2,
const Eigen::Ref< const Eigen::VectorXd > &  u2,
double  dt,
const BinaryFunction fun,
Eigen::Ref< Eigen::VectorXd >  integral_value,
std::vector< Eigen::VectorXd * > &  intermediate_x,
std::vector< Eigen::VectorXd * > &  intermediate_u 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1413 of file quadrature.h.

◆ quadrature() [3/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const Eigen::Ref< const Eigen::VectorXd > &  x1,
const Eigen::Ref< const Eigen::VectorXd > &  u1,
const Eigen::Ref< const Eigen::VectorXd > &  x2,
const Eigen::Ref< const Eigen::VectorXd > &  u2,
double  dt,
const std::vector< Eigen::VectorXd * > &  intermediate_x,
const std::vector< Eigen::VectorXd * > &  intermediate_u,
const BinaryFunction fun,
Eigen::Ref< Eigen::VectorXd >  integral_value 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1390 of file quadrature.h.

◆ quadrature() [4/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const Eigen::Ref< const Eigen::VectorXd > &  x1,
const Eigen::Ref< const Eigen::VectorXd > &  x2,
double  dt,
const std::vector< Eigen::VectorXd * > &  intermediate_x,
const UnaryFunction fun,
Eigen::Ref< Eigen::VectorXd >  integral_value 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1339 of file quadrature.h.

◆ quadrature() [5/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const Eigen::Ref< const Eigen::VectorXd > &  x1,
const Eigen::Ref< const Eigen::VectorXd > &  x2,
double  dt,
const UnaryFunction fun,
Eigen::Ref< Eigen::VectorXd >  integral_value 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1320 of file quadrature.h.

◆ quadrature() [6/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const Eigen::Ref< const Eigen::VectorXd > &  x1,
const Eigen::Ref< const Eigen::VectorXd > &  x2,
double  dt,
const UnaryFunction fun,
Eigen::Ref< Eigen::VectorXd >  integral_value,
std::vector< Eigen::VectorXd * > &  intermediate_x 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1359 of file quadrature.h.

◆ quadrature() [7/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const StateVector x1,
const InputVector u1,
const StateVector x2,
const InputVector u2,
double  dt,
const SystemDynamicsInterface system,
const std::vector< Eigen::VectorXd * > &  intermediate_u,
Eigen::Ref< Eigen::VectorXd >  integral_value,
std::vector< Eigen::VectorXd * > &  intermediate_x 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1288 of file quadrature.h.

◆ quadrature() [8/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const StateVector x1,
const InputVector u1,
const StateVector x2,
const InputVector u2,
double  dt,
const SystemDynamicsInterface system,
const std::vector< Eigen::VectorXd * > &  intermediate_x,
const std::vector< Eigen::VectorXd * > &  intermediate_u,
Eigen::Ref< Eigen::VectorXd >  integral_value,
Eigen::Ref< Eigen::VectorXd >  interm_x_error 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1263 of file quadrature.h.

◆ quadrature() [9/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const StateVector x1,
const InputVector u1,
const StateVector x2,
const InputVector u2,
double  dt,
const SystemDynamicsInterface system,
Eigen::Ref< Eigen::VectorXd >  integral_value 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1255 of file quadrature.h.

◆ quadrature() [10/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const StateVector x1,
const InputVector u1,
const StateVector x2,
const InputVector u2,
double  dt,
const SystemDynamicsInterface system,
Eigen::Ref< Eigen::VectorXd >  integral_value,
std::vector< Eigen::VectorXd * > &  intermediate_x,
std::vector< Eigen::VectorXd * > &  intermediate_u 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1310 of file quadrature.h.

◆ quadrature() [11/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const StateVector x1,
const InputVector u1,
const StateVector x2,
double  dt,
const SystemDynamicsInterface system,
Eigen::Ref< Eigen::VectorXd >  integral_value 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1214 of file quadrature.h.

◆ quadrature() [12/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const StateVector x1,
const InputVector u1,
const StateVector x2,
double  dt,
const SystemDynamicsInterface system,
Eigen::Ref< Eigen::VectorXd >  integral_value,
std::vector< Eigen::VectorXd * > &  intermediate_x 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1233 of file quadrature.h.

◆ quadrature() [13/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const std::vector< const Eigen::VectorXd * > &  x1_points,
const std::vector< const Eigen::VectorXd * > &  u1_points,
const Eigen::VectorXd &  u2,
const Eigen::VectorXd &  x2,
double  dt,
const BinaryFunction fun,
Eigen::Ref< Eigen::VectorXd >  integral_value 
)
inlineoverridevirtual

Implements corbo::QuadratureCollocationInterface.

Definition at line 1143 of file quadrature.h.

◆ quadrature() [14/14]

void corbo::QuadratureHermiteSimpson::quadrature ( const std::vector< const Eigen::VectorXd * > &  x1_points,
const std::vector< const Eigen::VectorXd * > &  u1_points,
const Eigen::VectorXd &  u2,
const Eigen::VectorXd &  x2,
double  dt,
const SystemDynamicsInterface system,
Eigen::Ref< Eigen::VectorXd >  integral_value 
)
inlineoverridevirtual

Allocate memory for a given state dimension.

Remarks
This method is optional and not guaranteed to be called, but if so this might speed up computation.
Parameters
[in]state_dimExpected dimension of the state vector

Implements corbo::QuadratureCollocationInterface.

Definition at line 1124 of file quadrature.h.


The documentation for this class was generated from the following file:


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:07:21