la méthode servo.map(minInput, maxInput, maxInput, maxOutput) convertie un intervalle d’entrée (input) que l’on veut utiliser en valeur de sortie (output) qui sera envoyer au servo.
Il est inutile de faire un servo.setMinMax() puis la command servo.map() puisque servo.map() ecrasera la commande servo.setMinMax()
voici comment ca fonctionne sous le capot
par défault, il y a un map(0,180,0,180) qui est réglé pour le servo.
servo.setMinMax(60,110) reglera les valeurs de sortie(output), donc est l’équivalent a map(0,180,60,110)
il y a eu des changement dans le fonctionnement de map() entre la version 107 et les versions récente. Ce qui explique pourquoi la version pour inMoov01 était nécessaire. Mais dans les versions récente, seule une ou l’autre des commandes est nécessaire. Pour InMoov02, les deux commandes donne le meme résultat.
Gael utilise un range arbitraire de 0 (position minimal) a 180 (position maximal) qui sera converti (position minimal du servo) a (position maximal du servo).
Pour ma part, j’utilise un map différent. En entré, j’utilise l’angle que je souhaite avoir et en sortie, la position que le servo doit prendre pour atteindre cet angle. donc mes maps ressemble a ceci
shoulder.map(46,180,46,180) -> signifie que pour avoir un angle de 46°, le servo doit aller en position 46, mais aucune valeur inférieur a 46 ne sera accepté (min).
bicep.map(5,60,5,80) -> pour un angle de 5°, le servo va en position 5, pour un angle du coude de 60°, le servo doit aller en position 80.
Notez que mes map() ne permettent pas d’utiliser les gestures de gael sans modification. Je tente seulement d’illustrer le fonctionnement de la méthode map()