################################################################################ # VRPN generic object configuration file to run a Mad City Labs controller # wrapped with Tracker and Poser servers, each of which is named "Focus". # They report the Z value of the stage in meters and set the Z height in # meters. # This file contains the general set of servers that might be useful for # running or testing the code, with the appropriate ones for the particular # device uncommented and the rest commented out. ################################################################################ # 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 Focus 1 2.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). # 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 Focus 5.0 absolute X NULL 0 0.0 0.0 1.0 1.0 Y NULL 1 0.0 0.0 -1.0 1.0 Z *Focus 0 0.0 0.0 0.02e-6 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 0.5 1.0 RESET NULL 0 #vrpn_Tracker_AnalogFly Focus 60.0 absolute #X *MCLXYZIN 4 0.0 0.0 10.0e-6 1.0 #Y *MCLXYZIN 5 0.0 0.0 10.0e-6 1.0 #Z *MCLXYZIN 6 0.0 0.0 10.0e-6 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 0.5 1.0 #RESET NULL 0 #vrpn_Tracker_AnalogFly Focus 60.0 absolute #X NULL 0 0.0 0.0 1.0 1.0 #Y NULL 1 0.0 0.0 -1.0 1.0 #Z *Joystick0 6 -1.0 0.0 50e-6 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 0.5 1.0 #RESET NULL 0 ################################################################################ # 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 ################################################################################ # 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 Focus 0 X NULL 0 0.0 1.0 -10 10 Y NULL 1 0.0 1.0 -10 10 Z *Focus 0 0.0 50.0e6 0 4e-3 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 #vrpn_Poser_Analog Focus 0 #X *MCLXYZOUT 0 0.0 0.1e6 0 10.0 #Y *MCLXYZOUT 1 0.0 0.1e6 0 10.0 #Z *MCLXYZOUT 2 0.0 0.1e6 0 10.0 #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 COM4 ################################################################################ # 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 10 0 1 0 0 -10.0 10.0 # Output examples #vrpn_National_Instruments MCLXYZOUT PCI-6733 0 0 0 10 0 1 0 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