Tracking Configuration
Introduction
metaio Mobile SDK provides different optical and non-optical tracking technologies. The tracking can be using a XML configuration file (also known as tracking data file).
Optical Tracking Technologies
Optical tracking gives a high quality tracking for mobile Augmented Reality (AR) in terms of robustness and accuracy.
ID Marker
metaio has developed Marker Tracking for simple AR applications in mind. One can configure up to 512 different Makers with almost no performance penalty. The ID Markers were also extended to Picture Markers. One can configure any Image inside the black/white/black border. Onecan configure about 10-30 Markers on a modern mobile phone.
IDMarker.pdf
Configuration
<Sensor type="MarkerBasedSensorSource">
<SensorID>Markertracking1</SensorID>
<Parameters>
<MarkerTrackingParameters>
<trackingQuality>fast</trackingQuality>
<thresholdOffset>110</thresholdOffset>
<numberOfSearchIterations>3</numberOfSearchIterations>
</MarkerTrackingParameters>
</Parameters>
<SensorCOS>
<SensorCosID>Marker1</SensorCosID>
<Parameters>
<MarkerParameters>
<Size>60</Size>
<MatrixID>1</MatrixID>
</MarkerParameters>
</Parameters>
</SensorCOS>
</Sensor>
ID Markers can have two different tracking modes (called also tracking quality). The mode "Fast" uses a fixed threshold offset and should only be used with no varying lighting conditions. However, the "Robust" mode adapts the given threshold offset constantly over time for a maximum number of search iterations, thus it can be used also in situations where lighting conditions are subject to change.
Additional parameters are the size (in mm) and the matrix ID of the marker to be used.
In case the tracking is flickering or does not feel very stable due to the lighting or to the environment, one should consider using the Smoothing Fuser explained below.
Picture Marker
Picture Markers are somehow in-between ID Markers and Markerless. You can use any printout or picture featuring enough visual content.
PictureMarker3.0.pdf
Configuration
<Sensor type="MarkerBasedSensorSource">
<SensorID>Markertracking1</SensorID>
<Parameters>
<MarkerTrackingParameters>
<trackingQuality>fast</trackingQuality>
<thresholdOffset>128</thresholdOffset>
<numberOfSearchIterations>3</numberOfSearchIterations>
</MarkerTrackingParameters>
</Parameters>
<SensorCOS>
<SensorCosID>Marker1</SensorCosID>
<Parameters>
<MarkerParameters>
<Size>60</Size>
<MatrixID>101</MatrixID>
<referenceImage binary="0" qualityThreshold="0.75">UnifeyeSDKMobileLogo.ppm</referenceImage>
</MarkerParameters>
</Parameters>
</SensorCOS>
</Sensor>
Similarly to ID markers, Picture Markers can have different tracking modes qualities. "Fast" uses a fixed threshold offset and should only be used with constant lighting conditions. "Robust" instead adapts the given threshold offset constantly for a maximum number of search iterations, thus it can be used also in situations where lighting conditions are subject to change. Additional parameters are the size (in mm) and the matrix ID of the marker to be used as well as the reference image that is inside the marker's black rectangle. For each image the (tracking-) qualityThreshold can also be specified. In order to achieve reasonable tracking results one should not set these values lower than 0.75 otherwise there might be a lot of "false positives".
In case the tracking is flickering or does not feel very stable due to the lighting or to the environment, one should consider using the Smoothing Fuser explained below.
LLA Marker
LLA markers are similar to ID marker with additional encoded information about the location.
LLAMarker.pdf
[
LLA Markers can be generated on the
junaio developer section.
Configuration
<Sensor type="LLAMarkerBasedSensorSource">
<SensorID>Markertracking1</SensorID>
<Parameters>
<MarkerTrackingParameters>
<trackingQuality>robust</trackingQuality>
<thresholdOffset>70</thresholdOffset>
<numberOfSearchIterations>3</numberOfSearchIterations>
</MarkerTrackingParameters>
</Parameters>
<SensorCOS>
<SensorCosID>Marker1</SensorCosID>
<Parameters>
<MarkerParameters>
<Size>300</Size>
<MatrixID>1</MatrixID> <!-- is ignored ->
</MarkerParameters>
</Parameters>
</SensorCOS>
</Sensor>
Markerless
metaio Mobile SDK currently offers two kind of Markerless Tracking – a Fast and a Robust method. The Fast method works well on a wide variety of target. It runs quite fluently on most relatively recent smart phones and it is very stable on moderately textured targets. The Robust method should be tried on targets where the Fast method did not provide satisfactory results. The Robust method fits well to highly textured targets. The tracking results obtained with the Robust method improves over time: the more and the longer you move the mobile device in front of the tracked target the better the tracking gets. In
Markerless Configuration, markerless tracking is explained in more detail.
Markerless.pdf
Configuration
<Sensor type="FeatureBasedSensorSource" subtype="fast">
<SensorID>FeatureTracking1</SensorID>
<SensorCOS>
<SensorCosID>Patch1</SensorCosID>
<Parameters>
<referenceImage widthMM="100" heightMM="100">metaioman.ppm</referenceImage>
</Parameters>
</SensorCOS>
</Sensor>
For markerless tracking sensor there's currently only two main parameters in addition to the reference image file that is used for tracking.
"widthMM" and "heightMM" specifiy the size of the printed reference image that will be used for tracking. If you want to configure multiple reference patterns, the example configuration
TrackingData_MultiMarkerless.xml should help.
Non-Optical Tracking Technologies
The accuracy of non-optical tracking is generally less than optical tracking, because it is highly dependant on available hardware such as GPS, accelerometer etc.
GPS/Inertial Sensors
metaio Mobile SDK also provides tracking based on GPS and inertial sensors on the device.Currently it supports GPS, accelerometer and magnetic (compass) sensors on iPhone and Android. The support for Symbian is planned for the near future, while it can be added for other platforms on demand.
The following is an example of how GPS/inertial tracking can be configured:
<TrackingData>
<Sensors>
<Sensor type="GPSCompassSensorSource">
<SensorID>GPSCompassSensor</SensorID>
<Parameters />
<SensorCOS>
<SensorCosID>GPSCompassSensor1</SensorCosID>
</SensorCOS>
</Sensor>
</Sensors>
<Connections>
<COS>
<Name>GPSCos1</Name>
<Fuser type="BestQualityFuser">
<Parameters />
</Fuser>
<SensorSource trigger="1">
<SensorID>GPSCompassSensor</SensorID>
<SensorCosID>GPSCompassSensor1</SensorCosID>
<HandEyeCalibration>
<TranslationOffset>
<x>0.0</x>
<y>0.0</y>
<z>0.0</z>
</TranslationOffset>
<RotationOffset>
<x>0.0</x>
<y>0.0</y>
<z>0.0</z>
<w>1.0</w>
</RotationOffset>
</HandEyeCalibration>
<COSOffset>
<TranslationOffset>
<x>0.0</x>
<y>0.0</y>
<z>0.0</z>
</TranslationOffset>
<RotationOffset>
<x>0.0</x>
<y>0.0</y>
<z>0.0</z>
<w>1.0</w>
</RotationOffset>
</COSOffset>
</SensorSource>
</COS>
</Connections>
</TrackingData>
Dummy
Dummy sensor source returns a fixed pose (rotation/translation) at a specific update rate defined in milli seconds.
For example it can be used to easily attach an overlay to the rendering camera.
<Sensor type="DummySensorSource">
<SensorID>DummySensor1</SensorID>
<Parameters>
<updateInterval>40&;lt;/updateInterval><!-- in ms-->
</Parameters>
<SensorCOS>
<SensorCosID>DummyCos1</SensorCosID>
<Parameters>
<!-- The pose the dummy sensor source delivers-->
<Pose>
<Translation>
<x>0.0</x>
<y>0.0</y>
<z>0.0</z>
</Translation>
<Rotation>
<x>0.0</x>
<y>0.0</y>
<z>0.0</z>
<w>1.0</w>
</Rotation>
</Pose>
</Parameters>
</SensorCOS>
</Sensor>
Comparision
Ratings are based on 1 to 5 stars. Speed and number of targets are valid for a current generation phone with an 1GHz class processor. The number of configurable targets may vary on available memory limitations.
| |
ID Marker |
Picture Marker |
Markerless (FAST) |
Markerless (ROBUST) |
Inertial Sensors |
| Robustness |
   |
   |
  |
  |
    |
| Accuracy |
   |
   |
   |
   |
  |
| Speed |
   |
   |
   |
  |
    |
| Number of Targets Configured |
up to 512 |
up to 10-30 |
up to 10 |
up to 3 |
1 |
| iPhone |
|
|
|
|
|
| Android |
|
|
|
|
|
| Windows Mobile |
|
|
|
|
|
| Symbian |
|
|
|
|
|
| |
|
|
|
|
|
Fuser
The metaio Mobile SDK does not feature real sensor fusion, e.g. combining two sensors to one coordinate system. However the Fuser can be used as a filter to smooth the tracking values.
The tracking values are directly used without smoothing.
<Fuser type="BestQualityFuser">
<Parameters />
</Fuser>
This fuser allows separate smoothing of translation and rotation. Usually, you want to smooth rotation more than the translation, since translation is in general more accurate. In addition, you can set the <KeepPoseForNumberOfFrames> tag. This will estimate the pose for the specified amount of frames in case the tracking is lost.
<Fuser type="SmoothingFuser">
<Parameters>
<!-- Alpha is in the range [0...1] and determines how strong a new pose is.
alpha = 0.9: less smoothing
alpha = 0.1: alot smoothing-->
<AlphaRotation>0.5</AlphaRotation>
<AlphaTranslation>0.8</AlphaTranslation>
<!-- if we lose tracking, keep the old pose for several frames -->
<KeepPoseForNumberOfFrames>5</KeepPoseForNumberOfFrames>
</Parameters>
</Fuser>