|
| ActionModelNumDiffTpl (boost::shared_ptr< Base > model, bool with_gauss_approx=false) |
| Initialize the numdiff action model. More...
|
|
virtual void | calc (const boost::shared_ptr< ActionDataAbstract > &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< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
| Compute the next state and cost value. More...
|
|
virtual void | calcDiff (const boost::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
|
virtual void | calcDiff (const boost::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
| Compute the derivatives of the dynamics and cost functions. More...
|
|
virtual boost::shared_ptr< ActionDataAbstract > | createData () |
| Create the action data. More...
|
|
const Scalar | get_disturbance () const |
| Return the disturbance used in the numerical differentiation routine.
|
|
const boost::shared_ptr< Base > & | get_model () const |
| Return the acton model that we use to numerical differentiate.
|
|
bool | get_with_gauss_approx () |
| Identify if the Gauss approximation is going to be used or not.
|
|
void | set_disturbance (const Scalar disturbance) |
| Modify the disturbance used in the numerical differentiation routine.
|
|
template<typename _Scalar>
class crocoddyl::ActionModelNumDiffTpl< _Scalar >
This class computes the numerical differentiation of an action model.
It computes Jacobian of the cost, its residual and dynamics via numerical differentiation. It considers that the action model owns a cost residual and the cost is the square of this residual, i.e., \(\ell(\mathbf{x},\mathbf{u})=\frac{1}{2}\|\mathbf{r}(\mathbf{x},\mathbf{u})\|^2\), where \(\mathbf{r}(\mathbf{x},\mathbf{u})\) is the residual vector. The Hessian is computed only through the Gauss-Newton approximation, i.e.,
\begin{eqnarray*} \mathbf{\ell}_\mathbf{xx} &=& \mathbf{R_x}^T\mathbf{R_x} \\ \mathbf{\ell}_\mathbf{uu} &=& \mathbf{R_u}^T\mathbf{R_u} \\ \mathbf{\ell}_\mathbf{xu} &=& \mathbf{R_x}^T\mathbf{R_u} \end{eqnarray*}
where the Jacobians of the cost residuals are denoted by \(\mathbf{R_x}\) and \(\mathbf{R_u}\). Note that this approximation ignores the tensor products (e.g., \(\mathbf{R_{xx}}\mathbf{r}\)).
Finally, in the case that the cost does not have a residual, we set the Hessian to zero, i.e., \(\mathbf{L_{xx}} = \mathbf{L_{xu}} = \mathbf{L_{uu}} = \mathbf{0}\).
- See also
ActionModelAbstractTpl()
, calcDiff()
Definition at line 215 of file fwd.hpp.