Application module: Kinematic structure ISO/TS 10303-1797:2018-11(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM type definitions
   4.3 ARM entity definitions
   4.4 ARM subtype constraint definitions
   4.5 ARM function definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Change history
Bibliography
Index

4 Information requirements

This clause specifies the information requirements for the Kinematic structure application module. The information requirements are specified as the Application Reference Model (ARM) of this application module.

NOTE 1  A graphical representation of the information requirements is given in Annex C.

NOTE 2  The mapping specification is specified in 5.1. It shows how the information requirements are met by using common resources and constructs defined or imported in the MIM schema of this application module.

This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following begins the Kinematic_structure_arm schema and identifies the necessary external references.

EXPRESS specification:

*)
SCHEMA Kinematic_structure_arm;
(*

4.1 Required AM ARMs

The following EXPRESS interface statements specify the elements imported from the ARMs of other application modules.

EXPRESS specification:

*)
USE FROM Kinematic_topology_arm;    --  ISO/TS 10303-1799

USE FROM Basic_curve_arm;    --  ISO/TS 10303-1651

USE FROM Assembly_structure_arm;    --  ISO/TS 10303-1026

USE FROM Geometric_model_relationship_arm;    --  ISO/TS 10303-1403

USE FROM Composite_surface_arm;    --  ISO/TS 10303-1525

USE FROM Shape_property_assignment_arm;    --  ISO/TS 10303-1032

REFERENCE FROM Kinematic_topology_arm    --  ISO/TS 10303-1799
  (get_kinematic_joints_from_oriented_joints,
   get_kinematic_joints_from_kinematic_loops);

REFERENCE FROM Foundation_representation_arm    --  ISO/TS 10303-1006
  (using_representations);
(*

NOTE 1   The schemas referenced above are specified in the following part of ISO 10303:

Kinematic_topology_arm ISO/TS 10303-1799
Basic_curve_arm ISO/TS 10303-1651
Assembly_structure_arm ISO/TS 10303-1026
Geometric_model_relationship_arm ISO/TS 10303-1403
Composite_surface_arm ISO/TS 10303-1525
Shape_property_assignment_arm ISO/TS 10303-1032
Kinematic_topology_arm ISO/TS 10303-1799
Foundation_representation_arm ISO/TS 10303-1006

NOTE 2   See Annex C, Figures C.1, C.2, C.3, C.4, C.5, C.6, C.7, C.8and C.9 for a graphical representation of this schema.

4.2 ARM type definitions

This subclause specifies the ARM types for this application module. The ARM types and definitions are specified below.

4.2.1 actuated_direction   EXPRESS-G

The actuated_direction type defines the actuated direction if any for a degree of freedom of an Actuated_kinematic_pair.

EXPRESS specification:

*)
TYPE actuated_direction = ENUMERATION OF
   (bidirectional,
    positive_only,
    negative_only,
    not_actuated);
END_TYPE;
(*

Enumerated item definitions:

bidirectional: an indication that the affected degree of freedom is actuated in both directions.

positive_only: an indication that the affected degree of freedom is actuated in positive directions only.

negative_only: an indication that the affected degree of freedom is actuated in negative directions only.

not_actuated: an indication that the affected degree of freedom is not actuated.

4.2.2 kinematic_link_representation_items   EXPRESS-G

The kinematic_link_representation_items type allows for the designation of the data types Curve, Cartesian_point, rigid_placement, and Surface.

EXPRESS specification:

*)
TYPE kinematic_link_representation_items = SELECT
   (Curve,
    Cartesian_point,
    rigid_placement,
    Surface);
END_TYPE;
(*

4.2.3 ks_additional_application_domain_enumeration   EXPRESS-G

The ks_additional_application_domain_enumeration provides predefined identifiers for the additional application domains of Product_view_definitions.

EXPRESS specification:

*)
TYPE ks_additional_application_domain_enumeration = ENUMERATION BASED_ON additional_application_domain_enumeration WITH
   (kinematic_mechanism);
END_TYPE;
(*

Enumerated item definitions:

kinematic_mechanism: the application domain is kinematic mechanism.

4.2.4 ks_geometric_representation_select   EXPRESS-G

The ks_geometric_representation_select type is an extension of the geometric_representation_select type. It adds the data type Kinematic_link_representation to the list of alternate data types.

NOTE  The list of entity data types may be extended in application modules that use the constructs of this module.

EXPRESS specification:

*)
TYPE ks_geometric_representation_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON geometric_representation_select WITH
   (Kinematic_link_representation);
END_TYPE;
(*

4.2.5 ks_property_assignment_select   EXPRESS-G

The ks_property_assignment_select type is an extension of the property_assignment_select type. It adds the data type Assembly_component_relationship to the list of alternate data types.

EXPRESS specification:

*)
TYPE ks_property_assignment_select = SELECT BASED_ON property_assignment_select WITH
   (Assembly_component_relationship);
END_TYPE;
(*

4.2.6 rigid_placement   EXPRESS-G

The rigid_placement type allows for the designation of the data types Axis_placement_3d, and Su_parameters.

EXPRESS specification:

*)
TYPE rigid_placement = SELECT
   (Axis_placement_3d,
    Su_parameters);
END_TYPE;
(*

4.3 ARM entity definitions

This subclause specifies the ARM entities for this module. Each ARM application entity is an atomic element that embodies a unique application concept and contains attributes specifying the data elements of the entity. The ARM entities and definitions are specified below.

4.3.1 Actuated_kinematic_pair   EXPRESS-GMapping table

An Actuated_kinematic_pair is a type of Kinematic_pair that is actuated in one or more degrees of freedom.

NOTE    For a backward kinematic analysis, the actuated pairs are used to achieve a prescribed path or a prescribed position. For a forward kinematic analysis, pair values may be prescribed only for actuated pairs.

EXPRESS specification:

*)
ENTITY Actuated_kinematic_pair
  SUBTYPE OF (Kinematic_pair);
  t_x : OPTIONAL actuated_direction;
  t_y : OPTIONAL actuated_direction;
  t_z : OPTIONAL actuated_direction;
  r_x : OPTIONAL actuated_direction;
  r_y : OPTIONAL actuated_direction;
  r_z : OPTIONAL actuated_direction;
END_ENTITY;
(*

Attribute definitions:

t_x: the actuated_direction along the x-axis. The value of this attribute need not be specified.

t_y: the actuated_direction along the y-axis. The value of this attribute need not be specified.

t_z: the actuated_direction along the z-axis. The value of this attribute need not be specified.

r_x: the actuated_direction around the x-axis. The value of this attribute need not be specified.

r_y: the actuated_direction around the y-axis. The value of this attribute need not be specified.

r_z: the actuated_direction around the z-axis. The value of this attribute need not be specified.

4.3.2 Context_dependent_kinematic_link_representation   EXPRESS-GMapping table

A Context_dependent_kinematic_link_representation is the association of a Kinematic_link_representation_association with a Product_definition_relationship_kinematics. The Kinematic_link_representation_association identifies the shape of a Kinematic_link_representation as it plays the role of the related_view in the Product_occurrence_definition_relationship.

EXPRESS specification:

*)
ENTITY Context_dependent_kinematic_link_representation;
  representation_relation : Kinematic_link_representation_association;
  represented_product_relation : Product_definition_relationship_kinematics;
END_ENTITY;
(*

Attribute definitions:

representation_relation: a Kinematic_link_representation_association that is associated with the Product_definition_relationship_kinematics.

represented_product_relation: a Product_definition_relationship_kinematics. that identifies the shape of the related Kinematic_link_representation_association in the context of a Product_occurrence_definition_relationship.

4.3.3 Cylindrical_pair   EXPRESS-GMapping table

A Cylindrical_pair is a type of Low_order_kinematic_pair. A Cylindrical_pair constrains the motion between two adjacent links to a translation along a common axis and a rotation about it.

NOTE    See Figure 1.



Figure 1 —  Example of a joint representing a Cylindrical pair

Figure 1 —  Example of a joint representing a Cylindrical pair

To measure the displacement and the angle of rotation, a frame is defined on each of the links such that the z-axes coincide and the positive directions agree. The distance of translation is defined as the distance required to translate the xy-plane of the first pair frame in the positive direction of the common z-axis until it coincides with the xy-plane of the second pair frame. The angle of rotation is defined as the angle required to rotate the x-axis of the first pair frame in the positive direction around the common z-axis until its direction coincides with the direction of the x-axis of the second pair frame.

EXPRESS specification:

*)
ENTITY Cylindrical_pair
  SUBTYPE OF (Low_order_kinematic_pair);
DERIVE
  SELF\Low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_z : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY;
(*

Attribute definitions:

t_x: translation along the x-axis is constraint.

t_y: translation along the y-axis is constraint.

t_z: translation along the z-axis is not constraint.

r_x: rotation around the x-axis is constraint.

r_y: rotation around the y-axis is constraint.

r_z: rotation around the z-axis is not constraint.

4.3.4 Cylindrical_pair_with_range   EXPRESS-GMapping table

A Cylindrical_pair_with_range is a type of Cylindrical_pair. A Cylindrical_pair_with_range specifies the lower bound and the upper bound of the parameter range for the Cylindrical_pair.

EXPRESS specification:

*)
ENTITY Cylindrical_pair_with_range
  SUBTYPE OF (Cylindrical_pair);
  lower_limit_actual_translation : OPTIONAL length_measure;
  upper_limit_actual_translation : OPTIONAL length_measure;
  lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
  upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_actual_translation) OR NOT EXISTS(upper_limit_actual_translation)) XOR (lower_limit_actual_translation < upper_limit_actual_translation);
  WR2: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
END_ENTITY;
(*

Attribute definitions:

lower_limit_actual_translation: the minimum value of translation for the Cylindrical_pair. The value of this attribute need not be specified.

upper_limit_actual_translation: the maximum value of translation for the Cylindrical_pair. The value of this attribute need not be specified.

lower_limit_actual_rotation: the minimum value of rotation for the Cylindrical_pair. The value of this attribute need not be specified.

upper_limit_actual_rotation: the maximum value of rotation for the Cylindrical_pair. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of translation of the Cylindrical_pair shall be positive when both bounds are not given as unlimited.

WR2: The range of rotation of the Cylindrical_pair shall be positive when both bounds are not given as unlimited.

4.3.5 Fully_constrained_pair   EXPRESS-GMapping table

A Fully_constrained_pair is a type of Low_order_kinematic_pair. A Fully_constrained_pair prevents any relative motion between two adjacent links. The two pair frames are always forced to coincide.

NOTE 1   The Fully_constrained_pair may be helpful in early design stages or for kinematic analysis systems, because it allows to fix two links each to the other without changing the topological structure.

NOTE 2   The concepts of pair value and pair range are not applicable to a Fully_constrained_pair.

EXPRESS specification:

*)
ENTITY Fully_constrained_pair
  SUBTYPE OF (Low_order_kinematic_pair);
DERIVE
  SELF\Low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_z : BOOLEAN := FALSE;
END_ENTITY;
(*

Attribute definitions:

t_x: translation along the x-axis is constraint.

t_y: translation along the y-axis is constraint.

t_z: translation along the z-axis is constraint.

r_x: rotation around the x-axis is constraint.

r_y: rotation around the y-axis is constraint.

r_z: rotation around the z-axis is constraint.

4.3.6 Gear_pair   EXPRESS-GMapping table

A Gear_pair is a type of Low_order_kinematic_pair_with_motion_coupling. A Gear_pair constrains the motion between two adjacent links to a rolling (and potentially sliding) motion of the second link along the first link.

To measure the motion of the second link with respect to the first link, a frame is defined on each of the links such that the origin lies in the center of the rolling circle of the respective link.

NOTE 1   See Figure 2, where different values of the constants "bevel", "helical_angle", and "gear_ratio" are shown. The lower gear always represents the first link; the upper gear is the second link.



Figure 2 —  Examples of gear pairs in different situations

Figure 2 —  Examples of gear pairs in different situations

The direction of the z-axis is perpendicular to the plane of the circle. In a reference situation (with both rotation values being zero) the x-axis of the first link points from the origin towards the point of contact with the second link, while on the second link the x-axis points away from the point of contact.

Motion is measured in terms of the rotation of the contact point about the z-axis of the first link. The motion of the second link results from an analysis of the rolling process. At any instance the motion of the second link may be considered as a rotation of the second gear axis about the first gear axis while maintaining the distance (sum of the radii), the bevel, and the helical angle plus a rotation of the second gear about its own axis according to:

formula_actual_rotation_2.gif

Thus absolute bevel values between 0 and π/2 represent external gears while absolute bevel values between π/2 and π represent internal gears.

The angle between the two x-axis directions is given by the bevel according to:

vector_xp_xq_cos_bevel.gif

with bevel ∈ ]-π,π],

where in case of cos(bevel) = 0, the sign of the bevel is defined according to:

vector_yp_xp_xq_sign_bevel.gif

The angle between the two y-axis directions is given by the helical angle according to:

vector_yp_yq_cos_helical_angle.gif

with helical_angle ∈ ]-π,π],

where in case of cos(helical_angle) = 0, the sign of the helical angle is defined according to:

vector_xq_yp_yq_sign_helical_angle.gif

NOTE 2   In some cases the gear ratio depends on the radii of the rolling circles and also on the characteristics of the gear toothing such as in worm gears. For this reason the gear ratio is defined and not derived from the ratio of the two radii. Hence, the two radii are used to determine the geometrical arrangement of the two gears relative to each other in conjunction with bevel and helical angle, while the gear ratio determines the ratio of the second gear motion with respect to the rotation of the contact point about the first gear axis.

EXAMPLE    One way to construct the geometrical arrangement of the second gear relative to the first one is as follows: an auxiliary frame is introduced at the point of contact with its axes xa, ya, and za all parallel to the respective axes of the first link frame. Now the auxiliary frame is rotated by the angle bevel about its ya-axis followed by a rotation by the helical angle about the (previously rotated) xa-axis. Now the xa-ya-plane represents the plane in which the second gear lies.

EXPRESS specification:

*)
ENTITY Gear_pair
  SUBTYPE OF (Low_order_kinematic_pair_with_motion_coupling);
  radius_first_link : length_measure;
  radius_second_link : length_measure;
  bevel : plane_angle_measure;
  helical_angle : plane_angle_measure;
  gear_ratio : REAL;
WHERE
  WR1: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

radius_first_link: the radius of the rolling circle of the first link.

radius_second_link: the radius of the rolling circle of the second link.

bevel: the angle between the two x-axes.

helical_angle: the angle between the two y-axes.

gear_ratio: the gear ratio of the pair.

Formal propositions:

WR1: All Pair_representation_relationships refering to a Gear_pair shall reference a Rigid_link_representation via rep_1.

4.3.7 Gear_pair_with_range   EXPRESS-GMapping table

A Gear_pair_with_range is a type of Gear_pair. A Gear_pair_with_range specifies the lower bound and the upper bound of the parameter range of the Gear_pair.

EXPRESS specification:

*)
ENTITY Gear_pair_with_range
  SUBTYPE OF (Gear_pair);
  lower_limit_actual_rotation_1 : OPTIONAL plane_angle_measure;
  upper_limit_actual_rotation_1 : OPTIONAL plane_angle_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_actual_rotation_1) OR NOT EXISTS(upper_limit_actual_rotation_1)) XOR (lower_limit_actual_rotation_1 < upper_limit_actual_rotation_1);
END_ENTITY;
(*

Attribute definitions:

lower_limit_actual_rotation_1: the minimum value of the pair parameter of the first link. The value of this attribute need not be specified.

upper_limit_actual_rotation_1: the maximum value of the pair parameter of the first link. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of rotation of the Gear_pair shall be positive when both bounds are not given as unlimited.

4.3.8 High_order_kinematic_pair   EXPRESS-GMapping table

A High_order_kinematic_pair is a type of Kinematic_pair that requires references to one or more surfaces or curves in order to be defined kinematically. Each High_order_kinematic_pair is either a Linear_flexible_and_planar_curve_pair, a Point_on_surface_pair, a Point_on_planar_curve_pair, a Planar_curve_pair, or a Surface_pair.

EXPRESS specification:

*)
ENTITY High_order_kinematic_pair
  ABSTRACT SUPERTYPE OF (ONEOF (Linear_flexible_and_planar_curve_pair,
                                Point_on_surface_pair,
                                Point_on_planar_curve_pair,
                                Planar_curve_pair,
                                Surface_pair))
  SUBTYPE OF (Kinematic_pair);
WHERE
  WR1: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_2 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Formal propositions:

WR1: All Pair_representation_relationships refering to a High_order_kinematic_pair shall reference a Rigid_link_representation via rep_2.

4.3.9 Homokinetic_pair   EXPRESS-GMapping table

A Homokinetic_pair is a type of Universal_pair, where the rotation of input axis and output axis are uniform.

EXPRESS specification:

*)
ENTITY Homokinetic_pair
  SUBTYPE OF (Universal_pair);
WHERE
  WR1: NOT EXISTS(SELF.input_skew_angle);
END_ENTITY;
(*

Formal propositions:

WR1: The input_skew_angle shall be omitted.

4.3.10 Kinematic_link_representation   EXPRESS-GMapping table

A Kinematic_link_representation is a type of Representation. A Kinematic_link_representation specifies the geometric aspects of a Kinematic_link. The context of the representation is established by the represented_link attribute. Each Kinematic_link_representation is either a Linear_flexible_link_representation or a Rigid_link_representation.

EXPRESS specification:

*)
ENTITY Kinematic_link_representation
  ABSTRACT SUPERTYPE OF (ONEOF (Linear_flexible_link_representation,
                                Rigid_link_representation))
  SUBTYPE OF (Representation);
  SELF\Representation.context_of_items : Geometric_coordinate_space;
  SELF\Representation.items : SET[1:?] OF kinematic_link_representation_items;
  represented_link : Kinematic_link;
INVERSE
  associated_shape_representation : SET[0:1] OF Kinematic_link_representation_association FOR rep_1;
END_ENTITY;
(*

Attribute definitions:

context_of_items: the Geometric_coordinate_space providing the context for the items.

items: an inherited attribute that shall be of type kinematic_link_representation_items. There shall exist one or more kinematic_link_representation_items for the Kinematic_link_representation.

represented_link: the link frame of the related Kinematic_link.

associated_shape_representation: specifies an inverse relationship that specifies that the existence of the Kinematic_link_representation is dependent on the existence of the Kinematic_link_representation_association that specifies the Kinematic_link_representation as its rep_1. There shall exist zero or one Kinematic_link_representation_association for the Kinematic_link_representation.

4.3.11 Kinematic_link_representation_association   EXPRESS-GMapping table

A Kinematic_link_representation_association is a type of Representation_relationship that associates a Representation with a Kinematic_link_representation.

NOTE    A Kinematic_link_representation_association is used to define the shape of a link by associating a Geometric_model to the corresponding Kinematic_link_representation.

EXPRESS specification:

*)
ENTITY Kinematic_link_representation_association
  SUBTYPE OF (Representation_relationship);
  SELF\Representation_relationship.rep_1 : Kinematic_link_representation;
  SELF\Representation_relationship.rep_2 : Geometric_model;
WHERE
  WR1: (SELF\Representation_relationship.rep_2.context_of_items :=: SELF\Representation_relationship.rep_1.context_of_items) OR ('CONTEXTUAL_SHAPE_POSITIONING_ARM.GEOMETRIC_MODEL_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF));
END_ENTITY;
(*

Attribute definitions:

rep_1: the Kinematic_link_representation with which rep_2 is associated.

rep_2: the Geometric_model with which rep_1 is associated.

Formal propositions:

WR1: The context_of_items of rep_2 shall be identical to the link frame of the Kinematic_link_representation with which rep_2 is associated.

4.3.12 Kinematic_pair   EXPRESS-GMapping table

A Kinematic_pair is a type of Detailed_geometric_model_element, that defines the kinematic constraints between two adjacent links coinciding at a joint. Each Kinematic_pair is either a High_order_kinematic_pair, a Low_order_kinematic_pair_with_motion_coupling, a Low_order_kinematic_pair, and/or additionally Actuated_kinematic_pair.

EXPRESS specification:

*)
ENTITY Kinematic_pair
  ABSTRACT SUPERTYPE OF (ONEOF (High_order_kinematic_pair,
                                Low_order_kinematic_pair_with_motion_coupling,
                                Low_order_kinematic_pair)
                        ANDOR Actuated_kinematic_pair)
  SUBTYPE OF (Detailed_geometric_model_element);
  joint : Kinematic_joint;
  transform_item_1 : rigid_placement;
  transform_item_2 : rigid_placement;
DERIVE
  associated_link_representations_1 : SET[1:?] OF Kinematic_link_representation := sort_link_associations(link_representation_associations, TRUE);
  associated_link_representations_2 : SET[1:?] OF Kinematic_link_representation := sort_link_associations(link_representation_associations, FALSE);
INVERSE
  link_representation_associations : SET[1:?] OF Pair_representation_relationship FOR transformation_operator;
END_ENTITY;
(*

Attribute definitions:

joint: the joint whose motion is constrained by the Kinematic_pair.

transform_item_1: the placement of the pair frame on the first link in the context of the first link, i.e., its link frame.

transform_item_2: the placement of the pair frame on the second link in the context of the second link, i.e., its link frame.

associated_link_representations_1: identifies the first Kinematic_link_representation that corresponds to the edge_start of the referenced Kinematic_joint

associated_link_representations_2: identifies the second Kinematic_link_representation that corresponds to the edge_end of the referenced Kinematic_joint.

link_representation_associations: the inverse references of Kinematic_pair by Pair_representation_relationship. There shall be at least one reference.

4.3.13 Kinematic_property_mechanism_representation   EXPRESS-GMapping table

A Kinematic_property_mechanism_representation is a type of Kinematic_property_definition_representation that relates a Mechanism_representation to a Product_definition_kinematics together with the identification of a Kinematic_link_representation as the base.

EXPRESS specification:

*)
ENTITY Kinematic_property_mechanism_representation
  SUBTYPE OF (Kinematic_property_definition_representation);
  SELF\Property_definition_representation.used_representation : Mechanism_representation;
  base : Kinematic_link_representation;
WHERE
  WR1: SIZEOF( QUERY( i <* used_representation.items | (base :=: i\Representation_relationship.rep_1) OR (base :=: i\Representation_relationship.rep_2))) > 0;
END_ENTITY;
(*

Attribute definitions:

used_representation: an inherited attribute that shall be of type Mechanism_representation.

base: a Kinematic_link_representation that plays the role of a base for the Kinematic_property_mechanism_representation.

Formal propositions:

WR1: The base shall be used by the Mechanism_representation.

4.3.14 Linear_flexible_and_pinion_pair   EXPRESS-GMapping table

A Linear_flexible_and_pinion_pair is a type of Low_order_kinematic_pair_with_motion_coupling that describes a linear flexible link that moves around a rolling pinion where the rotation axis of the pinion is perpendicular to the direction of the linear flexible link.

EXPRESS specification:

*)
ENTITY Linear_flexible_and_pinion_pair
  SUBTYPE OF (Low_order_kinematic_pair_with_motion_coupling);
  pinion_radius : length_measure;
WHERE
  WR1: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.LINEAR_FLEXIBLE_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

pinion_radius: the radius of the rolling circle of the pinion.

Formal propositions:

WR1: All Pair_representation_relationships refering to a Linear_flexible_and_pinion_pair shall reference a Linear_flexible_link_representation via rep_1.

4.3.15 Linear_flexible_and_planar_curve_pair   EXPRESS-GMapping table

A Linear_flexible_and_planar_curve_pair is a type of High_order_kinematic_pair that describes a linear flexible link that moves around a rotating curve where the rotation axis of the curve is perpendicular to the direction of the linear flexible link and the curve.

EXPRESS specification:

*)
ENTITY Linear_flexible_and_planar_curve_pair
  SUBTYPE OF (High_order_kinematic_pair);
  pair_curve : Curve;
  orientation : BOOLEAN;
WHERE
  WR1: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_1 | NOT(pair_curve IN r.items))) = 0;
  WR2: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.LINEAR_FLEXIBLE_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

pair_curve: the planar curve on the first link of the pair along which the second linear flexible link is sliding.

orientation: a flag indicating whether the x-axis-directions agree.

Formal propositions:

WR1: The curve referenced by pair_curve shall be a member of associated_link_representations_1.

WR2: All Pair_representation_relationships refering to a Linear_flexible_and_planar_curve_pair shall reference a Linear_flexible_link_representation via rep_1.

4.3.16 Linear_flexible_link_representation   EXPRESS-GMapping table

A Linear_flexible_link_representation is a type of Kinematic_link_representation.

EXPRESS specification:

*)
ENTITY Linear_flexible_link_representation
  SUBTYPE OF (Kinematic_link_representation);
END_ENTITY;
(*

4.3.17 Low_order_kinematic_pair   EXPRESS-GMapping table

A Low_order_kinematic_pair is a type of Kinematic_pair whose motion is constraint by simple translation or rotational parameters. Whenever possible one of the specific subtypes Revolute_pair, Cylindrical_pair, Spherical_pair, Spherical_pair_with_pin, Planar_pair, Unconstrained_pair, Fully_constrained_pair, Prismatic_pair or Universal_pair shall be used. As needed translation and rotation axes hs to be replaced to achieve this.

EXPRESS specification:

*)
ENTITY Low_order_kinematic_pair
  SUPERTYPE OF (ONEOF (Revolute_pair,
                       Cylindrical_pair,
                       Spherical_pair,
                       Spherical_pair_with_pin,
                       Planar_pair,
                       Unconstrained_pair,
                       Fully_constrained_pair,
                       Prismatic_pair,
                       Universal_pair))
  SUBTYPE OF (Kinematic_pair);
  t_x : BOOLEAN;
  t_y : BOOLEAN;
  t_z : BOOLEAN;
  r_x : BOOLEAN;
  r_y : BOOLEAN;
  r_z : BOOLEAN;
WHERE
  WR1: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
  WR2: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_2 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

t_x: translation along the x-axis; a TRUE value indicates that it is not constraint.

t_y: translation along the y-axis; a TRUE value indicates that it is not constraint.

t_z: translation along the z-axis; a TRUE value indicates that it is not constraint.

r_x: rotation around the x-axis; a TRUE value indicates that it is not constraint.

r_y: rotation around the y-axis; a TRUE value indicates that it is not constraint.

r_z: rotation around the z-axis; a TRUE value indicates that it is not constraint.

Formal propositions:

WR1: All Pair_representation_relationships refering to a Low_order_kinematic_pair shall reference a Rigid_link_representation via rep_1.

WR2: All Pair_representation_relationships refering to a Low_order_kinematic_pair shall reference a Rigid_link_representation via rep_2.

4.3.18 Low_order_kinematic_pair_with_motion_coupling   EXPRESS-GMapping table

A Low_order_kinematic_pair_with_motion_coupling is a type of Kinematic_pair. Each Low_order_kinematic_pair_with_motion_coupling is either a Gear_pair, a Linear_flexible_and_pinion_pair, a Rack_and_pinion_pair, or a Screw_pair.

EXPRESS specification:

*)
ENTITY Low_order_kinematic_pair_with_motion_coupling
  ABSTRACT SUPERTYPE OF (ONEOF (Gear_pair,
                                Linear_flexible_and_pinion_pair,
                                Rack_and_pinion_pair,
                                Screw_pair))
  SUBTYPE OF (Kinematic_pair);
WHERE
  WR1: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_2 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Formal propositions:

WR1: All Pair_representation_relationships refering to a Low_order_kinematic_pair_with_motion_coupling shall reference a Rigid_link_representation via rep_2.

4.3.19 Mechanism_representation   EXPRESS-GMapping table

A Mechanism_representation is a type of Representation that specifies the capabilities of relative motion of its links under the constraints imposed by its joints. A Mechanism_representation represents either an Kinematic_topology_directed_structure, a Kinematic_topology_network_structure or a Kinematic_topology_structure. For each Kinematic_link a corresponding Kinematic_link_representation shall be provided. For each Kinematic_joint a corresponding Kinematic_pair shall be provided. The association between these objects is estalished by Pair_representation_relationships that are the items of a Mechanism_representation.

EXPRESS specification:

*)
ENTITY Mechanism_representation
  SUBTYPE OF (Representation);
  SELF\Representation.context_of_items : Geometric_coordinate_space;
  SELF\Representation.items : SET[1:?] OF Pair_representation_relationship;
  represented_topology : kinematic_topology_representation_select;
DERIVE
  represented_joints : SET[1:?] OF Kinematic_joint := collect_joints(items);
WHERE
  WR1: (('KINEMATIC_TOPOLOGY_ARM.KINEMATIC_TOPOLOGY_STRUCTURE' IN TYPEOF(represented_topology)) AND (represented_joints :=: represented_topology.items)) OR (('KINEMATIC_TOPOLOGY_ARM.KINEMATIC_TOPOLOGY_DIRECTED_STRUCTURE' IN TYPEOF(represented_topology)) AND (represented_joints :=: get_kinematic_joints_from_oriented_joints(represented_topology.items))) OR (('KINEMATIC_TOPOLOGY_ARM.KINEMATIC_TOPOLOGY_NETWORK_STRUCTURE' IN TYPEOF(represented_topology)) AND (represented_joints :=: get_kinematic_joints_from_kinematic_loops(represented_topology.items)));
END_ENTITY;
(*

Attribute definitions:

context_of_items: an inherited attribute that shall be of type Geometric_coordinate_space.

items: an inherited attribute that shall be of type Pair_representation_relationship. There shall exist at least one Pair_representation_relationship for the Mechanism_representation.

represented_topology: the represented kinematic_topology_representation_select.

represented_joints: the represented Kinematic_joints.

Formal propositions:

WR1: The Mechanism_representation shall provide exactly one pair of Pair_representation_relationship and Kinematic_pair for each Kinematic_joint of the represented_topology.

4.3.20 Pair_representation_relationship   EXPRESS-GMapping table

A Pair_representation_relationship is a type of Detailed_geometric_model_element and a type of Geometric_model_relationship. It provides the relationship between two Kinematic_link_representations and a Kinematic_pair in such a way, that they match with the underlying Kinematic_links of a Kinematic_joint.

EXPRESS specification:

*)
ENTITY Pair_representation_relationship
  SUBTYPE OF (Detailed_geometric_model_element, Geometric_model_relationship);
  SELF\Representation_relationship.rep_1 : Kinematic_link_representation;
  SELF\Representation_relationship.rep_2 : Kinematic_link_representation;
  transformation_operator : Kinematic_pair;
WHERE
  WR1: transformation_operator.transform_item_1 IN rep_1.items;
  WR2: transformation_operator.transform_item_2 IN rep_2.items;
  WR3: rep_1\kinematic_link_representation.represented_link = transformation_operator\kinematic_pair.joint.edge_start;
  WR4: rep_2\kinematic_link_representation.represented_link = transformation_operator\kinematic_pair.joint.edge_end;
END_ENTITY;
(*

Attribute definitions:

rep_1: an inherited attribute shall be of type Kinematic_link_representation.

rep_2: an inherited attribute shall be of type Rigid_link_representation.

transformation_operator: an inherited attribute shall be of type Kinematic_pair.

Formal propositions:

WR1: The rigid_placement referenced by the chain transformation_operator and transform_item_1 shall be an element in the items of rep_1.

WR2: The rigid_placement referenced by the chain transformation_operator and transform_item_2 shall be an element in the items of rep_2.

WR3: The represented_link of rep_1 shall be the same as the one referenced by the chain transformation_operator, joint and edge_start.

WR4: The represented_link of rep_2 shall be the same as the one referenced by the chain transformation_operator, joint and edge_end.

4.3.21 Planar_curve_pair   EXPRESS-GMapping table

A Planar_curve_pair is a type of High_order_kinematic_pair. Each Planar_curve_pair may be either a Sliding_curve_pair or a Rolling_curve_pair and/or additionally may be Planar_curve_pair_range. A Planar_curve_pair constrains the motion of two links along a planar curve on each of the links. Both curves lie in a common plane whose normal is called
vector_z_c.gif
The point of contact lies on the curves. The point is called the contact point, and the contact point specifies the origin of a frame called a contact frame. The common plane is the xy-plane of the contact frame. To measure motion, a pair frame is defined on each of the links. The representation ƒ(u) of the two-dimensional curves is given in the xy-plane of the corresponding pair frame. For the subsequent specification both curve representations need to be expressed in a common coordinate system. The world coordinate system is used for this purpose.

The following notation is used:

NOTE 1   See Figure 3 for an exploded view of a curve pair. In this case orientation is FALSE, as the x-axes have opposite directions.



Figure 3 —  Example of a planar curve pair

Figure 3 —  Example of a planar curve pair

The following equations apply to Sliding_curve_pair and Rolling_curve_pair.

The contact frame is determined from both sides of the pair as follows, beginning with the second link:

vector_origin_qc_0fquq.gif
vector_origin_q_c.gif

and the three direction vectors

direction_vectors_q_c.gif

may be used to establish the rigid homogeneous matrix representation of the placement of the contact frame qPFc relative to the second pair frame.

NOTE 2   See Figure 4 for an illustration of the relationships between the frames.



Figure 4 —  Placement relationships of the pair frames relative to the mating links

Figure 4 —  Placement relationships of the pair frames relative to the mating links

The same analysis is performed for the first link.

vector_origin_pc_0fpup.gif

The contact point shall be identically positioned, relative to the world coordinate system, irrespective of whether it is approached from the second or the first link.

vector_origin_c.gif

The z-directions are all normal to the same plane; hence

vector_zc_zp_zq.gif

At this stage, the direction vectors

vectors_xcq_and_xcp.gif

are either

vectors_xc_xqc_xpc_or_xc_xqc_minus_xpc.gif

In case 1, orientation is TRUE and both x-directions are identical.

In case 2, orientation is FALSE and xcp (as well as ycp) is rotated by π about the zc direction.

EXPRESS specification:

*)
ENTITY Planar_curve_pair
  SUPERTYPE OF (ONEOF (Sliding_curve_pair,
                       Rolling_curve_pair)
               ANDOR Planar_curve_pair_range)
  SUBTYPE OF (High_order_kinematic_pair);
  curve_1 : Curve;
  curve_2 : Curve;
  orientation : BOOLEAN;
WHERE
  WR1: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_1 | NOT(curve_1 IN r.items))) = 0;
  WR2: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_2 | NOT(curve_2 IN r.items))) = 0;
  WR3: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

curve_1: the contact curve on the first link, defined in the coordinate system. This curve shall lie within a plane.

curve_2: the contact curve on the second link, defined in the coordinate system. This curve shall lie within a plane.

orientation: a flag indicating whether the x-axis-directions agree.

Formal propositions:

WR1: The curve referenced by curve_1 shall be a member of associated_link_representations_1.

WR2: The curve referenced by curve_2 shall be a member of associated_link_representations_2.

WR3: All Pair_representation_relationships refering to a Planar_curve_pair shall reference a Rigid_link_representation via rep_1.

4.3.22 Planar_curve_pair_range   EXPRESS-GMapping table

A Planar_curve_pair_range is a type of Planar_curve_pair. A Planar_curve_pair_range specifies the lower bound and the upper bound of the parameter range of the Planar_curve_pair.

EXPRESS specification:

*)
ENTITY Planar_curve_pair_range
  SUBTYPE OF (Planar_curve_pair);
  range_on_curve_1 : Trimmed_curve;
  range_on_curve_2 : Trimmed_curve;
WHERE
  WR1: SELF\Planar_curve_pair.curve_1 :=: range_on_curve_1.basis_curve;
  WR2: SELF\Planar_curve_pair.curve_2 :=: range_on_curve_2.basis_curve;
  WR3: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_1 | NOT(range_on_curve_1 IN r.items))) = 0;
  WR4: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_2 | NOT(range_on_curve_2 IN r.items))) = 0;
END_ENTITY;
(*

Attribute definitions:

range_on_curve_1: the admissible range for the positional pair parameter value on the curve on the first link of the pair.

range_on_curve_2: the admissible range for the positional pair parameter value on the curve on the second link of the pair.

Formal propositions:

WR1: The basis_curve of range_on_curve_1 shall be the same as curve_1.

WR2: The basis_curve of range_on_curve_2 shall be the same as curve_2.

WR3: The curve referenced by range_on_curve_1 shall be a member of associated_link_representations_1.

WR4: The curve referenced by range_on_curve_2 shall be a member of associated_link_representations_2.

4.3.23 Planar_pair   EXPRESS-GMapping table

A Planar_pair is a type of Low_order_kinematic_pair. A Planar_pair constrains the motion between two adjacent links to translations along the x-axis and y-axis and a rotation about the z-axis. To measure the translations and the angle of rotation, a frame is defined on each of the links such that the x-, y-, and z-axes coincide and the positive directions agree. The translations in x- and y-directions are defined as the displacements required to translate the origin of the first pair frame in positive direction of the x- and y-axes until it coincides with the origin of the second pair frame. The angle of rotation is defined as the angle required to rotate the x-axis of the first pair frame in positive direction around the common z-axis until its direction coincides with the direction of the x-axis of the second pair frame.

NOTE    See Figure 5.



Figure 5 —  Example of a joint representing a planar pair

Figure 5 —  Example of a joint representing a planar pair

EXPRESS specification:

*)
ENTITY Planar_pair
  SUBTYPE OF (Low_order_kinematic_pair);
DERIVE
  SELF\Low_order_kinematic_pair.t_x : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.t_y : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY;
(*

Attribute definitions:

t_x: translation along the x-axis is not constraint.

t_y: translation along the y-axis is not constraint.

t_z: translation along the z-axis is constraint.

r_x: rotation around the x-axis is constraint.

r_y: rotation around the y-axis is constraint.

r_z: rotation around the z-axis is not constraint.

4.3.24 Planar_pair_with_range   EXPRESS-GMapping table

A Planar_pair_with_range is a type of Planar_pair. A Planar_pair_with_range specifies the lower bound and the upper bound of the parameter range for the Planar_pair.

EXPRESS specification:

*)
ENTITY Planar_pair_with_range
  SUBTYPE OF (Planar_pair);
  lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
  upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
  lower_limit_actual_translation_x : OPTIONAL length_measure;
  upper_limit_actual_translation_x : OPTIONAL length_measure;
  lower_limit_actual_translation_y : OPTIONAL length_measure;
  upper_limit_actual_translation_y : OPTIONAL length_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
  WR2: (NOT EXISTS(lower_limit_actual_translation_x) OR NOT EXISTS(upper_limit_actual_translation_x)) XOR (lower_limit_actual_translation_x < upper_limit_actual_translation_x);
  WR3: (NOT EXISTS(lower_limit_actual_translation_y) OR NOT EXISTS(upper_limit_actual_translation_y)) XOR (lower_limit_actual_translation_y < upper_limit_actual_translation_y);
END_ENTITY;
(*

Attribute definitions:

lower_limit_actual_rotation: the minimum value of the angle of rotation for the Planar_pair. The value of this attribute need not be specified.

upper_limit_actual_rotation: the maximum value of the angle of rotation for the Planar_pair. The value of this attribute need not be specified.

lower_limit_actual_translation_x: the minimum value of translation in x-direction for the Planar_pair. The value of this attribute need not be specified.

upper_limit_actual_translation_x: the maximum value of translation in x-direction for the Planar_pair. The value of this attribute need not be specified.

lower_limit_actual_translation_y: the minimum value of translation in y-direction for the Planar_pair. The value of this attribute need not be specified.

upper_limit_actual_translation_y: the maximum value of translation in y-direction for the Planar_pair. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of rotation of the Planar_pair shall be positive when both bounds are not given as unlimited.

WR2: The range of translation in x-direction of the Planar_pair shall be positive when both bounds are not given as unlimited.

WR3: The range of translation in y-direction of the Planar_pair shall be positive when both bounds are not given as unlimited.

4.3.25 Point_on_planar_curve_pair   EXPRESS-GMapping table

A Point_on_planar_curve_pair is a type of High_order_kinematic_pair A Point_on_planar_curve_pair constrains the motion of two links such that a point defined on the second link always lies on a planar curve defined on the first link. The actual location of this point on the curve is called the contact point.

NOTE 1   Translational motion of the second link is constrained to the one-dimensional parameter space of the curve, while its rotational motion about the contact point is not constrained. Therefore, a Point_on_planar_curve_pair behaves like a Spherical_pair that additionally may move along a curve on the first link.

The contact point specifies the origin of a frame called the contact frame. The x-axis of the contact frame is parallel to the tangent to the curve in the contact point and points into the direction where the curve parameter increases. The y-axis of the contact frame is normal to the plane in which the curve is defined. Hence, the z-axis of the contact frame coincides with a local normal to the curve which lies in the plane of the curve and passes the contact point.

NOTE 2   See Figure 6. In this case orientation is TRUE, as the yc1-axis has the same direction as the z1-axis.



Figure 6 —  Example of a point on planar curve pair

Figure 6 —  Example of a point on planar curve pair

To support the measure of motion, a pair frame is defined on each of the links. The representation ƒ(u) of the two-dimensional curve is given in the xy-plane of the pair frame on the first link. Therefore, the z-axis of this pair frame always serves as the normal to the plane of the curve.

NOTE 3   The definition of the curve plane and of its normal as specified here becomes important for cases where the curve is a straight line.

The translational motion is given by the actual curve parameter of the contact point, u1. The three angles of rotation are defined as the yaw, pitch, and roll angles. They are required to rotate the x-, y-, and z-axes of the contact frame until its directions coincide with the axis directions of the second pair frame.

The origin of the pair frame on the second link coincides with the contact point, and the axes of this pair frame agree with the axes of the contact frame when all three rotations have been performed.

The following notation is used in the subsequent specification:

In order to migrate from the first pair frame to the second pair frame, the following sequence of transformations has to be performed:

  1. Establish the contact frame 1PFc relative to the first pair frame:
    vector_origin_1_c_fu.gif
    x_vector_1_c.gif
    yc1 is required to be parallel to z1; hence, either
    vector_y_1_c.gif
    or
    vector_y_1_c_minus.gif
    In the first case, orientation is TRUE and the direction of yc1 agrees with that of z1. In the second case, orientation is FALSE and the direction of yc1 is opposite to that of z1.
    z_vector_1_c.gif
    vector_origin.gif
    and the three direction vectors
    direction_vectors.gif
    may be used to establish the rigid homogeneous matrix representation of the placement of the contact frame 1PFc relative to the first pair frame.
  2. Rotate the xc1 ,yc1-axes about the zc1-axis by the amount specified by the yaw angle. This yields an intermediate frame the axes of which are denoted by (x', y', z' = zc1 ).
  3. Rotate the z',x'-axes about the y'-axis by the amount specified by the pitch angle. This yields a second intermediate frame denoted by (x", y" = y', z").
  4. Finally, rotate the y",z"-axes about the x"-axis by the amount specified by the roll angle. The resulting frame (xc2 = x", yc2, zc2) now coincides with the pair frame on the second link, denoted by (x2, y2, z2).

EXPRESS specification:

*)
ENTITY Point_on_planar_curve_pair
  SUBTYPE OF (High_order_kinematic_pair);
  pair_curve : Curve;
  orientation : BOOLEAN;
WHERE
  WR1: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_1 | NOT(pair_curve IN r.items))) = 0;
  WR2: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

pair_curve: the planar curve on the first link of the pair on which the point on the second link is sliding.

orientation: a flag indicating whether the y-axis of the unrotated contact frame agrees with the z-axis of the pair frame on the first link.

Formal propositions:

WR1: The curve referenced by pair_curve shall be a member of associated_link_representations_1.

WR2: All Pair_representation_relationships refering to a Point_on_planar_curve_pair shall reference a Rigid_link_representation via rep_1.

4.3.26 Point_on_planar_curve_pair_with_range   EXPRESS-GMapping table

A Point_on_planar_curve_pair_with_range is a type of Point_on_planar_curve_pair A Point_on_planar_curve_pair_with_range specifies the lower bound and the upper bound of the parameter range for the Point_on_planar_curve_pair.

EXPRESS specification:

*)
ENTITY Point_on_planar_curve_pair_with_range
  SUBTYPE OF (Point_on_planar_curve_pair);
  range_on_pair_curve : Trimmed_curve;
  lower_limit_yaw : OPTIONAL plane_angle_measure;
  upper_limit_yaw : OPTIONAL plane_angle_measure;
  lower_limit_pitch : OPTIONAL plane_angle_measure;
  upper_limit_pitch : OPTIONAL plane_angle_measure;
  lower_limit_roll : OPTIONAL plane_angle_measure;
  upper_limit_roll : OPTIONAL plane_angle_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch)) XOR (lower_limit_pitch < upper_limit_pitch);
  WR2: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
  WR3: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
  WR4: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_1 | NOT(range_on_pair_curve IN r.items))) = 0;
END_ENTITY;
(*

Attribute definitions:

range_on_pair_curve: the admissible range for the positional pair parameter value on the contact curve on the first link.

lower_limit_yaw: the minimum value of the yaw angle for the Point_on_planar_curve_pair. The value of this attribute need not be specified.

upper_limit_yaw: the maximum value of the yaw angle for the Point_on_planar_curve_pair. The value of this attribute need not be specified.

lower_limit_pitch: the minimum value of the pitch angle for the Point_on_planar_curve_pair. The value of this attribute need not be specified.

upper_limit_pitch: the maximum value of the pitch angle for the Point_on_planar_curve_pair. The value of this attribute need not be specified.

lower_limit_roll: the minimum value of the roll angle for the Point_on_planar_curve_pair. The value of this attribute need not be specified.

upper_limit_roll: the maximum value of the roll angle for the Point_on_planar_curve_pair. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of rotation about the x-axis of the Point_on_planar_curve_pair shall be positive when both bounds are not given as unlimited.

WR2: The range of rotation about the y-axis of the Point_on_planar_curve_pair shall be positive when both bounds are not given as unlimited.

WR3: The range of rotation about the z-axis of the Point_on_planar_curve_pair shall be positive when both bounds are not given as unlimited.

WR4: The curve referenced by range_on_pair_curve shall be a member of associated_link_representations_1.

4.3.27 Point_on_surface_pair   EXPRESS-GMapping table

A Point_on_surface_pair is a type of High_order_kinematic_pair. A Point_on_surface_pair constrains the motion of two links such that a point defined on the second link always lies on a surface defined on the first link. The actual location of this point on the surface is called the contact point. The contact point specifies an origin of a frame called the contact frame. The local normal to the surface in the contact point coincides with the z-axis of the contact frame. The x-axis of the contact frame is parallel to the tangent to the iso-parameter line of the surface for the first surface parameter, which passes the contact point, and points into the direction where the first surface parameter increases.

NOTE 1   Translational motion of the second link is constrained to the two-dimensional parameter space of the surface, while its rotational motion about the contact point is not constrained. Therefore, a Point_on_surface_pair behaves like a Spherical_pair that additionally may move along a surface on the first link.

NOTE 2   See Figure 7.



Figure 7 —  Example of a point on surface pair

Figure 7 —  Example of a point on surface pair

To support the measure of motion, a pair frame is defined on each of the links. The representation ƒ1(u, v) is defined relative to the pair frame on the first link. The translational motion is given by the actual surface parameters of the contact point, u1 and v1. The three angles of rotation are defined as the yaw, pitch, and roll angles. They are required to rotate the x-, y-, and z-axes of the contact frame until its directions coincide with the axis directions of the second pair frame. The origin of the pair frame on the second link coincides with the contact point. In order to migrate from the first pair frame to the second pair frame, the following sequence of transformations has to be performed:

  1. Establish the contact frame 1PFc relative to the first pair frame:
    contact_frame_relative_to_first_pair_frame.gif
    contact_frame_relative_to_first_pair_frame_2.gif
    vector_origin.gif
    and the three direction vectors
    direction_vectors.gif
    may be used to establish the rigid homogeneous matrix representation of the placement of the contact frame 1PFc relative to the first pair frame.
  2. Rotate the xc1,yc1 -axes about the zc1 -axis by the amount specified by the yaw angle. This yields an intermediate frame the axes of which are denoted by (x', y', z' = zc1).
  3. Rotate the z',x'-axes about the y'-axis by the amount specified by the pitch angle. This yields a second intermediate frame denoted by (x", y" = y'; z").
  4. Finally, rotate the y",z"-axes about the x"-axis by the amount specified by the roll angle. The resulting frame (x2 = x", y2, z2) now coincides with the pair frame on the second link.

EXPRESS specification:

*)
ENTITY Point_on_surface_pair
  SUBTYPE OF (High_order_kinematic_pair);
  pair_surface : Surface;
WHERE
  WR1: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_1 | NOT(pair_surface IN r.items))) = 0;
  WR2: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

pair_surface: the surface on the first link of the pair on which the point on the second link is sliding.

Formal propositions:

WR1: The surface referenced by pair_surface shall be a member of associated_link_representations_1.

WR2: All Pair_representation_relationships refering to a Point_on_surface_pair shall reference a Rigid_link_representation via rep_1.

4.3.28 Point_on_surface_pair_with_range   EXPRESS-GMapping table

A Point_on_surface_pair_with_range is a type of Point_on_surface_pair. A Point_on_surface_pair_with_range specifies the lower bound and the upper bound of the parameter range for the Point_on_surface_pair.

EXPRESS specification:

*)
ENTITY Point_on_surface_pair_with_range
  SUBTYPE OF (Point_on_surface_pair);
  range_on_pair_surface : Trimmed_surface;
  lower_limit_yaw : OPTIONAL plane_angle_measure;
  upper_limit_yaw : OPTIONAL plane_angle_measure;
  lower_limit_pitch : OPTIONAL plane_angle_measure;
  upper_limit_pitch : OPTIONAL plane_angle_measure;
  lower_limit_roll : OPTIONAL plane_angle_measure;
  upper_limit_roll : OPTIONAL plane_angle_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch)) XOR (lower_limit_pitch < upper_limit_pitch);
  WR2: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
  WR3: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
  WR4: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_1 | NOT(range_on_pair_surface IN r.items))) = 0;
END_ENTITY;
(*

Attribute definitions:

range_on_pair_surface: the admissible range for the positional pair parameter value on the contact surface on the first link.

lower_limit_yaw: the minimum value of the yaw angle for the Point_on_surface_pair. The value of this attribute need not be specified.

upper_limit_yaw: the maximum value of the yaw angle for the Point_on_surface_pair. The value of this attribute need not be specified.

lower_limit_pitch: the minimum value of the pitch angle for the Point_on_surface_pair. The value of this attribute need not be specified.

upper_limit_pitch: the maximum value of the pitch angle for the Point_on_surface_pair. The value of this attribute need not be specified.

lower_limit_roll: the minimum value of the roll angle for the Point_on_surface_pair. The value of this attribute need not be specified.

upper_limit_roll: the maximum value of the roll angle for the Point_on_surface_pair. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of rotation about the x-axis of the Point_on_surface_pair shall be positive when both bounds are not given as unlimited.

WR2: The range of rotation about the y-axis of the Point_on_surface_pair shall be positive when both bounds are not given as unlimited.

WR3: The range of rotation about the z-axis of the Point_on_surface_pair shall be positive when both bounds are not given as unlimited.

WR4: The surface referenced by range_on_pair_surface shall be a member of associated_link_representations_1.

4.3.29 Prismatic_pair   EXPRESS-GMapping table

A Prismatic_pair is a type of Low_order_kinematic_pair. A Prismatic_pair constrains the motion between two adjacent links to a translation along a common axis. To measure the distance of translation a frame is defined on each of the links such that their corresponding coordinate axes coincide and their positive directions agree. The motion of the second link with respect to the first link is defined as the distance required to translate the xy-plane of the first pair frame in positive direction of the common z-axis until it coincides with the xy-plane of the second pair frame.

NOTE    See Figure 8.



Figure 8 —  Example of a joint representing a prismatic pair

Figure 8 —  Example of a joint representing a prismatic pair

EXPRESS specification:

*)
ENTITY Prismatic_pair
  SUBTYPE OF (Low_order_kinematic_pair);
DERIVE
  SELF\Low_order_kinematic_pair.t_x : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_z : BOOLEAN := FALSE;
END_ENTITY;
(*

Attribute definitions:

t_x: translation along the x-axis is not constraint.

t_y: translation along the y-axis is constraint.

t_z: translation along the z-axis is constraint.

r_x: rotation around the x-axis is constraint.

r_y: rotation around the y-axis is constraint.

r_z: rotation around the z-axis is constraint.

4.3.30 Prismatic_pair_with_range   EXPRESS-GMapping table

A Prismatic_pair_with_range is a type of Prismatic_pair. A Prismatic_pair_with_range specifies the lower bound and the upper bound of the parameter range for the Prismatic_pair.

EXPRESS specification:

*)
ENTITY Prismatic_pair_with_range
  SUBTYPE OF (Prismatic_pair);
  lower_limit_actual_translation : OPTIONAL length_measure;
  upper_limit_actual_translation : OPTIONAL length_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_actual_translation) OR NOT EXISTS(upper_limit_actual_translation)) XOR (lower_limit_actual_translation < upper_limit_actual_translation);
END_ENTITY;
(*

Attribute definitions:

lower_limit_actual_translation: the minimum value of the pair parameter. The value of this attribute need not be specified.

upper_limit_actual_translation: the maximum value of the pair parameter. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of the Prismatic_pair shall be positive when both bounds are not given as unlimited.

4.3.31 Product_definition_relationship_kinematics   EXPRESS-GMapping table

A Product_definition_relationship_kinematics is a type of Assigned_property. The Product_definition_relationship_kinematics specifies the kinematic property of a product relationship.

EXPRESS specification:

*)
ENTITY Product_definition_relationship_kinematics
  SUBTYPE OF (Assigned_property);
  SELF\Assigned_property.described_element : Assembly_component_relationship;
UNIQUE
  UR1: described_element;
END_ENTITY;
(*

Attribute definitions:

described_element: an inherited attribute that shall be of type Assembly_component_relationship.

Formal propositions:

UR1: The described_element shall be unique within a population of Product_definition_relationship_kinematics.

4.3.32 Rack_and_pinion_pair   EXPRESS-GMapping table

A Rack_and_pinion_pair is a type of Low_order_kinematic_pair_with_motion_coupling. A Rack_and_pinion_pair describes a pinion rolling on a rack where the rotation axis of the pinion is perpendicular to the direction of the rack.

NOTE    See Figure 9. The rack and pinion pair may be considered as a special case of the Rolling_curve_pair with one curve being a straight line and the other a circle.



Figure 9 —  Example of a rack and pinion pair in the reference situation

Figure 9 —  Example of a rack and pinion pair in the reference situation

The rack is always the first link; the pinion is the second link. The Rack_and_pinion_pair constrains the motion between two adjacent links to a translation along a common axis and a rotation about an axis perpendicular to it.

To measure the motion of the second link with respect to the first link, a frame is defined on each of the links. On the pinion, the origin is the center of the rolling circle. The direction of the z-axis on both rack and pinion is perpendicular to the plane of the circle.

In a reference situation (with both pair parameter values being zero), the x-axis of the pinion points from the origin away from the point of contact with the rack. In the same reference situation, the x-axis of the rack points from the point of contact towards the center of the pinion. Motion is measured in terms of the translation of the contact point along the y-axis of the rack (first link). The motion of the second link results from an analysis of the rolling process. At any instance the motion of the second link is composed of a translation and a rotation where the rotation part is calculated from:

formula_actual_rotation.gif

EXPRESS specification:

*)
ENTITY Rack_and_pinion_pair
  SUBTYPE OF (Low_order_kinematic_pair_with_motion_coupling);
  pinion_radius : length_measure;
WHERE
  WR1: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

pinion_radius: the radius of the rolling circle of the pinion.

Formal propositions:

WR1: All Pair_representation_relationships refering to a Rack_and_pinion_pair shall reference a Rigid_link_representation via rep_1.

4.3.33 Rack_and_pinion_pair_with_range   EXPRESS-GMapping table

A Rack_and_pinion_pair_with_range is a type of Rack_and_pinion_pair. A Rack_and_pinion_pair_with_range specifies the lower bound and the upper bound of the parameter range for the Rack_and_pinion_pair.

EXPRESS specification:

*)
ENTITY Rack_and_pinion_pair_with_range
  SUBTYPE OF (Rack_and_pinion_pair);
  lower_limit_rack_displacement : OPTIONAL length_measure;
  upper_limit_rack_displacement : OPTIONAL length_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_rack_displacement) OR NOT EXISTS(upper_limit_rack_displacement)) XOR (lower_limit_rack_displacement < upper_limit_rack_displacement);
END_ENTITY;
(*

Attribute definitions:

lower_limit_rack_displacement: the minimum value of the pair parameter for the rack. The value of this attribute need not be specified.

upper_limit_rack_displacement: the maximum value of the pair parameter for the rack. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of motion of the Rack_and_pinion_pair shall be positive when both bounds are not given as unlimited.

4.3.34 Revolute_pair   EXPRESS-GMapping table

A Revolute_pair is a type of Low_order_kinematic_pair. A Revolute_pair constrains the motion between two adjacent links to a rotation about a common axis. To measure the angle of rotation a frame is defined on each of the links such that local origins and the z-axes coincide and their positive directions agree. The motion of the second link with respect to the first link is defined as the angle required to rotate the x-axis of the first pair frame in positive direction around the common z-axis until it matches the x-axis of the second pair frame.

NOTE    See Figure 10.



Figure 10 —  Example of a joint representing a revolute pair

Figure 10 —  Example of a joint representing a revolute pair

EXPRESS specification:

*)
ENTITY Revolute_pair
  SUBTYPE OF (Low_order_kinematic_pair);
DERIVE
  SELF\Low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY;
(*

Attribute definitions:

t_x: translation along the x-axis is constraint.

t_y: translation along the y-axis is constraint.

t_z: translation along the z-axis is constraint.

r_x: rotation around the x-axis is constraint.

r_y: rotation around the y-axis is constraint.

r_z: rotation around the z-axis is not constraint.

4.3.35 Revolute_pair_with_range   EXPRESS-GMapping table

A Revolute_pair_with_range is a type of Revolute_pair. A Revolute_pair_with_range specifies the lower bound and the upper bound of the parameter pair range for the Revolute_pair.

EXPRESS specification:

*)
ENTITY Revolute_pair_with_range
  SUBTYPE OF (Revolute_pair);
  lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
  upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
END_ENTITY;
(*

Attribute definitions:

lower_limit_actual_rotation: the minimum value of the pair parameter. The value of this attribute need not be specified.

upper_limit_actual_rotation: the maximum value of the pair parameter. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of the Revolute_pair shall be positive when both bounds are not given as unlimited.

4.3.36 Rigid_link_representation   EXPRESS-GMapping table

A Rigid_link_representation is a type of Kinematic_link_representation.

EXPRESS specification:

*)
ENTITY Rigid_link_representation
  SUBTYPE OF (Kinematic_link_representation);
END_ENTITY;
(*

4.3.37 Rolling_curve_pair   EXPRESS-GMapping table

A Rolling_curve_pair is a type of Planar_curve_pair. A Rolling_curve_pair specifies the rolling motion between the curves on the two links of a Planar_curve_pair.

EXPRESS specification:

*)
ENTITY Rolling_curve_pair
  SUBTYPE OF (Planar_curve_pair);
END_ENTITY;
(*

4.3.38 Rolling_surface_pair   EXPRESS-GMapping table

A Rolling_surface_pair is a type of Surface_pair. A Rolling_surface_pair specifies the rolling motion between the two contact surfaces of a Surface_pair.

EXPRESS specification:

*)
ENTITY Rolling_surface_pair
  SUBTYPE OF (Surface_pair);
END_ENTITY;
(*

4.3.39 Screw_pair   EXPRESS-GMapping table

A Screw_pair is a type of Low_order_kinematic_pair_with_motion_coupling. A Screw_pair constrains the motion between two adjacent links to a rotation about, and translation along, a common axis, where the translation is proportional to the rotation. The factor of proportionality is given by pitch which defines the translational displacement for one full rotation. The frames are defined on each of the links such that the z-axes coincide and the positive directions agree.

NOTE 1   See Figure 11.



Figure 11 —  Example of a joint representing a screw pair

Figure 11 —  Example of a joint representing a screw pair

NOTE 2   The relationship between actual rotation and actual translation as drawn in the figure 10 does not actually correspond to pitch. Actual translation as drawn would result from an actual rotation covering more than a full revolution.

The motion of the second link with respect to the first link is specified by the angle required to rotate the x-axis of the first pair frame in positive direction around the common z-axis until its direction coincides with the direction of the x-axis of the second pair frame. The translation of the second link along the z-axis shall depend on the rotation according to

formula_translation.gif
where actual rotation is given in radians.

Hence a full rotation (actual rotation = 2π) displaces the xy-plane of the second pair frame by the value pitch in the positive z-direction relative to the first pair frame.

NOTE 3   The Screw_pair does not distinguish which one of its links is driving or driven.

EXPRESS specification:

*)
ENTITY Screw_pair
  SUBTYPE OF (Low_order_kinematic_pair_with_motion_coupling);
  pitch : length_measure;
WHERE
  WR1: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

pitch: the pitch of the screw.

Formal propositions:

WR1: All Pair_representation_relationships refering to a Screw_pair shall reference a Rigid_link_representation via rep_1.

4.3.40 Screw_pair_with_range   EXPRESS-GMapping table

A Screw_pair_with_range is a type of Screw_pair. A Screw_pair_with_ranges specifies the lower bound and the upper bound of the parameter range for the Screw_pair.

EXPRESS specification:

*)
ENTITY Screw_pair_with_range
  SUBTYPE OF (Screw_pair);
  lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
  upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
END_ENTITY;
(*

Attribute definitions:

lower_limit_actual_rotation: the minimum value of the pair parameter. The value of this attribute need not be specified.

upper_limit_actual_rotation: the maximum value of the pair parameter. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of the Screw_pair shall be positive when both bounds are not given as unlimited.

4.3.41 Sliding_curve_pair   EXPRESS-GMapping table

A Sliding_curve_pair is a type of Planar_curve_pair. A Sliding_curve_pair specifies the sliding motion between the curves on the two links of a Planar_curve_pair.

EXPRESS specification:

*)
ENTITY Sliding_curve_pair
  SUBTYPE OF (Planar_curve_pair);
END_ENTITY;
(*

4.3.42 Sliding_surface_pair   EXPRESS-GMapping table

A Sliding_surface_pair is a type of Surface_pair. A Sliding_surface_pair specifies the sliding motion between the two contact surfaces of a Surface_pair.

EXPRESS specification:

*)
ENTITY Sliding_surface_pair
  SUBTYPE OF (Surface_pair);
END_ENTITY;
(*

4.3.43 Spherical_pair   EXPRESS-GMapping table

A Spherical_pair is a type of Low_order_kinematic_pair. A Spherical_pair constrains the motion between two adjacent links to the rotation about three independent axes that intersect in a common point. To measure the three angles of rotation, a frame system is defined on each of the links such that the origins of the frames coincide. The three angles of rotation are defined as the yaw, pitch, and roll angles. They are required to rotate the x-, y-, and z-axes of the first pair frame until the axis directions of this frame coincide with the axis directions of the second pair frame.

NOTE 1   See Figure 12.



Figure 12 —  Example of a joint representing a spherical pair

Figure 12 —  Example of a joint representing a spherical pair

NOTE 2   (x1, y1, z1) is the frst pair frame, and (x2, y2, z2) is the second pair frame. (x', y', z') is an intermediate frame resulting from the yaw rotation of (x1, y1, z1) about z1. (x", y", z") results from the pitch rotation of (x', y', z') about y'. The roll rotation of (x", y", z") about x" produces (x2, y2, z2).

EXPRESS specification:

*)
ENTITY Spherical_pair
  SUBTYPE OF (Low_order_kinematic_pair);
DERIVE
  SELF\Low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_x : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.r_y : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY;
(*

Attribute definitions:

t_x: translation along the x-axis is constraint.

t_y: translation along the y-axis is constraint.

t_z: translation along the z-axis is constraint.

r_x: rotation around the x-axis is not constraint.

r_y: rotation around the y-axis is not constraint.

r_z: rotation around the z-axis is not constraint.

4.3.44 Spherical_pair_with_pin   EXPRESS-GMapping table

A Spherical_pair_with_pin is a type of Low_order_kinematic_pair. A Spherical_pair_with_pin constrains the motion between two adjacent links to the rotation about two independent axes that intersect in a common point. To measure the two angles of rotation, a frame system is defined on each of the links such that the origins of the frames coincide. The two angles of rotation are defined as the yaw and pitch angles. They are required to rotate the y-, and z-axes of the first pair frame until the axis directions of this frame coincide with the axis directions of the second pair frame.

EXPRESS specification:

*)
ENTITY Spherical_pair_with_pin
  SUBTYPE OF (Low_order_kinematic_pair);
DERIVE
  SELF\Low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_y : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY;
(*

Attribute definitions:

t_x: translation along the x-axis is constraint.

t_y: translation along the y-axis is constraint.

t_z: translation along the z-axis is constraint.

r_x: rotation around the x-axis is constraint.

r_y: rotation around the y-axis is not constraint.

r_z: rotation around the z-axis is not constraint.

4.3.45 Spherical_pair_with_pin_and_range   EXPRESS-GMapping table

A Spherical_pair_with_pin_and_range is a type of Spherical_pair_with_pin. A Spherical_pair_with_pin_and_range specifies the lower bound and the upper bound of the parameter range for a Spherical_pair.

EXPRESS specification:

*)
ENTITY Spherical_pair_with_pin_and_range
  SUBTYPE OF (Spherical_pair_with_pin);
  lower_limit_yaw : OPTIONAL plane_angle_measure;
  upper_limit_yaw : OPTIONAL plane_angle_measure;
  lower_limit_roll : OPTIONAL plane_angle_measure;
  upper_limit_roll : OPTIONAL plane_angle_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
  WR2: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
END_ENTITY;
(*

Attribute definitions:

lower_limit_yaw: the minimum value of the yaw angle for the Spherical_pair. The value of this attribute need not be specified.

upper_limit_yaw: the maximum value of the yaw angle for the Spherical_pair. The value of this attribute need not be specified.

lower_limit_roll: the minimum value of the roll angle for the Spherical_pair. The value of this attribute need not be specified.

upper_limit_roll: the maximum value of the roll angle for the Spherical_pair. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of rotation about the z-axis of the Spherical_pair shall be positive when both bounds are not given as unlimited.

WR2: The range of rotation about the y-axis of the Spherical_pair shall be positive when both bounds are not given as unlimited.

4.3.46 Spherical_pair_with_range   EXPRESS-GMapping table

A Spherical_pair_with_range is a type of Spherical_pair. A Spherical_pair_with_range specifies the lower bound and the upper bound of the parameter range for a Spherical_pair.

EXPRESS specification:

*)
ENTITY Spherical_pair_with_range
  SUBTYPE OF (Spherical_pair);
  lower_limit_yaw : OPTIONAL plane_angle_measure;
  upper_limit_yaw : OPTIONAL plane_angle_measure;
  lower_limit_pitch : OPTIONAL plane_angle_measure;
  upper_limit_pitch : OPTIONAL plane_angle_measure;
  lower_limit_roll : OPTIONAL plane_angle_measure;
  upper_limit_roll : OPTIONAL plane_angle_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_yaw) OR NOT EXISTS(upper_limit_yaw)) XOR (lower_limit_yaw < upper_limit_yaw);
  WR2: (NOT EXISTS(lower_limit_pitch) OR NOT EXISTS(upper_limit_pitch)) XOR (lower_limit_pitch < upper_limit_pitch);
  WR3: (NOT EXISTS(lower_limit_roll) OR NOT EXISTS(upper_limit_roll)) XOR (lower_limit_roll < upper_limit_roll);
END_ENTITY;
(*

Attribute definitions:

lower_limit_yaw: the minimum value of the yaw angle for the Spherical_pair. The value of this attribute need not be specified.

upper_limit_yaw: the maximum value of the yaw angle for the Spherical_pair. The value of this attribute need not be specified.

lower_limit_pitch: the minimum value of the pitch angle for the Spherical_pair. The value of this attribute need not be specified.

upper_limit_pitch: the maximum value of the pitch angle for the Spherical_pair. The value of this attribute need not be specified.

lower_limit_roll: the minimum value of the roll angle for the Spherical_pair. The value of this attribute need not be specified.

upper_limit_roll: the maximum value of the roll angle for the Spherical_pair. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of rotation about the z-axis of the Spherical_pair shall be positive when both bounds are not given as unlimited.

WR2: The range of rotation about the y-axis of the Spherical_pair shall be positive when both bounds are not given as unlimited.

WR3: The range of rotation about the x-axis of the Spherical_pair shall be positive when both bounds are not given as unlimited.

4.3.47 Su_parameters   EXPRESS-GMapping table

A Su_parameters is a type of Detailed_geometric_model_element. A Su_parameters are an alternative method to Axis_placement_3d for specifying the placement of pairs on a link.

To describe the kinematic behaviour, the full shape representation of a link is not needed; rather it is sufficient to characterize the link by the transition from the link frame to all the pair frames. This shape information is captured by a set of characteristic parameters called Sheth-Uicker-Parameters, henceforth abbreviated "SU-parameters".

NOTE 1   See Figure 13. For a Kinematic_link with two pairs and for the link frame coinciding with the frame of one of the pairs, this may be interpreted as the transition from the frame at the beginning of the link to the frame at the following end.

The following notation is used for frame definitions:

notification_frame_definition.gif

The following auxiliary vectors are introduced:

aux_vectors.gif

Then the following notation applies to SU-parameters:

ak - the (positive) distance from zkr to zk, given by

ak_positive_distance.gif



Figure 13 —  Definition of the Su_parameters

Figure 13 —  Definition of the Su_parameters

formulas_list.gif

NOTE 2   For a detailed description of the Sheth-Uicker parameters see [3].

NOTE 3   In industrial robot technology the Denavit-Hartenberg parameters (DH-parameters) are widely used. See [4]. For kinematic structures with loops it is important to represent the information about the relative placement of the link axes separately from the present state of the pair. In contrast to DH-parameters, SU-parameters provide for this separation.

NOTE 4   See annex F for information on the replacement of DH-parameters by SU-parameters.

NOTE 5   An instance of Su_parameters with SU-parameters as defined above is equivalent to an instance of Axis_placement_3d that has the following attribute values:

axis_2d_placement_3d_attributes.gif

EXPRESS specification:

*)
ENTITY Su_parameters
  SUBTYPE OF (Detailed_geometric_model_element);
  a : length_measure;
  alpha : plane_angle_measure;
  b : length_measure;
  beta : plane_angle_measure;
  c : length_measure;
  gamma : plane_angle_measure;
END_ENTITY;
(*

Attribute definitions:

a: specifies the SU-parameter ak.

alpha: specifies the SU-parameter αk.

b: specifies the SU-parameter bk.

beta: specifies the SU-parameter βk.

c: specifies the SU-parameter ck.

gamma: specifies the SU-parameter γk.

4.3.48 Surface_pair   EXPRESS-GMapping table

A Surface_pair is a type of High_order_kinematic_pair. Each Surface_pair is either a Sliding_surface_pair or a Rolling_surface_pair, and/or additionally is a Surface_pair_with_range. A Surface_pair constrains the motion of two links along a surface on each of the links such that they always have contact in at least one common point. This point lies on a surface of the links. The point is called the contact point. The contact point specifies an origin of a frame called a contact frame. The common tangential plane of the surfaces is the xy-plane of the contact frame. To measure motion, a pair frame is defined on each of the links. The surface representation ƒ(u, v) of each surface is given in the corresponding pair frame. For the subsequent specification both surface representations need to be expressed in a common coordinate system. The world coordinate system is used for this purpose.

The following notation is used:

NOTE 1   See Figure 14 for an exploded view of a surface pair. There is a rotation angle of -15° between xcp and xcq, and orientation is FALSE.



Figure 14 —  Exploded view of a surface pair

Figure 14 —  Exploded view of a surface pair

The following equations apply to Sliding_surface_pair and Rolling_surface_pair.

The contact frame is determined from both sides of the pair as follows, beginning with the second link:

formula_contact_frame_1.gif
formula_contact_frame_2.gif
vector_origin_q_c.gif

and the three direction vectors

direction_vectors_q_c.gif

may be used to establish the rigid homogeneous matrix representation of the placement of the contact frame qPFc relative to the second pair frame.

NOTE 2   See Figure 4 for an illustration of the relationships between the frames.

The same analysis is performed for the first link:

formula_contact_frame_first_link.gif

The contact point shall be identically positioned, relative to the world coordinate system, irrespective of whether it is approached from the second or the first link.

vector_origin_c.gif

Also the z-direction at the contact point shall be identical, relative to the world coordinate system, irrespective of whether it is approached from the second or the first link.

However, the direction vectors

direction_vectors_q_c_p_c.gif

as evaluated above, are either

direction_vectors_evaluation_var.gif

In case 1, orientation is TRUE and both z-directions are identical.

In case 2, orientation is FALSE and zcp (as well as ycp) is rotated by π about the xcp direction. Finally, xcp has to be rotated about zc until it coincides with xc.

NOTE 3   The rotation angle to achieve this is defined by the actual rotation attribute of Sliding_surface_pair and of Rolling_surface_pair, respectively.

EXPRESS specification:

*)
ENTITY Surface_pair
  ABSTRACT SUPERTYPE OF (ONEOF (Sliding_surface_pair,
                                Rolling_surface_pair)
                        ANDOR Surface_pair_with_range)
  SUBTYPE OF (High_order_kinematic_pair);
  surface_1 : Surface;
  surface_2 : Surface;
  orientation : BOOLEAN;
WHERE
  WR1: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_1 | NOT(surface_1 IN r.items))) = 0;
  WR2: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_2 | NOT(surface_2 IN r.items))) = 0;
  WR3: SIZEOF( QUERY(lr <* SELF\Kinematic_pair.associated_link_representations_1 | NOT('KINEMATIC_STRUCTURE_ARM.RIGID_LINK_REPRESENTATION' IN TYPEOF(lr)))) = 0;
END_ENTITY;
(*

Attribute definitions:

surface_1: the contact surface on the first link, defined in the coordinate system.

surface_2: the contact surface on the second link, defined in the coordinate system.

orientation: an indication of whether the z-direction of the second surface agrees with the z-direction of the first surface.

Formal propositions:

WR1: The surface referenced by surface_1 shall be a member of associated_link_representations_1.

WR2: The surface referenced by surface_2 shall be a member of associated_link_representations_2.

WR3: All Pair_representation_relationships refering to a Surface_pair shall reference a Rigid_link_representation via rep_1.

4.3.49 Surface_pair_with_range   EXPRESS-GMapping table

A Surface_pair_with_range is a type of Surface_pair. A Surface_pair_with_range specifies the lower bound and the upper bound of the parameter range for the Surface_pair.

EXPRESS specification:

*)
ENTITY Surface_pair_with_range
  SUBTYPE OF (Surface_pair);
  range_on_surface_1 : Trimmed_surface;
  range_on_surface_2 : Trimmed_surface;
  lower_limit_actual_rotation : OPTIONAL plane_angle_measure;
  upper_limit_actual_rotation : OPTIONAL plane_angle_measure;
WHERE
  WR1: SELF\Surface_pair.surface_1 :=: range_on_surface_1.basis_surface;
  WR2: SELF\Surface_pair.surface_2 :=: range_on_surface_2.basis_surface;
  WR3: (NOT EXISTS(lower_limit_actual_rotation) OR NOT EXISTS(upper_limit_actual_rotation)) XOR (lower_limit_actual_rotation < upper_limit_actual_rotation);
  WR4: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_1 | NOT(range_on_surface_1 IN r.items))) = 0;
  WR5: SIZEOF( QUERY(r <* SELF\Kinematic_pair.associated_link_representations_2 | NOT(range_on_surface_2 IN r.items))) = 0;
END_ENTITY;
(*

Attribute definitions:

range_on_surface_1: the admissible range for the positional pair parameter value on the first contact surface.

range_on_surface_2: the admissible range for the positional pair parameter value on the second contact surface.

lower_limit_actual_rotation: the minimum value of the pair rotation parameter. The value of this attribute need not be specified.

upper_limit_actual_rotation: the maximum value of the pair rotation parameter. The value of this attribute need not be specified.

Formal propositions:

WR1: The underlying surface of range_on_surface_1 in the range specification shall be identical with the surface surface_1 in the Surface_pair specification.

WR2: The underlying surface of range_on_surface_2 in the range specification shall be identical with the surface surface_2 in the Surface_pair specification.

WR3: The range of rotation of the Surface_pair shall be positive when both bounds are not given as unlimited.

WR4: The surface referenced by range_on_surface_1 shall be a member of associated_link_representations_1.

WR5: The surface referenced by range_on_surface_2 shall be a member of associated_link_representations_2.

4.3.50 Tool_attachment_point_frame   EXPRESS-GMapping table

A Tool_attachment_point_frame is a type of Axis_placement_3d for the representation of a kinematic attachment frame of a tool that may be attached to Kinematic_link_representation of a Mechanism_representation.

EXPRESS specification:

*)
ENTITY Tool_attachment_point_frame
  SUBTYPE OF (Axis_placement_3d);
DERIVE
  SELF\Representation_item.name : label := ?;
END_ENTITY;
(*

Attribute definitions:

name: an inherited attribute that shall not be used.

4.3.51 Tool_centre_point_frame   EXPRESS-GMapping table

A Tool_centre_point_frame is a type of Axis_placement_3d for the representation of a kinematic reference frame of a tool that may be attached to a Kinematic_link_representation of a Mechanism_representation.

EXPRESS specification:

*)
ENTITY Tool_centre_point_frame
  SUBTYPE OF (Axis_placement_3d);
DERIVE
  SELF\Representation_item.name : label := ?;
END_ENTITY;
(*

Attribute definitions:

name: an inherited attribute that shall not be used.

4.3.52 Unconstrained_pair   EXPRESS-GMapping table

An Unconstrained_pair is a type of Low_order_kinematic_pair. An Unconstrained_pair does not constrain the relative motion between two adjacent links.

NOTE 1   The Unconstrained_pair may be helpful in early design stages or for kinematic analysis systems, because it allows to eliminate the constraints between two links without changing the topological structure.

NOTE 2   The concept of pair range is not applicable to an Unconstrained_pair.

EXPRESS specification:

*)
ENTITY Unconstrained_pair
  SUBTYPE OF (Low_order_kinematic_pair);
DERIVE
  SELF\Low_order_kinematic_pair.t_x : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.t_y : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.t_z : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.r_x : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.r_y : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
END_ENTITY;
(*

Attribute definitions:

t_x: translation along the x-axis is not constraint.

t_y: translation along the y-axis is not constraint.

t_z: translation along the z-axis is not constraint.

r_x: rotation around the x-axis is not constraint.

r_y: rotation around the y-axis is not constraint.

r_z: rotation around the z-axis is not constraint.

4.3.53 Universal_pair   EXPRESS-GMapping table

A Universal_pair is a type of Low_order_kinematic_pair. A Universal_pair constrains the motion between two adjacent links to two rotations about two intersecting axes.

NOTE    See Figure 15.



Figure 15 —  Example of a joint representing a universal pair

Figure 15 —  Example of a joint representing a universal pair

To measure those two angles of rotation, a frame system is defined on each of the links such that the origins coincide in the intersection point of the axes, the first z-axis coincides with the first axis of rotation, and the second x-axis coincides with the second axis of rotation. A third constant rotation is inserted between these two variable rotations. In order to migrate from the first pair frame to the second pair frame the following sequence of rotations has to be performed:

  1. rotation of the x1,y1-axes about the z1-axis by the amount specified by the first angle yielding an intermediate frame denoted by (x', y', z' = z1);
  2. rotation of the z', x'-axes about the y'-axis by the amount of the constant skew angle yielding a second intermediate frame denoted by (x", y" = y', z");
  3. rotation of the y", z"-axes about the x"-axis by the amount specified by the second angle, yielding the final frame (x2 = x", y2, z2).

EXPRESS specification:

*)
ENTITY Universal_pair
  SUBTYPE OF (Low_order_kinematic_pair);
  input_skew_angle : OPTIONAL plane_angle_measure;
DERIVE
  SELF\Low_order_kinematic_pair.t_x : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.t_z : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_x : BOOLEAN := TRUE;
  SELF\Low_order_kinematic_pair.r_y : BOOLEAN := FALSE;
  SELF\Low_order_kinematic_pair.r_z : BOOLEAN := TRUE;
  skew_angle : plane_angle_measure := NVL (input_skew_angle, 0.0);
END_ENTITY;
(*

Attribute definitions:

input_skew_angle: defines the angle by which the intersection angle between the two axes of rotation deviates from a right angle. The value of this attribute need not be specified.

t_x: translation along the x-axis is constraint.

t_y: translation along the y-axis is constraint.

t_z: translation along the z-axis is constraint.

r_x: rotation around the x-axis is not constraint.

r_y: rotation around the y-axis is constraint.

r_z: rotation around the z-axis is not constraint.

skew_angle: the angle by which the intersection angle between the two axes of rotation deviates from a right angle. If input_skew_angle is given, the value of skew_angle becomes that of input_skew_angle; otherwise it becomes zero.

4.3.54 Universal_pair_with_range   EXPRESS-GMapping table

A Universal_pair_with_range is a type of Universal_pair. An Universal_pair_with_range specifies the lower bound and the upper bound of the parameter range for the Universal_pair.

EXPRESS specification:

*)
ENTITY Universal_pair_with_range
  SUBTYPE OF (Universal_pair);
  lower_limit_first_rotation : OPTIONAL plane_angle_measure;
  upper_limit_first_rotation : OPTIONAL plane_angle_measure;
  lower_limit_second_rotation : OPTIONAL plane_angle_measure;
  upper_limit_second_rotation : OPTIONAL plane_angle_measure;
WHERE
  WR1: (NOT EXISTS(lower_limit_first_rotation) OR NOT EXISTS(upper_limit_first_rotation)) XOR (lower_limit_first_rotation < upper_limit_first_rotation);
  WR2: (NOT EXISTS(lower_limit_second_rotation) OR NOT EXISTS(upper_limit_second_rotation)) XOR (lower_limit_second_rotation < upper_limit_second_rotation);
END_ENTITY;
(*

Attribute definitions:

lower_limit_first_rotation: the minimum value of rotation around the first axis for the Universal_pair. The value of this attribute need not be specified.

upper_limit_first_rotation: the maximum value of rotation around the first axis for the Universal_pair. The value of this attribute need not be specified.

lower_limit_second_rotation: the minimum value of rotation around the second axis for the Universal_pair. The value of this attribute need not be specified.

upper_limit_second_rotation: the maximum value of rotation around the second axis for the Universal_pair. The value of this attribute need not be specified.

Formal propositions:

WR1: The range of rotation around the first axis of a Universal_pair shall be positive when both bounds are not given as unlimited.

WR2: The range of rotation around the second axis of a Universal_pair shall be positive when both bounds are not given as unlimited.

4.4 ARM subtype constraint definitions

This subclause specifies the ARM subtype constraints for this module. Each subtype constraint places constraints on the possible super-type / subtype instantiations. The ARM subtype constraints and definitions are specified below.

4.4.1 kps_property_definition_subtypes   EXPRESS-GMapping table

The kps_property_definition_subtypes constraint specifies a constraint that applies to instances of Assigned_property and enforces the rule that its subtypes Product_definition_kinematics and Product_definition_relationship_kinematics are exclusive.

EXPRESS specification:

*)
SUBTYPE_CONSTRAINT kps_property_definition_subtypes FOR Assigned_property;
  ONEOF (Product_definition_kinematics,
         Product_definition_relationship_kinematics);
END_SUBTYPE_CONSTRAINT;
(*

4.4.2 kss_representation_subtypes   EXPRESS-GMapping table

The kss_representation_subtypes constraint specifies a constraint that applies to instances of Representation and enforces the rule that its subtypes Kinematic_link_representation, Kinematic_topology_structure, Kinematic_topology_directed_structure, Kinematic_topology_network_structure, Mechanism_representation and Geometric_model are exclusive.

EXPRESS specification:

*)
SUBTYPE_CONSTRAINT kss_representation_subtypes FOR Representation;
  ONEOF (Kinematic_link_representation,
         Kinematic_topology_structure,
         Kinematic_topology_directed_structure,
         Kinematic_topology_network_structure,
         Mechanism_representation,
         Geometric_model);
END_SUBTYPE_CONSTRAINT;
(*

4.4.3 ks_axis_placement_3d_subtypes   EXPRESS-GMapping table

The ks_axis_placement_3d_subtypes constraint specifies a constraint that applies to instances of Axis_placement_3d and enforces the rule that its subtypes Tool_attachment_point_frame and Tool_centre_point_frame are exclusive.

EXPRESS specification:

*)
SUBTYPE_CONSTRAINT ks_axis_placement_3d_subtypes FOR Axis_placement_3d;
  ONEOF (Tool_attachment_point_frame,
         Tool_centre_point_frame);
END_SUBTYPE_CONSTRAINT;
(*

4.5 ARM function definitions

This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.

4.5.1 collect_joints

The collect_joints function extract the set of underlying Kinematic_joints out of a set of Pair_representation_relationships.

EXPRESS specification:

*)
FUNCTION collect_joints (items : SET[1:?] OF Pair_representation_relationship) : SET[0:?] OF Kinematic_joint;
LOCAL
  result : SET OF kinematic_joint := [];
END_LOCAL;
  REPEAT i := 1 TO HIINDEX(items);
    result := result + items[i].transformation_operator.joint;
  END_REPEAT;
  RETURN(result);
END_FUNCTION;
(*

Argument definitions:

items: the set of Kinematic_joints that is the input parameter for this function.

4.5.2 representation_of_link

The representation_of_link function returns the Kinematic_link_representation that is related to link. If there is no such relation, an indeterminate value (?)is returned.

EXPRESS specification:

*)
FUNCTION representation_of_link (link : Kinematic_link) : Kinematic_link_representation;
RETURN (?);
END_FUNCTION;
(*

Argument definitions:

link: the Kinematic_link for which the related Kinematic_link_representation is wanted.

4.5.3 sort_link_associations

The sort_link_associations function extracts the set of referenced Kinematic_link_representations out of a set of Pair_representation_relationships for either the rep_1 or the rep_2 attribute.

EXPRESS specification:

*)
FUNCTION sort_link_associations (aprr : SET[1:?] OF Pair_representation_relationship; one_not_two : BOOLEAN) : SET[0:?] OF Kinematic_link_representation;
LOCAL
  result : SET OF Kinematic_link_representation := [];
END_LOCAL;
  IF one_not_two THEN
    REPEAT i := 1 TO HIINDEX(aprr);
      result := result + aprr[i].rep_1;
    END_REPEAT;
  ELSE  
    REPEAT i := 1 TO HIINDEX(aprr);
      result := result + aprr[i].rep_2;
    END_REPEAT;
  END_IF;
  RETURN(result);
END_FUNCTION;
(*

Argument definitions:

aprr: the set of Pair_representation_relationships that is being investigated.

one_not_two: specifies on whether the rep_1 or the rep_2 attribute of a Pair_representation_relationship shall be extracted.



*)
END_SCHEMA;  -- Kinematic_structure_arm
(*


© ISO 2018 — All rights reserved