# vrpn.cfg.SAMPLE for VRPN version 06.06 ################################################################################ ################################################################################ # 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. ################################################################################ ################################################################################ ################################################################################ # Tracker classes. Lines here to start various tracker servers. A description is # provided for each type of tracker for the arguments it takes, then an example # configuration line is provided. ################################################################################ ################################################################################ # 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 ################################################################################ # 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) # optionnal char useERT # # 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". #vrpn_Tracker_Flock Tracker0 4 /dev/ttyS0 1 115200 # If you have to FOB, with no Extended Range ctrler/transmitter, on Windows, use #vrpn_Tracker_Flock Tracker0 2 COM1 38400 1 N # 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 ################################################################################ # Liberty Tracker. Runs a Polhemus Liberty tracker that is attached to a serial # port or USB port 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) # # 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 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 ################################################################################ # 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 ################################################################################ # 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). # 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 # ] #vrpn_Tracker_AnalogFly Tracker0 60.0 differential #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 #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 #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 #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 #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 # 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 # 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 ################################################################################ # 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 ################################################################################ ################################################################################ # Non-tracker devices. Lines are provided here for the various non-tracker servers # that can be started. ################################################################################ # 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 (udpates/second) #vrpn_Dial_Example Dial0 2 2.0 10.0 ################################################################################ # 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. # # 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. # # 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 will 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 ################################################################################ # 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 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 ################################################################################ # 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 #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/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. Drive a 5dt glove connected on a serial Port. This device uses # optical fiber to get the finger position. Not all the 5dt gloves are available # now. # 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 # 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 ################################################################################ # 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 /dev/ttyd1 3button #vrpn_Button_SerialMouse Button0 COM1 mousesystems #vrpn_Button_SerialMouse Button0 COM1 3button ################################################################################ # 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 ################################################################################ # 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 #vrpn_Phantom Phantom 0 60.0 ############################################################################## # 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: numbering of flystick buttons differs from DTrack documentation # # Arguments: # char name_of_this_device[] # int udp_port (DTrack sends data to this udp port) # float time_to_reach_joy (see below) # # Optional arguments: # int number_of_bodies, number_of_flysticks (fixed numbers of bodies and flysticks) # int renumbered_ids[] (vrpn_Tracker IDs of bodies and flysticks) # char "-" (activates tracing; always last argument) # # NOTE: time_to_reach_joy is the time needed to reach the maximum value of the # joystick # (1.0 or -1.0) when the corresponding button is pressed (one of the last # buttons amongst the 8) # # 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 0.5 #vrpn_Tracker_DTrack DTrack 5000 0.5 2 2 #vrpn_Tracker_DTrack DTrack 5000 0.5 2 2 2 1 0 3 ################################################################################ # 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. # # 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 ################################################################################ # 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[] # char vrpn_name_of_the_analog_output_to_use[] # (Preface with a * if it uses the same connection) # [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) # 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 #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 ################################################################################ # 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 Focus COM2 ################################################################################ # 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