VRPN

Last updated
Virtual-Reality Peripheral Network
Developer(s) ReliaSolve
Written in C++, Python, Java
Type VR Middleware
Website github.com/vrpn/vrpn/wiki

VRPN (Virtual-Reality Peripheral Network) is a device-independent, network-based interface for accessing virtual reality peripherals in VR applications. It was originally designed and implemented by Russell M. Taylor II at the Department of Computer Science of the University of North Carolina at Chapel Hill. VRPN was maintained and supported by Sensics [1] while it was business. It is currently maintained by ReliaSolve and developed in collaboration with a productive community of contributors. It is described more fully at vrpn.net and in VRPN-VRST. [2]

Contents

The purpose of VRPN is to provide a unified interface to input devices, like motion trackers or joystick controllers. It also provides the following:

The VRPN system consists of programming interfaces for both the client application and the hardware drivers and a server application that communicates with the hardware devices. The client interfaces are written in C++ but have been wrapped in C#, Python and Java.

A typical application of VRPN is to encode and send 6DoF motion capture data through the network in real time.

Networking

A VRPN client can establish a connection with a VRPN server (the device providing the data) in two ways: either over TCP (reliable, but less efficient), or over UDP (unreliable, but lower-latency and more efficient). The "unreliable" mode is generally preferred when the latency is critical.

The "unreliable" connection initialization sequence makes use of both the TCP and UDP protocols. It works as follows: [3]

  1. the client opens a TCP socket for listening on an arbitrary port;
  2. the client sends the port number of this socket, along with its own machine name, in a UDP datagram directed to a well known port of the VRPN server (the default is 3883);
  3. the server opens a TCP connection with the client, to the port number communicated at step 2;
  4. if the TCP connection is established, each device tells to the other the supported VRPN version;
  5. if the versions are not compatible, the connection is dropped;
  6. otherwise, each device begins to listen on a new UDP port (different from those used before) and sends the port number to the other device, by using the previously created TCP connection;
  7. from now on, all the data is sent over the two UDP ports opened at step 6.

The advantages of this approach are: fast connection time and fast failure detection during connection.

However, the "unreliable" connection initialization protocol does not honor the strict layering protocol design principle, as the application-level VRPN payload leaks information about lower levels in the network stack, namely the machine names and TCP/UDP port numbers. Because of this design choice, it is impossible to establish a VRPN connection between two devices connected through a NAT: the router would need to translate not only the layer-3 information in the packet headers, but also the references to IP addresses and port numbers inside the VRPN payload.

To deal with this problem, VRPN offers [4] a second "reliable", TCP-only connection initialization mode, which is a standard TCP server-client interaction: the VRPN server listens on a well-known TCP port and the client initiates a connection. In this mode, all the data is sent on the same TCP connection, and no UDP communication is required.

Supported Devices

Trackers (listed alphabetically)

Other devices (listed alphabetically)

Related Research Articles

<span class="mw-page-title-main">Computer mouse</span> Pointing device used to control a computer

A computer mouse is a hand-held pointing device that detects two-dimensional motion relative to a surface. This motion is typically translated into the motion of the pointer on a display, which allows a smooth control of the graphical user interface of a computer.

<span class="mw-page-title-main">Pointing device</span> Human interface device for computers

A pointing device is a human interface device that allows a user to input spatial data to a computer. CAD systems and graphical user interfaces (GUI) allow the user to control and provide data to the computer using physical gestures by moving a hand-held mouse or similar device across the surface of the physical desktop and activating switches on the mouse. Movements of the pointing device are echoed on the screen by movements of the pointer and other visual changes. Common gestures are point and click and drag and drop.

<span class="mw-page-title-main">Trackball</span> Pointing device

A trackball is a pointing device consisting of a ball held by a socket containing sensors to detect a rotation of the ball about two axes—like an upside-down ball mouse with an exposed protruding ball. Users roll the ball to position the on-screen pointer, using their thumb, fingers, or the palm of the hand, while using the fingertips to press the buttons.

<span class="mw-page-title-main">Game controller</span> Device used with games or entertainment systems

A game controller, gaming controller, or simply controller, is an input device or input/output device used with video games or entertainment systems to provide input to a video game. Input devices that have been classified as game controllers include keyboards, mouses, gamepads, and joysticks, as well as special purpose devices, such as steering wheels for driving games and light guns for shooting games. Controllers designs have evolved to include directional pads, multiple buttons, analog sticks, joysticks, motion detection, touch screens and a plethora of other features.

<span class="mw-page-title-main">Microsoft SideWinder</span> Digital video game controllers

Microsoft SideWinder was the general name given to the family of digital game controllers developed by Microsoft for PCs. The line was first launched in 1995. Although intended only for use with Microsoft Windows, Microsoft SideWinder game controllers can also be used with macOS, Mac OS 9 with third-party software, and Linux.

<span class="mw-page-title-main">Game port</span> Computer device port

The game port is a device port that was found on IBM PC compatible and other computer systems throughout the 1980s and 1990s. It was the traditional connector for joystick input, and occasionally MIDI devices, until made obsolete by USB in the late 1990s.

<span class="mw-page-title-main">Touchpad</span> Type of pointing device

A touchpad or trackpad is a type of pointing device. Its largest component is a tactile sensor: an electronic device with a flat surface, that detects the motion and position of a user's fingers, and translates them to a position on a screen, to control a pointer in a graphical user interface. Touchpads are common on laptop computers, contrasted with desktop computers, where mice are more prevalent. Trackpads are sometimes used on desktops, where desk space is scarce. Because trackpads can be made small, they can be found on personal digital assistants (PDAs) and some portable media players. Wireless touchpads are also available, as detached accessories.

A human interface device or HID is a type of computer device usually used by humans that takes input from humans and gives output to humans.

<span class="mw-page-title-main">Gamepad</span> Type of video game controller

A gamepad is a type of video game controller held in two hands, where the fingers are used to provide input. They are typically the main input device for video game consoles.

<span class="mw-page-title-main">Scroll wheel</span> Component of a computer mouse used for scrolling

A scroll wheel is a wheel used for scrolling. The term usually refers to such wheels found on computer mice. It is often made of hard plastic with a rubbery surface, centred around an internal rotary encoder. It is usually located between the left and right mouse buttons and is positioned perpendicular to the mouse surface. Sometimes the wheel can be pressed left and right, which is actually just two additional macros buttons.

<span class="mw-page-title-main">QEMU</span> Free virtualization and emulation software

QEMU is a free and open-source emulator. It emulates a computer's processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. It can interoperate with Kernel-based Virtual Machine (KVM) to run virtual machines at near-native speed. QEMU can also do emulation for user-level processes, allowing applications compiled for one architecture to run on another.

<span class="mw-page-title-main">Terminal server</span> Device that interfaces serial hosts to a network

A terminal server connects devices with a serial port to a local area network (LAN). Products marketed as terminal servers can be very simple devices that do not offer any security functionality, such as data encryption and user authentication. The primary application scenario is to enable serial devices to access network server applications, or vice versa, where security of the data on the LAN is not generally an issue. There are also many terminal servers on the market that have highly advanced security functionality to ensure that only qualified personnel can access various servers and that any data that is transmitted across the LAN, or over the Internet, is encrypted. Usually, companies that need a terminal server with these advanced functions want to remotely control, monitor, diagnose and troubleshoot equipment over a telecommunications network.

<span class="mw-page-title-main">Saitek X52</span>

The Saitek X52 is an advanced HOTAS Joystick/Throttle combination from Saitek released in 2004.

Various accessories for the PlayStation 3 video game console have been produced by Sony and third-party companies. These include controllers, audio and video input devices like microphones, video cameras, and cables for better sound and picture quality.

<span class="mw-page-title-main">SpaceOrb 360</span> Computer input device

The SpaceOrb 360 is a 6DOF computer input device that is designed to be operated with two hands. Each of the 6 axes have 10-bit precision each when measuring the amount of force or torque applied. It has two right-index-finger buttons and four right-thumb buttons. It interfaces with a computer through an RS-232 serial port using a custom binary protocol. Drivers for the device exist for Mac OS, Microsoft Windows and Linux. Logitech had similar 6DOF devices during the same time period called the Cyberman and Cyberman II.

Remote Desktop Services (RDS), known as Terminal Services in Windows Server 2008 and earlier, is one of the components of Microsoft Windows that allow a user to initiate and control an interactive session on a remote computer or virtual machine over a network connection. RDS was first released in 1998 as Terminal Server in Windows NT 4.0 Terminal Server Edition, a stand-alone edition of Windows NT 4.0 Server that allowed users to log in remotely. Starting with Windows 2000, it was integrated under the name of Terminal Services as an optional component in the server editions of the Windows NT family of operating systems, receiving updates and improvements with each version of Windows. Terminal Services were then renamed to Remote Desktop Services with Windows Server 2008 R2 in 2009.

<span class="mw-page-title-main">Input device</span> Device that provides data and signals to a computer

In computing, an input device is a piece of equipment used to provide data and control signals to an information processing system, such as a computer or information appliance. Examples of input devices include keyboards, mouse, scanners, cameras, joysticks, and microphones.

Various accessories for the PlayStation 2 video game console have been produced by Sony, as well as third parties. These include controllers, audio and video input devices like microphones and video cameras, and cables for better sound and picture quality.

<span class="mw-page-title-main">Atari joystick port</span> Computer port used for gaming controllers

The Atari joystick port is a computer port used to connect various gaming controllers to game console and home computer systems in the 1970s to the 1990s. It was originally introduced on the Atari 2600 in 1977 and then used on the Atari 400 and 800 in 1979. It went cross-platform with the VIC-20 in 1981, and was then used on many following machines from both companies, as well as a growing list of 3rd party machines like the MSX platform and various Sega consoles.

<span class="mw-page-title-main">Xbox Adaptive Controller</span> Video game controller designed by Microsoft for people with disabilities

The Xbox Adaptive Controller (XAC) is a video game controller designed by Microsoft for Windows PCs and the Xbox One and Xbox Series X/S video game consoles. The controller was designed for people with disabilities to help make user input for video games more accessible.

References

  1. Sensics http://sensics.com
  2. Taylor, Russell (November 15–17, 2001). "VRPN". Proceedings of the ACM symposium on Virtual reality software and technology. pp. 55–61. doi:10.1145/505008.505019. ISBN   9781581134278. S2CID   1487053.
  3. vrpn: Using vrpn_Connection - Official GitHub Repository, Virtual Reality Peripheral Network, 2018-02-19, retrieved 2018-02-20
  4. vrpn: Troubleshooting VRPN - Official GitHub Repository, Virtual Reality Peripheral Network, 2018-02-19, retrieved 2018-02-20