|
| DifferentialActionModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nu, const std::size_t nr=0) |
| Initialize the differential action model. More...
|
|
virtual void | calc (const boost::shared_ptr< DifferentialActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
| Compute the total cost value for nodes that depends only on the state. More...
|
|
virtual void | calc (const boost::shared_ptr< DifferentialActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)=0 |
| Compute the system acceleration and cost value. More...
|
|
virtual void | calcDiff (const boost::shared_ptr< DifferentialActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
| Compute the derivatives of the cost functions with respect to the state only. More...
|
|
virtual void | calcDiff (const boost::shared_ptr< DifferentialActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)=0 |
| Compute the derivatives of the dynamics and cost functions. More...
|
|
virtual bool | checkData (const boost::shared_ptr< DifferentialActionDataAbstract > &data) |
| Checks that a specific data belongs to this model.
|
|
virtual boost::shared_ptr< DifferentialActionDataAbstract > | createData () |
| Create the differential action data. More...
|
|
bool | get_has_control_limits () const |
| Indicates if there are defined control limits.
|
|
std::size_t | get_nr () const |
| Return the dimension of the cost-residual vector.
|
|
std::size_t | get_nu () const |
| Return the dimension of the control input.
|
|
const boost::shared_ptr< StateAbstract > & | get_state () const |
| Return the state.
|
|
const VectorXs & | get_u_lb () const |
| Return the control lower bound.
|
|
const VectorXs & | get_u_ub () const |
| Return the control upper bound.
|
|
virtual void | print (std::ostream &os) const |
| Print relevant information of the differential action model. More...
|
|
virtual void | quasiStatic (const boost::shared_ptr< DifferentialActionDataAbstract > &data, Eigen::Ref< VectorXs > u, const Eigen::Ref< const VectorXs > &x, const std::size_t maxiter=100, const Scalar tol=Scalar(1e-9)) |
| Computes the quasic static commands. More...
|
|
VectorXs | quasiStatic_x (const boost::shared_ptr< DifferentialActionDataAbstract > &data, const VectorXs &x, const std::size_t maxiter=100, const Scalar tol=Scalar(1e-9)) |
|
void | set_u_lb (const VectorXs &u_lb) |
| Modify the control lower bounds.
|
|
void | set_u_ub (const VectorXs &u_ub) |
| Modify the control upper bounds.
|
|
template<typename _Scalar>
class crocoddyl::DifferentialActionModelAbstractTpl< _Scalar >
Abstract class for differential action model.
A differential action model is the time-continuous version of an action model, i.e.
\[ \begin{aligned} &\dot{\mathbf{v}} = \mathbf{f}(\mathbf{q}, \mathbf{v}, \mathbf{u}), &\textrm{(dynamics)}\\ &l(\mathbf{x},\mathbf{u}) = \int_0^{\delta t} a(\mathbf{r}(\mathbf{x},\mathbf{u}))\,dt, &\textrm{(cost)} \end{aligned} \]
where the configuration \(\mathbf{q}\in\mathcal{Q}\) lies in the configuration manifold described with a nq
-tuple, the velocity \(\mathbf{v}\in T_{\mathbf{q}}\mathcal{Q}\) its a tangent vector to this manifold with nv
dimension, \(\mathbf{u}\in\mathbb{R}^{nu}\) is the input commands, \(\mathbf{r}\) and \(a\) is a residual and activation functions (see ActivationModelAbstractTpl
). Both configuration and velocity describe the system space \(\mathbf{x}\in\mathbf{X}\) which lies in the state manifold. Note that the acceleration \(\dot{\mathbf{v}}\in T_{\mathbf{q}}\mathcal{Q}\) lies also in the tangent space of the configuration manifold.
The main computations are carrying out in calc
and calcDiff
. calc
computes the acceleration and cost and calcDiff
computes the derivatives of the dynamics and cost function. Concretely speaking, calcDiff
builds a linear-quadratic approximation of the differential action, where the dynamics and cost functions have linear and quadratic forms, respectively. \(\mathbf{f_x}\in\mathbb{R}^{nv\times ndx}\), \(\mathbf{f_u}\in\mathbb{R}^{nv\times nu}\) are the Jacobians of the dynamics; \(\mathbf{l_x}\in\mathbb{R}^{ndx}\), \(\mathbf{l_u}\in\mathbb{R}^{nu}\), \(\mathbf{l_{xx}}\in\mathbb{R}^{ndx\times ndx}\), \(\mathbf{l_{xu}}\in\mathbb{R}^{ndx\times nu}\), \(\mathbf{l_{uu}}\in\mathbb{R}^{nu\times nu}\) are the Jacobians and Hessians of the cost function, respectively. Additionally, it is important remark that calcDiff()
computes the derivates using the latest stored values by calc()
. Thus, we need to run first calc()
.
- See also
calc()
, calcDiff()
, createData()
Definition at line 53 of file diff-action-base.hpp.