From 127eef5a8b4e95bd1554302cc72a6276d7cf72c7 Mon Sep 17 00:00:00 2001 From: Hartmut Seichter Date: Thu, 26 Jun 2025 17:43:24 +0200 Subject: [PATCH] WIP --- uvrpn.gd | 23 +- vrpn.test.cfg | 3478 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 3498 insertions(+), 3 deletions(-) create mode 100644 vrpn.test.cfg diff --git a/uvrpn.gd b/uvrpn.gd index a563f04..0569f8d 100644 --- a/uvrpn.gd +++ b/uvrpn.gd @@ -3,11 +3,17 @@ extends Node @export var url : String = "localhost" @export var port : int = 3883 -var server : UDPServer = UDPServer.new() +var server : UDPServer = null +var socket : StreamPeerTCP = StreamPeerTCP.new() func _ready() -> void: - server.listen(3883) - + if StreamPeerTCP.STATUS_NONE == socket.get_status(): + if socket.connect_to_host("localhost",3883) == OK: + send_data(socket,"localhost".to_utf8_buffer()) + server = UDPServer.new() + server.listen(3883) + + func _process(delta: float) -> void: server.poll() if server.is_connection_available(): @@ -17,3 +23,14 @@ func _process(delta: float) -> void: print("Received data: %s" % [packet.get_string_from_utf8()]) # Reply so it knows we received the message. peer.put_packet(packet) + + +static func send_data(socket : StreamPeerTCP, data: PackedByteArray) -> bool: + if socket.get_status() != StreamPeerTCP.STATUS_CONNECTED: + print("Error: Stream is not currently connected.") + return false + var error: int = socket.put_data(data) + if error != OK: + print("Error writing to stream: ", error) + return false + return true diff --git a/vrpn.test.cfg b/vrpn.test.cfg new file mode 100644 index 0000000..9d520be --- /dev/null +++ b/vrpn.test.cfg @@ -0,0 +1,3478 @@ +# vrpn.cfg SAMPLE for VRPN version 07.35 + +################################################################################ +################################################################################ +# This file provides comments and examples for the vrpn.cfg file that is read +# by the vrpn_server application when it starts up. This is a generic server +# application that can start up many but maybe not all servers. +# +# This has sample lines for a vrpn.cfg file. If you get a new device working, +# add a line for it here. DO NOT remove lines from this file (unless +# devices are declared obsolete) - just change the actual vrpn.cfg to match +# your application. +# +# All examples in the file are preceded by comment characters (#). To actually +# use one of these examples, remove that character from the beginning of all the +# examples that you want to use, and edit those lines to suit your environment. +################################################################################ + +################################################################################ +# NULL Tracker. This is a "device" that reports the Identity transformation for +# each of its sensors at the specified rate. It can be used to verify +# connections are working and for other tests of VRPN. +# There are three arguments: +# char name_of_this_device[] +# int number_of_sensors +# float rate_at_which_to_report_updates + +#vrpn_Tracker_NULL Tracker0 2 2.0 + +################################################################################ +# Spin Tracker. This is a "device" that reports a spinning rotation at the +# origin for each of its sensors at the specified rate. It can be used to +# provide smooth motion to debug rendering systems. +# There are seven arguments: +# char name_of_this_device[] +# int number_of_sensors +# float rate_at_which_to_report_updates +# float x_of_axis_to_spin_around +# float y_of_axis_to_spin_around +# float z_of_axis_to_spin_around +# float rotation_rate_around_axis_in_Hz + +vrpn_Tracker_Spin Tracker0 1 200.0 0.0 1.0 0.0 0.1 + +################################################################################ +# WintrackerIII from VR SPace +# Emiliano Pastorelli - Institute of Cybernetics, Tallinn (Estonia) +# +# Several other commands are available to control the device, a future version of the server will implement them too +# +# char name_of_the_device[] +# activate sensor0 activate (1=activated, 0=deactivated) +# activate sensor1 activate (1=activated, 0=deactivated) +# activate sensor2 (1=activated, 0=deactivated) +# activate range extender (1=activated, 0=deactivated) +# hemisphere of operation (X = front hemisphere with X>0; Z = upper hemisphere with Z<0 ) +# + +#vrpn_Tracker_Wintracker Wintracker0 1 0 0 0 X + +################################################################################ +# Example Button server. This is a "device" that reports on and off for +# each of its buttons at the specified rate. It can be used to verify connections +# are working and for other tests of VRPN. There are three arguments: +# char name_of_this_device[] +# int number_of_buttons +# float rate_at_which_the_buttons_toggle (transitions/second) + +#vrpn_Button_Example Button0 2 2.0 + +################################################################################ +# Example Dial server. This is a "device" that reports constant rotations for +# each of its dials at the specified rate. It can be used to verify connections +# are working and for other tests of VRPN. There are four arguments: +# char name_of_this_device[] +# int number_of_dials +# float rate_at_which_the_dials_spin (revolutions/second) +# float rate_at_which_to_report_updates (updates/second) + +#vrpn_Dial_Example Dial0 2 2.0 10.0 + +################################################################################ +# Flock-of-birds Tracker. Runs an Ascension Flock of Birds tracker that is +# attached to a serial port on this machine. Note that there is another driver +# (listed below) that runs the Flock when each sensor is connected to its own +# serial line. Arguments: +# char name_of_this_device[] +# int number_of_sensors +# char name_of_serial_device[] +# int baud_rate_of_serial_device +# int invert_quaternion (0 = no, 1 = yes) +# char useERT (OPTIONAL; defaults to yes) +# char[2] active_hemisphere (OPTIONAL; defaults to +z) +# +# NOTE: for useERT: use nothing, y or Y if you have an extended range +# transmitter, use N or n if not (added by David Nahon for Virtools +# VRPack/SAS Cube. +# NOTE: The "invert_quaternion" parameter was added because there was a +# conflict between the code that had been around since VRPN started and +# the Flock documentation -- it looks like most people had been using the +# Flock in the "wrong" hemisphere, which inverted the orientation relative +# to the position. The old behavior is obtained by specifying "1". Not +# inverting it is specified using "0". +# NOTE: active hemisphere is one of "+x", "-x", "+y", "-y", "+z", "-z" +# If "active_hemisphere" is not specified, it defaults to +z. + + +#vrpn_Tracker_Flock Tracker0 4 /dev/ttyS0 115200 1 + +# If you have to FOB, with no Extended Range ctrler/transmitter, on Windows, +# with -x as the active hemisphere, use + +#vrpn_Tracker_Flock Tracker0 2 COM1 38400 1 N -x + +# Watch: be sure that the serial baud rate dip switches (the 3 on the left) +# of your master flock are properly set. +# You should try baud rates like 38400 before trying to go higher +# In normal address mode - less than 14 fob units - your switch should be: +# 0 1 2 3 4 5 6 7 +# 0 0 1 X X X X 0 2400 +# 0 1 0 X X X X 0 4800 +# 0 1 1 X X X X 0 9600 +# 1 0 0 X X X X 0 19200 +# 1 0 1 X X X X 0 38400 +# 1 1 0 X X X X 0 57600 +# 1 1 1 X X X X 0 115200 +# +# X X X X are used for coding the FOB address, they must be set correctly, +# even if you are only using 1 unit (standalone mode) +# the settings should be (in normal address mode): +# 3 4 5 6 +# 0 0 0 1 for the first unit +# 0 0 1 0 for the second unit +# 0 0 1 1 for the third +# 0 1 0 0 for the fourth +# 0 1 0 1 for the fifth +# ... +# +############################################################################ +# WATCH WATCH WATCH WATCH WATCH WATCH WATCH WATCH WATCH WATCH WATCH WATCH +################### +# +# On windows at least, it might be necessary to cut your serial cable so as +# to only have Transmit, Receive and Ground pins. Even if CBIRDS or WINBIRDS +# are fine with a cable, it doesn't mean that this cable will please vrpn. +# This limitation should have been fixed with version 06.05. +# +################### + +################################################################################ +# Flock-of-birds in parallel Tracker. Runs an Ascension Flock of Birds tracker +# that has its source and each sensor plugged into its own serial port on this +# machine (perhaps through a Cyclades multi-port serial card). This mode of +# operation increases the throughput and decreases the latency of tracker reports. +# The arguments match those of the Flock-of-birds tracker from above, with the +# addition of the name of the serial ports for each of the sensors added at the +# end. Arguments (all on the same line): +# char name_of_this_device[] +# int number_of_sensors +# char name_of_serial_device_for_controller[] +# int baud_rate_of_serial_device +# int invert_quaternion (0 = no, 1 = yes) +# [one for each sensor] char name_of_serial_device_for_sensor[] +# +# NOTE: The "invert_quaternion" parameter was added because there was a +# conflict between the code that had been around since VRPN started and +# the Flock documentation -- it looks like most people had been using the +# Flock in the "wrong" hemisphere, which inverted the orientation relative +# to the position. The old behavior is obtained by specifying "1". Not +# inverting it is specified using "0". + +#vrpn_Tracker_Flock_Parallel Tracker0 4 /dev/ttyC4 115200 1 /dev/ttyC0 /dev/ttyC1 /dev/ttyC2 /dev/ttyC3 +#vrpn_Tracker_Flock_Parallel Tracker0 2 COM1 115200 1 COM2 COM3 + +################################################################################ +# Fastrak Tracker. Runs a Polhemus Fastrak tracker that is attached to a serial +# port on this machine. This driver will also run an InterSense IS600 or IS900 +# tracker, but you will want to include extra initialization code (as described +# below) to set up the ultrasonic pip information, wand devices, stylus devices +# and so forth. Arguments that go on the first line: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device +# +# It is possible to add additional commands that will be sent to the tracker +# by putting the backslash character (\) at the end of the config line. This +# will cause the following line to be read in and sent to the Fastrak during +# the reset routine. You can add additional lines by putting a slash at the +# end of each command line but the last. Each line will be sent to the Fastrak +# with a newline at the end of it. If a line starts with an asterisk (*), then +# it is treated as a line telling how long to sleep, with the integer number of +# seconds following the *. +# +# If one or more sensors on the Fastrak have a stylus button on them, use +# the "FTStylus" command after the reset command lines (if any). There should +# be a front-slash "/" character at the end of the line before the FTStylus +# command. The command takes two arguments: the name of the button device +# that will report the buttons and the sensor number to which the button is +# attached (the first sensor is sensor 0). +# +# Commands to add Joysticks (2 buttons) or Wands (5 buttons and 2 analogs) to +# the various sensors on the Isense900 are done by adding Stylus and +# Wand command lines after the reset command lines. Each of these lines +# takes two arguments: the name of the button (for Stylus) or button and +# analog (for Wand) servers, and the sensor number (starting from 0). The +# Wand line takes eight additional parameters, which specify the scaling +# and clipping behavior of the two directions on the analog joystick. Each +# set of for is the min, lowzero, hizero, and max values: these are mapped +# to -1, 0,0, and 1 (all values between lowzero and hizero are mapped to 0). +# Start with these at -1,0,0,1 and use the 'printcereal' program or some other +# method to read them and see what the range of acheivable values is. Then, +# set them to slightly conservative values so that the whole range is covered +# and the analogs will report zero when the joystick is centered. The +# presence of these lines is indicated by placing them after any additional +# reset command lines, by ending the line preceding them with the front slash +# "/" character. +# +# Remember that the "remote" button object is not the same as the the tracking +# device, so be sure to use a remote button object that connects to the button +# rather than the tracker. The button device name is defined on the stylus or +# wand line in the config file, and should not be the same as the tracker. In +# the case described by the example configuration below, if the name of the +# machine running the server is "myis900server" you would connect to the tracker +# as "Isense900@myis900server" and to the buttons on the stylus as +# "Stylus0@myis900server": +# +# Note that this frontslash and backslash-notation can only be used for the +# Fastrak/Isense tracker, not to extend the line for any other type of device +# listed in this configuration file. + +# Vanilla Fastrak on on a Unix box +#vrpn_Tracker_Fastrak Fastrak0 /dev/ttyS0 19200 + +# Fastrak with a stylus on sensor zero on a Windows box +#vrpn_Tracker_Fastrak Tracker0 COM1 115200 / +#FTStylus Stylus0 0 + +# IS600 and its pip settings +#vrpn_Tracker_Fastrak Isense600 /dev/ttyS0 19200 \ +#MCc\ +#*5\ +#MCM1,1,0.0900,0.0000,-0.2210,0.00,0.00,-1.00,89\ +#MCM1,2,-0.0566,0.0000,-0.2210,0.00,0.00,-1.00,87\ +#MCM2,1,0.0900,0.0000,-0.2210,0.00,0.00,-1.00,66\ +#MCM2,2,-0.0566,0.0000,-0.2210,0.00,0.00,-1.00,71\ +#MCM3,1,0.1237,-0.0762,-0.0424,0.00,0.00,-1.00,82\ +#MCM3,2,0.1237,0.0762,-0.0424,0.00,0.00,-1.00,77\ +#MCe\ +#*10 + +# IS900 with a wand on the first sensor and a stylus on the third: +#vrpn_Tracker_Fastrak Isense900 COM1 115200 / +#Wand Wand0 0 -1.0 0.0 0.0 1.0 -1.0 0.0 0.0 1.0 / +#Stylus Stylus0 2 + +################################################################################ +# Isotrak Tracker. Runs a Polhemus Isotrak tracker that is attached to a serial +# port on this machine. Arguments that go on the first line: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device +# +# It is possible to add additional commands that will be sent to the tracker +# by putting the backslash character (\) at the end of the config line. This +# will cause the following line to be read in and sent to the Isotrak during +# the reset routine. You can add additional lines by putting a slash at the +# end of each command line but the last. Each line will be sent to the Isotrak +# with a newline at the end of it. If a line starts with an asterisk (*), then +# it is treated as a line telling how long to sleep, with the integer number of +# seconds following the *. + +#vrpn_Tracker_Isotrak TrackerIsotrak /dev/ttyS0 115200 \ +#H1,0,1,0 + +################################################################################ +# Liberty Tracker. Runs a Polhemus Liberty tracker that is attached to a serial +# port (perhaps a USB-to-RS232 adapter) on this machine. Arguments that go on +# the first line. +# char name_of_this_device[] +# char name_of_serial_or_usb_device[] +# int baud_rate_of_serial_device (not used when the device is USB) +# int number_of_chars_in_whoami_response (optional) +# +# It is possible to add additional commands that will be sent to the tracker +# by putting the backslash character (\) at the end of the config line. This +# will cause the following line to be read in and sent to the Liberty during +# the reset routine. You can add additional lines by putting a slash at the +# end of each command line but the last. Each line will be sent to the Fastrak +# with a newline at the end of it. If a line starts with an asterisk (*), then +# it is treated as a line telling how long to sleep, with the integer number of +# seconds following the *. +# +# If one or more sensors on the Liberty have a stylus button on them, use +# the "Stylus" command after the reset command lines (if any). There should +# be a front-slash "/" character at the end of the line before the Stylus +# command. The command takes two arguments: the name of the button device +# that will report the buttons and the sensor number to which the button is +# attached (the first sensor is sensor 0). +# + +# ------------------------------------------- +# Example when Liberty is attached via USB +# The BAUD Rate is needed, although it is not used + +#vrpn_Tracker_Liberty Liberty /dev/usb/ttyUSB0 115200 + +#-------------------------------------------- +# Example when Liberty is attached via Serial + +#vrpn_Tracker_Liberty Liberty /dev/ttyS0 115200 + +#-------------------------------------------- +# Example when Liberty is attached via Serial with a non-standard whoami length + +#vrpn_Tracker_Liberty Liberty /dev/ttyS0 115200 247 + +#-------------------------------------------- +# Liberty attached via Serial with styluses on sensors zero and three +#vrpn_Tracker_Liberty Tracker0 /dev/ttyS0 115200 / +#Stylus Stylus0 0 / +#Stylus Stylus1 3 + +################################################################################ +# High Speed Liberty Latus Tracker. Runs a Polhemus Liberty Latus tracker that +# is attached to a USB port on this machine. Arguments that go on the first line +# char name_of_this_device[] +# int number_of_markers_to_detect +# int baud_rate_of_usb_device +# int number_of_chars_in_whoami_response (optional) +# +# It is possible to add additional commands that will be sent to the tracker +# by putting the backslash character (\) at the end of the config line. This +# will cause the following line to be read in and sent to the Liberty during +# the reset routine. You can add additional lines by putting a slash at the +# end of each command line but the last. Each line will be sent to the Fastrak +# with a newline at the end of it. If a line starts with an asterisk (*), then +# it is treated as a line telling how long to sleep, with the integer number of +# seconds following the *. + +# ------------------------------------------- +# Example when Liberty Latus is attached via USB +# The BAUD Rate is needed, although it is not used + +#vrpn_Tracker_LibertyHS LibertyHS 3 115200 + +################################################################################ +# InterSense tracker using the Intersense-provided library to communicate +# with the tracker. This device type is not compiled by default, since it uses +# a proprietary library. However, you can get it to compile by defining +# VRPN_INCLUDE_INTERSENSE when compiling. Note that the Fastrak driver will +# run IS-600 and IS-900 trackers without the proprietary library, so you might +# try that as well. +# +# You can include extra initialization code (as described +# below) to set up the ultrasonic pip information, wand devices, stylus devices +# and so forth. Arguments that go on the first line: +# char name_of_this_device[] +# char name_of_serial_device[] - this can be COM1-4 or AUTO +# AUTO will automatically find USB and +# serial trackers. Use COM1-4 only if you +# have more than one serial tracker. +# You should use COM1-4 on unix as well, +# as these just tell the isense library +# to look in serial port 1-4. +# I guess you can't have >1 USB trackers. +# char "IS900time" - use the IS900 timestamps (optional) +# char "ResetAtStartup" - resets all boresight and heading, on intertrax, +# equivalent to push the reset button +# +# It is possible to add additional commands that will be sent to the tracker +# by putting the backslash character (\) at the end of the config line. This +# will cause the following line to be read in and sent to the InterSense during +# the reset routine. You can add additional lines by putting a slash at the +# end of each command line but the last. Each line will be sent to the InterSense +# with a newline at the end of it. If a line starts with an asterisk (*), then +# it is treated as a line telling how long to sleep, with the integer number of +# seconds following the *. +# +# Commands to add Joysticks (2 buttons) or Wands (5 buttons and 2 analogs) to +# the various sensors on the Isense900 are done by adding Stylus and +# Wand command lines after the reset command lines. Each of these lines +# takes two arguments: the name of the button (for Stylus) or button and +# analog (for Wand) servers, and the sensor number (starting from 0). The +# Wand line takes eight additional parameters, which specify the scaling +# and clipping behavior of the two directions on the analog joystick. Each +# set of for is the min, lowzero, hizero, and max values: these are mapped +# to -1, 0,0, and 1 (all values between lowzero and hizero are mapped to 0). +# Start with these at -1,0,0,1 and use the 'printcereal' program or some other +# method to read them and see what the range of acheivable values is. Then, +# set them to slightly conservative values so that the whole range is covered +# and the analogs will report zero when the joystick is centered. The +# presence of these lines is indicated by placing them after any additional +# reset command lines, by ending the line preceding them with the front slash +# "/" character. +# +# Remember that the "remote" button object is not the same as the the tracking +# device, so be sure to use a remote button object that connects to the button +# rather than the tracker. The button device name is defined on the stylus or +# wand line in the config file, and should not be the same as the tracker. In +# the case described by the example configuration below, if the name of the +# machine running the server is "myis900server" you would connect to the tracker +# as "Isense900@myis900server" and to the buttons on the stylus as +# "Stylus0@myis900server": +# +# Note that this frontslash and backslash-notation can only be used for the +# Fastrak and InterSense tracker, not to extend the line for any other +# type of device +# listed in this configuration file. +# +# Note that this driver expects the device to be set to output centimeters, and will convert +# the positions to meters. It is recommanded to permanently set the units in the eeprom of your device. +# If this is not possible, you should add in this file the "u" reset command so as to have vrpn +# tell your device to use centimeters +# +#Vanilla InterSense +#vrpn_Tracker_InterSense Tracker0 AUTO IS900time + +# Vanilla InterSense using IS900 timing, with wand in port B (and possibly head tracker in port A) +#vrpn_Tracker_InterSense Tracker0 AUTO IS900time / +#Wand Wand0 1 -1.0 0.0 0.0 1.0 -1.0 0.0 0.0 1.0 + +# IS600 and its pip settings +#vrpn_Tracker_InterSense Isense600 COM1 \ +#MCc\ +#*5\ +#MCM1,1,0.0900,0.0000,-0.2210,0.00,0.00,-1.00,89\ +#MCM1,2,-0.0566,0.0000,-0.2210,0.00,0.00,-1.00,87\ +#MCM2,1,0.0900,0.0000,-0.2210,0.00,0.00,-1.00,66\ +#MCM2,2,-0.0566,0.0000,-0.2210,0.00,0.00,-1.00,71\ +#MCM3,1,0.1237,-0.0762,-0.0424,0.00,0.00,-1.00,82\ +#MCM3,2,0.1237,0.0762,-0.0424,0.00,0.00,-1.00,77\ +#MCe\ +#*10 + +# IS900 with a wand on the first sensor and a stylus on the third: +#vrpn_Tracker_InterSense Isense900 COM1 / +#Wand Wand0 0 -1.0 0.0 0.0 1.0 -1.0 0.0 0.0 1.0 / +#Stylus Stylus0 2 + +# Intertrax2 on USB, With automatic reset at startup +#vrpn_Tracker_InterSense Tracker0 AUTO ResetAtStartup + +################################################################################ +# Dynasight Tracker. Runs an Origin System's DynaSight tracker connected to a +# serial port on this machine. arguments: +# char name_of_this_device[] +# int number_of_sensors +# char name_of_serial_device[] +# int baud_rate_of_serial_device + +#vrpn_Tracker_Dyna Tracker0 1 /dev/ttyS0 19200 + +#vrpn_Tracker_Dyna Tracker0 1 COM1 19200 + +################################################################################ +# Crossbow Tracker. Runs a Crossbow Technology RGA300-series tracker that is +# attached to a serial port on this machine. There are four arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device (should be 38400) +# float linear_acceleration_sensitivity (Gs; default is 2.0) +# float angular_rate_sensitivity (degrees per second; default is 100) + +#vrpn_Tracker_Crossbow Tracker0 COM1: 38400 2.0 100 + +############################################################################### +# 3d Microscribe is a mechanical tracker the nesseccary params are +# name port baudrate +# additional params are offsetx offsety offsetz scale +# offsets are in meters. Scale is an abomination in VRPN; all +# trackers report in meters. +# + +#vrpn_3DMicroscribe Microscribe COM1 19200 0.3 -0.1 -0.2 1 + +################################################################################ +# Serial 5DT glove with 16 sensors. This driver reports the 16 channels as analog +# devices. If you want to treat them as buttons, then also add the entry +# for the vrpn_Button_5DT_Server below, connecting it to the output of this +# server. +# +# This server does not work with the previous version of the glove. +# For other variations of 5DT datagloves, see vrpn_5dt and vrpn_Analog_5dtUSB +# +# arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device + +#vrpn_5dt16 glove_5dt16 COM1 19200 + +################################################################################ +# +# Use the 5dtglove16 as button device. Use in conjunction with the vrpn_5dt16 +# device above to turn the analog reports into button press/release when the +# sensors cross the threshold. +# +# arguments: +# char name_of_this_device[] +# char name_of_the_glove device[] +# double threshold_toggle_point_between_pressed_and_unpressed[16] + +#vrpn_Button_5DT_Server glove_5dt_button glove_5dt16 1794 2171 2110 2610 1707 2673 2459 1493 3029 2301 1936 3007 2302 1635 0 0 + +################################################################################ +# AnalogFly Tracker. This is a tracker that is intended to be used on top of +# a joystick or motion tracker of some kind to turn it into a moving or flying +# device. It could be used on top of any analog device, in fact. +# This device basically takes in analog signals and puts out transformation +# matrices. It should supercede the JoyFly tracker, since it is more general. +# There are two kinds of JoyFly's: absolute ones and differential ones. For +# absolute ones, the analog value is mapped directly to position or orientation +# on each axis. For differential ones, the values are used to create a +# "change" matrix that is applied once per interval, accumulating changes as +# it goes; this enables the user to "fly" along by holding a joystick forward, +# for example. +# One analog channel is associated with each axis (X, Y, Z) and rotation about +# each axis (RX, RY, RZ). For each axis, the value is converted to a position +# (meters) or speed (meters/second) for absolute trackers; or into an +# orientation (revolutions) or angular velocity (revolutions/second) by first +# subtracting an offset, then thresholding it to see if it is far enough from +# zero, then (if it is) scaling it and taking it to a power (to allow nonlinear +# speedup as the stick is pushed far from center). +# A button can be associated with a reset function, which will take the +# device back to center (identity transformation). The device will also recenter +# when the first connection is made to the server it is running on. (Centering +# has no effect on absolute AnalogFlys). +# A button can be associated with a clutch function, which will mean that +# the device will not move unless the clutch is pressed, so you can use it +# like a mouse and continue to move by pulling to the right with the button +# down and then to the left with the button up. For differential analogflys, +# clutching makes the tracker not move unless the button is pressed. For +# absolute ones, it only moves when the button is pressed and the mouse is +# moving; it offsets to enable long-range motions in a finite tracking area, +# as with a mouse. +# Any axis or the reset button can be disabled by setting the name of its +# associated device to the string "NULL". +# Note that you could have multiple of these devices running simultaneously, +# each with a different name and interaction metaphor. The user could then +# connect to their favorite one. Arguments: +# char name_of_this_device[] +# float update_rate_to_send_tracker_reports +# char type[] = "absolute" or "differential" +# [six lines follow, one for X Y Z RX RY RZ, each with: +# char axis_name[] (X Y Z RX RY RZ in that order) +# char name_of_analog_device[] (start with * for local) +# int channel_of_analog_device +# float offset +# float threshold +# float scale +# float power +# ] +# [New line to describe reset button, with: +# char "RESET" +# char name_of_button_device[] (start with * for local) +# int which_button_to_use +# ] +# [New line to describe clutch button, with: +# char "CLUTCH" +# char name_of_button_device[] (start with * for local) +# int which_button_to_use +# ] +# [New line to indicate use of world frame for translation and rotation, +# instead of local frame. Useful for a simulated wand when doing desktop +# testing of immersive apps - easier to keep under control. +# char "WORLDFRAME" +# ] + +#vrpn_Tracker_AnalogFly Tracker0 60.0 absolute +#X *Mouse0 0 0.5 0.0 2.0 1.0 +#Y *Mouse0 1 0.5 0.0 2.0 1.0 +#Z NULL 2 0.0 0.0 1.0 1.0 +#RX NULL 3 0.0 0.0 1.0 1.0 +#RY NULL 4 0.0 0.0 1.0 1.0 +#RZ NULL 5 0.0 0.0 1.0 1.0 +#RESET NULL 0 +#CLUTCH *Mouse0 0 + +#vrpn_Tracker_AnalogFly Tracker0 60.0 absolute +#X *CerealBox0 4 0.0 0.021 1.0 1.0 +#Y *CerealBox0 5 0.0 0.021 1.0 1.0 +#Z *CerealBox0 6 0.0 0.021 3.0 1.0 +#RX *CerealBox0 0 0.0 0.021 1.0 1.0 +#RY *CerealBox0 1 0.0 0.021 1.0 1.0 +#RZ *CerealBox0 2 0.0 0.021 3.0 1.0 +#RESET *CerealBox 3 +#CLUTCH NULL 0 + +#vrpn_Tracker_AnalogFly Tracker0 60.0 differential +#X *Magellan0 0 0.0 0.0 2.0 1.0 +#Y *Magellan0 1 0.0 0.0 2.0 1.0 +#Z *Magellan0 2 0.0 0.0 2.0 1.0 +#RX *Magellan0 3 0.0 0.0 2.0 1.0 +#RY *Magellan0 4 0.0 0.0 2.0 1.0 +#RZ *Magellan0 5 0.0 0.0 2.0 1.0 +#RESET NULL 0 +#CLUTCH NULL 0 + +# For a good simulated wand for testing VR Juggler applications with a SpaceMouse: +#vrpn_Tracker_AnalogFly Tracker0 60.0 differential +#X *Magellan0 0 0.0 0.0 20.0 1 +#Y *Magellan0 1 0.0 0.0 20.0 1 +#Z *Magellan0 2 0.0 0.0 20.0 1 +#RX *Magellan0 3 0.0 0.01 -5 1.0 +#RY *Magellan0 4 0.0 0.01 -5 1.0 +#RZ *Magellan0 5 0.0 0.01 -5 1.0 +#RESET NULL 0 +#CLUTCH NULL 0 +#WORLDFRAME + +#vrpn_Tracker_AnalogFly Tracker0 60.0 absolute +#X NULL 0 0.0 0.0 1.0 1.0 +#Y NULL 0 0.0 0.0 1.0 1.0 +#Z NULL 0 0.0 0.0 1.0 1.0 +#RX *Radamec0 1 0.0 0.0 -0.0027777777 1.0 +#RY NULL 0 0.0 0.0 1.0 1.0 +#RZ *Radamec0 0 0.0 0.0 0.0027777777 1.0 +#RESET NULL 0 +#CLUTCH NULL 0 + +#vrpn_Tracker_AnalogFly Tracker0 60.0 absolute +#X *Joystick0 0 0.0 0.0 1.0 1.0 +#Y *Joystick0 1 0.0 0.0 -1.0 1.0 +#Z *Joystick0 6 0.0 0.0 1.0 1.0 +#RX NULL 3 0.0 0.0 1.0 1.0 +#RY NULL 4 0.0 0.0 1.0 1.0 +#RZ *Joystick0 5 0.0 0.0 0.5 1.0 +#RESET NULL 0 +#CLUTCH NULL 0 + +# Using a joystick to emulate a Phantom for the +# nanoManipulator, the throttle maps to Z. +#vrpn_Tracker_AnalogFly Phantom 60.0 absolute +#X *Phantom 0 0.0 0.0 0.125 1.0 +#Y *Phantom 1 0.0 0.0 -0.125 1.0 +#Z *Phantom 6 0.0 0.0 0.25 1.0 +#RX NULL 3 0.0 0.0 1.0 1.0 +#RY NULL 4 0.0 0.0 1.0 1.0 +#RZ *Phantom 5 0.0 0.0 0.06 1.0 +#RESET NULL 0 +#CLUTCH NULL 0 + +# For DTU/MIC optical nanoHand stage motion, moving over full 300 micron range +# of motion, using the Logitech joystick for the analog +# server and the tracker_to_poser program. +#vrpn_Tracker_AnalogFly Tracker0 60.0 absolute +#X *Joystick0 0 -0.03 0.0 2.53 1.0 +#Y *Joystick0 1 -0.04 0.0 2.53 1.0 +#Z *Joystick0 6 -0.10 0.0 -1.75 1.0 +#RX NULL 3 0.0 0.0 1.0 1.0 +#RY NULL 4 0.0 0.0 1.0 1.0 +#RZ *Joystick0 5 0.0 0.0 0.5 1.0 +#RESET NULL 0 +#CLUTCH NULL 0 + +# To drive a Tektronix 4662 full range (Z, RZ ignored) +#vrpn_Tracker_AnalogFly Tracker0 60.0 absolute +#X *Joystick0 0 -1.0 0.0 0.19 1.0 +#Y *Joystick0 1 1.0 0.0 -0.13 1.0 +#Z *Joystick0 6 0.0 0.0 1.0 1.0 +#RX NULL 3 0.0 0.0 1.0 1.0 +#RY NULL 4 0.0 0.0 1.0 1.0 +#RZ *Joystick0 5 0.0 0.0 0.5 1.0 +#RESET NULL 0 +#CLUTCH NULL 0 + +# For UNC Mad City Labs stage motion, moving over full 100 micron range +# of motion, using the Microsoft FF joystick for the analog +# server and the tracker_to_poser program. +#vrpn_Tracker_AnalogFly Tracker0 60.0 absolute +#X *Joystick0 0 -1 0.0 50 1.0 +#Y *Joystick0 1 -1 0.0 50 1.0 +#Z *Joystick0 6 -1 0.0 50 1.0 +#RX NULL 3 0.0 0.0 1.0 1.0 +#RY NULL 4 0.0 0.0 1.0 1.0 +#RZ *Joystick0 5 0.0 0.0 0.5 1.0 +#RESET NULL 0 +#CLUTCH NULL 0 + +# For Artemis or Hercules (mad-city-labs) stages +# Maps 0-10 from the voltage into the range 0-100 microns. +#vrpn_Tracker_AnalogFly StageTracker 60.0 absolute +#X *MCLXYZIN 4 0 0.0 10 1.0 +#Y *MCLXYZIN 5 0 0.0 10 1.0 +#Z *MCLXYZIN 6 0 0.0 10 1.0 +#RX NULL 3 0.0 0.0 1.0 1.0 +#RY NULL 4 0.0 0.0 1.0 1.0 +#RZ NULL 5 0.0 0.0 1.0 1.0 +#RESET NULL 0 +#CLUTCH NULL 0 + +# For a 3DConnexion Traveler named device0 +# You should scale the values for translation w.r.t. +# rotation to suit your preferences. +#vrpn_Tracker_AnalogFly Tracker0 60.0 differential +#X *device0 0 0.0 0.0 2.0 1.0 +#Y *device0 1 0.0 0.0 -2.0 1.0 +#Z *device0 2 0.0 0.0 -2.0 1.0 +#RX *device0 3 0.0 0.0 -0.2 1.0 +#RY *device0 4 0.0 0.0 0.2 1.0 +#RZ *device0 5 0.0 0.0 0.2 1.0 +#RESET *device0 0 +#CLUTCH NULL 0 + +################################################################################ +# XXX This device is superceded by the more-general vrpn_Tracker_AnalogFly. +# JoyFly Tracker. A vrpn_Tracker that translates the vrpn_Joystick into +# Walkthrough- convention tracker reports. This is part of a two-part setup +# that allows you to use a joystick as a flying device. First, a joystick +# device has to be created (named joybox in our example) that will produce +# the analog inputs that the JoyFly tracker uses to determine the transformation. +# Then, the JoyFly device needs to be started and will listen to the device +# and produce tracker reports. If these are both run on the same server, then +# the JoyFly needs to use the "server" connection to hear from the Joystick +# device, which is indicated by placing a '*' in front of the name of the +# joystick device that it is to use. If the joystick device is remote from +# this server, then the full name of it should be used (joystick@foo.cs.unc.edu). +# XXX This device is superceded by the more-general vrpn_Tracker_AnalogFly +# Arguments: +# char name_of_this_device[] +# char source_joystick_name[] (Start with * for one sharing a connection) +# char joystick_configuration_file_name[] + +#vrpn_JoyFly walk-joybox *joybox vrpn_Joyfly.cfg + +################################################################################ +# ButtonFly Tracker. This is a tracker that is intended to be used on top of +# a Global Haptics Orb or other buttond device to turn it into a moving or +# flying device. It basically takes in button signals and puts out +# transformation matrices. +# There are two kinds of Buttons: absolute ones and differential ones. For +# absolute ones, pressing it causes the position or orientation associated with +# it to be stored directly into the transformation. This enables the user to +# "teleport" to given locations by pressing buttons. For differential ones, +# the position or orientation are treated as deltas and are used to create a +# "change" matrix that is applied once per interval, accumulating changes as +# it goes; this enables the user to "fly" along by holding a button down, +# for example. +# Each button is associated with either a position (meters) or speed +# (meters/second) for absolute buttons; or an orientation (revolutions) +# or angular velocity (revolutions/second). +# An analog channel can be associated with a scale function that scales the +# velocity or angular velocity terms uniformly. The entry specifies an +# offset to be applied to the analog channel, a scale to be applied to it, +# and a power to which the result should be taken; the end result is used +# to scale all velocity or angular velocity terms. This channel has no +# effect on the effects of absolute buttons. +# The device will recenter (set itself to the identity transform) when the +# first connection is made to the server it is running on. +# Note that you could have multiple of these devices running simultaneously, +# each with a different name and interaction metaphor. The user could then +# connect to their favorite one. Arguments: +# char name_of_this_device[] +# float update_rate_to_send_tracker_reports +# [one or more lines follow, each of one of two types +# (1) char [] = "absolute" +# char name_of_button_device[] (start with * for local) +# int which_button_on_device +# float X_to_translate_to +# float Y_to_translate_to +# float Z_to_translate_to +# float rotation_about_X +# float rotation_about_Y +# float rotation_about_Z +# (2) char [] = "differential" +# char name_of_button_device[] (start with * for local) +# int which_button_on_device +# float X_translation_meters_per_second +# float Y_translation_meters_per_second +# float Z_translation_meters_per_second +# float spin_about_X_revolutions_per_second +# float spin_about_Y_revolutions_per_second +# float spin_about_Z_revolutions_per_second +# ] +# [An optional line describing an analog to scale the velocity +# char [] = "vel_scale" +# char name_of_button_device[] (start with * for local) +# int which_button_on_device +# float offset +# float scale +# float power +# ] +# [An optional line describing an analog to scale the rotation +# char [] = "rot_scale" +# char name_of_button_device[] (start with * for local) +# int which_button_on_device +# float offset +# float scale +# float power +# ] +# [one more line, consisting of the word "end"] +# Note that the same button can cause more than one action to take place, +# and the same analog can cause scaling of both the velocity and rotation. + +# This example for a Global Haptics Orb pushes the transformation away +# from the button that is pressed +# for all of the standard buttons. It rotates around the Y axis when the +# rocker switch is rocked up and down. It resets to the origin when one +# of the pushbuttons is pressed. Both the velocity and angular velocity +# are controlled by the thumbwheel. + +#vrpn_Tracker_ButtonFly Tracker0 60.0 +#differential *Orb0 0 0 1 0 0 0 0 +#differential *Orb0 1 0.707 0.707 0 0 0 0 +#differential *Orb0 2 1 0 0 0 0 0 +#differential *Orb0 3 0.707 -0.707 0 0 0 0 +#differential *Orb0 4 0 -1 0 0 0 0 +#differential *Orb0 5 -0.707 -0.707 0 0 0 0 +#differential *Orb0 6 -1 0 0 0 0 0 +#differential *Orb0 7 -0.707 0.707 0 0 0 0 +#differential *Orb0 8 0 0.707 -0.707 0 0 0 +#differential *Orb0 9 0.577 0.577 -0.577 0 0 0 +#differential *Orb0 10 0.707 0 -0.707 0 0 0 +#differential *Orb0 11 0.577 -0.577 -0.577 0 0 0 +#differential *Orb0 12 0 -0.707 -0.707 0 0 0 +#differential *Orb0 13 -0.577 -0.577 -0.577 0 0 0 +#differential *Orb0 14 -0.707 0 -0.707 0 0 0 +#differential *Orb0 15 -0.577 0.577 -0.577 0 0 0 +#differential *Orb0 16 0 0.707 0.707 0 0 0 +#differential *Orb0 17 0.577 0.577 0.577 0 0 0 +#differential *Orb0 18 0.707 0 0.707 0 0 0 +#differential *Orb0 19 0.577 -0.577 0.577 0 0 0 +#differential *Orb0 20 0 -0.707 0.707 0 0 0 +#differential *Orb0 21 -0.577 -0.577 0.577 0 0 0 +#differential *Orb0 22 -0.707 0 0.707 0 0 0 +#differential *Orb0 23 -0.577 0.577 0.577 0 0 0 +#differential *Orb0 24 0 0 -1 0 0 0 +#differential *Orb0 25 0 0 1 0 0 0 +#differential *Orb0 28 0 0 0 0 -0.1 0 +#differential *Orb0 29 0 0 0 0 0.1 0 +#absolute *Orb0 27 0 0 0 0 0 0 +#vel_scale *Orb0 0 -1.0 0.5 1.0 +#rot_scale *Orb0 0 -1.0 0.5 1.0 +#end + +################################################################################ +# 3Space Tracker. Runs a Polhemus 3Space (not Fastrak) tracker that is attached +# to a serial port on this machine. Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device + +#vrpn_Tracker_3Space Tracker0 /dev/ttyS0 19200 + +################################################################################ +# Logitech 3DMouse tracker attached to a serial port on this machine. +# Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device +# int filtering_count (this parameter is optional) + +#vrpn_Tracker_3DMouse Tracker0 /dev/ttyS0 19200 + +################################################################################ +# NDI Polaris Spectra or Vectra, attached to a serial or USB port +# This server works with the NDI Polaris Spectra and Polaris Vectra +# trackers. It doesn't work with the Optitrak or Aurora. It only +# handles rigid bodies made from passive sphere markers, and does +# not yet support active led markers nor single "stray" passive +# spheres. +# +# Each vrpn "sensor" is a single rigid body (or "tool" in NDI +# terminology), which consists of 3 or more passive spheres in a +# particular geometric arrangement. In order to define a custom +# rigid body (one that didn't come from NDI), you must use the NDI +# Architect software. That software produces .rom files for each +# rigid body. This vrpn tracker class will load those files during +# initialization. +# +# Before configuring the vrpn server here, you should first run +# the NDI software to track the rigid bodies using the NDI's +# interactive GUI. Only after you have configured and tested the +# tracker and rigid bodies to your satisfaction, should you try +# this vrpn server. +# +# This currently only handles an IR strobe rate of 60Hz, not +# 20Hz or 30Hz. +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int number of sensors (i.e. num of rigid bodies) +# +# char rigidBody 0's .rom filename +# char rigidBody 1's .rom filename +# char rigidBody 2's ... + +# vrpn_Tracker_NDI_Polaris Tracker0 COM1 2 +# hello.rom +# ../world.rom + +################################################################################ +# CerealBox dial/button/analog. Runs a BG Systems CerealBox device that attaches +# to a serial port on this machine. As of VRPN version 04.07, 19200 is the +# only supported baud rate. The driver has been tested on an LV824-F-8e device. +# Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device +# int number_of_buttons_to_read (starting from 0) +# int number_of_analogs_to_read +# int number_of_encoders_to_read + +#vrpn_CerealBox Cereal0 /dev/cua0 19200 8 8 8 + +################################################################################ +# Magellan button/analog. Runs a Logitech Magellan device that attaches +# to a serial port on this machine. As of VRPN version 04.12, 9600 is the +# only supported baud rate. +# +# The Magellan is also known in some instances as the Magellan SpaceMouse, +# not to be confused with the 3DConnexion SpaceMouse (later version of the +# same product). +# 3DConnexion Magellan/SpaceMouse Plus XT Serial - +# works with vrpn_Magellan without "altreset" for some. +# requires "altreset" to avoid lots of beeping at startup for others. +# +# Note that if you want to use the Magellan as a tracking device, you will +# need to run a vrpn_Tracker_AnalogFly device that listens to its analog +# outputs and converts them into tracker reports +# +# John Stone added support for the SpaceBalls in version 06.03, an example +# startup is shown below. +# +# Julien Brisset discovered how to make this work with a slightly older version +# of the Magellan. If the example Magellan line doesn't work, add 'altreset' to +# the line to use the alternative reset string for the device. +# +# If your Magellan is connected through a usb-serial cable on Mac OS X, use +# /dev/tty.usbserial, on Linux you may want to try /dev/ttyUSB0 instead. +# +# NOTE: You should NOT run the driver that comes with the Magellan, since the +# VRPN driver opens the serial port and communicates with the device directly. +# If the Magellan driver from the manufacturer is running, then VRPN may not +# be able to open the port. +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device +# char "altreset" {Optional, for older Magellans} + +#vrpn_Magellan Magellan0 COM1 9600 +#vrpn_Magellan Magellan0 /dev/ttyS0 9600 altreset +#vrpn_Spaceball Spaceball0 /dev/ttyS0 9600 +#vrpn_Magellan Magellan0 /dev/tty.usbserial 9600 altreset + +################################################################################ +# NRL Immersion Box dial/button/analog. Runs a Immersion Interface Box device +# attached to a serial port. As of March 28, 2000 code to read the analog and +# angle encoders has not been implemented. Also, baud rate on many SGI's is +# limited to 38400, but I have run the ibox at 115200 on PCs. +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device +# int number_of_buttons_to_read (i.e. 4 ==> 0,1,2,3) +# int number_of_analogs_to_read +# int number_of_encoders_to_read + +#vrpn_ImmersionBox ibox /dev/ttyd2 38400 4 0 0 +#vrpn_ImmersionBox ibox com1 115200 4 0 0 + +################################################################################ +# Wands button/analog, driver from Brown University. Runs a Wanda device +# attached to a serial port. +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_port_to_use[] +# int baud_rate_of_serial_device +# float minimum_update_rate + +#vrpn_Wanda Wanda /dev/ttyd2 1200 60.0 +#vrpn_Wanda Wanda COM2 1200 60.0 + +################################################################################ +# Radamec Serial Position Interface analog. Camera tracker that attaches +# to a serial port on this machine. Note that for normal operation, 38400 is the +# only supported baud rate. +# +# Note that if you want to use the Radamec SPI as a tracking device, you will +# need to run a vrpn_Tracker_AnalogFly device (of the absolute variety) +# that listens to its analog outputs and converts them into tracker reports. +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_port[] +# int baud_rate_of_serial_port + +#vrpn_Radamec_SPI Analog0 /dev/ttyS16 38400 + +################################################################################ +# Zaber linear positioning element analog/out that attaches +# to a serial port on this machine. +# +# Note that if you want to use the Zaber as a tracking device, you will +# need to run a vrpn_Tracker_AnalogFly device (of the absolute variety) +# that listens to its analog outputs and converts them into tracker reports. +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_port[] + +#vrpn_Zaber Analog0 COM1 + +################################################################################ +# Biosciences Tools temperature control unit, analog/out that attaches +# to a serial port on this machine. +# +# This instrument also has a button device that reports whether the +# temperature control is turned on. +# +# Analog channels: (read by client) +# 0 Reading from stage 1 in degrees Celcius +# 1 Reading from bath 1 in degrees Celcius +# 2 Reading external 1 or Setpoint for control in degrees Celcius +# 3 Reading from stage 2 in degrees Celcius +# 4 Reading from bath 2 in degrees Celcius +# 5 Reading external 2 or Setpoint for control in degrees Celcius +# Button channels: (read by client) +# 0 Temperature control is on or off +# Analog_Output channels: (set by client) +# 0 Reference temperature for channel 1 +# 1 Reference temperature for channel 2 +# 2 Turn temperature control on/off (0 = off, otherwise on) +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_port[] +# float Temperature to set for channel 1 in degrees Celcius +# float Temperature to set for channel 2 in degrees Celcius +# int Do we turn on temperature control (0 = no, 1 = yes) + +#vrpn_BiosciencesTools Analog0 COM1 37.0 37.0 0 + +################################################################################ +# Omega temperature control unit, analog/out that attaches +# to a serial port on this machine. +# +# This instrument also has a button device that reports whether the +# temperature control is turned on. +# +# XXX Figure out the settings once the code has been finished. + +#vrpn_OmegaTemerature Analog0 COM1 XXX + +################################################################################ +# IDEA-drive linear positioning element analog that attaches +# to a serial port on this machine. +# +# Note that if you want to use the IDEA as a tracking device, you will +# need to run a vrpn_Tracker_AnalogFly device (of the absolute variety) +# that listens to its analog outputs and converts them into tracker reports. +# +# If the drive does not have a limit switch to calibrate against and you need to +# drive it to one rail to find a zero location, use a nonzero initial_move +# value to cause a move. To keep it from getting stuck against that limit, +# change the fractional_c_a value to be less than one -- this will lower +# both the current and the acceleration/deceleration by this fraction for +# this initial move. The location of the device is reset to 0 after the +# move is done. +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_port[] +# int run_speed_tics_sec +# int start_speed_tics_sec +# int end_speed_tics_sec +# int accel_rate_tics_sec_sec +# int decel_rate_tics_sec_sec +# int run_current +# int hold_current +# int accel_current +# int decel_current +# int delay +# int step +# int high_limit_index (-1 for none) +# int low_limit_index (-1 for none) +# int output_1_value (0 for off, 1 for on, -1 for don't change) +# int output_2_value (0 for off, 1 for on, -1 for don't change) +# int output_3_value (0 for off, 1 for on, -1 for don't change) +# int output_4_value (0 for off, 1 for on, -1 for don't change) +# double initial_move (0 for no move) +# double fractional_c_a (Fraction of full current and acceleration) +# double reset_location (Where to set location on reset in full ticks) + +#vrpn_IDEA Analog0 COM1 3200 1200 2000 40000 100000 290 0 290 290 50 8 1 -1 0 0 0 0 0 1.0 -60.0 +#vrpn_IDEA Analog1 COM2 3200 1200 2000 40000 100000 290 0 290 290 50 8 1 -1 0 0 0 0 0 1.0 -60.0 +#vrpn_IDEA Analog2 COM3 3200 1200 2000 40000 100000 290 0 290 290 50 8 1 -1 0 0 0 0 0 1.0 -60.0 +#vrpn_IDEA Analog0 /dev/ttyUSB1 3200 1200 2000 40000 100000 290 0 290 290 50 8 -1 -1 0 0 0 0 10000 0.2 -60.0 +#vrpn_IDEA Analog1 /dev/ttyUSB2 3200 1200 2000 40000 100000 290 0 290 290 50 8 -1 -1 0 0 0 0 10000 0.2 -60.0 +#vrpn_IDEA Analog2 /dev/ttyUSB3 3200 1200 2000 40000 100000 290 0 290 290 50 8 -1 -1 0 0 0 0 10000 0.2 -60.0 + +################################################################################ +# SGI Dial and Button box, raw interface. Runs a dial-and-button box from SGI, +# talking to it through the raw serial interface (not using the GL interface +# supplied by SGI). This allows the box to be opened even if there is nobody +# logged on at the console. Note that to use this on an SGI, you will need to +# configure the port as a serial device, not as a button device, to get it to +# run. Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# [list of buttons to treat as toggles] int button_to_toggle + +#vrpn_raw_SGIBox Sgibox0 /dev/ttyS0 0 1 2 3 + +################################################################################ +# SGI Dial and Button box, cooked interface. Runs a dial-and-button box from SGI, +# talking to it through the GL interface supplied by SGI. Note that this can +# only be used on an SGI, and the serial port must be configured as a dial/button +# device and the dial/button server from SGI must be running to use it. Arguments: +# char name_of_this_device[] +# [list of buttons to treat as toggles] int button_to_toggle + +#vrpn_SGIBOX Sgibox0 1 2 + +################################################################################ +# UNC Python button device. UNC has developed a custom button input device, which +# is a 5-button controller that attaches to a parallel port and uses the sense +# lines to return the state of the buttons. This runs the device. Note that on +# Windows NT, you need to have installed the GiveIO driver for this code to +# work. It also works on Linux (no extra drivers needed), but on no other +# architecture. Arguments: +# char name_of_this_device[] +# int parallel_port_to_use_starting_with_1 +# int hexadecimal_io_base_number (default address used if left off) + +#vrpn_Button_Python Button0 1 + +################################################################################ +# UNC Joystick driver. UNC has developed a custom-build joybox, with 7 analog +# and 2 button inputs (two 3-axis joysticks and a slider, with a button on top +# of each joystick). This will drive one of these devices, which attaches to +# a serial port on this computer. I'm not sure what the baud rate should be; +# David Harrison might know. +# This driver can be used in conjunction with the JoyFly driver to produce a +# tracker that uses the joystick to fly around. Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device +# float minimum_update_rate_from_analogs_even_if_they_dont_move + +#vrpn_Joystick Joybox0 /dev/ttyd1 19200 10.0 + +################################################################################ +# Linux Joystick. Interface to the Linux Joystick driver by Vojtech Pavlik +# included in several Linux distributions. The server code has been tested +# with Linux Joystick driver version 1.2.14. Yet, there is no way how to +# map a typical joystick's zillion buttons and axes on few buttons and axes +# really used. Unfortunately, even joysticks of the same kind can have +# different button mappings from one to another. +# Arguments: +# char name_of_this_device[] +# char name_of_joystick_device[] + +#vrpn_Joylin Joylin0 /dev/input/js0 + +################################################################################ +# Fakespace Pinch Glove. Drives a Fakespace Pinch Glove device connected to a +# serial port on this machine. This device has ten buttons-two hands and five +# fingers on each hand. Buttons 0-4 are fingers for the right hand-thumb first +# and pinkie last- while buttons 5-9 are for the left hand-thumb first. The +# Button is ON when it is touching another finger. Therefore there cannot +# be just one Button ON. Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device + +#vrpn_Button_PinchGlove PinchGlove0 COM1 9600 + +################################################################################ +# Adrienne Electronics Corporation PCI time code driver. The PCI-VITC board +# for which this driver was developed reads in VITC time codes from an input +# signal. This will drive one of these devices. +# Arguments: +# char name_of_this_device[] + +#vrpn_TimeCode_Generator TimeGen0 + +################################################################################ +# 5DT glove (5 sensors plus optional tilt sensors). +# Drive a 5dt glove connected on a serial Port. This device uses +# optical fiber to get the finger position. +# +# See also vrpn_5DT16 (16-sensor serial) and vrpn_Analog_5dtUSB (5 or 14-sensor +# "Ultra" USB/wireless) +# +# 2 modes are driven: the first one let the driver get data from the glove +# when requested (we advise this mode). The second one makes the glove send +# data continuously. This mode may saturate the input buffer. +# +# The manual states that there will be 9 bytes per report, but one group +# has found that they get an extra one: 0x55 at the end of each report. +# So, you can choose whether to use 9 (the default) or 10 now. +# Gesture management is not implemented yet nor the mouse emulation mode +# +# The standard baud rate for the "wired" glove is 19200. For a "wireless" +# glove (which is send-only), even if directly connected, use baud rate +# 9600. The driver detects this and will adjust its behavior accordingly +# (forcing on continuous mode and 10-bytes-per-report, ignoring the settings +# you specify here). If you aren't sure what kind of glove you have, use the +# Glove Manager app in +# "5DT Data Glove Series: Full Package for Windows 95/98/NT/2000" downloaded from +# http://5dt.com/downloads.html and try to connect, it will tell you. +# Their Glove Manager worked for me on Linux 64-bit with WINE, and is probably the +# easiest way to find out this info if you don't know it. (Or, just try 9600 if +# 19200 doesn't work.) +# +# Reports the digit bend values in order, channels 1-5, in the range 0.0-1.0, +# and the tilt sensors in channels 6 and 7 in the range 0 to 180, if available +# +# arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device +# int mode_of_data_reporting (1 = on request, 2 = continuously) +# int ten_bytes_per_report (0 = no, use 9; 1 = yes) + +#vrpn_5dt glove_5dt /dev/ttyS0 19200 1 0 +#vrpn_5dt glove_5dt COM1 19200 1 0 +#vrpn_5dt glove_5dt_wireless /dev/ttyS1 9600 2 1 + +################################################################################ +# NRL Serial Mouse. A device made by wiring buttons in parallel with the buttons +# on a serial mouse. Both mousesystems or microsoft mouse protocols are +# supported. Note that the server code makes the connection at the standard +# 1200 baud. The mouse can be plugged into any serial port -- this driver goes +# directly through the raw port and does not use the built-in mouse drivers. +# NOTE: The middle button on the 3button type is toggled by moving the mouse +# on a surface while not toggling the other two buttons, strange as this may +# seem. The motion of the mouse is not reported, only the buttons. + +#vrpn_Button_SerialMouse Button0 /dev/ttyd1 mousesystems +#vrpn_Button_SerialMouse Button0 COM1 mousesystems +#vrpn_Button_SerialMouse Button0 COM1 3button +# For a Linux box with a mouse on port 0 +#vrpn_Button_SerialMouse Button0 /dev/ttyS0 3button +# For a mac with a Keyspan 4-port serial-to-USB converter +#vrpn_Button_SerialMouse Button0 /dev/tty.USA49W3b12P1.1 3button + +################################################################################ +# ReliaSolve Streaming Arduino. +# char name_of_this_device[] +# char name_of_serial_device[] +# int number_of_analogs_to_read + +#vrpn_Streaming_Arduino sa0 /dev/ttyd2 4 +#vrpn_Streaming_Arduino sa0 COM5 4 + +################################################################################ +# NRL TNG3. (Totally Neat Gadget) A device made by mindtel, available from +# pulsar.org. Powered off the serial port control lines, the TNG3 has 8 digital +# and 8 analog inputs. Analog resolution is 8 bits. Baud rate fixed internally +# at 19200. +# char name_of_this_device[] +# char name_of_serial_device[] +# int number_of_buttons_to_read (i.e. 8 ==> 0,1,2,3,4,5,6,7) +# int number_of_analogs_to_read + +#vrpn_Tng3 tng3name /dev/ttyd2 4 0 +#vrpn_Tng3 tng3name com1 8 8 +#vrpn_Tng3 tng3name com1 1 1 + +################################################################################ +# Microsoft DirectX compatible force-feedback joystick (or non-force-feedback +# joystick). +# char name_of_this_device[] +# int number of times per second to read from the device +# int number of times per second to update force (0 for non-force device) + +#vrpn_DirectXFFJoystick Joystick0 60 200 +#vrpn_DirectXFFJoystick Joystick0 60 0 + + +################################################################################ +# Microsoft DirectX compatible rumble-pad (e.g. Wingman) +# char name_of_this_device[] + +#vrpn_DirectXRumblePad RumblePad0 + +################################################################################ +# Microsoft XInput compatible controller (e.g. Xbox 360 gamepad) +# char name_of_this_device[] +# int userIndex (0 for "Player 1", 1 for "Player 2", etc.) + +#vrpn_XInputGamepad XInput0 0 + + +################################################################################ +# Manager for joysticks under windows using standard win32 calls. +# for force feedback support, see DirectX joystick above +# +# Arguments: +# char name_of_this_device[] +# int joystick Id +# (1 for first joystick JOYSTICKID1 or 2 for second JOYSTICKID2 only) +# int number of times per second to read from the device +# int readmode : 0 = raw data; +# 1 = 0,1 normalized data; +# 2=-1,1 normalized data +# int percentage (0 to 100) of deadzone (used mode 1 and 2 only) + +#vrpn_Joywin32 joyWin32 1 60 2 35 + +################################################################################ +# Global Haptics GeoOrb serial-line device that contains a number of buttons, +# a thumbwheel, and a trackball. For current devices, only 19200 baud works. +# Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device + +#vrpn_GlobalHapticsOrb Orb0 COM1 19200 + +################################################################################ +# SensAble Technologies Phantom force-feedback device opened using the +# GHOST software developer's kit. For Phantom Desktop systems, you don't +# need to have the user establish the reset position. For the Premium models, +# you do. +# Arguments: +# char name_of_this_device[] +# int establish_reset_position (0 or 1) +# float rate_to_send_tracker_reports +# char Name of the Phantom in the configuration control panel + +#vrpn_Phantom Phantom 0 60.0 Default PHANToM + +############################################################################## +# Virtual Presence Joystick tracker device. (http://www.vrweb.com) +# Use this driver to read the button states, +# use Flock-of-Birds driver for the position/orientation state +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device + +#vrpn_VPJoystick VPJoystick0 /dev/ttyS0 9600 + +################################################################################ +# Advanced Realtime Tracking GmbH (http://www.ar-tracking.de) DTrack client +# +# creates as many vrpn_Tracker as there are bodies or Flysticks, starting with the bodies +# creates 2 analogs per Flystick +# creates 8 buttons per Flystick +# +# NOTE: when using DTrack's older output format for Flystick data ('6df'), the numbering +# of Flystick buttons differs from DTrack documentation (for compatibility with +# older vrpn releases) +# +# Arguments: +# char name_of_this_device[] +# int udp_port (DTrack sends data to this UDP port) +# +# Optional arguments: +# float time_to_reach_joy (in seconds; see below) +# int number_of_bodies, number_of_flysticks (fixed numbers of bodies and Flysticks) +# int renumbered_ids[] (vrpn_Tracker IDs of bodies and Flysticks) +# char "3d" (activates 3dof marker output if available; +# always last argument if "-" is not present) +# char "-" (activates tracing; always last argument) +# +# NOTE: time_to_reach_joy is the time needed to reach the maximum value (1.0 or -1.0) of the +# joystick of older 'Flystick' devices when the corresponding button is pressed +# (one of the last buttons amongst the 8); not necessary for newer 'Flystick2' devices +# with its analog joystick +# +# NOTE: if fixed numbers of bodies and Flysticks should be used, both arguments +# number_of_bodies and number_of_flysticks have to be set +# +# NOTE: renumbering of tracker IDs is only possible, if fixed numbers of bodies and +# Flysticks are set; there has to be an argument present for each body/Flystick + +#vrpn_Tracker_DTrack DTrack 5000 +#vrpn_Tracker_DTrack DTrack 5000 - +#vrpn_Tracker_DTrack DTrack 5000 3d +#vrpn_Tracker_DTrack DTrack 5000 3d - +#vrpn_Tracker_DTrack DTrack 5000 0.5 +#vrpn_Tracker_DTrack DTrack 5000 0.5 2 2 +#vrpn_Tracker_DTrack DTrack 5000 0.5 2 2 2 1 0 3 +#vrpn_Tracker_DTrack DTrack 5000 0.5 2 2 2 1 0 3 3d - + +################################################################################ +# National Instruments Analog Output server. This will open the board whose +# name is specified, configure the number of channels specified, and set the +# polarity and maximum voltage range at which to drive the channels. +# +# XXX This server is deprecated, please use the vrpn_National_Instruments +# server listed below. +# +# Arguments: +# char vrpn_name_for_this_device[] +# char name_of_NI_board[] +# int number_of_channels +# int polarity : 0 = unipolar, 1 = bipolar +# float min_voltage +# float max_voltage + +#vrpn_NI_Analog_Output Analog_XY DAQCard-6036E 2 0 -10.0 10.0 +#vrpn_NI_Analog_Output Analog_ZTweeze DAQCard-6036E 2 0 -10.0 10.0 +#vrpn_NI_Analog_Output Analog_XYZ PCI-6733 3 0 -10.0 10.0 + +################################################################################ +# National Instruments A/D, D/A Analog and Analog Output server. This will open +# the board whose name is specified, configure the number of channels specified, +# and set the polarity and maximum voltage range at which to read and +# drive the channels. +## +# Arguments: +# char vrpn_name_for_this_device[] +# char name_of_NationalInstruments_board[] +# int number_of_input_channels (can be zero) +# float mininum_delay_between_Analog_Reports (zero for fastest) +# int input_polarity : 0 = unipolar, 1 = bipolar +# int input_mode : 0 = differential, 1 = ref single-end, 2 = non-ref SE +# int input_range : 5 = 5v, 10 = 10v, 20 = 20v +# int input_drive_ais : 0 = no, 1 = yes +# int input_gain +# int number_of_output_channels (can be zero) +# int output_polarity : 0 = unipolar, 1 = bipolar +# float min_out_voltage (used to guard against overdriving devices) +# float max_out_voltage (used to guard against overdriving devices) + +# Input example +#vrpn_National_Instruments MCLXYZIN PCI-6052E 7 0 0 0 10 0 1 0 0 -10.0 10.0 +# Output examples +#vrpn_National_Instruments MCLXYZOUT PCI-6733 0 0 0 0 10 0 1 3 0 0.0 10.0 +#vrpn_National_Instruments Analog_XY DAQCard-6036E 0 0 0 0 10 0 1 2 1 -10.0 10.0 + +################################################################################ +# Analog Poser. This is a poser that is intended to be used on top of +# an analog output (perhaps a National Instruments board), whose outputs +# directly drive the position of some actuated stage. It could be used on top +# of any analog output device, in fact. This device basically takes in poses +# and puts out analog outputs. +# One analog channel is associated with each axis (X, Y, Z) and rotation about +# each axis (RX, RY, RZ). For each axis, the position (meters) is converted into +# a voltage; the orientation is mapped from a quaternion into Euler angles and +# each of the Euler angles is converted into a voltage (XXX Orientation is not yet +# implemented; the RX,RY, and RZ values must be specified but they are not used). +# XXX Velocity and orientation velocity are not yet supported. +# Any axis can be disabled by setting the name of its associated device to the +# string "NULL". +# +# Arguments: +# char vrpn_name_for_this_device[] +# int send_tracker_reports +# [six lines follow, one for X Y Z RX RY RZ, each with: +# char axis_name[] (X Y Z RX RY RZ in that order) +# char vrpn_name_of_the_analog_output_to_use[] +# (Preface with a * if it uses the same connection) +# int channel_of_analog_output_device (First channel is channel 0) +# float offset +# float scale +# float min_value of workspace +# float max_value of workspace +# ] + +#vrpn_Poser_Analog Poser0 1 +#X *Analog_XY 0 0.0 1.0 -10 10 +#Y *Analog_XY 1 0.0 1.0 -10 10 +#Z *Analog_ZTweeze 0 0.0 1.0 -10 10 +#RX NULL 0 0.0 1.0 -10 10 +#RY NULL 0 0.0 1.0 -10 10 +#RZ NULL 0 0.0 1.0 -10 10 + +# Poser to drive Mad City Labs stage from an input value of +# 0 to 100 microns to an output (through a National Instruments +# D/A card) of 0-10 volts. +#vrpn_Poser_Analog Poser0 1 +#X *MCLXYZOUT 0 0.0 0.1 0 100 +#Y *MCLXYZOUT 1 0.0 0.1 0 100 +#Z *MCLXYZOUT 2 0.0 0.1 0 100 +#RX NULL 0 0.0 1.0 -10 10 +#RY NULL 0 0.0 1.0 -10 10 +#RZ NULL 0 0.0 1.0 -10 10 + +################################################################################ +# Nikon microscope connected to PC via serial port. Currently only controls +# the focus of the microscope using an analogout and reads the focus position +# using an analog. +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] + +#vrpn_nikon_controls nikon COM1 + +################################################################################ +# Tektronix 4662 plotter. Attaches to a serial port. Acts as both a poser and +# a tracker. Reports positions 4x per second plus when a move command completes. +# Multiple move commands issued before they complete will result in only the last +# one being executed. +# +# Arguments: +# char name_of_this_device[] +# char name_of_serial_device[] +# int baud_rate_of_serial_device + +#vrpn_Tek4662 Tek4662 COM1 1200 + +############################################################################### +# keyboard and mouse button is a tracker with button system +# XXX These have been removed and replaced with vrpn_Mouse +# and vrpn_Keyboard. Use the clutch option on vrpn_AnalogFly to +# replicate the mouse behavior. The vrpn_Keyboard does not +# enable key mapping, just sends all of the keys' scancodes +# through. + +################################################################################ +# US Digital A2 Absolute Encoder Analog Input server. This will open the COM +# port specified, configure the number of channels specified, and report +# Absolute Encoder values in tenths of a degree from 0 to 3599. +# +# Arguments: +# char name_of_this_device[] +# int COM_port. If 0, search for correct COM port. +# int number_of_channels +# int 0 to report always, 1 to report on change only (optional, default=0) + +#vrpn_Analog_USDigital_A2 Analog0 1 2 + +################################################################################ +# This is a driver for National Instruments DAQCard- +# DIO-24, a PCMCIA card, which provides 24-bit digital I/O. +# +# Arguments: +# char name_of_this_device[] +# int number_of_channls to read: 1-24 (optional. default=24). + +#vrpn_Button_NI_DIO24 Button0 1 + +############################################################################## +# PhaseSpace Impulse system. This device type is not compiled by default, since +# it uses a proprietary library. However, you can get it to compile by +# defining VRPN_INCLUDE_PHASESPACE and including the appropriate libraries +# and headers when compiling (See vrpn_Configure.h). +# +# Arguments: +# char tracker_name[] # Tracker0, Tracker1, ... etc +# [Additional lines specifying tracker configuration] +# +# The section following the Tracker declaration is a tag delimited set of +# lines which specify system configuration and vrpn sensors. The section begins +# with an tag and ends with a tag. Each tag must be on a separate +# line. (see below) +# +# Each line in the specification section is a white-space separated set of +# key-value pairs. At most one sensor is defined per line. The sensor and type +# keys are mandatory. Other keys are are required based on the type. +# +# Comments can be embedded with the '#' character. +# +# Example: +# +# vrpn_Tracker_PhaseSpace Tracker0 +# +# device="192.168.1.1" +# frequency=960 +# slave=0 +# drop_frames=0 +# scale=0.001 +# debug=0 +# +# sensor=0 type=point tracker=0 led=0 # this is a comment +# sensor=1 type=point tracker=0 led=1 # map sensor 1 to led 1 on tracker 0 +# +# sensor=2 type=rigid_body tracker=1 # designate tracker 1 as a rigid body on sensor 2 +# sensor=3 type=point tracker=1 led=2 pos=0,0,0 # add led 2 to rigid body on tracker 1 +# sensor=4 type=point tracker=1 led=3 pos=100,0,0 # add led 3 to rigid body on tracker 1 +# sensor=5 type=point tracker=1 led=4 pos=0,100,0 # add led 4 to rigid body on tracker 1 +# sensor=6 type=point tracker=1 led=5 pos=0,0,100 # add led 5 to rigid body on tracker 1 +# +# +# Key Definitions +# ====================== +# +# device +# A string specifying the IP address of the Impulse server to connect to. +# +# frequency +# A floating-point number specifying the system streaming frequency. +# Usually 480 or 960. +# +# slave +# An integer specifying whether to enable slave mode. +# Set to 0 to disable, 1 to enable. If slave mode is enabled, unspecified +# markers are assigned an arbitrary sensor number. +# +# drop_frames +# An integer. Set to zero to disable. Specifying 1 for drop_frames will +# cause the server to drop frames in order to get the most recent data on +# every run through the mainloop. This may be desirable for most VR +# applications and for slower machines. +# +# debug +# An integer. Zero to disable. Specifying 1 for debug will cause the server +# to print out verbose debugging output. +# +# scale +# The floating-point factor to scale incoming positional data by. The default +# is 0.001. +# +# sensor +# The vrpn sensor number. +# +# type +# A string which specifies what type the sensor is. Required if sensor is +# specified. The following types are supported: +# point +# rigid +# rigid_body (deprecated) +# +# tracker +# An integer which specifies The Impulse tracker id of an led or rigid body. +# Required if type is "point" or "rigid". +# +# led +# An integer which specifies the led id of a sensor. +# Required if type is "point". +# +# pos +# An optional comma-separated list of three floating-point numbers specifying +# the 3D position of a marker on a rigid body. No spaces. Valid if type is +# "point". Specifying positions is only valid if the tracker number is set +# to a rigid body. The units MUST be in millimeters, regardless of scale +# setting. +# +# init +# An optional comma-separated list of four floating-point numbers specifying +# kalman parameters for a rigid body. Valid if type is "rigid_body". +# +# +# For support, questions, comments, or bug reports please send emails +# to: support@phasespace.com +# +#vrpn_Tracker_PhaseSpace Tracker0 +# +#device="192.168.1.230" +#frequency=480 +#slave=0 +#drop_frames=0 +#scale=0.001 +#sensor=0 type=point led=0 +#sensor=1 type=point led=1 +#sensor=2 type=point led=2 +#sensor=3 type=point led=3 +#sensor=4 type=point led=4 +#sensor=5 type=point led=5 +#sensor=6 type=point led=6 +#sensor=7 type=point led=7 +# + +################################################################################ +# Generic Auxiliary Logger. This is a server that will listen for requests to +# produce additional log files and the name of the connection it should make the +# log files for. It can only have one set of such logs open (can be more than +# one log but all for the same connection). There are two arguments: +# char name_of_this_device[] +# char name_of_connection_to_log + +#vrpn_Auxiliary_Logger_Server_Generic Logger0 localhost + +################################################################################ +# Imager Stream Buffer. This is a server that will listen for requests to +# produce additional log files and the name of the connection it should make the +# log files for. It can only have one set of such logs open (can be more than +# one log but all for the same connection). The "local" log files are with +# respect to the machine where this server is running, and the "remote" ones +# are with respect to the vrpn_Imager_Server it has connected to (which may +# be on yet a third machine compared to the client machine). +# There are two arguments: +# char name_of_this_device[] +# char name_of_imager_server_to_log + +#vrpn_Imager_Stream_Buffer ImageStream0 TestImage@localhost + +################################################################################ +# controllers from Futaba. There is one device we have +# drivers for. The only argument is the name of the device to open. +# +# For Interlink Elite: +# Analog channel assignments: +# 0=rudder (left joy X) +# 1=throttle (left joy Y) +# 2=aileron (right joy X) +# 3=elevator (right joy Y) +# 4=Ch6 Flaps Gain +# Button number assignments: +# 0=Ch5 fwd +# 1=Ch7 fwd +# 2=reset +# 3=Ch8 down +# 4=Ch8 up +# 5= +# 6=menu/select +# 7=cancel +# Next eight are for the trim buttons +# 8=aileron right +# 9=aileron left +# 10=elevator up +# 11=elevator down +# 12=rudder right +# 13=rudder left +# 14=throttle up +# 15=throttle down +# Next two are options button +# 16=up +# 17=down +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Futaba_InterLink_Elite futaba0 + +################################################################################ +# controllers from Griffin Technology. There is one device we have +# drivers for. The only argument is the name of the device to open. +# +# For PowerMate: +# Analog channel assignments: +# none +# Button number assignments: +# 0=only button +# Dial assignments: +# 0=only dial +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Griffin_PowerMate griffin0 + +################################################################################ +# controllers from Retrolink. There is one device we have +# drivers for. The only argument is the name of the device to open. +# +# For GameCube: +# Analog channel assignments: +# 0=Left joystick X axis; -1 = left, 1 = right +# 1=Left joystick Y axis; -1 = up, 1 = down +# 2=Right joystick X axis; -1 = left, 1 = right +# 3=Right joystick Y axis; -1 = up, 1 = down +# 4=Left rocker switch angle in degrees (-1 if nothing is pressed) +# Button number assignments: +# 0=Y +# 1=X +# 2=A +# 3=B +# 4=left trigger +# 5=right trigger +# 6=Z +# 7=Start/pause +# Buttons 8-11 are duplicate mappings for the rocker-switch; both +# these and the analog angle in degrees will change as they are pressed +# 8 = up +# 9 = right +# 10 = down +# 11 = left +# +# For Genesis: +# Analog channel assignments: +# 0=Rocker switch angle in degrees (-1 if nothing is pressed) +# Button number assignments: +# 0=A +# 1=B +# 2=C +# 3=X +# 4=Y +# 5=Z +# 6=Mode +# 7=Start +# Buttons 8-11 are duplicate mappings for the rocker-switch; both +# these and the analog angle in degrees will change as they are pressed +# 8 = up +# 9 = right +# 10 = down +# 11 = left +# +# There is one argument: +# char name_of_this_device[] + +# vrpn_Retrolink_GameCube retrolink0 +# vrpn_Retrolink_Genesis retrolink0 + +################################################################################ +# Controllers from Contour Design. There are two devices we have +# drivers for. The only argument is the name of the device to open. +# +# Dial: Moves in 0.1-revolution steps. +# +# Analogs: +# analog[0] is the shuttle, which goes from -1 to 1 +# analog[1] integrates the dial, with 1 meaning a full revolution +# +# Buttons on the ShuttlePROv2: +# Top row, left to right: buttons 0-3 +# Second row: Buttons 4-8 +# Four grey buttons below, left to right (two rows): 9-10, 11-12 +# Black buttons, left to right: 13-14 +# +# For ShuttleXpress and ShuttlePROv2: +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Contour_ShuttleXpress contour0 +#vrpn_Contour_ShuttlePROv2 contour0 + +################################################################################ +# controllers from Microsoft. The devices we have drivers for are listed below. +# The only argument is the name of the device to open. +# +# These show up as JoyLin devices under Linux and cannot be opened raw when +# that interface is running. +# +# These do not provide any raw inputs when run on a Mac with OS 11.6.5. +# +# For SideWinder Precision 2 joystick +# Analog channel assignments: +# 0=joystick X +# 1=joystick Y +# 2=Z rotate +# 3=slider +# 4=Point of View Hat heading (-1=nothing, 0=North, 45=Northeast, etc.) +# Button number assignments +# 0=1 +# 1=2 +# 2=3 +# 3=4 +# 4=5 +# 5=6 +# 6=7 +# 7=8 +# Next four are point of view hat buttons +# 8=Up +# 9=Right +# 10=Down +# 11=Left +# +# For SideWinder joystick +# Analog channel assignments: +# 0=joystick X +# 1=joystick Y +# 2=slider +# Button number assignments +# 0=1 +# 1=2 +# 2=3 +# 3=4 +# 4=5 +# 5=6 +# 6=7 +# 7=8 +# +# For Xbox Controller S: +# Requires USB cable and special driver. +# Analog channel assignments: +# 0=left joystick X +# 1=left joystick Y +# 2=right joystick X +# 3=right joystick Y +# 4=Point of View Hat heading (-1=nothing, 0=North, 45=Northeast, etc.) +# Button number assignments +# 0=A +# 1=B +# 2=X +# 3=Y +# 4=Black +# 5=White +# 6=Start +# 7=Back +# 8=left joystick +# 9=right joytick +# 10=left trigger +# 11=right trigger +# Next four are point of view hat buttons +# 12=Up +# 13=Right +# 14=Down +# 15=Left +# +# For Xbox 360 Controller: +# Analog channel assignments: +# 0=left joystick X +# 1=left joystick Y +# 2=right joystick X +# 3=right joystick Y +# 4=triggers (left goes positive, right goes negative) +# 5=Point of View Hat heading (-1=nothing, 0=North, 45=Northeast, etc.) +# Button number assignments +# 0=A +# 1=B +# 2=X +# 3=Y +# 4=left bump +# 5=right bump +# 6=Back +# 7=Start +# 8=left joystick +# 9=right joytick +# Next four are point of view hat buttons +# 10=Up +# 11=Right +# 12=Down +# 13=Left +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Microsoft_SideWinder_Precision_2 microsoft0 +#vrpn_Microsoft_SideWinder microsoft0 +#vrpn_Microsoft_Controller_Raw_Xbox_S microsoft0 +#vrpn_Microsoft_Controller_Raw_Xbox_360 microsoft0 +#vrpn_Microsoft_Controller_Raw_Xbox_360_Wireless microsoft0 +#vrpn_Afterglow_Ax1_For_Xbox_360 microsoft0 + +################################################################################ +# X-Keys devices from P.I. Engineering. There are several devices we have +# drivers for. The only argument is the name of the device to open. The Pro +# and Joystick models have not been tested. The XK3 is a 3-button foot pedal. +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Xkeys_Desktop xkeys0 +#vrpn_Xkeys_Pro xkeys0 +#vrpn_Xkeys_Joystick xkeys0 +#vrpn_Xkeys_Joystick12 xkeys0 +#vrpn_Xkeys_Jog_And_Shuttle xkeys0 +#vrpn_Xkeys_Jog_And_Shuttle12 xkeys0 +#vrpn_Xkeys_Jog_And_Shuttle68 xkeys0 +#vrpn_Xkeys_XK3 xkeys0 + +################################################################################ +# controllers from Logitech other than 3Dconnexion which is listed separately. +# The devices we have drivers for are listed below. +# The only argument is the name of the device to open. +# +# For Extreme 3D Pro joystick +# Analog channel assignments: +# 0=joystick X +# 1=joystick Y +# 2=Z rotate +# 3=slider +# 4=Point of View Hat heading (-1=nothing, 0=North, 45=Northeast, etc.) +# Button number assignments +# 0=1 +# 1=2 +# 2=3 +# 3=4 +# 4=5 +# 5=6 +# 6=7 +# 7=8 +# 8=9 +# 9=10 +# 10=11 +# 11=12 +# Next four are point of view hat buttons +# 12=Up +# 13=Right +# 14=Down +# 15=Left +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Logitech_Extreme_3D_Pro logitech0 + +################################################################################ +# controllers from Saitek. +# The devices we have drivers for are listed below. +# The only argument is the name of the device to open. +# +# For ST290 Pro joystick +# Analog channel assignments: +# 0=joystick X +# 1=joystick Y +# 2=Z rotate +# 3=slider +# 4=Point of View Hat heading (-1=nothing, 0=North, 45=Northeast, etc.) +# Button number assignments +# 0=1 +# 1=2 +# 2=3 +# 3=4 +# 4=5 +# 5=6 +# 6=7 +# Next four are point of view hat buttons +# 7=Up +# 8=Right +# 9=Down +# 10=Left +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Saitek_ST290_Pro saitek0 + +################################################################################ +# controllers from CH products. +# The devices we have drivers for are listed below. +# The only argument is the name of the device to open. +# +# For Fighterstick USB joystick +# Analog channel assignments: +# 0=joystick X +# 1=joystick Y +# 2=throttle wheel +# 3=Point of View Hat heading (buttons 4-7: -1=nothing, 0=North, 45=Northeast, etc.) +# 4=Hat heading (buttons 8-11: -1=nothing, 0=North, 90=East, etc.) +# 5=Hat heading (buttons 12-15: -1=nothing, 0=North, 90=East, etc.) +# 6=Mode (buttons 2, 16-18): 0=unknown, 1=red, 2=yellow, 3=green) +# 7=Hat heading (buttons 20-23: -1=nothing, 0=North, 90=East, etc.) +# +# Button number assignments +# 0=trigger +# 1=top red button +# 2=red button using index finger (see 16, 17, & 18) +# 3=pinky red button +# Next four are on 8-way POV hat: upper right on top +# 4=up +# 5=right +# 6=down +# 7=left +# Next four are on 4-way hat #2: lower right on top +# 8=up +# 9=right +# 10=down +# 11=left +# Next four are on 4-way hat #1: left on top +# 12=up +# 13=right +# 14=down +# 15=left +# Next three are modes triggered by button 2. +# Mode LEDs show the color listed below when pressed, but releasing with advance the color to the next in the series. +# These "buttons" are all released when unknown. Once the mode is known, one button will always be considered pressed. +# 16=green +# 17=red +# 18=yellow +# 19= +# Next four are on 4-way hat #3: thumb +# 20=Up +# 21=Right +# 22=Down +# 23=Left +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_CHProducts_Fighterstick_USB chproducts0 + +################################################################################ +# Space Navigator, Space Traveler, and Space Mouse devices from 3DConnexion. +# 3Dconnexion is actually made by Logitech. +# Not to be confused with the Magellan Space Mouse, for which there is +# a Magellan driver. +# The only argument is the name of the device to open. +# +# There is one argument: +# char name_of_this_device[] +# +# For the SpaceMouse Pro: +# Analog channel assignments: +# 0=x +# 1=y +# 2=z +# 3=pitch +# 4=roll +# 5=yaw +# Button number assignments: +# (the ones similar to have a graphic on the button and are referred to the text enclosed text in the help) +# 0=Menu +# 1=Fit +# 2= +# 4= +# 5= +# 8= +# 12=1 +# 13=2 +# 14=3 +# 15=4 +# 22=Esc +# 23=Alt +# 24=Shift +# 25=Ctrl +# 26= +# +# On Linux, make sure the HID and evdev drivers are running so that these +# devices will be recognized: +# Start a separate Root shell: +# cd .../vrpn/server_src/pc_linux +# lsmod +# modprobe evdev +# modprobe hid +# lsmod +# (check that evdev and hid are running) +# On RedHat Linux, you need the have libusb1-devel installed and configure +# the system for VRPN_USE_LOCAL_HIDAPI to get these to work. + +#vrpn_3DConnexion_Navigator device0 +#vrpn_3DConnexion_Navigator_for_Notebooks device0 +#vrpn_3DConnexion_Traveler device0 +#vrpn_3DConnexion_SpaceMouse device0 +#vrpn_3DConnexion_SpaceMousePro device0 +#vrpn_3DConnexion_SpaceMouseCompact device0 +#vrpn_3DConnexion_SpaceMouseWireless device0 +#vrpn_3DConnexion_SpaceMouseProWireless device0 +#vrpn_3DConnexion_SpaceExplorer device0 +#vrpn_3DConnexion_SpaceBall5000 device0 +#vrpn_3DConnexion_SpacePilot spacepilot +#vrpn_3DConnexion_SpacePilotPro spacepilotpro + +################################################################################ +# Open the mouse as an analog and button devices. There is an implementation +# under Windows and another under Linux (using GPM). There are two analog +# channels, reporting in the range [0..1] as the mouse moves across the screen. +# There are 3 button channels: left, middle, right. +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Mouse Mouse0 + +################################################################################ +# Open the keyboard as a button device. There is an implementation +# under Windows. There are 256 buttons, and they are triggered according +# to the scan code that they represent. +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Keyboard Keyboard0 + +################################################################################ +# WARNING : LINUX ONLY ! +# Open the /dev/input devices and treat them as mouse events +# There is as many as available channel (kernel 2.6.38 : 10 channels) +# +# There is three argument: +# char name_of_this_device[] +# char "name of the hardware device" +# char type of the device (must be one of "keyboard", "absolute" and "relative" +# int in case of keyboard : the total number of keys ; in case of absolute mouse : size of the window (ie. to normalize the result) +# The "name of the hardware device" is the Name entry of the device +# from /proc/bus/input/devices +# Due to hardware access through /dev/input/*, there is no notion of window. +# Thus, you must specify the window size. If '-1' is provided, then, this device +# only provide relative displacement of the channel +# +# Keyboard are standard keyboard (ie : the one on which you type elements +# Absolute are pointing devices such as touchpad : the position of the pointer is absolute regarding the size of the touch pad +# Relative are pointing devices such as mouse : the position of the pointer is a relative displacement regarding previous position +# +# BEWARE that you must have read access to the wanted device + +#vrpn_DevInput Input0 "AT Translated keyboard" keyboard 255 +#vrpn_DevInput Input0 "USB Optical Mouse" relative -1 + +################################################################################ +# MotionNode inertial tracking system. +# +# There are four arguments: +# char name_of_this_device[] +# int num_sensors +# char address +# int port + +#vrpn_Tracker_MotionNode Tracker0 1 127.0.0.1 32079 + +################################################################################ +# GPS device. +# This driver reads a GPS connected to the serial port at a given baud rate, and looks for +# the NMEA message providing long/lat/alt, which get copied into x/y/z +# respectively (of the position). Should do a lot more (e.g., get velocity, +# bearing, perhaps convert to UTM). But, for now, this is all it does. + +# Open a GPS on MACOSX at 4800 baud + +#vrpn_Tracker_GPS Tracker0 /dev/tty.KeySerial1 4800 +#vrpn_Tracker_GPS Tracker0 /dev/tty.HOLUXGPSlim236-SPPslave-1 4800 + +#on windows +#vrpn_Tracker_GPS Tracker0 COM1 4800 + +################################################################################ +# Nintendo Wii Remote Controller +# char name_of_this_device[] +# int userIndex (1 for "Player 1", 2 for "Player 2", etc.) +# int useMotionSensing +# int useIR +# int reorderButtons (set to make button ids somewhat more sensible) +# char bluetooth_address[] (optional, only supported on Linux - upper case, +# include colons) + +#vrpn_WiiMote WiiMote0 1 0 0 1 + +################################################################################ +# Two-LED head tracking using Wii Remote Controller +# char name_of_this_device[] +# char name_of_vrpn_WiiMote_device[] +# float min_update_rate (default=60) +# float led_distance (default=0.205) +# +# Note: The WiiMote device must have useMotionSensing = 1 and useIR = 1 + +#vrpn_WiiMote WiiMote0 1 1 1 1 +#vrpn_Tracker_WiimoteHead Tracker0 WiiMote0@localhost + +################################################################################ +# Novint Falcon attached to USB. +# Arguments: +# char name_of_this_device[] +# int device index (starts at 0) +# char name_of_grip (optional, default and only one supported now = "4-button") +# char kinematic_model (optional, default and only one supported now ="stamper") +# float damping_factor (optional, range 1.0-1000.0, default=10.0) +#vrpn_Tracker_NovintFalcon Tracker0 0 4-button stamper 10.0 + +################################################################################ +# Hillcrest Labs Freespace device +# char name_of_this_device[] +# int Index (0 for device 1, 1 for device 2, ...) +# int Send body frames (0 = no, 1 = yes) +# int Send user frames (0 = no, 1 = yes) + +#vrpn_Freespace FreeSpace0 0 1 1 + +################################################################################ +# Dream Cheeky devices, of which only the USB Roll-Up Drum Kit is implemented. +# +# There is one argument: +# char name_of_this_device[] + +#vrpn_Dream_Cheeky_USB_roll_up_drums drums0 + +################################################################################ +# (OBSOLETE) Trivisio Colibri device. This is an inertial tracker that gives +# orientation information, no position (the tracker reports (0, 0, 0) for position). +# +# Arguments: +# char name_of_this_device[] +# int number_of_sensors (Number of connected devices to connect to) +# int Hz (Update rate) +# int bufLen (From the reference manual: +# An short buffer (0) ensures minimal delay until the sensor +# measurement is available at the risk of lost measurements. +# A long buffer guarantees that no data is dropped, at +# the same time if data is not read fast enough there is a +# potential risk of a bufLen frequency before the measurement +# becomes available.) + +#vrpn_Tracker_TrivisioColibri Colibri 1 60 0 + +################################################################################ +# Trivisio ColibriAPI support. This is an inertial tracker that gives orientation +# information, no position (the tracker reports (0, 0, 0) for position). +# If wireless Colibri do not answer, dongle scans for them automatically (20 seconds). +# Wireless Colibri must be in scanning mode (button pushed for 2 seconds, +# LED flashing fast). +# +# Arguments: +# char name_of_this_device[] +# char conf_file_name[] : xml-file with sensor network configuration. +# Use Colibri GUI to create the file. Settings must be set +# and saved in sensors' non-volatile memory using Colibri GUI. +# * - to use all connected devices. Default settings will be +# applied to sensors. +# int Hz : Update rate. +# int report_a_w : 0 = orientation only, +# 1 = orientation + angular velocity + acceleration. + +#vrpn_Tracker_Colibri Colibri * 100 0 + +################################################################################ +# LUDL USBMAC6000 device. This is a vrpn_Analog and a vrpn_Analog_Output device +# that lets you both move the stage by command and get a response when it has +# finished moving. +# +# Arguments: +# char name_of_this_device[] +# int Perform recentering on device (0 = no, 1 = yes) + +#vrpn_LUDL_USBMAC6000 Analog0 1 + +################################################################################ +# GameTrak tracker +# Reports 2 sensors with positions only +# This device uses another joystick device that needs to be configured (PC +# version of GameTrak shows up as a joystick device with 6 axes and a button) +# If the name of the joystick device starts with '*', it will take another +# one on this server, otherwise it will attempt a remote connection +# char name_of_this_device[] +# char name of the joystick device[] +#vrpn_Joylin RawGametrak /dev/input/js1 +#vrpn_Tracker_GameTrak GameTrak0 *RawGametrak + + +################################################################################ +# PNI SpacePoint Fusion 3DOF rotation tracker +# Reports 1 sensor as quaternion. +# The device index can be specified in order to open multiple identical devices, +# if not specified, 0 is assumed. +# char name_of_this_device[] +# [int device index] + +#vrpn_Tracker_SpacePoint SpacePoint0 0 + +################################################################################ +# 5DT DataGlove "Ultra" USB/USB Wireless support (based on HID) +# +# Reports 5 or 14 sensors' raw values as analogs 0-4 or 0-13, in range 0.0 - 1.0 +# Note that your code will probably need to perform some scaling/calibration: +# see vrpn_Analog_5dtUSB.h for more info +# +# Four device types as shown in examples below: the server will connect to the +# first device available of that type. +# +# For serial (non-"Ultra") gloves, see vrpn_5dt and vrpn_5DT16 +# +# Arguments: +# char name_of_this_device[] + +#vrpn_Analog_5dtUSB_Glove5Right Glove5Right +#vrpn_Analog_5dtUSB_Glove5Left Glove5Left +#vrpn_Analog_5dtUSB_Glove14Right Glove14Right +#vrpn_Analog_5dtUSB_Glove14Left Glove14Left + +################################################################################ +# JsonNet devices +# +# Any device that send updates formatted as JSON messages over UDP, including +# Vrpn Widgets for Android +# +# Messages are: +# for a tracker: +# { +# 'type': 1, +# 'id': sensor number, +# 'quat': quaternion, +# 'pos': position +# } +# +# for a button: +# { +# 'type': 2, +# 'button': button number, +# 'state': the boolean state +# } +# +# for an analog: +# { +# 'type': 3, +# 'num': channel number, +# 'data': the analog value +# } +# for a text message: +# { +# 'type': 4, +# 'data': the text value +# } +# +# Arguments: +# char name_of_this_device[] +# int udp_port (Device send JSON messages to this port) + +#vrpn_Tracker_JsonNet Jsonnet 7777 + +################################################################################ +# One-Euro Filter Tracker. This is a tracker that is intended to be used on top of +# another tracker to provide filtered output for it. This was originally designed +# for the Razer Hydra, but can be used along with any tracker. +# +# Arguments: +# char name_of_this_device[] +# char name_of_tracker_to_filter[] (start with * for local) +# int number_of_sensors_to_filter +# float vecMinCutoff +# float vecBeta +# float vecDerivativeCutoff +# float quatMinCutoff +# float quatBeta +# float quatDerivativeCutoff + +#vrpn_Tracker_FilterOneEuro Filter0 *Tracker0 2 1.15 1.0 1.2 1.5 5.0 1.2 + +################################################################################ +# Razer Hydra (Sixense TrueMotion) tracker (HID-based driver) +# +# The left wand (the one with LB and LT on its "end" buttons - look from above) +# is sensor 0, and the right wand (with RB and RT on it) is sensor 1. +# The "front" of the base is the side opposite the cables: there's a small +# logo on it. You can have the base in any orientation you want, but the info +# that follows assumes you have the base sitting on a desk, with the front toward you. +# If you have the base in a different coordinate frame in the world, please make +# the appropriate mental transformations yourself. :) +# +# When starting the VRPN server, make sure that the left wand is somewhere to +# the left of the base, and the right wand somewhere right of the base - +# they do not need to be placed on the base or any more complicated homing/calibration +# procedure. This is for the hemisphere tracking: it needs to have an "initial state" +# that is roughly known, so it uses the sign of the X coordinate position. +# +# The base coordinate system is right-handed with the axes: +# X - out the right of the base +# Y - out the front of the base +# Z - down +# +# The wands are also right-handed, with the tracked point somewhere near +# the cable entry to the controller . When held with the joystick vertical, +# the axes are: +# X - to the right +# Y - out the front of the controller (trigger buttons) +# Z - Up, along the joystick +# +# Buttons are as follows, with the right controller's button channels starting +# at 8 instead of 0: +# 0 - "middle" button below joystick +# 1-4 - numbered buttons +# 5 - "bumper" button (above trigger) +# 6 - joystick button (if you push straight down on the joystick) +# There is no button 7 on any controller; the offset of 8 per controller +# was done to make similar buttons differ by a power of 2. +# +# Analog channels are as follows, with the right controller starting at 3 +# instead of 0: +# 0 - joystick left/right: centered at 0, right is positive, in [-1, 1] +# 1 - joystick up/down: centered at 0, up is positive, in [-1, 1] +# 2 - analog trigger, in range 0 (not pressed) to 1 (fully pressed). +# +# Arguments: +# char name_of_this_device[] +# +# NOTE: If using the Hydra on Windows, the server will work with or without the official +# Razer Hydra drivers installed. If you are only using the device with VRPN, don't +# install the official drivers. However, if you do have them installed, make sure that +# the "Hydra Configurator" and the Hydra system tray icon are closed to avoid unexpected +# failure (their software can switch the device out of the mode that VRPN uses). You +# probably want to make sure that the tray icon doesn't auto-run on startup, since it +# can get even messier with Windows 7's "switch users" if you let it auto-run for each +# user. +# +# Works great on Linux (regardless of endianness) - no drivers needed, thanks to USB HID. +# +# NOTE: Because of the jitter in the tracker, you may want to add a +# filter to it and then read the filtered location values; you still read +# the buttons and analogs from the original device. +# + +#vrpn_Tracker_RazerHydra Tracker0 +#vrpn_Tracker_FilterOneEuro Filter0 *Tracker0 2 1.15 1.0 1.2 1.5 5.0 1.2 + +################################################################################ +# Sensics zSight HMD with built-in tracker. This is an inertial tracker that +# gives orientation information, but no position (the tracker reports +# (0, 0, 0) for position). +# +# Arguments: +# char name_of_this_device[] + +#vrpn_Tracker_zSight zSight + +################################################################################ +# Arrington Research ViewPoint EyeTracker. +# +# The VRPN server connects to the eye tracker using the VPX_InterApp DLL. +# Whatever other control software is being used to connect to the eye tracker +# (e.g. the ViewPoint software that comes with the tracker) to perform +# calibration, etc. should link to the same copy of the DLL, so they can share +# information. +# +#------------------------------------------------------------------------------- +# +# Tracker: +# +# The tracker has two sensors, as the ViewPoint can optionally have binocular +# tracking. In the case of monocular tracking, only sensor 0 (EYE_A) will have +# valid information. Retrieving smoothed or raw tracking data is controlled by +# the smoothedData parameter. +# +# Position: The (x,y) gaze point in gaze space (smoothed or raw). +# +# Rotation: The (x,y) gaze angle as a quaternion (smoothed or raw). +# +# Velocity: The x- and y- components of the eye movement velocity in gaze space +# (always smoothed). +# +#------------------------------------------------------------------------------- +# +# Analog: +# +# There are a lot of additional data that can be retrieved from the tracker. +# These values are always calculated from the smoothed gaze point. Currently, +# the following are sent as analog values, but more can be added as needed. +# Please see the ViewPoint documentation regarding what other data are available. +# +# Because each channel needs to be duplicated in the case of a binocular tracker, +# the first n/2 values are for EYE_A, and the second n/2 values are for EYE_B. +# +# EYE_A: +# +# Channel 0: The pupil aspect ratio, from 0.0 to 1.0. Can be used to detect +# blinks when it falls below a given threshold. +# +# Channel 1: The total velocity (magnitude of eye movement velocity). Can be +# used to detect saccades. +# +# Channel 2: The fixation seconds (length of time below the velocity criterion +# used to detect saccades). 0 if saccade is occurring. +# +# EYE_B: +# +# Channels 3-5: See EYE_A. +# +#------------------------------------------------------------------------------- +# +# Arguments: +# char name_of_this_device[] +# int smoothedData + +# vrpn_Tracker_ViewPoint ViewPoint 1 + +################################################################################ +# vrpn_inertiamouse +# (Need a description of how to run this and an example commented-out line.) + +############################################################################### +# To access Polhemus G4 on Windows using the Polhemus PDI library, +# use vrpn_Tracker_G4. +# +# The vrpn_Tracker_G4 tracker definition requires the tracker name and +# the vrpn server name for the tracker, followed by an optional Server Poll rate, +# and on the next line, the file path to the .g4c configuration file: +# +# vrpn_Tracker_G4 G4 \ +# C:\filepath\source_config_file.g4c +# +# The Server Poll Rate is optional. +# If it is not specified, the VRPN server will poll for new data at a rate of 120 frames per second. +# (120 frames per second is the default output rate of G4 hardware.) +# +# If you wish to poll at a slower rate than the tracker, you may specify any number. For example, if +# you wish to poll 20 times per second, then specify a poll rate of 20. +# +# The '\' at the end of the first line, after the server name, is optional and +# will be disregarded. A '\' on a subsequent line means that further commands +# are to be input. The format is to have one command per line after the file +# path. Each line that isn't the final line must end in a '\'. +# The final line should not have a '\' on the end. +# +# Supported G4 Configuration Commands: +# 'B' Set/Reset Boresight +# 'X' Set/Reset Position Filter +# 'Y' Set/Reset Attitude Filter +# 'T' Set/Reset G4 Translation Frame of Reference +# 'R' Set/Reset G4 Rotation Frame of Reference +# 'I' Set/Reset Sensor Increment/Auto-Increment +# 'N' Set/Reset Sensor Tip Offset +# +# The following commands are not G4 configuration commands but are used to +# create VRPN button server objects for G4 button devices: +# +# 'G4PowerTrak' Creates VRPN button server object with 4 buttons +# 'G4DigIO' Creates VRPN button server object with a configurable button count +# +# Command Syntax: +#------------------------------------------------------------------------------ +# 'B' Boresight Command 'B': +# +# Syntax: Baction,hub,sensor,[x,y,z,w] +# +# Arguments: +# action: +# 1 = Boresight +# 2 = Unboresight +# +# hub: HubID. (0-based.) To apply Boresight/Unboresight to all hubs & sensors, set to * or -1. +# sensor: Sensor Num. (0-based.) To apply Boresight/Unboresight to all sensors on a hub, set to * +# Note: If hub is *, set sensor to * also. +# [x,y,z,w]: Optional Quaternion XYZW Boresight Reference Orientation. +# All 4 values must be set. +# N/A for action=2 +# +# Examples: +# B2,-1,-1 Un-Boresights all sensors on all hubs +# B1,-1,-1 Boresights all sensors on all hubs +# B1,1,-1, +#------------------------------------------------------------------------------ +# 'X' Position Filter Command 'X': +# 'Y' Attitude Filter Command 'Y': +# +# Syntax: Xaction,hub,flevel,[F,FLow,FHigh,Factor] +# Yaction,hub,flevel,[F,FLow,FHigh,Factor] +# +# Arguments: +# action: +# 1 = Set +# 2 = Reset +# +# hub: HubID. (0-based.) To apply filter to all hubs, set to * +# flevel: Filter Level +# 0=None +# 1=Light +# 2=Medium +# 3=Heavy +# 4=Custom +# [F,FLow,FHigh,Factor]: Optional Floating-point Parameters used only if flevel=Custom. +# If custom parameters are used, it is assumed that all four custom parameters are present. +# See Tracker User manual for meaning of Custom Filter Values. +# Examples: +# X*,1 Sets Position Filtering to LIGHT on all hubs +# Y2,0 Sets Attitude Filtering to NONE on hub 2 +# X1,4,0.2,0.2,0.8,0.95 Sets Custom Filter on hub 1 +#------------------------------------------------------------------------------ +# 'T' Translation Frame of Reference Command 'T': +# +# Syntax: Taction,x,y,z +# +# Arguments: +# action: +# 1 = Set +# 2 = Reset +# +# x,y,z: Position Offset, measured in Meters +# All arguments must be present +# +# Examples: +# T1,1.0,1.5,1.0 Sets Translation Frame of Reference to (1.0, 1.5, 1.0) meters +# Y2 Resets Translation Frame of Reference +# +# Note: Frame of Reference commands apply to all G4 output. +#------------------------------------------------------------------------------ +# 'R' Rotation Frame of Reference Command 'R': +# +# Syntax: Raction,hub,x,y,z,w +# +# Arguments: +# action: +# 1 = Set +# 2 = Reset +# +# x,y,z,w: Rotation Quaternion XYZW +# All arguments must be present +# +# Examples: +# R1,0,0,0.707107,0.707107 Sets Rotation Frame of Reference +# R2 Resets Rotation Frame of Reference +# +# Note: Frame of Reference commands apply to all G4 output. +#------------------------------------------------------------------------------ +# 'I' Increment/AutoIncrement Command 'I': +# +# Syntax: Iaction,hub,sensor,fPosIncr,fOriIncr +# +# Arguments: +# action: +# 1 = Set +# 2 = Reset +# +# hub: HubID. (0-based.) To apply command to all hubs & sensors, set to * or -1 +# sensor: Sensor Num. (0-based.) To apply command to all sensors on a hub, set to * or -1 +# Note: If hub is *, set sensor to * also. +# +# posIncr: Position Threshold, Meters +# 0 Disables +# -1 Enables Auto-Increment +# +# oriIncr: Orientation Threshold, DEGREES +# 0 Disables +# -1 Enables Auto-Increment +# +# Examples: +# I1,*,*,0.01,5.0 For all hubs/sensors, sets position increment to 10 cm, +# rotation increment to 5 degrees +# I1,*,*,-1,-1 For all hubs/sensors, enables position and rotation auto-increment +# I2,0,2 For hub0, sensor2, resets/disables increment +# +#------------------------------------------------------------------------------ +# 'N' Tip Offset Command 'N': +# +# Syntax: Iaction,hub,sensor,x,y,z +# +# Arguments: +# action: +# 1 = Set +# 2 = Reset +# +# hub: HubID. (0-based.) To apply command to all hubs & sensors, set to * or -1 +# sensor: Sensor Num. (0-based.) To apply command to all sensors on a hub, set to * or -1 +# Note: If hub is *, set sensor to * also. +# +# x,y,z: Position Offset, measured in Meters +# All arguments must be present +# +# Examples: +# N1,0,0,0.005,0.001,0.001 For hub0,sensor0, sets tip offset to (5,1,1)cm +# N2,*,* For all hubs/sensors, resets tip offset +# +# +#------------------------------------------------------------------------------ +# 'G4PowerTrak' Command : +# If one or more hubs in the polhemus g4 system supports a Polhemus PowerTrak360, use this +# command to create a vrpn button object with 4 buttons. +# +# Syntax: G4PowerTrak name hub +# +# Arguments: +# name: Button Server Name +# hub: HubID. (0-based) Identifier of the hub to which the PowerTrak360 is connected. +# +# Examples: +# G4PowerTrak ptrak0 0 For 4-button server named ptrak0 plugged into Hub 0. +# +# Remember that the "remote" button object is not the same as the the tracking device, so be sure +# to use a remote button object that connects to the button rather than the tracker. +# In this example configuration, if the name of the machine running the server is "mytrackerserver" +# you would connect to the tracker as "myg4@mytrackerserver" and to the powertrak configured +# here as "ptrak0@mytrackerserver" +# +# Note: It is possible to have >1 G4PowerTrak configured on a vrpn_Tracker_G4, but they must be +# on different hubs. +# It is also possible to have a combination of G4PowerTrak and G4DigIO commands, but they +# must be on different hubs. +# +#------------------------------------------------------------------------------ +# 'G4DigIO' Command: +# If one or more hubs in the polhemus g4 system supports a custom digital IO accessory, use this +# command to create a vrpn button object with a configurable number of buttons +# +# Syntax: G4DigIO name hub inputs +# +# Arguments: +# name: Button Server Name +# hub: HubID. (0-based) Identifier of the hub to which the digital IO device is connected. +# inputs: Number of digital inputs (buttons) to capture. +# The G4 Digital I/O interface supports up to 8 digital inputs. The 'inputs' +# argument must be between 1 and 8, inclusive. +# +# Examples: +# G4DigIO 2btn0 0 For 2-button server named 2btnio0 plugged into Hub 0. +# G4DigIO 8sig4 8 For an 8-button server named 8sig4 plugged into Hub 4. +# +# Remember that the "remote" button object is not the same as the the tracking device, so be sure +# to use a remote button object that connects to the button rather than the tracker. +# In this example configuration, if the name of the machine running the server is "mytrackerserver" +# you would connect to the tracker as "myg4@mytrackerserver" and to the G4DigIO configured +# here as "2btn0@mytrackerserver" or "8btn4@mytrackerserver". +# +# Note: It is possible to have >1 G4DigIO configured on a vrpn_Tracker_G4, but they must be +# on different hubs. +# It is also possible to have a combination of G4PowerTrak and G4DigIO commands, but they +# must be on different hubs. +# +#------------------------------------------------------------------------------ +# Example command for setup of a G4 +# +# vrpn_Tracker_G4 G4\ +# C:\Program Files (x86)\Polhemus\G4\G4 Files\mysourceconfig.g4c \ +# G4PowerTrak myptraka 1 +# G4PowerTrak myptrakb 2 +# B1,-1,-1\ +# X1,*,1\ +# Y1,*,4,0.2,0.2,0.8,0.95\ +# T1, 10.0, 10.0, 10.0, 10.0\ +# R1,0,0,0,1\ +# I1,*,*,0.01,5.0\ +# N1,0,*,0.005,0.002,0.001\ +# N2,*,* + +############################################################################### +# To access Polhemus FasTrak on Windows using the Polhemus PDI library, +# use vrpn_Tracker_FastrakPDI. +# +# The vrpn_Tracker_FastrakPDI tracker definition requires the tracker name and +# the vrpn server name for the tracker, followed by an optional Server Poll rate: +# +# vrpn_Tracker_FastrakPDI myFastrak4 30\ <-valid +# vrpn_Tracker_FastrakPDI myFastrak2 60\ <-valid +# vrpn_Tracker_FastrakPDI myFastrak1 \ <-valid +# +# The Server Poll Rate is optional. +# If it is not specified, the VRPN server will poll for new data at a rate of 120 frames per second. +# (120 frames per second is the default output rate of FasTrak hardware with ONE sensor connected.) +# +# For FasTrak trackers the update rate depends on the number of sensors connected to the device: +# Number of Sensors Update Rate +# ----------------- ----------- +# 1 120 frames/sec +# 2 60 frames/sec +# 3 40 frames/sec +# 4 30 frames/sec +# +# If you wish to poll at the same rate as the tracker output, then you must specify the poll rate +# to match the update rate in the table above. +# +# If you wish to poll at a slower rate than the tracker, you may specify any number. For example, if +# you wish to poll 20 times per second, then specify and update rate of 20. +# +# The '\' at the end of the first line, after the server name, is optional and will be disregarded. +# a '\' on a subsequent line means that further commands are to be input. The format is to have +# one command per line. Each line that isn't the final line must end in a '\'. The final line should not +# have a '\' on the end. +# +# Supported Fastrak Configuration Commands: +# All commands are exposed, except C and c for continuous pno which would conflict with VRPN directly. +# Take note that O<> should be avoided, though it will be sent to the tracker. VRPN clients expect position +# x,y,z and quaternion q,r,s,t by default, so changing the frame structure could result in an overflow. +# The format commands ('F' for ASCII, f for binary) are especially useful since the tracker can mark +# syntax errors in ASCII mode. The tracker must be in binary mode for VRPN to gather data, so if you issue +# an F command at some point in this file (to troubleshoot syntax errors), be sure to issue an f<> +# command later. Not all fastrak commands have a response: boresight, for example. You can confirm +# such settings by requesting a single frame in ASCII mode with the command P (note, P requires no <>). +# Read the fastrak manual for a full list of commands. +# +# Command Syntax: +# Many commands, much like P (gather single pno frame), require no carriage return on the end. Carriage +# returns are represented by '<>'. Control commands, noted as ^$ (where $ is any capitol letter) in the +# manual require a '^' followed by the capital letter for the command. Syntax is precisely as given in +# examples in the fastrak manual. Note that all commands are case sensitive. +# Examples: +# F <-Sets the response frame format to ASCII +# f <-Sets the response frame format to binary +# b*<> <-Removes the boresight setting for all sensors +# B1<> <-Sets the boresight to 0,0,0 as a default or whatever G<> was set to +# G1,0,0,0<> <-Sets the boresight reference angles of station 1 to 0,0,0 +# ^Y <-Sends a reset command to the tracker, note that VRPN defaults for pno will be loaded on +# reconnect +# +# If a sensor on the FasTrak device is a Polhemus FasTrak Stylus, use the "PDIStylus" +# command. This command takes one argument: the station number of the stylus device. Remember that +# the station number is a 1-based index of sensors/'stations' on the Polhemus equipment. +# PDIStylus command syntax: +# +# PDIStylus [station-num] +# +# Use of the PDIStylus command will +# - Cause the Stylus Button Flag to be configured into the output of all stations. +# - Cause the creation of vrpn button device. The name of this device will be a concatenation of +# the server name for the tracker + "Stylus" + the specified station number. +# E.g: +# vrpn_Tracker_FasTrakPDI myFT \ +# PDIStylus 1 +# +# Will produce a button device named "myFTStylus1" +# +# Remember that the "remote" button object is not the same as the the tracking device, so be sure +# to use a remote button object that connects to the button rather than the tracker. +# In this example configuration, if the name of the machine running the server is "mytrackerserver" +# you would connect to the tracker as "myFT@mytrackerserver" and to the button on the stylus as +# "myFTStylus1@mytrackerserver" +# +# NOTE: The FasTrak tracker will only detect stylus input if the stylus is plugged into Station 1! +# However, the stylus flag can be output onto any station on the device. Therefore, it is +# possible to specify station 2 as your PDIStylus button, and the stylus output will be collected +# from the Station 2 output. BUT the actual Stylus device must be plugged into Station 1. +# This means that only one Stylus can be plugged into a FasTrak at any time, but up to 4 vrpn +# button objects can be created/accessed from that Stylus. +# +#------------------------------------------------------------------------------ +# The following example config: +# -specifies that station 1 is a FasTrak Stylus Device +# -sets the tracker to ASCII responses (F), +# -sets the boresight reference on sensor one to 0,0,0, (G1,0,0,0<>) +# -writes this reference to the system with B1<>, +# -confirms the change by collecting a single pno with P, +# -removes the boresight setting (^b1<>), +# -collects a second single pno to confirm this removal (P) and +# -finally returns to binary mode before passing control to VRPN (F1<>). +# The trackers name is TrackerJoe. +# The server poll rate is 120 Hz. + +# vrpn_Tracker_FastrakPDI TrackerJoe 120\ +# PDIStylus 1\ +# F\ +# G1,0,0,0<>\ +# B1<>\ +# P\ +# b1<>\ +# P\ +# f + +#------------------------------------------------------------------------------ +# The default config is below. +# -Assumes that one sensor is connected to FasTrak, and polls at 120 Hz + +# vrpn_Tracker_FastrakPDI myFasTrak + +############################################################################### +# To access Polhemus Liberty or Patriot on Windows using the Polhemus PDI library, +# use vrpn_Tracker_LibertyPDI. +# +# The vrpn_Tracker_LibertyPDI tracker definition requires the tracker name and +# the vrpn server name for the tracker, followed by an optional Server Poll rate: +# +# vrpn_Tracker_LibertyPDI MyLiberty 240\ <-valid +# vrpn_Tracker_LibertyPDI MyPatriot \ <-valid +# vrpn_Tracker_LibertyPDI MyPolhemus 120\ <-valid +# +# Note that "Tracker_LibertyPDI" is used for both Polhemus Patriot and Liberty tracker hardware! +# +# The Server Poll Rate is optional. +# If it is not specified, the VRPN server will poll for new data at a rate of 60 frames per second. +# (60 frames per second is the default output rate of Patriot tracker hardware.) +# +# For Liberty trackers, the default rate is 240 frames per second. If you wish for the server to poll +# at this rate, then you must specify 240! +# +# If you wish to poll at a slower rate than the tracker, you may specify any number. For example, if +# you wish to poll 20 times per second, then specify and update rate of 20. +# +# The '\' at the end of the first line, after the server name, is optional and will be disregarded. +# a '\' on a subsequent line means that further commands are to be input. The format is to have +# one command per line. Each line that isn't the final line must end in a '\'. The final line should not +# have a '\' on the end. +# +# Supported Liberty/Patriot Configuration Commands: +# All commands are accepted, except C<> for continuous pno output which would conflict with VRPN directly. +# Take note that O<> should be avoided, though it will be sent to the tracker. VRPN clients expect position +# x,y,z and quaternion q,r,s,t by default, so changing the frame structure could result in an overflow. +# The format command (F0<> for ASCII, F1<> for binary) is especially useful since the tracker can mark +# syntax errors in ASCII mode. The tracker must be in binary mode for VRPN to gather data, so if you issue +# an F0<> command at the beginning of this file (to troubleshoot syntax errors), be sure to issue an F1<> +# command later. Not all liberty/patriot commands have a response: boresight, for example. You can confirm +# these settings by requesting a single frame in ASCII mode with the command P (note, P requires no <>). +# Read the patriot or liberty manual for a full list of commands. +# +# Note: The R command is used to set the Liberty tracker update rate. This command has no effect on Patriot. +# For Liberty, if you use the R command to change the update rate, remember to change the Server Poll Rate +# specification in the tracker definition (like "MyPolhemus" example above). + +# Command Syntax: +# Every command, except P (gather single pno frame), requires a carriage return on the end. Carriage +# returns are represented by '<>'. Control commands, noted as ^X (where X is any capitol letter) in the +# manual require a '^' followed by the capital letter for the command. Syntax is precisely as given in +# examples in the patriot/liberty manuals. +# Examples: +# ^V<> <-This command sends a 'whoami' request to the tracker. Requires ascii mode for response +# F<> <-Queries format mode of tracker (binary or ascii) +# F0<> <-Sets the response frame format to ASCII +# F1<> <-Sets the response frame format to binary +# ^B*<> <-Removes the boresight setting for all sensors +# B1<> <-Queries the boresight setting for sensor one +# B1,0,0,0,0 <-Sets the boresight to 0,0,0 without a reset for sensor one +# ^Y<> <-Sends a reset command to the tracker, note that VRPN defaults for pno will be loaded on +# reconnect +# +# If one or more sensors on the polhemus device is a Polhemus Stylus, use the "PDIStylus" +# command. This command takes one argument: the station number of the stylus device. Remember that +# the station number is a 1-based index of sensors/'stations' on the Polhemus equipment. +# PDIStylus command syntax: +# +# PDIStylus [station-num] +# +# Use of the PDIStylus command will +# - Cause the Stylus Button Flag to be configured into the output of all stations. +# - Cause the creation of vrpn button device. The name of this device will be a concatenation of +# the server name for the tracker + "Stylus" + the specified station number. +# E.g: +# vrpn_Tracker_LibertyPDI myliberty \ +# PDIStylus 2 +# +# Will produce a button device named "mylibertyStylus2" +# +# Remember that the "remote" button object is not the same as the the tracking device, so be sure +# to use a remote button object that connects to the button rather than the tracker. +# In this example configuration, if the name of the machine running the server is "mytrackerserver" +# you would connect to the tracker as "myliberty@mytrackerserver" and to the button on this stylus as +# "mylibertyStylus2@mytrackerserver" +# +# NOTE: The Liberty and Patriots tracker will detect stylus button input on any station, and there is +# no limit on the number of Stylus devices that can be connected to the tracker. Only one vrpn +# button object can be created per stylus. +# +#------------------------------------------------------------------------------ +# The following example config for a Liberty tracker: +# -specifies that stations 1 and 2 are Polhemus Stylus Devices +# -sets the tracker to ASCII responses (F0<>), +# -sends the tracker a whoami (^V<>), +# -sets the boresight on sensor one (B1,0,0,0,0<>) to an arbitrary value, +# -confirms the boresight setting with P to collect a single pno, +# -removes the boresight setting (^B1<>), +# -collects a second single pno to confirm (P), +# -enters an invalid command to demonstrate the advantage of ASCII mode (^ZX<>) and finally, +# -most importantly, returns to binary mode before passing control to VRPN (F1<>). +# The tracker server name is myLiberty. +# The server poll rate is 240 Hz +# +# vrpn_Tracker_LibertyPDI myLiberty 240\ +# PDIStylus 1\ +# PDIStylus 2\ +# F0<>\ +# ^V<>\ +# B1,0,0,0,0<>\ +# P\ +# ^B1<>\ +# P\ +# ^ZX<>\ +# F1<> +# +#----------------------------------------------------------------------------- +# Finally the default config below: +# -May be used for a Liberty or a Patriot tracker +# -Polls the tracker 60 times per second +# -Sets tracker output to ASCII +# -Queries the tracker for WhoAmI information +# -Sets the output back to Binary +############################################################################## + +# vrpn_Tracker_LibertyPDI defaultPolhemus\ +# F0<>\ +# ^V<>\ +# F1<> + +############################################################################### +# This YEI 3Space_Sensor driver is used even for a wireless-capable sensor +# when it is plugged directly into the computer via USB. The Wireless +# driver (see next driver description) is used when the wireless unit is +# plugged into the computer. +# +# On Windows, the driver for the YEI 3-Space Sensor Suite requires installation +# of the device driver that comes with the system, which presents a serial-port +# interface to the device (as a COM port on Windows). On Mac and Linux, you +# can just plug in the device and it will show up as a new port. On Linux, the +# default permissions for the port only allow read access, so you'll need to +# either change the permissions or run vrpn_server as root. +# If the gyroscopes are calibrated at startup, the device should remain still +# while the server is started. +# If the device is set to tare at startup, it should be facing in the correct +# direction when the server is started. This is usually a manufacturing-time +# operation if the tracker is integrated into a larger device. +# +# This device exposes a Tracker interface, with the following inputs. Only the +# orientation portion of the pose is valid; the position is always reported as +# (0,0,0). Sensor 1 also reports linear acceleration. +# 0: Untared orientation +# 1: Tared orientation +# +# This device exports an Analog interface, with the following channels: +# 0: Corrected Gyro rate vector X component (radians/second) +# 1: Corrected Gyro rate vector Y component (radians/second) +# 2: Corrected Gyro rate vector Z component (radians/second) +# 3: Corrected Gravity vector X component (in fraction of g) +# 4: Corrected Gravity vector Y component (in fraction of g) +# 5: Corrected Gravity vector Z component (in fraction of g) +# 6: Corrected Compass vector X component (in Gauss) +# 7: Corrected Compass vector Y component (in Gauss) +# 8: Corrected Compass vector Z component (in Gauss) +# 9: Temperature Celsius +# 10: Confidence factor (1 if completely stationary down to 0 with motion) +# +# This device exports a Button_Filter interface, with the following channels: +# 0: First button (external button on the units in cases) +# 1: Second button (external button on the units in cases) +# 2-7: Other buttons (not installed at the factory) +# +# The device description for a wired device: +# vrpn_YEI_3Space_Sensor +# char name_of_this_device[] +# char port_name +# int baud_rate_of_serial_device +# int calibrate_gyros_on_startup (0 = no, 1 = yes) +# int tare_on_startup (0 = no, 1 = yes) +# double frames_per_second +# float red_LED_color to set (0-1) +# float green_LED_color to set (0-1) +# float blue_LED_color to set (0-1) +# int LED_mode (0 = standard, 1 = static) +# +# If the line ends with a backslash character '\', then the following +# line is an additional ASCII command to send to the tracker every +# time it is reset. There can be more than one such line, so long as +# each previous line ends with backslash. The commands should not include +# the beginning colon ':' character; it will be prepended automatically. +# Note that the decimal command number is used, with commas and then +# additional commands following. Also note that there must not be any +# spaces in the commands, and that there must be a space between the +# command and any trailing backslash. +# +# Note that this slash and backslash notation can only be used for the +# YEI tracker, not to extend the line for all other type of device +# listed in this configuration file. +# +# The device description for the first wireless device using a +# dongle includes the following arguments: +# vrpn_YEI_3Space_Sensor_Wireless +# char name_of_this_device[] +# int logical_id_on_wireless (0-14) +# char port_name +# int baud_rate_of_serial_device +# int calibrate_gyros_on_startup (0 = no, 1 = yes) +# int tare_on_startup (0 = no, 1 = yes) +# double frames_per_second +# float red_LED_color to set (0-1) +# float green_LED_color to set (0-1) +# float blue_LED_color to set (0-1) +# int LED_mode (0 = standard, 1 = static) +# +# If the line ends with a slash character '/', then the following line +# starts a description of an additional wireless device sharing the +# same dongle. +# The device description for an additional wireless device using the +# same dongle includes the following arguments: +# vrpn_YEI_3Space_Sensor_Wireless +# char name_of_this_device[] +# int logical_id_on_wireless (0-14) +# int calibrate_gyros_on_startup (0 = no, 1 = yes) +# int tare_on_startup (0 = no, 1 = yes) +# double frames_per_second +# float red_LED_color to set (0-1) +# float green_LED_color to set (0-1) +# float blue_LED_color to set (0-1) +# int LED_mode (0 = standard, 1 = static) +# +# Windows example, then mac example, then Linux example. Note: Ports may vary +# Note: The parser handles converting Windows ports greater than 9 into +# the correct format, so you can just put the name as COM14 without adding the +# backslashes. +# Final example shows how to use an ASCII reset command to set the +# LED color (it actually just sets it to three different colors, +# the last being yellow). +############################################################################### + +#vrpn_YEI_3Space_Sensor YEI0 COM7 115200 0 0 200.0 0 0 1 0 +#vrpn_YEI_3Space_Sensor YEI0 /dev/cu.usbmodemfa131 115200 0 0 200.0 0 0 1 0 +#vrpn_YEI_3Space_Sensor YEI0 /dev/ttyACM0 115200 0 0 200.0 0 0 1 0 + +# Example with extra commands sent. These examples change the LED color +# to multiple differene ones, ending with yellow. +#vrpn_YEI_3Space_Sensor YEI0 COM7 115200 0 0 200.0 0 0 1 0 \ +#238,1,1,1 \ +#238,1,0,1 \ +#238,1,1,0 + +# One sensor on a wireless connection. +#vrpn_YEI_3Space_Sensor_Wireless YEI0 0 COM5 115200 0 0 200.0 0 0 1 1 + +# Two sensors on the same wireless transmitter. Note the slash at the end of the +# final line for the first unit, which indicates that we're talking with the +# same base unit for a second wireless tracker (which we then don't specify the +# serial-port name for). +#vrpn_YEI_3Space_Sensor_Wireless YEI0 0 COM5 115200 0 0 200.0 0 0 1 1 \ +#238,1,1,0 / +#vrpn_YEI_3Space_Sensor_Wireless YEI1 1 0 0 200.0 0 1 0 1 \ +#238,0,1,1 + +################################################################################ +# Tracker that does dead-reckoning on orientation based on either reports of +# angular velocity (if received) or on successive orientation reports. +# It sends a new prediction report whenever it receives either a tracker pose +# update or a tracker velocity update. +# char name_of_this_device[] +# char name_of_device_to_predict_for[] (start with * for local) +# int number_of_sensors +# float how_far_to_predict_in_seconds + +#vrpn_Tracker_DeadReckoning_Rotation Tracker1 *Tracker0 2 0.0333 + +################################################################################ +# OSVR Hacker Dev Kit inertial measurement unit. This is an inertial tracker that +# gives orientation information, but no position. Position values are always +# 0. Version 1 of this device sends only poses. Version 2 also sends velocity +# reports. +# +# Arguments: +# char name_of_this_device[] + +#vrpn_Tracker_OSVRHackerDevKit Tracker0 + +################################################################################ +# Oculus Rift DK1 and DK2. There are two versions of the DK2 driver, which use the +# same hardware but in two different modes. +# +# vrpn_Oculus_DK2_inertial: Oculus DK2 inertial measurement unit only. This +# provides access to the magnetometer readings on the unit and has a different +# set of exported values. +# +# The LEDs device exports an Analog interface, with the following channels: +# 0: Uncalibrated temperature (degrees Celsius?) +# 1: Report ID counter that goes up to 65535 and then cycles back to 0 +# 2: Uncalibrated accelerometer X component (positive to left ear) (m/s/s) +# 3: Uncalibrated accelerometer Y component (positive down to feet) (m/s/s) +# 4: Uncalibrated accelerometer Z component (positive forward) (m/s/s) +# 5: Uncalibrated gyro X component (positive rotating head up) (radians/sec?) +# 6: Uncalibrated gyro Y component (positive rotating head left) (radians/sec?) +# 7: Uncalibrated gyro Z component (positive tilting head left) (radians/sec?) +# 8: Uncalibrated Magnetometer X component (positive to left ear) (varied, asymmetric range) +# 9: Uncalibrated Magnetometer Y component (positive down to feet) (varied, asymmetric range) +# 10: Uncalibrated Magnetometer Z component (positive forward) (varied, asymmetric range) +# +# vrpn_Oculus_DK2_LEDs: Oculus with LEDs enabled, which would enable reading +# from its camera to determine position. Note that the program reading from +# the camera will have to put the camera into synchronous mode using a +# special command before its results will line up with the LED flashing. +# NOTE: The VRPN driver does not yet read from the camera, so will not produce +# position reports with the DK2 in this mode, but an external program could +# read from the camera to do this (after putting it into synchronous mode). +# +# The LEDs device exports an Analog interface, with the following channels: +# 0: Uncalibrated temperature (degrees Celsius?) +# 1: Report ID counter that goes up to 65535 and then cycles back to 0 +# 2: Uncalibrated accelerometer X component (positive to left ear) (m/s/s) +# 3: Uncalibrated accelerometer Y component (positive down to feet) (m/s/s) +# 4: Uncalibrated accelerometer Z component (positive forward) (m/s/s) +# 5: Uncalibrated gyro X component (positive rotating head up) (radians/sec?) +# 6: Uncalibrated gyro Y component (positive rotating head left) (radians/sec?) +# 7: Uncalibrated gyro Z component (positive tilting head left) (radians/sec?) +# 8: Uncalibrated Magnetometer X component (positive to left ear) (varied, asymmetric range) +# 9: Uncalibrated Magnetometer Y component (positive down to feet) (varied, asymmetric range) +# 10: Uncalibrated Magnetometer Z component (positive forward) (varied, asymmetric range) +# 11: Time since device power-on (seconds) +# +# NOTE: The Oculus drivers may interfere with this raw driver if they are +# installed on the system. +# +# NOTE: A side effect of running this driver is that the HMDI output for the +# DK2 will become visible to the system if it is plugged in. If it is +# in DirectMode, it will not appear as a system display. If it is not, +# it will show up as another display. +# +# NOTE: The magnetometer ranges on each axis are different, and they are not +# symmetric around 0 for any of the axes, so the device needs to have been +# rotated around a lot to really have an idea of which way is North. A +# tracker based on this value needs to keep track of the extrema. +# Also, the magnetic North vector does not point straight along the +# plane of the ground, but rather into the Earth. Finally, even with a +# careful calibration there can still be drift/wobble caused by using +# the magnetometer, so it is recommended to not use it unless true north +# is needed. The system seems stable in rotation without it. +# +# Arguments: +# char name_of_this_device[] + +#vrpn_Oculus_DK1 Oculus0 +#vrpn_Oculus_DK2_inertial Oculus0 +#vrpn_Oculus_DK2_LEDs Oculus0 + +################################################################################ +# Magnetometer. This is an analog that is intended to be used on top of +# an analog that reads values from a 3-axis magnetometer. +# It could be used on top of any analog device, in fact. +# This device basically takes in analog signals and puts out analog +# values that are a unit vector. +# One analog channel is associated with each axis (X, Y, Z) +# For each axis, the value is scaled to a the correct orientation but the +# magnitude will be normalized and offset to fit the largest range of values +# ever received for that axis (self-calibrated). +# NOTE: The vector will not point perpendicular to gravity. +# NOTE: The examples below map the axes to the OSVR coordinate system, +# which has +X pointing from the center of the eyes through the right eye, +# the +Y axis pointing straight up, and the +Z axis pointing out the back of +# the user's head. +# +# The device exports an Analog interface, with the following channels: +# 0: X component of normalized, autocalibrated vector +# 1: Y component of normalized, autocalibrated vector +# 2: Z component of normalized, autocalibrated vector +# +# Arguments: +# char name_of_this_device[] +# float update_rate_to_send_analog_reports +# [one lines follows, describing the X Y Z, with: +# char name_of_analog_device[] (start with * for local) +# int x_channel_of_analog_device +# float x_offset (value ignored) +# float x_scale +# int y_channel_of_analog_device +# float y_offset (value ignored) +# float y_scale +# int z_channel_of_analog_device +# float z_offset (value ignored) +# float z_scale +# ] + +#vrpn_IMU_Magnetometer Magnetometer0 100.0 +#*Oculus0 8 0 -1.0 9 0 -1.0 10 0 -1.0 + +#vrpn_IMU_Magnetometer Magnetometer0 100.0 +#*Vality0 6 0 1.0 7 0 1.0 8 0 1.0 + +################################################################################ +# Inertial-measurement combiner. This is a tracker that combines +# analog values from inertial measurement units and reports orientation +# and orientation velocity. +# The accelerometer scale parameter should be set to produce values that +# are in meters/second/second. The rotational input scale parameters should +# be set to produce values that are in radians/second. The magnetometer +# scale should be set to produce a unit normal vector. +# One analog device is associated with an accelerometer, one with +# a rotational linear measurement device, and (optionally) one with +# a magnetometer. +# NOTE: The examples below map the axes to the OSVR coordinate system, +# which has +X pointing from the center of the eyes through the right eye, +# the +Y axis pointing straight up, and the +Z axis pointing out the back of +# the user's head. +# +# The device exports a Tracker interface with one sensor. +# +# Arguments: +# char name_of_this_device[] +# float update_rate_to_send_reports +# [two lines follow, describing the accelerometer and rotational inputs: +# char name_of_analog_device[] (start with * for local) +# int x_channel_of_analog_device +# float x_offset +# float x_scale +# int y_channel_of_analog_device +# float y_offset +# float y_scale +# int z_channel_of_analog_device +# float z_offset +# float z_scale +# ] +# A third following line gives the name of the magnetometer, or the +# name NULL if one is not used. The name starts with * for a device +# that should be connected to on the same VRPN connection object +# being used for the output. For some systems, the magnetometer +# adds drift/wobble to the orientation estimates, so should not be +# used unless true north is required. + +#vrpn_IMU_SimpleCombiner Tracker0 400.0 +#*Oculus0 2 0 -1.0 3 0 -1.0 4 0 -1.0 +#*Oculus0 5 0 1.0 6 0 1.0 7 0 1.0 +#NULL + +#vrpn_IMU_SimpleCombiner Tracker0 400.0 +#*Oculus0 2 0 -1.0 3 0 -1.0 4 0 -1.0 +#*Oculus0 5 0 1.0 6 0 1.0 7 0 1.0 +#*Magnetometer0 + +#vrpn_IMU_SimpleCombiner Tracker0 400.0 +#*Vality0 1 0 -1.0 0 0 1.0 2 0 1.0 +#*Vality0 4 0 -1.0 3 0 1.0 5 0 1.0 +#NULL + +#vrpn_IMU_SimpleCombiner Tracker0 400.0 +#*Vality0 1 0 -1.0 0 0 1.0 2 0 1.0 +#*Vality0 4 0 -1.0 3 0 1.0 5 0 1.0 +#*Magnetometer0 + +################################################################################ +# nVidia Shield controllers. The only argument is the name of the device to open. +# +# The vrpn_nVidia_shield_USB is the original Shield controller, which has a +# touch-pad mouse, plugged into a USB port. +# The vrpn_nVidia_shield_stealth_USB is the newer model, which has a tesselated +# exterior and no touch pad. +# +# Note: On a mac, the shield controller sometimes requests shutdown on the machine +# when it is plugged in, and the volume controls control the volume, +# and the shield emblem causes it to sleep. The events are still +# passed through to VRPN. Also on a Mac, the Stealth controller does +# not present reports to VPRN, so is not useful. +# On the latest MacOS (11.6.5) the shield controller also does not pass +# events to VRPN, so it is not useful. +# Note: On Windows 8.1, this controller's touch pad controls the mouse and +# its analog events are not passed on to VRPN. +# On Linux, there are no system controls and all of the events are passed through +# to VRPN. +# Note: The rumble outputs are not yet implemented on the Stealth. +# Note: The mappings are the same for both devices, but the Stealth does +# not report some (which remain 0/off). +# +# Analogs: +# analog[0] is the left joystick X, -1 to left and 1 to right. +# analog[1] is the left joystick Y, -1 up and 1 down. +# analog[2] is the right joystick X, -1 to left and 1 to right. +# analog[3] is the right joystick Y, -1 up and 1 down. +# analog[4] is the left finger bumper, 0 unpressed and 1 pressed fully. +# analog[5] is the right finger bumper, 0 unpressed and 1 pressed fully. +# analog[6] is the touch pad X axis, lower to left and higher to right +# (Missing on the stealth) +# analog[7] is the touch pad Y axis, lower to top and higher to bottom +# (Missing on the stealth) +# analog[8] is the hi-hat X position (-1 left, 0 center, 1 right) +# analog[9] is the hi-hat Y position (-1 up, 0 center, 1 down) +# +# Buttons: +# button[0] A +# button[1] B +# button[2] X +# button[3] Y +# button[4] Left finger trigger +# button[5] Right finger trigger +# button[6] Left joystick pushed down +# button[7] Right joystick pushed down +# button[8] Touch pad assembly (including volume control) pressed down +# (Missing on the stealth) +# button[9] Play/pause icon touched +# button[10] Unknown +# button[11] Right volume control (+) pressed +# (Left arrow on the stealth) +# button[12] Left volume control (-) pressed +# (Circle on the stealth) +# button[13] Shield emblem touched +# button[14] Back icon touched +# button[15] Home icon touched +# button[16] Hi-hat up pressed (may chord with left/right) +# button[17] Hi-hat right pressed (may chord with up/down) +# button[18] Hi-hat down pressed (may chord with left/right) +# button[19] Hi-hat left pressed (may chord with up/down) +# button[20] Touch pad touched +# + +#vrpn_nVidia_shield_USB shield0 +#vrpn_nVidia_shield_stealth_USB shield0 + +################################################################################ +# Adafruit 10DOF IMU I2C controller driver for Raspberry Pi. +# char name_of_this_device[] +# char name_of_system_device_to_open[] +# float update_interval_in_seconds +# +# Analogs: +# analog[0] is the X axis for the accelerometer, in meters/second/second +# analog[1] is the Y axis for the accelerometer, in meters/second/second +# analog[2] is the Z axis for the accelerometer, in meters/second/second +# analog[3] is the X axis for the rate gyro, in radians/second +# analog[4] is the Y axis for the rate gyro, in radians/second +# analog[5] is the Z axis for the rate gyro, in radians/second +# analog[6] is the X axis for the magnetometer, in XXX +# analog[7] is the Y axis for the magnetometer, in XXX +# analog[8] is the Z axis for the magnetometer, in XXX +# analog[9] will be the temperature in Celcius (not impl. as of 7/2016) +# analog[10] will be the pressure in Pascal (not impl. as of 7/2016) +# NOTE: This class is not completely implemented as of 7/2016. +# The accelerometer and gyro may be reading, but they are raw readings. + +#vrpn_Adafruit_10DOF Analog0 /dev/i2c-1 10e-3 + +################################################################################ +# OzzMaker BerryIMUIMU I2C controller driver for Raspberry Pi. +# char name_of_this_device[] +# char name_of_system_device_to_open[] +# float update_interval_in_seconds +# +# Analogs: +# analog[0] is the X axis for the accelerometer, in meters/second/second +# analog[1] is the Y axis for the accelerometer, in meters/second/second +# analog[2] is the Z axis for the accelerometer, in meters/second/second +# analog[3] is the X axis for the rate gyro, in radians/second +# analog[4] is the Y axis for the rate gyro, in radians/second +# analog[5] is the Z axis for the rate gyro, in radians/second +# analog[6] is the X axis for the magnetometer, in Gauss +# analog[7] is the Y axis for the magnetometer, in Gauss +# analog[8] is the Z axis for the magnetometer, in Gauss +# analog[9] will be the temperature in Celcius (not impl. as of 7/2016) +# analog[10] will be the pressure in Pascal (not impl. as of 7/2016) + +#vrpn_OzzMaker_BerryIMU Analog0 /dev/i2c-1 10e-3 + +# Laputa VR HMD inertial measurement unit. This driver only provides IMU reports +# via analog and will need to use IMU combiner to get an orientation out of it. +# +# Arguments: +# char name_of_this_device[] + +#vrpn_Laputa Laputa0 + +################################################################################ +# vGlass Vality vGlass head-mounted display. +# char name_of_this_device[] +# +# Analogs: +# analog[0] is the X axis for the accelerometer, in meters/second/second +# analog[1] is the Y axis for the accelerometer, in meters/second/second +# analog[2] is the Z axis for the accelerometer, in meters/second/second +# analog[3] is the X axis for the rate gyro, in radians/second +# analog[4] is the Y axis for the rate gyro, in radians/second +# analog[5] is the Z axis for the rate gyro, in radians/second +# (As of 7/11/2019, the magnetometer readings are not parsed.) +# analog[6] is the X axis for the magnetometer, in microTesla +# analog[7] is the Y axis for the magnetometer, in microTesla +# analog[8] is the Z axis for the magnetometer, in microTesla + +#vrpn_Vality_vGlass Vality0