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

Ellipsoid joint - constrains motion to ellipsoid surface with 3-DOF. More...

#include <pinocchio/multibody/joint/joint-ellipsoid.hpp>

Inheritance diagram for JointModelEllipsoidTpl< _Scalar, _Options >:
Collaboration diagram for JointModelEllipsoidTpl< _Scalar, _Options >:

Public Types

typedef JointModelBase< JointModelEllipsoidTplBase
typedef JointEllipsoidTpl< _Scalar, _Options > JointDerived
typedef Transformation_t::Vector3 Vector3
Public Types inherited from JointModelBase< JointModelEllipsoidTpl< _Scalar, _Options > >
typedef traits< JointModelEllipsoidTpl< _Scalar, _Options > >::JointDerived JointDerived
Public Types inherited from NumericalBase< JointModelEllipsoidTpl< _Scalar, _Options > >
typedef traits< JointModelEllipsoidTpl< _Scalar, _Options > >::Scalar Scalar

Public Member Functions

 JointModelEllipsoidTpl ()
 Default constructor. Creates a spherical joint with all radii equal to 0.
 JointModelEllipsoidTpl (const Scalar &radius_x, const Scalar &radius_y, const Scalar &radius_z)
 Constructor with specified radii.
template<typename TangentVector>
void calc (JointDataDerived &data, const Blank, const typename Eigen::MatrixBase< TangentVector > &vs) const
template<typename ConfigVector>
void calc (JointDataDerived &data, const typename Eigen::MatrixBase< ConfigVector > &qs) const
template<typename ConfigVector, typename TangentVector>
void calc (JointDataDerived &data, const typename Eigen::MatrixBase< ConfigVector > &qs, const typename Eigen::MatrixBase< TangentVector > &vs) const
template<typename VectorLike, typename Matrix6Like>
void calc_aba (JointDataDerived &data, const Eigen::MatrixBase< VectorLike > &armature, const Eigen::MatrixBase< Matrix6Like > &I, const bool update_I) const
template<typename NewScalar>
JointModelEllipsoidTpl< NewScalar, Options > cast () const
void computeBiais (const Scalar &s0, const Scalar &c0, const Scalar &s1, const Scalar &c1, const Scalar &s2, const Scalar &c2, const Scalar &dndotx_dqdot1, const Scalar &dndoty_dqdot0, const Scalar &dndoty_dqdot1, const Scalar &dndotz_dqdot0, const Scalar &dndotz_dqdot1, JointDataDerived &data) const
template<typename ConfigVector, typename TangentVector>
void computeBiais (JointDataDerived &data, const Eigen::MatrixBase< ConfigVector > &qs, const Eigen::MatrixBase< TangentVector > &) const
 Computes the bias acceleration c(q, v) = Sdot(q)·v.
void computeMotionSubspace (const Scalar &s0, const Scalar &c0, const Scalar &s1, const Scalar &c1, const Scalar &s2, const Scalar &c2, const Scalar &dndotx_dqdot1, const Scalar &dndoty_dqdot0, const Scalar &dndoty_dqdot1, const Scalar &dndotz_dqdot0, const Scalar &dndotz_dqdot1, JointDataDerived &data) const
void computeMotionSubspace (const Scalar &s0, const Scalar &c0, const Scalar &s1, const Scalar &c1, const Scalar &s2, const Scalar &c2, JointDataDerived &data) const
void computeSpatialTransform (const Scalar &c0, const Scalar &s0, const Scalar &c1, const Scalar &s1, const Scalar &c2, const Scalar &s2, JointDataDerived &data) const
 Computes the spatial transformation M(q) from joint configuration.
JointDataDerived createData () const
const std::vector< bool > hasConfigurationLimit () const
const std::vector< bool > hasConfigurationLimitInTangent () const
JointIndex id () const
int idx_q () const
int idx_v () const
int idx_vExtended () const
 PINOCCHIO_JOINT_TYPEDEF_TEMPLATE (JointDerived)
void setIndexes (JointIndex id, int q, int v)
void setIndexes (JointIndex id, int q, int v, int vExtended)
std::string shortname () const
Public Member Functions inherited from JointModelBase< JointModelEllipsoidTpl< _Scalar, _Options > >
void calc (JointDataDerived &data, const Eigen::MatrixBase< ConfigVectorType > &qs) const
void calc_aba (JointDataDerived &data, const Eigen::MatrixBase< VectorLike > &armature, const Eigen::MatrixBase< Matrix6Like > &I, const bool update_I=false) const
CastType< NewScalar, JointModelEllipsoidTpl< _Scalar, _Options > >::type cast () const
JointDataDerived createData () const
JointModelDerived & derived ()
void disp (std::ostream &os) const
const std::vector< bool > hasConfigurationLimit () const
const std::vector< bool > hasConfigurationLimitInTangent () const
bool hasSameIndexes (const JointModelBase< OtherDerived > &other) const
JointIndex id () const
JointIndex id_impl () const
int idx_q () const
int idx_q_impl () const
int idx_v () const
int idx_v_impl () const
int idx_vExtended () const
int idx_vExtended_impl () const
bool isEqual (const JointModelBase< OtherDerived > &) const
SizeDepType< NV >::template BlockReturn< D >::ConstType jointBlock (const Eigen::MatrixBase< D > &Mat) const
 Returns a block of dimension nv()xnv() located at position idx_v(),idx_v() in the matrix Mat.
SizeDepType< NV >::template BlockReturn< D >::ConstType jointBlock_impl (const Eigen::MatrixBase< D > &Mat) const
SizeDepType< NV >::template ColsReturn< D >::ConstType jointCols (const Eigen::MatrixBase< D > &A) const
SizeDepType< NV >::template ColsReturn< D >::ConstType jointCols_impl (const Eigen::MatrixBase< D > &A) const
SizeDepType< NQ >::template SegmentReturn< D >::ConstType jointConfigSelector (const Eigen::MatrixBase< D > &a) const
SizeDepType< NQ >::template SegmentReturn< D >::ConstType jointConfigSelector_impl (const Eigen::MatrixBase< D > &a) const
SizeDepType< NVExtended >::template BlockReturn< D >::ConstType jointExtendedModelBlock (const Eigen::MatrixBase< D > &Mat) const
SizeDepType< NVExtended >::template BlockReturn< D >::ConstType jointExtendedModelBlock_impl (const Eigen::MatrixBase< D > &Mat) const
SizeDepType< NVExtended >::template ColsReturn< D >::ConstType jointExtendedModelCols (const Eigen::MatrixBase< D > &A) const
SizeDepType< NVExtended >::template ColsReturn< D >::ConstType jointExtendedModelCols_impl (const Eigen::MatrixBase< D > &A) const
SizeDepType< NVExtended >::template RowsReturn< D >::ConstType jointExtendedModelRows (const Eigen::MatrixBase< D > &A) const
SizeDepType< NVExtended >::template RowsReturn< D >::ConstType jointExtendedModelRows_impl (const Eigen::MatrixBase< D > &A) const
SizeDepType< NQ >::template SegmentReturn< D >::ConstType JointMappedConfigSelector (const Eigen::MatrixBase< D > &a) const
SizeDepType< NQ >::template SegmentReturn< D >::ConstType JointMappedConfigSelector_impl (const Eigen::MatrixBase< D > &a) const
SizeDepType< NV >::template SegmentReturn< D >::ConstType JointMappedVelocitySelector (const Eigen::MatrixBase< D > &a) const
SizeDepType< NV >::template SegmentReturn< D >::ConstType JointMappedVelocitySelector_impl (const Eigen::MatrixBase< D > &a) const
SizeDepType< NV >::template RowsReturn< D >::ConstType jointRows (const Eigen::MatrixBase< D > &A) const
SizeDepType< NV >::template RowsReturn< D >::ConstType jointRows_impl (const Eigen::MatrixBase< D > &A) const
SizeDepType< NV >::template SegmentReturn< D >::ConstType jointVelocitySelector (const Eigen::MatrixBase< D > &a) const
SizeDepType< NV >::template SegmentReturn< D >::ConstType jointVelocitySelector_impl (const Eigen::MatrixBase< D > &a) const
int nq () const
int nq_impl () const
int nv () const
int nv_impl () const
int nvExtended () const
int nvExtended_impl () const
bool operator!= (const JointModelBase< OtherDerived > &other) const
bool operator== (const JointModelBase< OtherDerived > &other) const
 PINOCCHIO_JOINT_TYPEDEF_TEMPLATE (JointDerived)
void setIndexes (JointIndex id, int q, int v)
void setIndexes_impl (JointIndex id, int q, int v, int vExtended)
std::string shortname () const

Static Public Member Functions

static std::string classname ()
Static Public Member Functions inherited from JointModelBase< JointModelEllipsoidTpl< _Scalar, _Options > >
static std::string classname ()

Public Attributes

Scalar radius_x
Scalar radius_y
Scalar radius_z

Additional Inherited Members

Protected Member Functions inherited from JointModelBase< JointModelEllipsoidTpl< _Scalar, _Options > >
 JointModelBase ()
JointModelBaseoperator= (const JointModelBase &clone)
Protected Attributes inherited from JointModelBase< JointModelEllipsoidTpl< _Scalar, _Options > >
JointIndex i_id
int i_q
int i_v
int i_vExtended

Detailed Description

template<typename _Scalar, int _Options>
struct pinocchio::JointModelEllipsoidTpl< _Scalar, _Options >

Ellipsoid joint - constrains motion to ellipsoid surface with 3-DOF.

The configuration space uses three angles (q₀, q₁, q₂) representing:

  • Rotation about the x-axis
  • Rotation about the y-axis
  • Spin about the "normal" direction

The joint position on the ellipsoid surface is computed as: $ \mathbf{p} = (a \sin q_1, -b \sin q_0 \cos q_1, c \cos q_0 \cos q_1) $

where $ a, b, c $ are the radii along the x, y, z axes respectively.

Note
For non-spherical ellipsoids, the third rotation axis is only approximately normal to the surface. It corresponds to the normal of an equivalent sphere while the translation follows the true ellipsoid surface. The "normal" direction is truly normal only when all radii are equal (sphere case).
See also
Seth et al., "Minimal formulation of joint motion for biomechanisms," Nonlinear Dynamics 62(1):291-303, 2010.

Definition at line 389 of file joint-ellipsoid.hpp.

Member Typedef Documentation

◆ Base

template<typename _Scalar, int _Options>
typedef JointModelBase<JointModelEllipsoidTpl> Base

Definition at line 395 of file joint-ellipsoid.hpp.

◆ JointDerived

template<typename _Scalar, int _Options>
typedef JointEllipsoidTpl<_Scalar, _Options> JointDerived

Definition at line 392 of file joint-ellipsoid.hpp.

◆ Vector3

template<typename _Scalar, int _Options>
typedef Transformation_t::Vector3 Vector3

Definition at line 402 of file joint-ellipsoid.hpp.

Constructor & Destructor Documentation

◆ JointModelEllipsoidTpl() [1/2]

template<typename _Scalar, int _Options>
JointModelEllipsoidTpl()
inline

Default constructor. Creates a spherical joint with all radii equal to 0.

Definition at line 414 of file joint-ellipsoid.hpp.

◆ JointModelEllipsoidTpl() [2/2]

template<typename _Scalar, int _Options>
JointModelEllipsoidTpl(const Scalar &radius_x,
const Scalar &radius_y,
const Scalar &radius_z )
inline

Constructor with specified radii.

Parameters
radius_xSemi-axis length along x-direction
radius_ySemi-axis length along y-direction
radius_zSemi-axis length along z-direction

Definition at line 425 of file joint-ellipsoid.hpp.

Member Function Documentation

◆ calc() [1/3]

template<typename _Scalar, int _Options>
template<typename TangentVector>
void calc(JointDataDerived &data,
const Blank,
const typename Eigen::MatrixBase< TangentVector > &vs ) const
inline

Definition at line 489 of file joint-ellipsoid.hpp.

◆ calc() [2/3]

template<typename _Scalar, int _Options>
template<typename ConfigVector>
void calc(JointDataDerived &data,
const typename Eigen::MatrixBase< ConfigVector > &qs ) const
inline

Definition at line 471 of file joint-ellipsoid.hpp.

◆ calc() [3/3]

template<typename _Scalar, int _Options>
template<typename ConfigVector, typename TangentVector>
void calc(JointDataDerived &data,
const typename Eigen::MatrixBase< ConfigVector > &qs,
const typename Eigen::MatrixBase< TangentVector > &vs ) const
inline

Definition at line 522 of file joint-ellipsoid.hpp.

◆ calc_aba()

template<typename _Scalar, int _Options>
template<typename VectorLike, typename Matrix6Like>
void calc_aba(JointDataDerived &data,
const Eigen::MatrixBase< VectorLike > &armature,
const Eigen::MatrixBase< Matrix6Like > &I,
const boolupdate_I ) const
inline

Definition at line 559 of file joint-ellipsoid.hpp.

◆ cast()

template<typename _Scalar, int _Options>
template<typename NewScalar>
JointModelEllipsoidTpl< NewScalar, Options > cast()const
inline
Returns
An expression of *this with the Scalar type casted to NewScalar.

Definition at line 587 of file joint-ellipsoid.hpp.

◆ classname()

template<typename _Scalar, int _Options>
std::string classname()
inlinestatic

Definition at line 576 of file joint-ellipsoid.hpp.

◆ computeBiais() [1/2]

template<typename _Scalar, int _Options>
void computeBiais(const Scalar &s0,
const Scalar &c0,
const Scalar &s1,
const Scalar &c1,
const Scalar &s2,
const Scalar &c2,
const Scalar &dndotx_dqdot1,
const Scalar &dndoty_dqdot0,
const Scalar &dndoty_dqdot1,
const Scalar &dndotz_dqdot0,
const Scalar &dndotz_dqdot1,
JointDataDerived &data ) const
inline

Definition at line 690 of file joint-ellipsoid.hpp.

◆ computeBiais() [2/2]

template<typename _Scalar, int _Options>
template<typename ConfigVector, typename TangentVector>
void computeBiais(JointDataDerived &data,
const Eigen::MatrixBase< ConfigVector > &qs,
const Eigen::MatrixBase< TangentVector > & ) const
inline

Computes the bias acceleration c(q, v) = Sdot(q)·v.

Definition at line 666 of file joint-ellipsoid.hpp.

◆ computeMotionSubspace() [1/2]

template<typename _Scalar, int _Options>
void computeMotionSubspace(const Scalar &s0,
const Scalar &c0,
const Scalar &s1,
const Scalar &c1,
const Scalar &s2,
const Scalar &c2,
const Scalar &dndotx_dqdot1,
const Scalar &dndoty_dqdot0,
const Scalar &dndoty_dqdot1,
const Scalar &dndotz_dqdot0,
const Scalar &dndotz_dqdot1,
JointDataDerived &data ) const
inline

Definition at line 619 of file joint-ellipsoid.hpp.

◆ computeMotionSubspace() [2/2]

template<typename _Scalar, int _Options>
void computeMotionSubspace(const Scalar &s0,
const Scalar &c0,
const Scalar &s1,
const Scalar &c1,
const Scalar &s2,
const Scalar &c2,
JointDataDerived &data ) const
inline

Definition at line 598 of file joint-ellipsoid.hpp.

◆ computeSpatialTransform()

template<typename _Scalar, int _Options>
void computeSpatialTransform(const Scalar &c0,
const Scalar &s0,
const Scalar &c1,
const Scalar &s1,
const Scalar &c2,
const Scalar &s2,
JointDataDerived &data ) const
inline

Computes the spatial transformation M(q) from joint configuration.

Parameters
[in]c0,s0Cosine and sine of q[0]
[in]c1,s1Cosine and sine of q[1]
[in]c2,s2Cosine and sine of q[2]
[out]dataJoint data where M will be stored

Definition at line 448 of file joint-ellipsoid.hpp.

◆ createData()

template<typename _Scalar, int _Options>
JointDataDerived createData()const
inline

Definition at line 408 of file joint-ellipsoid.hpp.

◆ hasConfigurationLimit()

template<typename _Scalar, int _Options>
const std::vector< bool > hasConfigurationLimit()const
inline

Definition at line 433 of file joint-ellipsoid.hpp.

◆ hasConfigurationLimitInTangent()

template<typename _Scalar, int _Options>
const std::vector< bool > hasConfigurationLimitInTangent()const
inline

Definition at line 438 of file joint-ellipsoid.hpp.

◆ id()

template<typename _Scalar, int _Options>
JointIndex id()const
inline

Definition at line 183 of file joint-model-base.hpp.

◆ idx_q()

template<typename _Scalar, int _Options>
int idx_q()const
inline

Definition at line 171 of file joint-model-base.hpp.

◆ idx_v()

template<typename _Scalar, int _Options>
int idx_v()const
inline

Definition at line 175 of file joint-model-base.hpp.

◆ idx_vExtended()

template<typename _Scalar, int _Options>
int idx_vExtended()const
inline

Definition at line 179 of file joint-model-base.hpp.

◆ setIndexes() [1/2]

template<typename _Scalar, int _Options>
void setIndexes(JointIndexid,
intq,
intv )
inline

Definition at line 205 of file joint-model-base.hpp.

◆ setIndexes() [2/2]

template<typename _Scalar, int _Options>
void setIndexes(JointIndexid,
intq,
intv,
intvExtended )
inline

Definition at line 210 of file joint-model-base.hpp.

◆ shortname()

template<typename _Scalar, int _Options>
std::string shortname()const
inline

Definition at line 580 of file joint-ellipsoid.hpp.

Member Data Documentation

◆ radius_x

template<typename _Scalar, int _Options>
Scalar radius_x

Definition at line 404 of file joint-ellipsoid.hpp.

◆ radius_y

template<typename _Scalar, int _Options>
Scalar radius_y

Definition at line 405 of file joint-ellipsoid.hpp.

◆ radius_z

template<typename _Scalar, int _Options>
Scalar radius_z

Definition at line 406 of file joint-ellipsoid.hpp.


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