Transformation Node Reference

This page describes the nodes implementing geometric transformations available in OpenTracker. The currently implemented transformations are a specific subset of all affine transformations possible.

All transformations receive the event from a single child node, transform it and pass it on. To work with all interface types each transformation has three different configuration elements whose outputs and inputs are typed with the same interface. The configuration elements are distinguished by the following prefixes :

The following sections describe the different transformation nodes in detail.

DynamicTransformation

This section describes the DynamicTransformation node and configuration element. A DynamicTransformation transforms the data child's event value by the base child's event value. The base childs position and orientation define the affine base in which the data childs values are interpreted. Then the data childs values are transformed to world coordinates. The basic name of the configuration element is DynamicTransform , by prepending the prefixes above, one receives the actual element names. The TransformBase child must always be an EventGenerator.

The confidence value of the result event is the product of the confidence values of the two input events. Button event is only passed from the child, never from the TransformBase child. If you want to merge the button event you must use an additional ButtonOp to do that. The timestamp is always of the last event that triggers an output (see baseevent).

The elements may have the following attribute.

An example element looks like this :
 <EventDynamicTransform baseevent="true">
 <Any EventGenerator element type>
 <TransformBase>
 <Any EventGenerator element type>
 </TransformBase>
 </EventDynamicTransform>

EllipsoidTransform

This transformation node transforms GPS position data between ellipsoid and the corresponding cartesian coordinate system. The main parameters are the two semi diameters a and b of the ellipsoid which are specified in meters. For ellipsoid coordinate data it uses the Latitue, Longitute and Height data in the components of the position value, just as the GPSSource node produces them.

The configuration elements are obtained by using the base name EllipsoidTransform and prepending it with one of the prefixes Event | Queue | Time as described in the Transformation node.

It has the following attributes:

Some handy values for a and b : An example element looks like this :
 <EventEllipsoidTransform a="6378137" b="6356752.31424523" mode="toCartesian">
 <Any EventGenerator element type>
 </EventEllipsoidTransform>

GKTransform

This transformation node transforms GPS position data into a local Gausz - Krueger map projection. The main parameters are the two semi diameters a and b of the ellipsoid which are specified in meters, the meridian around which the grid coordinates should be computed, and for parameter values alpha, beta, gamma, delta. It expects the data in ellipsoid coordinate format as the Latitue, Longitute and Height data in the components of the position value, just as the GPSSource node produces them. It can be used to transform data to a GK map or from a GK map into ellipsoid coordinates relative to the given ellipsoid.

The configuration elements are obtained by using the base name GKTransform and prepending it with one of the prefixes Event | Queue | Time as described in the Transformation node.

It has the following attributes:

See EllipsoidTransform for some good values for a, b For a transformation to the Austrian map datum, use the following values : An example element looks like this :
 <EventGKTransform a="6377397.155" b="6356078.963" mode="to" meridian="34" alpha="111120.6196" beta="15988.6385" gamma="16.73" delta="0.0218">
 <Any EventGenerator element type>
 </EventGKTransform>

InvertTransform

An InvertTransform inverts the affine base described by the tracking data. Put another way, if you use the output of an InvertTransform and combine it with the input using a DynamicTransform, you will get the canonical base, i.e. position in the origin and orientation equal to identity.

There are again three flavours, one for each interface type. The configuration elements are obtained by using the base name InvertTransform and prepending it with one of the prefixes described before.

An example element looks like this :

 <EventInvertTransform>
 <Any EventGenerator element type>
 </EventInvertTransform>

MatrixTransformation

This section describes the MatrixTransformation configuration element. It transforms the data by applying an affine transformation to the the child's position data as post transformations. The transformation itself is fixed and described by a 3x4 matrix which is set with the elements attributes. Note that this node only acts on position information !!

The configuration elements are obtained by using the base name MatrixTransformation and prepending it with one of the prefixes described before. They have the following attribute:

An example element looks like this :
 <EventMatrixTransform matrix="1 0 1 1 0 0 1 1 1 1 1 2">
 <Any EventGenerator element type>
 </EventMatrixTransform>

Transformation

This section describes the Transformation configuration element. It transforms the data by applying a rotation, scale and translation to the child's data as post transformations. The transformation itself is fixed and set with the elements attributes. Note that only the rotational part acts on the child's orientation data.

There are three variants of this transformation. The PositionTransform element acts only on the position data and all attributes can be specified. OrientationTransform acts only on the orientation data and therefore only a rotation can be specified. Finally the simple Transform acts on both and again a full transformation can be specified.

The configuration elements are obtained by using one of the base names PositionTransform|OrientationTransform|Transform and prepending it with one of the prefixes described before. They have the following attributes:

An example element looks like this :
 <EventTransform rotationtype="euler" rotation="1 2 3" translation="0 0 0">
 <Any EventGenerator element type>
 </EventTransform>

VirtualTransformation

This section describes the VirtualTransformation configuration element. It implements an offset in the child's affine space. That is the configured translation and rotation are post transformed with the child's position and orientation values. This effectively offsets the tracked point with respect to the tracked affine base. Note that there is no scale, as a scaled base only makes sense, if there is a translational offset and in that case the scale could be precomputed on the translational offset anyway.

There are three variants of this transformation. The VirtualPositionTransform element configures only a translational offset and accordingly only the translation attribute can be specified. VirtualOrientationTransform configures a rotational offset and again only the rotation attributes can be specified. Finally the simple VirtualTransform acts on both and again a full transformation can be specified.

The configuration elements are obtained by using one of the base names VirtualPositionTransform|VirtualOrientationTransform|VirtualTransform and prepending it with one of the prefixes described before. They have the following attributes:

An example element looks like this :
 <EventVirtualTransform rotationtype="euler" rotation="1 2 3" translation="0 0 0">
 <Any EventGenerator element type>
 </EventVirtualTransform>

Generated on Wed Feb 28 15:27:27 2007 for NaviTrack by  doxygen 1.4.6