Aller au contenu

Travailler avec VRPN

Une section documentaire de présentation de VRPN est disponible ici.

Référentiel Standard / Vicon

Un serveur VRPN peut proposer un envoi de données selon un système d'axes différent de celui utilisé dans VRmaze. VRmaze propose une possibilité de modifier à la volée les coordonnées reçues lorsque le système de coordonnées d'envoi ne correspond pas à celui d'Unity/VRmaze. Le référentiel peut être Standard (sans conversion) ou Vicon (inversion d'axe) Voici le code intégré et disponible dans les scripts VRPN tracking script:


    public static class VRPN
    { 
        ...
        // Code d'acquisition des données VRPN 

        public static Vector3 vrpnTrackerPos(string address, int channel)
        {
            return new Vector3(
                (float)vrpnTrackerExtern(address, channel, 0, Time.frameCount),
                (float)vrpnTrackerExtern(address, channel, 1, Time.frameCount),
                (float)vrpnTrackerExtern(address, channel, 2, Time.frameCount));
        }

        public static Quaternion vrpnTrackerQuat(string address, int channel)
        {
            return new Quaternion(
                (float)vrpnTrackerExtern(address, channel, 3, Time.frameCount),
                (float)vrpnTrackerExtern(address, channel, 4, Time.frameCount),
                (float)vrpnTrackerExtern(address, channel, 5, Time.frameCount),
                (float)vrpnTrackerExtern(address, channel, 6, Time.frameCount));
        }
    }



    public static class ViconVRPN
    {
        //Code d'acquisition des données VRPN dans un référentiel Vicon

        public static Vector3 vrpnTrackerPos(string address, int channel)
        {
            var vector = VRPN.vrpnTrackerPos(address, channel);
            return new Vector3(vector.x, vector.z, vector.y);
        }

        public static Quaternion vrpnTrackerQuat(string address, int channel)
        {
            var quaternion = VRPN.vrpnTrackerQuat(address, channel);
            return new Quaternion(quaternion.x, quaternion.z, quaternion.y, -quaternion.w);
        }
    }

Inversion d'axe

Le choix du référentiel peut permettre de résoudre un problème d'inversion d'axe, cependant, lors de la mise en place du serveur VRPN, il convient de bien définir l'origine du référentiel qui servira d'expression du système de coordonnées. En effet, une mauvaise rotation des axes du référentiel ne pourra être corrigée en changeant de référentiel Standard/Vicon.

S'assurer de la communication

VRmaze propose un système d'affichage permettant de vérifier et de valider la bonne connexion entre le serveur VRPN et le logiciel. Ce système indique uniquement si la communication est établie, mais ne donnera aucun élément de réponse en cas de connexion impossible.

Affichage des infos

Pour afficher les informations relatives aux trackers VRPN, il faut activer le mode Debug de VRmaze.

Communication Impossible

Dans le cas où le serveur VRPN ne peut pas être atteint, les positions X,Y,Z auront la valeur -505

Valeurs égales à -505 !

Dans le cas d'une valeur de position égale à -505, la communication est manquante entre le serveur VRPN et VRMaze. Dans ce cas, il faut procéder dans l'ordre et s'assurer en premier lieu que le serveur VRPN est lancé. Le serveur VRPN est souvent fourni avec un exécutable nommé VRPN_print_device qui permet d'obtenir les informations de tracking d'un objet spécifique. La commande à lancer est la suivante, nécessitant la fourniture de l'adresse de l'objet à traquer sous la forme nom_objet@adresse_ip:

vrpn_print_devices.exe Head@192.168.10.10

Minuscule/majuscule

Les serveurs VRPN sont sensibles à la casse et les majuscules et minuscules doivent être respectées.

Le nom de l'objet ainsi que l'adresse du serveur VRPN sont aussi nécessaire dans les nœuds de tracking de VRmaze. Il est donc possible de recopier les informations pour permettre de vérifier si l'exécutable VRPN_print_device a le même comportement que VRmaze.

Si le comportement est différent (ie. VRPN_print_device affiche les bonnes valeurs) il faut alors se tourner du côté du réseau et de la communication entre les deux ordinateurs, le serveur VRPN et l'ordinateur exploitant VRmaze. Windows fourni des outils permettant de vérifier la communication, la commande DOS ping permet de valider la communication.

Une communication validée par la commande DOS ping peut ne pas suffire. En effet, le serveur VRPN utilise un port de communication spécifique, en ce sens, la communication peut être bloquée soit par le pare-feu installé, soit par un logiciel antivirus. La désactivation de ces deux systèmes peut permettre de résoudre les problèmes de communication.