IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

problème serveur vrpn


Sujet :

C++

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Février 2011
    Messages
    64
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 64
    Points : 50
    Points
    50
    Par défaut problème serveur vrpn
    Bonjour tout le monde

    Je viens vers vous car j'ai un soucis avec une implémentation de vrpn en C++.
    J'utilise actuellement le Leap Motion, et j'ai créé un serveur et un client vrpn pour transmettre les positions et orientations des doigts détectés.
    Jusqu'ici, tout va bien, cela fonctionne parfaitement.
    Le problème survient lorsque je tente de rajouter la vélocité.
    Le code client est bon je pense, car les problèmes que je rencontre, je les aient également avec les clients par défaut (en ligne de commande).
    Je précise que le serveur est sous Windows 7, si ca peut aider.

    Voici le code server :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    void
    LeapMotionVrpnTracker::mainloop()
    {
        vrpn_gettimeofday(&_timestamp, NULL);
     
        vrpn_Tracker::timestamp = _timestamp;
     
        pos[0] = _finger->position().x;
        pos[1] = _finger->position().y;
        pos[2] = _finger->position().z;
     
        d_quat[0] = _finger->direction().x;
        d_quat[1] = _finger->direction().y;
        d_quat[2] = _finger->direction().z;
        d_quat[3] = 1.0f;
     
        vel[0] = _finger->velocity().x;
        vel[1] = _finger->velocity().y;
        vel[2] = _finger->velocity().z;
     
        vel_quat[0] = 0;
        vel_quat[1] = 0;
        vel_quat[2] = 0;
     
        vel_quat_dt = 0;
     
        d_sensor = _sensor;
     
        char msgbuf[1000];
        int  len = vrpn_Tracker::encode_to(msgbuf);
        if (d_connection->pack_message(len, vrpn_Tracker::timestamp, position_m_id, d_sender_id, msgbuf,
            vrpn_CONNECTION_LOW_LATENCY))
        {
            fprintf(stderr,"can't write message: tossing\n");
        }
     
        len = vrpn_Tracker::encode_to(msgbuf);
     
        if (d_connection->pack_message(len, vrpn_Tracker::timestamp, velocity_m_id, d_sender_id, msgbuf,
            vrpn_CONNECTION_LOW_LATENCY))
        {
            fprintf(stderr,"can't write message: tossing\n");
        }
     
        server_mainloop();
    }
    Et, voici l'erreur que reçoit les client vrpn me renvoient :

    vrpn_Tracker: vel message payload error
    (got 64, expected 72d)
    vrpn_TypeDispatcher::doCallbacksFor: Nonzero user handler return.
    vrpn_Endpoint::mainloop: UDP handling failed, dropping connection
    Et si je commente la partie du code suivant, je n'ai plus de soucis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        if (d_connection->pack_message(len, vrpn_Tracker::timestamp, velocity_m_id, d_sender_id, msgbuf,
            vrpn_CONNECTION_LOW_LATENCY))
        {
            fprintf(stderr,"can't write message: tossing\n");
        }
    Je ne comprend vraiment pas le soucis.
    Si quelqu'un a une idée, je l'écoute avec plaisir

    Edit :
    Je précise que j'ai testé avec les api 7.29 et 7.30, que ce soit pour le client ou le serveur.

  2. #2
    Membre du Club
    Étudiant
    Inscrit en
    Février 2011
    Messages
    64
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    Bon, problème résolu.

    Pour ceux à qui cela pourrait arriver, voici la manière de l'éviter.
    Lorsque l'on calcule la longueur du message à envoyer, il faut utiliser la méthode
    vrpn_Tracker::encode_to
    pour la position, et la méthode
    vrpn_Tracker::encode_vel_to
    pour la vélocité. Il y a sans doute le même type de changement à faire avec l'accélération et les autres types de paramètres

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème serveur IIS
    Par oumar-abj dans le forum IIS
    Réponses: 2
    Dernier message: 09/11/2006, 11h10
  2. problème serveur Zope at home
    Par t_om84 dans le forum Zope
    Réponses: 1
    Dernier message: 06/10/2006, 00h04
  3. [MySQL]Problème serveur embarqué !!
    Par julio_boss dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/05/2006, 11h31
  4. Réponses: 1
    Dernier message: 27/10/2005, 11h14
  5. Problème serveur Posgresql : recuperation anciennes requêtes
    Par petitmoosse dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/12/2004, 18h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo