Tutoriel de programmation des servomoteurs Dynamixel en utilisant RoboPlus
Les servomoteurs Dynamixel de la société Robotis sont reconnus dans le monde entier comme les meilleurs servomoteurs grand public, offrant le meilleur de la technologie en terme de performance, robustesse, précision et fonctionnalités. Robotis offre une large gamme de servomoteurs qui se différencient par leur performances en terme de vitesse et de couple moteur ainsi que par les fonctionnalités accessibles.
Ce tutoriel vous guide à travers toutes les étapes nécessaires à la commande de vos servomoteurs Dynamixel : les connexions, la programmation, le transfert des programmes dans le contrôleur et la récupération des sorties.
Dans cet exemple, nous utilisons un contrôleur CM-700 et un servomoteur Dynamixel RX-28. La façon de programmer est exactement la même pour les autres contrôleurs (CM-5, CM-510 et CM-530) ainsi que pour les autres servomoteurs Dynamixel (gammes AX, RX, EX et MX).
Pour contrôler un servomoteur Dynamixel, il vous faut:
- un (ou plusieurs) servomoteur(s) Dynamixel et son(leur) câble(s) de connexion
- un contrôleur et son câble de connexion au PC (interface USB LN-101 pour le CM-700, câble Bioloid BSC-10 pour les autres, avec une interface USB2DYNAMIXEL si votre ordinateur ne comporte pas de port série)
- Une alimentation stabilisée ou une batterie (ou un câble SMPS (12V, 5A) selon les contrôleurs)
- Un ordinateur sur lequel vous avez installé le logiciel gratuit RoboPlus (téléchargement)
Étape 1: Connexion et alimentation du servomoteur Dynamixel
Connectez le servomoteur Dynamixel au contrôleur (les servomoteurs des gammes AX et MX-xxT utilisent une communication TTL et des connecteurs 3 broches, alors que les servomoteurs des gammes RX, EX et MX-xxR utilisent le protocole RS485 et donc des connecteurs 4 broches).
Alimentez le contrôleur Dynamixel : la led 'power' s'allume et l'une des LEDs de mode (play, edit ou mon) se met à clignoter. La led du servomoteur s'allume aussi brièvement (moins d'une seconde) au moment de l'allumage.
Connectez le contrôleur à votre ordinateur. L'appareil doit être reconnu automatiquement. Si ce n'est pas le cas, voyez ici pour l'installation manuelle des pilotes.
Étape 2 : Détection du contrôleur et des servomoteurs Dynamixel
Lancez le logiciel RoboPlus. Roboplus est le logiciel graphique fourni gratuitement par Robotis pour piloter et programmer facilement les servomoteurs Dynamixel. Dans la fenêtre d'accueil de RoboPlus (cf. ci-dessous), choisissez 'RoboPlus Manager'.
Sur votre contrôleur Dynamixel, appuyez sur le bouton mode jusqu'à ce que la LED 'manage' (CM-5, CM-510 ou CM-530) ou 'mon' (CM-700) clignote.
Tout en haut à gauche, choisissez le port COM sur lequel est branché votre robot ou choisissez 'auto search'. Puis cliquez sur l’icône 'connect'.
Si la connexion ne se fait pas, cliquez sur l’icône 'Windows Device Manager' et recherchez directement quel port est utilisé par votre contrôleur (dans Ports (COM & LPT), il est appelé 'USB Serial Port').
Le logiciel va détecter votre contrôleur ainsi que les servomoteurs qui y sont connectés
Notez bien l'ID de vos servomoteurs Dynamixel, car c'est avec cet ID que vous allez pouvoir les commander. Vous avez également accès à toutes les variables de vos servomoteurs et de votre contrôleur. C'est à ce moment que vous pouvez décider d'utiliser votre servomoteur Dynamixel en 'joint mode' (contrôle en position, pour des bras de robot par exemple) ou en 'wheel mode' (rotation continue, pour des roues de robots mobile en particulier).
Étape 3: Programmer une tâche sur votre servomoteur Dynamixel
Vous pouvez à présent fermer RoboPlus Manager et ouvrir RoboPlus Task.
Appuyez sur le bouton 'mode' du contrôleur jusqu'à ce que la led 'play' clignote. Dans RoboPlus Task, choisissez le bon contrôleur et le port COM
Pour commencer, nous allons simplement demander au contrôleur d'écrire la valeur de la position du servomoteur Dynamixel chaque seconde.
Commencez par double cliquer sur la première ligne du programme. Une fenêtre s'ouvre et propose différents types d'instructions. Double-cliquez sur 'Start program'.
Tout votre programme devra être compris entre les deux accolades. Double cliquez sur la ligne entre les accolades (numéro 3 dans l'exemple) et choisissez 'Load (assignment value)'
Vous devez assigner des valeurs aux deux points d'interrogation.
Double-cliquez sur le premier, dans la fenêtre qui s'ouvre, choisissez 'Dynamixel/actuator' et sélectionnez 'torque enable'. Vérifiez bien que l'ID en haut de la fenêtre correspond à celui de votre servomoteur.
Puis double-cliquez sur le second point d'interrogation. Dans 'constant value' puis 'TRUE/FALSE', choisissez 'false'.
Puis créez une nouvelle ligne vide à l'aide de la touche espace ou d'un clic droit.
Nous allons ensuite créer une boucle infinie : Double-cliquez sur la nouvelle ligne et sélectionnez 'Endless loop (while(1))'. Un nouveau bloc, délimité par des accolades, est créé. Le code qui est à l'intérieur de ce bloc va donc être répété indéfiniment.
Dans ce nouveau bloc, nous allons afficher la position du servomoteur. Il faut à nouveau utiliser 'Load (assignment value)'. Pour le premier point d'interrogation, sélectionnez 'Print with line' dans 'Controller'. Pour le second, choisissez 'Present Position' dans 'Dynamixel/Actuator'. 'Print with line' permet d'afficher un nombre entre -32767 et +32767, que ce soit la valeur d'un capteur, d'un moteur ou qu'il soit défini 'en dur' dans le programme. Par contre, vous ne pouvez pas afficher de texte.
Enfin, pour avoir le temps de lire les données, nous allons attendre une seconde entre chaque mesure. Pour cela, nous allons créer un timer et attendre que celui ci soit écoulé.
Créez une nouvelle ligne dans la boucle infinie et choisissez à nouveau l'assignement d'une valeur. Cette fois, nous allons assigner à un timer (dans 'controller') une 'timer value' (dans constant value') de 10. Vous pouvez voir la durée exacte calculée immédiatement.
Il faut ensuite créer une ligne sous le timer et choisir l'instruction 'Conditional stand'. Assignez les valeurs comme ci-dessous pour attendre que le timer soit à 0 (attention le 0 est une 'timer value').
Vous pouvez vérifier que la syntaxe de votre code est correcte en cliquant sur le petit signe rouge nommé 'Check Rule'. La zone de debug en bas de la fenêtre va vous afficher le nombre de variables et la taille de votre programme ainsi que les éventuelles erreurs.
Le programme complet est disponible ici.
Étape 4 : Télécharger et exécuter le programme
Nous allons maintenant transférer ce premier programme très simple dans le contrôleur pour vérifier qu'il s'exécute correctement.
Cliquez sur la flèche verte pour télécharger le programme dans votre contrôleur. Quand le téléchargement est fini, appuyez sur le bouton 'View output of program'.
Cela ouvre un terminal nommé 'Program Output Monitor'
Il ne vous reste plus qu'à appuyer sur le bouton 'start' de votre contrôleur.Le LED 'play' devient fixe tant que le programme s'exécute. Les premières lignes contiennent la structure de votre robot.
Puis vous voyez s'afficher le nombre que vous avez choisi.
Éteignez votre contrôleur pour arrêter le programme. Vous pouvez ensuite le rallumer et réappuyer sur le bouton 'start' pour relancer le programme.
Pour aller plus loin, nous vous proposons ce tutoriel avancé, qui présente un exemple plus complexe sur la programmation de mouvements pour les servomoteurs Dynamixel et l'utilisation de RoboPlus Motion.
Utilisation de l'interface USB2DYNAMIXEL
L'interface USB2DYNAMIXEL peut être utilisée soit comme interface USB-Série, soit comme lien direct avec les servomoteurs Dynamixel.
En temps qu'interface USB-série (l'interrupteur doit être positionné sur 'RS232'), vous pouvez connecter un contrôleur CM-5 ou CM-510 (le CM-530 possède déjà une interface USB) directement sur un port USB et télécharger vos programmes exactement comme dans le cas du contrôleur CM-700 présenté ci-dessus.
Pour communiquer directement avec les servomoteurs Dynamixel, l'interrupteur de l'interface USB2DYNAMIXEL, l'interrupteur doit être positionné sur 'RS485' pour les servomoteurs des séries RX, EX et MX-xxR ou sur 'TTL' pour les servomoteurs AX et MX-xxT.
Alimentation des servomoteurs Dynamixel lors de l'utilisation de l'interface USB USB2DYNAMIXEL
Attention, l'interface USB2DYNAMIXEL ne permet pas d'alimenter vos servomoteurs, il faut donc les alimenter soit en utilisant le deuxième connecteur du dernier servomoteur de la chaîne, soit en se branchant sur le câble de connexion entre l'USB2DYNAMIXEL et le premier servomoteur.
Utilisation de l'interface USB USB2DYNAMIXEL avec RoboPlus pour contrôler un servomoteur Dynamixel
Une fois que vous avez connecté l'interface USB2DYNAMIXEL et les servomoteurs, vous pouvez utiliser la partie 'Dynamixel Wizard' de RoboPlus.
En cliquant sur le bouton 'connect', vous pouvez lancer une recherche de tous les éléments connectés.
Puis vous pouvez modifier les champs des servomoteurs directement à partir de la même fenêtre, par exemple faire tourner votre servomoteur en modifiant le champ 'Goal Position'.
Par contre, sans contrôleur, vous ne pouvez pas télécharger des programmes (tâches) pour automatiser les mouvements de vos servomoteurs.
Génération Robots (http://www.generationrobots.com)
Tout usage et reproduction soumis à autorisation explicite préalable.