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
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 |
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 |
timeError | double | Standard deviation of measurement time |
covariance | covarMatrix6x6 | A 6x6 covariance matrix which represents the measurement error |
hasPosition | boolean | The tracker delivers positions and the fields are set |
hasOrientation | boolean | The tracker delivers orientation and the fields are set |
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