Un peu de vulgarisation dans ce monde de lignes de code ne fera pas de mal.
Explication de la fonction 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é !
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)