Abstract class for the control trajectory parametrization. More...
#include <control-base.hpp>
Public Types | |
typedef ControlParametrizationDataAbstractTpl< Scalar > | ControlParametrizationDataAbstract |
typedef MathBaseTpl< Scalar > | MathBase |
typedef MathBase::MatrixXs | MatrixXs |
typedef MathBase::VectorXs | VectorXs |
Public Member Functions | |
ControlParametrizationModelAbstractTpl (const std::size_t nw, const std::size_t nu) | |
Initialize the control dimensions. More... | |
virtual void | calc (const std::shared_ptr< ControlParametrizationDataAbstract > &data, const Scalar t, const Eigen::Ref< const VectorXs > &u) const =0 |
Get the value of the control at the specified time. More... | |
virtual void | calcDiff (const std::shared_ptr< ControlParametrizationDataAbstract > &data, const Scalar t, const Eigen::Ref< const VectorXs > &u) const =0 |
Get the value of the Jacobian of the control with respect to the parameters. More... | |
virtual bool | checkData (const std::shared_ptr< ControlParametrizationDataAbstract > &data) |
Checks that a specific data belongs to this model. | |
virtual void | convertBounds (const Eigen::Ref< const VectorXs > &w_lb, const Eigen::Ref< const VectorXs > &w_ub, Eigen::Ref< VectorXs > u_lb, Eigen::Ref< VectorXs > u_ub) const =0 |
Convert the bounds on the control inputs w to bounds on the control parameters u. More... | |
virtual std::shared_ptr< ControlParametrizationDataAbstract > | createData () |
Create the control-parametrization data. More... | |
std::size_t | get_nu () const |
Return the dimension of control parameters. | |
std::size_t | get_nw () const |
Return the dimension of the control inputs. | |
virtual void | multiplyByJacobian (const std::shared_ptr< ControlParametrizationDataAbstract > &data, const Eigen::Ref< const MatrixXs > &A, Eigen::Ref< MatrixXs > out, const AssignmentOp op=setto) const =0 |
Compute the product between the given matrix A and the derivative of the control input with respect to the control parameters (i.e., A*dw_du). More... | |
virtual MatrixXs | multiplyByJacobian_J (const std::shared_ptr< ControlParametrizationDataAbstract > &data, const Eigen::Ref< const MatrixXs > &A, const AssignmentOp op=setto) const |
virtual void | multiplyJacobianTransposeBy (const std::shared_ptr< ControlParametrizationDataAbstract > &data, const Eigen::Ref< const MatrixXs > &A, Eigen::Ref< MatrixXs > out, const AssignmentOp op=setto) const =0 |
Compute the product between the transpose of the derivative of the control input with respect to the control parameters and a given matrix A (i.e., dw_du^T*A) More... | |
virtual MatrixXs | multiplyJacobianTransposeBy_J (const std::shared_ptr< ControlParametrizationDataAbstract > &data, const Eigen::Ref< const MatrixXs > &A, const AssignmentOp op=setto) const |
virtual void | params (const std::shared_ptr< ControlParametrizationDataAbstract > &data, const Scalar t, const Eigen::Ref< const VectorXs > &w) const =0 |
Update the control parameters u for a specified time t given the control input w. More... | |
virtual void | print (std::ostream &os) const |
Print relevant information of the control model. More... | |
Public Attributes | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
Protected Attributes | |
std::size_t | nu_ |
Control parameters dimension. | |
std::size_t | nw_ |
Control dimension. | |
Friends | |
template<class Scalar > | |
std::ostream & | operator<< (std::ostream &os, const ControlParametrizationModelAbstractTpl< Scalar > &model) |
Print information on the control model. | |
Abstract class for the control trajectory parametrization.
The control trajectory is a function of the (normalized) time. Normalized time is between 0 and 1, where 0 represents the beginning of the time step, and 1 represents its end. The trajectory depends on the control parameters u, whose size may be larger than the size of the control inputs w.
The main computations are carried out in calc
, multiplyByJacobian
and multiplyJacobianTransposeBy
, where the former computes control input \(\mathbf{w}\in\mathbb{R}^{nw}\) from a set of control parameters \(\mathbf{u}\in\mathbb{R}^{nu}\) where nw
and nu
represent the dimension of the control inputs and parameters, respectively, and the latter defines useful operations across the Jacobian of the control-parametrization model. Finally, params
allows us to obtain the control parameters from a the control input, i.e., it is the dual of calc
. Note that multiplyByJacobian
and multiplyJacobianTransposeBy
requires to run calc
first.
Definition at line 48 of file control-base.hpp.
ControlParametrizationModelAbstractTpl | ( | const std::size_t | nw, |
const std::size_t | nu | ||
) |
Initialize the control dimensions.
[in] | nw | Dimension of control inputs |
[in] | nu | Dimension of control parameters |
|
pure virtual |
Get the value of the control at the specified time.
[in] | data | Data structure containing the control vector to write |
[in] | t | Time in [0,1] |
[in] | u | Control parameters |
Implemented in ControlParametrizationModelNumDiffTpl< _Scalar >, ControlParametrizationModelPolyZeroTpl< _Scalar >, ControlParametrizationModelPolyTwoRKTpl< _Scalar >, and ControlParametrizationModelPolyOneTpl< _Scalar >.
|
pure virtual |
Get the value of the Jacobian of the control with respect to the parameters.
It assumes that calc()
has been run first
[in] | data | Control-parametrization data |
[in] | t | Time in [0,1] |
[in] | u | Control parameters |
Implemented in ControlParametrizationModelNumDiffTpl< _Scalar >, ControlParametrizationModelPolyZeroTpl< _Scalar >, ControlParametrizationModelPolyTwoRKTpl< _Scalar >, and ControlParametrizationModelPolyOneTpl< _Scalar >.
|
virtual |
Create the control-parametrization data.
Reimplemented in ControlParametrizationModelNumDiffTpl< _Scalar >, ControlParametrizationModelPolyZeroTpl< _Scalar >, ControlParametrizationModelPolyTwoRKTpl< _Scalar >, and ControlParametrizationModelPolyOneTpl< _Scalar >.
|
pure virtual |
Update the control parameters u for a specified time t given the control input w.
[in] | data | Control-parametrization data |
[in] | t | Time in [0,1] |
[in] | w | Control inputs |
Implemented in ControlParametrizationModelNumDiffTpl< _Scalar >, ControlParametrizationModelPolyZeroTpl< _Scalar >, ControlParametrizationModelPolyTwoRKTpl< _Scalar >, and ControlParametrizationModelPolyOneTpl< _Scalar >.
|
pure virtual |
Convert the bounds on the control inputs w to bounds on the control parameters u.
[in] | w_lb | Control lower bound |
[in] | w_ub | Control lower bound |
[out] | u_lb | Control parameters lower bound |
[out] | u_ub | Control parameters upper bound |
Implemented in ControlParametrizationModelNumDiffTpl< _Scalar >, ControlParametrizationModelPolyZeroTpl< _Scalar >, ControlParametrizationModelPolyTwoRKTpl< _Scalar >, and ControlParametrizationModelPolyOneTpl< _Scalar >.
|
pure virtual |
Compute the product between the given matrix A and the derivative of the control input with respect to the control parameters (i.e., A*dw_du).
It assumes that calc()
has been run first
[in] | data | Control-parametrization data |
[in] | A | A matrix to multiply times the Jacobian |
[out] | out | Product between the matrix A and the Jacobian of the control with respect to the parameters |
[in] | op | Assignment operator which sets, adds, or removes the given results |
Implemented in ControlParametrizationModelNumDiffTpl< _Scalar >, ControlParametrizationModelPolyZeroTpl< _Scalar >, ControlParametrizationModelPolyTwoRKTpl< _Scalar >, and ControlParametrizationModelPolyOneTpl< _Scalar >.
|
pure virtual |
Compute the product between the transpose of the derivative of the control input with respect to the control parameters and a given matrix A (i.e., dw_du^T*A)
It assumes that calc()
has been run first
[in] | data | Control-parametrization data |
[in] | A | A matrix to multiply times the Jacobian |
[out] | out | Product between the transposed Jacobian of the control with respect to the parameters and the matrix A |
[in] | op | Assignment operator which sets, adds, or removes the given results |
Implemented in ControlParametrizationModelNumDiffTpl< _Scalar >, ControlParametrizationModelPolyZeroTpl< _Scalar >, ControlParametrizationModelPolyTwoRKTpl< _Scalar >, and ControlParametrizationModelPolyOneTpl< _Scalar >.
|
virtual |
Print relevant information of the control model.
[out] | os | Output stream object |
Reimplemented in ControlParametrizationModelPolyZeroTpl< _Scalar >, ControlParametrizationModelPolyTwoRKTpl< _Scalar >, and ControlParametrizationModelPolyOneTpl< _Scalar >.