Application module: Kinematic structure | ISO/TS 10303-1797:2018-11(E) © ISO |
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;
(*
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.
This subclause specifies the ARM types for this application module. The ARM types and definitions are specified below.
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.
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;
(*
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.
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;
(*
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;
(*
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;
(*
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.
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.
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.
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.
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.
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.
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.
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:
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:
with bevel ∈ ]-π,π],
where in case of cos(bevel) = 0, the sign of the bevel is defined according to:
The angle between the two y-axis directions is given by the helical angle according to:
with helical_angle ∈ ]-π,π],
where in case of cos(helical_angle) = 0, the sign of the helical angle is defined according to:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
EXPRESS specification:
*)
ENTITY Linear_flexible_link_representation
SUBTYPE OF (Kinematic_link_representation);
END_ENTITY;
(*
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.
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.
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.
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.
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.
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:
and the three direction vectors
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.
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.
The z-directions are all normal to the same plane; hence
At this stage, the direction vectors
are either
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.
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.
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.
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.
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.
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:
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
EXPRESS specification:
*)
ENTITY Rigid_link_representation
SUBTYPE OF (Kinematic_link_representation);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY Rolling_curve_pair
SUBTYPE OF (Planar_curve_pair);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY Rolling_surface_pair
SUBTYPE OF (Surface_pair);
END_ENTITY;
(*
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
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.
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.
EXPRESS specification:
*)
ENTITY Sliding_curve_pair
SUBTYPE OF (Planar_curve_pair);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY Sliding_surface_pair
SUBTYPE OF (Surface_pair);
END_ENTITY;
(*
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.
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.
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.
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.
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:
The following auxiliary vectors are introduced:
Then the following notation applies to SU-parameters:
ak - the (positive) distance from zkr to zk, given by
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:
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.
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.
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:
and the three direction vectors
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:
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.
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
as evaluated above, are either
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.
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.
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.
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.
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.
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:
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.
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.
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.
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;
(*
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;
(*
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;
(*
This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.
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.
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.
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