Template Struct JointModelEllipsoidTpl

Inheritance Relationships

Base Type

Struct Documentation

template<typename _Scalar, int _Options>
struct JointModelEllipsoidTpl : public pinocchio::JointModelBase<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.

See also

Seth et al., “Minimal formulation of joint motion for biomechanisms,” Nonlinear Dynamics 62(1):291-303, 2010.

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).

Public Types

typedef JointModelBase<JointModelEllipsoidTpl> Base
typedef Transformation_t::Vector3 Vector3

Public Functions

PINOCCHIO_JOINT_TYPEDEF_TEMPLATE(JointDerived)
inline JointDataDerived createData() const
inline JointModelEllipsoidTpl()

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

inline JointModelEllipsoidTpl(const Scalar &radius_x, const Scalar &radius_y, const Scalar &radius_z)

Constructor with specified radii.

Parameters:
  • radius_x – Semi-axis length along x-direction

  • radius_y – Semi-axis length along y-direction

  • radius_z – Semi-axis length along z-direction

inline const std::vector<bool> hasConfigurationLimit() const
inline const std::vector<bool> hasConfigurationLimitInTangent() const
inline 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.

Parameters:
  • c0, s0[in] Cosine and sine of q[0]

  • c1, s1[in] Cosine and sine of q[1]

  • c2, s2[in] Cosine and sine of q[2]

  • data[out] Joint data where M will be stored

template<typename ConfigVector>
inline void calc(JointDataDerived &data, const typename Eigen::MatrixBase<ConfigVector> &qs) const
template<typename TangentVector>
inline void calc(JointDataDerived &data, const Blank, const typename Eigen::MatrixBase<TangentVector> &vs) const
template<typename ConfigVector, typename TangentVector>
inline void calc(JointDataDerived &data, const typename Eigen::MatrixBase<ConfigVector> &qs, const typename Eigen::MatrixBase<TangentVector> &vs) const
template<typename VectorLike, typename Matrix6Like>
inline void calc_aba(JointDataDerived &data, const Eigen::MatrixBase<VectorLike> &armature, const Eigen::MatrixBase<Matrix6Like> &I, const bool update_I) const
inline std::string shortname() const
template<typename NewScalar>
inline JointModelEllipsoidTpl<NewScalar, Options> cast() const
Returns:

An expression of *this with the Scalar type casted to NewScalar.

inline void computeMotionSubspace(const Scalar &s0, const Scalar &c0, const Scalar &s1, const Scalar &c1, const Scalar &s2, const Scalar &c2, JointDataDerived &data) const
inline 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
template<typename ConfigVector, typename TangentVector>
inline void computeBiais(JointDataDerived &data, const Eigen::MatrixBase<ConfigVector> &qs, const Eigen::MatrixBase<TangentVector>&) const

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

inline 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 JointIndex id() const
inline int idx_q() const
inline int idx_v() const
inline int idx_vExtended() const
inline void setIndexes(JointIndex id, int q, int v)
inline void setIndexes(JointIndex id, int q, int v, int vExtended)

Public Members

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef JointEllipsoidTpl< _Scalar, _Options > JointDerived
Scalar radius_x
Scalar radius_y
Scalar radius_z

Public Static Functions

static inline std::string classname()