DwarfUbitrackMigration

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

Migration to Ubitrack

This page gives detailed information about the changes in the interfaces and data structures of the new Ubitrack tracking system. This page mainly describes changes in the C++ classes. Changes to Java and Python code will follow.

Most important changes

The new Chair.PoseData structure and the EasyPoseData C++ class

Ubitrack introduced a new IDL structure which replaced the current Chair.PoseData (see details below). For convinience there is a new C++ class which is derived from the structure by public inheritance: EasyPoseData. This class can be used in the same manner as the structure itself (since it is inherited) however the default constructor initializes the fields with zero.

The most important thing is, that this class provides interfaces for setting this fields (parallel to the direct access to the fields). This interface is similar to that one of the old PoseSender (see below) with only minor changes and additions. The purpose of this interface is that the PoseSender can be replaced by the EasyPoseData with only minor modifications (see the doxygen documentation for details: DOC:index.html).

Code example: Instead of writing

PoseSender s;
s.setPos(value);
s.sendPoseData();
You write now:
EasyPoseData p;
PoseSender s;
p.setPosition(value);
s.sendPoseData(p);

The new PoseSender is the replacement for the old PoseSender. It does not contain the position information (= the state) but the interface remains in the EasyPoseData.

The PoseSender can now be included using

#include <ubitrack/PoseSender.h>

The new PoseService

The old PoseSenderService was deleted. Please use the new PoseService instead. It can be found in src/common/cpp/ubitrack.


Details

New PoseData structure

The new PoseData structure was redesigned for the requirements of Ubitrack.

New data types

type name contains
pos3d double[3] array
quaternion double[4] array
UTObjectID string
covarMatrix6x6 6x6 double matrix

Following fields did not change

field name type description
position pos3d Contains an array with the x, y and z values
orientation quaternion Contains an array with the coefficients for the quaternion
timestamp Time A timestamp for the measurement

Following fields are added to the structure

field name type description
hasPosition boolean The tracker delivers positions and the fields are set
hasOrientation boolean The tracker delivers orientation and the fields are set
source UTObjectID The identifier of the tracker
target UTObjectID The identifier of the tracked object (corresponds to ThingID?)
confidence double A confidence value for the measurment
covariance covarMatrix6x6 A 6x6 covariance matrix which represents the measurement error
timeError double Standard deviation of measurement time

Following fields are removed

All other fields are removed from PoseData. The most important ones are:
field name description
thingID This field is mapped to the target field
thingType The ThingType is considered obsolete. Use it only in the service description.
pos/oriAccuracy Is removed since the error is modeled as covariance matrix

-- FranzStrasser - 02 Apr 2004


Edit | Attach | Refresh | Diffs | More | Revision r1.7 - 09 Jun 2006 - 10:57 - MarcusToennis

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