Abstract:
A system and apparatus for inspecting machined parts and determining out of tolerance parts includes a coordinate measuring machine for providing signals representative of the actual locations, relative to an arbitrary coordinate system, of features to be inspected in or on the part. An input device provides signals representative of the nominal locations and the allowable tolerances therefrom of the features relative to a predetermined coordinate system. A programmable data processor operating under the control of a program processes the actual and nominal location signals and causes a mathematical translation and rotation of the actual location signals to their closest fit to the nominal location signals relative to the predetermined coordinate system. The processor then compares the nominal and closest fit signals and provides difference signals representative of the differences therebetween for comparison with the tolerance signals to provide out-of-tolerance signals when the difference signals are greater than the tolerance signals. An output device provides indications of the out-of-tolerance signals to indicate when parts are out of tolerance and should be rejected.

Description:
This is a continuation of application Ser. No. 830,412 filed Sept. 6, 1977, now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     The present invention relates to machined part inspection systems and more particularly to an inspection system which compares the actual locations of a plurality of features and the corresponding nominal locations and allowable tolerances of the plurality of features to determine when the parts should be rejected because a feature fails to fall within the allowable tolerance for the feature. 
     Currently, the nominal locations and allowable tolerances of a pattern of features on a machined part are generally dimensioned relative to a coordinate system established by the part itself. A typical example is a bolt-hole circle with the bolt holes and tolerances being specified from the center of the bolt-hole circle. In the past, for inspection purposes, the inspection system would establish an arbitrary coordinate system by placing the origin at the center of one bolt-hole and aligning the part so that one of the axes would pass through the center of a second bolt-hole. By the very nature of this inspection system, the erroneous assumptions had to be made that the origin bolt-hole was drilled with no error in location and that the bolt hole at the axis was drilled with no error in location tangential to the origin bolt-hole. Thus, errors in the location of the origin or axis bolt hole would lead to the costly rejection of parts which were actually within the tolerances specified relative to the center of the bolt-hole circle. 
     SUMMARY OF THE INVENTION 
     The present invention provides an inspection system in which a programmable data processor operating under the control of a program effectively relocates and repositions the actual pattern of features to most closely fit the nominal pattern of features. 
     Data from a co-ordinate measuring machine and from an input device are inputed into the programmable data processor. The data processor translates the actual pattern to the best translated location, which is when the centroids of the actual and nominal patterns coincide. At the best translation, the translated pattern is rotated so as to minimize the total area of error circles which are circles having radii equal to the distances between the nominal location of each feature and its corresponding translated feature location. The translated and rotated pattern of features will then be in the coordinate system of the nominal pattern of features for a determination of which features actually exceed the allowable tolerances. 
     With this inspection system, the best fit between the actual and nominal patterns are obtained and the part will only be rejected when a feature actually falls outside its permissible tolerance. 
     The above and additional advantages of the present invention will become apparent to those skilled in the art from a consideration of the following detailed description of the preferred embodiment when taken in conjunction with the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is an overview of the apparatus which forms the preferred embodiment of the present invention; 
     FIG. 2 is a top view of a machined part to be inspected by the present invention; 
     FIG. 3 is a top view of a drawing of the machined part; and 
     FIG. 4 is a top view of an error circle generated in the preferred embodiment of the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring now to FIG. 1, therein is shown a coordinate measuring machine 10 of a type which is commercially available from such companies as the Boice Division of Mechanical Technology, Inc. of Latham, New York. The coordinate measuring machine 10 includes a table 12 upon which a machined part, such as the machined part 14, may be placed for inspection by an operator who moves a probe 16 of the coordinate measuring machine 10 into contact with various machined features on the machined part 14. Upon contacting a feature, the probe 16 will cause the coordinate measuring machine 10 to provide three-dimensional, rectangular cartesian coordinate signals representative of the location of the feature relative to a predetermined point in the coordinate measuring machine 10. 
     The coordinate measuring machine 10 is connected by a cable 18 to a general purpose computer or programmable data processor (PDP) 20. The programmable data processor 20 is of a type generally well known in the art and the equivalents thereof include: the General Automation SPC-16; the IBM 370 TSO; the Control Data Corporation 6000 NOS; and the IBM System 7. In the preferred embodiment, the programmable data processor 20 is a PDP-11 from the Digital Equipment Corp. of Maynord, Mass. The programmable data processor 20 has a memory and is capable of being programmed in U.S.A. Standard FORTRAN to manipulate various inputed signals as will later be explained to provide a processed ouput which will later be described. 
     The programmable data processor 20 is connected by a cable 22 to a conventional CRT or computer readout/in terminal 24. The computer readout/in terminal 24 may be of any type capable of inputing and outputing information into a programmable data processor but in the preferred embodiment it is of the type manufactured by the Tektronix Corporation of Beaverton, Oregon which includes a video screen 26 and a keyboard 28. The computer readout/in terminal 24 is capable of inputing both the program as well as basic input data through the keyboard 28 and is capable of providing a readout of computer data on the screen 26. 
     Referring now to FIG. 2, therein is shown a sample machined part 14 having a number of actual features starting with a center hole 30A and first through fourth bolt-holes 32A through 35A, respectively. Based on an arbitrary X&#39;-Y&#39; coordinate system having its origin passing through the first bolt-hole 32A and its X&#39;--X&#39; axis passing through the second bolt-hole 33A, the first bolt-hole A32 coordinates would be (0, 0), the second bolt-hole 33X coordinates would be (C, 0), the third bolt-hole 34A coordinates would be (E, D), and the fourth bolt-hole 35A coordinates would be (F, G). 
     Referring now to FIG. 3, therein is shown a simplified drawing 36 of the machined part 14. In the drawing 36 are shown the nominal feature locations. The center hole 30N is at the origin of the X&#34;-Y&#34; axes from which the first through fourth bolt-holes 32N through 35N are dimensioned and toleranced. Thus, the coordinates of the first through fourth bolt-holes 32N through 35N would be, respectively, (-J, -J), (J, -J), (J, J) and (-J, J). As evident from the drawing 36, the nominal distance between bolt-holes which is given as K will generally not be the same as the actual distance between bolt-holes occurring in the machined part 14 as shown in FIG. 2. 
     In operation, to inspect the machined part 14, the operator need only place the machined part 14 on the table 12 of the coordinate measuring machine 10. No special positioning of the machined part 14 is required other than to assure that the features to be inspected are all coplanar since the preferred embodiment operates only on two-dimensional data. 
     The nominal data is entered into the programmable data processor 20 through the computer readout/in terminal 24 from the machine part drawing 36 and the actual data is entered by the operator moving the probe 16 to contact the various features on the part being inspected so as to establish a coordinate system relative to the first and second features and to locate the coordinates of all the features as explained hereinafter. 
     The operator manually moves the probe 16 into contact with several sides of the first bolt-hole 32A and tells the programmable data processor 20 by means of the computer readout/in terminal 24 that the several contacts define a circle the center of which will be the origin of the X&#39;-Y&#39; coordinate system. The programmable data processor 20 will then find the center of the bolt-hole 32A and set that as the origin of an arbitrary coordinate system which will be fully positioned when the operator moves the probe 16 into contact with several sides of the second bolt-hole 33A. The centers of subsequent bolt-holes will be determined by this same process and coordinates from the coordinate measuring machine 20 will be inputed to the programmable data processor 20. 
     In the memory of the programmable data processor 20, an array &#34;A&#34; will be established for multibit data words containing the actual data from the coordinate data measuring machine 20 in the form A(1,i) which indicates the first component of the i-th feature location and A(2,i) which is the second component of the i-th feature location where i goes from 1 to n with n equal to the number of features. A pattern of features on a part has &#34;n&#34; features, for example the machined part 14 has four features or holes. 
     The memory of the data processor 20 further contains an array &#34;H&#34; for receiving the nominal data. The numbers for H are taken from the part drawing 36 and are inputed through the computor readout/in terminal 24 in the same format as the array A. In the dimension statements for H and A, the first subscript must have a dimension of 2 and the second subscript must have a dimension at least equal to the number of features in the pattern. 
     The location of the actual or nominal features A and H are represented by two-dimensional column vectors with subscripts used to denote the sequence of vectors. On the machined part drawing 36, these n features are at the positions H 1 , H 2 , . . . , H n  and the vectors H i  form the nominal data for the pattern of features. When the actual machined part 14 is inspected, it will be found that these features are actually at the positions A 1 , A 2 , . . . , A n  and the vectors A i  form the actual data measured from the actual piece for the pattern of features. 
     With the machined part 14, the various dimensions J will be typed in on the keyboard 28 as coordinates of the first through fourth bolt-holes 32N through 35N from the machined part drawing 36. The actual data would be entered by the operator moving the probe 16 to the first bolt-hole 32A and contacting any three points on the wall of the hole. The contacts will cause the coordinate measuring machine 10 to provide signals relative to its internal coordinate system to the programmable data processor 20 which operating under the command of a conventional program commonly used with coordinate measuring machines will locate the center of the bolt-hole 32A and establish the center as the origin of the arbitrary coordinate system. A second set of three contacts with the second bolt-hole 33A will locate the center of the bolt-hole 33A and establish the orientation of the arbitrary coordinate system with the X&#39;--X&#39; axis passing through the center of the second bolt-hole 33A. With the machined part 14, the first through fourth bolt-holes 32A through 35A will be positioned respectively at coordinates (0,0), (C,0), (E,D) and (F,G). 
     Based on the data in the arrays H and A, the programmable data processor 20 operating under command of the program will compute the centroid of H, designated by H, according to the equation: ##EQU1## The programmable data processor 20, computes the centroid of the data in A, designated as A, according to the equation: ##EQU2## 
     Utilizing the centroid information, the programmable data processor 20 will compute the number C 1  according to the equation: ##EQU3## where the superscript T is used to denote the transpose of the two dimensional column vectors (H i  -H) into its equivalent two-dimensional row vector. The number S 1  is then calculated according to the equation: ##EQU4## in which the letter E represents a two by two matrix having the form: ##EQU5## 
     Next, the number r is computed according to the equation: ##EQU6## 
     Utilizing the above information, the programmable data processor 20 computes the cosine (θ) according to the equation: 
     
         cos (θ)=cos(x)-C.sub.1 /r 
    
     and further computes the sine (θ) according to the equation: 
     
         sin(θ)=sin(x)=S.sub.1 /r 
    
     Based on the above calculations, the programmable data processor 20 computes a rotation matrix R which is a two by two matrix to be more fully described later, according to the equation: ##EQU7## where I is a two by two matrix of the form: ##EQU8## 
     The final computation is that of the two-dimensional column vectors B i  using the equation: 
     
         B.sub.i =H+R(A.sub.i -A) for i=1, 2, . . . , n 
    
     The mathematical manipulation to reposition the actual data from the locations A i  moves the data to locations designated by the vectors B i  and the programmable data processor 20 operating under the control of the program will replace the data A i  with the data B i  in the array A for further manipulation. At this point the information in arrays A and H are in condition for further manipulation which will be explained shortly. 
     The conversion of the above procedure into U.S. Standard FORTRAN for utilization in structural cooperation in the digital data processor 20 will be evident to those of ordinary skill in the art. 
     The mathematical theory for the above programmable data processor calculations begins with the basis that any repositioning and realignment of the actual data from A 1  will move it to B 1  where 
     
         B.sub.i =Z+RA.sub.i for i=1, 2, . . . , n. 
    
     In this equation, the vector &#34;Z&#34; is called the translation and the matrix R, which is called the rotation, has the form for some angle θ. ##EQU9## 
     After translation and rotation, the difference in the location of the i-th feature is H i  -B i . Taking this difference as a radius of a circle, an &#34;error circle&#34;, may be formed which is centered at H i  and passes through B i  as shown in FIG. 4. The area of the error circle is directly related to the error in positioning between the nominal and actual feature locations. Therefore, when the total area of all the error circles for all the features can be minimized, the best fit between the actual and nominal feature locations will be obtained. 
     The area of a single error circle is equal to: 
     
         π(H.sub.i -B.sub.i).sup.T (H.sub.i -B.sub.i) 
    
     and thus the total area of all the error circles is: ##EQU10## Utilizing the general transformation equation 
     
         B.sub.i =Z+RA.sub.i for i=1, 2, . . . , n 
    
     in the equation giving the total area of all the error circles and then expanding in Z to determine the best translation of Z as a function of the rotation R, the following equation is obtained: ##EQU11## An examination of the above equation reveals that it is a quadratic in Z which has a minimum at: ##EQU12## is equal to the centroid of the nominal data and ##EQU13## is equal to the centroid of the actual data, it becomes evident that the best translation Z has the form: 
     
         Z=H+RA 
    
     substituting Z back into the basic transformation equation, the following repositioning equation is obtained: 
     
         B.sub.i =H+R(A.sub.i -A) for i=1, 2, . . . , n 
    
     This indicates that the best translation for minimizing the area of all the error circles is that for which the actual centroid and the nominal centroid coincide. 
     Since the best translation Z has been determined, the best rotation R must be found using this best translation. 
     Starting again with the equation for the total area of all the error circles and substituting for B i  with the best translation, the following equation is obtained: ##EQU14## Since R is a two by two matrix, then R T  is a two by two matrix where the components in the (1,2) and (2,1) positions have been interchanged. The form of R means that R T  R is equal to I and thus the first and last terms of the above equation are both independent of R and cannot affect the choice of a best rotation. Further, from an evaluation of the above equation, it is evident that since the second term is a real number, it is equal to its transpose which is the same formula as the third term. Hence, the formula for the total area of the error circle becomes: ##EQU15## where g 0  is a constant which is independent of the rotation R and is equal to ##EQU16## 
     Seeking to minimize g, and substituting the rotation matrix R in the equation for g, the following equation is obtained: ##EQU17## Observing that the following substitution could be made for a radius &#34;r&#34; and an angle &#34;x&#34; such that: ##EQU18## Substituting the above two equations and the equations for the total area of the error circles yields the following equation: ##EQU19## Obviously, based on the above equation the total area g is a minimum when the angle θ is taken equal to the angle x. Since this defines angle θ, R can be determined by the previously described equation: R=cos (θ)I+sin (θ)E. 
     The above permits calculation of the vectors B i  and thus the best fit position of the actual features on the nominal features according to the previously described repositioning equation: 
     
         B.sub.i =H+R(A.sub.i -A) for i+1, 2, . . . , n 
    
     Once B i  is in array A, the data entries in the array A can be compared by the programmable data processor 20 with the data entries in the array H and the differences in each of the coordinates between each of the actual and nominal locations can be determined and outputed through the computer readout/in terminal screen 26 in various ways which would be obvious to those skilled in the art. Further, the operator initially would have inputed the allowable tolerances for each of the dimensions and where the differences between the actual and nominal locations exceed the tolerances, the computer readout/in terminal 24 can be made to provide a special indication to allow more rapid rejection of out-of-tolerance parts. 
     While the invention has been described in conjunction with a specific embodiment, it is to be understood that many alternatives, modifications, and variations would be apparent to those skilled in the art in light of the aforegoing description. Accordingly, it is intended to embrace all such alternatives, modifications, and variations which fall within the spirit and scope of the appended claims.