Yuval Boger edited this page Apr 3, 2015 · 5 revisions

VRPN's base was designed and built by Russell M. Taylor II, who was the primary maintainer from 1998 through 2014, sponsored by the UNC NIH National Research Resource on Computer-Integrated Systems for Microscopy and Manipulation. Although Russ continues to be involved, VRPN is now maintained and supported by Sensics and developed in collaboration with a productive community of contributors.

Ruigang Yang implemented many of the specific device drivers and vrpn_Analog. Hans Weber implemented clock synchronization and worked on several drivers. Tom Hudson fixed the naming convention and has worked extensively on vrpn_Connection (logging and playing back sessions, forwarding) and on the vrpn_SharedObject code. Phillip Winston wrote the UNC ceiling-tracker driver and helped with the NT port. Jun Chen and Adam Seeger implemented the PHANToM driver. Arthur Gregory added meshes to the PHANToM code and sped up collision detection. Lin Cui implemented the vrpn_Text class. Randy Heiland (NCSA) ported the PHANToM driver from NT to SGI. John Stone (Beckman Institute, UIUC) cleaned the code up so that it compiles better on multiple architectures, and in particular so that it will compile outside of UNC. John also wrote the Spaceball drivers and did the Mac/OSX port and the Solaris_64 port. Rob King while he was at the Navy Research Labs wrote the ImmersionBox driver, serial-port mouse-button and TNG drivers and submitted several bug fixes. Jason Clark wrote the Miles-based sound server. Zak Kohn augmenting the sound support. Jeff Juliano and Stefan Sain designed a major rewrite of the connection class. Aron Helser has done major bug/feature work on the library. The AIX and Solaris patches that allow compilation on these systems come from Loring Holden and Bob Zeleznik at Brown University. The Wanda driver comes from Brown University; they also helped with the Pinchglove driver. The driver for the 5DT is provided by Philippe DAVID and Yves GAUVIN from Direction de la Recherche. The Linux Joystick drivers (Joylin) were written by Harald Barth. David Marshburn wrote the Java port. Andrea Hilchey and Chris Dwyer wrote the Imager class and the Properties class. Thorsten Scheuerman ported VRPN to run on PDAs running Linux. Marc Baaden from SMPLinux ported the Phantom server to run on SGIs using GHOST 3.1. Sebastien MARAUX from Ondim merged the Phantom server with the regular server to enable more devices to be run from it and added the instant buzzing effect to the driver. He also wrote the Joywin driver that enables the use of joysticks on Windows without using DirectInput. He also found a slew of memory leaks which should be fixed in 06.05. Sharif Razzaque submitted a fix for the InterSense native-library driver that lets you connect to USB trackers (Chris Ozeroff also submitted a patch for this). Matt McCallus wrote the AuSIM and DirectSound sound servers. Blair MacIntyre added code to the native InterSense driver to enable adding wands and styli. Haris Fretzagias updated the fast Windows clock so that you can reliably get more than 60 ticks per second. David Borland added the Poser and Analog_Output classes (inverses to the Tracker and Analog classes) and added a Qt-GUI-based server and the Viewpoint eye tracker and zSight tracker drivers. David Nahon from Virtools provided updates on the native Intersense driver and the Ascension driver (removed requirement for extended-range transmitter). He also worked with Kurt Achatz of Advanced Realtime Tracking GmbH to develop a driver for that company's DTrack tracker. Kurt later supplied a clean port that handles multiple Flysticks and doesn't require linking with outside code, and another version compatible with their new Flystick2. Daniel Myall from Westco provided the Polhemus Liberty driver and the description of how to make this run on Linux. Jeff Feasel implemented reference counting on the vrpn_Connection objects so that a connection is deleted when the last object referencing it is deleted; this causes correct behavior when storing logfiles. Chris VanderKnyff made it possible to link VRPN using DLLs, and invented the VRPN_CALLBACK convention so that the library can play nicely with application frameworks that require different calling conventions for functions. He also contributed a driver for the Crossbow RGA300 accelerometer using a serial interface while at SAIC. He also write the HID class and the Windows implementation, which included drivers for the XKeys devices and enabled the Windows mouse report to work correctly on multi-screen systems. Roland Schroeder-Kroll from Steffi Beckhaus' group at the University of Hamburg has submitted drivers for the Polhemus Patriot tracker (uses the Liberty driver) and for the SeeReal D4D stereo Display. Jinseok Seo from the Virtual Reality Laboratory of POSTECH in Korea contributed a Logitech 3D Mouse driver. Mike Weiblen from 3DLabs contributed the vrpn_Mouse class that works on Linux. Tom De Weyer's group at EDM-Uhasselt in Belgium contributed the Microscribe interface along with the 5DT16 analog and button drivers. Patrick Hartling from added support for Mac OSX universal binaries. Version 07.09 has support the inertialmouseand event mouseinterfaces from Bauhaus University Weimar, submitted by Jan Springer. Version 07.15 has lots of bug fixes and patches submitted by users (Jan Ciger, Patrick Hartling, Michael Adrian, Eric Griffith). Version 07.16 has a Polaris driver submitted by Sharif Razzaque from InnerOptic. It also includes a number of bug fixes and patches submitted by users (Jan Ciger, Aron Helser, Mike Weiblen, Lawrence K., Patric Smitz, M. Casas Sanchez). Ian Curington submitted the 3DConnexion SpaceBall5000 driver patch and a fix for a compiler-translation bug in the 3DConnexion drivers. Version 07.19 has a Spaceball 5000 driver update by Ian Curington, an Xbox 360 controller interface by Chris VanderKnyff, and bug fixes from Hans Lambermont and Roger Hoang. 3DConnexion bug fix from Joseph Newman and Hans Lambermont for Mac OSX. Semaphore bug fix from Simon Julier on Mac OSX. Compilation bug under Linux64 sent by Bruno Raffin. CMake build files were submitted by Simon Julier and Hans Labermont. Ryan Pavlik has done a ton of work on VRPN, including: improved the CMake files and made them match modern standards, as well as submitting bug fixes to make the 3DConnexion devices compile on multiple MacOSX versions and to make code compile with various options turned off, and adding the Jsoncpp submodule, fixing bugs, refactoring code, etc. The Getting Started page is based on a posting by David Marshburn. Andrew Roth from York University, Toronto sent in patches to fix the Intersense driver when using the latest version of their library on the mac. Sébatien Kuntz provided the VR Geeks tutorial for VRPN. Luv Kohli fixed the PhaseSpace to report in meters. William Sherman made the Flock synchronization work better. Jean Simard added the ability to name the Phantom in the vrpn.cfg file, he and Ryan Pavlik and Antoine Vanel got the Phantom code to compile under Linux. Johannes Zarl added options and fixes to the WiiMote driver. Charles Owen sent two fixes for the Isotrack driver. Matt Liberty updated the Hillcrest Labs Freespace driver. Ryan Pavlik has added a ton of cross-platform improvements, made the Cmake system much better and added Wii head tracker and the Razer Hydra. David Marshburn added a Matlab-based function generator that radically improves on the vrpn_Analog_Output interface to change values remotely. Andrew Roth got the Intersense driver compiling against the new version of their library. SWIG-generated Python bindings were fixed by Jeffrey Esquivel Sibaja (vrpn_python folder in main source tree). Damien Touraine from developed a hand-coded set of Python bindings that work with Python 2.7 and 3.2 (python folder in main source tree); he also fixed DevInput devices so they throw messages properly. Sheldon Andrews got relocatable 64-bit code working. Daniel Wilches Maradey made an online tutorial for compiling the VRPN client side on the iPhone. An android application running a VRPN server is in the vrpn_android directory; thanks to Eric Boren, Duncan Lewis, Ted Driggs, and Kristen Janick from UNC's Comp 523 class for writing this. Philippe Crassous added Android support that uses a JSON interface (which he also wrote) to talk with VPRN. Novint Falcon support added by Alex Kohlmeyer. Jan Ciger: Support for Gametrak 2 device and PNI SpacePoint 3DOF under HID framework and fixes for VS2012 compile and One-Euro filter. Alex Hill from Blair MacIntyre's group at Georgia Tech supplied the serial-port GPS driver. Juan Sebastian Casallas added updates and improvements to the default vrpn.cfg file. Evan Suma submitted a VRPN Android source bundle (linked from the PDA page) that lets VRPN compile the client files. Diaz Jafet Villafranca from EPFL submitted the 3DConnection Navigator for Notebooks driver. Andrew Montag provided instructions and patches for how to build a client-side application set for the Android operating system. Lars Bilke added SpacePilot support. Lawrence Kwan added, a position/orientation viewer. Thomas Lerman added a large number of controllers: vrpn_Contour_ShuttleXpress, vrpn_Futaba_InterLink_Elite, vrpn_Griffin_PowerMate, vrpn_Logitech_Extreme_3D_Pro, vrpn_Saitek_ST290_Pro, vrpn_Microsoft_SideWinder_Precision_2, vrpn_Microsoft_SideWinder, vrpn_Microsoft_Controller_Raw_Xbox_S, vrpn_Microsoft_Controller_Raw_Xbox_360, vrpn_Afterglow_Ax1_For_Xbox_360. Suzanne Gagnon, Ben Himberg, and Brian Crucitti provided the G4 Powertrack driver and other updates on the Polhemus driver. Emiliano Pastorelli added the Wintracker III driver. Anthony Legrand added support to enable the Liberty HS tracker to work with VRPN. Jean-Chrisophe Lombardo fixed button-parsing code on Linux and Apple. Thomas Lerman provided the CH Products Fighterstick driver. Matthieu Ruffat provided the info needed for the SpaceMouseWireless driver. Luke Tokheim provided updates for the MotionNode tracker that remove compile-time dependencies on external libraries. Andres Odio worked out how to fix vrpn.cfg file loading from other locales.