VRPN (Virtual-Reality Peripheral Network) es una interfaz de red independiente del dispositivo para acceder a periféricos de realidad virtual en aplicaciones de RV. Fue diseñada e implementada originalmente por Russell M. Taylor II en el Departamento de Ciencias de la Computación de la Universidad de Carolina del Norte en Chapel Hill . Sensics [ 1 ] mantuvo y brindó soporte a VRPN mientras estuvo en funcionamiento. Actualmente, ReliaSolve se encarga de su mantenimiento y desarrollo en colaboración con una activa comunidad de colaboradores. Se describe con mayor detalle en vrpn.net y en VRPN-VRST [ 2 ] .
El propósito de VRPN es proporcionar una interfaz unificada para dispositivos de entrada, como sensores de movimiento o controladores de joystick . También proporciona lo siguiente:
- Marcado de tiempo de los datos
- Acceso simultáneo múltiple a dispositivos periféricos
- Reconexión automática de servidores que han fallado
- Almacenamiento y reproducción de sesiones
El sistema VRPN consta de interfaces de programación tanto para la aplicación cliente como para los controladores de hardware, así como una aplicación de servidor que se comunica con los dispositivos de hardware. Las interfaces cliente están escritas en C++ , pero se han integrado en C#, Python y Java.
Una aplicación típica de VRPN consiste en codificar y enviar datos de captura de movimiento de 6 grados de libertad a través de la red en tiempo real.
Redes de contactos
Un cliente VRPN puede establecer una conexión con un servidor VRPN (el dispositivo que proporciona los datos) de dos maneras: mediante TCP (fiable, pero menos eficiente) o mediante UDP (no fiable, pero con menor latencia y más eficiente). Generalmente, se prefiere el modo "no fiable" cuando la latencia es crítica.
La secuencia de inicialización de conexión "no confiable" utiliza los protocolos TCP y UDP. Funciona de la siguiente manera: [ 3 ]
- El cliente abre un socket TCP para escuchar en un puerto arbitrario;
- El cliente envía el número de puerto de este socket, junto con el nombre de su propia máquina, en un datagrama UDP dirigido a un puerto conocido del servidor VRPN (el predeterminado es 3883);
- el servidor abre una conexión TCP con el cliente, al número de puerto comunicado en el paso 2;
- Si se establece la conexión TCP, cada dispositivo le indica al otro la versión de VRPN compatible;
- Si las versiones no son compatibles, se interrumpe la conexión;
- De lo contrario, cada dispositivo comienza a escuchar en un nuevo puerto UDP (diferente de los utilizados anteriormente) y envía el número de puerto al otro dispositivo, utilizando la conexión TCP creada previamente;
- A partir de ahora, todos los datos se envían a través de los dos puertos UDP abiertos en el paso 6.
Las ventajas de este enfoque son: tiempo de conexión rápido y detección rápida de fallos durante la conexión.
Sin embargo, el protocolo de inicialización de conexión "poco fiable" no respeta el estricto principio de diseño de protocolos por capas, ya que la carga útil VRPN a nivel de aplicación filtra información sobre niveles inferiores de la pila de red, concretamente los nombres de las máquinas y los números de puerto TCP/UDP. Debido a esta decisión de diseño, es imposible establecer una conexión VRPN entre dos dispositivos conectados a través de un NAT : el enrutador tendría que traducir no solo la información de la capa 3 en las cabeceras de los paquetes, sino también las referencias a direcciones IP y números de puerto dentro de la carga útil VRPN.
Para solucionar este problema, VRPN ofrece [ 4 ] un segundo modo de inicialización de conexión "confiable" y exclusivamente TCP, que consiste en una interacción estándar entre servidor y cliente TCP : el servidor VRPN escucha en un puerto TCP conocido y el cliente inicia la conexión. En este modo, todos los datos se envían a través de la misma conexión TCP y no se requiere comunicación UDP.
Dispositivos compatibles
Rastreadores (listados alfabéticamente)
- Sistema de seguimiento de área amplia 3rdTech HiBall-3000 (anteriormente conocido como sistema de seguimiento de techo UNC).
- Sistema de seguimiento posicional antilatencia.
- Sistemas de seguimiento óptico ART, incluidos Flystick2 y Flystick3. El código receptor forma parte de la distribución estándar del código fuente.
- Dispositivos analógicos utilizados como rastreadores (Magellan, CerealBox con joysticks incorporados, Radamec SPI, ratón, ...).
- Rastreador ARToolkit VRPN disponible en la Universidad de los Andes.
- El sistema Ascension Flock-of-birds puede funcionar a través de un único puerto serie o con cada sensor conectado a su propio puerto serie. Este controlador (y los demás controladores del rastreador) reinicia el rastreador en caso de un ciclo de encendido/apagado, una desconexión del puerto serie u otros fallos. El uso de este controlador en un sistema Nest of Birds dañará el circuito de control del transmisor.
- Dispositivos con botones utilizados como teletransportadores o rastreadores (Global Haptics GeoOrb, ...).
- Acelerómetro Crossbow RGA300 que utiliza una interfaz serial.
- Dispositivos GameTrak.
- Micrografía de inmersión.
- Inertialmouse y Event Mouse de la Universidad Bauhaus de Weimar.
- InterSense IS-600 e IS-900 (utilizando la interfaz Fastrak aumentada en cualquier arquitectura).
- Ratón 3D de Logitech.
- Microsoft Kinect (dos servidores VRPN diferentes disponibles).
- Motion Analysis Corporation (el servidor VRPN está integrado en el servidor del proveedor)
- Dispositivo de seguimiento inercial MotionNode.
- Sistema de seguimiento óptico NDI Polaris.
- Dispositivo de retroalimentación de fuerza Novint .
- OptiTrack Motive (anteriormente NaturalPoint OptiTrack Tracking Tools) (el servidor VRPN está integrado en el servidor del proveedor).
- Rastreador DynaSight de Origin Systems (con reflector pasivo). Este controlador también es compatible con el rastreador anterior de la pantalla estéreo SeeReal D4D.
- Kit de desarrollo OSVR Hacker
- Otros rastreadores InterSense (que utilizan la biblioteca nativa de InterSense, incluso los basados en USB); actualmente hay un debate en la lista de correo de VRPN sobre si la información de posición y orientación se devuelve de forma consistente al utilizar esta interfaz.
- Sistema de seguimiento óptico PS-Tech .
- Sistema de seguimiento PhaseSpace.
- PNI SpacePoint.
- El rastreador Polhemus Fastrak y los rastreadores 3Space funcionan en varias arquitecturas, y los rastreadores Liberty y LibertyHS funcionan al menos en Linux. El rastreador Patriot es compatible mediante el controlador Liberty. G4 Powertrack.
- Mando de juegos Razer Hydra .
- Dispositivo de retroalimentación de fuerza PHANToM de Sensable Technologies.
- Rastreador Sensics dSight .
- Rastreador Sensics zSight.
- Dispositivo GPS con puerto serie.
- Vicon (el servidor VRPN está integrado en el servidor del proveedor).
- Rastreador ocular Viewpoint.
- Sistema de seguimiento magnético Wintracker III de Virtual Realities Ltd.
- WorldViz Precision Position Tracker PPT 1.2.
- Sensor 3Space de Yost Labs (y sensores 3Space inalámbricos).
- Plataforma de hardware y software zSpace (servidor VRPN integrado en el servidor del proveedor).
Otros dispositivos (enumerados alfabéticamente)
- 3DConnexion SpaceNavigator, SpaceExplorer, Spacemouse Pro, Navigator para portátiles, dispositivos SpaceTraveler y SpaceMouseWireless (botones y control analógico diferencial de 6 grados de libertad).
- El guante 5DT es un dispositivo analógico con cinco valores para los dedos, además de inclinación y balanceo. También es compatible con el guante 5DT16, que incluye un controlador para convertir los 16 valores analógicos en pulsaciones de botón.
- Los controladores CerealBox de B&G Systems se pueden conectar a cualquier máquina con capacidad de servidor.
- Sistema de control térmico de Biosciences Tools.
- CH Products Fighterstick
- Joysticks compatibles con DirectInput (incluidos los joysticks con retroalimentación háptica) en Windows (ver tutorial). También, paquetes de vibración compatibles con DirectInput en Windows.
- Batería electrónica USB Dream Cheeky.
- Dispositivos de hologramas de Euclideon Holographics (mesa de hologramas, sala de hologramas, pared de hologramas).
- Fraunhofer IMK ADBox y Fakespace Cubic Mouse.
- Sistema háptico global GeOrb (botones y controles analógicos).
- Variadores Haydon-Kerk IDEA, controladores de movimiento lineal.
- Dispositivos Freespace de Hillcrest Labs .
- Controladores de joystick: Contour ShuttleXpress, Futaba InterLink Elite, Griffin PowerMate, Logitech Extreme 3D Pro, Saitek ST290 Pro, Microsoft SideWinder Precision 2, Microsoft SideWinder, Microsoft Xbox S (controlador sin formato en todos los sistemas operativos), Microsoft Xbox 360 (controlador sin formato en todos los sistemas operativos), Afterglow Ax1 para Xbox 360 (controlador sin formato en todos los sistemas operativos).
- Teclado en Windows.
- Controladores de movimiento Logitech Magellan y Spaceball de 6 grados de libertad con botones (incluido el Spaceball 5000).
- Etapas LUDL XY a través de LibUSB.
- Dispositivos de ratón en Linux (cuando se inicia sesión en la consola) y Windows.
- Tarjetas A/D de National Instruments .
- Mando a distancia de Nintendo Wii (que también funciona como rastreador).
- Controlador serie NRL ImmersionBox (solo compatible con botones).
- Otros joysticks en Windows.
- Joysticks para PC que funcionan bajo Linux.
- Rastreador de cámara de vídeo/cine con interfaz de posición serie Radamec (zoom/enfoque sin escalar, base de movimiento sin probar).
- Retrolink GameCube.
- Ratones serie: Los botones de varios tipos de ratones serie se conectan a un puerto serie.
- Botones y diales SGI (en máquinas SGI u otras).
- Dispositivos totalmente geniales (TNG, por sus siglas en inglés) de MindTel (botones y controles analógicos).
- Mando de juegos de Xbox 360.
- El controlador portátil de UNC (o cualquier dispositivo con hasta 5 botones; se puede conectar al puerto paralelo de un equipo Linux o Windows; su uso está obsoleto, utilice el TNG3 en su lugar).
- Dispositivo analógico/de botones Wanda.
- Servidores de sonido Win32, basados en el SDK de Miles (obsoleto), el hardware de sonido AuSIM y Microsoft DirectSound.
- Dispositivos XKeys de PI Engineering: Desktop, Professional, Jog&Shuttle, Joystick y pedal.
- Elementos de posicionamiento lineal de Zaber.com.
Referencias
- ↑ Sensics http://sensics.com
- ↑ Taylor, Russell (15-17 de noviembre de 2001). "VRPN" . Actas del simposio de la ACM sobre software y tecnología de realidad virtual . págs. 55-61 . doi : 10.1145/505008.505019 . ISBN 9781581134278. S2CID 1487053 .
- ↑ vrpn: Uso de vrpn_Connection - Repositorio oficial de GitHub , Red periférica de realidad virtual, 19/02/2018 , consultado el 20/02/2018
- ↑ vrpn: Solución de problemas de VRPN - Repositorio oficial de GitHub , Red periférica de realidad virtual, 19/02/2018 , consultado el 20/02/2018
Enlaces externos
- Wiki de VRPN en GitHub
- Sensics
- Departamento de Ciencias de la Computación de la UNC
- Página principal de Russell M. Taylor II
- Redes informáticas