pinocchio  3.9.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Loading...
Searching...
No Matches
CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl > Struct Template Reference

Dynamic Cartesian product composed of elementary Lie groups defined in LieGroupVariant. More...

#include <pinocchio/multibody/liegroup/cartesian-product-variant.hpp>

Inheritance diagram for CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl >:
Collaboration diagram for CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl >:

Public Types

typedef LieGroupCollectionTpl< Scalar, Options > LieGroupCollection
typedef LieGroupGenericTpl< LieGroupCollection > LieGroupGeneric
typedef LieGroupCollection::LieGroupVariant LieGroupVariant
Public Types inherited from LieGroupBase< CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl > >
enum  
typedef Eigen::Matrix< Scalar, NQ, 1, Options > ConfigVector_t
typedef int Index
typedef Eigen::Matrix< Scalar, NV, NV, Options > JacobianMatrix_t
typedef CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl > LieGroupDerived
typedef traits< LieGroupDerived >::Scalar Scalar
typedef Eigen::Matrix< Scalar, NV, 1, Options > TangentVector_t

Public Member Functions

 CartesianProductOperationVariantTpl ()
 Default constructor.
 CartesianProductOperationVariantTpl (const LieGroupGeneric &lg)
 Constructor with one single Lie group.
 CartesianProductOperationVariantTpl (const LieGroupGeneric &lg1, const LieGroupGeneric &lg2)
 Constructor with two Lie groups.
template<typename LieGroupDerived>
void append (const LieGroupBase< LieGroupDerived > &lg)
 Append a Lie group to the Cartesian product.
void append (const LieGroupGeneric &lg)
 Append a Lie group to the Cartesian product.
template<ArgumentPosition arg, class ConfigL_t, class ConfigR_t, class JacobianOut_t>
void dDifference_impl (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Eigen::MatrixBase< JacobianOut_t > &J) 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 Tangent_t>
void difference_impl (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Eigen::MatrixBase< Tangent_t > &d) const
template<class Config_t, class Tangent_t, class JacobianOut_t>
void dIntegrate_dq_impl (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianOut_t > &J, const AssignmentOperatorType op=SETTO) const
template<class Config_t, class Tangent_t, class JacobianOut_t>
void dIntegrate_dv_impl (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianOut_t > &J, const AssignmentOperatorType op=SETTO) const
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<class Config_t, class Tangent_t, class JacobianIn_t, class JacobianOut_t>
void dIntegrateTransport_dq_impl (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianIn_t > &J_in, const Eigen::MatrixBase< JacobianOut_t > &J_out) const
template<class Config_t, class Tangent_t, class JacobianOut_t>
void dIntegrateTransport_dq_impl (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianOut_t > &J) const
template<class Config_t, class Tangent_t, class JacobianIn_t, class JacobianOut_t>
void dIntegrateTransport_dv_impl (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianIn_t > &J_in, const Eigen::MatrixBase< JacobianOut_t > &J_out) const
template<class Config_t, class Tangent_t, class JacobianOut_t>
void dIntegrateTransport_dv_impl (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Tangent_t > &v, const Eigen::MatrixBase< JacobianOut_t > &J) const
template<class ConfigIn_t, class Velocity_t, class ConfigOut_t>
void integrate_impl (const Eigen::MatrixBase< ConfigIn_t > &q, const Eigen::MatrixBase< Velocity_t > &v, const Eigen::MatrixBase< ConfigOut_t > &qout) const
template<class Config_t, class Jacobian_t>
void integrateCoeffWiseJacobian_impl (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Jacobian_t > &J) const
template<typename LieGroup1, typename LieGroup2>
bool isEqual (const CartesianProductOperation< LieGroup1, LieGroup2 > &other) const
bool isEqual_impl (const CartesianProductOperationVariantTpl &other) const
template<class Config_t>
bool isNormalized_impl (const Eigen::MatrixBase< Config_t > &qout, const Scalar &prec) 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
std::string name () const
ConfigVector_t neutral () const
template<class Config_t>
void normalize_impl (const Eigen::MatrixBase< Config_t > &qout) const
int nq () const
int nv () const
CartesianProductOperationVariantTpl operator* (const CartesianProductOperationVariantTpl &other) const
 Cartesian product between *this and other.
CartesianProductOperationVariantTploperator*= (const CartesianProductOperationVariantTpl &other)
 Append other to *this.
template<typename LieGroupDerived>
CartesianProductOperationVariantTploperator*= (const LieGroupBase< LieGroupDerived > &lg)
 Append a Lie group to *this.
CartesianProductOperationVariantTploperator*= (const LieGroupGeneric &lg)
 Append a Lie group to *this.
 PINOCCHIO_LIE_GROUP_TPL_PUBLIC_INTERFACE (CartesianProductOperationVariantTpl)
template<class Config_t>
void random_impl (const Eigen::MatrixBase< Config_t > &qout) const
template<class ConfigL_t, class ConfigR_t, class ConfigOut_t>
void randomConfiguration_impl (const Eigen::MatrixBase< ConfigL_t > &lower, const Eigen::MatrixBase< ConfigR_t > &upper, const Eigen::MatrixBase< ConfigOut_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
Public Member Functions inherited from LieGroupBase< CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl > >
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.
void integrateCoeffWiseJacobian (const Eigen::MatrixBase< Config_t > &q, const Eigen::MatrixBase< Jacobian_t > &J) const
 Computes the Jacobian of the integrate operator around zero.
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.
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.
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.
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.
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.
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.
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.
void normalize (const Eigen::MatrixBase< Config_t > &qout) const
 Normalize the joint configuration given as input. For instance, the quaternion must be unitary.
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.
void random (const Eigen::MatrixBase< Config_t > &qout) const
 Generate a random joint configuration, normalizing quaternions when necessary.
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.
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.
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.
Scalar squaredDistance (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1) const
 Squared distance between two joint configurations.
Scalar distance (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1) const
 Distance between two configurations of the joint.
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.
bool operator== (const LieGroupBase &other) const
bool operator!= (const LieGroupBase &other) const
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
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
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
void normalize_impl (const Eigen::MatrixBase< Config_t > &qout) const
bool isNormalized_impl (const Eigen::MatrixBase< Config_t > &qin, const Scalar &prec=Eigen::NumTraits< Scalar >::dummy_precision()) const
Scalar squaredDistance_impl (const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1) const
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.
bool isDifferent_impl (const LieGroupBase &other) 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.
CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl > & derived ()

Protected Member Functions

 PINOCCHIO_ALIGNED_STD_VECTOR (LieGroupGeneric) liegroups
Protected Member Functions inherited from LieGroupBase< CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl > >
 LieGroupBase ()
LieGroupBaseoperator= (const LieGroupBase &)

Protected Attributes

std::vector< Index > lg_nqs
std::vector< Index > lg_nvs
std::string m_name
ConfigVector_t m_neutral
Index m_nq
Index m_nv

Detailed Description

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
struct pinocchio::CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl >

Dynamic Cartesian product composed of elementary Lie groups defined in LieGroupVariant.

Definition at line 43 of file cartesian-product-variant.hpp.

Member Typedef Documentation

◆ LieGroupCollection

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
typedef LieGroupCollectionTpl<Scalar, Options> LieGroupCollection

Definition at line 51 of file cartesian-product-variant.hpp.

◆ LieGroupGeneric

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
typedef LieGroupGenericTpl<LieGroupCollection> LieGroupGeneric

Definition at line 53 of file cartesian-product-variant.hpp.

◆ LieGroupVariant

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
typedef LieGroupCollection::LieGroupVariant LieGroupVariant

Definition at line 52 of file cartesian-product-variant.hpp.

Constructor & Destructor Documentation

◆ CartesianProductOperationVariantTpl() [1/3]

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
CartesianProductOperationVariantTpl()
inline

Default constructor.

Definition at line 56 of file cartesian-product-variant.hpp.

◆ CartesianProductOperationVariantTpl() [2/3]

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
CartesianProductOperationVariantTpl(const LieGroupGeneric &lg)
inlineexplicit

Constructor with one single Lie group.

Parameters
[in]lgLie group variant to insert inside the Cartesian product

Definition at line 68 of file cartesian-product-variant.hpp.

◆ CartesianProductOperationVariantTpl() [3/3]

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
CartesianProductOperationVariantTpl(const LieGroupGeneric &lg1,
const LieGroupGeneric &lg2 )
inline

Constructor with two Lie groups.

Parameters
[in]lg1Lie group variant to insert inside the Cartesian product
[in]lg2Lie group variant to insert inside the Cartesian product

Definition at line 84 of file cartesian-product-variant.hpp.

Member Function Documentation

◆ append() [1/2]

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
template<typename LieGroupDerived>
void append(const LieGroupBase< LieGroupDerived > &lg)
inline

Append a Lie group to the Cartesian product.

Parameters
[in]lgLie group to insert inside the Cartesian product

Definition at line 108 of file cartesian-product-variant.hpp.

◆ append() [2/2]

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
void append(const LieGroupGeneric &lg)

Append a Lie group to the Cartesian product.

Parameters
[in]lgLie group variant to insert inside the Cartesian product

◆ name()

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
std::string name()const
inline

Definition at line 165 of file cartesian-product-variant.hpp.

◆ neutral()

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
ConfigVector_t neutral()const
inline

Definition at line 170 of file cartesian-product-variant.hpp.

◆ nq()

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
int nq()const
inline

Definition at line 156 of file cartesian-product-variant.hpp.

◆ nv()

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
int nv()const
inline

Definition at line 160 of file cartesian-product-variant.hpp.

◆ operator*()

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
CartesianProductOperationVariantTpl operator*(const CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl > &other)const

Cartesian product between *this and other.

Parameters
[in]otherCartesianProductOperation to compose with this
Returns
A new Cartesian product betwenn *this and other.

◆ operator*=() [1/3]

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
CartesianProductOperationVariantTpl & operator*=(const CartesianProductOperationVariantTpl< _Scalar, _Options, LieGroupCollectionTpl > &other)

Append other to *this.

Parameters
[in]otherCartesianProductOperation to append to *this.

◆ operator*=() [2/3]

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
template<typename LieGroupDerived>
CartesianProductOperationVariantTpl & operator*=(const LieGroupBase< LieGroupDerived > &lg)
inline

Append a Lie group to *this.

Parameters
[in]lgLieGroupGeneric to append to *this.

Definition at line 150 of file cartesian-product-variant.hpp.

◆ operator*=() [3/3]

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
CartesianProductOperationVariantTpl & operator*=(const LieGroupGeneric &lg)
inline

Append a Lie group to *this.

Parameters
[in]lgLieGroupGeneric to append to *this.

Definition at line 137 of file cartesian-product-variant.hpp.

Member Data Documentation

◆ lg_nqs

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
std::vector<Index> lg_nqs
protected

Definition at line 294 of file cartesian-product-variant.hpp.

◆ lg_nvs

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
std::vector<Index> lg_nvs
protected

Definition at line 294 of file cartesian-product-variant.hpp.

◆ m_name

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
std::string m_name
protected

Definition at line 295 of file cartesian-product-variant.hpp.

◆ m_neutral

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
ConfigVector_t m_neutral
protected

Definition at line 297 of file cartesian-product-variant.hpp.

◆ m_nq

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
Index m_nq
protected

Definition at line 293 of file cartesian-product-variant.hpp.

◆ m_nv

template<typename _Scalar, int _Options, template< typename, int > class LieGroupCollectionTpl>
Index m_nv
protected

Definition at line 293 of file cartesian-product-variant.hpp.


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