0Home Page test forums FABRICATION ELECTRONIQUE , SERVO & cie [ Les basiques : Fonction mapping ] – LIMITES DES SERVOS

This topic contains 10 replies, has 8 voices, and was last updated by  anthony 3 years ago.

  • 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.

You must be logged in to reply to this topic.