#include <mbd_slider_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 LinearJointMotor < mbd_types > | linear_motor_type |
typedef LinearJointLimit < mbd_types > | linear_limit_type |
Public Member Functions | |
real_type | get_offset () const |
real_type | get_offset_rate () const |
vector3_type | get_slider_axis_world () const |
void | set_limit (linear_limit_type const &limit) |
void | set_motor (linear_motor_type const &motor) |
SliderJoint () | |
virtual | ~SliderJoint () |
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_r_off_B |
Initial (i.e. at calibration of joint) center difference of the two bodies (I.e. c = r_cm^B - r_cm^A) given in the body frame of body B. | |
vector3_type | m_r_off_wcs |
Initial (i.e. at calibration of joint) center difference of the two bodies (I.e. c = r_cm^B - r_cm^A) given in WCS. | |
vector3_type | m_c |
Center difference of the two bodies (I.e. c = r_cm^B - r_cm^A). | |
vector3_type | m_half_cXt1 |
Center difference of the two bodies (I.e. c = r_cm^B - r_cm^A) crossed with t1 and multiplied by 0.5. | |
vector3_type | m_half_cXt2 |
Center difference of the two bodies (I.e. c = r_cm^B - r_cm^A) crossed with t2 and multiplied by 0.5. | |
vector3_type | m_t1 |
A vector orthogonal to the joint axe (in WCS). | |
vector3_type | m_t2 |
Another vector orthogonal to the joint axe and t1 (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. | |
real_type | m_theta_error |
Misalignment error around the u-axe. | |
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. | |
quaternion_type | m_Q_error |
A quaterion used to compute the rotaional misalignment in the slider joint. | |
linear_limit_type * | m_limit |
linear_motor_type * | m_motor |
size_type | m_rows |
Number of jacobian rows. | |
size_type | m_motor_offset |
size_type | m_limit_offset |
vector_type | m_gamma |
Local vector of constraint force mixing terms. | |
vector_type | m_solution |
Local solution vector, ie. vector of lagrange multipliers. |
typedef mbd_types::math_policy::idx_vector_range OpenTissue::mbd::SliderJoint< mbd_types >::idx_vector_range |
typedef LinearJointLimit<mbd_types> OpenTissue::mbd::SliderJoint< mbd_types >::linear_limit_type |
typedef LinearJointMotor<mbd_types> OpenTissue::mbd::SliderJoint< mbd_types >::linear_motor_type |
typedef mbd_types::math_policy OpenTissue::mbd::SliderJoint< mbd_types >::math_policy |
typedef mbd_types::math_policy::matrix3x3_type OpenTissue::mbd::SliderJoint< mbd_types >::matrix3x3_type |
typedef mbd_types::math_policy::matrix_range OpenTissue::mbd::SliderJoint< mbd_types >::matrix_range |
typedef mbd_types::math_policy::quaternion_type OpenTissue::mbd::SliderJoint< mbd_types >::quaternion_type |
typedef mbd_types::math_policy::real_type OpenTissue::mbd::SliderJoint< mbd_types >::real_type |
typedef mbd_types::math_policy::index_type OpenTissue::mbd::SliderJoint< mbd_types >::size_type |
typedef mbd_types::math_policy::value_traits OpenTissue::mbd::SliderJoint< mbd_types >::value_traits |
typedef mbd_types::math_policy::vector3_type OpenTissue::mbd::SliderJoint< mbd_types >::vector3_type |
typedef mbd_types::math_policy::vector_range OpenTissue::mbd::SliderJoint< mbd_types >::vector_range |
typedef mbd_types::math_policy::vector_type OpenTissue::mbd::SliderJoint< mbd_types >::vector_type |
OpenTissue::mbd::SliderJoint< mbd_types >::SliderJoint | ( | ) | [inline] |
virtual OpenTissue::mbd::SliderJoint< mbd_types >::~SliderJoint | ( | ) | [inline, virtual] |
void OpenTissue::mbd::SliderJoint< 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::SliderJoint< mbd_types >::evaluate | ( | ) | [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_angular_jacobian_A | ( | matrix_range & | J | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_angular_jacobian_B | ( | matrix_range & | J | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_dependency_factors | ( | vector_range & | factors | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_dependency_indices | ( | idx_vector_range & | dep | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_high_limits | ( | vector_range & | hi | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_linear_jacobian_A | ( | matrix_range & | J | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_linear_jacobian_B | ( | matrix_range & | J | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_low_limits | ( | vector_range & | lo | ) | const [inline] |
size_type OpenTissue::mbd::SliderJoint< mbd_types >::get_number_of_jacobian_rows | ( | ) | const [inline] |
real_type OpenTissue::mbd::SliderJoint< mbd_types >::get_offset | ( | ) | const [inline] |
Get Slider Offset.
real_type OpenTissue::mbd::SliderJoint< mbd_types >::get_offset_rate | ( | ) | const [inline] |
Get Offset Rate. This method computes the (signed) speed, by which the joint position moves along the joint axe.
void OpenTissue::mbd::SliderJoint< mbd_types >::get_regularization | ( | vector_range & | gamma | ) | const [inline] |
vector3_type OpenTissue::mbd::SliderJoint< mbd_types >::get_slider_axis_world | ( | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_solution | ( | vector_range & | solution | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::get_stabilization_term | ( | vector_range & | b_error | ) | const [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::set_limit | ( | linear_limit_type const & | limit | ) | [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::set_motor | ( | linear_motor_type const & | motor | ) | [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::set_regularization | ( | vector_range const & | gamma | ) | [inline] |
void OpenTissue::mbd::SliderJoint< mbd_types >::set_solution | ( | vector_range const & | solution | ) | [inline] |
vector3_type OpenTissue::mbd::SliderJoint< mbd_types >::m_c [protected] |
Center difference of the two bodies (I.e. c = r_cm^B - r_cm^A).
vector_type OpenTissue::mbd::SliderJoint< mbd_types >::m_gamma [protected] |
Local vector of constraint force mixing terms.
vector3_type OpenTissue::mbd::SliderJoint< mbd_types >::m_half_cXt1 [protected] |
Center difference of the two bodies (I.e. c = r_cm^B - r_cm^A) crossed with t1 and multiplied by 0.5.
vector3_type OpenTissue::mbd::SliderJoint< mbd_types >::m_half_cXt2 [protected] |
Center difference of the two bodies (I.e. c = r_cm^B - r_cm^A) crossed with t2 and multiplied by 0.5.
linear_limit_type* OpenTissue::mbd::SliderJoint< mbd_types >::m_limit [protected] |
size_type OpenTissue::mbd::SliderJoint< mbd_types >::m_limit_offset [protected] |
linear_motor_type* OpenTissue::mbd::SliderJoint< mbd_types >::m_motor [protected] |
size_type OpenTissue::mbd::SliderJoint< mbd_types >::m_motor_offset [protected] |
quaternion_type OpenTissue::mbd::SliderJoint< mbd_types >::m_Q_error [protected] |
A quaterion used to compute the rotaional misalignment in the slider joint.
quaternion_type OpenTissue::mbd::SliderJoint< 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::SliderJoint< mbd_types >::m_Q_initial_conj [protected] |
The conjugate of Q_initial.
vector3_type OpenTissue::mbd::SliderJoint< mbd_types >::m_r_off_B [protected] |
Initial (i.e. at calibration of joint) center difference of the two bodies (I.e. c = r_cm^B - r_cm^A) given in the body frame of body B.
vector3_type OpenTissue::mbd::SliderJoint< mbd_types >::m_r_off_wcs [protected] |
Initial (i.e. at calibration of joint) center difference of the two bodies (I.e. c = r_cm^B - r_cm^A) given in WCS.
size_type OpenTissue::mbd::SliderJoint< mbd_types >::m_rows [protected] |
Number of jacobian rows.
vector_type OpenTissue::mbd::SliderJoint< mbd_types >::m_solution [protected] |
Local solution vector, ie. vector of lagrange multipliers.
vector3_type OpenTissue::mbd::SliderJoint< mbd_types >::m_t1 [protected] |
A vector orthogonal to the joint axe (in WCS).
vector3_type OpenTissue::mbd::SliderJoint< mbd_types >::m_t2 [protected] |
Another vector orthogonal to the joint axe and t1 (in WCS).
real_type OpenTissue::mbd::SliderJoint< mbd_types >::m_theta_error [protected] |
Misalignment error around the u-axe.
vector3_type OpenTissue::mbd::SliderJoint< 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.