Simbody
|
Three constraint equations. More...
#include <Constraint.h>
Public Member Functions | |
ConstantOrientation (MobilizedBody &baseBody_B, const Rotation &defaultRB, MobilizedBody &followerBody_F, const Rotation &defaultRF) | |
ConstantOrientation & | setDefaultBaseRotation (const Rotation &) |
ConstantOrientation & | setDefaultFollowerRotation (const Rotation &) |
MobilizedBodyIndex | getBaseMobilizedBodyIndex () const |
MobilizedBodyIndex | getFollowerMobilizedBodyIndex () const |
const Rotation & | getDefaultBaseRotation () const |
const Rotation & | getDefaultFollowerRotation () const |
const Rotation & | getBaseRotation (const State &) const |
const Rotation & | getFollowerRotation (const State &) const |
Vec3 | getPositionErrors (const State &) const |
Vec3 | getVelocityErrors (const State &) const |
Vec3 | getAccelerationErrors (const State &) const |
Vec3 | getMultipliers (const State &) const |
Vec3 | getTorqueOnFollowerBody (const State &) const |
SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS (ConstantOrientation, ConstantOrientationImpl, Constraint) |
Three constraint equations.
This constraint enforces that a reference frame fixed to one body (the "follower body") must have the same orientation as another reference frame fixed on another body (the "base body"). That is, we have three constraint equations that collectively prohibit any relative rotation between the base and follower. The run time equations we use are just three "constant angle" constraints enforcing perpendicularity between follower's x,y,z axes with the base y,z,x axes respectively.
This constraint is enforced by an internal (non-working) torque vector applied equal and opposite on each body.
TODO: The assembly condition is not the same as the run-time constraint, because the perpendicularity conditions can be satisfied with antiparallel axes. For assembly we must have additional (redundant) constraints requiring parallel axes.
SimTK::Constraint::ConstantOrientation::ConstantOrientation | ( | MobilizedBody & | baseBody_B, |
const Rotation & | defaultRB, | ||
MobilizedBody & | followerBody_F, | ||
const Rotation & | defaultRF | ||
) |
ConstantOrientation& SimTK::Constraint::ConstantOrientation::setDefaultBaseRotation | ( | const Rotation & | ) |
ConstantOrientation& SimTK::Constraint::ConstantOrientation::setDefaultFollowerRotation | ( | const Rotation & | ) |
MobilizedBodyIndex SimTK::Constraint::ConstantOrientation::getBaseMobilizedBodyIndex | ( | ) | const |
MobilizedBodyIndex SimTK::Constraint::ConstantOrientation::getFollowerMobilizedBodyIndex | ( | ) | const |
const Rotation& SimTK::Constraint::ConstantOrientation::getDefaultBaseRotation | ( | ) | const |
const Rotation& SimTK::Constraint::ConstantOrientation::getDefaultFollowerRotation | ( | ) | const |
SimTK::Constraint::ConstantOrientation::SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS | ( | ConstantOrientation | , |
ConstantOrientationImpl | , | ||
Constraint | |||
) |