Simbody
3.6
|
(Experimental – API will change – use at your own risk) Set a hard limit on the maximum value of a generalized coordinate q. More...
Public Member Functions | |
HardStopUpper (MobilizedBody &mobod, MobilizerQIndex whichQ, Real defaultUpperLimit, Real minCOR) | |
bool | disable (State &state) const override |
Disable the normal and friction constraints if they were enabled. More... | |
bool | enable (State &state) const override |
Enable the normal and friction constraints if they were disabled. More... | |
bool | isEnabled (const State &state) const override |
Return true if this contact is enabled. More... | |
Vec3 | whereToDisplay (const State &state) const override |
This returns a point in the ground frame at which you might want to say the constraint is "located", for purposes of display only. More... | |
Real | getPerr (const State &state) const override |
Return the position error for the contact constraint (usually a signed distance function). More... | |
Real | getVerr (const State &state) const override |
Return the time derivative of the contact constraint position error. More... | |
Real | getAerr (const State &state) const override |
Return the time derivative of the contact constraint velocity error. More... | |
Real | calcEffectiveCOR (const State &state, Real defaultCaptureSpeed, Real defaultMinCORSpeed, Real impactSpeed) const override |
Returns the effective coefficient of restitution (COR) for this contact, given an impact speed (a nonnegative scalar). More... | |
MultiplierIndex | getContactMultiplierIndex (const State &s) const override |
Return the multiplier index Simbody assigned for the unilateral contact constraint (for contact, this is the normal constraint). More... | |
Public Member Functions inherited from SimTK::UnilateralContact | |
UnilateralContact (int sign=1) | |
The base class constructor allows specification of the sign convention to be used with this constraint. More... | |
virtual | ~UnilateralContact () |
Real | getSignConvention () const |
Report the sign convention (1 or -1) supplied at construction. More... | |
virtual bool | isProximal (const State &state, Real ptol) const |
Given the position constraint tolerance currently in use, is this contact close enough to contacting that we should treat it as though it is in contact? Normally we just see if sign*perr <= tol, but individual contacts can override this if they want to do some scaling. More... | |
virtual bool | hasFriction (const State &state) const |
Returns true if there is a friction constraint associated with this contact constraint. More... | |
virtual Real | calcEffectiveCOF (const State &state, Real defaultTransitionSpeed, Real slipSpeed) const |
Returns the effective coefficient of friction mu for this contact, given a relative slip speed (a nonnegative scalar). More... | |
virtual Vec2 | getSlipVelocity (const State &state) const |
virtual void | getFrictionMultiplierIndices (const State &state, MultiplierIndex &ix_x, MultiplierIndex &ix_y) const |
If hasFriction(), this method returns the multipliers used for the x- and y-direction friction constraints. More... | |
virtual Vec3 | getPositionInfo (const State &state) const |
TODO: kludge needed because we're misusing existing constraints. More... | |
virtual void | setInstanceParameter (State &state, const Vec3 &pos) const |
TODO: kludge to set instance parameters on internal constraints; this should be the same Vec3 you got from getPositionInfo(). More... | |
void | setMyIndex (UnilateralContactIndex cx) |
UnilateralContactIndex | getMyIndex () const |
(Experimental – API will change – use at your own risk) Set a hard limit on the maximum value of a generalized coordinate q.
A generalized force opposes further excursion of the coordinate, and a generalized impulse is produced when the stop is hit with a non-zero velocity (an impact). A coefficient of restitution (COR) e, with 0<=e<=1 is specified that determines the rebound impulse that occurs as a result of impact. The COR is typically velocity-dependent. The given value is the COR at high impact velocities; it will be higher for low impact velocities but zero at very small impact velocities.
The sign convention for this unilateral constraint is negative, meaning that perr,verr,aerr<=0, lambda>=0 are the good directions.
SimTK::HardStopUpper::HardStopUpper | ( | MobilizedBody & | mobod, |
MobilizerQIndex | whichQ, | ||
Real | defaultUpperLimit, | ||
Real | minCOR | ||
) |
|
inlineoverridevirtual |
Disable the normal and friction constraints if they were enabled.
Return true if we actually had to disable something.
Implements SimTK::UnilateralContact.
|
inlineoverridevirtual |
Enable the normal and friction constraints if they were disabled.
Return true if we actually had to enable something.
Implements SimTK::UnilateralContact.
|
inlineoverridevirtual |
Return true if this contact is enabled.
Implements SimTK::UnilateralContact.
This returns a point in the ground frame at which you might want to say the constraint is "located", for purposes of display only.
Implements SimTK::UnilateralContact.
Return the position error for the contact constraint (usually a signed distance function).
You have to apply the sign convention to interpret this properly.
Implements SimTK::UnilateralContact.
Return the time derivative of the contact constraint position error.
You have to apply the sign convention to interpret this properly.
Implements SimTK::UnilateralContact.
Return the time derivative of the contact constraint velocity error.
You have to apply the sign convention to interpret this properly.
Implements SimTK::UnilateralContact.
|
inlineoverridevirtual |
Returns the effective coefficient of restitution (COR) for this contact, given an impact speed (a nonnegative scalar).
For a given pair of contacting materials this is typically a function of just the impact speed, but it could also depend on the time and configuration in state, which should be realized through Stage::Position. The given default impact speed thresholds (also nonnegative) are used to calculate the COR unless this Contact overrides those.
Implements SimTK::UnilateralContact.
|
overridevirtual |
Return the multiplier index Simbody assigned for the unilateral contact constraint (for contact, this is the normal constraint).
If the constraint is not enabled, there is no multiplier and the returned index will be invalid.
Implements SimTK::UnilateralContact.