Method and system for continuous motion digital probe routing

A method and system for routing a digital probe which signals either a triggered or non-triggered state to continuously scan a part surface without having to return to a rest position each time the probe is triggered. The probe is carried by manufacturing equipment capable of moving in response to control signals and providing manufacturing equipment feedback signals indicating the current position of the probe. Continuous movement of the digital probe is achieved by testing the probe to determine if it is triggered or not at a series of closely spaced time intervals, and rotating a move vector (corresponding to desired probe velocity) in each computation cycle to alter the probe trajectory as a function of the operating state of the probe and its position during the previous computation cycle. These techniques allow relatively inexpensive digital probing systems to gather data at speeds comparable to those of much more expensive analog systems. Various computation algorithms for altering the move vector are possible, including increasing or decreasing one component of the move vector by a constant value depending on whether the probe is triggered or not. Another algorithm generates a spiral path around the position of the probe at the previous transition between the triggered and untriggered operating state.

FIELD OF TECHNOLOGY 
This invention relates to collection of surface configuration and position 
data from physical objects, and more particularly, to a method and system 
for routing a digital data gathering device which may be utilized to 
automatically obtain surface data from physical objects with speed and 
efficiency currently unattainable with conventional techniques. The 
invention is of particular utility for data collection as it relates to 
the processes of part localization, inspection and digitizing of part 
models or templates in connection with computer controlled design and 
manufacturing, and will be described in that context. 
BACKGROUND AND PRIOR ART 
The need to measure surface geometry and position of objects for part 
setup, refixturing, digitizing (i.e., converting a part model into a 
numerical description), machining, inspection and qualification has 
resulted in the development of probes and probe routing systems and 
techniques to automatically scan the surface of an object. These are often 
used in connection with multipurpose manufacturing equipment such as 
computer numerically controlled (CNC) machine tools or with dedicated 
manufacturing equipment such as coordinate measuring machines (CMM). 
Surface data is obtained by moving a probe relative to the surface being 
inspected along three orthogonal axes under computer control and sampling 
both the probe output and probe position data at regular intervals. The 
samples are used to generate a profile of the part surface, and may also 
be used to issue probe-routing signals to control the probe trajectory. 
Probes used in such systems may be characterized as either digital or 
analog. Digital probes, also known as on/off contact probes, provide 
discrete output signals indicating whether or not a threshold value 
associated with the probe has been crossed; when the threshold value is 
exceeded, the probe is said to be "triggered." Most digital probes utilize 
a threshold based on a position displacement (so-called "touch trigger 
probes"), but force and pressure effects may also be used. 
Touch trigger probes have a stylus connected to a sensitive switch which 
operates when the stylus is displaced from its non-triggered to its 
triggered position. Because the control system will generally not be able 
to stop probe fixture motion instantaneously upon contact of the probe 
with the part surface, the probe is designed to be capable of a certain 
degree of overtravel beyond the triggered position. The maximum allowable 
displacement of the device (i.e. the permitted limit of overtravel) is 
often referred to as its safe operating distance or safe operating range. 
A data gathering cycle is typically initiated with the probe in its 
non-triggered or rest state. The main processor issues control signals to 
the probe positioning driver subsystem instructing it to decrease the 
distance between the surface to be measured and the probe. Motion 
continues until the probe contacts the surface. The triggered state signal 
from the probe is then used to stop motion of the probe. The control 
system then signals the positioning driver to return the probe to its rest 
position and the data gathering process repeats itself. 
The change in status of the probe from the non-triggered to the triggered 
state and position feedback from the probe positioning driver is used by 
the control system to generate sampled data point in three dimensions. A 
complete set of data points representing the surface of the part is 
created as the probe is routed along the part surfaces by either moving 
the probe along a pre-determined path or by computing the path based on 
probe output data. One device of the latter type is shown in Hong et al. 
U.S. Pat. No. 5,208,763. 
The iterative cycle of positioning, moving, stopping and sampling, as 
practiced by the prior art, can be quite time consuming for a large or 
complex part, as presently available equipment typically can generate only 
1-2 data points per second--or in the newest systems, 4-5 points per 
second. Thus, digital probing systems have been impractical up to now for 
rapid collection of large data sets. 
To address this deficiency of digital probes, analog probes were developed. 
Analog probe systems provide continuous sensor feedback signals indicating 
the instantaneous magnitude and direction of the displacement, force, 
pressure or other measurable effects. The control system uses the sensor 
feedback to issue control signals to move the probe along a path which 
keeps the sensor feedback within a predefined operating range. While 
motion is taking place, the control system combines instantaneous probe 
position feedback data with the instantaneous analog sensor feedback data 
to generate the sampled data points. This allows sampled data points to be 
generated without the need to stop and initialize the probe between 
readings. 
Unfortunately, the increased sophistication of analog probes over their 
digital counterparts makes them substantially more costly. Also, much more 
sophisticated electronics is required to coordinate the sampling times 
between the sensor feedback and the probe driver. As a result, analog 
probing systems are much more expensive than digital systems, and even 
though they are much faster, have proved to be of limited utility. It is 
clear that there would be substantial advantages to a digital probing 
system having the data gathering speeds of the much more expensive analog 
systems. 
Accordingly, it is an object of this invention to provide improved methods 
and equipment for collection of surface configuration and position data, 
and more particularly, from part models, templates or the like in 
connection with computer controlled design and manufacturing. 
It is also an object of this invention to provide such improved methods and 
equipment using digital touch trigger probes. 
It is a further object to provide data collection capability using digital 
touch trigger probes which could only be achieved up to now using analog 
probes. 
It is a further object of this invention to provide a method and system for 
routing a digital data gathering device which may be utilized to 
automatically obtain surface data from physical objects with speed and 
efficiency previously attainable only through use of much more expensive 
analog devices. 
SUMMARY OF INVENTION 
The present invention achieves the desired improvements in digital probing 
technology by repeatedly sampling the state of the probe (i.e., triggered 
or not triggered) and its instantaneous position and by continuously 
controlling the probe trajectory on the basis of the sampled data. The 
sampling intervals and the computation algorithm are selected in 
accordance with this invention to assure that the safe operating range for 
the probe is never exceeded. This permits the probe to remain continuously 
in motion and obviates the need to return it to its rest position each 
time it comes in contact with the part surface. 
Several computation algorithms are possible. Among these is one by which a 
probing plane is defined in an orthogonal coordinate system and the probe 
trajectory is modified after each computation by increasing or decreasing 
one component of the of the vector which defines the path of the probe in 
the probing plane by a constant value, while maintaining the other 
component in that plane at a constant value. The constant value is added 
whenever the probe is triggered, and subtracted when it is not triggered, 
or vice-versa. 
With another preferred computation algorithm, the path vector is redefined 
at each computation time such that the probe moves in a spiral path 
relative to its location at the time of the last transition of the probe 
in either direction between the triggered and untriggered operating 
states. The path direction may be clockwise if the probe is triggered and 
counterclockwise if it is not triggered, or vice-versa. 
To maximize the accuracy and speed of data collection, the machine servo 
loop is "probe-aware", i.e. the computation determining the probe's new 
trajectory occurs at the servo control loop level. Typically, this allows 
new commands to the servo motors every 5 milliseconds or less. However, 
satisfactory operation within the scope of this invention is also achieved 
if the trajectory is computed outside of the servo level, but this permits 
new trajectory commands to be computed only at longer time intervals such 
as every 100 milliseconds. 
A system operating in response commands every 100 milliseconds requires 
slower probe movement since a factor determining the magnitude of the 
velocity is the maximum distance that may be traversed in one computation 
cycle compared to the safe operating range of the probe. Nothing precludes 
the use of even longer time intervals between computation cycles, but the 
benefit of this invention over conventional approaches diminishes as the 
cycle time increases. 
With the present invention, data collection at a rate of 25-35 points per 
second is routinely possible, proving performance comparable to that of an 
analog system, but at a fraction of the cost.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
A preferred embodiment of the present invention utilizes a computer 
numerically controlled (CNC) milling machine tool to move a digital 
displacement probe (typically referred to as a touch-trigger probe) around 
the part from which surface data is to be obtained. Such an embodiment can 
be sold as an accessory with suitable hardware and software for existing 
installations as CNC machines are typically controlled by personal 
computers or are equipped with processor subsystems and can be readily 
programmed to perform the functions according to the present invention. 
The techniques for this are well known, and are omitted in the interest of 
brevity. Alternatively, the required software can be incorporated into the 
original programming of the machine and the probe delivered with the 
machine as sold. Of course, the invention can be embodied in a dedicated 
machine as well. 
Referring now to FIG. 1, a conventional CNC machine tool 10 has a table 12 
movable relative to the head 14 in the X,Y plane. A quill 16 provides 
motion in the Z direction establishing an orthogonal X, Y, Z Cartesian 
coordinate system. A touch-trigger probe 18 having a stylus 20 is attached 
to quill 16. Motors 22 and 24 control motion of table 12 in the X and Y 
directions, respectively, while motor 26 controls the Z-direction motion 
of quill 16. A part 28 (whose position relative to machine 10 and/or 
surface geometry is to be determined) is secured to table 12 in any 
convenient manner. 
Encoders 30, 32 and 34 provide feedback indicating the position of probe 18 
with respect to the coordinate system of the CNC machine tool 10. A 
suitable switch incorporated in probe 16 (not shown) signals whether the 
probe is triggered (indicating that the stylus 20 is in contact with the 
surface of part 28) or in its rest or non-triggered state. 
As indicated above, in a preferred embodiment, the probe and associated 
hardware and software are sold as accessories for existing equipment. A 
representative installation might be on a Hurco KMP3 milling machine 
manufactured by Hurco Companies, Inc. of Indianapolis, Ind. Such a machine 
may be fitted with a controller employing a x486 processor with 8 
megabytes of memory, and running the Microsoft Windows 95 operating 
system, and a servo transducer 5-axis PCB Assembly such as Hurco part no. 
415-0622-001) to acquire relative position feedback and to provide table 
and quill drive control signals. 
In the preferred implementation, a type MP11 touch trigger probe from 
Renishaw Inc. of Schaumburg Ill. was used, along with a PCL-725 Relay 
Actuator & Isolated D/I Card from Advantech America of Sunnyvale, Calif. 
for acquiring probe status signals. One skilled in the art will readily 
understand that other types of manufacturing equipment or other types of 
digital probes and interface cards could be used as well. 
Operation of the system of FIG. 1 may be understood from the block diagram 
shown in FIG. 2. Here, manufacturing equipment 36 corresponds to CNC 
machine tool 10 shown in FIG. 1, and the digital data gathering device 38 
corresponds to touch-trigger probe 18 and the associated signal conversion 
hardware. Manufacturing equipment feedback is provided by a data path 40, 
and represents the position signals generated by the encoders 30, 32 and 
34 in FIG. 1. Probe signals are provided over data path 42. Control system 
44 represents the suitably programmed central processor of the machine 
tool; this functions to process the feedback information from signal paths 
40 and 42 to map the instantaneous relative position of the probe as a 
data point when the probe switches between it non-triggered and triggered 
states. This data point is then processed to compute the actual part 
surface data, which may be delivered on signal path 48 for storage. The 
data point information is also used to define a move vector, in accordance 
with which, control signals are issued over signal path 46 are used by 
manufacturing equipment 36 for operating motors 22, 24 and 26 (see FIG. 
1). In a preferred embodiment, the composite move vector represents the 
relative speed of the digital probe along the X, Y and Z coordinates of 
the CNC machine tool respectively. 
Referring now to FIG. 3, routing of probe 18 along the surface of part 28 
begins with the selection of an arbitrary instantaneous probing plane by 
the control system 44 (FIG. 2), which passes through the position of the 
probe at the time, and intersects part surface 28. To simplify the 
description, it will be assumed that the instantaneous probing plane is 
further restricted by selecting a constant normal vector W throughout the 
entire probing cycle being illustrated. 
The intersection of the probing plane and part 28 defines the routing 
boundary 50 along which the actual surface data will be computed from the 
sampled data points. In FIG. 3, the W vector is shown parallel to the 
Z-axis (i.e., the probing plane is selected to coincide with the X-Y 
plane) as a matter of convenience, but it should be understood that this 
is not necessary, and in fact by changing the orientation of the W vector 
in a systematic or random fashion, using either a computer program 
executed by control system 44 or instantaneous input from a user 
manipulating an input device such as a joy stick, complex routing 
boundaries may be generated to rapidly sample the entire surface of part 
28. 
As will be appreciated, the microprocessor in the machine control system is 
capable of many iterations of the computation cycle per second, but 
because the invention does not require a complex series of computations, 
processor speed is not a limiting factor. This allows use of the invention 
even with older CNC machine tools. 
After its initial contact with the part surface 28, there commences a 
series of computation cycles during which the probe is moved on the 
instantaneous probing plane according to the following trajectory 
definition rules: (1) if the probe is in its non-triggered state, it is 
moved in a counterclockwise direction with respect to the normal W of the 
instantaneous probing plane according to some function designed to bring 
stylus 20 into contact with the part; (2) if the probe is in its triggered 
state, it is moved in a clockwise direction with respect to the normal of 
the instantaneous probing plane according to some function which returns 
the stylus to its rest position and guarantees that it remains within the 
safe operating range. 
Numerous functions exist for generating the desired clockwise and counter 
clockwise rotations, two of which are detailed below in connection with 
FIGS. 6 and 8. As will be shown, rules (1) and (2) globally route the 
probe around the part along the routing boundary 50 in the counter 
clockwise direction relative to the normal W of the instantaneous probing 
plane. It should be understood, however, that the selection of the 
counterclockwise and clockwise directions in rules (1) and (2) can be 
reversed; reversing the directions would globally route the probe in a 
clockwise direction around the part along routing boundary 50 relative to 
W. 
FIG. 4 is a flow diagram which illustrates the operation of this invention 
according to the previously stated routing rules, while FIG. 5 is a 
schematic representation of the resulting probe trajectory. In FIG. 5, it 
is again assumed that the X-Y plane has been arbitrarily selected as the 
instantaneous probing plane 52 and its normal direction is defined by 
W=(0,0,1). The intersection of the instantaneous probing plane 52 and the 
part 28 defines the routing boundary 50. 
Referring to FIGS. 4 and 5, a sequence of eight computation cycles 
(beginning at times t.sub.0, t.sub.1 . . . t.sub.7) are illustrated. At 
block 54 of FIG. 4, the probe is moved toward the part until the stylus 20 
is brought into contact with the surface of part 28 either manually, or by 
some other conventional method along an initial path U.sub.0. At block 56, 
corresponding to a time t.sub.0, a sampled data point P1 is created from 
the probe position feedback and an initial move vector is selected. The 
selection of the move vector in block 56 is such that it is parallel to 
the line segment connecting the last sampled data point with the current 
probe position. In its initial contact with the surface, where there is no 
"last" sampled data point, the move vector is selected to be the cross 
product of U.sub.0 and W. The magnitude of this vector is set according to 
some advantageous feedrate, such that the probe will remain within its 
safe operating range. The initial move vector, depicted in FIG. 5 as V1, 
is used to issue a control signal to the manufacturing equipment resulting 
in the movement of the probe along the trajectory specified by V1. (The 
apparent movement of the probe beyond this point of initial contact with 
part 28, as depicted in FIG. 3, is possible as long as the deflection of 
the stylus does not exceed the safe operating range, and in any event, it 
will be understood that distances are exaggerated in the illustrations for 
clarity.) 
At time t.sub.1, test 58 (FIG. 4) checks the operating state of probe 16. 
At this time, stylus 20 has moved to a new position Q1. Since it is still 
in contact with the part surface, the probe remains triggered, and control 
is transferred to block 60. Here, the move vector V1 is rotated in the 
clockwise direction, and a new move vector V2 (FIG. 5) is generated. This 
is used to issue control signals on signal path 46 (see FIG. 2) to move 
the probe along path V2. 
At time t.sub.2, test 62 (FIG. 4) is performed, and the probe status is 
again checked. As depicted in FIG. 5, the probe is now at position 
Q2--still in contact with the part surface. Control is therefore returned 
to block 60 where a new move vector V3 (FIG. 5) is generated by rotating 
V2 in the clockwise direction. New control signals are issued and probe 
motion continues along path V4. 
At time t.sub.3, the test at 62 is performed again and control returns to 
block 60. A new move vector V4 (FIG. 5) is created by rotating V3 in the 
clockwise direction and new control signals are issued. 
At time t.sub.4, however, when test 62 is again performed, probe stylus 20 
has moved to location P2 as shown in FIG. 5 and is out of contact with the 
part surface. The probe is no longer triggered and control is transferred 
back to block 56. 
Here, a new sampled data point P2 is created and stored, and a new move 
vector V5 is generated. In the preferred embodiment, vector V5 is selected 
to be parallel to the line segment from last sampled data point P1 to the 
current position P2. Control signals are then issued to move the probe in 
a counter clockwise direction with respect to the normal of the probing 
plane 52 along the move vector V5. 
At time t.sub.5, test 58 is performed. Stylus 20 is found to be at point 
Q4--still out of contract with the part surface, and the probe remains 
untriggered. Control thus passes to block 64. A new move vector V6 is 
defined by rotating V5 in a counter clockwise direction and the 
appropriate control signals are issued. The probe now moves along path V6, 
as shown in FIG. 5. 
At time t.sub.6, test 66 shows that stylus 20 (now at position Q5) (FIG. 5) 
is still in its non-triggered state, so block 64 generates a new move 
vector V7 (FIG. 5) by rotating the move vector V6 in the counter clockwise 
direction. Control signals are issued to the manufacturing equipment 
resulting in the motion along path V7 (FIG. 5). 
Finally, at time t.sub.7, test 66 reveals that stylus 20, now at point P3, 
is again in contact with the part surface. Probe 18 is thus triggered, and 
control moves back to block 56 where a new sample data point P3 is stored, 
and a new move vector parallel to the line between points P2 and P3 is 
generated. This cycle is repeated until the intersection of part surface 
28 with probing plane 52 has been completely mapped or the operation is 
terminated. 
To map the entire surface of part 28, provision must, of course, be made 
for determining when routing boundary 50 has been completely traversed, 
and for redefining probing plane 52. Various ways to do this are known to 
those skilled in the art, such as those used in conventional digital 
probing equipment available prior to this invention. Some of these involve 
moving probe stylus 20 off surface 28 while still in the X-Y plane, and 
offsetting the probe in the Z-direction a constant value K, but to 
eliminate the time lost while the probe is off of the part, it is 
preferred to offset the probe stylus in the Y-Z plane by the distance K 
while it is still in contact with part 28. The probing operation would 
then continue along the probing boundary in a new probing plane 52' (see 
FIG. 5) without interruption. 
Another suitable data gathering strategy would be a spiral path starting at 
the base of the part, e.g., at the level of table 12 (see FIG. 1), and 
climbing in the Z direction until the probe no longer makes contact with 
the part. These, and other suitable strategies are readily achieved by 
conventional programming to manipulate vector W during the computations 
taking place in block 56. 
According to the previously stated rules (1) and (2), control blocks 60 and 
64 produce movement of the probe along routing boundary 50 in a clockwise 
direction by defining a series of move vectors such as V1 through V7 in 
FIG. 5, and generating corresponding control signals for the machine tool 
drive motors based on the X, Y and Z components of the move vectors. 
Selection of the values for these components may be achieved in various 
ways. Two methods found to be of particular utility are described in 
conjunction with FIGS. 6 through 8. 
FIG. 6 illustrates the resultant trajectory for a constant 
addition/subtraction model for rotating the move vector. This is 
particularly useful for a relatively flat unknown three dimensional 
surface which is lofted in the Z direction. 
To illustrate this model, assume that the X-Z plane with a constant Y value 
is selected as an instantaneous probing plane 68. The normal vector W is 
defined by (0,1,0). Initially, the probe 18 is driven toward surface 70 of 
part 72 in plane 68 along path U.sub.0 from right to left in the 
X-direction at constant speed V.sub.X, i.e., the component of the move 
vector in the Z direction is zero (see FIG. 6). When stylus 20 contacts 
surface 70, the probe is triggered and the point of contact P.sub.1 is 
specified as the first data point at block 54 (see FIG. 4). The first move 
vector V.sub.1 is then generated at block 56 with the X-component 
maintained at its previous value V.sub.X but with Z-component V.sub.Z 
increased by a constant value C. (If the initial Z-component of the 
velocity, i.e., along path U.sub.0 is assumed to be zero, for the first 
computation cycle, V.sub.Z would be equal to C.) 
As long as tests of the probe status at successive test times t.sub.1, 
t.sub.2, etc. (see FIGS. 4 and 5) indicate that the probe is still in its 
triggered state, the X-components of successive move vectors remain 
constant and the Z-components are increased by the same constant value, 
i.e., from C to 2C to 3C, etc. (see FIG. 6). The result is a concave 
curve, or clockwise move such as illustrated by trajectory segment 74 
(FIG. 6). 
When the probe status changes from contact to non-contact at point P2 (see 
FIG. 6) the computation proceeds to block 56 (FIG. 4). Here, the move 
vector V.sub.Z is calculated to be parallel to the line connecting the 
points P.sub.1 and P.sub.2, with the X-component V.sub.2X remaining the 
same, and the Z-component 
##EQU1## 
At block 64, if the probe stylus 20 is not in contact with the surface at 
the time of measurement, the X-component of the move vector is still held 
constant but the Z-component is decreased, again by the selected constant 
value, i.e. from C.sub.0 to C.sub.0 -C, C.sub.0 -2C . . . until the probe 
is triggered. The probe trajectory then becomes convex as illustrated by 
trajectory segments 76. 
A simplified version of the approach detailed above would be to set V.sub.Z 
equal to a positive constant K.sub.0 when the probe is triggered, and 
equal to -K.sub.0 when the probe is not triggered. Other variations are 
also possible. 
In general, the feed rate of the machine which determines the velocity of 
the probe must be such that in one computation cycle the probe can not 
travel beyond its safe operating range. The actual numbers depend on the 
duration of the computation cycle and the safe operating range for the 
particular probe being used. For the exemplary installation described 
above using a Renishaw MP11 probe, for a model using constant X-direction 
speed of 2 inches per minute, constant C.sub.0 can vary from 0.1 to 0.5 
inches per minute. In general, the computation cycles (under 0.02 sec. for 
the installation described) are short enough that processor speed is not a 
factor. 
Furthermore, in the preferred embodiment, if the probe is signaling its 
triggered state, it is possible to include in the computation algorithm, a 
comparison of the current probe position with the last sampled data point 
to ensure that the probe will not exceed its safe operating range between 
successive computation cycles. To implement this feature, if the 
comparison indicates that the probe is near the limit of its safe 
operating range, the X-component of the move vector, V.sub.X, is held at 
zero until the probe is no longer triggered. This may readily be 
incorporated into the computations performed at blocks 60 and 64 in FIG. 
4. 
A more sophisticated implementation for rotating the move vector in either 
the clockwise or counterclockwise direction is depicted in FIG. 8. Under 
this implementation the resulting trajectory drives the probe spirally 
about the last sampled data point. In FIG. 8, the unit normal W of the 
instantaneous probing plane is perpendicular to and pointing out of the 
figure (not shown); u represents the unit vector whose orientation is 
parallel to the vector passing through the last sampled data point P2 and 
the current position P.sub.C. An instantaneous orthogonal coordinate frame 
u, t, W may be determined by selecting t to be the cross product of W and 
u. Rotation of the move vector V along a spiral trajectory may be realized 
with the assistance of the spiral ratio R. The spiral ratio is calculated 
as follows: 
##EQU2## 
where C is an adjustable constant which can be determined through 
experimentation for each system (it is set at 15 in the preferred 
embodiment), sd represents the safe operating distance of the probe and d 
is the distance between current position PC and the last sampled point P2. 
In the preferred embodiment, as d varies from 0 to sd the spiral ratio R 
changes from 15 to -1. For a counterclockwise spiral trajectory, the move 
vector V can be computed with the assistance of the spiral vector S as 
follows: 
EQU S=R.times.u+t (3) 
and 
##EQU3## 
where .linevert split.S.linevert split. is the length of the spiral 
vector. The move vector V is selected to be parallel to S with a magnitude 
of M equal to the desired feedrate. To generate a clockwise spiral 
trajectory, equation (2) is replaced by: 
EQU S=R.times.u-t (3') 
This implementation guarantees that the probe will never go beyond the safe 
operating distance sd. FIG. 8 shows the resulting counterclockwise spiral 
trajectory. 
Several options within the scope of this invention have been described for 
generating the move vectors. It will be obvious to one skilled in the art 
that other computation algorithms are possible as well. It will also be 
apparent that the magnitude of the move vector (i.e., the selected 
feedrate) may vary dynamically along with the change in the direction of 
the move vector. 
In general, it is preferred that one computation algorithm be employed for 
the duration of a probing operation, but it is possible to provide the 
option for selection of one computation algorithm from among several 
including within the programming. 
Programming for implementation of the computations may be done in any 
conventional manner, and will be apparent to one skilled in the art, so a 
description is omitted in the interest of brevity. 
Other variations within the scope of the invention will also be apparent to 
one skilled in the art, it being understood that the scope of the 
invention is defined in the claims which follow.