This section describes the Revolute Joint entity of MotionView and shows the various usage, creation, and editing methods.
A Revolute Joint (also known as a pin joint or a hinge joint) is a one degree-of-freedom kinematic pair used in mechanisms.
Revolute Joint - Construction
Revolute joints provide single-axis rotation function used in many places such as:
• | Door hinges |
• | Folding mechanisms |
• | Other Uni-Axial rotation devices |
The Revolute joint is represented using Markers when exported to MBD Solver. The representation can be visualized as shown in the figure below:
Revolute joint marker representation
The bodies that are constrained by the revolute joint are represented using two markers: Marker I and Marker J. Marker I belongs to Body 1 and Marker J belongs to Body 2. The constraints and displacement are applied on the Marker I with respect to the Marker J. Both of the markers will have a common point of origin, the same as the Joint’s Origin point. The orientation axis of the Revolute Joint is represented by the Z axis of both I and J markers. Thus, the markers I and J share a common point of origin and the direction of orientation of their Z axes. The I marker is free to rotate about the Z axis of the J marker.
The topological information required to define a Revolute Joint is shown in the figure below:
The data members of the Revolute Joint can be classified into the following members:
An Revolute Joint needs the following:
• | Body 1 and Body 2 - Specify two bodies between which the joint is created. |
• | Origin - Specify a Point which defines the location of the joint. |
• | Alignment Axis – Orientation of the joint specified using a Point or a Vector. |
• | Compliant Mode (Optional) - If the Allow Compliance option is selected while adding the joint to a model, the joint's compliance state can be toggled between Compliant and Non-Compliant. |
• | Friction Properties (Optional) - can also be assigned (see below). |
The joint can be modeled as a Single entity or as a Pair entity.
Note - Displacement Initial Condition for Joints is not supported by MotionSolve as of version 12.0. Only Velocity Initial condition is supported. Displacement Initial condition can be specified when building models for the Adams Solver.
Optional Friction properties can also be specified for the joint:
Activating the Use Friction option on the Friction Properties tab will display the following options in the panel:
Coefficient Dynamic |
|
||||||
Coefficient Static |
|
||||||
Stiction Transition Velocity |
|
||||||
Max. Stiction Deformation (Adams only) |
|
||||||
Active for Static/Quasi-Static Analysis |
True/False |
||||||
Effect |
|
||||||
Input Forces |
|
||||||
Torque Preload |
|
||||||
Friction Arm |
|
||||||
Pin Radius |
|
||||||
Bending Arm |
|
||||||
LuGre Parameters |
|
To learn how to add a Revolute Joint to a model, please see the Joints topic.
Joints Panel (Revolute Joint) – Connectivity Tab - Single Entity Joints Panel (Revolute Joint) – Connectivity Tab - Pair Entity
OR Any other vector can be selected (for example, the Axis of markers) by double clicking on the Vector collector and using the model tree.
Note - Displacement Initial condition is not supported by MotionSolve 12.0. This option can be used when building models for ADAMS Solver.
Joints Panel (Revolute Joint) – Initial Conditions Tab - Single Entity Joints Panel (Revolute Joint) – Initial Conditions Tab - Pair Entity
Joints panel - Friction Properties tab Checking the Use Friction option displays a set of input fields which you need to specify as needed by the friction model of the solver. In addition, the LuGre Parameters tab also appears if the SolverMode is set to MotionSolve. Joints panel - LuGre Parameters tab For additional details on the various fields in the Friction Properties and LuGre Parameters tab, please refer to the Joints Panel – Friction Properties Tab and Joints Panel - LuGre Parameters Tab topics. Note - The same steps as shown above can also be used to define Pair Revolute Joint entities. |
The Project Browser will filter the entities and display only the Joints in the model.
The corresponding panel is automatically displayed.
|
The model containing the Revolute Joint can be saved in MDL format from MotionView and exported in the MotionSolve XML format.
The Revolute Joint can be of the following types:
And these four types of entities can be added to the model using MDL Statements shown below:
To learn how to create a complete model using MDL Statements please refer to tutorial MV-1060: Introduction to MDL. |
The Revolute Joint when exported to the MotionSolve XML format is defined as a Constraint_Joint statement. Syntax: <Constraint_Joint id = "integer" label = "Name of Joint" type = "JOINT_TYPE" i_marker_id = "integer" j_marker_id = "integer" /> Initial Velocity Conditions of the Revolute Joint is defined using the statement – JointInitialVel_Rev: <JointInitialVel_Rev joint_id = "integer" iv = "real" </JointInitialVel_Rev> In case of the Revolute Joint, the model statement will be as shown below: <Constraint_Joint id = "301001" label = "Singe Rev Joint" type = "REVOLUTE" i_marker_id = "30103050" j_marker_id = "30101050" /> In the above XML Model statement the i_marker_id and j_marker_id represent the I and J markers of the Joint which belong to Body 1 and Body 2 respectively. To understand the complete syntax of the Constraint_Joint XML model statement, please refer to the MotionSolve Reference Guide Page for Constraint_Joint. An Initial Conditions example is given below: <JointInitialVel_Rev joint_id = "301001" iv = "5." /> For a better understanding of the JointInitialVel_Rev XML statement, please refer to the MotionSolve Reference Guide Page for JointInitialVel_Rev. |
In MotionView, Tcl can be used to add and edit any MDL entities to the model. There are two Tcl commands that can be used to add an entity:
Syntax: mdlmodel_handle InterpretEntity new_handle keyword varname label Example: mdlmodel_handle InterpretEntity joint_rev_handle RevJoint j_rev "\"Rev Joint\"" b_1 B_Ground p_ori "POINT" p_axis "ALLOW_COMPLIANCE" |
*This command is not applicable for Revolute joint entities. |
The InterpretEntity command is used to add entities to the model and the InterpretSet command is used to set the entity properties. So in the case of the Revolute Joint, the properties that can be set are the Joint Initial Conditions and Joint Friction. Extended definitions for InterpretEntity and InterpretSet can be found in the HyperWorks Desktop Reference Guide.
Note - When using the InterpretEntity and InterpretSet commands, it is important to also use the Evaluate command in order for the changes to take effect immediately.
To learn how to create a complete model using Tcl commands, please refer to tutorial MV-1040: Model Building Using Tcl.
The example file below shows a Revolute Joint connecting two bodies:
*BeginMDL( the_model, "Model" ) *StandardInclude(FILE) *Point( p_0, "Point 0" ) *PointPair( p_1, "Point 1" ) *Body( b_0, "Body 0", p_0, , , , ) *BodyPair( b_1, "Body 1", p_1, , , , ) //Example for a Revolute Joint - Single *RevJoint( j_revjsingle, "Rev Joint Single", b_0, B_Ground, p_0, POINT, p_1.r ) //Example for Revolute Joint - Pair *RevJointPair( j_revjpairsym, "Rev Joint Pair Sym", b_1, B_Ground, p_1, VECTOR, V_Global_Y ) *RevJointPair( j_revjpairAsym, "Rev Joint pair Asym", b_1, B_Ground, p_1, VECTOR, V_Global_Y ) *SetPoint( p_1, LEFT, , -100 ) *Set( b_0.usecm, true ) *Set( b_1.usecm, true ) *SetBodyInertia( b_1, LEFT, 1, 10000, 10000, 10000 ) //Example for SetJointICFlag - Single *SetJointICFlag( j_revjsingle, ROT, true ) //Example for SetJointIC - Single *SetJointIC( j_revjsingle, ROT, , 5 ) *SetJointFriction( j_revjsingle, true, 0.35, 0.26, ACTIVE_STATIC, 0.15, , STICTION_AND_SLIDING, PRELOAD, REACTION_FORCE, , , , , , , , 1000, , , , 10 ) *SetJointFrictionLugre( j_revjsingle, true, 100, 0.316, 0.0004 ) //Example for SetJointICFlag – Symmetric Pair *SetJointICFlag( j_revjpairsym, LEFT, ROT, true ) //Example for SetJointIC - Symmetric Pair *SetJointIC( j_revjpairsym, LEFT, ROT, 0, 10 ) *SetJointFriction( j_revjpairsym, LEFT, true, 0.35, 0.26, ACTIVE_STATIC, 0.15, , STICTION_AND_SLIDING, NO_PRELOAD, REACTION_FORCE, BENDING_MOMENT, , , , , , , 1000, 10, 15, 50 ) //Example for SetJointICFlag – Asymmetric Pair *SetJointICFlag( j_revjpairAsym, , ROT, true, true ) //Example for SetJointIC - Asymmetric Pair *SetJointIC( j_revjpairAsym, , ROT, , 5, , 10 ) *SetJointFriction( j_revjpairAsym, , true, 0.35, 0.26, ACTIVE_STATIC, 0.15, , STICTION_ONLY, PRELOAD, REACTION_FORCE, , , , , , , , 1000, , , , 10 , true, 0.35, 0.26, ACTIVE_STATIC, 0.15, , STICTION_ONLY, PRELOAD, REACTION_FORCE, , , , , , , , 1000, , , , 10 ) *SetJointFrictionLugre( j_revjpairAsym, false, 100, 0.316, 0.0004 , false, 100, 0.316, 0.0004 ) *EndMDL() |
See Also:
*RevJoint() (MDL Model Statement)
*RevJointPair() (MDL Model Statement)
*SetJointIC() (MDL Model Statement)
Constraint_Joint (XML Command)
InterpretEntity (Tcl Command)
InterpretSet (Tcl Command)