Here we describe our efforts to provide absolute calibration of our Wire Position Sensor Version One, or WPS1. We present the WPS1 and our study of its precision and stability in WPS1. We recommend you read the Optics and Geometry sections of that page before you attempt to make sense of our discussion of calibration.

By calibration of a WPS1, we mean the measurement of a set of characteristics of an individual WPS1 that will allow us to translate this WPS1's wire images into the absoulte position and orientation of the wire with respect to the WPS1's mounting balls. The mounting balls define a coordinate system called mount coordinates. Each camera has its own set of calibration constants that describe its optical properties in mount coordinates. The constants allow us to take an image of a wire and determine a plane containing the wire center-line. We call this plane the wire plane, and we define it with a point and a vector. We obtain the position and direction of the wire by intersecting the wire planes from both WPS cameras.
The mount coordinate origin is the center of the ball under the conical depression of teh kinematic mount. We call this ball the cone ball. The balls under the slot and flat depressions are the slot and flat balls respectively. The y-axis is upwards and perpendicular to the plane defined by the three ball centers. The z-axis lies in this same plane and is roughly in the direction of the arrow made by the three balls, and parallel to the nominal wire direction. The exact direction of the z axis is determined by the slot-cone line and the plane of the three balls. We start with the slot-cone line and rotate it by 0.2798 radians (16.031 degrees) in the plane of the three balls, so that the z axis passes between the slot and flat balls.
With respect to the figure above, the mount coordinate origin is at the center of the center ball. The x-axis is from right to left. The y-axis is from bottom to top. The z-axis is into the page.
We specify the location of features in an image with image coordinates. Image coordinates are left-handed on the computer screen, but right-handed on the surface of the image sensor. When we display an image, the image coordinate origin is at the top-left corner of the top-left pixel. The x-axis is from left to right and the y-axis is from top to bottom. Image coordinates are left-handed when we display an image. But when we lay the image coordinates on the image sensor surface, the origin is on the bottom-left corner of the bottom-left pixel. The x-axis is from left to right and the y-axis is from bottom to top. Image coordinates are right-handed on the sensor surface. For further explanation of image coordinates, including illustrations, see Image Geometry.
The WPS1 calibration parameters are geometric characteristics of the WPS1 expressed in mount coordinates. Each WPS1 camera has nine calibration constants, which are the values of its nine calibration parameters. The first three are pivot.x, pivot.y, and pivot.z. These give the mount coordinates of the camera pivot point. The next three are sensor.x, sensor.y, and sensor.z. These give the mount coordinates of the center of the image sensor. The center is the point that corresponds to image coordinate point (1220 μm, 1720 μm). The final three coordinates are rot.x, rot.y, and rot.z. These give the rotation of the image sensor (which we also call the CCD) about the mount coordinate x, y, and z axes. These three rotations are all zero when the mount coordinate x-axis is perpendicular to the image sensor surface and the image coordinate y-axis is parallel to and in the same direction as the mount coordinate z-axis. Positive rotation about a mount coordinate axis is such that it would move a right-handed screw in the positive axis direction.

What we call the camera axis is the line from the center of the image sensor (the CCD center) to the pivot point. As you can see above, the nominal value of rot.z is −31° for Camera 1 and +31° for Camera 2. The nominal value of rot.y is zero. Both these rotations will be correct by construction to within ±20 mrad, and each has only a second-order effect upon the WPS1 measurement. The rot.x parameter is nominally −90° for Camera 1 and +90° for Camera 2. By construction, these rotations will be within ±10 mrad of nominal. They have a first-order effect on WPS1 measurement.
The nominal calibration constants for Camera 1 and 2 are as follows, in the order we present them above. We express angle parameters in milliradians and length parameters in millimeters.
WPS1_1 -4.500 87.400 -5.000 -14.272 93.271 -5.000 -1570.796 0.000 -541.000 WPS1_2 -4.500 37.400 -5.000 -14.272 31.529 -5.000 1570.796 0.000 541.000
These nominal calibration constants place the center of the WPS1 field of view at mount coordinate position (37.1 mm, 62.4 mm, −5 mm).
Another way to represent the calibration constants is to subtract the nominal values and leave only the deviations from nominal values. In our initial presentation of calibration constants to CERN, we subtracted the nominal rotations from rot.x, rot.y, and rot.z, so that the nominal calibration of each camera came out as:
WPS1_1 -4.500 87.400 -5.000 -14.272 93.271 -5.000 0.000 0.000 0.000 WPS1_2 -4.500 37.400 -5.000 -14.272 31.529 -5.000 0.000 0.000 0.000
To convert from these constants to the absolute constants, you have to know the nominal rotations for each type of camera, and which type of camera each set of parameters corresponds to.
We show elsewhere how the WPS1 can measure the position of steel pins with accuracy of order 1 μm, although we note that reflections of the ground surface of steel pins confuse the edge-finding analysis. We must raise the analysis threshold from "10 #" to at least "30 #" to get reliable results, and even then, we are not sure if the reflection has a systematic affect upon the apparant edge location.
Nevertheless, a ground steel pin is straight, stiff, and round, with a diameter known to within a few microns. A 1/16" (1.58 mm) diameter pin is large enough for our CMM to measure. With a black coating, we may be able to eliminate the reflections, and so create a near-perfect reference wire.
The following photograph shows our WPS1 calibration stand, which implements WPS1 calibration with a steel pin, a micrometer stage, and a CMM.

The steel pin has its own back-light with an LED array and an opal glass diffuser. We use this back-light because it allows us to calibrate the WPS1 with its lid removed. When the lid is removed, it is easy for us to hold a short pin in the field of view with a simple U-bracket.

We measure the pin position with the CMM. To allow the CMM probe to approach the pin, we remove the back-light. We measure the WPS1 mounting balls. We remove the WPS1 to allow the CMM probe to touch the mounting balls. We calculate the pin position in mount coordinates.
We measure the three reference balls on the micrometer stage. Our initial measurement of the mounting balls and reference balls allows us determine the mounting ball positions from any future reference ball positions.

We mount the WPS1 and take images of the pin. We move the micrometer stage and re-measure the reference balls. We calculate the mounting ball positions. The pin is in the same place. We calculate its position in the new mount coordinates. We take image with the WPS1. And so we proceed with new positions of the micrometer stage. Each step is a horizontal movement of the WPS1 with respect to the wire. The movie below shows one step.
When the pin has moved from one side of the WPS1 field of view to the other, we raise the pin with a vertical micrometer and re-measure its position. We WPS1 horizontally so that the pin appears to move through its field of view again. We move the pin once more, this time giving it a 200-mrad inclination to the horizontal, measure its position and direction, and execute a few more calibration steps.
At the end, we have N pin positions in mount coordinates, generated by the CMM program. In our first calibrations, we had N=12. Each wire position is a point in the wire and a vector along the wire, as well as a measurement of the wire diameter. We have N sets of edge positions from the WPS1 images. Each set of positions is a single line of text containing eight numbers. Each edge receives a position and rotation on the image.
Our calibration software transforms these N wire positions and the N sets of four edge positions into calibration constants for Camera 1 and Camera 2.
We have two independent methods of analyzing the CMM and WPS measurements we obtain from the calibration stand. One method uses Matlab, and is the work of James Bensinger. The other uses Pascal, and is the work of Kevan Hashemi. Both methods work by adjusting the camera calibration constants so as to minimise the discrepency between the WPS and CMM measurements.
The first version of our Pascal method measures the discrepency between the WPS and CMM measurements by calculating the shortest distance between each wire and the ray defined by each wire image. The wire image defines a ray because we have a set of camera parameters that allow us to construct a ray passing through a point on the image and the camera pivot. You will find our library of WPS routines in wps.pas.
Both the Matlab and Pascal procedures attempt to minimize the calibration error, which is the root mean square error between the wire positions measured by the WPS and the positions measured by the CMM. The calib_calc_1.pas program makes small, random disturbances to the camera parameters and accepts these changes if and only if the calibration error is less for the new values. We found this method superior to a steepest descent routine. The error manifold contains long, thin valleys that slow down the steepest descent.
[26-JUN-08] We worked on calibration data we obtained from Q0131-1 (WPS number Q0131, camera 1) using calib_calc_1.pas. This procedure uses the wire images in the following way. It finds the intersection of a wire image with the center row of the sensor. It uses this intersection as a point to generate a ray through the camera pivot point. Using the existing camera parameters, the procedure calculates the distance from the ray to the wire. We can use left edges of wires, right edges, or wire centers, but we obtain roughly the same results from all of them. Each wire image produces one piece of information: the x-coordinate of a point in the image. Because the procedure ignores the height of the image, it is not sensitive to rotation.x. The wires themselves we implement as three-dimensional objects using the CMM measurements.
We tried adjusting various subsets of the camera parameters. We found we had to keep pivot.z and rotation.x fixed. These two parameters are not constrained by our data. The pivot.z is not constrained because we do not have wires that slope up as well as down with z. The rotation.x is not constrained because we treat the wires as points on the CCD instead of lines.
We worked with the data of Q0131-1. We rejected data point 1 because the wire image was off the screen. We rejected data point 9 because the CMM measurement is a repeat of the measurement for data point 8. After rejecting these two points, we are left with ten calibration data points. We ran our minimization routine hundreds of times with ten thousand iterations. The calibratioin error never dropped below 10 μm, no matter what subset of the camera parameters we fitted or fixed, and no matter whether we used left edges, centers, or right edges.
[12-DEC-08] We return to the calibration problem with calib_calc_2.pas. The new program file uses the same fitting algorithm. We fit pivot.x and pivot.y, but not pivot.z. We fit sensor.x, sensor.y, and sensor.z. We disturb the initial values of these positions by a random ±0.5 mm before we begin our fit. We fit rotation.z also, but we do not disturb it before the fit. We keep rotation.x fixed because our procedure is not sensitive to rotation.x. We fix rotation.y because we know that it is within a few milliradians of zero by construction. We are fitting six parameters and we have ten measurements.
We ran the fit on the Q0131-1 data with 1M iterations using wire centers. For each wire we obtain its center position by taking the average of its left and right edges. After 1M iterations the calibration error was 3 μm. The fit took ten minutes. The calibration error settled to 3 μm after the first 200k iterations. The following figure shows the Q0131-1 calibration errors at the end of the fit.

We performed our non-deterministic fit with 200k iterations ten times. The following table summarizes our results.

The average pivot-ccd distance is 11.9 mm, which we compares well enough to the 11.4 mm we expected from our measurement of the optics. When we use the average values of the calibration constants, we get a calibration error of 4 μm.
[17-DEC-08] We use left edges instead of wire centers. We run the fitting routine with 200k iterations. The calibration error is 4 μm. We use the left edge of data point 1, so now we have eleven data points in our fit. (We can't use the right edge or the center of point 1 because the right edge of the wire image is off the screen.) The calibration increases slightly to 5 μm. For a graph of the errors on the eleven points, see here. We moved on to Q0131-2. We have to skip point 9, but with the remaining 11 points, we fit six parameters and obtain a calibration error of 6 μm (see here).
[18-DEC-08] We use left edges and eleven points to calculate the parameters of Q0130-1 and Q0130-2. We obtain calibration errors of 4 μm and 6 μm respectively. For error plots see Q0130-1 and Q0130-2.
[17-FEB-09] We switch to a black-anodized steel pin in our calibration stand. There is no sign of reflection off the surface of the pin. This makes our analysis more robust, and allows us to obtain a wider range of motion during calibration.

We obtain 22 calibration points for two wire angles using Q0129, a WPS1-A. We calibrate using wire centers and all 22 points. The calibration includes two pin angles, which constrains our pivot.z parameter. We fit pivot.x, pivot.y, pivot.z, sensor.x, sensor.y, sensor.z, and rotation.z. Instead of fitting by random steps, as we did before, we now implement a downhill simplex fitting routine (Nelder-Mead Method). You will the simplex code in calib_calc_3.pas.

We obtain calibration error 3 μm with both Camera 1 and Camera 2 using the centers or the left edges. With the right edges, our error rises to 4 μm. The table below gives the calibration constants we obtained from repeated fits from random starting points using the wire centers. The simplex fitting routine takes one or two thousand iterations to converge to 3 μm. Our previous random-step method, when applied to the same data, converged only to 6 μm after 200k iterations.
---------------------------------------------------------------------------------------- Iter- pivot (mm) sensor (mm) rot (mrad) pivot- error ations x y z x y z x y z ccd (mm) (mm) ---------------------------------------------------------------------------------------- 1854 -7.035 89.782 -3.538 -17.219 95.838 -3.830 -1570.796 0.000 -551.401 11.852 0.003 1612 -7.035 89.782 -3.538 -17.219 95.838 -3.830 -1570.796 0.000 -551.402 11.852 0.003 1411 -7.035 89.782 -3.538 -17.219 95.838 -3.830 -1570.796 0.000 -551.401 11.852 0.003 1924 -7.035 89.782 -3.538 -17.219 95.838 -3.830 -1570.796 0.000 -551.401 11.852 0.003 1716 -7.035 89.782 -3.538 -17.219 95.838 -3.830 -1570.796 0.000 -551.402 11.852 0.003 1716 -7.035 89.782 -3.538 -17.219 95.838 -3.830 -1570.796 0.000 -551.402 11.852 0.003 ----------------------------------------------------------------------------------------Table: Calibration Constants Determined for Q0129-1 from Random Starting Points. The pivot-ccd distance we deduce from the pivot and sensor positions.
As you can see, the fit converges to the same values within a micron or so. When we use left and right edges, we obtain different constants.
---------------------------------------------------------------------------------------- Edges pivot (mm) sensor (mm) rot (mrad) pivot- error Used x y z x y z x y z ccd (mm) (mm) ---------------------------------------------------------------------------------------- Left -7.171 89.861 -3.502 -17.388 95.938 -3.790 -1570.796 0.000 -533.399 11.891 0.003 Right -6.981 89.755 -3.581 -17.130 95.790 -3.879 -1570.796 0.000 -569.330 11.812 0.004 Center -7.035 89.782 -3.538 -17.219 95.838 -3.830 -1570.796 0.000 -551.401 11.852 0.003 ----------------------------------------------------------------------------------------Table: Calibration Constants Determined for Q0129-1 for Left, Right, and Center of Images. We do not fit rot.x or rot.y.
[26-FEB-09] We improve the convergance criteria of our simplex fitting routine and expand it to fit all nine of our calibration parameters. We incorporate the rotation of wire images into our error calculation by representing each wire image with two points: one towards the top of the CCD and one towards the bottom. These two points each define a line through the camera pivot point, and we calculate the distance between this line and the wire. With 22 wire positions, we have 44 image points involved in our error calculation.
We find that we must fit rot.x and rot.y together in order to reduce the calibration error to 3 μm again. It appears that the rotation about the y-axis is real. When fitting all nine parameters from random starting points, the fitting routine converges in roughly five thousand iterations, which takes twenty seconds on our 1-GHz iBook G3. When we repeat the fit ten times, we get the same result to within 1 μm and 1 μrad.
---------------------------------------------------------------------------------------- Edges pivot (mm) sensor (mm) rot (mrad) pivot- error Used x y z x y z x y z ccd (mm) (mm) ---------------------------------------------------------------------------------------- Left -7.180 89.867 -3.545 -17.398 95.946 -3.843 -1572.698 38.660 -533.280 11.893 0.003 Right -6.985 89.759 -3.634 -17.134 95.795 -3.944 -1573.439 27.636 -569.372 11.813 0.004 Center -7.042 89.787 -3.590 -17.226 95.844 -3.894 -1573.266 33.136 -551.365 11.853 0.003 ----------------------------------------------------------------------------------------Table: Calibration Constants Determined for Q0129-1 for Left, Right, and Center of Images. We fit all parameters.
We see that the addition of rot.x and rot.y to the fit moves the calculated pivot and senor positions by less than 10 μm, and rot.z changes by less than 100 urad. The differences between the right, left, and center calculations remain intact.
---------------------------------------------------------------------------------------- Edges pivot (mm) sensor (mm) rot (mrad) pivot- error Used x y z x y z x y z ccd (mm) (mm) ---------------------------------------------------------------------------------------- Left -7.096 37.487 -3.963 -17.504 31.000 -3.926 1568.053 66.902 523.649 12.264 0.005 Right -6.845 37.673 -4.094 -17.201 31.229 -4.092 1570.069 58.633 547.455 12.197 0.006 Center -6.936 37.604 -4.029 -17.316 31.139 -4.009 1569.173 62.729 535.665 12.229 0.005 ----------------------------------------------------------------------------------------Table: Calibration Constants Determined for Q0129-2 for Left, Right, and Center of Images. We fit all parameters.
Our calibration of Camera 2 has error 5 μm. We see a 250-μm difference in pivot.x between the our use of left edges and our use of right edges. As with Camera 1, the right edges appear to be less accurate than the left edges. We apply the simplex fitting with nine parameters to Q0130 and Q0131. We move the simplex routines into utils.pas. You will find the abbreviated code with embedded data for three sensors in calib_calc_4.pas.
[04-MAR-09] We now attempt to calibrate both cameras at the same time. We have two ways to calculate the calibration error. The first is to add the calibration error from each camera's set of rays, which is what we have been doing for each camera individually until now. We call this the ray calibration error. The second is to intersect the planes defined by the camera images, and compare the line of intersection with the CMM-measured wire position. If you imagine a wire center-line on the image sensor, and project it through the pivot point, you will see that the wire image defines a plane. The intersection of the planes from the two cameras is the WPS-measured center-line of the wire. We compare this WPS-measured center-line to the CMM-measured center-line at two z-coordinates so that we are sensitive to wire rotation. The line calibration error is the rms value of the error between the WPS and CMM wire center for all wire positions and both z-values. Our calib_calc_5.pas program lets us choose between these two calibration errors, and fits all eighteen WPS calibration parameters at the same time.
The simplex fitter converges after 100,000 iterations in the case of the line calibration error, and has not converged after 200,000 iterations with the ray calibration error. Our simplex fitter appears to be confused by the two independent sets of parameters that contribute to the ray calibration error. But even with the line calibration error, the final parameters vary significantly from one fit to the next.
---------------------------------------------------------------------------
pivot (mm) sensor (mm) rot (mrad) error
x y z x y z x y z (mm)
---------------------------------------------------------------------------
-5.313 88.777 -3.060 -15.077 94.589 -3.243 -1574.742 38.744 -587.368 0.008
-5.778 89.034 -2.879 -15.658 94.910 -3.022 -1574.327 38.785 -576.398 0.007
-6.091 89.225 -3.146 -16.045 95.146 -3.350 -1574.263 38.681 -574.408 0.008
---------------------------------------------------------------------------
Table: Calibration Constants Determined for Q0129-1 using Line Calibration Error. The error at the end is the final value of the line calibration error according to the simplex fitter.
We take the dual camera calibration and check it with a TCL script we can run in the LWDAQ Toolmaker. The script is called calib_check_1.tcl. We compare the WPS wire position to the CMM wire position at a single z-coordinate, and do this for all wire positions. We perform the same calculation at the end of our calib_calc_5.pas execution (in the cases where it converges), and we compare the two sets of errors, which should be identical. They are not: it turns out that three decimal places in our calibration constants are insufficient. So we switch to four decimal places for the calibration constants and try again. Now the errors agree to within ±1 μm.
When we fit all eighteen parameters at once by minimizing the line calibration error, we reach a final line calibration error of 8 μm most of the time, sometimes 7 μm. Both calib_check_1.tcl and calib_calc_5.pas agree upon the total error and the individual errors for each wire position. When we fit the nine parameters of each camera separately by minimizing the ray calibration error for each camera, we arrive at a final line calibration error of 7 μm, and our fitting routine converges upon the same final values to within 1 μm.
We conclude that our best calibration calculation is to fit the parameters of the two cameras separately, and use the ray calibration error. By this means, we obtain an absolute calibration accuracy of 7 μm across the field of view of a WPS1-A. As we discuss in Aberration and Distortion, we suspect that the WPS1-A optics intruduce errors of up to 20 μm at the edges of the field of view. We now calibrate a WPS1-B and find that it's accuracy is far superior to that of the WPS1-A. We report in the next section.
[12-MAR-09] We calibrated P0195, our first WPS1-B. We determine the calibration constants for each camera separately using the ray calibration error. The ray calibration error of both cameras is 1 μm. For the ×100 ray errors for P0195_1, see here. The line calibration error of the entire device is 2 μm. We show the line errors for each wire position below.

We determine 9 calibration constants for each camera using images of 22 wire positions. We have over twice as many wire positions as we need to fit our parameters.
Detail: We can calculate the camera calibration constants using only the left edges of the wire images, or only the right edges, or by combining the two. We find that the constants we obtain using only the left or the right edges give us poorer line calibration error: 12 μm for right edges on P0195 and 11 μm for left edges. We're not sure why the single-edge calculation is so inferior for these cameras, but there may be a bug in our implementation. We obtain our 2-μm line calibration error using the centers of the wire images.
We calibrate P0195 again and re-calculate the calibration constants. We refer to the first calibration as A and the second as B. The table below gives the constants we determined from each calibration. We use our new calib_calc_6.pas to read data files automatically. We have calib_extract_1.tcl to extract the CMM measurements from the CMM output file. We use calib_check_1.tcl to determine the line calibration error of a set of calibration constants.
--------------------------------------------------------------------------------------------------
pivot (mm) sensor (mm) rot (mrad) pivot- error
Camera x y z x y z x y z ccd (mm) (mm)
--------------------------------------------------------------------------------------------------
P0195_A_1 -4.3892 88.4846 -4.4033 -13.7607 93.7637 -4.3873 -1577.741 -0.008 -493.211 10.756 0.001
P0195_B_1 -4.3073 88.4222 -4.1131 -13.6644 93.6896 -4.0386 -1577.685 0.436 -495.197 10.738 0.001
P0195_A_2 -3.8191 39.3077 -4.6536 -12.7098 33.5709 -4.7217 1562.642 -1.805 573.494 10.581 0.001
P0195_B_2 -3.8608 39.3033 -4.3716 -12.7653 33.5628 -4.3823 1562.571 -2.101 573.215 10.594 0.001
--------------------------------------------------------------------------------------------------
Table: Calibration Constants for P0195, Measurement A and B. Each measurement takes one hour.
As you can see, the pivot position differs by roughly 100μm. We took the P0195_A constants and applied them to the WPS and CMM measurements of calibration B. Our line calibration error on the B measurements was 3 μm. We took the P0195_B constants and applied them to the A measurements. The line calibration error was once again 3 μm.
Here we present the most recently-measured calibration constants for the existing WPS1s. In addition to the nine constants, we give the pivot-ccd distance for each camera and the camera's calibration error. We calculate the pivot-ccd distance from the calibrated pivot and sensor positions. The error is the ray error for the camera and its calibration pin positions (see above for definitions and details). You will find an archive of all our WPS1 calibration images and data files here.
------------------------------------------------------------------------------------------------
pivot (mm) sensor (mm) rot (mrad) pivot- error
Camera x y z x y z x y z ccd (mm) (um)
------------------------------------------------------------------------------------------------
P0195_1 -4.3073 88.4222 -4.1131 -13.6644 93.6896 -4.0386 -1577.685 0.436 -495.197 10.738 1.3
P0195_2 -3.8608 39.3033 -4.3716 -12.7653 33.5628 -4.3823 1562.571 -2.101 573.215 10.594 0.8
P0197_1 -3.7906 89.4672 -3.8999 -12.5781 94.6556 -3.8052 -1575.547 14.727 -537.395 10.205 1.2
P0197_2 -3.3961 38.2920 -4.5059 -12.2748 32.8203 -4.5708 1574.446 7.187 546.390 10.430 1.5
P0198_1 -3.0843 90.1940 -4.2425 -11.9576 95.7197 -4.3450 -1575.744 0.437 -541.792 10.454 1.2
P0198_2 -3.7644 38.9943 -4.6077 -12.7347 33.4335 -4.6656 1567.472 -2.328 551.404 10.554 1.3
P0199_1 -3.0807 90.0282 -4.1893 -11.7775 95.4612 -4.1093 -1573.379 12.464 -554.912 10.255 1.0
P0199_2 -4.2113 39.6984 -4.1309 -13.1938 34.3032 -4.0849 1571.324 -0.426 519.343 10.478 0.7
P0200_1 -3.7885 89.4043 -4.2377 -12.5270 94.9308 -4.2667 -1567.298 10.040 -556.169 10.339 1.6
P0200_2 -4.2151 38.6110 -4.5358 -13.2755 33.1151 -4.5946 1572.835 8.406 525.869 10.597 1.9
P0201_1 -3.7992 89.0629 -4.0823 -12.6996 94.3538 -4.1472 -1569.350 11.913 -532.884 10.354 1.5
P0201_2 -4.1684 38.7802 -4.1355 -13.1010 33.2285 -4.2102 1560.343 15.907 547.316 10.518 1.3
P0202_1 -3.9688 89.2693 -4.3937 -12.8662 94.7569 -4.2628 -1568.482 14.449 -540.951 10.454 1.5
P0202_2 -4.4135 39.0829 -4.2892 -13.4683 33.8120 -4.3727 1573.235 2.048 514.979 10.477 1.5
P0203_1 -3.0524 89.2967 -4.3284 -11.8453 94.7261 -4.3051 -1573.151 7.914 -543.224 10.334 1.9
P0203_2 -3.4665 38.0783 -4.1433 -12.3490 32.5047 -4.2011 1573.072 -6.642 538.407 10.486 1.6
Q0129_1 -7.0421 89.7874 -3.5899 -17.2263 95.8444 -3.8943 -1573.266 33.136 -551.365 11.853 3.3
Q0129_2 -6.9359 37.6035 -4.0286 -17.3163 31.1393 -4.0094 1569.173 62.729 535.665 12.229 4.6
Q0130_1 -5.0285 88.6823 -1.8141 -15.7230 94.9590 -1.3438 -1567.144 -35.132 -510.121 12.409 6.5
Q0130_2 -2.0807 39.9298 -6.0488 -11.8436 34.2353 -6.7620 1568.044 -0.141 652.405 11.325 6.1
Q0131_1 -5.6082 89.6961 -2.9988 -16.1144 96.4313 -2.7459 -1576.227 5.898 -519.091 12.482 3.1
Q0131_2 -2.4564 40.7047 -4.6130 -12.0240 35.1758 -5.2505 1584.573 39.607 663.654 11.069 2.2
Q0132_1 -4.4475 87.6752 -4.0442 -14.6304 93.6529 -3.9048 -1574.944 1.036 -638.629 11.809 3.1
Q0132_2 -4.1223 37.6675 -4.9617 -14.3354 31.3532 -4.6422 1578.667 -23.815 537.598 12.012 3.5
------------------------------------------------------------------------------------------------
Table: Calibration Constants for Existing WPS1s. Note that the error is given for the cameras individually, and is in units of microns. The devices with names beginning with P are WPS1-B. Those with names beginning with Q are WPS1-A.
When we combine both cameras ito measure the calibration pin positions, we arrive at the line calibration error. In each case, we find the line calibration error is close to the sum of the two ray calibration errors. The line calibration error for P0199 is 1.3 μm calculated over 22 pin positions, while that for Q0130 is 13 μm calculated over 11 pin positions. Device Q0132 could not see both edges of the pin in positions 1, 4, 19, and 22 of the extended calibration procedure, so we calculated its parameters using the remaining eighteen positions.
The line calibration error of the WPS1-B varies from 1.3 μm to 2.5 μm. That of the WPS1-A varies from 4.5 μm to 13 μm. We see that the WPS1-B optics do indeed improve the accuracy of the instrument. Furthermore, all pin positions are visible to all WPS1-Bs, which shows that the camera fields of view are more consistent.
Our calibration procedure is conceptually simple: it relies only upon a CMM. No complex calibration pieces are necessary. We obtain absolute calibration accuracy of 3 μm across a 7 mm × 12 mm area using our WPS1-B optics, and 7 μm using our WPS1-A optics.
We now have a growing database of WPS calibration constants. The Acquisifier script called WPS_3.txt shows how to use the database to translate WPS results into wire planes.