UNC Magnetic Tracker Calibration Research

Magnetic tracker calibration data and code

This data, code, and configuration file set was used to generate the results in the Presence article and the AR snapshots on these web pages. The format of the data files is as follows.

Each file has a given number of "samples." Each sample consists of a given number of readings from the magnetic tracker (FOB), then a given number of readings from the mechanical tracker (Faro), and then the time that elapsed (in seconds) between the first reading (from either) and the last reading (from either). A reading consists of seven numbers (in this order): the x, y, and z position measurements (in meters), and the x, y, z, and w components of a quaternion. All numbers are IEEE standard double-precision floating point values in big-endian byte order.

Associated with each file is a set of auxiliary transformations. These transformations close the loop involving the two trackers, as described in the paper. A set of auxiliary transformations can be associated with more than one data set, as is the case below.


The files are given by their name and by the compressed name. Only one link per file will be a valid link at a given time, but I don't want to promise which one. There is no difference in the data stored, only in whether or not the file is compressed (with gzip).
FilePointsReadingsAux Transforms
181511,3 TransA.dat
150011,3 TransA.dat
448511,3 TransA.dat
122511,3 TransB.dat
132511,3 TransB.dat
30811,3 TransB.dat
214311,3 TransB.dat
50011,3 TransA.dat
50011,3 TransB.dat
36211,3 TransC.dat

The number of readings is indeed the same for all files. There are 11 from the magnetic tracker and 3 from the mechanical tracker. The readings constitute the transformations (respectively) from the magnetic tracker's sensor to the magnetic field transmitter and from the Faro tracker's tip to the origin of the Faro's coordinate system. The transformations in the auxiliary transformations file are derived from the configuration of our lab and equipment and are explained below.

The paper makes reference to a number of parameters that can be set to change the calibration table that results. Here are the values that I used.

Extents of the table I built:



The following is a list of the code modules that you need and a brief description of what each one does. There is also a archive of all the code files in GNU tar format,

You will also need to have the quaternion library that was developed based on Ken Shoemake's 1985 SIGGRAPH paper (specifically, the code in the Appendix) that does basic operations involving quaternions. Various UNC students have added to it over the years. This code is public domain, but please give credit to both Ken Shoemake and to the UNC Graphics Lab if you pass it along.

NOTE: There is one catch with this library, however. It was modified since I used it with the code in question. It should still work, but if it doesn't, then let me know. The best test is to run the code first on my data and see if you get my numbers. If not, something is different.

NOTE: Much of this code has code commented out with #if 0 and other compiler directives (e.g. #ifdef). Most of these are options that are discussed in the paper and make little difference in the performance. You are encouraged to try these options and see if the performance you get is significantly different. I would very much like to hear of results that change greatly with different options enabled for, say, the averaging method for rotations used in table look-up, center of gravity correction, et al.

Configuration files

Finally, you will need sample configuration files. Here are the three files that I used to build the most recent table and to test it, although some of the numbers may have been changed. I believe the list on this page (above) is correct. What this file will tell you is which data files I used. You will have to correct the pathnames given to the data files listed within the configuration files.

If anything here is unlcear or you have trouble downloading something, feel free to send me mail.

This work is part of the UNC Ultrasound Visualization project.


Project Members and Collaborators

Research Sponsors

Last Modified: 15 May 98 by Mark A. Livingston