Application module: Kinematic structure | ISO/TS 10303-1797:2018-11(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N9364 - ISO/TS 10303-1797 Kinematic structure - EXPRESS ARM
Supersedes
ISO/TC 184/SC 4/WG 12 N7909
*)
SCHEMA Kinematic_structure_arm;
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);
TYPE actuated_direction =
ENUMERATION
OF
(bidirectional,
positive_only,
negative_only,
not_actuated);
END_TYPE;
TYPE kinematic_link_representation_items =
SELECT
(Curve,
Cartesian_point,
rigid_placement,
Surface);
END_TYPE;
TYPE ks_additional_application_domain_enumeration =
ENUMERATION
BASED_ON
additional_application_domain_enumeration
WITH
(kinematic_mechanism);
END_TYPE;
TYPE ks_geometric_representation_select =
EXTENSIBLE
GENERIC_ENTITY
SELECT
BASED_ON
geometric_representation_select
WITH
(Kinematic_link_representation);
END_TYPE;
TYPE ks_property_assignment_select =
SELECT
BASED_ON
property_assignment_select
WITH
(Assembly_component_relationship);
END_TYPE;
TYPE rigid_placement =
SELECT
(Axis_placement_3d,
Su_parameters);
END_TYPE;
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;
ENTITY Context_dependent_kinematic_link_representation;
representation_relation : Kinematic_link_representation_association;
represented_product_relation : Product_definition_relationship_kinematics;
END_ENTITY;
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;
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;
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;
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;
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;
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;
ENTITY Homokinetic_pair
SUBTYPE OF (Universal_pair);
WHERE
WR1: NOT EXISTS(SELF.input_skew_angle);
END_ENTITY;
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;
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;
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;
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;
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;
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;
ENTITY Linear_flexible_link_representation
SUBTYPE OF (Kinematic_link_representation);
END_ENTITY;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
ENTITY Product_definition_relationship_kinematics
SUBTYPE OF (Assigned_property);
SELF\Assigned_property.described_element : Assembly_component_relationship;
UNIQUE
UR1: described_element;
END_ENTITY;
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;
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;
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;
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;
ENTITY Rigid_link_representation
SUBTYPE OF (Kinematic_link_representation);
END_ENTITY;
ENTITY Rolling_curve_pair
SUBTYPE OF (Planar_curve_pair);
END_ENTITY;
ENTITY Rolling_surface_pair
SUBTYPE OF (Surface_pair);
END_ENTITY;
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;
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;
ENTITY Sliding_curve_pair
SUBTYPE OF (Planar_curve_pair);
END_ENTITY;
ENTITY Sliding_surface_pair
SUBTYPE OF (Surface_pair);
END_ENTITY;
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;
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;
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;
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;
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;
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;
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;
ENTITY Tool_attachment_point_frame
SUBTYPE OF (Axis_placement_3d);
DERIVE
SELF\Representation_item.name : label := ?;
END_ENTITY;
ENTITY Tool_centre_point_frame
SUBTYPE OF (Axis_placement_3d);
DERIVE
SELF\Representation_item.name : label := ?;
END_ENTITY;
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;
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;
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;
SUBTYPE_CONSTRAINT kps_property_definition_subtypes FOR Assigned_property;
ONEOF (Product_definition_kinematics,
Product_definition_relationship_kinematics);
END_SUBTYPE_CONSTRAINT;
SUBTYPE_CONSTRAINT ks_axis_placement_3d_subtypes FOR Axis_placement_3d;
ONEOF (Tool_attachment_point_frame,
Tool_centre_point_frame);
END_SUBTYPE_CONSTRAINT;
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;
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;
FUNCTION representation_of_link
(link : Kinematic_link) : Kinematic_link_representation;
RETURN (?);
END_FUNCTION;
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;
END_SCHEMA; -- Kinematic_structure_arm
© ISO 2018 — All rights reserved