Volodymyr Kindratenko
Visualization and Virtual Environmentsgroup
National Center for SupercomputingApplications
University of Illinois at Urbana-Champaign
Electromagnetic trackers are sensitive to electrically or magneticallyconductive objects. If there is a metal near the electromagnetic tracker'stransmitter or receiver, the transmitter signals are distorted and theresulting position/orientation measurements contain errors. There are twocomponents that contribute to the total error: static error and dynamicerror. Static errors as high as 4 feet have been observed near the maximumrange of the tracker. The purpose of this document is to collect all theinformation related to the problem of correcting the static error (as far as Iknow, no work was done to correct the dynamic error).
Assuming that the transmitter's position is fixed and the surrounding metaldoes not move, the static error is a function of the position of the receiverand it can be corrected as long as the magnetic field does not "foldback" on itself.
Common approach is to build a calibration table by recording the trackedpositions at known locations and (try-)linearlyinterpolate between them. The assumption is that the distortions of themagnetic field are linear within a given sub-space. The disadvantage of thisapproach is that it requires a lot of precise measurements to be taken in orderto build a good calibration table. Also, it has no provision for the calibrationof the angular error.
A method has beenpresented based on the user moving around the space and aligning real andvirtual objects where correction appears to be needed. This method avoids therepetitive measurements of positions and reduces the number of correctionpoints required by allowing to concentrate on the area of the space which mostneeds corrections. Unfortunately, the issue of rotational error correction hasnot been addressed.
Another method has been proposed in whichposition and orientation correction equations are derived by solving a highorder polynomial fit problem. A calibration table is recorded by placing thereceiver at points of known locations with know orientation. Comparably smallnumber of points needs to be recorded. Fitting polynomials are build for x, y,z, azimuth, elevation, and roll and are used to compute the fitted values frommeasured values. Some tuning of the method is required, but it has to be doneonly once.
The CAVE library has a tracker calibration support build in. The cave.confighas the following options to enable/disable the calibration:
Dave Pape: "Thecalibration file contains a table of evenly spaced tracker readings andcorresponding correct positions of these points; the CAVElib linearlyinterpolates between the table entries to get a corrected value for the datareceived from the tracker. In the file, the first four lines are a header,defining the resolution and range of the calibration table. The rest of thefile is the entries for the table. The header is: <grid-spacing><min-x> <max-x> <min-y> <max-y> <min-z><max-z>. These are all in feet. The X/Y/Z coordinates, for both theheader and the data that follow, are in the transmitter coordinate system. Forthe way we read Flock-of-Bird data, this is Y-up, with the origin at thetransmitter. The table entries are one per line; the first three numbers are X,Y, Z values that the tracker would report, the second three are the correct X,Y, Z coordinates for that reported location. The reported-tracker-values arethe evenly spaced grid points that form the correction table's grid. Inreality, the library doesn't pay any attention to those values; they're theremainly for reference; but this means that the entries _must_ be in the rightorder - Z changes fastest, followed by Y, then by X. A scaled down version of acalibration file is available on-line at http://www.evl.uic.edu/pape/CAVE/correction.table.txt."
Abhinav Kapoor made a simple tool thatreads CAVE/ImmersaDesk tracker correction tables and generate a file that canbe viewed in the CAVE using the CAVE6D application. This allows to identifyareas of greatest tracker error in the CAVE/IDesk.
The document was created by VolodymyrKindratenko
Last modified: Thursday, December 23, 1999 12:06:04 PM