Simbody
3.7
|
TODO: not implemented yet. More...
Public Member Functions | |
BoundedSpeedConstraint () | |
virtual | ~BoundedSpeedConstraint () |
virtual Vec2 | calcEffectiveBounds (const State &state) const =0 |
Return the currently effective lower and upper bounds on the associated multiplier as a Vec2(lower,upper). More... | |
TODO: not implemented yet.
A bounded speed constraint uses a single nonholonomic (velocity) constraint equation to prevent relative slip provided it can do so while keeping the generated force within a range given by a lower and upper bound. Outside that range the connection will slip and the force value will be one of the bounds, depending on the slip direction. An example is a torque-limited speed control motor. Recall that multipliers lambda have the opposite sign convention from applied forces. We enforce:
lower <= -lambda <= upper and verr=0 or verr > 0 and -lambda=lower or verr < 0 and -lambda=upper
The bounds (lower,upper) can be state dependent, for example, they may be dependent on the current slip velocity. When lower=-upper, this is just a restriction on the magnitude |lambda|, like a friction constraint where the normal force is known.
This constraint is workless when it is able to prevent slip with the force in range; it is maximally dissipative otherwise because the constraint force opposes the slip velocity.
|
inline |
|
inlinevirtual |
|
pure virtual |
Return the currently effective lower and upper bounds on the associated multiplier as a Vec2(lower,upper).
The bounds may depend on time, position, and velocity taken from the given state.