Permettre à Pepper de contrôler des servo-moteurs

Ce tutoriel est dans la veine du tutoriel concernant le pilotage de relais par Pepper en passant par un Raspberry PI3 ou PIZERO. La box Python est d’ailleurs réutilisée sans la moindre modification.

ada_10210889521263762_6405520567764241729_n

Le matériel nécessaire

Pepper ne dispose pas, en natif, de l’interface pour piloter des servo-externes. Le but du projet est de développer un système qui préserve l’intégrité du robot en évitant de l’ouvrir. Tout est donc indépendant. Il faut donc utiliser du matériel externe.

  • Un Raspberry PI3 ou un PiZero a 40 EUR environ
  • Une carte controleur de servo-moteurs Adafruit PWM Pi Hat à 20 EUR (Son tutoriel d’exploitation des librairies Python est en anglais)
  • Une alimentation 5v mini 2A ou 3A: les servos consomment. Il est hors de question de penser à les alimenter avec la même alimentation que celle du Raspberry.  La carte Adafruit est d’ailleurs équipée d’une alimentation séparée. Si vous multipliez les servos, il faudra peut être passer à 5A ou plus. A votre calculette!
  • Des servo-moteurs adaptés à votre application finale
  • Des câbles de connexion pour relier la carte Adafruit aux servo-moteurs. La longueur doit être étudiée pour permettre un mouvement sans arrachement du fil électrique.

Comment câbler l’ensemble

Je vous laisser le soin de regarder les vidéos d’explications qui donnent les différentes étapes pour mettre en place les éléments du projet

La connexion de l’alimentation externe 5V 3A peut se faire de 2 manières: soit par fiche jack (connecteur en noir sur l’image du dessous), soit par fixation directe sur domino bleu, après dénudage des câbles. Je pense que la solution 2 est plus sûre pour éviter un arrachement. Pensez à utiliser des petits tourne-vis de précision et à bien serrer les vis.

20161002_133230

Les servos sont généralement alimentés par 3 fils: un noir/marron, un rouge et un orange. Ne pas faire d’erreur quand vous les connectez sur la carte contrôleur Adafruit. Voici, sur la photo du dessous, la façon de les enficher sur la carte. Il est conseillé d’utiliser des prolongateurs.

xx20161002_133516

Comment faire fonctionner le système avec un script de test 

Il est facile de contrôler que le serveur reçoit bien les trames d’ordre. Le script est configuré pour renvoyer à l’écran l’adresse qui envoit, le thread qui est utilisé, le numéro de port servo utilisé et la valeur reçue sur ce port.

yy20161002_135656

Comment développer le pilotage des servos depuis chorégraphe

Le programme de test ayant fonctionné, il est possible d’utiliser chorégraphe pour développer le pilotage depuis Pepper ou Nao. Il est important de récupérer l’adresse IP du Raspberry par un ‘ifconfig’ ou depuis l’interface de votre routeur DHCP si il donne une IP d’office au RPi 3/Zéro. IMPORTANT: le logiciel python assurant le rôle de serveur doit, bien évidemment, être lancé à tout moment sur le Raspberry (inittab par exemple). Penser à le mettre en démarrage automatique dans la séquence boot.

Dans le tuto concernant le pilotage de relais par Pepper nous avions développé une box python relayCMD  qui sera réutilisée en l’état sans modification car elle est compatible avec le nouveau projet. Elle fonctionne avec 2 paramètres

box2

  • Le port de communication
  • L’adresse IP du serveur = IP du raspberry pi-zero

Le code source de la box est très épuré. On fait appel à la librairie Socket de python.

box2x1

Maintenant que tout est expliqué, voyons comment développer le script chorégraphe pour faire fonctionner le servo-moteur avec Pepper

Les codes sources de ce projet

Les codes du serveur et client sont téléchargeables ici.