Application module: Kinematic topology | ISO/TS 10303-1799:2014-02(E) © ISO |
This clause specifies the information requirements for the Kinematic topology 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_topology_arm schema and identifies the necessary external references.
EXPRESS specification:
*)
SCHEMA Kinematic_topology_arm;
(*
The following EXPRESS interface statements specify the elements imported from the ARMs of other application modules.
EXPRESS specification:
*)
USE FROM
Elemental_topology_arm;
--
ISO/TS 10303-1005
USE FROM
Foundation_representation_arm;
--
ISO/TS 10303-1006
USE FROM
Part_view_definition_arm;
--
ISO/TS 10303-1023
USE FROM
Property_assignment_arm;
--
ISO/TS 10303-1030
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:
Elemental_topology_arm ISO/TS 10303-1005 Foundation_representation_arm ISO/TS 10303-1006 Part_view_definition_arm ISO/TS 10303-1023 Property_assignment_arm ISO/TS 10303-1030 Foundation_representation_arm ISO/TS 10303-1006
NOTE 2 See Annex C, Figures C.1and C.2 for a graphical representation of this schema.
This subclause specifies the ARM type for this application module. The ARM type and definition is specified below.
The kinematic_topology_representation_select type allows for the designation of the data types Kinematic_topology_structure, Kinematic_topology_directed_structure and Kinematic_topology_network_structure.
EXPRESS specification:
*)
TYPE
kinematic_topology_representation_select =
SELECT
(Kinematic_topology_structure,
Kinematic_topology_directed_structure,
Kinematic_topology_network_structure);
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.
A topological orientation is always implicitly associated with a joint. This orientation is defined as being from the edge start to the edge end.
For a Kinematic_pair referencing a Kinematic_joint, the transform_item_1 shall be an item of the Kinematic_link_representation of the edge_start of the Kinematic_joint.
Similarly, the transform_item_2 shall be an item of the Kinematic_link_representation of the edge_end of the Kinematic_joint.
NOTE 1 The type of constraint on the relative motion is defined by the Kinematic_pair that has the joint as its joint attribute. In a graph representation of the topology, the Kinematic_joint represents an oriented edge connecting two vertices in the graph. The orientation of the Kinematic_joint reflects an implicit orientation which is arbitrary, except for the rack-and-pinion pair, the point-on-surface pair, and the point-on-planar-curve pair.
NOTE 2 If the sequence of edge_start and edge_end is interchanged, both, pair values and pair range values, have to be used with the opposite signs additionally the attributes giving a lower limit are to be interchanged with those giving the corresponding upper limit.
EXPRESS specification:
*)
ENTITY Kinematic_joint
SUBTYPE OF (Edge);
SELF\Edge.edge_start : Kinematic_link;
SELF\Edge.edge_end : Kinematic_link;
UNIQUE
UR1: edge_start, edge_end;
WHERE
WR1: edge_start :<>: edge_end;
END_ENTITY;
(*
Attribute definitions:
edge_start: the link through which the joint is entered.
edge_end: the link through which the joint is left.
Formal propositions:
UR1: The combination of edge_start and edge_end shall be unique within a population of Kinematic_joint.
WR1: The edge_start and edge_end shall not be identical.
EXPRESS specification:
*)
ENTITY Kinematic_link
SUBTYPE OF (Vertex);
END_ENTITY;
(*
Every Kinematic_joint shall be oriented such that the list of Kinematic_joints have a common orientation within the loop.
NOTE This entity is present in an instance of a kinematics model only if the kinematic structure takes the form of a directed graph.
EXPRESS specification:
*)
ENTITY Kinematic_loop
SUBTYPE OF (Edge_loop);
SELF\Path.edge_list : LIST[1:?] OF
UNIQUE
Oriented_joint;
END_ENTITY;
(*
Attribute definitions:
edge_list: an inherited attribute that shall be of type Oriented_joint There shall exist at least one Oriented_joint for the Kinematic_loop.
EXPRESS specification:
*)
ENTITY Kinematic_property_definition_representation
SUBTYPE OF (Property_definition_representation);
SELF\Property_definition_representation.definition : Product_definition_kinematics;
END_ENTITY;
(*
Attribute definitions:
definition: an inherited attribute that shall be of type Product_definition_kinematics.
EXPRESS specification:
*)
ENTITY Kinematic_property_topology_representation
SUBTYPE OF (Kinematic_property_definition_representation);
SELF\Property_definition_representation.used_representation : kinematic_topology_representation_select;
base : Kinematic_link;
WHERE
WR1: SELF\property_definition_representation.used_representation IN using_representations(base);
END_ENTITY;
(*
Attribute definitions:
used_representation: an inherited attribute that shall be of type kinematic_topology_representation_select.
base: the initial link of the Kinematic_property_topology_representation.
Formal propositions:
WR1: The base shall be founded in the kinematic_topology_representation_select.
EXPRESS specification:
*)
ENTITY Kinematic_topology_directed_structure
SUBTYPE OF (Representation);
SELF\Representation.items : SET[1:?] OF Oriented_joint;
parent : Kinematic_topology_structure;
WHERE
WR1: context_of_items :=: parent.context_of_items;
WR2: get_kinematic_joints_from_oriented_joints(items) <= parent.items;
END_ENTITY;
(*
Attribute definitions:
items: an inherited attribute that shall be of type Oriented_joint. There shall exist at least one Oriented_joint for the Kinematic_topology_directed_structure.
parent: the parent Kinematic_topology_structure in which this Kinematic_topology_directed_structure defines a direct subset.
Formal propositions:
WR1: A Kinematic_topology_directed_structure shall have the same context as its parent.
WR2: The Oriented_joints used by the items of a Kinematic_topology_directed_structure shall also be items of its parent.
NOTE 1 See Figure 1 for an illustration of a kinematic network structure.
NOTE 2 This entity is present in an instance of a kinematics model only if the kinematic structure takes the form of a directed graph.
EXPRESS specification:
*)
ENTITY Kinematic_topology_network_structure
SUBTYPE OF (Representation);
SELF\Representation.items : SET[1:?] OF Kinematic_loop;
parent : Kinematic_topology_structure;
WHERE
WR1: context_of_items :=: parent.context_of_items;
WR2: get_kinematic_joints_from_kinematic_loops(items) <= parent.items;
END_ENTITY;
(*
Attribute definitions:
items: an inherited attribute that shall be of type Kinematic_loop. There shall exist at least one Kinematic_loop for the Kinematic_topology_network_structure.
parent: the parent Kinematic_topology_structure in which this Kinematic_topology_network_structure defines a subset with loops.
Formal propositions:
WR1: A Kinematic_topology_network_structure shall have the same context as the parent.
WR2: The Oriented_joints used by the items of a Kinematic_topology_network_structure shall also be items of its parent.
NOTE Every kinematic structure can be described in terms of its joints and links. Joints constrain the motion between two rigid objects called links. Joints and links are sufficient to describe the topology of kinematic structures, but for computation it is meaningful to introduce additional levels of structure based on graph theory. Information related to the graph representation of a kinematic structure is given in Kinematic_topology_substructure.
EXPRESS specification:
*)
ENTITY Kinematic_topology_structure
SUBTYPE OF (Representation);
SELF\Representation.items : SET[1:?] OF Kinematic_joint;
WHERE
WR1: SIZEOF (QUERY (item <* items | 'FOUNDATION_REPRESENTATION_ARM.ORIENTED_EDGE' in TYPEOF(item))) = 0;
END_ENTITY;
(*
Attribute definitions:
items: the set of Kinematic_joints that compose the Kinematic_topology_structure of a mechanism. There shall exist one or more Kinematic_joints for the Kinematic_topology_structure.
Formal propositions:
WR1: None of the items shall be an Oriented_edge.
NOTE 1 Using graph theory, the topology of a mechanism is represented by a directed graph, where the links correspond to the nodes, and the joints correspond to the edges. This graph can be derived from the definition of the links and joints. If the topology of a mechanism is defined only by this minimal information, it is referred to as "lower level topology" within this part of ISO 10303.
Graph theory provides a means to capture connectivity information which may be applied to the describe the topological structure of mechanisms. The geometrical and mechanical properties are not conveyed. If the full topological information including connectivity information is provided explicitly, this is referred to as "higher level topology" within this part of ISO 10303.
A general graph may be composed of two basic types of subgraphs:
If, in addition to the lower level of topology, the higher level topology is provided in a kinematic model, this higher level of topology is represented by kinematic substructures. These kinematic substructures are:
NOTE 2 See [4]? for methods that can be applied to analyze a kinematic topology substructure.
EXPRESS specification:
*)
ENTITY Kinematic_topology_substructure
SUBTYPE OF (Kinematic_topology_structure);
parent : Kinematic_topology_structure;
WHERE
WR1: SELF\Representation.context_of_items :=: parent\Representation.context_of_items;
WR2: SELF\Representation.items <= parent\Representation.items;
END_ENTITY;
(*
Attribute definitions:
parent: the Kinematic_topology_structure of which the Kinematic_topology_substructure forms a component.
Formal propositions:
WR1: A Kinematic_topology_substructure shall have the same context as the parent.
WR2: The items of a Kinematic_topology_substructure shall also be items of the parent.
NOTE 1 See Figure 2 for an illustration of a kinematic topology tree structure.
NOTE 2 This entity is present in an instance of a kinematics model only if the kinematic topology structure takes the form of a directed graph.
EXPRESS specification:
*)
ENTITY Kinematic_topology_tree_structure
SUBTYPE OF (Kinematic_topology_directed_structure);
END_ENTITY;
(*
NOTE This entity is present in an instance of a kinematics model only if the kinematic structure takes the form of a directed graph.
EXPRESS specification:
*)
ENTITY Oriented_joint
SUBTYPE OF (Oriented_edge);
SELF\Oriented_edge.edge_definition : Kinematic_joint;
END_ENTITY;
(*
Attribute definitions:
edge_definition: an inherited attribute that shall be of type Kinematic_joint.
EXPRESS specification:
*)
ENTITY Product_definition_kinematics
SUBTYPE OF (Assigned_property);
SELF\Assigned_property.described_element : Part_view_definition;
INVERSE
representation_relation : Kinematic_property_definition_representation FOR definition;
UNIQUE
UR1: described_element;
END_ENTITY;
(*
Attribute definitions:
described_element: an inherited attribute that shall be of type Part_view_definition.
representation_relation: specifies an inverse relationship that specifies that the existence of the Product_definition_kinematics is dependent on the existence of the Kinematic_property_definition_representation that specifies the Product_definition_kinematics as its definition.
Formal propositions:
UR1: The described_element shall be unique within a population of Product_definition_kinematics.
This subclause specifies the ARM subtype constraint for this module. The subtype constraint places a constraint on the possible super-type / subtype instantiations. The ARM subtype constraint and definition is specified below.
The kts_representation_subtypes constraint specifies a constraint that applies to instances of subtypes of Representation.
EXPRESS specification:
*)
SUBTYPE_CONSTRAINT kts_representation_subtypes FOR Representation;
ONEOF (Kinematic_topology_structure,
Kinematic_topology_directed_structure,
Kinematic_topology_network_structure);
END_SUBTYPE_CONSTRAINT;
(*
This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.
EXPRESS specification:
*)
FUNCTION get_kinematic_joints_from_kinematic_loops (kls : SET[0:?] OF Kinematic_loop) : SET[0:?] OF Kinematic_joint;
LOCAL result : SET OF Oriented_joint := []; END_LOCAL; IF SIZEOF(kls) > 0 THEN REPEAT i := 1 TO HIINDEX(kls); result := result + kls[i].edge_list; END_REPEAT; END_IF; RETURN (get_kinematic_joints_from_oriented_joints(result));
END_FUNCTION;
(*
Argument definitions:
kls: the specified set of Kinematic_loops.
EXPRESS specification:
*)
FUNCTION get_kinematic_joints_from_oriented_joints (ors : SET[0:?] OF Oriented_joint) : SET[0:?] OF Kinematic_joint;
LOCAL result : SET OF Kinematic_joint := []; END_LOCAL; IF SIZEOF(ors) > 0 THEN REPEAT i := 1 TO HIINDEX(ors); result := result + ors[i].edge_definition; END_REPEAT; END_IF; RETURN (result);
END_FUNCTION;
(*
Argument definitions:
ors: the specified set of Oriented_joints.
*)
END_SCHEMA; -- Kinematic_topology_arm
(*
© ISO 2014 — All rights reserved