Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Actionneurs > Les moteurs électriques > Les servomoteurs > USB2AX : une interface USB pour bus Dynamixel

USB2AX : une interface USB pour bus Dynamixel

mercredi 13 mars 2013, par Eric P.

Où il est question d’une interface toute rikiki mais maousse costaud

Le contexte

Dans un article précédent nous vous avons présenté les servos à commande numérique AX12 de Robotis.

Afin de les contrôler via un port USB (de PC ou de carte Linux) nous avons utilisé l’interface USB2Dynamixel proposée par Robotis et commercialisée entre autres par nos amis de Génération Robots. Elle fournit une passerelle entre l’USB et les divers types de connexion utilisés par produits Robotis :

  • bus TTL 3 fils (pour les AX12 par exemple),
  • bus RS485 4 fils,
  • RS232 pour les contrôleurs de la série CMx de Robotis.

Cette interface utilise en interne un convertisseur USB/série TTL FTDI classique, et est donc vue côté système comme un port série virtuel (/dev/ttyUSBx sous Linux).

Elle fonctionne sans histoire, et il n’y a rien à dire de désagréable à son sujet. Elle n’est de plus pas très onéreuse (dans les 50 Euros), eu égard aux multiples services rendus.

Oui mais...

Ceci étant, lorsqu’on n’utilise que le bus TTL 3 fils (comme bibi avec ses AX12 en folie), et que par dessus le marché on ne dispose pas de tonnes de place (dans un robot par exemple...) c’est d’une part overkill et d’autre par un chouïa encombrant.

Et c’est là qu’on tombe au détour d’une flânerie au pays d’Alain Ternette [1] sur un petit concentré d’électronique mis au point par Nicolas Saugnier, aka Xevel, et à qui on doit entre autres un robot multipode AX12 based impressionnant lors d’une récente coupe de France. Il s’agit de l’interface USB2AX dans sa version 3.1. Elle est présentée en détail sur le site web de son concepteur et fabricant.

La première fois que je l’ai dénichée, elle n’était pas encore commercialisée. J’ai alors pris contact avec Nicolas pour en savoir plus. Il est super sympa et j’ai pu échanger avec lui des infos très détaillées. Il m’a alors annoncé qu’il était sur le point d’en finaliser la commercialisation. C’est maintenant chose faite : le 28 février dernier, je recevais un mail de sa part (il ne m’avait pas oublié) pour me prévenir de la disponibilité officielle du produit pour un prix public de 40 Euros.

J’en ai donc acheté une pour la tester aussi sec.

Les tests

Quand je disais en titre qu’il s’agit d’une interface rikiki, je ne vous mentais pas. Il n’y a qu’à comparer sur la photo ci-dessous les deux produits dont il est question (devinez qui est qui) :

USB2Dynamixel et USB2AX
When size matters...

La même vue de plus près :

L’USB2AX vue de près

On y voit clairement le MCU qui fait tout le boulot, interface USB comprise.

Question mise en oeuvre : c’est kif kif l’USB2Dynamixel, à savoir qu’elle est vue en tant que port série virtuel. Comme elle n’utilise pas un FTDI mais un MCU Atmel avec USB intégré [2], elle apparaît en tant que /dev/ttyACMx, mais c’est la seule différence et ce n’est pas cela qui va nous perturber.

Pour le reste c’est pareil : on envoie les commandes Dynamixel sur le port série et on y lit les réponses des servos. Elle supporte les mêmes vitesses de bus, y compris jusqu’à 1Mbits/s.

Autrement dit, du code qui fonctionne pour l’USB2Dynamixel fonctionne sans autre changement que celui du nom du port pour l’USB2AX.

J’ai bien entendu pu le vérifier et mon code Python basé sur la librairie pydynamixel n’y a vu que du feu comme on pouvait s’y attendre.

Les plus de l’USB2AX

Nicolas a implémenté sur son interface une fonction très utile dénommée sync_read, ne faisant pas officiellement partie du jeu de commandes Robotis, mais qu’on retrouve également dans d’autres produits comme l’Arbotix [3] par exemple.

Elle permet de lire les registres de plusieurs servos en même temps, avec un seul échange au niveau USB, puisque c’est alors l’USB2AX qui se charge de dialoguer avec les servos impliqués. Cette fonction apporte un gain de performance significatif très intéressant lorsqu’on doit par exemple surveiller la complétude d’un mouvement complexe mettant en jeu plusieurs AX12 simultanément.

Plus de détails sur cette fonction ainsi qu’une plongée plus profonde au royaume des AX12 dans un prochain article.

Le bilan

Il y a de très fortes chances que l’USB2AX finisse dans le robot Coupe 2013, connectée sur le port USB d’une RasPi et pilotée par du Python. Je sais que Patrick va m’en vouloir à mort pour cela, mais je réserve son bébé (dont il sera prochainement question dans ces colonnes) à un autre usage qui mettra mieux en valeur ses atouts, qui sont à ma connaissance uniques à ce jour dans le domaine.

En conclusion, si vous n’avez pas besoin des multiples interfaces fournies par l’USB2Dynamixel, et que de surcroit vous recherchez quelque chose de compact, il n’y a pas d’hésitation à avoir : foncez de notre part chez Nicolas et achetez son USB2AX.

De plus il fait des tarifs préférentiels pour les participants à Eurobot ;)

Info bonus de la part de Nicolas

LUFA : une lib pour développements USB sur AVR

Le firmware embarqué dans l’AVR a été développé avec la lib open source LUFA de Dean Camera, qui implémente un stack USB complet, léger et performant. Pour ceux qui ont sous le coude des développements USB sur AVR, ça mérite d’aller y faire un tour.


[1ouais bon, je sais elle est un peu approximative... ok, je sors

[2un ATMega32u2 pour être précis

[3tiens, tiens, voilà une petite carte qu’elle est intéressante...

Vos commentaires

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.