JointUSP
Universal - spherical - prismatic joint aggregation (no constraints, no potential states)
Library
Modelica/Mechanics/MultiBody/Joints/Assemblies
Description
This component consists of a universal joint at frame_a, a prismaticjoint at frame_b and a spherical joint which is connected via rod1to the universal and via rod2 to the prismatic joint, see the defaultanimation in the following figure (the axes vectors are not part of thedefault animation):
This joint aggregation has no mass and no inertia andintroduces neither constraints nor potential state variables.It should be used in kinematic loops whenever possible sincethe non-linear system of equations introduced by this joint aggregationis solved analytically (i.e., a solution is always computed, if aunique solution exists).
The universal joint is defined in the following way:
- The rotation axis of revolute joint 1 is along parameter vector n1_a which is fixed in frame_a.
- The rotation axis of revolute joint 2 is perpendicular to axis 1 and to the line connecting the universal and the spherical joint (= rod 1).
The definition of axis 2 of the universal joint is performed accordingto the most often occurring case. In a future release, axis 2 mightbe explicitly definable via a parameter. However, the treatment is much morecomplicated and the number of operations is considerably higher,if axis 2 is not orthogonal to axis 1 and to the connecting rod.
Note, there is a singularity when axis 1 and the connecting rod are parallelto each other. Therefore, if possible n1_a should be selected in such a way that itis perpendicular to rRod1_ia in the initial configuration (i.e., thedistance to the singularity is as large as possible).
The rest of this joint aggregation is defined by the following parameters:
- The position of the spherical joint with respect to the universal joint is defined by vector rRod1_ia. This vector is directed from frame_a to the spherical joint and is resolved in frame_ia (it is most simple to select frame_ia such that it is parallel to frame_a in the reference or initial configuration).
- The position of the spherical joint with respect to the prismatic joint is defined by vector rRod2_ib. This vector is directed from the inner frame of the prismatic joint (frame_ib or prismatic.frame_a) to the spherical joint and is resolved in frame_ib (note, that frame_ib and frame_b are parallel to each other).
- The axis of translation of the prismatic joint is defined by axis vector n_b. It is fixed and resolved in frame_b.
- The two frames of the prismatic joint, i.e., frame_b and frame_ib, are parallel to each other. The distance between the origins of these two frames along axis n_b is equal to "prismatic.s(t) + s_offset", where "prismatic.s(t)" is a time varying variable and "s_offset" is a fixed, constant offset parameter.
- When specifying this joint aggregation with the definitions above, two different configurations are possible. Via parameter s_guess a guess value for prismatic.s(t0) at the initial time t0 is given. The configuration is selected that is closest to s_guess (|prismatic.s - s_guess| is minimal).
An additional frame_ia is present. It is fixed in the rodconnecting the universal and the spherical joint at theorigin of frame_a. The placement of frame_ia on the rodis implicitly defined by the universal joint (frame_a and frame_ia coincidewhen the angles of the two revolute joints of the universal joint are zero)and by parameter vector rRod1_ia, the position vectorfrom the origin of frame_a to the spherical joint, resolved in frame_ia.
An additional frame_ib is present. It is fixed in the rodconnecting the prismatic and the spherical joint at the side of the prismaticjoint that is connected to this rod (= rod2.frame_a = prismatic.frame_a).It is always parallel to frame_b.
An additional frame_im is present. It is fixed in the rodconnecting the prismatic and the spherical joint at the side of the sphericaljoint that is connected to this rod (= rod2.frame_b).It is always parallel to frame_b.
The easiest way to define the parameters of this joint is by moving theMultiBody system in a reference configuration where all framesof all components are parallel to each other (alternatively,at least frame_a and frame_ia of the JointUSP jointshould be parallel to each other when defining an instance of thiscomponent).
In the public interface of the JointUSP joint, the following(final) parameters are provided:
parameter Real rod1Length(unit="m") "Length of rod 1"; parameter Real eRod1_ia[3] "Unit vector along rod 1, resolved in frame_ia"; parameter Real e2_ia [3] "Unit vector along axis 2, resolved in frame_ia";
This allows a more convenient definition of data which is related to rod 1.For example, if a box shall be connected at frame_ia directing fromthe origin of frame_a to the middle of rod 1, this might be defined as:
Modelica.Mechanics.MultiBody.Joints.Assemblies.JointUSP jointUSP(rRod1_ia={1.2, 1, 0.2}); Modelica.Mechanics.MultiBody.Visualizers.FixedShape shape(shapeType = "box", lengthDirection = jointUSP.eRod1_ia, widthDirection = jointUSP.e2_ia, length = jointUSP.rod1Length/2, width = jointUSP.rod1Length/10); equation connect(jointUSP.frame_ia, shape.frame_a);
Parameters
Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|
mo_animation | animation | = true, if animation shall be enabled | Scalar | true |
mo_showUniversalAxes | showUniversalAxes | = true, if universal joint shall be visualized with two cylinders, otherwise with a sphere (provided animation=true) | Scalar | true |
mo_n1_a | n1_a | Axis 1 of universal joint fixed and resolved in frame_a (axis 2 is orthogonal to axis 1 and to rod 1) | Vector of size 3 | |
mo_n_b | n_b | Axis of prismatic joint fixed and resolved in frame_b | Vector of size 3 | |
mo_rRod1_ia | rRod1_ia | Vector from origin of frame_a to spherical joint, resolved in frame_ia | Vector of size 3 | |
mo_rRod2_ib | rRod2_ib | Vector from origin of frame_ib to spherical joint, resolved in frame_ib (frame_ib is parallel to frame_b) | Vector of size 3 | |
mo_s_offset | s_offset | Relative distance offset of prismatic joint (distance between the prismatic joint frames = s(t) + s_offset) | Scalar | |
mo_s_guess | s_guess | Select the configuration such that at initial time |s(t0)-s_guess| is minimal | Scalar | |
mo_eRod1_ia | eRod1_ia | Unit vector from origin of frame_a to origin of spherical joint, resolved in frame_ia | Vector of size 3 | |
mo_e2_ia | e2_ia | Unit vector in direction of axis 2 of universal joint, resolved in frame_ia | Vector of size 3 | |
mo_rod1Length | rod1Length | Length of rod 1 (= distance between universal and spherical joint) | Scalar |
Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|
mo_sphereDiameter | sphereDiameter | Diameter of the spheres representing the universal and the spherical joint | Scalar | |
mo_sphereColor | sphereColor | Color of the spheres representing the universal and the spherical joint | Vector of size 3 | |
mo_rod1Diameter | rod1Diameter | Diameter of rod 1 connecting the universal and the spherical joint | Scalar | |
mo_rod1Color | rod1Color | Color of rod 1 connecting the universal and the spherical joint | Vector of size 3 | |
mo_rod2Diameter | rod2Diameter | Diameter of rod 2 connecting the prismatic and the spherical joint | Scalar | |
mo_rod2Color | rod2Color | Color of rod 2 connecting the prismatic and the spherical joint | Vector of size 3 | |
mo_boxWidthDirection | boxWidthDirection | Vector in width direction of prismatic joint, resolved in frame_b | Vector of size 3 | |
mo_boxWidth | boxWidth | Width of prismatic joint box | Scalar | |
mo_boxHeight | boxHeight | Height of prismatic joint box | Scalar | |
mo_boxColor | boxColor | Color of prismatic joint box | Vector of size 3 | |
mo_specularCoefficient | specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) | Scalar | |
mo_cylinderLength | cylinderLength | Length of cylinders representing the two universal joint axes | Scalar | |
mo_cylinderDiameter | cylinderDiameter | Diameter of cylinders representing the two universal joint axes | Scalar | |
mo_cylinderColor | cylinderColor | Color of cylinders representing the two universal joint axes | Vector of size 3 |
Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|
mo_checkTotalPower | checkTotalPower | = true, if total power flowing into this component shall be determined (must be zero) | Scalar | true |
Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|
mo__nmodifiers | Number of Modifiers | Specifies the number of modifiers | Number | |
mo__modifiers | Modifiers | Add new modifier | Structure | |
mo__modifiers/varname | Variable name | Cell of strings | 'f_rod' | |
mo__modifiers/attribute | Attribute | Cell of strings | 'start' | |
mo__modifiers/value | Value |
Ports
Name | Type | Description | IO Type | Number |
---|---|---|---|---|
frame_a | implicit | Coordinate system fixed to the component with one cut-force and cut-torque | input | 1 |
frame_b | implicit | Coordinate system fixed to the component with one cut-force and cut-torque | output | 1 |
frame_ia | implicit | Coordinate system at origin of frame_a fixed at connecting rod of universal and spherical joint | input | 2 |
frame_ib | implicit | Coordinate system at origin of frame_b fixed at connecting rod of spherical and prismatic joint | output | 2 |
frame_im | implicit | Coordinate system at origin of spherical joint fixed at connecting rod of spherical and prismatic joint | output | 3 |
axis | implicit | 1-dim. translational flange that drives the prismatic joint | input | 3 |
bearing | implicit | 1-dim. translational flange of the drive bearing of the prismatic joint | output | 4 |