IllustraBot2

De Kernel Fablab Lannion
20140106 125232.jpg

Il revient et il a plus de dents !!

Présentation

Concept.svg

Un an après IllustraBot, les Bell Labs relancent une expérimentation 4G. Il est temps de le faire évoluer !

Cette fois, l'idée générale est de commander un bras robotisé à l'aide des mouvements d'un téléphone.

Architecture

Archi.png

TODO général

  • préparer bbb2 : claude
  • faire montage final et plus toucher
    • pcbs sont ok
    • alim dédiée soudée directement ! 12V+12.8V ok
    • switch pour alumer atx : jerome
    • boitier PC ok 34.5x41cm


Matériel

  • un bras robotisé MultiSoft de 1988 : don du Lycée Le Dantec
  • une beagleboard / clef+sim 4G : don des Bell Labs
  • 6 drivers moteur pas à pas
  • un smartphone 4G : don Alcatel-Lucent

TODO

  • encore plein de choses :)

ETAT MOTEURS

  • etat des moteurs ( numéro en fonction connectique - connectique à 4 fils pour tous les moteurs )
    • moteur 1 : axe vertical - OK
    • moteur 2 : épaule : 8 fils couplage en 2x2 - défectueux ?
    • moteur 3 : coude : 8 fils couplage en 2x2 - OK
    • moteur 4 : rotation main gauche - OK
    • moteur 5 : rotation main droit - OK
    • moteur 6 : fermeture main - OK
    • NB : attention les moteurs de la pince 5-6 et 4-6 doivent fonctionner ensemble pour garder l'ouverture constante....

TODO

  • test moteur 2 : bobines semble OK - hypothèse courant insuffisant avec utilisation easy driver.
    • on dispose 2 moteurs supplémentaire identique (à tester). Pour un démontage éventuel, il y aura un écrou qui est inaccessible ( derrière poulie )

CARTE DETECTION

la carte fonctionne parfaitement. préparation connectique en cours.

  • schéma sur github
  • adaptation 5V => 3.3V:
    • proposition avec transistor NPN + led. Permettra d'avoir un visuelle et correspondance sur GPIO.

NB: inversion fils rouge(+5V) / noir (GND) fait

Niveau mesurés

  • noir, Led allumée, 0.4V
  • blanc, led éteinte, 1.7V
  • TODO: vérifier niveaux de détection GPIO input TI

CARTE DE CONNECTION

la carte aura le cahier des charges suivant :

  • connectique pour l'emplacement beagle bone
  • 6 drivers popolu A4988 ( TBC) avec connectiques externes
  • 6 entrées avec adaptation 5V->3.3V
  • 3 à 4 alimentations ( 5V/3.3 V/ 12 volts ou plus)
    • prévoir capacité autour du 5V ( 10 µF ou + )
    • prévoir capacité autour du 3.3V des transistors de l'adaptation ( 100 µF à definir )
    • prévoir capacités en amont de chaque alimentation autour drivers ( VMOT 100µF cf doc A4988 / VDD capa commune aux drivers 10 µF ? )
    • prévoir 2 sources d'alimentation VMOT séparer pour alimenter les moteurs :
      • suivant problèmes perf moteur, on aura peut-être à fournir des moteurs en 12 volts et d'autres à > 12 volts ( par exemple moteurs épaule & coude )

TODO

  • schema action : nico
  • liste composant : nico, claude, jerome
  • voir carte controle moteur de la fraisseuse CNC
  • regarder IO beaglebone => nico, claude, jérome doc détaillée des IOs
    • voir consommation beaglebone => voir doc / action : nico, claude
  • question:
    • le 3.3V peut-il provenir de la beaglebone ? => action: nico, claude
      • si oui, quel amperage ? besoin 108 mA = 60 mA (led) + 6 x8 driver
      • possibilité de dimunuer le courant led si nécessaire
    • il faudra peut être prévoir 2 sources d'alimentation séparer pour alimenter des moteurs en 12 volts et certains et 18 volts ( par exemple )
    • Le 5V et le 3.3V peuvent être fourni par la beaglebone à la carte fille (IF Beagle / Bras) sur le connecteur P9 (le régulateur 3.3V peut fournir jusqu'à 500mA mais il faudra vérifier si cela sera suffisant pour la beagle + la carte fille)
    • Prévoir alimentation soit par beagle soit par connecteur externe avec switch.

Logiciel

Commande du bras

3 axes de commande avec le gyroscope android :

  • azimuth ???
  • pitch -180:180
  • roll -90:90

Exemples :

TODO

  • Cedric: [ANDROID] repartir du projet Illustrabot 1er du nom, et intégrer la détection des capteurs gyro avec conversion en gcode ( commande Gcode à définir avec l'équipe beagleboard)
  • préparer forge logicielle : jerome, OK
  • définir protocole de communication : Jérôme, en cours IllustraBot2:protocole
  • Étudier une solution basée sur LinuxCNC : FX

Soft

  • gestion des gpio en accès mémoire plutôt que via debugfs
  • gestion des fins de courses par interruption
  • intégration des données reçues de l'android
  • algo de controle du bras ?

Code source

kernel 3.8.x

Les pins des connecteurs P8 et P9 peuvent avoir plusieurs fonctions : on parle de mode. Cela est configuré via un mux.

Avec les kernel 3.8.x la configuration de ce mux a drastiquement changé (pour unifier tous les arm). Il faut maintenant utiliser des Device Tree Overlay (dto).

Quelques liens très utiles :

Le package debian device-tree-compiler n'est pas bon voir ici

wget -c https://raw.github.com/RobertCNelson/tools/master/pkgs/dtc.sh
chmod +x dtc.sh
./dtc.sh

Voici un petit aide mémoire des commandes à passer pour appliquer un device tree overlay :

export SLOTS=/sys/devices/bone_capemgr.9/slots
export PINS=/sys/kernel/debug/pinctrl/44e10800.pinmux/pins
export PINMUX=/sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-pins
dtc -O dtb -o motor_test-1-00A0.dtbo -b 0 -@ motor_test-1.dts # compiler le fichier source
cp motor_test-1-00A0.dtbo /lib/firmware/ # copier vers le répertoire de firmware
echo motor_test-1 > $SLOTS # appliquer l'overlay
cat $SLOTS # vérifier son application
 ...
 8: ff:P-O-L Override Board Name,00A0,Override Manuf,motor_test-1
egrep "830|834" $PINS # vérifier le mode des pins
 pin 12 (44e10830) 00000007 pinctrl-single 
 pin 13 (44e10834) 00000007 pinctrl-single
egrep "830|834" $PINMUX # vérifier la réservation des pins
 pin 12 (44e10830): helper.15 (GPIO UNCLAIMED) function pinmux_motor group pinmux_motor
 pin 13 (44e10834): helper.15 (GPIO UNCLAIMED) function pinmux_motor group pinmux_motor
echo -8 > $SLOTS # remove overlay

Évolutions possibles

  • Docteur maboule ?
  • construction 3D -> maison pour les enfants : comme ça

Bilbiographie / documentation

Médias

Vidéos

Photos

Participants

Non exhaustif :

  • Jérôme
  • Claude
  • Fx
  • David
  • Cédric
  • Julien
  • Nicolas
  • Raoul
  • Rolland