Defined in Program listing for file mechanics/src/joints/CouplerJointR.hpp
CouplerJointR
: public NewtonEulerJointR¶This class implements a coupling (equality) between two DoFs of any NewtonEulerJointR.
Can be used e.g. to implement a screw relation (coupled rotation and translation) based on CylindricalJointR.
Public Functions
CouplerJointR
()¶Empty constructor.
The relation may be initialized later by setPoint, setAbsolute, and setBasePositions.
CouplerJointR
(SP::NewtonEulerJointR joint1, unsigned int dof1, SP::NewtonEulerJointR joint2, unsigned int dof2, double ratio, SP::SiconosVector ref1 = SP::SiconosVector(), unsigned int ref1_index = 0, SP::SiconosVector ref2 = SP::SiconosVector(), unsigned int ref2_index = 0)¶Initialize a coupler.
See setReferences() for an explanation of the parameters.
CouplerJointR
(SP::NewtonEulerJointR joint1, unsigned int dof1, SP::NewtonEulerJointR joint2, unsigned int dof2, double ratio, SP::NewtonEulerDS refds1, unsigned int ref1_index, SP::NewtonEulerDS refds2, unsigned int ref2_index)¶Initialize a coupler.
See setReferences() for an explanation of the parameters.
~CouplerJointR
()¶destructor
computehDoF
(double time, BlockVector &q0, SiconosVector &y, unsigned int axis)¶Compute the vector of linear and angular positions of the free axes.
computeJachqDoF
(double time, Interaction &inter, SP::BlockVector q0, SimpleMatrix &jachq, unsigned int axis)¶Compute the jacobian of linear and angular DoF with respect to some q.
numberOfConstraints
()¶Get the number of constraints defined in the joint.
numberOfDoF
()¶Get the number of degrees of freedom defined in the joint.
setBasePositions
(SP::SiconosVector q1, SP::SiconosVector q2 = SP::SiconosVector())¶Initialize the joint constants based on the provided base positions.
q1
: A SiconosVector of size 7 indicating translation and orientation in inertial coordinates. q2
: An optional SiconosVector of size 7 indicating translation and orientation; if null, the inertial frame will be considered as the second base. setReferences
(SP::NewtonEulerJointR joint1, unsigned int dof1, SP::NewtonEulerJointR joint2, unsigned int dof2, SP::SiconosVector ref1, unsigned int ref1_index, SP::SiconosVector ref2, unsigned int ref2_index)¶Set reference joints and vectors.
This constraint maintains the equality theta2=theta1*ratio; theta1 is measured by joint1 with reference to some vector ref1 which must replace either the first or second DS of the current relation being defined. If ref1 and ref2 are null, then no reference is used. Typically ref1 and ref2 will be equal in order to implement gear ratios for example. joint1 must be between ref1 and ds1 specified in setBasePositions(), while joint2 must be between ref2 and ds2.
joint1
: The joint for the first reference measurement theta1. dof1
: The degree of freedom index of joint1 to use for the first reference measurement theta1. ref1
: The optional reference position for the first reference measurement theta1. ref1_index
: Must be 0 or 1, depending on where ref1 appears in joint1. joint2
: The joint for the second reference measurement theta2. dof2
: The degree of freedom index of joint2 to use for the second reference measurement theta2. ref2
: The optional reference position for the second reference measurement theta2. ref2_index
: Must be 0 or 1, depending on where ref2 appears in joint2. setReferences
(SP::NewtonEulerJointR joint1, unsigned int dof1, SP::NewtonEulerJointR joint2, unsigned int dof2, SP::NewtonEulerDS refds1, unsigned int ref1_index, SP::NewtonEulerDS refds2, unsigned int ref2_index)¶Set reference joints and vectors.
This constraint maintains the equality theta2=theta1*ratio; theta1 is measured by joint1 with reference to some vector ref1 which must replace either the first or second DS of the current relation being defined. If ref1 and ref2 are null, then no reference is used. Typically ref1 and ref2 will be equal in order to implement gear ratios for example. joint1 must be between ref1 and ds1 specified in setBasePositions(), while joint2 must be between ref2 and ds2. This alternative setReferences() takes NewtonEulerDS as parameters, but the reference vectors will be taken as refds1->q() and refds2->q() respectively.
joint1
: The joint for the first reference measurement theta1. dof1
: The degree of freedom index of joint1 to use for the first reference measurement theta1. refds1
: The optional reference vector for the first reference measurement theta1. ref1_index
: Must be 0 or 1, depending on where ref1 appears in joint1. joint2
: The joint for the second reference measurement theta2. dof2
: The degree of freedom index of joint2 to use for the second reference measurement theta2. refds2
: The optional reference vector for the second reference measurement theta2. ref2_index
: Must be 0 or 1, depending on where ref2 appears in joint2.