Node Reference
ButtonFilter
The Button Filter allows the user to filter and re-map the individual buttons of an event.WATCH OUT !! Button bits are leastsignificant first invert (10000000) with buttonin(00000000) will result in (00000001) !! sequence : validtrans, radiobuttons, invertstr, buttonmask, buttonmap
The element has the following attributes :
validtrans(8bit) specify valid transmission bit for radio pen (1_2_____) means radio pen 1 has VT on bit 0, radio pen 2 has VT on bit 2radiobuttons(8bit) specify bits for radio pen (ref to validtrans) (_1_22___) means bit 1 is for radio-pen 1, bit 3&4 is for radio-pen 2 (has two buttons)buttonmaskbinary mask to enable the individual buttons, e.g. "11110000" enables buttons 0-3buttonmap8-digit string, assigning an output number to every individual button input, e.g. "01324567" swaps buttons 2 and 3. Multiple assignments ar ORed together, e.g "00001111" means button 0=true if one (or more) of buttons 0-3 is pressed, button 1=true if one of buttons 4-7 is pressed.invertbinary mask for inverting individual buttons. 0 stands for leave alone, 1 for invert. this is applied before the button mapping !
<ButtonFilter buttonmask="11110000" buttonmap="32107777" invert="00100000"> <ParButtonSource dev="0x378" DEF="buttons"/> </ButtonFilter>
ButtonHoldFilter
ButtonHoldFilter simulates an time delayed release of a buttonsource. It was necessary to introduce this filter to filter out short drops when using a radio transmission. The filter will hold the "on" event even if there is a drop of "n" off's. After "n" off's have pssed through the filter it will change the event to off. If there is a "on" in between, the count will start again. Please notice that there will be a delay in the button-release action due to this filter.Example_ for one bit(n=3) - over time)
input : 11110111001101000011111 output: 11111111111111111011111
input : 11110111001101000011111 output: 11111111101111100011111
Example usage/defaults:
\<ButtonHoldFilter offDuration="2" > ... (any Event Source) \</ButtonHoldFilter>
ButtonOp
The ButtonOp node implements a boolean operation on the button events of its two input ports. It saves the last button events from each input and outputs either the logical AND or OR result of the two events, whenever a new event from either input is received.The element has the following attributes :
op(OR | AND) whether it should do an OR or AND.
<ButtonOp op="OR"> <Arg1> <any event generator ...> </Arg1> <Arg2> <any event generator ...> </Arg2> </ButtonOp>
Callback Node
The Callback node is a simple EventObserver / EventGenerator that passes events on and calls a registered callback function everytime it receives a new event with the passed event. It has the following attributes :namea unique name to identify it among all Callback nodes.
<Callback name="cb1"> <Any EventGenerator element type> </Callback>
ConfidenceFilter
A ConfidenceFilter nodes filters and throws away incoming events based on their confidence value. It works either in high or low pass mode and has a configurable treshhold value. In high pass mode it only passes events to its parent that have a confidence equal or greater than the treshhold value, and vice versa in low pass mode. It has the following attributes :treshholdthe treshhold value in [0,1]typehigh either high or low to denote the mode
<ConfidenceFilter treshhold="0.8" type="high" > ...any event node </ConfidenceFilter>
ConfidenceSelect
The ConfidenceSelect node will filter events based on their confidence value relative to confidence values seen before. It can be used to select the event with the highest confidence value within a short time interval. It is a simple EventGenerator node.
It will store the confidence value of an event received and filter out any events that arrive within a certain time span set by the timeout parameter and that have a confidence value below ( or higher ) than the stored one. After the timeout it will again store the next event received. If an event passes the test, the events confidence value is stored and the timeout starts again. Two modes are possible : high filters out lower values and low filters out higher values. The element has the following attributes :
timeoutthe timeout value in millisecondstypehigh eitherhighorlowto set the type of filtering
<ConfidenceSelect timeout="100" type="high" > ...any event node </ConfidenceFilter>
ConsoleSink
The ConsoleSink node is a simple EventObserver / EventGenerator that passes events on and stores a copy of the last one. It is polled in regular intervalls by the ConsoleModule and its event is printed out to the console. It has the following attributes :commenta line of text describing the outputactiveon (on|off) flag defining whether this sink should store and output data and be displayed or not.
<ConsoleSink comment="my Console node"> <Any EventGenerator element type> </ConsoleSink>
ConsoleSource
The ConsoleSource node is a simple EventGenerator that generates new tracking events for one station based on keyboard input to the console. Each ConsoleSource node has a station number that can be selected via the keyboard. There can be only one node per station. It is also managed and driven by the ConsoleModule.It has the following attributes :
numbera number ( 0 - 9 ) giving the station number.
<ConsoleSource number="2"/>
ElasticFilter
ElasticFilter simulates an elastic connection between the incoming tracking data and the data that is sent out to the parent nodes. It also interpolates the values between two updates from the source, so this is also useful if you have a low update rate from your tracking and still want smooth animation.Example usage/defaults:
\<ElasticFilter force="0.02" damp="0.5" frequency="1" offset="0"> ... (any Event Source) \</ElasticFilter>
EventQueue
The EventQueueNode stores a queue of events of fixed size. The size is set by the attribute length. It stores the last events it received from its EventGenerator child and also passes on events via the EventGenerator interface. It has the following attributes :length1 the maximal number of last events to store
<EventQueue length="10"> <Any EventGenerator element type> </EventQueue>
EventUtility
The EventUtilityNode provides the possibility to rename, discard, or add attributes to every event passed to this node.The element has the following attributes:
renamean attribute's name and a new name for this attribute separated by a space (' ')discardthe name of an attribute to be discardedcreategeneric type name, name, and value (separated by spaces) of an attribute that should be added to the event
<EventUtilityNode rename="position pos" discard="confidence" create="double doubleAttribute 7.4"> <Any EventGenerator element type> </EventUtilityNode>
FileSink
The FileSink node writes incoming event data to an output file. It is created and controlled by the FileModule. It associates its output stream with a station number, that is written into the file to multiplex different sinks into one file. There may be more then one FileSink using the same station number and / or output file. However the file may only be used for output. It has the following attributes :filethe file name to usestationthe station number to record
<FileSink file="test.out" station="0"> <Any EventGenerator element type> </FileSink>
FileSource
The FileSource node reads event data from an input file and passes new events into the graph. It is created and controlled by the FileModule. It associates its input stream with a station number, that is contained in the input file to demultiplex different input streams from one file. There may be more then one FileSource using the same input file, however they need to use different station numbers. Moreover the file may only be used for input.The event data is processed in the order appearing in the file. During each cycle, each source fires at most once. Data that has a station number which is not used by any FileSource is dropped.
A FileSource has the following attributes :
filethe file name to usestationthe station number to recordlocaltimefalse (true|false) whether to use the local time as time stamp or the time recorded in the file
<FileSource file="name" station="0" localtime="false"/>
Filter
The Filter node implements a simple linear averaging over a number of events. The events are stored in an EventQueueNode that is the required child of this node. Everytime it receives a new event from the EventQueueNode it computes the weighted average of the events stored in the EventQueueNode. It implements an Event interface.The position is calculated as the weighted average of the last events positions. No normalization is done, so one can use this filter to calculate gain != 1. The rotation is calculated in exponential space of the unit sphere of quaternions. Here the average is normalized to stay within the result space. Confidence values are also averaged and not normalized.
The element has the following attributes :
weighta number of float values giving the individual weights of the events averaged. The number of events used from the queue are equal to the number of weights specified here. The first weight relates to the newest event. If less events are stored in the queue, no new event is generated.typeall(all|position|orientation) a mode attribute that specifies to which part of the event data the filter should be applied to.positionwill apply it only to the position part,orientationto the orientation and to both.
<Filter weight="0.5 0.5 0.5" type="all"> <EventQueue>...</EventQueue> </Filter>
GroupGate
The GroupGate element is a node within a adjacency graph of other nodes within a group. Per default all nodes are deactived. The Override element has to be used to activate at least one node. This node is managed by a dedicated GroupGateModule.A GroupGate only generates an event if the node itself or its neighbors are active.
The GroupGate element has the following attributes :
DEFdefines the name of the node. This name must not be used more than once within a groupgroupdefines the group to which the node is added if the group does not exist, a new one is createdneighborsdefines the neighbors of the node within a group
Override element is used to activate a node within a group. See also the ActiveGate element that outputs the currently active GroupGate of a given group.example: elements for a cyclic three noded graph looks like this
<GroupGate DEF="Node1" group="CyclicGraph" neighbors="Node3"> <Override> <...incomming events...> </Override> <...incomming events...> </GroupGate> <GroupGate DEF="Node2" group="CyclicGraph" neighbors="Node1"> <...incomming events...> </GroupGate> <GroupGate DEF="Node3" group="CyclicGraph" neighbors="Node2"> <...incomming events...> </GroupGate> <ActiveGate group="CyclicGraph"/>
ActiveGate
TheActiveGate node is used to determine the currently active GroupGate of a group. It returns a numeric value in the button field of the event structure The value is used to call the getGroupGateName() method of GroupGateModule to return the name of the GroupGate. See the GroupGate element for an example of the ActiveGate element. It has the following attributes :
groupdefines the group of which the active node should be traced.
Merge
A Merge node is an EventGenerator node that listens to several other EventGenerator nodes and merges data from these. It has several inputs that are marked with different wrapper tags. It stores an internal event and updates it with parts of the data depending on the type of input. Then it generates an event of its own. Timestamps are treated specially. If no child node is connected to the MergeTime input, then the timestamp of the new event equals the timestamp of the last received event. Otherwise it behaves like other inputs. The following list shows the possible inputs :
MergeAttributeonly attributes with the name defined by the attributeName tag is taken from events received from children of this wrapper elementMergeTimeonly the time stamp data is takenMergeTriggerif this element is present, the local event will only be propageted to parent nodes after an event from the trigger was receivedMergeDefaultany data that is not set by a child of another wrapper element is used.
An example element using all wrapper elements looks like this :
<Merge agingFactor="0.8" confidenceCalculation="multiply"> <MergeDefault> <Exactly one EventGenerator element type> </MergeDefault> <MergeTime> <One or more of any EventGenerator element type> </MergeTime> <MergeTrigger> <One or more of any EventGenerator element type> </MergeTrigger> <MergeAttribute attributeName="someAttribute"> <One or more of any EventGenerator element type> </MergeAttribute> </Merge>
PositionFilter
The PositionFilterNode node filters updates according to the position information.- See also:
- RangeFilterNode It is configured with a
minandmaxattribute that define the minimum and maximum of position data to be passed through (like a BoundingBox). Other events are dropped
min-1, -1, -1, minimal position in metersmax1, 1, 1, maximal position in meters
<PositionFilter min="-1 -1 -1" max="1 1 1"> <Any EventGenerator element type> </PositionFilter>
RangeFilter
The RangeFilter node filters updates according to the length of the position value. It is configured with amin and max attribute that define the range of lengths of events to be passed through. Other events are droppedThe element has the following attributes :
min0, minimal length in metersmaxlarge value, maximal length in meters
<RangeFilter min="0.1" max="2.5"> <Any EventGenerator element type> </RangeFilter>
Selection
A Selection node is an EventGenerator node that listens to two other EventGenerator nodes and selects preferred data by the following algorithm. Data from the preferred input is always passed through. Moreover, the node also remembers the timestamp of the last preferred event. If an event arrives from the other input within a certain timeout period to the last preferred event, it is not passed on. This way a stream of preferred events, with intermittend pauses smaller then the timeout will not be mixed with data from the default source. The preferred input EventGenerator is marked with wrapper tags. It has the following attributes :timeout, time period between two input events (in milliseconds)
Selectmarks the preferred EventGenerator
<Selection timeout="100"> <Select> <One of any EventGenerator element type> </Select> <One of any EventGenerator element type> </Selection>
ThresholdFilter
The ThresholdFilter implements a filter that allows only events that differ sufficiently from the last event passed through the filter. It computes the 2-norm distance between the positions of the new event and the last stored and the angle between the two quaternions representing the rotations. The angle is computed in radiants. Then they are compared against the two intervals given in the elements attributes. If one of them lies within the given interval, the event passes and is used as the new reference value.The element has the following attributes :
positionmin0minimal distance between the two positionspositionmaxinfmaximal distance between the two positions,infmeans largest possible valuerotationmin0minimal angle between the two quaternions, a very general measurerotationmax3.141592654maximal angle, default is pi the maximal possible angle. Any values will be clamped to these intervals and it is ensured that max is >= min, by setting max = min, if necessary.
<ThresholdFilter positionmin="0.1" positionmax="3" rotationmin="0" rotationmax="3"> <Any EventGenerator element type> </ThresholdFilter>
TimeGate
This node acts as a gate for an event flow. It will only let events through, if there was an event received through the Gate input some time before. The exact time intervall is given by the attribute timeframe (in milliseconds). It also works the opposite way by blocking all events coming in within the time frame. In contrast to the Selection , it does not pass on event data from the Gate. It has the following attributes :timeframe, time period between two input events (in milliseconds)mode(pass|block) inpassmode it will only let events pass, that fall within a timeframe interval of an event received through the Gate input. In block mode it will block these events.
Gatemarks the gate that opens or closes the node for some time
<TimeGate timeframe="100" mode="pass"> <Gate> <One of any EventGenerator element type> </Gate> <One of any EventGenerator element type> </TimeGate>
Ref
A Ref element allows to use the output of a node in another place in the data flow graph. Every element can have a DEF attribute specified that contains a unique id. This id can then be referenced in a Ref element specifing the node the Ref element should mimik. The Ref node will then resemble the referenced node in any way.However it cannot have any children, as the referenced node would have no information about these children. The Ref node is simply a way to reuse the output of a node somewhere else. It has the following attribute :
USEunique id of the referenced node, this id must exist !
<Ref USE="id"/>
TestSource
The TestSource node is a simple EventGenerator that fires in fixed intervals standard events. The events can be customized to have other then the default values.
It also supports simulation of noisy data. The parameter noise defines the size of a uniform distribution used to perturb the given default position and orientation. In addition to that it also defines the probability that the orientation representation is using the negative representation.
Moreover, the TestSource provides some multi-modal attributes of type int, char, double, and float. These attributes can either be renamed by an EventUtilityNode and used as test data for the implementation of new nodes, or you can add more or different attributes in the same way to get test data for your implementation.
The node has the following elements : @
frequencyevery freq. cycle it firesoffsetstarting after offset cyclespositionposition value of the event to fire as 3 floatsorientationorientation value of the event to fire as 4 floats representing a quaternionbuttona 16 bit integer value representing the button eventsconfidencea float value in [0,1] to represent the confidence valuenoisea float value > 0, if present will output noisy data for simulations
<TestSource frequency="10" offset="5" />
ARTDataTrackerSource
The ARTDataTrackerSource node is a simple EventGenerator that inputs the data from the ART Data Tracker.numberthe body number of the specific source, starting with 0
<ARTDataTrackerSource number="0"/>
ARToolKitMultiMarkerSource
The ARToolKitMultiMarkerSource node is a simple EventGenerator that inserts events from tracking a visual multi-marker in a video image by using the ARToolKitPlus library. See the ARToolKitPlusModule for information about how to configure the module as a whole. It has the following elements :cfg-filethe file containing setup the marker patterns
<ARToolKitMultiMarkerSource cfg-file="test_setup.cfg" />
ARToolKitSource
The ARToolKitSource node is a simple EventGenerator that inserts events from tracking a visual marker in a video image by using the ARToolKit library. See the ARToolKitModule for information about how to configure the module as a whole. It has the following elements :tag-filethe file containing the marker patterncenterthe center within the marker as two coordinates in millimeterssizethe size of the quadratic marker in millimeters
<ARToolKitSource tag-file="pip.tag" center="0,0" size="40" />
CyberMouseSource
The CyberMouseSource node is a simple EventGenerator that outputs the current position and button event of the CyberMouse. It is driven by the CyberMouseModule. If the mouse does not seem to work, press a button. This should initialize it and it will work. The mouse buttons are mapped to button numbers in the following way : the middle button sets the LSB to 1 and the second button sets the second to 1.An example element looks like this :
<CyberMouseSource/>
DynaSightSource
The DynaSightSource node is a simple EventGenerator that inserts events from the DynaSightSource into the tracker tree. The DynaSightSource element has the following attribute:numberthe target number, between 0 and 8
<DynaSightSource target="0" />
FastTrakSource
The FastTrakSource node is a simple EventGenerator that inserts events generated from the tracker-device data into the tracker tree. The FastTrakSource element has the following attributes :numberthe stations number
<FastTrakSource number="1"/>
FOBSource
This is a source node for the Flock of Birds magnetic tracking system. It is instantiated and managed by the FOBModule (Flock of Birds). The number given in the attributenumber specifies the bird to use. An example element looks like this : <FOBSource number="1"/>
GPSDirectionSource
The GPSDirectionSource node is a simple EventGenerator that outputs GPS direction and velocity data. The direction is encoded in the orientation field as a mathematically positive rotation around the Y axis starting from the X axis. The velocity is encoded in the X component of the position field in meters / second. It is managed by the GPSModule, see there for more information on how to configure GPS support.An example element looks like this :
<GPSDirectionSource/>
GPSGarminAltitude
The GPSGarminAltitude node is a simple EventGenerator that outputs GPS altitude data from a Garmin device interpreting the propriatory $PGRMZ string. The altitude is given as a vector with the altitude encoded in the positive Y direction in meters. It is managed by the GPSModule, see there for more information on how to configure GPS support.An example element looks like this :
<GPSGarminAltitude/>
GPSGarminCompass
The GPSGarminCompass node is a simple EventGenerator that outputs GPS direction data from a magnetic compass of a Garmin receiver like the eTrex. It parses the Garmin NMEA string $HCHDG. The direction is encoded in the orientation field as a mathematically positive rotation around the Y axis starting from the X axis. It is managed by the GPSModule, see there for more information on how to configure GPS support.An example element looks like this :
<GPSGarminCompass/>
GPSInfoSource
The GPSInfoSource node is a simple EventGenerator that outputs additional status data on the GPS signal. It encodes the type of fix in the first entry of the position, the number of satellites in the second and the hdop value in the third. It will always fire even if no there is no position fix. The fix type is 0 for no fix, 1 for uncorrected and 2 for corrected position.An example element looks like this :
<GPSInfoSource/>
GPSSource
The GPSSource node is a simple EventGenerator that outputs GPS position data encoded in the position part of the event. This data is in Latitue, Longitute, Height in the WGS84 coordinate system. The confidence value is the inverse of the PDOP value. It is managed by the GPSModule, see there for more information on how to configure GPS support. Use a filter after that to transform the data into your local coordinate system. The node has no further attributes besides the ID attribute.An example element looks like this :
<GPSSource/>
InterSenseSource
The InterSenseSource node is a simple EventGenerator that generates events for an InterSense tracker. It only outputs data that is available from the tracker, for example an InterTrax device will not generate position data. It is associated with a tracker configuration element from the InterSenseModule via theid attribute. See the InterSenseModule for details on the reported position and orientation data. The element has the following attributes : idthe id of the tracker as set in the configuration elementstationthe number of the station of the tracker to output. This attribute is ignored for InterTrax devices. Between 0 and 7 inclusive.
<InterSenseSource id="IS600" station="1"/>
JoystickSource
The JoystickSource node is a simple EventGenerator that inserts events generated from the joystick input data into the tracker tree. The JoystcikSource element has the following attributes :idthe ID of the joystick the source is associated with
<JoystickSource id="1"/>
Linmousesource
The Linmouse node is a simple EventGenerator that outputs the current position and button event of the LinmouseModule. It is driven by the linmousemodule.An example element looks like this :
<Linmousesource/>
MagicYSource
The MagicYSource node is a simple EventGenerator that inserts events from the MagicYSource into the tracker tree. The MagicYSource element has the following attribute:numberthe number of the wand, between 0 and 99average, when set to 1 it ignores the number and calculates the average of all MagicY points.
<MagicYSource number="0" average="false"/>
MulticastInputSource
The MulticastInputSource node is a simple EventGenerator that inputs the data from the ART Data Tracker.numberthe body number of the specific source, starting with 0
<MulticastInputSource number="0"/>
P5GloveSource
The P5GloveSource node is an EventGenerator that outputs the current position of the glove and bending information for each finger. It is driven by the P5GloveModule. Note that at this time it only outputs whether the index finger is bent more the 50 degrees. This is the same for all fingers !It has the following attributes
fingerthe number of the finger to track, in the range 0 - 4. The mapping is: 0 = thumb, 1 = index, 2 = middle, 3 = ring, 4 = pinky
<P5GloveSource finger="1"/>
ParButtonSource
This element reads button values from the parallel port. It will only generate events, when the status changes. It works only on some hardware that has a bidirectional parallel port. This includes Indigo2, O2, and most modern PCs. There may be only one source per parallel port. The port itself is defined by the device name or the base port address, depending on the operating system. Both types of parameters are written into thedev attribute.An example element looks like this :
<ParButtonSource dev="0x378"/>
See the ParButtonModule (Parallel Button Input) for information on how to get it to work on different operating systems.
SpaceMouseSource
The SpaceMouseSource node is a simple EventGenerator that outputs the current position and button event of the SpaceMouse. It is driven by the SpaceMouseModule. [Hints to be filled in...]An example element looks like this :
<SpaceMouseSource/>
SpeechRecoSource
The SpeechRecoSource node pushes speech events. It is instantiated and managed by the SpeechModule. A speech event is coded into an attribute called 'commandId' as configured in the opentracker XML config file. The speech set ID is hold by an attribute called 'speechSetId'. The attributes 'commandName' and 'speechSetName' also encode the according command string and speech set description, respectively.This node always pushes 2 events, one speech "start" event, and one speech "end" event. This is used for button press/release actions. The start is coded as button 0 pressed, end as button 0 released. The source only fires events when a command is successfully recognised. It has the following attributes :
nameis the name of the source node.setspecifies the name of the command set to use in this node.
<SpeechRecoSource name="numberset" set="CmdSet1"/>
Targussource
The Targussource node is a simple EventGenerator that outputs the current position and button event of the TargusModule. It is driven by the LinmouseModule. If the mouse does not seem to work, press a button. This should initialize it and it will work. The mouse buttons are mapped to button numbers in the following way : the middle button sets the LSB to 1 and the second button sets the second to 1.An example element looks like this :
<Targussource/>
UbisenseSource
The UbisenseSource node is a simple EventGenerator that inserts events by making use of the Ubisense API. See the UbisenseModule for information about how to configure the module as a whole. It has the following elements :objectthe name of any Ubisense object which should be tracked
<UbisenseSource object="Person" />
UltraTrakSource
The UltraTrakSource node is a simple EventGenerator that inserts events from the UltraTrak into the tracker tree. The UltraTrakSource element has the following attribute:numberthe stations number, between 0 and any positive number
<UltraTrakSource number="1" />
WacomGraphireSource
The WacomGraphireSource node is a simple EventGenerator that outputs the the position of the pen on the tablet in the first two coordinates of the position value and the button status of the used input device. The node itself can be configured to report the position of a particular device, such as pen, eraser or puck. It has the following attributes :device, type of pointing device (pen, eraser, puck)
<WacomGraphireSource device="1" />
XSensSource
The XSensSource node is a simple EventGenerator that outputs orientation data from a single XSens MT9-B orientation tracker. See the XSensModule for more information. The configuration element has the following attributes :comportthe number of the serial port the tracker is connected to, starting with 1amd(true|false) false whether to use the automatic adjustment to magnetic disturbances.
<XSensSource comport="1"/>
The coordinate system of the orientation data is as follows. X and Y form the horizontal plane and Z is upwards. The measurement cube itself has a similar body system and reports orientations from the body system into the global system. To convert the readings into an Open Inventor like system use the following configuration. Then X and Z form the horizontal plane and Y is upwards for both global and body system.
<EventTransform rotationtype="matrix" rotation="1 0 0 0 0 1 0 -1 0"> <EventVirtualTransform rotationtype="matrix" rotation="1 0 0 0 0 -1 0 1 0"> <Ref USE="xsens"/> </EventVirtualTransform> </EventTransform>
FileSink
The CORBASink node is a CORBA object that exposes a setEvent method. It has the following attributes :namethe name to bind to in the CORBA NamingServicestationthe station number to record
<CORBASink name="CORBANodes.Context/Sink001.Object/">
TestSource
The TestSource node is a simple EventGenerator that fires in fixed intervals standard events. The events can be customized to have other then the default values.
It also supports simulation of noisy data. The parameter noise defines the size of a uniform distribution used to perturb the given default position and orientation. In addition to that it also defines the probability that the orientation representation is using the negative representation.
The node has the following elements :
frequencyevery freq. cycle it firesoffsetstarting after offset cyclespositionposition value of the event to fire as 3 floatsorientationorientation value of the event to fire as 4 floats representing a quaternionbuttona 16 bit integer value representing the button statesconfidencea float value in [0,1] to represent the confidence valuenoisea float value > 0, if present will output noisy data for simulations
<TestSource frequency="10" offset="5" />
DwarfSink
An example element looks like this :<DwarfSink frequency="10" offset="5" />
DwarfSource
An example element looks like this :<DwarfSource frequency="10" offset="5" />
NetworkSink
The NetworkSink node is a simple EventObserver / EventGenerator that passes events on and stores a copy of the last one. The NetworkSinkModule checks on each pass, whether a NetworkSink node stored a new event and sends that data as the specified station to the network. The NetworkSink element has the following attributes :mode(unicast|multicast) chooses between multicast and unicast modenamethe stations namenumberthe (nonnegative) stations numbermulticast-addressthe multicast group to send to in multicast modeportport to send to in multicast mode or to listen for in unicast modeinterfaceip address of the interface to work on
<NetworkSink mode="unicast" name="station name" number="0" port="54321"> <Any EventGenerator element type> </NetworkSink> <NetworkSink mode="multicast" name="station name" number="1" multicast-address="224.0.0.10" port="12345" interface="192.168.2.100"> <Any EventGenerator element type> </NetworkSink>
NetworkSource
The NetworkSource node is a simple EventGenerator that inserts events from the network into the tracker tree. The NetworkSource element has the following attributes :mode(unicast|multicast) chooses between multicast and unicast modenumberthe (nonnegative) station numbermulticast-addressthe multicast group to receive from in multicast modeaddressthe address to receive from in unicast modeportport to receive from An example element looks like this :<NetworkSource mode="unicast" number="0" address="localhost" port="54321"/> <NetworkSource mode="multicast" number="1" multicast-address="224.0.0.10" port="12345"/>
TCPSink
The TCPSink node is a simple sink for the TCPModule module. It resembles a single station in the stream of data that is served to clients by the TCPModule module. The node has the following elements :stationnumber of the stationpositionon|off flag to specify whether position information is to be sendorientationon|off flag to specify whether orientation information is to be sendbuttonon|off flag to specify whether button information is to be sendtimeon|off flag to specify whether timestamp information is to be send
<TCPSink station="0" position="on" rotation="off" > <Any EventGenerator element type> </TCPSink>
VRPNSink
The VRPNSink node acts as a single tracking server device using VRPN. It provides its data via a single connection setup by the VRPNModule. Therefore a single VRPNSink node is identifyable by thename attribute that specifies the device name of the node. The type field selects the type of device to be, either a tracker for 6DOF information or a button with up to 8 buttons. The values correspond to the OpenTracker event type. See http://www.vrpn.org/ for details on VRPN.It has the following attributes :
namethe VRPN device name to distinguish it from other devices on the server(tracker|button) to configure the type of device to be- the station number to report on for a tracker device
<VRPNSink name="tracker3" type="tracker" station="2"> <Any EventGenerator element type> </VRPNSink>
VRPNSource
The VRPNSource node acts as a client for a VRPN server. It supports receiving either a single tracker station or a button server with up to 8 buttons. The attributetype selects between the two modes. The station attribute selects the tracker station to report on. The most important attribute isQtAppScreen
This configuration node is associated with QtMouseEventModule. Consists of XML attributes, which determine the spatial location and extent of the Qt target desktop screen relative to the position and orientation of the ASPD (dedicated 6-DOF tracked device mounted on the the desktop screen). The attribute values can be generated with the OTQt calibration tool (see Configuration of the OTQt manual).Has the following XML attributes:
CSOrientationQuatquaternion quadruple determining the orientation difference of application screen coordinate system to the world coordination system (mandatory)CSRoot2ScreenRootVecpositional 3D vector directing from the application screen coordinate system origin (location of ASPD) to the screen root position, per definition the top left corner of the desktop screen (mandatory)ASWidthVecthe 3D width vector (x-axis) of the desktop screen plane (mandatory)ASHeightVecthe 3D height vector (y-axis) of the desktop screen plane (mandatory)
<QtAppScreen ASHeightVec="0.0000 -0.9999 0.0000" ASWidthVec="0.9999 0.0000 0.0000" CSOrientationQuat="0.0000 0.0000 -0.7071 0.7071" CSRoot2ScreenRootVec="-0.9999 -0.9999 0.0000" />
- See also:
- class
ot::QtAppScreendescription
QtAppScreenPosSink
Provides the QtMouseEventModule module with position and orientation data, used to calculate the spatial location of the target desktop screen (display of the target Qt application). Designed to be linked with a 6-DOF tracked input device, the so-called Application Screen Position Device (ASPD).Has the following XML attributes:
PosThreshRadiusInMeterradius of threshold sphere, applied in position filter (optional; default value: "0.0" -> position filter disabled) .. moreOrientThreshAngleradian angle used equally for all XYZ axes to describe an euler rotation, applied in orientation filter (optional; default value: "0.0" -> orientation filter disabled) .. moreconsume-eventsEither "true" (enabled) or "false" (disabled, default). If enabled, tracking events are not forwarded to their parent nodes within the OT node graph iff they are consumed within the OTQt MEM, that is, if a specific tracking event was used to generate Qt mouse events .. more
<QtAppScreenPosSink PosThreshRadiusInMeter="0.001" OrientThreshAngle="0.1" consume-events="false" > <Any EventGenerator element type> </QtAppScreenPosSink>
- See also:
- class ot::QtAppScreenPosSink description
QtMouseButtonSink
Provides the QtMouseEventModule module with input device button states, used to compute Qt application mouse button events. Designed to be linked with the so-called Mouse Button Device (MBD).Destination sink of the MBD.
Provides button state values either enabled or disabled for each button at a time, at least the left, right and middle mouse button (see ButtonId enum).
The mapping between the event button string (see class member State::button) and Qt buttons implemented in the MBS looks the following:
Slot Qt Button Id 0 Qt::LeftButton 1 Qt::RightButton 2 Qt::MidButton 3-7 not used
A button is considered as "pressed" if the corresponding slot bit is equal to 1 (true/enabled), otherwise the button is considered as "released".
- See also:
- class
QtMouseEventSinkBasedescription
Has the following XML attributes:
consume-eventsEither "true" (enabled) or "false" (disabled, default). If enabled, tracking events are not forwarded to their parent nodes within the OT node graph iff they are consumed within the OTQt MEM, that is, if a specific tracking event was used to generate Qt mouse events .. more
<QtMouseButtonSink consume-events="true"> <Any EventGenerator element type> </QtMouseButtonSink>
QtMousePosSink
Provides the QtMouseEventModule module with 3D position data, used to calculate the desktop mouse cursor position. Designed to be linked with a 3-DOF tracked input device, the so-called Mouse Position Device (MPD).Has the following XML attributes:
PosThreshRadiusInMeterradius of threshold sphere, applied in position filter (optional; default value: "0.0" -> position filter disabled) .. moreconsume-eventsEither "true" (enabled) or "false" (disabled, default). If enabled, tracking events are not forwarded to their parent nodes within the OT node graph iff they are consumed within the OTQt MEM, that is, if a specific tracking event was used to generate Qt mouse events .. more
<QtMousePosSink PosThreshRadiusInMeter="0.001" consume-events="true"> <Any EventGenerator element type> </QtMousePosSink>
- See also:
- class ot::QtMousePosSink description
QtMouseWheelSink
Provides the QtMouseEventModule module with input device wheel states, used to compute Qt application mouse wheel events. Designed to be linked with the so-called Mouse Wheel Device (MWD).Destination sink of the MWD.
Provides wheel state values either enabled or disabled for wheel forward and backward rotation.
The MWS uses he button member of the OpenTracker State event class and maps slots to wheel events as follows. A wheel move is indicated by a binary slot value of 1 (true/enabled).
Slot Wheel Event 0 Wheel Forward Move 1 Wheel Backward Move 2-7 not used
Provides methods indicating wheel forward (see wheelForwardMove()) and wheel backward (see wheelBackwardMove()) moves.
Has the following XML attributes:
consume-eventsEither "true" (enabled) or "false" (disabled, default). If enabled, tracking events are not forwarded to their parent nodes within the OT node graph iff they are consumed within the OTQt MEM, that is, if a specific tracking event was used to generate Qt mouse events .. more
<QtMouseWheelSink consume-events="false" > <Any EventGenerator element type> </QtMouseWheelSink>