MotionView User's Guide

Translational Joint

Translational Joint

Previous topic Next topic Expand/collapse all hidden text  

Translational Joint

Previous topic Next topic JavaScript is required for expanding text JavaScript is required for the print function  

This section describes the Translational Joint entity of MotionView and shows the various usage, creation, and editing methods.

Theory/Background

A Translational Joint is one degree-of-freedom kinematic pair used in mechanisms.

translational_joint_example_mv

Translational Joint - Construction

Translational joints provide single-axis rotation function used in many places such as:

Splined shafts
Slider mechanism
Other Uni-Axial translational devices

The Translational joint is represented using Markers when exported to MBD Solver. The representation can be visualized as shown in the figure below:

translational_joint_diagram_mv

Translational joint marker representation

The bodies that are constrained by the Translational 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 Translational Joint is represented by the Z axis of both I and J markers. The I marker is free to rotate about the Z axis of the J marker.

The topological information required to define a Translational Joint is shown in the figure below:

translational_joint_diagram2_mv

Entity Data Members

The data members of the Translational Joint can be classified into the following members:

Connectivity

An Translational 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.

Properties

Optional Friction properties can also be specified for the joint:

translational_joint_friction_props_diagram_mv

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

Stiction and Sliding
Stiction Only
Sliding Only

Input Forces

Preload (True/False)
Reaction Force (True/False)
Bending Moment (True/False)
Torsional Moment (True/False)

Force Preload

 

Initial Overlap

 

Reaction Arm

 

Overlap Delta

Increase
Decrease
Constant

LuGre Parameters

Bristle Stiffness
Damping Coefficient
Viscous Coefficient

Creating and Editing Joints

To learn how to add a Translational Joint to a model, please see the Joints topic.

hmtoggle_plus1To create/add a Translational Joint to a model:
1.Once an Translational Joint has been added to the model using any of the "entity" creation methods, the panel for the joint will automatically be displayed in the panel area.  See the panel examples below:

translational_joint_panel_mv

Joints Panel (Translational Joint) – Connectivity Tab - Single Entity

translational_joint_pair_panel_mv

Joints Panel (Translational Joint) – Connectivity Tab - Pair Entity

2.The joint definition needs two bodies which will be constrained by the joint. Select Body 1 by picking the body from the graphics area, or double click the Body 1 collector to open to the model tree (from which the desired body can be selected).
3.Pick Body 2 from the graphics area by clicking on the desired body (or use the collector and model tree).
4.Select the point of Origin from the Project Browser, or the graphics area, to specify a location for the joint.
5.Specify the Alignment axis for the joint using either of the methods listed below:
-Point – Select a point that defines the Alignment axis for the joint.
-Vector – If the Alignment axis for the joint is along any of the Global Axes, the Global X, Y,or Z axis can be selected by clicking on the desired axis in the graphics area.

alignment_axis_vector_example_mv

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.

translational_joint_select_a_vector_dialog_mv

6.Optionally you can specify Initial Conditions on the Joint.  Since the joint has one rotational DOF, the joint can have one set of rotational Displacement and Velocity initial conditions.

Note - Displacement Initial condition is not supported by MotionSolve 12.0.  This option can be used when building models for ADAMS Solver.

7.In the case of a Translational joint, you can specify translation initial conditions (see the figures below):

translational_joint_panel__initial_cond_tab_mv

Joints Panel (Translational Joint) – Initial Conditions Tab - Single Entity

translational_joint_panel_pair_initial_cond_tab_mv

Joints Panel (Translational Joint) – Initial Conditions Tab - Pair Entity

When modeled as a Pair entity, the joint can have symmetric properties.

8.Optionally, you can specify frictional properties for the joint.  Activate the Use Friction check box on the Friction Properties tab.  The attributes related to the Translational joint friction are shown below:

translational_joint_panel_friction_prop_tab_mv

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.

translational_joint_panel_lugre_param_tab_mv

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 Translational Joint entities.

hmtoggle_plus1To edit or change the definition of a Joint entity:
1.Left click the Joints panel icon entityJoints-24 on the Constraint toolbar.

The Project Browser will filter the entities and display only the Joints in the model.

2.Select the desired joint in the Project Browser.

The corresponding panel is automatically displayed.

3.From the Connectivity tab, use the Joint type drop-down menu to change the joint type, or use the collectors to change the bodies and origins/alignment points of the joint.

translational_joint_panel_select_joint_menu_options_mv

Translational Joint in MDL and XML Formats

The model containing the Translational Joint can be saved in MDL format from MotionView and exported in the MotionSolve XML format.

hmtoggle_plus1Translational Joint in MDL (Model Definition Language)

The Translational Joint can be of the following types:

1.Non-Compliant - Single and Pair
2.Compliant – Single and Pair

And these four types of entities can be added to the model using MDL Statements shown below:

Syntax:

*TransJoint(joint_name, "joint_label", body_1, body_2, origin, POINT|VECTOR, point|vector, [ALLOW_COMPLIANCE])

To understand the complete syntax of the MDL statement please refer to the *TransJoint() topic.

To specify the Initial Conditions of the joint, the MDL statements to be used are: *SetJointICFlag() and *SetJointIC().

Syntax:

*SetJointICFlag(joint_name, TRANS, true)

*SetJointIC(joint_name, TRANS, ic_disp, ic_vel)

Note - The *SetJointIC() is a common statement that can be used for all joints which allow specification of joint initial conditions.

To set the friction properties of the joint, the MDL statements to be used are: *SetJointFriction() and *SetJointFrictionLugre().

Syntax:

*SetJointFriction(varname, use_friction, mu_static, mu_dynamic, use_static, transition_vel, max_deformation, effect, preload_input, reaction_force_input, bending_moment_input, torsional_moment_input, f_preload, reaction_arm, initial_overlap, overlap_delta, rot_constraint, t_preload, pin_radius, friction_arm, bending_reaction_arm, ball_radius )

 

*SetJointFrictionLugre(varname, use_default, bristle_stiffness, damping_effects, viscous_effects )

Note - These two friction statements are common for all of the joints where friction can be applied, however a few of the fields might not be applicable to certain joints.

Syntax:

*TransJointPair(joint_name, "joint_label", body_1, body_2, origin, POINT|VECTOR, point|vector, [ALLOW_COMPLIANCE])

To understand the complete syntax of this MDL statement please refer to the *TransJointPair() topic.

To specify the Initial Conditions of the Pair Translational joint the MDL statements to be used are: *SetJointICFlag() and *SetJointIC().

Syntax for Asymmetric Translational Joint Pair:

*SetJointICFlag(joint_name,  , TRANS, true, true)

*SetJointIC(joint_name, ,TRANS, l_ic_disp, l_ic_vel, r_ic_disp, r_ic_vel)

Syntax for Symmetric Translational Joint Pair:

*SetJointICFlag(joint_name, LEFT|RIGHT,  TRANS, true)

*SetJointIC(joint_name, LEFT|RIGHT,  TRANS, ic_disp, ic_vel)

For a detailed description of the statements above, please refer to the *SetJointIC() topic located in the MotionView Reference Guide.

To set the friction properties of the joint pair, the MDL statements to be used are: *SetJointFriction() and *SetJointFrictionLugre().

Syntax for Symmetric Joint Pair:

*SetJointFriction(varname, LEFT|RIGHT, use_friction, mu_static, mu_dynamic, use_static, transition_vel, max_deformation, effect, preload_input, reaction_force_input, bending_moment_input, torsional_moment_input, f_preload, reaction_arm, initial_overlap, overlap_delta, rot_constraint, t_preload, pin_radius, friction_arm, bending_reaction_arm, ball_radius )

 

*SetJointFrictionLugre(varname, use_default_l, bristle_stiffness_l, damping_effects_l, viscous_effects_l,

                                     use_default_r, bristle_stiffness_r, damping_effects_r, viscous_effects_r)

Syntax for Asymmetric Joint Pair:

*SetJointFriction(varname, , use_friction_l, mu_static_l, mu_dynamic_l, use_static_l, transition_vel_l, max_deformation_l, effect_l, preload_input_l, reaction_force_input_l, bending_moment_input_l, torsional_moment_input_l, f_preload_l, reaction_arm_l, initial_overlap_l, overlap_delta_l, rot_constraint_l, t_preload_l, pin_radius_l, friction_arm_l, bending_reaction_arm_l, ball_radius_l

                           , use_friction_r, mu_static_r, mu_dynamic_r, use_static_r, transition_vel_r, max_deformation_r, effect_r, preload_input_r, reaction_force_input_r, bending_moment_input_r, torsional_moment_input_r, f_preload_r, reaction_arm_r, initial_overlap_r, overlap_delta_r, rot_constraint_r, t_preload_r, pin_radius_r, friction_arm_r, bending_reaction_arm_r, ball_radius_r )

Note - These syntax for the LuGre parameters statement for an symmetric joint pair is identical to its symmetric counterpart. MotionView will ignore the part of the statement that belongs to the dependent side of the joint and replicate it with the parent side parameters.

To learn how to create a complete model using MDL Statements please refer to tutorial MV-1060: Introduction to MDL.

hmtoggle_plus1Translational Joint in XML Format

The Translational 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 Translational Joint is defined using the statement – JointInitialVel_Trans:

<JointInitialVel_Trans

joint_id    = "integer"

iv          = "real"

/>

In case of the Translational Joint, the model statement will be as shown below:

<Constraint_Joint

id                  = "301001"

label               = "Singe Trans Joint"

type                = "TRANSLATIONAL"

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_Trans

joint_id            = "301001"

iv                  = "5."

/>

For a better understanding of the JointInitialVel_Trans XML statement, please refer to the MotionSolve Reference Guide Page for JointInitialVel_Trans.

Creating and Editing Translational Joints using Tcl

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:

hmtoggle_arrow1InterpretEntity

Syntax:

mdlmodel_handle InterpretEntity new_handle keyword varname label

Example:

mdlmodel_handle InterpretEntity joint_trans_handle TransJoint j_trans "\"Trans Joint\"" b_1 B_Ground p_ori "POINT" p_axis "ALLOW_COMPLIANCE";

hmtoggle_arrow1InterpretSet

*This command is not applicable for Translational 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 Translational 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.

Example Model

The example file below shows a Translational Joint connecting two bodies:

hmtoggle_plus1TranslationalJoints.mdl

*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 Translational Joint - Single

 *TransJoint( j_transjsingle, "Translational Joint Single", b_0, B_Ground, p_0, POINT, p_1.r )

//Example for a Translational Joint - Pair

 *TransJointPair( j_transjpairsym, "Translational Joint Pair Sym", b_1, B_Ground, p_1, VECTOR, V_Global_Y )

 *TransJointPair( j_transjpairAsym, "Translational 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_transjsingle, ROT, true )

//Example for SetJointIC - Single

 *SetJointIC( j_transjsingle, ROT, , 5 )

//Setting joint friction using SetJointFriction - Single

 *SetJointFriction( j_transjsingle,  true, 0.35, 0.26, ACTIVE_STATIC, 0.15, , STICTION_AND_SLIDING, PRELOAD, REACTION_FORCE, , , 1000, 25, , , , 1000, , , , 10 )

//Setting joint friction LuGre parameters using SetJointFrictionLugre - Single

 *SetJointFrictionLugre( j_transjsingle,               true, 100, 0.316, 0.0004 )

//Example for SetJointICFlag – Symmetric Pair

 *SetJointICFlag( j_transjpairsym,        LEFT, ROT, true )

//Example for SetJointIC - Symmetric Pair

 *SetJointIC( j_transjpairsym,        LEFT, ROT, 0, 10 )

//Setting joint friction using SetJointFriction - Symmetric Pair

 *SetJointFriction( j_transjpairsym, LEFT, true, 0.35, 0.26, ACTIVE_STATIC, 0.15, , STICTION_AND_SLIDING, NO_PRELOAD, REACTION_FORCE, BENDING_MOMENT, , 2000,25 , , , , 1000, 10, 15, 50 )

//Example for SetJointICFlag – Asymmetric Pair

 *SetJointICFlag( j_transjpairAsym,           , ROT, true, true )

//Example for SetJointIC - Asymmetric Pair

 *SetJointIC( j_transjpairAsym,  , ROT, , 5, , 10 )

//Setting joint friction using SetJointFriction - Asymmetric Pair

 *SetJointFriction( j_transjpairAsym,           , true, 0.35, 0.26, ACTIVE_STATIC, 0.15, , STICTION_ONLY, PRELOAD, REACTION_FORCE, , ,1000, 30, , , , 1000, , , , 10

                                                , true, 0.35, 0.26, ACTIVE_STATIC, 0.15, , STICTION_ONLY, PRELOAD, REACTION_FORCE, , ,1000, 30, , , , 1000, , , , 10 )

//Setting joint friction LuGre parameters using SetJointFrictionLugre - Pair

 *SetJointFrictionLugre( j_transjpairAsym,   false, 100, 0.316, 0.0004

                                                   , false, 100, 0.316, 0.0004 )

*EndMDL()

See Also:

Joints Panel

Adding and Removing Entities

*TransJoint() (MDL Model Statement)

*TransJointPair() (MDL Model Statement)

*SetJointIC() (MDL Model Statement)

Constraint_Joint (XML Command)

InterpretEntity (Tcl Command)

InterpretSet (Tcl Command)