public class RollPitchCoupling extends RigidBodyCoupling
roll
rotation about the z axis, followed by a pitch rotation about
the subsequent y axis. Range limits can be placed on both the
roll and pitch angles.BILATERAL, LINEAR, ROTARY, useNewDerivatives| Constructor and Description |
|---|
RollPitchCoupling() |
| Modifier and Type | Method and Description |
|---|---|
void |
getConstraintInfo(maspack.spatialmotion.RigidBodyCoupling.ConstraintInfo[] info,
RigidTransform3d TGD,
RigidTransform3d TCD,
RigidTransform3d XERR,
boolean setEngaged)
Computes the constraint frame G and the associated constraint information.
|
void |
getPitchRange(double[] minmax)
Gets the minimum and maximum values for the coupling's pitch angle (in
radians).
|
void |
getRollPitch(double[] angs,
RigidTransform3d TGD) |
void |
getRollRange(double[] minmax)
Gets the minimum and maximum values for the coupling's roll angle (in
radians).
|
boolean |
hasRestrictedRange()
Returns true if this coupling has a range restriction; this will be true
if the range of the roll or pitch angles is less than [-PI, PI].
|
void |
initializeConstraintInfo(maspack.spatialmotion.RigidBodyCoupling.ConstraintInfo[] info) |
int |
maxUnilaterals()
Returns the maximum number of unilateral constraints associated with this
coupling.
|
int |
numBilaterals()
Returns the number of bilateral constraints associated with this coupling.
|
void |
projectToConstraint(RigidTransform3d TGD,
RigidTransform3d TCD)
Computes the frame G on the constraint surface which is closest to a given
frame C.
|
void |
setPitchRange(double min,
double max)
Sets the minimum and maximum values for the coupling's pitch angle (in
radians).
|
void |
setRollPitch(RigidTransform3d TGD,
double[] angs) |
void |
setRollRange(double min,
double max)
Sets the minimum and maximum values for the coupling's roll angle (in
radians).
|
findNearestAngle, getAuxState, getBilateralConstraints, getBilateralForceG, getBilateralImpulses, getBreakAccel, getBreakSpeed, getCompliance, getConstraint, getConstraintInfo, getContactDistance, getDamping, getInitialAuxState, getUnilateralConstraints, getUnilateralForceG, getUnilateralImpulses, maxConstraints, numUnilaterals, printConstraintInfo, scaleDistance, setAuxState, setBilateralImpulses, setBreakAccel, setBreakSpeed, setCompliance, setContactDistance, setDamping, setDistanceAndZeroDerivative, setDistancesAndZeroDerivatives, setUnilateralImpulses, skipAuxState, transformGeometry, updateBodyStates, updateConstraintsFromC, updateUnilateralConstraints, zeroImpulsespublic void setRollRange(double min,
double max)
min - Minimum roll anglemax - Maximum roll anglepublic void getRollRange(double[] minmax)
minmax - used to return the minimum and maximum valuessetRollRange(double, double)public void setPitchRange(double min,
double max)
min - Minimum pitch anglemax - Maximum pitch anglepublic void getPitchRange(double[] minmax)
minmax - used to return the minimum and maximum valuessetPitchRange(double, double)public boolean hasRestrictedRange()
public int maxUnilaterals()
RigidBodyCouplingmaxUnilaterals in class RigidBodyCouplingpublic int numBilaterals()
RigidBodyCouplingnumBilaterals in class RigidBodyCouplingpublic void projectToConstraint(RigidTransform3d TGD, RigidTransform3d TCD)
RigidBodyCouplingprojectToConstraint in class RigidBodyCouplingTGD - returns the transform from G to DTCD - transform from frame C to Dpublic void getRollPitch(double[] angs,
RigidTransform3d TGD)
public void setRollPitch(RigidTransform3d TGD, double[] angs)
public void initializeConstraintInfo(maspack.spatialmotion.RigidBodyCoupling.ConstraintInfo[] info)
initializeConstraintInfo in class RigidBodyCouplingpublic void getConstraintInfo(maspack.spatialmotion.RigidBodyCoupling.ConstraintInfo[] info,
RigidTransform3d TGD,
RigidTransform3d TCD,
RigidTransform3d XERR,
boolean setEngaged)
RigidBodyCoupling
Information for each constraint wrench is returned through an array of
ConstraintInfo objects supplied by the argument info. This
array should have a fixed number of elements equal to the number of
bilateral constraints plus the maximum number of unilateral constraints.
Bilateral constraints appear first, followed by the unilateral
constraints. Constraint wrenches and their derivatives (with respect to
frame G) are set within the fields wrenchC and
dotWrenchC, repsectively. Distances to set within the
distance; each of these should be the dot product of the
wrench with the linearization of the constraint error TCG. For computing
wrench derivatives, this method may use myVelBA, which
gives the current velocity of B with repsect to A, in coordinate frame D.
Information only needs to be returned for constraints which are
potentially active, or engaged. Constraints which are
engaged have their ConstraintInfo.engaged field set to a
non-zero value. Bilateral constraints are always engaged, and
their ConstraintInfo.engaged field is automatically
set to 1 by the system. For unilateral constraints, the determination
of whether or not the constraint is engaged, and the setting of
the engaged field, should be done
by this method if the argument setEngaged is
true. Otherwise, if setEngaged is
false, the method should take the engaged settings as given.
Constraints which are engaged are those which
are returned by the calls getBilateralConstraints or getUnilateralConstraints.
getConstraintInfo in class RigidBodyCouplinginfo - used to return information for each possible constraint wrenchesTGD - returns the transform from G to DTCD - transform from operation frame C to DXERR - TODOsetEngaged - if true, this method should determine
if the constraint is engaged.