Public Types | Protected Member Functions | List of all members
pinocchio::LieGroupBase< Derived > Struct Template Reference

#include <liegroup-base.hpp>

Public Types

enum  { Options = traits<LieGroupDerived>::Options, NQ = traits<LieGroupDerived>::NQ, NV = traits<LieGroupDerived>::NV }
 
typedef Eigen::Matrix< Scalar, NQ, 1, OptionsConfigVector_t
 
typedef int Index
 
typedef Eigen::Matrix< Scalar, NV, NV, OptionsJacobianMatrix_t
 
typedef Derived LieGroupDerived
 
typedef traits< LieGroupDerived >::Scalar Scalar
 
typedef Eigen::Matrix< Scalar, NV, 1, OptionsTangentVector_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, AssignmentOperatorType op=SETTO) 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 AssignmentOperatorType op=SETTO) 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 AssignmentOperatorType op=SETTO) 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 JacobianIn_t , class JacobianOut_t >
void dIntegrate_dq (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianIn_t > &Jin, int self, const Eigen::MatrixBase< JacobianOut_t > &Jout, const AssignmentOperatorType op=SETTO) const
 
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void dIntegrate_dq (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, int self, const Eigen::MatrixBase< JacobianIn_t > &Jin, const Eigen::MatrixBase< JacobianOut_t > &Jout, const AssignmentOperatorType op=SETTO) const
 
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 AssignmentOperatorType op=SETTO) const
 Computes the Jacobian of a small variation of the tangent vector into tangent space at identity. More...
 
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void dIntegrate_dv (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, int self, const Eigen::MatrixBase< JacobianIn_t > &Jin, const Eigen::MatrixBase< JacobianOut_t > &Jout, const AssignmentOperatorType op=SETTO) const
 
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void dIntegrate_dv (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianIn_t > &Jin, int self, const Eigen::MatrixBase< JacobianOut_t > &Jout, const AssignmentOperatorType op=SETTO) const
 
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void dIntegrateTransport (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianIn_t > &Jin, const Eigen::MatrixBase< JacobianOut_t > &Jout, const ArgumentPosition arg) const
 Transport a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the configuration or the velocity arguments. More...
 
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void dIntegrateTransport_dq (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianIn_t > &Jin, const Eigen::MatrixBase< JacobianOut_t > &Jout) const
 Transport a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the configuration argument. More...
 
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void dIntegrateTransport_dv (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianIn_t > &Jin, const Eigen::MatrixBase< JacobianOut_t > &Jout) const
 Transport a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the velocity argument. More...
 
template<class Config_t , class Tangent_t , class Jacobian_t >
void dIntegrateTransport (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< Jacobian_t > &J, const ArgumentPosition arg) const
 Transport in place a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the configuration or the velocity arguments. More...
 
template<class Config_t , class Tangent_t , class Jacobian_t >
void dIntegrateTransport_dq (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< Jacobian_t > &J) const
 Transport in place a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the configuration argument. More...
 
template<class Config_t , class Tangent_t , class Jacobian_t >
void dIntegrateTransport_dv (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< Jacobian_t > &J) const
 Transport in place a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the velocity argument. 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 >
bool isNormalized (const Eigen::MatrixBase< Config_t > &qin, const Scalar &prec=Eigen::NumTraits< Scalar >::dummy_precision()) const
 Check whether the input joint configuration is normalized. 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<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 , class JacobianOut_t >
void dDifference (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Eigen::MatrixBase< JacobianOut_t > &J, const ArgumentPosition arg) const
 Computes the Jacobian of the difference operation with respect to q0 or q1. More...
 
template<ArgumentPosition arg, class ConfigL_t , class ConfigR_t , class JacobianIn_t , class JacobianOut_t >
void dDifference (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Eigen::MatrixBase< JacobianIn_t > &Jin, int self, const Eigen::MatrixBase< JacobianOut_t > &Jout, const AssignmentOperatorType op=SETTO) const
 
template<ArgumentPosition arg, class ConfigL_t , class ConfigR_t , class JacobianIn_t , class JacobianOut_t >
void dDifference (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, int self, const Eigen::MatrixBase< JacobianIn_t > &Jin, const Eigen::MatrixBase< JacobianOut_t > &Jout, const AssignmentOperatorType op=SETTO) const
 
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...
 
bool operator== (const LieGroupBase &other) const
 
bool operator!= (const LieGroupBase &other) const
 
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 Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void dIntegrate_product_impl (const Config_t &q, const Tangent_t &v, const JacobianIn_t &Jin, JacobianOut_t &Jout, bool dIntegrateOnTheLeft, const ArgumentPosition arg, const AssignmentOperatorType op) const
 
template<ArgumentPosition arg, class ConfigL_t , class ConfigR_t , class JacobianIn_t , class JacobianOut_t >
void dDifference_product_impl (const ConfigL_t &q0, const ConfigR_t &q1, const JacobianIn_t &Jin, JacobianOut_t &Jout, bool dDifferenceOnTheLeft, const AssignmentOperatorType op) const
 
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 Config_t >
bool isNormalized_impl (const Eigen::MatrixBase< Config_t > &qin, const Scalar &prec=Eigen::NumTraits< Scalar >::dummy_precision()) 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
 
bool isEqual_impl (const LieGroupBase &) const
 Default equality check. By default, two LieGroupBase of same type are considered equal. More...
 
bool isDifferent_impl (const LieGroupBase &other) const
 
Index nq () const
 
Index nv () const
 Get dimension of Lie Group tangent space. More...
 
ConfigVector_t neutral () const
 Get neutral element as a vector. More...
 
std::string name () const
 Get name of instance. More...
 
Derived & derived ()
 
const Derived & derived () const
 

Protected Member Functions

 LieGroupBase ()
 
 LieGroupBase (const LieGroupBase &)
 
LieGroupBaseoperator= (const LieGroupBase &)
 

Detailed Description

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

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

Member Typedef Documentation

◆ ConfigVector_t

template<typename Derived >
typedef Eigen::Matrix<Scalar, NQ, 1, Options> pinocchio::LieGroupBase< Derived >::ConfigVector_t

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

◆ Index

template<typename Derived >
typedef int pinocchio::LieGroupBase< Derived >::Index

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

◆ JacobianMatrix_t

template<typename Derived >
typedef Eigen::Matrix<Scalar, NV, NV, Options> pinocchio::LieGroupBase< Derived >::JacobianMatrix_t

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

◆ LieGroupDerived

template<typename Derived >
typedef Derived pinocchio::LieGroupBase< Derived >::LieGroupDerived

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

◆ Scalar

template<typename Derived >
typedef traits<LieGroupDerived>::Scalar pinocchio::LieGroupBase< Derived >::Scalar

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

◆ TangentVector_t

template<typename Derived >
typedef Eigen::Matrix<Scalar, NV, 1, Options> pinocchio::LieGroupBase< Derived >::TangentVector_t

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

Member Enumeration Documentation

◆ anonymous enum

template<typename Derived >
anonymous enum
Enumerator
Options 
NQ 
NV 

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

Constructor & Destructor Documentation

◆ LieGroupBase() [1/2]

template<typename Derived >
pinocchio::LieGroupBase< Derived >::LieGroupBase ( )
inlineprotected

Default constructor.

Prevent the construction of derived class.

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

◆ LieGroupBase() [2/2]

template<typename Derived >
pinocchio::LieGroupBase< Derived >::LieGroupBase ( const LieGroupBase< Derived > &  )
inlineprotected

Copy constructor

Prevent the copy of derived class.

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

Member Function Documentation

◆ dDifference() [1/4]

template<typename Derived >
template<ArgumentPosition arg, class ConfigL_t , class ConfigR_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dDifference ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
const Eigen::MatrixBase< JacobianIn_t > &  Jin,
int  self,
const Eigen::MatrixBase< JacobianOut_t > &  Jout,
const AssignmentOperatorType  op = SETTO 
) const

◆ dDifference() [2/4]

template<typename Derived >
template<ArgumentPosition arg, class ConfigL_t , class ConfigR_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::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.

Template Parameters
argARG0 (resp. ARG1) to get the Jacobian with respect to q0 (resp. q1).
Parameters
[in]q0the initial configuration vector.
[in]q1the terminal configuration vector.
[out]Jthe Jacobian of the difference operation.
Warning
because $ q_1 \ominus q_0 = - \left( q_0 \ominus q_1 \right) $, you may be tempted to write $ \frac{\partial\ominus}{\partial q_1} = - \frac{\partial\ominus}{\partial q_0} $. This is false in the general case because $ \frac{\partial\ominus}{\partial q_i} $ expects an input velocity relative to frame i. See SpecialEuclideanOperationTpl<3,_Scalar,_Options>::dDifference_impl.

\cheatsheet $ \frac{\partial\ominus}{\partial q_1} \frac{\partial\oplus}{\partial v} = I $

◆ dDifference() [3/4]

template<typename Derived >
template<class ConfigL_t , class ConfigR_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dDifference ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
const Eigen::MatrixBase< JacobianOut_t > &  J,
const ArgumentPosition  arg 
) 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.
[in]argARG0 (resp. ARG1) to get the Jacobian with respect to q0 (resp. q1).
[out]Jthe Jacobian of the difference operation.

◆ dDifference() [4/4]

template<typename Derived >
template<ArgumentPosition arg, class ConfigL_t , class ConfigR_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dDifference ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
int  self,
const Eigen::MatrixBase< JacobianIn_t > &  Jin,
const Eigen::MatrixBase< JacobianOut_t > &  Jout,
const AssignmentOperatorType  op = SETTO 
) const

◆ dDifference_product_impl()

template<typename Derived >
template<ArgumentPosition arg, class ConfigL_t , class ConfigR_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dDifference_product_impl ( const ConfigL_t &  q0,
const ConfigR_t &  q1,
const JacobianIn_t &  Jin,
JacobianOut_t &  Jout,
bool  dDifferenceOnTheLeft,
const AssignmentOperatorType  op 
) const

◆ derived() [1/2]

template<typename Derived >
Derived& pinocchio::LieGroupBase< Derived >::derived ( )
inline

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

◆ derived() [2/2]

template<typename Derived >
const Derived& pinocchio::LieGroupBase< Derived >::derived ( ) const
inline

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

◆ difference() [1/2]

template<typename Derived >
template<class ConfigL_t , class ConfigR_t >
TangentVector_t pinocchio::LieGroupBase< Derived >::difference ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1 
) const

◆ difference() [2/2]

template<typename Derived >
template<class ConfigL_t , class ConfigR_t , class Tangent_t >
void pinocchio::LieGroupBase< Derived >::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.
Note
Both inputs must be well-formed configuration vectors. The output of this function is unspecified if inputs contain NaNs or extremal values for the underlying scalar type.

\cheatsheet $ q_1 \ominus q_0 = - \left( q_0 \ominus q_1 \right) $

◆ dIntegrate() [1/2]

template<typename Derived >
template<ArgumentPosition arg, class Config_t , class Tangent_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrate ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianOut_t > &  J,
AssignmentOperatorType  op = SETTO 
) 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.
[in]opassignment operator (SETTO, ADDTO or RMTO).
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 112 of file liegroup-base.hpp.

◆ dIntegrate() [2/2]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrate ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianOut_t > &  J,
const ArgumentPosition  arg,
const AssignmentOperatorType  op = SETTO 
) 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).
[in]opassignment operator (SETTO, ADDTO and RMTO).
[out]Jthe Jacobian of the Integrate operation w.r.t. the argument arg.

◆ dIntegrate_dq() [1/3]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrate_dq ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianIn_t > &  Jin,
int  self,
const Eigen::MatrixBase< JacobianOut_t > &  Jout,
const AssignmentOperatorType  op = SETTO 
) const

◆ dIntegrate_dq() [2/3]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrate_dq ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianOut_t > &  J,
const AssignmentOperatorType  op = SETTO 
) 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.
[in]opassignment operator (SETTO, ADDTO or RMTO).
[out]Jthe Jacobian of the Integrate operation w.r.t. the configuration vector q.

◆ dIntegrate_dq() [3/3]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrate_dq ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
int  self,
const Eigen::MatrixBase< JacobianIn_t > &  Jin,
const Eigen::MatrixBase< JacobianOut_t > &  Jout,
const AssignmentOperatorType  op = SETTO 
) const

◆ dIntegrate_dv() [1/3]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrate_dv ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianIn_t > &  Jin,
int  self,
const Eigen::MatrixBase< JacobianOut_t > &  Jout,
const AssignmentOperatorType  op = SETTO 
) const

◆ dIntegrate_dv() [2/3]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrate_dv ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianOut_t > &  J,
const AssignmentOperatorType  op = SETTO 
) 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.
[in]opassignment operator (SETTO, ADDTO or RMTO).
[out]Jthe Jacobian of the Integrate operation w.r.t. the tangent vector v.

◆ dIntegrate_dv() [3/3]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrate_dv ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
int  self,
const Eigen::MatrixBase< JacobianIn_t > &  Jin,
const Eigen::MatrixBase< JacobianOut_t > &  Jout,
const AssignmentOperatorType  op = SETTO 
) const

◆ dIntegrate_product_impl()

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrate_product_impl ( const Config_t &  q,
const Tangent_t &  v,
const JacobianIn_t &  Jin,
JacobianOut_t &  Jout,
bool  dIntegrateOnTheLeft,
const ArgumentPosition  arg,
const AssignmentOperatorType  op 
) const

◆ dIntegrateTransport() [1/2]

template<typename Derived >
template<class Config_t , class Tangent_t , class Jacobian_t >
void pinocchio::LieGroupBase< Derived >::dIntegrateTransport ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< Jacobian_t > &  J,
const ArgumentPosition  arg 
) const

Transport in place a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the configuration or the velocity arguments.

This function performs the parallel transportation of an input matrix whose columns are expressed in the tangent space of the integrated element $ q \oplus v $, to the tangent space at $ q $. In other words, this functions transforms a tangent vector expressed at $ q \oplus v $ to a tangent vector expressed at $ q $, considering that the change of configuration between $ q \oplus v $ and $ q $ may alter the value of this tangent vector. A typical example of parallel transportation is the action operated by a rigid transformation $ M \in \text{SE}(3)$ on a spatial velocity $ v \in \text{se}(3)$. In the context of configuration spaces assimilated to vector spaces, this operation corresponds to Identity. For Lie groups, its corresponds to the canonical vector field transportation.

Parameters
[in]qconfiguration vector.
[in]vtangent vector
[in,out]Jthe inplace matrix
[in]argargument with respect to which the differentiation is performed (ARG0 corresponding to q, and ARG1 to v)

◆ dIntegrateTransport() [2/2]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrateTransport ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianIn_t > &  Jin,
const Eigen::MatrixBase< JacobianOut_t > &  Jout,
const ArgumentPosition  arg 
) const

Transport a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the configuration or the velocity arguments.

This function performs the parallel transportation of an input matrix whose columns are expressed in the tangent space of the integrated element $ q \oplus v $, to the tangent space at $ q $. In other words, this functions transforms a tangent vector expressed at $ q \oplus v $ to a tangent vector expressed at $ q $, considering that the change of configuration between $ q \oplus v $ and $ q $ may alter the value of this tangent vector. A typical example of parallel transportation is the action operated by a rigid transformation $ M \in \text{SE}(3)$ on a spatial velocity $ v \in \text{se}(3)$. In the context of configuration spaces assimilated to vector spaces, this operation corresponds to Identity. For Lie groups, its corresponds to the canonical vector field transportation.

Parameters
[in]qconfiguration vector.
[in]vtangent vector
[in]Jinthe input matrix
[in]argargument with respect to which the differentiation is performed (ARG0 corresponding to q, and ARG1 to v)
[out]JoutTransported matrix

◆ dIntegrateTransport_dq() [1/2]

template<typename Derived >
template<class Config_t , class Tangent_t , class Jacobian_t >
void pinocchio::LieGroupBase< Derived >::dIntegrateTransport_dq ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< Jacobian_t > &  J 
) const

Transport in place a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the configuration argument.

This function performs the parallel transportation of an input matrix whose columns are expressed in the tangent space of the integrated element $ q \oplus v $, to the tangent space at $ q $. In other words, this functions transforms a tangent vector expressed at $ q \oplus v $ to a tangent vector expressed at $ q $, considering that the change of configuration between $ q \oplus v $ and $ q $ may alter the value of this tangent vector. A typical example of parallel transportation is the action operated by a rigid transformation $ M \in \text{SE}(3)$ on a spatial velocity $ v \in \text{se}(3)$. In the context of configuration spaces assimilated to vector spaces, this operation corresponds to Identity. For Lie groups, its corresponds to the canonical vector field transportation.

Parameters
[in]qconfiguration vector.
[in]vtangent vector
[in,out]Jinthe inplace matrix

◆ dIntegrateTransport_dq() [2/2]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrateTransport_dq ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianIn_t > &  Jin,
const Eigen::MatrixBase< JacobianOut_t > &  Jout 
) const

Transport a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the configuration argument.

This function performs the parallel transportation of an input matrix whose columns are expressed in the tangent space of the integrated element $ q \oplus v $, to the tangent space at $ q $. In other words, this functions transforms a tangent vector expressed at $ q \oplus v $ to a tangent vector expressed at $ q $, considering that the change of configuration between $ q \oplus v $ and $ q $ may alter the value of this tangent vector. A typical example of parallel transportation is the action operated by a rigid transformation $ M \in \text{SE}(3)$ on a spatial velocity $ v \in \text{se}(3)$. In the context of configuration spaces assimilated to vector spaces, this operation corresponds to Identity. For Lie groups, its corresponds to the canonical vector field transportation.

Parameters
[in]qconfiguration vector.
[in]vtangent vector
[in]Jinthe input matrix
[out]JoutTransported matrix

◆ dIntegrateTransport_dv() [1/2]

template<typename Derived >
template<class Config_t , class Tangent_t , class Jacobian_t >
void pinocchio::LieGroupBase< Derived >::dIntegrateTransport_dv ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< Jacobian_t > &  J 
) const

Transport in place a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the velocity argument.

This function performs the parallel transportation of an input matrix whose columns are expressed in the tangent space of the integrated element $ q \oplus v $, to the tangent space at $ q $. In other words, this functions transforms a tangent vector expressed at $ q \oplus v $ to a tangent vector expressed at $ q $, considering that the change of configuration between $ q \oplus v $ and $ q $ may alter the value of this tangent vector. A typical example of parallel transportation is the action operated by a rigid transformation $ M \in \text{SE}(3)$ on a spatial velocity $ v \in \text{se}(3)$. In the context of configuration spaces assimilated to vector spaces, this operation corresponds to Identity. For Lie groups, its corresponds to the canonical vector field transportation.

Parameters
[in]qconfiguration vector.
[in]vtangent vector
[in,out]Jthe inplace matrix

◆ dIntegrateTransport_dv() [2/2]

template<typename Derived >
template<class Config_t , class Tangent_t , class JacobianIn_t , class JacobianOut_t >
void pinocchio::LieGroupBase< Derived >::dIntegrateTransport_dv ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v,
const Eigen::MatrixBase< JacobianIn_t > &  Jin,
const Eigen::MatrixBase< JacobianOut_t > &  Jout 
) const

Transport a matrix from the terminal to the initial tangent space of the integrate operation, with respect to the velocity argument.

This function performs the parallel transportation of an input matrix whose columns are expressed in the tangent space of the integrated element $ q \oplus v $, to the tangent space at $ q $. In other words, this functions transforms a tangent vector expressed at $ q \oplus v $ to a tangent vector expressed at $ q $, considering that the change of configuration between $ q \oplus v $ and $ q $ may alter the value of this tangent vector. A typical example of parallel transportation is the action operated by a rigid transformation $ M \in \text{SE}(3)$ on a spatial velocity $ v \in \text{se}(3)$. In the context of configuration spaces assimilated to vector spaces, this operation corresponds to Identity. For Lie groups, its corresponds to the canonical vector field transportation.

Parameters
[in]qconfiguration vector.
[in]vtangent vector
[in]Jinthe input matrix
[out]JoutTransported matrix

◆ distance()

template<typename Derived >
template<class ConfigL_t , class ConfigR_t >
Scalar pinocchio::LieGroupBase< Derived >::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.

◆ integrate() [1/2]

template<typename Derived >
template<class Config_t , class Tangent_t >
ConfigVector_t pinocchio::LieGroupBase< Derived >::integrate ( const Eigen::MatrixBase< Config_t > &  q,
const Eigen::MatrixBase< Tangent_t > &  v 
) const

◆ integrate() [2/2]

template<typename Derived >
template<class ConfigIn_t , class Tangent_t , class ConfigOut_t >
void pinocchio::LieGroupBase< Derived >::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.

◆ integrateCoeffWiseJacobian()

template<typename Derived >
template<class Config_t , class Jacobian_t >
void pinocchio::LieGroupBase< Derived >::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.

◆ interpolate() [1/2]

template<typename Derived >
template<class ConfigL_t , class ConfigR_t >
ConfigVector_t pinocchio::LieGroupBase< Derived >::interpolate ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
const Scalar u 
) const

◆ interpolate() [2/2]

template<typename Derived >
template<class ConfigL_t , class ConfigR_t , class ConfigOut_t >
void pinocchio::LieGroupBase< Derived >::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)

◆ interpolate_impl()

template<typename Derived >
template<class ConfigL_t , class ConfigR_t , class ConfigOut_t >
void pinocchio::LieGroupBase< Derived >::interpolate_impl ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
const Scalar u,
const Eigen::MatrixBase< ConfigOut_t > &  qout 
) const

◆ isDifferent_impl()

template<typename Derived >
bool pinocchio::LieGroupBase< Derived >::isDifferent_impl ( const LieGroupBase< Derived > &  other) const
inline

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

◆ isEqual_impl()

template<typename Derived >
bool pinocchio::LieGroupBase< Derived >::isEqual_impl ( const LieGroupBase< Derived > &  ) const
inline

Default equality check. By default, two LieGroupBase of same type are considered equal.

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

◆ isNormalized()

template<typename Derived >
template<class Config_t >
bool pinocchio::LieGroupBase< Derived >::isNormalized ( const Eigen::MatrixBase< Config_t > &  qin,
const Scalar prec = Eigen::NumTraits< Scalar >::dummy_precision() 
) const

Check whether the input joint configuration is normalized. For instance, the quaternion must be unitary.

Parameters
[in]qinThe joint configuration to check.
Returns
true if the input vector is normalized, false otherwise.

◆ isNormalized_impl()

template<typename Derived >
template<class Config_t >
bool pinocchio::LieGroupBase< Derived >::isNormalized_impl ( const Eigen::MatrixBase< Config_t > &  qin,
const Scalar prec = Eigen::NumTraits< Scalar >::dummy_precision() 
) const

◆ isSameConfiguration()

template<typename Derived >
template<class ConfigL_t , class ConfigR_t >
bool pinocchio::LieGroupBase< Derived >::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

\cheatsheet $ q_1 \equiv q_0 \oplus \left( q_1 \ominus q_0 \right) $ ( $\equiv$ means equivalent, not equal).

◆ isSameConfiguration_impl()

template<typename Derived >
template<class ConfigL_t , class ConfigR_t >
bool pinocchio::LieGroupBase< Derived >::isSameConfiguration_impl ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1,
const Scalar prec 
) const

◆ name()

template<typename Derived >
std::string pinocchio::LieGroupBase< Derived >::name ( ) const

Get name of instance.

◆ neutral()

template<typename Derived >
ConfigVector_t pinocchio::LieGroupBase< Derived >::neutral ( ) const

Get neutral element as a vector.

◆ normalize()

template<typename Derived >
template<class Config_t >
void pinocchio::LieGroupBase< Derived >::normalize ( const Eigen::MatrixBase< Config_t > &  qout) const

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

Note
If the input vector is too small (i.e., qout.norm()==0), then it is left unchanged. It is therefore possible that after this method is called isNormalized(qout) is still false.
Parameters
[in,out]qoutthe normalized joint configuration.

◆ normalize_impl()

template<typename Derived >
template<class Config_t >
void pinocchio::LieGroupBase< Derived >::normalize_impl ( const Eigen::MatrixBase< Config_t > &  qout) const

◆ nq()

template<typename Derived >
Index pinocchio::LieGroupBase< Derived >::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.

◆ nv()

template<typename Derived >
Index pinocchio::LieGroupBase< Derived >::nv ( ) const

Get dimension of Lie Group tangent space.

◆ operator!=()

template<typename Derived >
bool pinocchio::LieGroupBase< Derived >::operator!= ( const LieGroupBase< Derived > &  other) const
inline

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

◆ operator=()

template<typename Derived >
LieGroupBase& pinocchio::LieGroupBase< Derived >::operator= ( const LieGroupBase< Derived > &  )
inlineprotected

Copy assignment operator

Prevent the copy of derived class.

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

◆ operator==()

template<typename Derived >
bool pinocchio::LieGroupBase< Derived >::operator== ( const LieGroupBase< Derived > &  other) const
inline

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

◆ random() [1/2]

template<typename Derived >
ConfigVector_t pinocchio::LieGroupBase< Derived >::random ( ) const

◆ random() [2/2]

template<typename Derived >
template<class Config_t >
void pinocchio::LieGroupBase< Derived >::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.

◆ randomConfiguration() [1/2]

template<typename Derived >
template<class ConfigL_t , class ConfigR_t >
ConfigVector_t pinocchio::LieGroupBase< Derived >::randomConfiguration ( const Eigen::MatrixBase< ConfigL_t > &  lower_pos_limit,
const Eigen::MatrixBase< ConfigR_t > &  upper_pos_limit 
) const

◆ randomConfiguration() [2/2]

template<typename Derived >
template<class ConfigL_t , class ConfigR_t , class ConfigOut_t >
void pinocchio::LieGroupBase< Derived >::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.

◆ squaredDistance()

template<typename Derived >
template<class ConfigL_t , class ConfigR_t >
Scalar pinocchio::LieGroupBase< Derived >::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.

◆ squaredDistance_impl()

template<typename Derived >
template<class ConfigL_t , class ConfigR_t >
Scalar pinocchio::LieGroupBase< Derived >::squaredDistance_impl ( const Eigen::MatrixBase< ConfigL_t > &  q0,
const Eigen::MatrixBase< ConfigR_t > &  q1 
) const

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


pinocchio
Author(s):
autogenerated on Mon Dec 16 2024 03:41:08