'mytrackd' sensors configuration and calibration

CAVE sensors usually should be configured to align there reports against CAVE space, user head etc. Because of sensor's space usually garbled (for example, electromagnetic sensors reporting is affected by ferromagnetic things in area) calibration is needed also.

Each sensor is configured with it's own position and initial rotation offsets being added to each following report. Because sensor's report depend both on tracker transmitter and sensor itself positions, such setup is divided in two correspondent parts. Tracker transmitter position and orientation are added to all sensors reporting. Second part is added to particular sensor reporting individually.

'mytrackd' uses embedded VRPN features to setup sensors and because of it configuration scheme it provides seems to be elaborated slightly. VRPN classes dealing with tracker read config file, "vrpn_Tracker.cfg" in there constructors to obtain information on tracker's transmitter and each particular sensor setup. Below extraction from VRPN manual made for such file structure (comments starting with '#' symbol also allowed.):

"tracker name"
"room from tracker translation (x,y,z)"
"room from tracker quaternion (x,y,z,w)"
"workspace (xmin,ymin,zmin) (xmax,ymax,zmax)"
"number of sensors, n"
"sensor # = which sensor"
"sensor from unit translation (x,y,z)"
"sensor from unit quaternion (x,y,z,w)"
... (etc. for all n sensors)
... (etc. for as many trackers as you want to specify)
"tracker name" is the same name used to define sensor in 'trackdrc' file. Note here that for server side case "tracker name" shouldn't contains host part, for example "fastrak" but not "fastrak@localhost". "room from tracker translation" and "room from tracker quaternion" setup trackers transmitter as was discussed above. "workspace" isn't used by 'mytrackd' and "sensor from unit translation" with "sensor from unit quaternion" define together particular sensor setup. Translations should be specified in same units as specified to 'mytrackd' with "-u" switch (default is meters) and orientation quaternions with "w" component in radians.

Because 'mytrackd' needs VRPN server running somewhere, sensors configuration file can be placed both on client and server machines. "vrpn_Tracker.cfg" file should resides in same directory as 'mytrackd' or VRPN server to take an effect. VRPN provides special feature to transfer sensors setup from server to client. You can choose which setup, local or remote to use by specifying "local" or "remote" value in sensor definition line in "trackdrc" file. Note that you can define mode separately for tracker transmitter setup and sensor itself. For example, for particular sensor you can use remote setup for transmitter and local for sensor itself or also ignore all settings by specifying "off" in both positions.

CAVELib config files also can be used to obtain information on sensors setup. For backward compatibility, CAVELib supports setup for one tracker transmitter and two sensors that have some special meaning. This sensors are head sensor (CAVE sensor number 0) and wand sensor (CAVE sensor number 1). This stuff can be set up with following:

TransmitterOffset x y z units
TransmitterRotation x y z angle
HeadSensorOffset x y z units
HeadSensorRotation x y z angle
WandSensorOffset x y z units
WandSensorRotation x y z angle
To define rotation in CAVELib setup you must specify axis (x y z) and angle to rotate around this axis in degrees. Because specifying of translations in CAVELib config require direct definition of units, you can choose the way you want. Before applying, such values will be converted to units that CAVELib currently use (it's a good idea to set same units in CAVELib and 'mytrackd' setups). Note also that 'mytrackd' automatically grabs and then uses following CAVE setup information while starting up:
DefaultTrackerOrientation x y z angle
DefaultTrackerPosition x y z units
TrackerDaemonKey key
ControllerDaemonKey key
Units units (if not overrided with "-u" command line switch)
You can borrow setup for head and wand sensors from CAVELib configuration by specifying "-b yes" command line option. If set, this option force 'mytrackd' to get CAVELib setup and to write it to sensors config file, "vrpn_Tracker.cfg". If this file absent, it will be created and filled out. Otherwise, 'mytrackd' checks for existing head and wand sensors definitions, if found comments them out with "#" symbol and finally add new setup borrowed from CAVELib. 'mytrackd' also saves copy of unmodified setup file as "vrpn_Tracker.old"

'mytrackd' does calibration on per sensor basis by attaching special designed DSOs implementing calibration behavior. Such DSO, in short, should provide well-known function to modify incoming sensor's report using some database etc. Note that report get calibrated BEFORE any other processing and since that all data used in calibration should be specified in sensor-to-transmitter space and be indicated in meters (VRPN translation units). For more information on VRCO 'trackd'-style calibration DSO please consult it's manuals or visit this site featuring free calibration stuff.


[up] [mail me]