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++/CLI Discussion :

Mixage de voies


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair� Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Corr�ze (Limousin)

    Informations professionnelles :
    Activit� : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par d�faut Mixage de voies
    Bonjour,

    Je s�che un peu sur la trigonom�trie. Enfin bref, je ne suis pas l� pour raconter "my life" !

    Il se trouve que j'aimerais piloter un char avec un seul manche de radio. J'ai construit la radio, elle fonctionne.

    Je viens d'essayer un peu de trigonom�trie avec un peu d'aide mais les r�sultats ne sont pas correct. Je ne peux prendre que des valeurs de 0 � 180 avec un neutre � 90. Ceci �tant des degr�s. Il en va de soi que les valeurs n�gatives que me retourne mon code ne sont pas compatible avec les valeurs requise pour le fonctionnement.

    Mettons un manche, axe X pour la vitesse et y pour la direction.
    -Sa position au neutre renvera sur Voie1 = VoieX = 90 et Voie2 = VoieY = 90.

    -Si je pousse en avant, donc, sur la voie des X, j'aurais VoieX = 0 et VoieY = 90.
    -Si je pousse en arri�re, donc, sur la voie des x, j'aurais VoieX = 180 et voieY = 90.

    -Si je pousse sur la droite, donc, sur la voie des y, j'aurais VoieY = 0 et VoieX = 90.
    -Si je pousse sur la gauche, donc, sur la voie des y, j'aurais VoieY = 180 et VoieY = 0.

    En sortie, chaque voies, donc, Voie1 et Voie2 sont l'�quivalent de ce que feront les deux moteurs. Moteur Gauche = Voie1 et Moteur Droit = Voie2.

    A ce moment l�, j'aimerais obtenir ceci en valeurs proportionnelles.
    Si je pousse le manche en avant : Voie1 = 0 et Voie2 = 0.
    Si je met au neutre : Voie1 = 90 et voie2 = 90.
    Si je pousse en arri�re : Voie1 = 180 et Voie2 = 180.
    Si je pousse sur la droite : Voie1 = 0 et Voie2 = 180.
    Si je pousse sur la gauche : Voie1 = 180 et Voie2 = 0.

    Pour le moment, mon code d'essai ressemble � ceci:
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    /* LOOP */
    void loop() {
     
      //Lire la position des manches
      tensionVoie1 = analogRead(potarVoie1);
      tensionVoie2 = analogRead(potarVoie2);
      tensionVoie3 = analogRead(potarVoie3);
      tensionVoie4 = analogRead(potarVoie4);
     
      //Transformation de la tension en valeur digitale
      voie1 = map(tensionVoie1, 0, 1023, 0, 180);
      voie2 = map(tensionVoie2, 0, 1023, 0, 180);
      voie3 = map(tensionVoie3, 0, 1023, 0, 180);
      voie4 = map(tensionVoie4, 0, 1023, 0, 180);
     
      //Mixage voie 1 et voie 2
      //x=cos(voie1)sin(voie2) et y=sin(voie2)
     
      int cosVoie1 = cos(voie1) * 100;
      int sinVoie2 = sin(voie2) * 100;
      voie1 = (cosVoie1 * sinVoie2) / 100;
      voie2 = sinVoie2;
     
      //Lire la position des boutons
     
      //Si le bouton de la voie 5 est en haut
      if(digitalRead(btnVoie5Up) == HIGH) {
        //La valeur digitale sera de 0  
        voie5 = 0;
      }
     
      //Si le bouton de la voie 5 est en bas
      if(digitalRead(btnVoie5Do) == HIGH) {
        //La valeur digitale sera de 180  
        voie5 = 180;
      }
     
      //Si le bouton 5 est au centre
      if(digitalRead(btnVoie5Up) == LOW && digitalRead(btnVoie5Do) == LOW) {
        //La valeur digitale sera de 90  
        voie5 = 90;
      }
     
      //Si le bouton de la voie 6 est en haut
      if(digitalRead(btnVoie6Up) == HIGH) {
        //La valeur digitale sera de 0  
        voie6 = 0;
      }
     
      //Si le bouton de la voie 6 est en bas
      if(digitalRead(btnVoie6Do) == HIGH) {
        //La valeur digitale sera de 180  
        voie6 = 180;
      }
     
      //Si le bouton 6 est au centre
      if(digitalRead(btnVoie6Up) == LOW && digitalRead(btnVoie6Do) == LOW) {
        //La valeur digitale sera de 90  
        voie6 = 90;
      }
     
      //Initialiser la trame
      trame = "";
     
      //Crée la trame
      trame += voie1;  //Voie 1
      trame += ",";  //Séparateur
      trame += voie2;  //Voie 2
      trame += ",";  //Séparateur
      trame += voie3;  //Voie 3
      trame += ",";  //Séparateur
      trame += voie4;  //Voie 4
      trame += ",";  //Séparateur
      trame += voie5;  //Voie 5
      trame += ",";  //Séparateur
      trame += voie6;  //Voie 6
     
      //Transmission de la trame sur le récepteur
      Serial1.print(trame);
     
      //Ecrire à l'écran des infos
      ecrireLcd(trame, 01);  //Ecrire
     
      //Pause 90ms
      delay(90);
     
      //Effacer l'écran
      clearLcd();  //Effacer l'écran
    }
    Voila, je m'en remet � vous car je s�che un peu.

    Pour vous aider � la compr�hension th�orique du probl�me, je peux vous demander de jeter un oeil sur ce plan :
    http://i.stack.imgur.com/6SDXJ.jpg

    Merci pour votre aide.

  2. #2
    Membre tr�s actif Avatar de Ragmaxone
    Homme Profil pro
    Responsable syst�mes de distribution
    Inscrit en
    Ao�t 2007
    Messages
    441
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : Pologne

    Informations professionnelles :
    Activit� : Responsable syst�mes de distribution

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 441
    Par d�faut
    J'avais pas compris que c'�tait pour un char
    L� t'as d�j� les coordonn�es cart�siennes du vecteur direction � prendre, reste � traduire �a en chenilles :-)

  3. #3
    Membre �clair� Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Corr�ze (Limousin)

    Informations professionnelles :
    Activit� : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par d�faut
    Ah ! Zut !

    Bon, j'ai bien fait d'en parler ici alors

    Par auto-d�rision, d�j�, j'ai avanc� puisque je sait que ce n'est pas les bonnes valeurs � retourn�

    Mais ce n'est pas pour autant que mon char avance

    Une id�e pour contourn� le probl�me ?

    Merci.

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    Le vocabulaire chenille c'est :
    - je vais devant � fond
    - je vais devant � un peu moins � fond
    ...
    - je vais devant doucement
    - je stop
    - je vais en arri�re doucement
    ...
    - je vais en arri�re � fond

    C'est tout.

    Pour tourner, il faut dire des choses diff�rentes � chaque chenille.

    (un peu comme les hommes politiques )

  5. #5
    Membre �clair� Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Corr�ze (Limousin)

    Informations professionnelles :
    Activit� : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par d�faut
    et en algorithmie �a donne quoi �a ?

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    et en algorithmie ça donne quoi ça ?
    Une table table de transcodage
    Direction => puissance � mettre sur chaque chenille.
    La table est donc fonction du nombre et de la position de chaque chenille sur le ch�ssis.

    Vous ne devez pas mapper directement un composant de la direction avec la puissance.

    Pour tourner sur place avec un char � 2 chenilles sym�triques, c'est � fond avant pour une chenille et � fond arri�re pour l'autre.

  7. #7
    Mod�rateur
    Avatar de sevyc64
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par d�faut
    Si je m'en tiens � ton �nonc� (ou il y a d�ailleurs une erreur lorsque tu pousse � gauche), je peux en d�duire que la valeur de tes voies est d�duite � partir d'une valeur de base directement proportionnelle � X et corrig�e par Y

    Voir les �quations suivantes :

    Voie 1 = X + (y-90)
    Voie 2 = X - (y-90)


    Apr�s pourquoi introduire des sin et cos, j'ai pas compris (pas trop approfondi non plus)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [UML] Je ne vois pas o� mettre la vue !
    Par le Daoud dans le forum MVC
    R�ponses: 12
    Dernier message: 19/03/2006, 09h31
  2. Cl� etrangere erreur 150 mais je vois pas l'erreur
    Par HurtMarley dans le forum SQL Proc�dural
    R�ponses: 3
    Dernier message: 03/05/2005, 16h57
  3. Je vois pas d'o� vient mon erreur!! Aidez moi SVP
    Par liliboms dans le forum MS SQL Server
    R�ponses: 3
    Dernier message: 04/04/2005, 08h25
  4. Qui ne voi plus les images ou smiley du forum ?
    Par Marc Lussac dans le forum Evolutions du club
    R�ponses: 30
    Dernier message: 13/09/2004, 13h36
  5. Mixage de Couleurs
    Par exxos dans le forum Algorithmes et structures de donn�es
    R�ponses: 15
    Dernier message: 29/05/2002, 13h34

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