Template Struct JointModelEllipsoidTpl
Defined in File joint-ellipsoid.hpp
Inheritance Relationships
Base Type
public pinocchio::JointModelBase< JointModelEllipsoidTpl< _Scalar, _Options > >(Template Struct JointModelBase)
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()