#include <mbd_linear_joint_limit.h>
Public Types | |
typedef mbd_types::math_policy::real_type | real_type |
typedef mbd_types::math_policy::size_type | size_type |
typedef mbd_types::math_policy::vector3_type | vector3_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::value_traits | value_traits |
Public Member Functions | |
void | set_min_limit (real_type const &d_min) |
real_type | get_min_limit () const |
void | set_max_limit (real_type const &d_max) |
real_type | get_max_limit () const |
LinearJointLimit () | |
virtual | ~LinearJointLimit () |
void | evaluate (real_type const &offset, vector3_type const &s_wcs, vector3_type const &r_A, vector3_type const &r_B) |
size_type | get_number_of_jacobian_rows () const |
void | get_linear_jacobian_A (matrix_range &J, size_type const &offset) const |
void | get_linear_jacobian_B (matrix_range &J, size_type const &offset) const |
void | get_angular_jacobian_A (matrix_range &J, size_type const &offset) const |
void | get_angular_jacobian_B (matrix_range &J, size_type const &offset) const |
void | get_stabilization_term (vector_range &b_error, size_type const &offset) const |
void | get_low_limits (vector_range &lo, size_type const &offset) const |
void | get_high_limits (vector_range &hi, size_type const &offset) const |
void | get_dependency_indices (idx_vector_range &dep, size_type const &offset) const |
void | get_dependency_factors (vector_range &factors, size_type const &offset) const |
void | set_regularization (vector_range const &gamma, size_type const &offset) |
void | get_regularization (vector_range &gamma, size_type const &offset) const |
void | set_solution (vector_range const &solution, size_type const &offset) |
void | get_solution (vector_range &solution, size_type const &offset) const |
Protected Attributes | |
real_type | m_d_min |
Minimum displacement along joint axe away from calibration position ( d_min <= d_calibration=0 <= d_max). | |
real_type | m_d_max |
Maximum displacement along joint axe away from calibration position ( d_min <= d_calibration=0 <= d_max). | |
real_type | m_d_cur |
The current displacement along the joint axe away from calibration position. | |
real_type | m_d_error |
The current displacement error along the joint axe. That is if slider have moved beyond it limits. | |
vector3_type | m_s_wcs |
The joint axe in WCS. | |
vector3_type | m_c |
body_type center displacement, ie. c = r_B - r_A | |
vector3_type | m_half_cXs |
0.5*c X s_wcs | |
bool | m_low_active |
Boolean flag indicating whetever the minimum limit is active or not. | |
size_type | m_rows |
Number of jacobian rows. | |
real_type | m_gamma |
Constraint force mixing. | |
real_type | m_solution |
Solution. |
typedef mbd_types::math_policy::idx_vector_range OpenTissue::mbd::LinearJointLimit< mbd_types >::idx_vector_range |
Reimplemented from OpenTissue::mbd::SubConstraintInterface< mbd_types >.
typedef mbd_types::math_policy::matrix_range OpenTissue::mbd::LinearJointLimit< mbd_types >::matrix_range |
Reimplemented from OpenTissue::mbd::SubConstraintInterface< mbd_types >.
typedef mbd_types::math_policy::real_type OpenTissue::mbd::LinearJointLimit< mbd_types >::real_type |
Reimplemented from OpenTissue::mbd::SubConstraintInterface< mbd_types >.
typedef mbd_types::math_policy::size_type OpenTissue::mbd::LinearJointLimit< mbd_types >::size_type |
Reimplemented from OpenTissue::mbd::SubConstraintInterface< mbd_types >.
typedef mbd_types::math_policy::value_traits OpenTissue::mbd::LinearJointLimit< mbd_types >::value_traits |
Reimplemented from OpenTissue::mbd::CoreConstraintInterface< mbd_types >.
typedef mbd_types::math_policy::vector3_type OpenTissue::mbd::LinearJointLimit< mbd_types >::vector3_type |
typedef mbd_types::math_policy::vector_range OpenTissue::mbd::LinearJointLimit< mbd_types >::vector_range |
Reimplemented from OpenTissue::mbd::SubConstraintInterface< mbd_types >.
OpenTissue::mbd::LinearJointLimit< mbd_types >::LinearJointLimit | ( | ) | [inline] |
virtual OpenTissue::mbd::LinearJointLimit< mbd_types >::~LinearJointLimit | ( | ) | [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::evaluate | ( | real_type const & | offset, | |
vector3_type const & | s_wcs, | |||
vector3_type const & | r_A, | |||
vector3_type const & | r_B | |||
) | [inline] |
Evaluate limit constraint.
offset | joint_type offset (i.e. linear displacement from initial pose). | |
s_wcs | joint_type axis in world coordinate system. | |
r_A | Center of mass position of body A in world coordinate system. | |
r_B | Center of mass position of body B in world coordinate system. |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_angular_jacobian_A | ( | matrix_range & | J, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_angular_jacobian_B | ( | matrix_range & | J, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_dependency_factors | ( | vector_range & | factors, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_dependency_indices | ( | idx_vector_range & | dep, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_high_limits | ( | vector_range & | hi, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_linear_jacobian_A | ( | matrix_range & | J, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_linear_jacobian_B | ( | matrix_range & | J, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_low_limits | ( | vector_range & | lo, | |
size_type const & | offset | |||
) | const [inline, virtual] |
real_type OpenTissue::mbd::LinearJointLimit< mbd_types >::get_max_limit | ( | ) | const [inline] |
Get Maximum Limit.
real_type OpenTissue::mbd::LinearJointLimit< mbd_types >::get_min_limit | ( | ) | const [inline] |
Get Minimum Limit.
size_type OpenTissue::mbd::LinearJointLimit< mbd_types >::get_number_of_jacobian_rows | ( | ) | const [inline, virtual] |
Return Number of Jacobian Rows. The number of jacobian rows corresponds to the number of jacobian variables.
Implements OpenTissue::mbd::CoreConstraintInterface< mbd_types >.
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_regularization | ( | vector_range & | gamma, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_solution | ( | vector_range & | solution, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::get_stabilization_term | ( | vector_range & | b_error, | |
size_type const & | offset | |||
) | const [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::set_max_limit | ( | real_type const & | d_max | ) | [inline] |
Set Maximum Limit.
d_max The new maximum limit (must be non-negative).
void OpenTissue::mbd::LinearJointLimit< mbd_types >::set_min_limit | ( | real_type const & | d_min | ) | [inline] |
Set Minimum Limit.
d_min The new minimum limit (must be non-positive).
void OpenTissue::mbd::LinearJointLimit< mbd_types >::set_regularization | ( | vector_range const & | gamma, | |
size_type const & | offset | |||
) | [inline, virtual] |
void OpenTissue::mbd::LinearJointLimit< mbd_types >::set_solution | ( | vector_range const & | solution, | |
size_type const & | offset | |||
) | [inline, virtual] |
vector3_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_c [protected] |
body_type center displacement, ie. c = r_B - r_A
real_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_d_cur [protected] |
The current displacement along the joint axe away from calibration position.
real_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_d_error [protected] |
The current displacement error along the joint axe. That is if slider have moved beyond it limits.
real_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_d_max [protected] |
Maximum displacement along joint axe away from calibration position ( d_min <= d_calibration=0 <= d_max).
real_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_d_min [protected] |
Minimum displacement along joint axe away from calibration position ( d_min <= d_calibration=0 <= d_max).
real_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_gamma [protected] |
Constraint force mixing.
vector3_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_half_cXs [protected] |
0.5*c X s_wcs
bool OpenTissue::mbd::LinearJointLimit< mbd_types >::m_low_active [protected] |
Boolean flag indicating whetever the minimum limit is active or not.
size_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_rows [protected] |
Number of jacobian rows.
vector3_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_s_wcs [protected] |
The joint axe in WCS.
real_type OpenTissue::mbd::LinearJointLimit< mbd_types >::m_solution [protected] |
Solution.