Abstract:
In a method and apparatus for guiding the motion of a moveable machine element, the orientation of the machine element is defined by an orientation vector that can be programmed in each set. The orientation vector can be obtained by a linear great circle interpolation in a plane spanned by a start vector and an end vector. In more general cases, polynomials can be used in the program, enabling an almost arbitrary definition of the path that determines how the end vector is obtained. The interpolated orientation vector can also be rotated out of the plane by an arbitrary angle. An extended interpolation permits a representation of orientation changes on a conical surface having an arbitrary orientation in space. This enables the orientation axes to move across several sets with continuous velocity and acceleration.

Description:
CROSS-REFERENCES TO RELATED APPLICATIONS  
         [0001]    This application claims the priority of German Patent Application, Serial No. 101 63 503.6, filed Dec. 21, 2001, pursuant to 35 U.S.C. 119(a)-(d), the disclosure of which is incorporated herein by reference.  
         BACKGROUND OF THE INVENTION  
         [0002]    The present invention relates to a method and a numerical controller for guiding a motion of a movable machine element of a numerically controlled industrial processing machine, such as a machine tool, a robot and the like.  
           [0003]    The orientation of tools used in industrial processing machines, for example machine tools with continuous kinematical orientation of tools in space, is typically programmed for each set. For example, the tool orientation can be programmed either directly by indicating the rotation axes positions. Alternatively, a more elegant method includes programming the orientation of the tool in space by way of orientation vectors.  
           [0004]    In typical situations, an orientation is programmed in each NC set that is to be attained at the end of the set. The orientation is typically changed between the start vector and the end vector by a great circle interpolation, i.e., the orientation vector is rotated in a plane spanned by the start vector and the end vector. The angle relative to the start vector is hereby linearly interpolated.  
           [0005]    When the orientations are interpolated with a great circle interpolation over several consecutive sets, the orientation vector typically changes its direction abruptly at the transitions between sets. This causes discontinuous changes in the velocity and acceleration of the rotation axes at the transitions between sets. This means that the great circle integration is not able to generate a motion with a constant velocity and acceleration of the orientation axes over several sets.  
           [0006]    This situation occurs for normal linear axes, when only G1 sets are interpolated. A motion with a continuous acceleration can be achieved with the linear axes if polynomials are used for interpolating the axes. However, a method used with linear axes cannot easily be applied to orientations without taking into account the special properties of the orientation vectors. Moreover, even with “normal” axis interpolation, polynomials can also be programmed for the axes motion in addition linear sets and circles. This allows complex geometries to be programmed. However, such a such an interpolation method cannot be applied to orientation vectors.  
           [0007]    It would therefore be desirable and advantageous to provide an improved control method to obviate prior art shortcomings and capable of programming polynomials for changing orientation vectors. It would further be desirable and advantageous to provide a motion of the orientation axes with continuous velocity and continuous acceleration over several sets.  
         SUMMARY OF THE INVENTION  
         [0008]    According to one aspect of the invention, a control method for guiding a motion of a movable machine element of a numerically controlled industrial processing machine is provided that includes the steps of orienting the machine element in a workspace using orientation vectors, subdividing an orientation and a motion path of the machine element into a plurality of sequential contiguous motion segments, changing the orientation of the machine element within a motion segment by tilting an orientation vector from a start vector to an end vector about a first angle in a plane spanned by the start vector and end vector and about a second angle perpendicular to that plane, and interpolating the first and second angles of orientation vectors over several motion segments.  
           [0009]    In this way, an orientation vector can be programmed in each set, wherein the orientation vector can be arrived at via a great circle interpolation (i.e., a linear interpolation of the angle in the plane which is spanned by the start actor and the end vector). The programming polynomials can define an almost arbitrary “path” by which this end vector can be attained. In a more general case, the interpolated orientation vector is no longer located in the plane between the start vector and the end vector, but can be rotated arbitrarily out of this plane.  
           [0010]    According to another feature of the present invention, the two angles of the orientation vectors may be interpolated by a polynomial interpolation over several motion segments. The constant and the linear efficient of a polynomial for the polynomial interpolation can be defined by the start value or end value of an orientation vector.  
           [0011]    The angles of orientation vectors can also be interpolated over several motion segments by a spline interpolation.  
           [0012]    A method according to the present invention can be suitably applied to a movable machine element implemented as a tool of a processing machine wherein the orientation vector describes a curve of the tool tip in space.  
           [0013]    In the aforedescribed great circle interpolation, the tool orientation is interpolated in a plane spanned by the start orientation and the end orientation. The orientation vector can be tilted out of this plane by programming additional polynomials according to the invention. However, even this type of interpolation can only approximately interpolate the orientation vector on a conical surface.  
           [0014]    Such orientation changes cannot be interpolated in a single set, and sets will typically have to be subdivided depending on the desired accuracy. This results in consecutive, typically short sets, wherein the orientation change is interpolated via great circle interpolation. In addition, these orientation changes can be smoothed, so that overall a smooth orientation curve can be achieved. However, the orientation changes required when which machining, for example, a circular contour with a constant tool setting angle (inclination), still cannot be described exactly. The orientation vectors are here interpolated over several motion segments, in the same manner circles are interpolated in a plane.  
           [0015]    With the enhanced orientation interpolation according to the invention, orientation changes can be described on a conical surface with an arbitrary location/orientation in space. Hereby, a first angle may represent a rotation angle of an orientation about the center axis of the cone and a second angle may represent the apex angle. Accordingly, the coefficients of the polynomials or splines for interpolating an orientation of the machine element can be selected so that the motion of the orientation axes of the machine element has a continuous velocity and/or continuous acceleration.  
           [0016]    The method of the invention can be carried out with a suitably programmed numerical controller.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWING  
       [0017]    Other features and advantages of the present invention will be more readily apparent upon reading the following description of currently preferred exemplified embodiments of the invention with reference to the accompanying drawing, in which:  
         [0018]    [0018]FIG. 1 is a schematic diagram indicating the rotation of an orientation vector in a plane between a start vector and an end vector; and  
         [0019]    [0019]FIG. 2 is a top view of a motion of the orientation vector according to the invention. 
     
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS  
       [0020]    Throughout all the Figures, same or corresponding elements are generally indicated by same reference characters. These depicted embodiments are to be understood as illustrative of the invention and not as limiting in any way.  
         [0021]    As mentioned above, conventional axis interpolation allows direct programming of polynomials for axes motion in addition to programming linear sets and circles, thereby enabling programming of complex geometries. The present invention extends this possibility to the interpolation of orientation vectors.  
         [0022]    Accordingly, in each set an orientation vector can be programmed which is then not only reached by a great circle interpolation (i.e., by a linear interpolation of the angle in the plane spanned by the start vector and the end vector). Programming polynomials according to the invention even for orientation vectors allows an almost arbitrarily defined path to an end vector. In a general case, the interpolated orientation vector is no longer in the plane spanned by the start vector and the end vector, but can be arbitrarily rotated out of that plane.  
         [0023]    The aforedescribed possibilities for programming the tool orientation make it possible to generate NC programs which can be executed unaltered on machines having different kinematics (standard five-axis machines with different arrangements of the orientation axes as well as parallel kinematical machines, such as for example hexapods, etc.). The same options exist for programming the tool orientation as for programming the tool paths. The aforedescribed interpolation types for the orientation, such as polynomials and conical surfaces, can be applied to processing programs wherein all participating machine axes exhibit continuous acceleration.  
         [0024]    Possible approaches for programming the tool orientation are illustrated with reference to the following exemplary embodiments. In these examples, only the orientation changes are programmed, wherein in actual applications the movement of the tool also has to be indicated. The identifiers for programming are meant to be exemplary and can be replaced by other identifiers.  
         [0025]    The orientation vectors according to the invention can be programmed in different ways:  
         [0026]    1. Programming of the rotation axis positions with A, B and C or the actual rotation axis identifiers.  
         [0027]    2. Programming in Euler angle or RPY-angle via A2, B2, C2.  
         [0028]    3. Programming of the direction vector via A3, B3, C3.  
         [0029]    4. Programming via lead angle LEAD and tilt angle TILT.  
         [0030]    This type of interpolation of the orientation is selected by using the following program commands:  
         [0031]    ORIAXES: interpolation of the machine axes  
         [0032]    ORIVECT: integration of the orientation vector  
         [0033]    In the first interpolation type, the changes in the orientation depend on the respective machine kinematics. A kinematics-independent orientation change is obtained only if the orientation vectors in the second case is interpolated directly.  
         [0034]    The different interpolation types can be selected, for example, by a program command valid for a certain mode:  
         [0035]    ORIPLANE=orientation interpolation in a plane (great circle interpolation).  
         [0036]    ORICONCW=orientation interpolation on a cone clockwise.  
         [0037]    ORICONCCW=orientation interpolation on a cone counterclockwise.  
         [0038]    ORICONIO=orientation interpolation on cone with intermediate orientation.  
         [0039]    ORICONTO=orientation interpolation on a cone with tangential orientation.  
         [0040]    Additional information may be required for the respective program commands. The start orientation is generally defined by the previous set. The end orientation is defined either by defining the vector (with A3, B3, C3), the Euler angle or RPY-angle (with A2, B2, C2) or by programming the rotation axis positions (with A, B and C).  
         [0041]    The angle polynomials are programmed as follows:  
         [0042]    PO[PHI]=(a2, a3, a4, a5)  
         [0043]    PO[PSI]=(c2, c3, c4, c5)  
         [0044]    In other words, the constant and linear coefficients of the angle polynomials cannot be programmed. These coefficients are determined by the start orientation and the end orientation.  
         [0045]    In the following examples it is assumed that the initial orientation points along the z-direction (A3=0, B3=0, C3=1).  
         [0046]    1. Interpolation in a plane (great circle interpolation)  
         [0047]    A3=1 B3=0 C3=0  
         [0048]    The orientation is here rotated in the xz-plane by 90 degrees.  
         [0049]    2. Polynomial interpolation  
         [0050]    A3=1 B3=0 C3=0  
         [0051]    PO[PHI]=(a2,a3,a4,a5) PO[PSI]=(b2,b3,b4,b5)  
         [0052]    The end orientation points in the x-direction. The interpolation is performed according to the angle polynomials for PHI and PSI and can be rotated arbitrarily out of the xz-plane.  
         [0053]    3. Counter-clockwise cone interpolation  
         [0054]    A3=1 B3=0 C3=1  
         [0055]    ORICONCCW A3=0 B3=1 C3=1 A6=0 B6=0 C6=1  
         [0056]    The orientation is first rotated by 45 degrees in the xz-plane, and then moved counterclockwise by 90 degrees on a cone in the z-direction (A6=0, B6=0, C6=1).  
         [0057]    4. Clockwise cone interpolation  
         [0058]    A3=1 B3=0 C3=1  
         [0059]    ORICONCW A3=0 B3=1 C3=1 A6=0 B6=0 C6=1  
         [0060]    The orientation moves clockwise by 270 degrees on a cone in the z-direction.  
         [0061]    5. Interpolation of a complete cone  
         [0062]    A3=1 B3=0 C3=1  
         [0063]    ORICONCW A6=0 B6=0 C6=1  
         [0064]    The orientation moves clockwise by 360 degrees on a cone in the z-direction.  
         [0065]    6. Cone interpolation with specified apex angle  
         [0066]    A3=1 B3=0 C3=1  
         [0067]    ORICONCW A3=0 B3=1 C3=1 NUT=45  
         [0068]    The orientation moves clockwise by 270 degrees on a cone with an apex angle of 45 degrees.  
         [0069]    7. Cone interpolation with a specified intermediate orientation  
         [0070]    A3=1 B3=0 C3=1  
         [0071]    ORICONIO A3=−1 B3=0 C3=1 A7=0 B7=1 C7=1  
         [0072]    The orientation moves by 180 degrees on a cone in the z-direction, wherein the cone is defined by the intermediate orientation (A7=0, B7=1, C7=1).  
         [0073]    The invention can be implemented in software in the numerical controller, for example in the programming language C++, as follows.  
         [0074]    The change in the orientation vectors is completely described by a class Ocurve. This class provides to the interpolator via a function orientation(s) the actual values of the orientation vector or its derivative with respect to the path parameter s, which are required for moving the orientation axes.  
         [0075]    The class Ocurve includes the data and functions that are required for describing the interpolation from a start vector to an end vector. This class can include the following data and functions:  
         [0076]    Polynomial phi; rotation angle in the plane spanned by the start vector and end vector.  
         [0077]    Polynomial psi; angle of the orientation vector relative to this plane.  
         [0078]    Vector verticalVector; (constant) vector oriented perpendicular to the start vector and the end vector.  
         [0079]    double length( ) yields a numerical calculation of the “length” of the Ocurve.  
         [0080]    Vector orientation(s) yields the actual orientation vector for the path parameter s.  
         [0081]    Vector tangent(s) yields the normalized derivative vector of the orientation for the path parameter s.  
         [0082]    Vector unnorm Tangent(s) yields the un-normalized derivative vector of the orientation for the path parameter s.  
         [0083]    For initializing a general interpolation of orientation vectors, the constructor  
         [0084]    Ocurve::Ocurve(const Vector&amp; start, const Vector&amp; end,  
         [0085]    const Polynom&amp; phiP, const Polynom&amp; psiP)  
         [0086]    is used. Start and end refers hereby to the start and end vectors, and phiP and psiP can be used to define (arbitrary) polynomials for the angles phi and psi.  
         [0087]    Additional constructors are used to initialize the interpolation of the orientation on a conical surface with a defined start and end orientation and direction vector, apex angle or intermediate orientation.  
         [0088]    The diagram of FIG. 1 shows the rotation of an orientation vector in a plane between start vector and the end vector by an angle PHI according to an interpolation referred to as “great circle interpolation”. A motion of the orientation vector perpendicular to this plane can be generated with the second angle PSI. This relationship is illustrated in FIG. 2 in a top view.  
         [0089]    In practice, an at least 5 th  order polynomial should be programmed for these angles. The constant coefficient and the linear coefficient are defined by the initial value and the end value of the orientation vector. Any higher order coefficients equal to 0 can be omitted from the list of coefficients. In addition, the variable PL can be used to program the length of the parameter interval in which the polynomials are defined. Both angles PHI and PSI are expressed, for example, in degrees.  
         [0090]    Corresponding functions having the aforedescribed functionality can be implemented in a numerical controller, for example, with  
         [0091]    POLY  
         [0092]    Switching on the polynomial interpolation for all axis groups.  
         [0093]    POLYPATH ( )  
         [0094]    Switching on the polynomial interpolation for selective axis groups, with possible groups being “AXES” and “VECT”.  
         [0095]    PO[PHI]=(a2, a3, a4, a5)  
         [0096]    The angle PHI is interpolated according to PHI(u)=a0+a1*u+a2*u2+a3*u3+a4*u4+a5*u5. The coefficients are stated in degrees.  
         [0097]    PO[PSI]=(b2, b3, b4, b5)  
         [0098]    The angle PSI is interpolated according to PSI(u)=b0+b1*u+b2*u2+b3*u3+b4*u4+b5*u5. The coefficients are stated in degrees.  
         [0099]    PL  
         [0100]    Length of the parameter interval in which the polynomials are defined. The interval always starts at 0. Values for PL can theoretically range between 0, 0001 and 99999.9999. The quantity PL is valid for the set to which it belongs. If no value for PL is programmed, then PL is set=1.  
         [0101]    If no polynomial is programmed for the angle PSI, then the orientation vector is always interpolated in the plane spanned by the start and end vectors. The angle PHI in this plane is interpolated according to the polynomial programmed for PHI. The orientation vector can be moved in the plane between the start vector and the end vector according to a “typical” great circle interpolation, while still performing a more or less non-uniform motion depending on the programmed polynomials. This can also affect the velocity and acceleration curves of the orientation axes within a set.  
         [0102]    The following section describes the mathematical foundation for polynomial interpolation of orientations according to the present invention:  
         [0103]    It is desired to achieve a general interpolation of an orientation vector between two predefined vectors, the start vector and the end vector. A general vector which interpolates between the start vector and the end vector, is decomposed into components:  
           o =sin ψ v+ cos ψ w    
         [0104]    wherein the vector v which is normalized to a length 1 is perpendicular to the start vector s and the end vector e:  
       v   =       s   ×   e       |     s   ×   e     |                             
 
         [0105]    In the following, it will be assumed that the defined start and end vectors s and e are normalized to a length of 1. The vector w is in the plane spanned by the vectors s and e and is therefore orthogonal to the vector v, i.e.  
           v·w= 0  
         [0106]    The vector w is not constant, but is rotated in the plane perpendicular to v. Defining the angle φ path the angle between the vector w and the start vector s, one obtains:  
           w =cos φ s+ sin φ n    
         [0107]    wherein the normalized vector  
       n   =       v   ×   s       |     v   ×   s     |                             
 
         [0108]    is perpendicular to the vectors s and v:  
           s·n=v·n= 0  
         [0109]    In other words, the vectors s, v and n form an orthogonal coordinate base system. Accordingly, an arbitrary orientation vector can be represented in the following form:  
           o (φ,ψ)=sin ψ v +cos ψ(cos φ s +sin φ n )  
         [0110]    It follows  
           o·o= 1  
         [0111]    In other words, the normalization of the vector o(ψ, φ) is preserved for arbitrary angles φ and ψ. For an arbitrary orientation change, the tip of the orientation vector follows an arbitrary curve on the unit sphere.  
         [0112]    In this general representation of an orientation vector, the angles φ and ψ can be arbitrary functions of the path parameter μ.  
         [0113]    In special case of great circle interpolation (GCI), wherein the orientation change takes place only in the plane between the start and end vector, one obtains for ψ=0:  
           o (φ)=cos φ s+ sin φ n    
         [0114]    The general representation of the orientation vector can also be interpreted as two superimposed great circle interpolations. The first GCI is a rotation about the angle φ, starting at the start vector s, in the plane between the start and end vector, resulting in the vector w, and the second GCI is a subsequent rotation about the angle ψ, starting from the vector w, in the plane spanned by the vectors w and v, and oriented perpendicular to the first rotation plane.  
         [0115]    In the general representation of an orientation vector, the first two angle functions can be arbitrary functions of φ(u) and ψ(u) of the interpolation parameter u. Therefore, the derivatives required for interpolating the orientation can be computed in general form. In addition, the total orientation change can be computed from the two angle functions. Accordingly, the total orientation change is:  
       Δ   =         ∫   0   1                        u       |       ∂     o        (       φ        (   u   )       ,     ψ        (   u   )         )           ∂   u       |                           
 
         [0116]    assuming that the interpolation parameter u is normalized to the interval 0≦u≦1. Using the general representation of an orientation vector, one obtains:  
       Δ   =       ∫   0   1                            u        [         (            ψ        (   u   )              u       )     2     +       cos   2            ψ        (            φ        (   u   )              u       )       2         ]         1   /   2                                 
 
         [0117]    This integral can be computed for a general case only by numerical methods. In the special case of a great circle integration, one obtains with ψ=0:  
       Δ   =           ∫   0   1             u       |            φ        (   u   )              u       |     =       φ        (   1   )       -     φ        (   0   )                                 
 
         [0118]    This demonstrates that the “shortest” curve between a start orientation and an end orientation is described by the great circle interpolation. All other orientation changes always have a greater length.  
         [0119]    For computing the angles φ and ψ of a defined orientation vector o, the general representation of an orientation has to be solved for the angles φ and ψ One obtains by scalar multiplication with v:  
         ψ= a  sin( o·v )  
         [0120]    and by multiplication with s:  
       φ   =     a                   cos        (       o   ·   s         1   -       (     o   ·   v     )     2           )                               
 
         [0121]    In this way, the angles φ and ψ can be computed for a vector o that is not parallel to v.  
         [0122]    In particular, the start angle and the end angle can be determined with the boundary conditions:  
         o(φ=0,ψ=0)=s  
         o(φ=φ c ,ψ=ψ e )=e  
         [0123]    One then obtains  
           o   e   =a  cos( s·e )  
         ψ e   =nπ   
         [0124]    with n=1, 2, . . . . This ambiguity in determining the end angle ψ e  means that the same end vector can be obtained in different ways. The simplest possibility (n=0) represents a rotation of the orientation vector via GCI in the plane between the start and end vector. Alternatively, the orientation vector can oscillate perpendicular to this plane. In principle, ambiguities also exist in the determination of φ e . However, these ambiguities refer to a multiple complete rotation of the orientation vector about the unit sphere, which will not be discussed.  
         [0125]    So far, the angles φ and ψ can be arbitrary functions of the path parameter u. In the following, these angle functions will be limited to polynomials of the path parameter u.  
         [0126]    It will not be assumed that the two angles can be represented by polynomials:  
         φ        (   u   )       =       ∑     i   =   0       i   -   N                         a   i          u   i                   ψ        (   u   )       =       ∑     i   =   0       i   -   N              b   i          u   i                               
 
         [0127]    By requiring that the start vector should be reached for u=0 and for u=1 the end vector should be reached for u=1 one obtains the following conditions for the polynomial coefficient:  
         o(u=0)=s         φ(u=0)=ψ(u=0)=         a 0 =b 0 =0  
         and  
         o(u=1)=e         φ(u=1)=φ e ; ψ(u=1)=0  
         [0128]    This yield the following conditions for the linear polynomial coefficients:  
         a   1     =       φ   e     -       ∑     i   =   2       i   -   N            a   i                   b   1     =     -       ∑     i   =   2       i   -   N            b   i                               
 
         [0129]    In the special case of a linear polynomial, i.e., a i =b i =0 for i=2, 3, 4, . . . one obtains for the great circle interpolation:  
         φ(u)=φ e u  
         ψ(u)=0  
         [0130]    For two consecutive motion segments (NC sets), whose angle functions are referred to as φ 1 ,ψ 1  and φ 2 ,ψ 2 , and under the condition that the orientation change between the two motion segments is C2-continuous, one obtains for the coefficients of the angle polynomials:  
                        o   1          (       φ     1      e       ,     ψ     1      e         )              u       =              o   2          (         φ   2     =   0     ,       ψ   2     =   0       )              u                            2            o   1          (       φ     1      e       ,     ψ     1      e         )                u   2         =            2            o   2          (         φ   2     =   0     ,       ψ   2     =   0       )                u   2                                     
 
         [0131]    An exemplary case with two consecutive orientation changes is, for example:  
         s 1 =(0,0,1)         e 1 =(1,0,0)  
         s 2 =(0,0,1)         e 2 =(0,1,0)  
         [0132]    If these orientation changes are interpolated as described above, then the orientation abruptly changes at the transition between the two segments, causing a discontinuity in the velocities and accelerations of the corresponding orientation axes. By programming suitable polynomials for the two angles φ and ψ this orientation change can be interpolated to yield a continuous acceleration. These polynomials are defined by the conditions that the orientation vector and its first and second derivatives are continuous at the transition between sets. From the general continuity conditions, one obtains for this example:  
                      φ   2            u       =            ψ   1            u                            ψ   2            u       =     -            φ   1            u                              2          φ   2              u   2         =            2          ψ   1              u   2                              2          ψ   2              u   2         =     -            2          φ   1              u   2                                       
 
         [0133]    The following solution trial is made for the two angle polynomials:  
                 φ     1   ,   2            (   u   )       =       a     1   ,   2     0     +       a     1   ,   2     1        u     +       a     1   ,   2     2          u   2                         ψ     1   ,   2            (   u   )       =       b     1   ,   2     0     +       b     1   ,   2     1        u     +       b     1   ,   2     2          u   2                                     
 
         [0134]    The coefficients of the polynomials can be computed with the aforementioned continuity conditions, so that one obtains for the angle polynomials:  
                 φ   1          (   u   )       =         3   4        π                 u     -       1   4        π                   u   2                         ψ   1          (   u   )       =         -     1   4          π                 u     +       1   4        π                   u   2                         φ   2          (   u   )       =         1   4        π                 u     +       1   4        π                   u   2                         ψ   2          (   u   )       =         -     1   4          π                 u     +       1   4        π                   u   2                                     
 
         [0135]    For programming orientations of a tool which are independent of the specific kinematics of the machine, there exists the possibility—as described above—of a great circle interpolation. The orientation vector is hereby rotated in the plane spanned by the start orientation and the end orientation. This is accomplished by a (typically) linear interpolation of the angle enclosed between the orientation vector and the start orientation.  
         [0136]    This representation of the orientation vector known from conventional interpolations is ill suited to describe an interpolation of the orientation vector wherein the orientation changes along a conical surface. The tip of the orientation vector moves on a circular path.  
         [0137]    In the following, an extended interpolation of the orientation vector according to the invention is described which accommodates such orientation changes.  
         [0138]    With the great circle interpolation, the tool orientation is interpolated in a plane spanned by the start and end orientation. The orientation vector can also be tilted out of that plane by programming additional polynomials according to the invention. However, even then, the interpolation of the orientation vector on a conical surface can only be described as an approximation.  
         [0139]    In conventional processes, such orientation changes cannot be described in a single set, and the set may have to be subdivided depending on the required accuracy. In this case, one obtains consecutive, typically short sets in which the orientation change is interpolated by great circle interpolation. In addition, these orientation changes can be smoothed so that a generally smooth orientation curve can be obtained. However, a required orientation change can still not be described exactly, for example, where a circular contour is to be machined with a constant inclination of the tool.  
         [0140]    With a suitably extended integration of orientation, orientation changes can be described on a conical surface having an arbitrary orientation in space. The vector about which the tool orientation is to be rotated has to be known. In addition, the start and end orientations have to be defined. The start orientation is hereby always defined by the previous set, whereas the end orientation has to be the programmed or defined through other conditions.  
         [0141]    The great circle interpolation together with programming angle polynomials corresponds to a linear and polynomial integration of contours. Conversely, the extended interpolation of the orientations of a conical surface corresponds to an interpolation of circles in a plane. Accordingly, different programming possibilities in analogy to programming of circles exist. These correspond to the programming possibilities of circles, such as G2/G3 (center or the radius defined), CIP (circle via intermediate point) and CT (tangential circle).  
         [0142]    The rotation axis of the cone is programmed with A6, B6, C6 as a (normalized) vector. The apex angle of the cone is programmed as a nutation angle NUT in degrees. The value of his angle is limited to the interval 0&lt;NUT&lt;180 degrees. The rotation axis of the cone and the apex angle cannot be defined simultaneously.  
         [0143]    If an angle is programmed that lies outside a valid interval, an alarm is activated. In a special case NUT=180 degrees, the orientation vector is interpolated in a plane perpendicular to the direction vector (great circle interpolation). The sign of the programmed apex angle indicates if the positioning angle is greater or smaller than 180 degrees.  
         [0144]    In addition, polynomials can be programmed for the two angles PHI and PSI. PHI is here the rotation angle of the orientation about the direction axis of the cone and PSI is the apex angle of the cone.  
         [0145]    These polynomials are programmed in a manner described above:  
         [0146]    PO[PHI]=(a2, a3, a4, a5)  
         [0147]    PO[PSI]=(b2, b3, b4, b5)  
         [0148]    In other words, polynomials of maximal 5 th  order can be programmed. The constant and linear coefficients are defined by the start and end orientation.  
         [0149]    For example, the apex angle of the cone is programmed by specifying NUT= . . . . This can be done if either the G-code ORICONCW or the G-code ORICOCCW are active. An end orientation must be defined. It is not possible to interpolate an entire envelope of the cone of 360 degrees in this manner. The sign of the apex angle indicates if the positioning angle is to be greater or smaller than 180 degrees, wherein  
         [0150]    NUT=+ . . . positioning angle less than or equal to 180 degrees  
         [0151]    NUT=− . . . positioning angle greater than or equal to 180 degrees  
         [0152]    The positive sign can be omitted in the program.  
         [0153]    An intermediate orientation can be programmed with the indicators A7, B7, C7. This is possible when the G-code ORICONIO is active. An end orientation must be defined. The orientation change is uniquely defined by the three vectors, start orientation, end orientation and intermediate orientation. All three vectors have to be different from each other. The rotation direction is defined by the three vectors, start orientation, end orientation and intermediate orientation. If the programmed intermediate orientation is parallel to the start or end orientation, then the orientation is interpolated by a linear great circle interpolation in the plane spanned by the start and end vector.  
         [0154]    The type of interpolation is selected, for example, with the modal G-codes of the G-code group 51. Typically, only the two G-codes ORIAXES, ORIVECT and ORIPATH are included in such a group. The programmed end orientation in ORIAXES is obtained by a interpolation of the orientation axes. ORIVECT directly interpolates the orientation vector, with the resulting movements of the orientation axes being determined by the specific kinematics of the machine. If ORIPATH is active, then the orientation change relative to the surface normal is defined by angles programmed with LEAD and TILT.  
         [0155]    The aforedescribed function Ocurve does not have to be extended for implementing the extended orientation interpolation of a conical surface according to the present invention. The interpolation on a conical surface can also be performed with an existing implementation of the orientation interpolation, if the basis vectors and the angles in Ocurve are suitably defined. In other words, only new constructors have to be introduced into Ocurve for interpolating a conical surface.  
         [0156]    The mathematical basis for a conical interpolation of orientations according to the invention will now be described:  
         [0157]    An orientation vector to be interpolated on a conical surface having a normalized direction vector d can be represented in general form as:  
           o =cos ψ d+ sin ψ(cos φ  p+ sin φ p   n )  
         [0158]    With the orthogonal and normalized basis vectors  
       p   =       s   -       (     s   ·   d     )        d           1   -       (     s   ·   d     )     2                                 
 
         
       p 
       n 
       =d×p,  
     
         [0159]    wherein s is the normalized start vector and wherein the angles φ and ψ can be represented as polynomials of the interpolation parameter u. With the boundary conditions for these angle functions, the following equations are obtained:  
           φ        (     u   =   0     )       =   0     ,       φ        (     u   =   1     )       =       φ   e     =     a                   tan        (       e   ·     p   n         e   ·   p       )                                   
 
         ψ( u= 0)=ψ 0   −a  cos( s·d ),  
         [0160]    wherein e is the normalized end vector of the orientation. In the simplest case, φ(u)=φ e u and ψ(u)=ψ 0 =const. In this way, an interpolation of the orientation vector on the conical surface is obtained.  
         [0161]    However, “spiral-shaped” orientation changes are also possible, whereby the apex angle of the cone changes linearly. In this case, one sets  
         ψ( u )=ψ 0 +(ψ 1 −ψ 0 ) u    
           e·d= cos ψ 1    
         [0162]    wherein e is the normalized end vector.  
         [0163]    The normal vector p n  determines if the interpolated orientation vector rotates clockwise or counterclockwise about the direction vector d of the cone.  
         [0164]    Additional polynomials can be programmed for both the apex angle ψ of the cone as well as for the rotation angle φ, which makes possible orientation changes so that the orientation oscillates about a conical surface.  
         [0165]    For a more general form of a conical interpolation, the corresponding basis vectors have to be defined. The start vector is always defined by the end orientation of the preceding motion segment. The end orientation has to be programmed in each motion segment. Additional information is required for defining the cone (direction vector d). The following possibilities exist:  
         [0166]    1. Programming the direction vector  
         [0167]    2. Programming the apex angle of the cone  
         [0168]    3. Programming an intermediate orientation  
         [0169]    4. Tangential continuation of the orientation from the preceding motion segment. In this case, the first derivative of the orientation vector is defined at the beginning.  
         [0170]    In the first case, the direction vector is defined directly, in all other cases it has to be first computed. However, this can be done in all cases in a unique manner.  
         [0171]    While the invention has been illustrated and described in connection with currently preferred embodiments shown and described in detail, it is not intended to be limited to the details shown since various modifications and structural changes may be made without departing in any way from the spirit of the present invention. The embodiments were chosen and described in order to best explain the principles of the invention and practical application to thereby enable a person skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.  
         [0172]    What is claimed as new and desired to be protected by Letters Patent is set forth in the appended claims and their equivalents: