Viewing 10 reply threads
  • Author
    Posts
    • #7168
      anthony
      Moderator

      Un peu de vulgarisation dans ce monde de lignes de code ne fera pas de mal.
      Explication de la fonction MAP

      map

      Votre servo ou moteur DC DIY est capable de se mouvoir de 0 à 180° (en général)
      Le moteur à l’intérieur fait bien plus de tours, ce qui est important c’est le potentiomètre, c’est lui qui renvoi la position du membre, avec ou sans extraction.
      Certaines parties du corps d’Inmoov nécessitent d’être calibrées. Prenons l’exemple du biceps. Il est impossible d’aller au-delà de 90° en règle générale, sans le briser.
      Nous devons donc dire au servo de ne jamais aller au-delà de 90°.
      Vous remarquerez dans les gestuelles ceci en exemple (pour plier à fond le biceps)

      leftArm.biceps.moveTo(180)

      Comment se fait-il qu’il n’y a pas de casse ? C’est là que la fonction map intervient.
      La commande leftArm.biceps.moveTo(180) est en fait standardisée. Ceci veut dire que vous n’avez pas à réécrite tous les scripts en fonction de vos valeurs à vous.
      La fonction map va faire une correspondance entre votre maximum et le maximum angulaire qui est de 180°
      moveTo(180) est en fait un positionnement virtuel basé sur VOS valeurs réelles.

      leftArm.biceps.map(0,180,5,90)

      >> c’est la fameuse fonction map, que vous devrez modifier avec vos propres valeurs au niveau du output. Dans certains script vous devrez entrez vos valeurs dans un fichier de config
      [SERVO_MINIMUM_MAP_OUTPUT]
      bicep=5
      [SERVO_MAXIMUM_MAP_OUTPUT]
      bicep=90

      Le plus important c’est de noter ces valeurs quelque part. Les garder au chaud sur un bon vieux cahier est aussi conseillé !

      map

      Vous devrez calibrer l’ensemble du robot avant de lancer quoi que ce soit. Chaqu’un sa technique, l’utilisation du mode « curseur » de Myrobotlab pourra vous aider.
      Ce .bat lancera myrobotlab en mode minimum avec l’arduino et un servo : https://github.com/MyRobotLab/inmoov/blob/master/tools/SERVO_CALIBRATION.bat

      ———————————–
      Fonction avancée du MAP
      ———————————–

      Maitre @Gael , Professeur @Christian ou @Quialaréponse pouvez-vous confirmer ceci ou apporter des corrections ?

      Logiquement vous n’aurez pas à toucher au début du map qui est la plupart du temps entre 0 et 180°
      Nous pouvons nous en servir afin d’utiliser des références angulaire réelles par calcul préalable de l’input et de l’output.
      Gael utilise aussi une sécurité supplémentaire afin d’éviter la casse dans certaine gestuelle. Par exemple pour le rotate :

      leftArm.rotate.map(40,180,60,142)

    • #7169
      Bruno.Ash
      Participant

      Salut Anthony,
      Un GRAND merci sincère pour avoir pris de ton temps pour écrire cet excellent article de vulgarisation…
      C’est presque aussi bon qu’un Speculoos !! 😉

    • #7174
      Christian
      Participant

      Tres bonne explication Anthony

      juste une petite précision

      les valeurs en input de 0-180 ne sont pas des valeurs d’angle, mais une échelle ou 0 = position minimale du servo et 180 = position maximal du servo (ou plutot du potentiometre qui dicte la rotation du servo)

      Comme la expliquer Anthony, le map() a été créer pour éviter de modifier tout les gestures si les limites des servos sont différents de celui qui a créer les gesture.

      Il y a cependant un autre paramettre a considérer si on veux recréer les memes gesture qui n’est pas tenu en compte par la fonction map. Le degré de liberté du servo doit être le meme (Max – Min).

      je m’explique

      leftArm.biceps.map(0,180,5,90) ou leftArm.biceps.map(0,180,15,100) donnera des positionnements identique (90-5 = 100-15)
      mais
      leftArm.biceps.map(0,180,5,100) donnera un positionnement différent (90-5 <> 100-5)

      donc si on veut s’assurer que les gestures soit identique entre deux robots, il faut s’assurer que les servos puissent bouger de la meme facon.

    • #7175

      Super, merci. Petit, facile a comprendre et ensuite qqun qui peaufine pour faire avancer les choses. Tu vois c’est d’explications simples comme ça dont j’aurai bes pour commencer à faire bouger correctement les jambes à moteurs de perceuses de mes membres inférieurs et de mémoriser un chemin et ainsi de suite. Bref merci de travailler comme un dément comme ça pour les autres, c encourageant.
      Sy
      C quoi cette version swingGui 1938 de MRL ?

    • #7178
      anthony
      Moderator

      Merci Christian pour ces précisions, tu es une mine d’or d’informations.
      Il faudrait t’implémenter dans le chatbot asap 🙂


      @sylvain
      peut être que tu as déjà tout ce qu’il faut aujourd’hui dans mrl, il faudra assembler les bonnes briques, si c’est bien ce que tu veux. ( voir réponse post moteur diy )

      speculos

      prochaine bd sur la vélocité 🙂

    • #7182
      Dominique
      Participant

      Bon, je sais je suis casse pied…

      L’explication à déjà été donné ici: http://inmoov.fr/forums/topic/butee-servo-moteur/

      Allez, soyons conciliant, un rappel ne fait pas de mal…

    • #7186
      anthony
      Moderator

      Ceci est un synthèse avec tentative de vulgarisation, issue de multiples discussions diverses et variées, ici, chez mrl ,irl …
      Si je ne te connaissais pas j’aurais pu te confondre avec un robot spammeur très évolué.

    • #7191
      Gael Langevin
      Keymaster

      Super synthese Anthony!
      On a bien fait de manger des Speculoos ce week-end!
      🙂

    • #7193
      Pierrick
      Participant

      Très bon condensé Anthony, j’en imprime un poster.

    • #7196
      lecagnois
      Participant

      Merci Anthony
      Sympa le tuto

      Une idée me viens . Peux on avoir une rubrique tuto sur le site
      et regrouper tous les tutos .

      Plus pratique pour les débutants
      Par exemple le méthode I01 ou trouver toutes ses fonctions ?

      je m’engage a faire qq tutos si le web master nous construis la rubrique.(lol)

    • #7206
      anthony
      Moderator

      voici une petite méthode bien pratique pour récupérer les fonctions d’un service ( dans l’onglet GUI )
      ( Grog a posté un petit recap la dessus aussi )
      Bonne idée une nouvelle rubrique !

      Attachments:
      You must be logged in to view attached files.
Viewing 10 reply threads
  • You must be logged in to reply to this topic.