aligator
0.6.1
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
|
Midpoint integration rule. More...
#include <aligator/modelling/dynamics/integrator-midpoint.hpp>
Public Types | |
using | Scalar = _Scalar |
using | Base = IntegratorAbstractTpl<Scalar> |
using | ContinuousDynamics = ContinuousDynamicsAbstractTpl<Scalar> |
using | Manifold = ManifoldAbstractTpl<Scalar> |
using | Data = IntegratorMidpointDataTpl<Scalar> |
![]() | |
using | Scalar = _Scalar |
using | Base = DynamicsModelTpl<Scalar> |
using | BaseData = DynamicsDataTpl<Scalar> |
using | ContinuousDynamics = ContinuousDynamicsAbstractTpl<Scalar> |
![]() | |
using | Scalar = _Scalar |
using | Base = StageFunctionTpl<Scalar> |
using | Data = DynamicsDataTpl<Scalar> |
using | Manifold = ManifoldAbstractTpl<Scalar> |
using | ManifoldPtr = shared_ptr<Manifold> |
![]() | |
using | Scalar = _Scalar |
using | Data = StageFunctionDataTpl<Scalar> |
Public Member Functions | |
ALIGATOR_DYNAMIC_TYPEDEFS (Scalar) | |
IntegratorMidpointTpl (const shared_ptr< ContinuousDynamics > &cont_dynamics, const Scalar timestep) | |
void | evaluate (const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, DynamicsDataTpl< Scalar > &data) const |
void | computeJacobians (const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, DynamicsDataTpl< Scalar > &data) const |
shared_ptr< DynamicsDataTpl< Scalar > > | createData () const |
Instantiate a Data object. | |
![]() | |
IntegratorAbstractTpl (const shared_ptr< ContinuousDynamics > &cont_dynamics) | |
Constructor from instances of DynamicsType. | |
virtual | ~IntegratorAbstractTpl ()=default |
![]() | |
ALIGATOR_DYNAMIC_TYPEDEFS (Scalar) | |
const Manifold & | space () const |
State space for the input. | |
const Manifold & | space_next () const |
State space for the output of this dynamics model. | |
virtual bool | is_explicit () const |
Check if this dynamics model is implicit or explicit. | |
int | nx1 () const |
int | nx2 () const |
DynamicsModelTpl (ManifoldPtr space, const int nu) | |
Constructor for dynamics. | |
DynamicsModelTpl (ManifoldPtr space, const int nu, ManifoldPtr space2) | |
Constructor for dynamics. This constructor assumes same dimension for the current and next state. | |
![]() | |
ALIGATOR_DYNAMIC_TYPEDEFS (Scalar) | |
StageFunctionTpl (const int ndx1, const int nu, const int ndx2, const int nr) | |
StageFunctionTpl (const int ndx, const int nu, const int nr) | |
Constructor where ndx2 = ndx1. | |
virtual void | evaluate (const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, Data &data) const =0 |
Evaluate the function. | |
virtual void | computeJacobians (const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, Data &data) const =0 |
Compute Jacobians of this function. | |
virtual void | computeVectorHessianProducts (const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, const ConstVectorRef &lbda, Data &data) const |
Compute the vector-hessian products of this function. | |
virtual | ~StageFunctionTpl ()=default |
Public Attributes | |
Scalar | timestep_ |
![]() | |
shared_ptr< ContinuousDynamics > | continuous_dynamics_ |
The underlying continuous dynamics. | |
![]() | |
ManifoldPtr | space_ |
State space for the input. | |
ManifoldPtr | space_next_ |
State space for the output of this dynamics model. | |
![]() | |
const int | ndx1 |
Current state dimension. | |
const int | nu |
Control dimension. | |
const int | ndx2 |
Next state dimension. | |
const int | nr |
Function codimension. | |
Midpoint integration rule.
The rule is described, for general DAEs, as
\[ \phi(x_k, u_k, x_{k+1}) = g(\hat{x}_0, u_k, \frac{x_{k+1}\ominus x_k}{h}) = 0. \]
where \(\hat{x}_0 = \mathrm{Interp}_{1/2}(x_k, x_{k+1})\). Even for ODEs, it is still an implicit integration rule.
The Jacobians are:
\[ \frac{\partial f}{\partial z} = \frac{\partial g}{\partial \hat{x}_0} \frac{\partial \hat{x}_0}{\partial z} + \frac{\partial g}{\partial z} + \frac{\partial g}{\partial v} \frac{\partial v}{\partial z} \]
Definition at line 28 of file integrator-midpoint.hpp.
using aligator::dynamics::IntegratorMidpointTpl< _Scalar >::Scalar = _Scalar |
Definition at line 29 of file integrator-midpoint.hpp.
using aligator::dynamics::IntegratorMidpointTpl< _Scalar >::Base = IntegratorAbstractTpl<Scalar> |
Definition at line 31 of file integrator-midpoint.hpp.
using aligator::dynamics::IntegratorMidpointTpl< _Scalar >::ContinuousDynamics = ContinuousDynamicsAbstractTpl<Scalar> |
Definition at line 32 of file integrator-midpoint.hpp.
using aligator::dynamics::IntegratorMidpointTpl< _Scalar >::Manifold = ManifoldAbstractTpl<Scalar> |
Definition at line 33 of file integrator-midpoint.hpp.
using aligator::dynamics::IntegratorMidpointTpl< _Scalar >::Data = IntegratorMidpointDataTpl<Scalar> |
Definition at line 34 of file integrator-midpoint.hpp.
aligator::dynamics::IntegratorMidpointTpl< _Scalar >::IntegratorMidpointTpl | ( | const shared_ptr< ContinuousDynamics > & | cont_dynamics, |
const Scalar | timestep ) |
aligator::dynamics::IntegratorMidpointTpl< _Scalar >::ALIGATOR_DYNAMIC_TYPEDEFS | ( | Scalar | ) |
void aligator::dynamics::IntegratorMidpointTpl< _Scalar >::evaluate | ( | const ConstVectorRef & | x, |
const ConstVectorRef & | u, | ||
const ConstVectorRef & | y, | ||
DynamicsDataTpl< Scalar > & | data ) const |
void aligator::dynamics::IntegratorMidpointTpl< _Scalar >::computeJacobians | ( | const ConstVectorRef & | x, |
const ConstVectorRef & | u, | ||
const ConstVectorRef & | y, | ||
DynamicsDataTpl< Scalar > & | data ) const |
|
virtual |
Instantiate a Data object.
Reimplemented from aligator::dynamics::IntegratorAbstractTpl< _Scalar >.
Scalar aligator::dynamics::IntegratorMidpointTpl< _Scalar >::timestep_ |
Definition at line 36 of file integrator-midpoint.hpp.