#include <mbd_universal_joint.h>
Public Types | |
typedef mbd_types::math_policy | math_policy |
typedef mbd_types::math_policy::index_type | size_type |
typedef mbd_types::math_policy::real_type | real_type |
typedef mbd_types::math_policy::vector3_type | vector3_type |
typedef mbd_types::math_policy::matrix3x3_type | matrix3x3_type |
typedef mbd_types::math_policy::quaternion_type | quaternion_type |
typedef mbd_types::math_policy::vector_range | vector_range |
typedef mbd_types::math_policy::idx_vector_range | idx_vector_range |
typedef mbd_types::math_policy::matrix_range | matrix_range |
typedef mbd_types::math_policy::vector_type | vector_type |
typedef mbd_types::math_policy::value_traits | value_traits |
typedef AngularJointLimit < mbd_types > | angular_limit_type |
typedef AngularJointMotor < mbd_types > | angular_motor_type |
Public Member Functions | |
real_type | get_angle1 () const |
real_type | get_angle1_rate () const |
real_type | get_angle2 () const |
real_type | get_angle2_rate () const |
vector3_type | get_joint_axis1_world () const |
vector3_type | get_joint_axis2_world () const |
void | set_limit1 (angular_limit_type const &limit) |
void | set_limit2 (angular_limit_type const &limit) |
void | set_motor1 (angular_motor_type const &motor) |
void | set_motor2 (angular_motor_type const &motor) |
UniversalJoint () | |
virtual | ~UniversalJoint () |
void | evaluate () |
size_type | get_number_of_jacobian_rows () const |
void | get_linear_jacobian_A (matrix_range &J) const |
void | get_linear_jacobian_B (matrix_range &J) const |
void | get_angular_jacobian_A (matrix_range &J) const |
void | get_angular_jacobian_B (matrix_range &J) const |
void | get_stabilization_term (vector_range &b_error) const |
void | get_low_limits (vector_range &lo) const |
void | get_high_limits (vector_range &hi) const |
void | get_dependency_indices (idx_vector_range &dep) const |
void | get_dependency_factors (vector_range &factors) const |
void | set_regularization (vector_range const &gamma) |
void | get_regularization (vector_range &gamma) const |
void | set_solution (vector_range const &solution) |
void | get_solution (vector_range &solution) const |
void | calibration () |
Protected Attributes | |
vector3_type | m_s_A_wcs |
The joint axe wrt. to body A in WCS. | |
vector3_type | m_s_B_wcs |
The joint axe wrt. to body B in WCS. | |
vector3_type | m_u |
Error correction rotation axe. Ie. if joint is misaligned this vector is used to determine an rotation axe which can be used to align the joint along. | |
matrix3x3_type | m_star_anc_A |
The cross product operator of the anchor point wrt. to body A rotated (but not translated) into WCS. | |
matrix3x3_type | m_star_anc_B |
The cross product operator of the anchor point wrt. to body B rotated (but not translated) into WCS. | |
vector3_type | m_anc_A_wcs |
The anchor point wrt. to body A in WCS. | |
vector3_type | m_anc_B_wcs |
The anchor point wrt. to body B in WCS. | |
quaternion_type | m_Q_initial |
The initial relative orientation between the two bodies (wrt. WCS) i.e. the rotation that aligns body A with body B. | |
quaternion_type | m_Q_initial_conj |
The conjugate of Q_initial. | |
size_type | m_rows |
Number of jacobian rows. | |
vector_type | m_gamma |
Local vector of constraint force mixing terms. | |
vector_type | m_solution |
Local solution vector, ie. vector of lagrange multipliers. | |
angular_limit_type * | m_limit1 |
angular_limit_type * | m_limit2 |
angular_motor_type * | m_motor1 |
angular_motor_type * | m_motor2 |
size_type | m_motor_offset1 |
size_type | m_motor_offset2 |
size_type | m_limit_offset1 |
size_type | m_limit_offset2 |
typedef AngularJointLimit<mbd_types> OpenTissue::mbd::UniversalJoint< mbd_types >::angular_limit_type |
typedef AngularJointMotor<mbd_types> OpenTissue::mbd::UniversalJoint< mbd_types >::angular_motor_type |
typedef mbd_types::math_policy::idx_vector_range OpenTissue::mbd::UniversalJoint< mbd_types >::idx_vector_range |
typedef mbd_types::math_policy OpenTissue::mbd::UniversalJoint< mbd_types >::math_policy |
typedef mbd_types::math_policy::matrix3x3_type OpenTissue::mbd::UniversalJoint< mbd_types >::matrix3x3_type |
typedef mbd_types::math_policy::matrix_range OpenTissue::mbd::UniversalJoint< mbd_types >::matrix_range |
typedef mbd_types::math_policy::quaternion_type OpenTissue::mbd::UniversalJoint< mbd_types >::quaternion_type |
typedef mbd_types::math_policy::real_type OpenTissue::mbd::UniversalJoint< mbd_types >::real_type |
typedef mbd_types::math_policy::index_type OpenTissue::mbd::UniversalJoint< mbd_types >::size_type |
typedef mbd_types::math_policy::value_traits OpenTissue::mbd::UniversalJoint< mbd_types >::value_traits |
typedef mbd_types::math_policy::vector3_type OpenTissue::mbd::UniversalJoint< mbd_types >::vector3_type |
typedef mbd_types::math_policy::vector_range OpenTissue::mbd::UniversalJoint< mbd_types >::vector_range |
typedef mbd_types::math_policy::vector_type OpenTissue::mbd::UniversalJoint< mbd_types >::vector_type |
OpenTissue::mbd::UniversalJoint< mbd_types >::UniversalJoint | ( | ) | [inline] |
virtual OpenTissue::mbd::UniversalJoint< mbd_types >::~UniversalJoint | ( | ) | [inline, virtual] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::calibration | ( | ) | [inline, virtual] |
joint_type Calibration Routine. This method is invoked implicitly whenever the joint connectivity is changed (alteration of anchor points or joint axes).
It can also be invoked directly by and end user if the incident body position and/or rotations is changed.
Implements OpenTissue::mbd::JointInterface< mbd_types >.
void OpenTissue::mbd::UniversalJoint< mbd_types >::evaluate | ( | ) | [inline] |
real_type OpenTissue::mbd::UniversalJoint< mbd_types >::get_angle1 | ( | ) | const [inline] |
Get Rotation Angle around Axis 1. This is inspired by Hinge::get_angle method, see this methods for details.
real_type OpenTissue::mbd::UniversalJoint< mbd_types >::get_angle1_rate | ( | ) | const [inline] |
Get Angle1 Rate. This method computes the (signed) speed by which the joint angle changes its radial position around the first joint axe.
real_type OpenTissue::mbd::UniversalJoint< mbd_types >::get_angle2 | ( | ) | const [inline] |
Get Rotation Angle around Axis 2. This is inspired by Hinge::get_angle method, see this methods for details.
real_type OpenTissue::mbd::UniversalJoint< mbd_types >::get_angle2_rate | ( | ) | const [inline] |
Get Angle2 Rate. This method computes the (signed) speed by which the joint angle changes its radial position around the second joint axe.
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_angular_jacobian_A | ( | matrix_range & | J | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_angular_jacobian_B | ( | matrix_range & | J | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_dependency_factors | ( | vector_range & | factors | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_dependency_indices | ( | idx_vector_range & | dep | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_high_limits | ( | vector_range & | hi | ) | const [inline] |
vector3_type OpenTissue::mbd::UniversalJoint< mbd_types >::get_joint_axis1_world | ( | ) | const [inline] |
vector3_type OpenTissue::mbd::UniversalJoint< mbd_types >::get_joint_axis2_world | ( | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_linear_jacobian_A | ( | matrix_range & | J | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_linear_jacobian_B | ( | matrix_range & | J | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_low_limits | ( | vector_range & | lo | ) | const [inline] |
size_type OpenTissue::mbd::UniversalJoint< mbd_types >::get_number_of_jacobian_rows | ( | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_regularization | ( | vector_range & | gamma | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_solution | ( | vector_range & | solution | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::get_stabilization_term | ( | vector_range & | b_error | ) | const [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::set_limit1 | ( | angular_limit_type const & | limit | ) | [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::set_limit2 | ( | angular_limit_type const & | limit | ) | [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::set_motor1 | ( | angular_motor_type const & | motor | ) | [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::set_motor2 | ( | angular_motor_type const & | motor | ) | [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::set_regularization | ( | vector_range const & | gamma | ) | [inline] |
void OpenTissue::mbd::UniversalJoint< mbd_types >::set_solution | ( | vector_range const & | solution | ) | [inline] |
vector3_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_anc_A_wcs [protected] |
The anchor point wrt. to body A in WCS.
vector3_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_anc_B_wcs [protected] |
The anchor point wrt. to body B in WCS.
vector_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_gamma [protected] |
Local vector of constraint force mixing terms.
angular_limit_type* OpenTissue::mbd::UniversalJoint< mbd_types >::m_limit1 [protected] |
angular_limit_type* OpenTissue::mbd::UniversalJoint< mbd_types >::m_limit2 [protected] |
size_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_limit_offset1 [protected] |
size_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_limit_offset2 [protected] |
angular_motor_type* OpenTissue::mbd::UniversalJoint< mbd_types >::m_motor1 [protected] |
angular_motor_type* OpenTissue::mbd::UniversalJoint< mbd_types >::m_motor2 [protected] |
size_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_motor_offset1 [protected] |
size_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_motor_offset2 [protected] |
quaternion_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_Q_initial [protected] |
The initial relative orientation between the two bodies (wrt. WCS) i.e. the rotation that aligns body A with body B.
quaternion_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_Q_initial_conj [protected] |
The conjugate of Q_initial.
size_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_rows [protected] |
Number of jacobian rows.
vector3_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_s_A_wcs [protected] |
The joint axe wrt. to body A in WCS.
vector3_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_s_B_wcs [protected] |
The joint axe wrt. to body B in WCS.
vector_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_solution [protected] |
Local solution vector, ie. vector of lagrange multipliers.
matrix3x3_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_star_anc_A [protected] |
The cross product operator of the anchor point wrt. to body A rotated (but not translated) into WCS.
matrix3x3_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_star_anc_B [protected] |
The cross product operator of the anchor point wrt. to body B rotated (but not translated) into WCS.
vector3_type OpenTissue::mbd::UniversalJoint< mbd_types >::m_u [protected] |
Error correction rotation axe. Ie. if joint is misaligned this vector is used to determine an rotation axe which can be used to align the joint along.