VRPN 07.31

Obtaining VRPN

Getting Started

VRPN main page

VRPN Redmine

VRPN FAQ

VRPN Support

Installing and Testing

Compiling and Modifying

Client code

Server code

Troubleshooting

Connections

Logging and Playback

.NET bindings for VRPN

Shared Objects

Sound

Text Messages

VRPN on PDAs

UNC-specific information

VRPN USB

VRPN 07.31

Virtual Reality Peripheral Network

New! One-Euro filter that reads in a tracker pos/orient and filters it, producing a less-jittery tracker output (Jan Ciger). Updated manufacturer-supplied Polhemus drivers.

New! Devices! 3DConnexion SpacePilot (from @bilke on GitHub). Razer Hydra (Ryan Pavlik & Jan Ciger). 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, 3DConnexion Spacemouse Pro (Thomas Lerman). Polhemus G4 Powertrack. WinTracker III (Emiliano Pastorelli). Haydon-Kerk IDEA linear positioning unit. Biosciences Tools thermal control unit.

There is a VRPN Redmine project-management site set up where users can register and post bug reports and feature requests. This is also a forum for users to share ideas and fixes.

Archived, managed VRPN email list: vrpn@listserv.unc.edu. Web address to look at the archived messages is http://lists.unc.edu/read/?forum=vrpn. You can add yourself or remove yourself from the list by visiting http://listserv.unc.edu and using the Search for Lists Tool to find vrpn, then subscribing using the button. The old vrpn@cs.unc.edu has been redirected to this new list.

While most inquiries about VRPN should go to the user group at vrpn@listserv.unc.edu, commercial support of VRPN is available. This support includes writing new device drivers, onsite installation and support, the addition of new features, and "productizing" the code so that it is more clear and robust. Groups that are interested in support for VRPN should see the VRPN support web page or contact vrpn-support@navitasresearch.com for more information. The library remains in the public domain, as have all improvements.

Overview

The Virtual-Reality Peripheral Network (VRPN) is a set of classes within a library and a set of servers that are designed to implement a network-transparent interface between application programs and the set of physical devices (tracker, etc.) used in a virtual-reality (VR) system. The idea is to have a PC or other host at each VR station that controls the peripherals (tracker, button device, haptic device, analog inputs, sound, etc). VRPN provides connections between the application and all of the devices using the appropriate class-of-service for each type of device sharing this link. The application remains unaware of the network topology. Note that it is possible to use VRPN with devices that are directly connected to the machine that the application is running on, either using separate control programs or running all as a single program.

VRPN also provides an abstraction layer that makes all devices of the same base class look the same; for example, all tracking devices look like they are of the type vrpn_Tracker. This merely means that all trackers produce the same types of reports. At the same time, it is possible for an application that requires access to specialized features of a certain tracking device (for example, telling a certain type of tracker how often to generate reports), to derive a class that communicates with this type of tracker. If this specialized class were used with a tracker that did not understand how to set its update rate, the specialized commands would be ignored by that tracker. The current system types are Analog, Button, Dial, ForceDevice, Sound, Text, and Tracker. Each of these abstract a set of semantics for a certain type of device. There are one or more servers for each type of device, and a client-side class to read values from the device and control its operation.

A paper describing VRPN was presented at the VRST 2001 conference. A reprint of the paper can be found here. A copy of the Powerpoint presentation can be found here. A Powerpoint presentation on the vrpn_Imager can be found here.

VRPN has been tested on PC/Win32, PC/Cygwin, PC/Linux, and Mac/OSX. It worked at one time but is not actively maintained on SGI/Irix, HP700/Hpux, Sparc/Solaris (including 64-bit), Ipaq/Linux, and Zaurus/Linux (see the VRPN PDA page for info on running on Linux/WinCE handhelds). Daniel Wilches Maradey has an online tutorial for compiling the VRPN client side on the iPhone. Off-site users have compiled for IBM/AIX as well. There are drivers for at least the following devices (please let me know when you find more):

Trackers

  • Ascension Flock-of-birds (either running through one serial port, or with each sensor connected to its own serial port). This driver (and the other tracker drivers) resets the tracker in case of power cycle, serial disconnect or other flukes. Do not use this driver on a Nest of Birds because it will burn out the transmitter drive circuitry (see email from Kyle Smith).
  • Polhemus Fastrak tracker and 3Space trackers on several architectures, Liberty and LibertyHS tracker under at least Linux. The Patriot tracker is supported using the Liberty driver. G4 Powertrack.
  • InterSense IS-600 and IS-900 (using augmented Fastrak interface on any architecture).
  • Other InterSense trackers (using InterSense native library, even USB-based ones); there is currently a discussion on the VRPN email list about whether the position and orientation information are returned consistently when using this interface.
  • Origin Systems DynaSight tracker (with passive reflector). This driver also supports the older tracker in the SeeReal D4D stereo Display.
  • Sensable Technologies PHANToM force-feedback device.
  • 3rdTech HiBall-3000 Wide Area Tracker (formerly the UNC Ceiling tracker).
  • Analog devices used as a tracker (Magellan, CerealBox with joysticks attached, Radamec SPI, Mouse, ...).
  • Button devices used as teleporters or trackers (Global Haptics GeoOrb, ...).
  • WorldViz Precision Position Tracker PPT 1.2.
  • Advanced Realtime Tracking GmbH DTrack tracker, including Flystick2.
  • Logitech 3D mouse.
  • Crossbow RGA300 accelerometer using a serial interface.
  • Immersion Microscribe.
  • PhaseSpace tracking system.
  • Inertialmouse and Event Mouse from Bauhaus University Weimar.
  • MotionNode inertial tracking device.
  • OptiTrack Motive (was NaturalPoint OptiTrack Tracking Tools) (VRPN server is built into vendor server).
  • NDI Polaris optical tracking system.
  • Vicon (VRPN server is built into the vendor's server).
  • Novint Falcon force-feedback device.
  • Microsoft Kinect (VRPN server available from http://people.ict.usc.edu/~suma/faast).
  • GameTrak devices.
  • PNI SpacePoint.
  • Personal Space Technologies optical tracking system.
  • Viewpoint Eye tracker.
  • zSight tracker.
  • Serial-port GPS device.
  • Razer Hydra game controller.
  • zSpace immersive interactive hardware and software platform (VRPN server built into vendor server).
  • Wintracker III magnetic tracking system from Virtual Realities Ltd.

Other devices

  • The Dream Cheeky USB drum kit.
  • Hillcrest Labs' Freespace devices.
  • The Nintendo Wii Remote (also acting as a tracker).
  • The Xbox 360 game controller.
  • The 3DConnexion SpaceNavigator, SpaceExplorer, Spacemouse Pro, Navigator for Notebooks, and SpaceTraveler devices (buttons and 6DOF differential analog).
  • Logitech Magellan and Spaceball 6DOF motion controllers with buttons (including the Spaceball 5000).
  • The Totally Neat Gadget (TNGs) from MindTel (buttons and analogs).
  • DirectInput enabled joysticks (including force-feedback joysticks) on Windows (see howto). Also, DirectInput enabled rumble packs on Windows.
  • Other joysticks on Windows.
  • PC joysticks running under Linux.
  • Various XKeys devices from P.I. Engineering: the Desktop, Professional, Jog&Shuttle, Joystick, and foot pedal.
  • The Fraunhofer IMK ADBox and Fakespace Cubic Mouse.
  • Global Haptics GeOrb (buttons and analogs).
  • The buttons on several styles of serial mice plugged into a serial port.
  • 5DT glove tracker (analog device with 5 values for the fingers plus pitch and roll). Also, the 5DT16 glove is supported along with a driver to convert the 16 analog values into button presses.
  • Radamec Serial Position Interface video/movie camera tracker (unscaled zoom/focus, untested motion base).
  • B&G systems CerealBox button/dial/slider/joystick controllers plugged into any server-capable machine.
  • NRL ImmersionBox serial driver (support for buttons only).
  • Wanda analog/button device.
  • National Instruments A/D cards.
  • Zaber.com's linear positioning elements.
  • Mouse devices on Linux (when logged in at the console) and Windows.
  • Keyboard on Windows.
  • Win32 sound servers, based on the Miles SDK (obsolete), the AuSIM sound hardware, and Microsoft DirectSound.
  • SGI button and dial boxes (on an SGI or other machines).
  • UNC's hand-held controller (or any device with up to 5 buttons; can be plugged into the parallel port on a Linux or Windows box -- its use is deprecated, use the TNG3 instead).
  • There is a VRPN tracker for the ARToolkit available from Universidad de los Andes.
  • LUDL XY stages through LibUSB.
  • Joystick controllers: Contour ShuttleXpress, Futaba InterLink Elite, Griffin PowerMate, Logitech Extreme 3D Pro, Saitek ST290 Pro, Microsoft SideWinder Precision 2, Microsoft SideWinder, Microsoft Xbox S (raw controller on all O/S), Microsoft Xbox 360 (raw controller on all O/S), Afterglow Ax1 For Xbox 360 (raw controller on all O/S).
  • Biosciences Tools thermal-control system.
  • Haydon-Kerk IDEA drives, linear-motion controllers.

Versions

See the file version_history.html for information about what bugs were fixed and features added in each release. There are major and minor version numbers associated with each release of VRPN. A difference in major version number indicates that the network-level interface (the data on the wire) has changed; versions with different major version numbers will not work together. A difference in minor version numbers indicates a change in device semantics, bug fixes, or any new features that don't affect the network-layer interface. Two systems with different minor version numbers should work together; although perhaps one will not implement all the features requested by the other. After version 3.1, the code should print a warning message and then proceed when there is a difference in minor version numbers.  Since version 5.0, all VRPN objects should be derived from the vrpn_BaseClass object.

Authors

VRPN's base was designed and built by Russell M. Taylor II, who has been the primary maintainer from 1998 through 2013. 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 Infiscape.com 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 LIMSI.fr 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. @bilki on GitHub added SpacePilot support. Lawrence Kwan added vrpn_glview.py, 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.

Other Resources

A paper describing VRPN was presented at the VRST 2001 conference. A reprint of the paper can be found here. A copy of the Powerpoint presentation can be found here. A Powerpoint presentation on the vrpn_Imager can be found here.

Roman Shulakov from the Computational Science section of the Faculty of Science at the University of Amsterdam has developed a VRPN client that acts as a trackd server. This is a VRCO 'trackd' alternative for all versions of CAVELib (through at least 6/7/2001) that enables them to work with all VRPN-supported trackers. See his page at http://staff.science.uva.nl/~rshulako/projects/mytrackd/ for more information (and for his commentary on VRPN). You're welcome to contact him if you are interested in a copy.

Wouter Wognum write a VR Juggler driver for the WiiMote and interfaced it with VRPN. He tells you how at http://www.xs4all.nl/~wognum/wii.

Chris VanderKnyff has made .NET bindings for VRPN. Now client apps can be written in C#, VB.NET, and a number of languages other than C++ and Java. More information is available here at the project web site:
http://wwwx.cs.unc.edu/~chrisv/vrpnnet.

Kyle Johnsen from the University of Florida made a VRPN server for the motion sensor in the Emagin Z800 visor. He also made a set of camera-control applications that let you start capture from a number of cameras on multiple computers at the same time. His code is available from http://www.cise.ufl.edu/~kjohnsen/software.html.

VR Geeks has created an online tutorial for how to get started with VRPN. They have another one for vrpn servers.

Evan A. Suma from ICT described their middleware called the Flexible Action and Articulated Skeleton Toolkit (FAAST), which is free software to facilitate use of these depth sensors with VR applications and games. It includes a VRPN server to send data from a Microsoft Kinect, including the pose for each joint of a user.

There is a VRPN tracker for the ARToolkit available from Universidad de los Andes. Someone made a YouTube video showing it being used to control the Blender game engine.

Andrew Montag and Kevin Godby have created an Android application that displays data graphically. You can find it here.

Scott Redig at the University of Minnesota Duluth SIVE Lab wrote a VRPN Web app to let you control an application with VRPN from HTML5. He reports: "It uses a simple json config file to define what controls you want to have. When the executable is run it serves both the webserver (so computers, tablets, smartphones, etc. can connect), and the vrpn server so your application can connect. I was able to set up the config in a few minutes for a project, and provided control to my application from both my iPhone and a nearby computer running Chrome. It currently only has been built on windows, however it should be able to be built on other operating systems. The github project along with instructions on how to use it can be found at https://github.com/Laremere/vrpn-webapp and downloadable binaries can be found at https://github.com/Laremere/vrpn-webapp/releases."

Alexander Morosow ported the Android VRPN server from the Comp523 class to work in native Java. It is available at https://github.com/worosom/java_vrpn.

Use in Other Packages and Locations

VRPN was used as the tracker and button library driving a "Monticello Through the Window" exhibit at the New Orleans Museum of Art from April 12 - August 31, 2003. Two systems set up side by side ran for 142 days, serving 110,000 visitors, without any software failures.

VRPN forms the device-independent layer for the Panda3D Graphics Engine, which is an open-source system developed by Mike Goslin and Mark Mine at Disney's VR Studio.

The NIH National Research Resource for Macromolecular Modeling and Bioinformatics at the Beckman Institute for Advanced Science and Technology at the University of Illinois distributes a Visual Molecular Dyamics package called VMD. This package uses VRPN to connect to Phantoms and other VR peripherals for interaction with the molecular dynamics simulations. The following versions of VRPN/VMD have been released by them: (4.0/1.4) (4.06/1.5) (5.01/1.6) (5.01/1.6.1) (6.0/1.7).

Virtools has incorporated VRPN into their Virtools VR Pack, which is a commercial immersive VR interface for CAVEs, projection systems, and head-mounted displays.

Benjamin Schaeffer has constructed a VRPN bridge that enables the use of VRPN devices with their Syzygy Toolkit for virtual reality on pc clusters. He says, "My testimonial is that vrpn is good stuff and easy to work with! Thanks again!"

Sascha Scholz has provided a hook to link VRPN to the AVANGO VR Framework produced by the Virtual Environments Group of the Fraunhofer Institute for Media Communication, and wrote the driver for the Fraunhofer IMK AD-Box device and the Fakespace Cubic Mouse.

Mike Weiblen announced osgVRPN, which is a set of classes to integrate OpenSceneGraph with VRPN. It was developed with OSG 0.9.6-2 and VRPN 06.04 and tested with WinXP+VS.net2002 and Debian Linux+gcc3.2.3. He says: "osgVRPN is in an early stage of development, but seems functional enough to share." The one VRPN device abstraction currently supported is the "tracker": osgVRPN::TrackerManipulator allows a camera to be positioned using a tracker and osgVRPN::TrackerTransform allows a scenegraph Node to be positioned using a tracker. See http://mew.cx/osg/

WorldViz has included VRPN support into their Virtual Reality Toolkit Vizard.

Gerhard Reitmayr announced an integration of VRPN with the Studierstube OpenTracker library. This has been a goal since papers of VRPN and OpenTracker were presented back-to-back at VRST 2001! OpenTracker is a C++ library for manipulating tracking data. It features a data flow concept, where a graph of transformation nodes operate on the data stream from tracking devices. It also includes a range of device drivers and network support among other things. Using this port, an OpenTracker program can receive data from a VRPN server, but also act as a VRPN server as well. Therefore you could use an OpenTracker process to filter and transform VPRN data and provide the result to other clients. Currently only the tracker and button devices are supported, both as clients and servers. It was tested with VRPN version 6.06_beta2 on Windows with VC++ 6.0, but it should also work under Linux.

Blair MacIntyre reports that they make heavy use of VRPN in DART, their Director-based AR system.

Version 07.09 has support for the inertialmouseand event mouseinterfaces from Bauhaus University Weimar, submitted by Jan Springer.

Kurt Achatz of A.R.T. sent in an updated driver for their newest A.R.T. DTrack trackers.

MotionNode contributed the driver for their inertial tracker.

NaturalPoint distributes a VRPN driver for their NaturalPoint OptiTrack Rigid Body Toolkit. Douglas Beck, their lead programmer reports "I'm a big VRPN fan and have full support for it in our upcoming Tracking Tools product. Of all the streaming engines that are integrated, I think that the VRPN streamer is the best. I've tested it up to 1000 FPS with the application and it's light-weight and works great."

VRPN support is provided within VR Juggler.

Vicon's Vicon Tracker software includes a VRPN server interface.

VR Geeks are using VRPN as the device interface for their VR kit.

The XVR library developed by VRmedia includes support for VRPN devices.

Dassault Systèmes' 3DVIA Studio is now integrating a VRPN client (and shipping a win32 compiled driver). The immersive features, including VRPN support and stereo vision as a standard feature are in the Immersive Virtuality feature.

The SOFA open 3D simulation framework now includes a SofaVRPNClient.

CEI's EnSight software supports VRPN for its Virtual Reality modes.

In December 2013, Andre Heydt, Emiliano Pastorelli, and Heiko Herrmann worked with the Technical Universiy of Berlin to integrate VRPN into their 3D Java-based jReality mathematic-surfaces software system to drive their CAVE.

There is a publically-maintained CryVR plugin for the CryEngine3 that includes VRPN support.