pinocchio  2.1.3
LieGroupBase< Derived > Struct Template Reference

Public Types

enum  {
  Options = traits<LieGroupDerived>::Options,
  NQ = traits<LieGroupDerived>::NQ,
  NV = traits<LieGroupDerived>::NV
}
 
typedef Eigen::Matrix< Scalar, NQ, 1, Options > ConfigVector_t
 
typedef int Index
 
typedef Eigen::Matrix< Scalar, NV, NV, Options > JacobianMatrix_t
 
typedef Derived LieGroupDerived
 
typedef traits< LieGroupDerived >::Scalar Scalar
 
typedef Eigen::Matrix< Scalar, NV, 1, Options > TangentVector_t
 

Public Member Functions

API with return value as argument
template<class ConfigIn_t , class Tangent_t , class ConfigOut_t >
void integrate (const Eigen::MatrixBase< ConfigIn_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< ConfigOut_t > &qout) const
 Integrate a joint's configuration with a tangent vector during one unit time duration. More...
 
template<class Config_t , class Jacobian_t >
void integrateCoeffWiseJacobian (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Jacobian_t > &J) const
 Computes the Jacobian of the integrate operator around zero. More...
 
template<ArgumentPosition arg, class Config_t , class Tangent_t , class JacobianOut_t >
void dIntegrate (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianOut_t > &J) const
 Computes the Jacobian of a small variation of the configuration vector or the tangent vector into tangent space at identity. More...
 
template<class Config_t , class Tangent_t , class JacobianOut_t >
void dIntegrate (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianOut_t > &J, const ArgumentPosition arg) const
 Computes the Jacobian of a small variation of the configuration vector or the tangent vector into tangent space at identity. More...
 
template<class Config_t , class Tangent_t , class JacobianOut_t >
void dIntegrate_dq (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianOut_t > &J) const
 Computes the Jacobian of a small variation of the configuration vector into tangent space at identity. More...
 
template<class Config_t , class Tangent_t , class JacobianOut_t >
void dIntegrate_dv (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianOut_t > &J) const
 Computes the Jacobian of a small variation of the tangent vector into tangent space at identity. More...
 
template<class ConfigL_t , class ConfigR_t , class ConfigOut_t >
void interpolate (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Scalar &u, const Eigen::MatrixBase< ConfigOut_t > &qout) const
 Interpolation between two joint's configurations. More...
 
template<class Config_t >
void normalize (const Eigen::MatrixBase< Config_t > &qout) const
 Normalize the joint configuration given as input. For instance, the quaternion must be unitary. More...
 
template<class Config_t >
void random (const Eigen::MatrixBase< Config_t > &qout) const
 Generate a random joint configuration, normalizing quaternions when necessary. More...
 
template<class ConfigL_t , class ConfigR_t , class ConfigOut_t >
void randomConfiguration (const Eigen::MatrixBase< ConfigL_t > &lower_pos_limit, const Eigen::MatrixBase< ConfigR_t > &upper_pos_limit, const Eigen::MatrixBase< ConfigOut_t > &qout) const
 Generate a configuration vector uniformly sampled among provided limits. More...
 
template<class ConfigL_t , class ConfigR_t , class Tangent_t >
void difference (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Eigen::MatrixBase< Tangent_t > &v) const
 Computes the tangent vector that must be integrated during one unit time to go from q0 to q1. More...
 
template<class ConfigL_t , class ConfigR_t , class JacobianLOut_t , class JacobianROut_t >
void Jdifference (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Eigen::MatrixBase< JacobianLOut_t > &J0, const Eigen::MatrixBase< JacobianROut_t > &J1) const PINOCCHIO_DEPRECATED
 
template<ArgumentPosition arg, class ConfigL_t , class ConfigR_t , class JacobianOut_t >
void dDifference (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Eigen::MatrixBase< JacobianOut_t > &J) const
 Computes the Jacobian of the difference operation with respect to q0 or q1. More...
 
template<class ConfigL_t , class ConfigR_t >
Scalar squaredDistance (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1) const
 Squared distance between two joint configurations. More...
 
template<class ConfigL_t , class ConfigR_t >
Scalar distance (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1) const
 Distance between two configurations of the joint. More...
 
template<class ConfigL_t , class ConfigR_t >
bool isSameConfiguration (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Scalar &prec=Eigen::NumTraits< Scalar >::dummy_precision()) const
 Check if two configurations are equivalent within the given precision. More...
 
API that allocates memory
template<class Config_t , class Tangent_t >
ConfigVector_t integrate (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v) const
 
template<class ConfigL_t , class ConfigR_t >
ConfigVector_t interpolate (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Scalar &u) const
 
ConfigVector_t random () const
 
template<class ConfigL_t , class ConfigR_t >
ConfigVector_t randomConfiguration (const Eigen::MatrixBase< ConfigL_t > &lower_pos_limit, const Eigen::MatrixBase< ConfigR_t > &upper_pos_limit) const
 
template<class ConfigL_t , class ConfigR_t >
TangentVector_t difference (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1) const
 
Default implementations
template<class ConfigL_t , class ConfigR_t , class ConfigOut_t >
void interpolate_impl (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Scalar &u, const Eigen::MatrixBase< ConfigOut_t > &qout) const
 
template<class Config_t >
void normalize_impl (const Eigen::MatrixBase< Config_t > &qout) const
 
template<class ConfigL_t , class ConfigR_t >
Scalar squaredDistance_impl (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1) const
 
template<class ConfigL_t , class ConfigR_t >
bool isSameConfiguration_impl (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Scalar &prec) const
 
Index nq () const
 
Index nv () const
 Get dimension of Lie Group tangent space.
 
ConfigVector_t neutral () const
 Get neutral element as a vector.
 
std::string name () const
 Get name of instance.
 
Derived & derived ()
 
const Derived & derived () const
 

Protected Member Functions

 LieGroupBase ()
 
 LieGroupBase (const LieGroupBase &)
 

Detailed Description

template<typename Derived>
struct pinocchio::LieGroupBase< Derived >

Definition at line 35 of file liegroup-base.hpp.

Constructor & Destructor Documentation

LieGroupBase ( )
inlineprotected

Default constructor.

Prevent the construction of derived class.

Definition at line 347 of file liegroup-base.hpp.

LieGroupBase ( const LieGroupBase< Derived > &  )
inlineprotected

Copy constructor

Prevent the copy of derived class.

Definition at line 352 of file liegroup-base.hpp.

Member Function Documentation

void dDifference ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
const Eigen::MatrixBase< JacobianOut_t > &  J 
) const

Computes the Jacobian of the difference operation with respect to q0 or q1.

Parameters
[in]q0the initial configuration vector.
[in]q1the terminal configuration vector.
Template Parameters
argARG0 (resp. ARG1) to get the Jacobian with respect to q0 (resp. q1).
Parameters
[out]Jthe Jacobian of the difference operation.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

void difference ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
const Eigen::MatrixBase< Tangent_t > &  v 
) const

Computes the tangent vector that must be integrated during one unit time to go from q0 to q1.

Parameters
[in]q0the initial configuration vector.
[in]q1the terminal configuration vector.
[out]vthe corresponding velocity.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

void dIntegrate ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianOut_t > &  J 
) const
inline

Computes the Jacobian of a small variation of the configuration vector or the tangent vector into tangent space at identity.

This Jacobian corresponds to the Jacobian of \( (\mathbf{q} \oplus \delta \mathbf{q}) \oplus \mathbf{v} \) with \( \delta \mathbf{q} \rightarrow 0 \) if arg == ARG0 or \( \delta \mathbf{v} \rightarrow 0 \) if arg == ARG1.

Parameters
[in]qconfiguration vector.
[in]vtangent vector.
Template Parameters
argARG0 (resp. ARG1) to get the Jacobian with respect to q (resp. v).
Parameters
[out]Jthe Jacobian of the Integrate operation w.r.t. the argument arg.

Definition at line 96 of file liegroup-base.hpp.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

void dIntegrate ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianOut_t > &  J,
const ArgumentPosition  arg 
) const

Computes the Jacobian of a small variation of the configuration vector or the tangent vector into tangent space at identity.

This Jacobian corresponds to the Jacobian of \( (\mathbf{q} \oplus \delta \mathbf{q}) \oplus \mathbf{v} \) with \( \delta \mathbf{q} \rightarrow 0 \) if arg == ARG0 or \( \delta \mathbf{v} \rightarrow 0 \) if arg == ARG1.

Parameters
[in]qconfiguration vector.
[in]vtangent vector.
[in]argARG0 (resp. ARG1) to get the Jacobian with respect to q (resp. v).
[out]Jthe Jacobian of the Integrate operation w.r.t. the argument arg.
void dIntegrate_dq ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianOut_t > &  J 
) const

Computes the Jacobian of a small variation of the configuration vector into tangent space at identity.

This Jacobian corresponds to the Jacobian of \( (\mathbf{q} \oplus \delta \mathbf{q}) \oplus \mathbf{v} \) with \( \delta \mathbf{q} \rightarrow 0 \).

Parameters
[in]qconfiguration vector.
[in]vtangent vector.
[out]Jthe Jacobian of the Integrate operation w.r.t. the configuration vector q.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

void dIntegrate_dv ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianOut_t > &  J 
) const

Computes the Jacobian of a small variation of the tangent vector into tangent space at identity.

This Jacobian corresponds to the Jacobian of \( \mathbf{q} \oplus (\mathbf{v} + \delta \mathbf{v}) \) with \( \delta \mathbf{v} \rightarrow 0 \).

Parameters
[in]qconfiguration vector.
[in]vtangent vector.
[out]Jthe Jacobian of the Integrate operation w.r.t. the tangent vector v.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

Scalar distance ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1 
) const

Distance between two configurations of the joint.

Parameters
[in]q0the initial configuration vector.
[in]q1the terminal configuration vector.
Returns
The corresponding distance.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

void integrate ( const Eigen::MatrixBase< ConfigIn_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< ConfigOut_t > &  qout 
) const

Integrate a joint's configuration with a tangent vector during one unit time duration.

Parameters
[in]qthe initial configuration.
[in]vthe tangent velocity.
[out]qoutthe configuration integrated.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

void integrateCoeffWiseJacobian ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Jacobian_t > &  J 
) const

Computes the Jacobian of the integrate operator around zero.

This function computes the Jacobian of the configuration vector variation (component-vise) with respect to a small variation in the tangent.

Parameters
[in]qconfiguration vector.
[out]Jthe Jacobian of the log of the Integrate operation w.r.t. the configuration vector q.
Remarks
This function might be useful for instance when using google-ceres to compute the Jacobian of the integrate operation.
void interpolate ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
const Scalar &  u,
const Eigen::MatrixBase< ConfigOut_t > &  qout 
) const

Interpolation between two joint's configurations.

Parameters
[in]q0the initial configuration to interpolate.
[in]q1the final configuration to interpolate.
[in]uin [0;1] the absicca along the interpolation.
[out]qoutthe interpolated configuration (q0 if u = 0, q1 if u = 1)

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

bool isSameConfiguration ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
const Scalar &  prec = Eigen::NumTraits< Scalar >::dummy_precision() 
) const

Check if two configurations are equivalent within the given precision.

Parameters
[in]q0Configuration 0
[in]q1Configuration 1

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

void normalize ( const Eigen::MatrixBase< Config_t > &  qout) const

Normalize the joint configuration given as input. For instance, the quaternion must be unitary.

Parameters
[out]qoutthe normalized joint configuration.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

Index nq ( ) const

Get dimension of Lie Group vector representation

For instance, for SO(3), the dimension of the vector representation is 4 (quaternion) while the dimension of the tangent space is 3.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

void random ( const Eigen::MatrixBase< Config_t > &  qout) const

Generate a random joint configuration, normalizing quaternions when necessary.

Warning
Do not take into account the joint limits. To shoot a configuration uniformingly depending on joint limits, see randomConfiguration.
Parameters
[out]qoutthe random joint configuration.
void randomConfiguration ( const Eigen::MatrixBase< ConfigL_t > &  lower_pos_limit,
const Eigen::MatrixBase< ConfigR_t > &  upper_pos_limit,
const Eigen::MatrixBase< ConfigOut_t > &  qout 
) const

Generate a configuration vector uniformly sampled among provided limits.

Parameters
[in]lower_pos_limitthe lower joint limit vector.
[in]upper_pos_limitthe upper joint limit vector.
[out]qoutthe random joint configuration in the two bounds.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().

Scalar squaredDistance ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1 
) const

Squared distance between two joint configurations.

Parameters
[in]q0the initial configuration vector.
[in]q1the terminal configuration vector.
[out]dthe corresponding distance betwenn q0 and q1.

Referenced by LieGroupBase< CartesianProductOperation< LieGroup1, LieGroup2 > >::dIntegrate().


The documentation for this struct was generated from the following file: