ServiceARTTracker

Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

ARTTracker

This service provides tracking data from the ART DTrack system to DWARF.

DTrack provides two distinct kinds of tracking output: 6DOF data of precalibrated bodies or flysticks consisting of multiple retrorefelective balls and 3DOF data of all balls that could not be assigned to a body. The ARTTracker service converts both data streams to a set of DWARF PoseData event streams.

Configuration is handled entirely using the XML service description.

Needs & Abilities

An example can be found in ARTTracker.xml.

The service's functionality is defined by the PoseData Abilities given in the service description. At startup, the service parses the description and looks for PoseData Abilities with a ScvProtPushSupplier? connector having names with the following prefixes:

  • 6DMarker
    Provides an ability sending PoseData for the DTrack body with the internal ID number defined in the Ability's attribute InternalID. The ThingID? and ThingType? of this ability are set accordingly.
  • 6DFlystick
    Provides an ability sending PoseData for the DTrack flystick with the internal ID number defined in the Ability's attribute InternalID. The ThingID? and ThingType? of this ability are set accordingly.
  • 3D
    Provides an ability sending PoseData for DTrack 3DOF data. The ThingType? of the PoseData struct is set according to the definition in the service description, the ThingID? is set according to the internal DTrack ID. DTrack tries to actually track 3D objects, but no guarantee is given that the same object has always the same ID number.

All Abilities can have the additional integer attribute DataDivisor , sending only every n-th frame.

Interaction with other Services

  • Data is sent to all other services interested in. Usually ServiceObjectCalibration preprocesses the raw data in order to do some calibration.

More Documentation

How-To

Write your own XML configuration of this service. A toy example looks as follows:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE service SYSTEM "service.dtd">

<service name="ARTTracker" startOnDemand="false" stopOnNoUse="false" startCommand="ARTTracker">
        <ability name="6DMarkerForDeRasda type="PoseData">
                <attribute name="ThingID" value="Rasdaman"/>
                <attribute name="ThingType" value="ART6DMarker"/>
                <attribute name="InternalID" value="2"/>
                <attribute name="DataDivisor" value="10"><!--Relax, man!>
                <connector protocol="PushSupplier"/>
        </ability>
        <ability name="6DFlystick#1" type="PoseData">
                <attribute name="ThingID" value="Flystick1"/>
                <attribute name="ThingType" value="ART6DFlystick"/>
                <attribute name="InternalID" value="1"/>
                <connector protocol="PushSupplier"/>
        </ability>
        <ability name="3D" type="PoseData">
                <attribute name="ThingType" value="ART3DObject"/>
                <connector protocol="PushSupplier"/>
        </ability>
</service>

Start it if it's not started automatically. That's all. Care has to be taken that the ARTTracker is running on a computer that gets the UDP stream from DTrack. If the service does not work as intended, it is most likely that the DTrack settings are wrong.

Installation

No special packages are required. If you have a running DWARF installation, do a make install in the ARTTracker directory. This creates an application called ARTTracker which can be started on the command line.

Testing

Start ARTTracker, start some service that needs PoseData (for example ServicePoseDataReceiver?). Have fun with ServiceDIVE then.

Command Line Parameter

You can use the following command line parameter:

  • -Dport=<int>: set the UDP port the service listens to (default 5000)
  • -Dfast=<bool>: enable superlinear speedup. Yields superior performance on 3 CPU Macs.

Known Bugs and Limitations

The service description must have the InternalID attribute set. If it is not given for 6DOF objects, the service terminates (rather crashes...) unhappily.

History



Edit | Attach | Refresh | Diffs | More | Revision r1.8 - 23 Mar 2005 - 19:45 - NikolasDoerfler

Lehrstuhl für Computer Aided Medical Procedures & Augmented Reality    rss.gif