METHOD AND SYSTEM FOR PRODUCING PROGRESSIVE ADDITION
SPECTACLE LENSES
BACKGROUND OF THE INVENTION Field of the Invention
This invention relates to the field of spectacle lens fabrication, and particularly to systems and methods for making progressive addition spectacle lenses.
Description of the Related Art
Progressive addition spectacle lenses are lenses in which the power of the lens changes from a long distance to a near distance power in a continuous manner; i.e., there are no sharply-defined optical regions as are found in conventional bifocal and trifocal lenses.
To provide the different optical zones and other desired .features, the front surface of a progressive addition lens is aspherical, with the specific prescription of the wearer generated on the ' back surface of the lens. Standard prescription lenses are typically fabricated using lathes, mills, and/or cup wheel generators. However, as these machines generate simple geometric shapes of sections of spheres and cylinders, they cannot be used to generate ■ the aspherical front surface of a progressive addition lens.
Due to this limitation, the front surfaces of progressive addition lenses have mostly been molded, with the mirror image of the desired front surface design engraved in a polished permanent mold. Such a mold is often described by means of a "points file", which is an array of points which define the desired lens surface in three dimensions. The front surface 2 of a progressive addition lens is shown in FIG. 1; the lens has a far distance zone 4, an intermediate -zone 5, and a near vision
zone 6. The continuous nature of the lens is seen in FIG. 2, which shows how a line 8 which traverses front surface 2 appears in a three-dimensional coordinate system. Typically, several thousand points having the form (Xn,Yn,Zn) make up a points file for a surface such as lens surface 2. Such a points file is sent to a milling machine, for example, which uses the data to mill the metal mold that will produce the lens blank.
After the plastic lens hardens in the mold, it is supplied to an optical laboratory, where the wearer's prescription is generated on the back surface. This process requires the costly and time-consuming production of a large number of molds and molded lens blanks to accommodate many different front side surfaces, and the molded blanks must then be either stocked or ordered by each optical lab, possibly causing additional delays in providing a pair of glasses to a patient.
Recently, progressive lens designs have been improved by providing an aspheric surface (or atoric surface, when cylinder power is required) on -the back side of the lensT These surfaces must also be specially molded for individual prescriptions. Delivery of these special lenses is often long, and the present cost is very high in comparison with standard lenses.
SUMMARY OF THE INVENTION
A method and system are presented for producing non- rotationally symmetric surfaces on a workpiece, which overcome the problems noted above. The invention enables such1 a surface to be directly generated on one or more sides .of a workpiece; it is suitably used to produce progressive addition spectacle lenses having desired aspherical surfaces on one or both sides, without the use of custom molds. To produce a desired non-rotationally symmetric
surface, a workpiece is rotated about a first axis. A cutting tool capable of removing material from a surface of the workpiece is reciprocated along a second axis parallel to the first axis. The tool is also moved along a third axis orthogonal to the first and second axes. All these motions are controlled such that the cutting tool is brought into contact with the workpiece, and is reciprocated in synchronization with the rotation of the workpiece, thereby enabling a desired non-rotationally symmetric surface to be produced on the workpiece surface. The necessary rotary and linear motions are suitably provided by respective actuators, and corresponding encoders are preferably provided to provide velocity and position information for each actuator. A processor receives the encoder outputs and is arranged to provide the closed loop control of each actuator needed to achieve the desired surface.
A desired surface may be provided in the form of a t points file which describes the surface with an array of points having three-dimensional coordinates. The points are translated into motion equations, which are evaluated to generate the motions necessary to create the desired surface.
The system and method can be used to create desired surfaces on both sides of a spectacle lens blank, enabling progressive addition . lenses with aspheric (or atoric) surfaces on front and back sides to be made without the use of molds.
• Further features and advantages of the invention will. be apparent to those skilled in the art from the following detailed description, taken together with the accompanying drawings .
BRIEF DESCRIPTION OF THE DRAWINGS FIG. I is a plan view of one surface of a known
progressive addition spectacle lens surface.
FIG. 2 is a graph illustrating a known method of representing the lens surface of FIG. 1.
FIG. 3 is a diagram of a system for producing a non- rotationally symmetric surface on a workpiece per the present invention.
FIG. 4 is a flow chart illustrating a method of converting a points file to polar coordinates as might be used with the present invention. FIG. 5 is a flow chart illustrating a method of determining the frequency response of the tool/actuator assembly as might be used with the present invention.
DETAILED DESCRIPTION OF THE INVENTION A system for producing a non-rotationally symmetric surface on a workpiece is shown in FIG. 3. A workpiece 10, suitably a cylindrical lens blank from which a progressive addition spectacle lens will be made, is rotated about a first axis, identified in FIG. 3 as the Z axis. The circular path followed by the rotating workpiece is commonly referred to as the C axis. A cutting tool 12 is reciprocated along an axis parallel to the first, identified as the Z' axis. The tool is also moved along an axis orthogonal to both the Z and Z' axes, identified in FIG. 3 as the X axis.
To generate a non-rotationally symmetric surface on workpiece 10, it is essential that the reciprocation of tool 12 and the rotation of workpiece 10 be synchronized. It is also necessary that the tool's movement along the X axis, and the workpiece' s movement along the Z axis be precisely controlled. The present system and method provides four axes of interpolation; i.e., the motions of the workpiece 'and tool along each of the Z, C, Z' and X axes are controlled, with the Z' and C axis motions synchronized, to generate the desired surface.
The method is suitably implemented with a system that includes a number of actuators, a corresponding number of encoders, and a processor; a preferred system is shown in FIG. 3. Workpiece 10 is mounted on a chuck 14 at the end of a spindle 16, which is driven to rotate along the C axis by a rotary actuator 18 which moves in response to a drive signal 19. A rotary encoder 20 produces an output 22 which provides angular position and velocity information for the actuator/spindle/workpiece assembly. Tool 12 is reciprocated along the Z' axis with a linear actuator 24 which moves in response to' a drive signal 25; a linear encoder 26 produces an output 28 which provides linear position and velocity information about the motion of the tool along the Z' axis. A linear actuator 30 moves the actuator/tool assembly along the X axis in response to a drive signal 31, and an encoder 32 produces an output 34 that varies with the position and velocity of the tool along the X axis. The system normally includes another linear actuator 36 which moves the actuator/spindle/workpiece assembly along the Z axis in response to a drive signal 37, with position and velocity information provided via an encoder 38 producing an output 40.
The encoder outputs are fed to a processor 42, which also receives an input 43 that describes .the desired non- rotationally symmetric .surface. The processor is arranged to provide the drive signals 19, 25, 31, and 37 to their respective actuators needed to bring tool 12 into contact with workpiece 10, and to cause tool and workpiece to move in synchronization to generate the desired surface on the workpiece.
The invention's ability to produce a non-rotationally symmetric' surface is ideally suited to the fabrication of progressive addition spectacle lenses. At least one of the surfaces of these lenses is non-rotationally symmetric,
making its manufacture by standard lathes such as those used to make standard spectacle lenses impossible. To make a progressive addition spectacle lens, workpiece 10 is a cylindrical lens blank and tool 12 has a cutting tip of a known radius; the tip is typically a polycrystalline or natural diamond. The desired surface is provided to processor 42, which drives the actuators to move the lens blank and cutting tool as needed to realize the desired aspheric surface on the blank's front side. If desired, the lens blank can be turned over, and a different surface (aspheric or spherical) can be provided to processor 42 and cut into the blank's back side. In this way, progressive addition lenses having desired aspherical surfaces on one or both sides can be made quickly and inexpensively, without having to produce custom molds. Progressive addition lens fronts have been generated in accordance with the present invention in less than one minute.
Z' actuator 24 is preferably a voice coil, with the piston 44 to which tool 12 is mounted being supported by an air bearing (not shown) ; this enables the cutting tool to be reciprocated quickly and smoothly. Rotary actuator 18 is preferably a DC motor, and • linear actuators 30 and 36 are preferably DC motors which turn respective lead screws to effect the desired linear motions. Alternatively, actuators 30 and 36 could be stepper motors; as the motion for a given input is . generally well-known for a stepper motor, in may be possible to eliminate encoders 32 and 38 if stepper motors are used.
Encoders 20, 26, 32 and 38 are preferably digital incremental encoders which sense the rotation (encoder 20) or linear motion (encoders 26, 32 and 38) induced by their corresponding actuators (18, 24, 30 and 36, respectively) . Each encoder produces a pulse train output, with the time between pulses indicating the velocity of the sensed motion, and ' the number of pulses indicating the position of
the sensed actuator with respect to a known "home" position.
In some instances, it is not necessary to provide an actuator and corresponding encoder for motion along the Z axis. If the excursion capabilities of Z' actuator 24 are sufficient to render the desired surface on workpiece 10, the workpiece can remain in a fixed position along the Z axis. However, in most applications, material must be removed from workpiece 10 to a depth that exceeds the maximum travel of actuator 24, making it necessary to feed the workpiece toward the cutting tool to achieve the desired surface.
A points file as described above is often used to represent the desired non-rotationally symmetric surface. The invention is preferably capable of receiving data about a desired surface in the form of a points file, and then generating a surface which corresponds to the points file. One method of providing this capability is shown in FIG. 4, which illustrates a points file conversion process. A points file which describes a desired non-rotationally symmetric surface is provided to processor 42 (step 50) via input 43. The points file is converted to an array of polar coordinates, which describe the desired surface as a series of "radials", each of which consists of a set of equally-spaced points that extend in a straight line from a predefined center point, such as the center point of the spindle .
The array of polar coordinates must then be compensated for the radius of the cutting tool (step 54). This is accomplished by considering the cutting tip to be a 2-dimensional circle, the radius of which must be taken into consideration when programming the motion of the system's axes to produce the desired shape. For example, to cut a simple spherical shape, the X and Z axes are programmed to move in a mode known as ^circular
interpolation' , which means that the X and Z axes move such that the motion of the point at the center of the circle follows the path of a circular arc. The radius of the arc is made equal to the desired radius of the spherical shape being cut plus or minus the tool radius, depending on whether the spherical shape is convex or concave, respectively. Thus, if an 80mm convex radius is to be cut using a 4mm radius tool, then the X,Z circular interpolation path would follow an 84mm radius arc. To compensate for tool radius, a set of points is computed which represents the path that the center of the tool would follow if it were to roll along a given radial from beginning to end. However, the resultant set of points is not evenly spaced. This is remedied by means of polynomial interpolation (step 56) , which produces an evenly-spaced set of points which, when connected, pass through the unevenly-spaced set of points. The evenly- spaced set of points replaces the original set of points which represented the radial. This operation is repeated for each radial. The resultant • array of polar coordinates is converted into motion equations in the manner described below, which are used to generate the drive signals used to control the motion of the workpiece and cutting tool.
The spacing of the points in the points file should be selected to enable the desired surface to .be resolved to a desired accuracy. For example, for a lens having a diameter of 80mm, a spacing of 1.0mm in a rectangular coordinate points file should be adequate. This would be converted to a polar coordinate array having about 250 radials, each of which has 40 points.
Note that the invention is not limited to use with points files; other methods of representing a three- dimensional surface may be used to describe the desired surface to processor 42. Nor is the invention limited to the points 'file conversion method described, above; other
methods might also be employed to convert a points file into a form suitable for controlling the motion of workpiece and tool. It is only essential that a desired surface be described by some means, and that the invention be capable of receiving the description and synchronizing the motion of the workpiece and cutting tool to realize the desired surface.
Prior to beginning the lathing process (i.e., the process of actually forming the desired surface on the workpiece) , the points file (or equivalent three- dimensional surface representation method) is converted into motion equations which can be used to generate the actuators' respective drive signals. One way of , accomplishing this is by considering the array of polar coordinates as "rings" of data, with each ring being the set of Z coordinates for points that are a fixed distance from the predefined center point. When seen in this way, a point's X value corresponds to its distance to the center point - and thus to a particular ring of the polar coordinates array, and its C value corresponds to a particular Z coordinate within that ring. Based on this data, the commanded position of the workpiece along the Z axis and the tool along the Z' axis can be defined as functions of X and C, as follows: f1(X/C)=Z f2(X,C)=Z' with fλ and f2 being derived from the 3-dimensiσnal representation of the desired surface provided to processor 42. With the f2 and f2 functions defined, lathing of the workpiece surface can proceed as follows: the system is driven by a clock, with the encoder outputs being processed and the drive signals being updated once per clock period. The clock frequency is typically set to between 1000 and 2000 Hz, with the actual frequency selected based on the
computational time requirements and the speed of the processor. During each period, the X axis actuator is commanded to move the tool a little ■ closer to the predefined center point, and the C axis actuator is commanded to rotate . the workpiece to the next angular position, based on the programmed spindle rpm (discussed below) . The commanded X and C values are passed to the tx and f2 functions, and the commanded Z and Z' position values computed; the commanded Z and Z' values are in turn used to generate drive signals to their corresponding actuators (as described below) . Because the X and C values may not occur at precisely the same intervals given by the tool-radius compensated array of polar coordinates, it may be necessary to employ polynomial interpolation to provide the precise Z coordinates for the X and C values given.
The Z coordinates of each ring of data are preferably normalized. This is accomplished by computing all of the Z coordinate values for a given ring (referred to as Zx to Zn) , computing the mean Z value Zmean as (Zmax+Zmin) /2, and then subtracting Zraean from each of Z{ to Zn. Then in real time, the values Zx to Zn correspond to the commanded Z' positions, and the value Zmean corresponds to the commanded Z position. In this way, the tool can reciprocate about its center of travel throughout the lathing operation. This minimizes the extremes to which the tool must move during the cut, which is important as the tool's travel distance is limited.
Each of the present system's actuators is preferably responsive to a respective drive voltage, with the magnitude of the drive voltage controlling the actuator's velocity and the polarity of the drive voltage controlling the direction of motion. Each drive voltage is preferably made up of three components:
1. Error voltage. The position accuracy of an actuator is maintained by a servo loop. The actual position of the
actuator is provided by the output of the actuator's encoder, which is fed back to the processor. At a predetermined servo update frequency (equal to the clock frequency discussed above) , the difference between the actual position and the commanded position (i.e., the "position error") is calculated, and is multiplied by an "error gain" constant to determine the error voltage. Thus, an error in position produces an adjustment to the drive voltage which will cause the actuator to move in the direction necessary to reduce the error.
2. Dc offset. This is the drive voltage that produces an actuator velocity of zero.
3. Feed forward voltage. The feed forward component of the drive voltage is a function of commanded velocity and one or more constants; it is calculated once per servo update cycle. For all but the Z' axis (discussed below), this calculation is simple: the value of current commanded position minus previous commanded position is multiplied by a constant (determined through calibration as discussed below), with the result being' the feed forward voltage. When the constant is calibrated properly, then when the actuator is moving at a constant velocity, the position error averages around zero. Note that, with this simple form of feed forward calculation, if the axis is accelerating or decelerating, the actual position will lag or lead the commanded position, respectively. However, motion along all but the Z' axis preferably proceeds at near constant velocity while the tool is actually lathing, so that position error is kept near zero. Each actuator's error voltage, dc offset, and feed forward voltage components are summed together during every servo update cycle to produce its drive voltage.
The calibration needed to provide the feed forward constants is performed prior to commencing the lathing process. For all but the Z' axis, the feed forward
calibration is accomplished as follows: a drive voltage (produced using a preliminary feed forward constant) is applied to move an actuator at a constant velocity. During the period of constant velocity (i.e., after acceleration and before deceleration) , the position error is recorded. From the recorded position error, the drive voltage needed to produce the commanded velocity can be determined, and with the error voltage and dc offset components known, the amount by which the preliminary feed forward constant should be corrected can be determined.
In contrast to the constant velocity motion typically found along the other axes, the oscillating tool is constantly accelerating and decelerating along the Z' axis. Therefore, a set of calibration constants are needed to properly compute the feed forward voltage for the Z' axis. To determine the set of calibration constants, the frequency response of the tool/actuator assembly is first ascertained, as is shown in FIG. 5: the Z' actuator is driven sinusoidally over a range of frequencies (step 70), and the amount by which the amplitude and phase of the drive voltage must be offset in order to minimize the position error recorded (step 72) . From this data, an "inverse digital filter" can be realized which receives present and future commanded velocity values and produces a feed forward voltage as an output. In the digital realm, the inverse digital filter can take the form of a "difference equation" which includes a number of coefficients that are derived from the frequency response data and provided to the processor (step 74); these coefficients comprise the set of calibration constants for the Z' axis. The number n of derived coefficients is related to the "order" R of the filter as follows: n = (2*R)+1. The processor evaluates the difference equation once per servo update period to produce a feed forward voltage Vff for the actuator reciprocating the tool. The
difference equation has the following form: Vff = C1*V1 + C2*V2 + ■ • • + C(n_1)/2*V(n_1)/2 +
C((n-l)/2)+l*Vffi + C((n.1) 2)+2*Vff2 + • • ' + Cn_λ Vff(n_1) 2 +
Cn*V , where n is the number of coefficients, V is the present commanded velocity, V1-V(n_1)/2 are the commanded velocities one through (n-l)/2 servo update cycles ' into the future, respectively, and Vffl through V£f(..11 2 are the feed forward voltages to be applied one through (n-l)/2 servo update cycles into the future, respectively. For example, for a fourth order filter ((2* )+l = 9 coefficients), the difference equation has the following form:
Vff + C2*V2 + C3*V3 + C4*V4 + C5*Vm + C6*Vff2 + C7*V„3 + c8*vff4 + C9*V After Vff is evaluated, the values of V and Vff are shifted once per .servo update period, as shown below: V4 = V3 V3 = V2 . V2 = Vx
Vff4 = Vff3
Vff3 - vff2
Vff2 ~ Vffl vf = vff Thus, the V and Vff of the current servo update cycle become V4 and Vff4 four cycles ■ later.
The future commanded velocity values for the Z' axis
(i.e., Vα/ V2, V3, etc.) are determined by first determining the future positions of the X and C axes, and then calculating future Z' position values using the f2 function discussed above. Instantaneous velocity is then derived from successive commanded position values.
Because the dc offset voltages can change over time, they are preferably maintained dynamically. This is preferably accomplished by summing each axis' error voltage
with its dc offset voltage periodically when the axis is stationary.
If motion along the Z axis is controlled using a drive voltage which includes a feed forward component as described above, it is important that the Z drive mechanism and control loop be highly linear, as the feed forward algorithm does not compensate for non-linearities in the voice coil mechanism.
To achieve a desired non-rotationally symmetric shape on the workpiece surface, the cutting tool may need to make multiple passes across the surface. This requires the tool to repeatedly trace a path from the outer perimeter to the center of the workpiece, with the tool moved back to the outer edge of the workpiece after each pass. One method by which such multiple passes can be managed is as follows: the processor software computes the amount of material that needs to be removed in order to take the workpiece surface down to the desired shape and thickness. A "material table" defines the lathe line spacing, the spindle rpm, and the cut amounts. The specified rpm is a maximum value, with the actual rpm calculated based on the limits of the oscillating tool (velocity and acceleration) and the motion required to cut the desired shape. Cut amounts are divided into "rough cut" and "finish cut" ^mounts. The amount of material to remove minus the finish cut amount is the amount of material to be removed by "rough" passes. This amount, divided by the rough cut amount, gives the number of rough passes required. Rough passes preferably take off as much material as possible as quickly as possible, leaving a surface which is just clean enough that the finish pass will clean it up completely. The finish pass is typically much slower, with the cut amount being enough to clean up the surface left by the last rough pass.
Each "pass", rough or finish, includes the following sequence of events:
1. The rotary actuator driving the spindle is commanded to the required rpm (the starting rpm for rough cuts) . 2'. The workpiece and tool are moved to initial positions which put the tool near the edge of the workpiece. 3. Spindle rpm stabilizes. . Tool reciprocation is initiated and ramps up to full speed.
5. The workpiece is fed into the tool along the Z axis, or the tool is extended into the workpiece along the Z' axis, and lathing commences.
6. The tool is moved along the X axis from the workpiece edge to spindle center as the workpiece and/or tool move along Z and Z' axes to create the desired shape.
7. When the tool reaches spindle center, the workpiece and/or tool move to retract the tool.
8. If additional .passes are needed, the workpiece and tool are moved into initial positions again and the process is repeated.
The present system and method can be used to generate a desired surface on both front and back sides of the workpiece. After generating a desired surface on the front side, the workpiece can be turned over, data defining the back side surface can be provided to the processor, and the lathing process commenced again. The processor is preferably a conventional personal computer, which includes electronics that provide an interface between the processor and the encoders and actuators. Digital-to-analog (D/A) converters preferably produce the drive voltages to their respective actuators in response to digital inputs received from the processor. Each encoder preferably outputs quadrature signals, in which two signal lines produce A and B pulses, respectively, as the encoder's axis moves. The pulse rate is proportional to the velocity of axis motion, and the phase relationship between the A and B pulses determines
the direction of motion. The pulses are connected to respective counters which count up or down depending on the frequency and phase relationship of the .A and B pulses, so that each counter's value indicates the position of a respective axis.
The encoders preferably also output a "home" pulse which goes true at only one spot on the encoder, and can be used to assist the system to undergo an initialization process. When the system is initialized, a "homing" sequence is commanded for each axis, in which the actuator for each axis is commanded to move slowly until the home pulse is produced. The encoder's corresponding counter is arranged so that it resets to zero upon receipt of the home pulse, thereby defining an "absolute position" for the actuator.
While particular embodiments of the invention have been shown and described, numerous variations and alternate embodiments will occur to those skilled in the art. Accordingly, it is intended that the invention be limited only in terms of the appended claims.