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

marker.png

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

picture_marker.png

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

[llamarker.png

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

markerless.jpg

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 stargoldstargoldstargoldstargold stargoldstargoldstargoldstargold stargoldstargoldstargold stargoldstargoldstargold stargoldstargoldstargoldstargoldstargold
Accuracy stargoldstargoldstargoldstargold stargoldstargoldstargoldstargold stargoldstargoldstargoldstargold stargoldstargoldstargoldstargold stargoldstargoldstargold
Speed stargoldstargoldstargoldstargold stargoldstargoldstargoldstargold stargoldstargoldstargoldstargold stargoldstargoldstargold stargoldstargoldstargoldstargoldstargold
Number of Targets Configured up to 512 up to 10-30 up to 10 up to 3 1
iPhone DONE DONE DONE DONE DONE
Android DONE DONE DONE DONE DONE
Windows Mobile DONE DONE DONE DONE choice-no
Symbian DONE DONE DONE DONE choice-no
           

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.

BestQualityFuser

The tracking values are directly used without smoothing.

<Fuser type="BestQualityFuser">
   <Parameters />
</Fuser>

SmoothingFuser

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>

Topic revision: r15 - 2011-12-08 - 15:21:42 - SupportMetaio
 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback