VRPN - VRPN
| Desenvolvedor (s) | ReliaSolve |
|---|---|
| Escrito em | C ++ , Python , Java |
| Modelo | VR Middleware |
| Local na rede Internet | github |
VRPN (Rede Periférica de Realidade Virtual) é uma interface baseada em rede independente de dispositivo para acessar periféricos de realidade virtual em aplicativos de RV. Ele foi originalmente projetado e implementado por Russell M. Taylor II no Departamento de Ciência da Computação da Universidade da Carolina do Norte em Chapel Hill . A VRPN foi mantida e apoiada pela Sensics enquanto funcionava. Atualmente é mantido pela ReliaSolve e desenvolvido em colaboração com uma comunidade produtiva de colaboradores. Ele é descrito mais detalhadamente em vrpn.org e em VRPN-VRST .
O objetivo do VRPN é fornecer uma interface unificada para dispositivos de entrada, como rastreadores de movimento ou controladores de joystick . Ele também fornece o seguinte:
- Registro de data e hora de dados
- Múltiplos acessos simultâneos a dispositivos periféricos
- Reconexão automática de servidores com falha
- Armazenamento e reprodução de sessões
O sistema VRPN consiste em interfaces de programação para o aplicativo cliente e os drivers de hardware e um aplicativo de servidor que se comunica com os dispositivos de hardware. As interfaces do cliente são escritas em C ++, mas foram agrupadas em C #, Python e Java.
Uma aplicação típica de VRPN é codificar e enviar dados de captura de movimento 6DoF pela rede em tempo real.
Networking
Um cliente VRPN pode estabelecer uma conexão com um servidor VRPN (o dispositivo que fornece os dados) de duas maneiras: por meio de TCP (confiável, mas menos eficiente) ou por meio de UDP (não confiável, mas de baixa latência e mais eficiente). O modo "não confiável" geralmente é preferido quando a latência é crítica.
A seqüência de inicialização de conexão "não confiável" usa os protocolos TCP e UDP. Funciona da seguinte maneira:
- o cliente abre um soquete TCP para escutar em uma porta arbitrária;
- o cliente envia o número da porta deste socket, junto com o nome da própria máquina, em um datagrama UDP direcionado para uma porta bem conhecida do servidor VRPN (o padrão é 3883);
- o servidor abre uma conexão TCP com o cliente, para o número da porta comunicado na etapa 2;
- se a conexão TCP for estabelecida, cada dispositivo informa ao outro a versão VRPN suportada;
- se as versões não forem compatíveis, a conexão será interrompida;
- caso contrário, cada dispositivo começa a escutar em uma nova porta UDP (diferente das usadas antes) e envia o número da porta para o outro dispositivo, usando a conexão TCP criada anteriormente;
- a partir de agora, todos os dados são enviados pelas duas portas UDP abertas na etapa 6.
As vantagens dessa abordagem são: tempo de conexão rápido e detecção rápida de falha durante a conexão.
No entanto, o protocolo de inicialização de conexão "não confiável" não respeita o princípio de design de protocolo de estratificação estrito , pois a carga útil VRPN no nível do aplicativo vaza informações sobre os níveis mais baixos na pilha de rede, ou seja, os nomes das máquinas e os números das portas TCP / UDP. Devido a essa escolha de design, é impossível estabelecer uma conexão VRPN entre dois dispositivos conectados por meio de um NAT : o roteador precisaria traduzir não apenas as informações da camada 3 nos cabeçalhos do pacote, mas também as referências aos endereços IP e números de porta dentro da carga útil VRPN.
Para lidar com este problema, VRPN oferece um segundo modo de inicialização de conexão "confiável", somente TCP, que é uma interação cliente-servidor TCP padrão : o servidor VRPN escuta em uma porta TCP conhecida e o cliente inicia uma conexão. Neste modo, todos os dados são enviados na mesma conexão TCP e nenhuma comunicação UDP é necessária.
Dispositivos suportados
Rastreadores (listados em ordem alfabética)
- 3rdTech HiBall-3000 Wide Area Tracker (anteriormente o rastreador de teto UNC).
- [1] Sistema de rastreamento posicional anti-latência.
- Sistemas de rastreamento óptico ART , incluindo Flystick2 e Flystick3. O código de recebimento faz parte da distribuição de origem padrão.
- Dispositivos analógicos usados como rastreadores (Magellan, CerealBox com joysticks acoplados, Radamec SPI, Mouse, ...).
- Rastreador ARToolkit VRPN disponível na Universidad de los Andes.
- Bando de pássaros da Ascensão (passando por uma porta serial ou com cada sensor conectado à sua própria porta serial). Este driver (e os outros drivers do rastreador) redefine o rastreador em caso de ciclo de energia, desconexão serial ou outros problemas. _Não use este driver em um Nest of Birds_ porque ele queimará o circuito de acionamento do transmissor (veja o e-mail de Kyle Smith).
- Dispositivos de botão usados como teletransportadores ou rastreadores (Global Haptics GeoOrb, ...).
- Acelerômetro Crossbow RGA300 usando uma interface serial.
- Dispositivos GameTrak.
- Microscribe de imersão .
- Mouse inercial e mouse de evento da Bauhaus University Weimar.
- InterSense IS-600 e IS-900 (usando interface Fastrak aumentada em qualquer arquitetura).
- Mouse Logitech 3D.
- Microsoft Kinect (dois servidores VRPN diferentes disponíveis em https://github.com/vancegroup/KVR e http://people.ict.usc.edu/~suma/faast ).
- Motion Analysis Corporation (o servidor VRPN é integrado ao servidor do vendedor)
- Dispositivo de rastreamento inercial MotionNode .
- Sistema de rastreamento óptico NDI Polaris .
- Dispositivo de feedback de força Novint .
- OptiTrack Motive (era NaturalPoint OptiTrack Tracking Tools) (o servidor VRPN é integrado ao servidor do fornecedor).
- Rastreador DynaSight da Origin Systems (com refletor passivo). Este driver também suporta o rastreador mais antigo no Display estéreo SeeReal D4D.
- OSVR Hacker Developer Kit
- Outros rastreadores InterSense (usando a biblioteca nativa InterSense, mesmo aquelas baseadas em USB); atualmente há uma discussão na lista de e-mail VRPN sobre se as informações de posição e orientação são retornadas de forma consistente ao usar esta interface.
- Sistema de rastreamento óptico PS-Tech .
- Sistema de rastreamento PhaseSpace .
- PNI SpacePoint .
- Rastreador Polhemus Fastrak e rastreadores 3Space em várias arquiteturas, rastreador Liberty e LibertyHS em pelo menos Linux. O rastreador Patriot é compatível com o driver Liberty. G4 Powertrack.
- Controlador de jogo Razer Hydra .
- Dispositivo de feedback de força PHANToM da Sensable Technologies .
- Rastreador Sensics dSight.
- Rastreador Sensics zSight .
- Dispositivo GPS de porta serial.
- Vicon (o servidor VRPN é integrado ao servidor do fornecedor).
- Rastreador Viewpoint Eye.
- Sistema de rastreamento magnético Wintracker III da Virtual Realities Ltd.
- WorldViz Precision Position Tracker PPT 1.2.
- Yost Labs 3Space Sensor (e sensores sem fio 3Space).
- Plataforma de hardware e software interativa imersiva zSpace (servidor VRPN integrado ao servidor do fornecedor).
Outros dispositivos (listados em ordem alfabética)
- 3DConnexion SpaceNavigator, SpaceExplorer, Spacemouse Pro, Navigator para Notebooks, dispositivos SpaceTraveler e SpaceMouseWireless (botões e analógico diferencial 6DOF).
- Rastreador de luva 5DT (dispositivo analógico com 5 valores para os dedos mais pitch and roll). Além disso, a luva 5DT16 é suportada junto com um driver para converter os 16 valores analógicos em pressionamentos de botão.
- Sistemas da B&G Controladores de botão / dial / slider / joystick CerealBox conectados a qualquer máquina com capacidade de servidor.
- Sistema de controle térmico Biosciences Tools.
- CH Produtos Fighterstick
- Joysticks habilitados para DirectInput (incluindo joysticks de feedback de força) no Windows (veja como fazer). Além disso, o DirectInput habilitou rumble packs no Windows.
- Kit de bateria Dream Cheeky USB.
- Dispositivos de holograma Euclideon Holographics (mesa de holograma, sala de holograma, parede de holograma).
- Fraunhofer IMK ADBox e Fakespace Cubic Mouse.
- Global Haptics GeOrb (botões e analógicos).
- Drives Haydon-Kerk IDEA, controladores de movimento linear.
- Dispositivos Freespace da 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 bruto em todos os O / S), Microsoft Xbox 360 (controlador bruto ativado todos O / S), Afterglow Ax1 para Xbox 360 (controlador bruto em todos os O / S).
- Teclado no Windows.
- Controladores de movimento Logitech Magellan e Spaceball 6DOF com botões (incluindo o Spaceball 5000).
- Estágios LUDL XY por meio de LibUSB.
- Dispositivos de mouse no Linux (quando conectado no console) e Windows.
- Cartões A / D da National Instruments .
- Nintendo Wii Remote (também atuando como rastreador).
- Driver serial NRL ImmersionBox (suporte apenas para botões).
- Outros joysticks no Windows.
- Joysticks de PC rodando em Linux.
- Rastreador de vídeo / câmera de vídeo Radamec Serial Position Interface (zoom / foco fora de escala, base de movimento não testada).
- Retrolink GameCube.
- Mouse serial: os botões em vários estilos de mouse serial conectado a uma porta serial.
- Botão SGI e caixas de discagem (em um SGI ou outras máquinas).
- Totally Neat Gadget (TNGs) da MindTel (botões e analógicos).
- Controlador de jogo Xbox 360.
- O controlador portátil do UNC (ou qualquer dispositivo com até 5 botões; pode ser conectado à porta paralela em uma caixa Linux ou Windows - seu uso está obsoleto, use o TNG3 em vez).
- Dispositivo analógico / botão Wanda.
- Servidores de som Win32, baseados no Miles SDK (obsoleto), o hardware de som AuSIM e Microsoft DirectSound.
- Dispositivos XKeys da PI Engineering : Desktop, Professional, Jog & Shuttle, Joystick e pedal.
- Elementos de posicionamento linear de Zaber.com .
Referências
- ^ Sensics http://sensics.com
- ^ Taylor, Russell (15–17 de novembro de 2001). "VRPN: um sistema periférico de VR independente de dispositivo e transparente em rede" . VRST '01 Proceedings of the ACM Symposium on Virtual Reality Software and Technology : 55–61. doi : 10.1145 / 505008.505019 .
- ^ vrpn: Using vrpn_Connection - Official GitHub Repository , Virtual Reality Peripheral Network, 19/02/2018 , recuperado em 20/02/2018
- ^ vrpn: Troubleshooting VRPN - Official GitHub Repository , Virtual Reality Peripheral Network, 19/02/2018 , recuperado em 20/02/2018