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 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 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 isIntermediateControlSubjectToOptim () const override
 
bool isSupportingCompressedStatesMode () const 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...
 
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 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 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, 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, 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, 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 > &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 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, std::vector< Eigen::VectorXd *> &intermediate_x) 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 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 > &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
 
- Public Member Functions inherited from corbo::QuadratureCollocationInterface
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...
 
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 Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &x2, double dt, const UnaryFunction &fun, Eigen::Ref< Eigen::VectorXd > error)
 
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 1087 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 1476 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 1091 of file quadrature.h.

◆ getNumIntermediateControls()

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

Implements corbo::QuadratureCollocationInterface.

Definition at line 1098 of file quadrature.h.

◆ getNumIntermediatePoints()

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

Implements corbo::QuadratureCollocationInterface.

Definition at line 1096 of file quadrature.h.

◆ getNumIntermediateStates()

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

Implements corbo::QuadratureCollocationInterface.

Definition at line 1099 of file quadrature.h.

◆ interpolate() [1/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 1140 of file quadrature.h.

◆ interpolate() [2/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 1401 of file quadrature.h.

◆ interpolate() [3/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 1409 of file quadrature.h.

◆ isIntermediateControlSubjectToOptim()

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

Implements corbo::QuadratureCollocationInterface.

Definition at line 1095 of file quadrature.h.

◆ isSupportingCompressedStatesMode()

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

Implements corbo::QuadratureCollocationInterface.

Definition at line 1094 of file quadrature.h.

◆ quadrature() [1/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 1102 of file quadrature.h.

◆ quadrature() [2/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 1121 of file quadrature.h.

◆ quadrature() [3/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 1192 of file quadrature.h.

◆ quadrature() [4/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 1211 of file quadrature.h.

◆ quadrature() [5/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 1233 of file quadrature.h.

◆ quadrature() [6/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 1241 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 1266 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,
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 1288 of file quadrature.h.

◆ quadrature() [9/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 1298 of file quadrature.h.

◆ quadrature() [10/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 1317 of file quadrature.h.

◆ quadrature() [11/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 1337 of file quadrature.h.

◆ quadrature() [12/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 1358 of file quadrature.h.

◆ quadrature() [13/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 1368 of file quadrature.h.

◆ quadrature() [14/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 1391 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 Mon Feb 28 2022 22:08:03