Frame placement task model. More...
#include <frame-placement.hpp>
Public Types | |
| typedef TaskModelAbstractTpl< Scalar > | Base |
| typedef TaskDataFramePlacementTpl< Scalar > | Data |
| typedef DataCollectorAbstractTpl< Scalar > | DataCollectorAbstract |
| typedef MathBaseTpl< Scalar > | MathBase |
| typedef MathBase::Matrix3s | Matrix3s |
| typedef MathBase::Matrix6s | Matrix6s |
| typedef pinocchio::MotionTpl< Scalar > | Motion |
| typedef pinocchio::SE3Tpl< Scalar > | SE3 |
| typedef StateMultibodyTpl< Scalar > | StateMultibody |
| typedef TaskDataAbstractTpl< Scalar > | TaskDataAbstract |
| typedef MathBase::VectorXs | VectorXs |
| Public Types inherited from TaskModelAbstractTpl< _Scalar > | |
| typedef DataCollectorAbstractTpl< Scalar > | DataCollectorAbstract |
| typedef MathBaseTpl< Scalar > | MathBase |
| typedef MathBase::MatrixXs | MatrixXs |
| typedef StateAbstractTpl< Scalar > | StateAbstract |
| typedef TaskDataAbstractTpl< Scalar > | TaskDataAbstract |
| typedef MathBase::VectorXs | VectorXs |
Public Member Functions | |
| TaskModelFramePlacementTpl (std::shared_ptr< StateMultibody > state, const pinocchio::FrameIndex id, const SE3 &pref) | |
| Construct a frame placement task using the default control dimension. | |
| TaskModelFramePlacementTpl (std::shared_ptr< StateMultibody > state, const pinocchio::FrameIndex id, const SE3 &pref, const pinocchio::ReferenceFrame type) | |
| Construct a frame placement task with an explicit reference frame. | |
| TaskModelFramePlacementTpl (std::shared_ptr< StateMultibody > state, const pinocchio::FrameIndex id, const SE3 &pref, const pinocchio::ReferenceFrame type, const std::size_t nu) | |
| Construct a frame placement task with an explicit reference frame. | |
| TaskModelFramePlacementTpl (std::shared_ptr< StateMultibody > state, const pinocchio::FrameIndex id, const SE3 &pref, const std::size_t nu) | |
| Construct a frame placement task. | |
| virtual void | calc (const std::shared_ptr< TaskDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override |
| Compute the task value and task rate. | |
| virtual void | calcDiff (const std::shared_ptr< TaskDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override |
| Compute the task Jacobians. | |
| template<typename NewScalar> | |
| TaskModelFramePlacementTpl< NewScalar > | cast () const |
| Cast the task model to a different scalar type. | |
| virtual std::shared_ptr< TaskDataAbstract > | createData (DataCollectorAbstract *const data) override |
| Allocate task data. | |
| pinocchio::FrameIndex | get_id () const |
| Return the frame index. | |
| const SE3 & | get_reference () const |
| Return the reference placement. | |
| pinocchio::ReferenceFrame | get_type () const |
| Return the reference frame convention. | |
| virtual void | print (std::ostream &os) const override |
| Print relevant information. | |
| void | set_id (const pinocchio::FrameIndex id) |
| Update the frame index. | |
| void | set_reference (const SE3 &reference) |
| Update the reference placement. | |
| void | set_type (const pinocchio::ReferenceFrame type) |
| Update the reference frame convention. | |
| Public Member Functions inherited from TaskModelAbstractTpl< _Scalar > | |
| TaskModelAbstractTpl (std::shared_ptr< StateAbstract > state, const std::size_t nr, const std::size_t nu, const bool q_dependent=true, const bool v_dependent=true, const bool u_dependent=true, const bool has_acceleration=true) | |
| Initialize the task model. | |
| bool | get_has_acceleration () const |
| Return whether the task defines an acceleration component. | |
| std::size_t | get_nr () const |
| std::size_t | get_nu () const |
| bool | get_q_dependent () const |
| const std::shared_ptr< StateAbstract > & | get_state () const |
| bool | get_u_dependent () const |
| bool | get_v_dependent () const |
Public Attributes | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
| Public Attributes inherited from TaskModelAbstractTpl< _Scalar > | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
Protected Attributes | |
| std::size_t | nr_ |
| std::size_t | nu_ |
| bool | q_dependent_ |
| std::shared_ptr< StateAbstract > | state_ |
| bool | u_dependent_ |
| bool | v_dependent_ |
| Protected Attributes inherited from TaskModelAbstractTpl< _Scalar > | |
| bool | has_acceleration_ |
| std::size_t | nr_ |
| std::size_t | nu_ |
| bool | q_dependent_ |
| std::shared_ptr< StateAbstract > | state_ |
| bool | u_dependent_ |
| bool | v_dependent_ |
Frame placement task model.
The task quantity is a 6D pose error expressed in the selected reference frame. Let 

![\[ y_L = \log_6\!\left(M_{\mathrm{ref}}^{-1} M\right).
\]](form_427.png)
The three conventions are
![\[\begin{aligned}
\mathrm{LOCAL}:\quad & y = y_L, \\
\mathrm{WORLD}:\quad & y =
\log_6\!\left(M M_{\mathrm{ref}}^{-1}\right), \\
\mathrm{LOCAL\_WORLD\_ALIGNED}:\quad & y =
\begin{bmatrix}R&0\\0&R\end{bmatrix} y_L.
\end{aligned}
\]](form_428.png)
The reference placement is always an absolute pose in the world. The task rate and acceleration use the same reference-frame convention as the error:
![\[ v = {}^{\mathrm{rf}}\!V_f,\qquad
a = {}^{\mathrm{rf}}\!A_f.
\]](form_429.png)
Here 

Definition at line 50 of file frame-placement.hpp.
| typedef MathBaseTpl<Scalar> MathBase |
Definition at line 56 of file frame-placement.hpp.
| typedef TaskModelAbstractTpl<Scalar> Base |
Definition at line 57 of file frame-placement.hpp.
| typedef TaskDataAbstractTpl<Scalar> TaskDataAbstract |
Definition at line 58 of file frame-placement.hpp.
| typedef TaskDataFramePlacementTpl<Scalar> Data |
Definition at line 59 of file frame-placement.hpp.
| typedef DataCollectorAbstractTpl<Scalar> DataCollectorAbstract |
Definition at line 60 of file frame-placement.hpp.
| typedef StateMultibodyTpl<Scalar> StateMultibody |
Definition at line 61 of file frame-placement.hpp.
| typedef MathBase::Matrix3s Matrix3s |
Definition at line 62 of file frame-placement.hpp.
| typedef MathBase::Matrix6s Matrix6s |
Definition at line 63 of file frame-placement.hpp.
| typedef MathBase::VectorXs VectorXs |
Definition at line 64 of file frame-placement.hpp.
| typedef pinocchio::MotionTpl<Scalar> Motion |
Definition at line 65 of file frame-placement.hpp.
| typedef pinocchio::SE3Tpl<Scalar> SE3 |
Definition at line 66 of file frame-placement.hpp.
| overridevirtual |
Compute the task value and task rate.
Implements TaskModelAbstractTpl< _Scalar >.
| overridevirtual |
Compute the task Jacobians.
Implements TaskModelAbstractTpl< _Scalar >.
| overridevirtual |
Allocate task data.
Reimplemented from TaskModelAbstractTpl< _Scalar >.
| overridevirtual |
Print relevant information.
Reimplemented from TaskModelAbstractTpl< _Scalar >.
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar |
Definition at line 55 of file frame-placement.hpp.
| protected |
Definition at line 114 of file task-base.hpp.
| protected |
Definition at line 115 of file task-base.hpp.
| protected |
Definition at line 116 of file task-base.hpp.
| protected |
Definition at line 113 of file task-base.hpp.
| protected |
Definition at line 118 of file task-base.hpp.
| protected |
Definition at line 117 of file task-base.hpp.