IllustraBot2
Il revient et il a plus de dents !!
Présentation
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
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
- gaine diametre 9 ?
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.
- le 3.3V peut-il provenir de la beaglebone ? => action: nico, claude
BeagleBone Black
lien utile...
installation complémentaire
- sudo apt-get update
- sudo apt-get upgrade
- sudo apt-get install git-core build-essential -y
- sudo apt-get install python-dev python-setuptools python-pip python-smbus -y
- sudo apt-get install gcc g++ make -y
- sudo apt-get install automake autoconf -y
optionnel
- sudo apt-get install doxygen -y
Logiciel
Commande du bras
3 axes de commande avec le gyroscope android :
- azimuth ???
- pitch -180:180
- roll -90:90
Exemples :
- avec un nunchuk (coupez le son)
TODO
- [ANDROID]
- ajouter un slider pour changer de referentiel bras/pince - ajouter un slide vertical pour gérer l'avancée du bras/fermeture pince - désactiver le changement d'orientation du portable
forge logicielle: forge logicielle
- 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
- dépôt github
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 :
- exemple de configuration du mux
- post de forum d'un mec qui suit le cheminement
- recherche qui permet de trouver l'adresse du registre
- chez adafruit très bien fait comme d'hab
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
- Dossiers de TP sur BobbyLeRobot
- Commande du bras avec un TO7/70 :)
- Documentation obtenue par ingénierie inversée
- Bras & moteurs
- carte de détection
- Hardware
- BeagleBone Black PCB RevB5
- shema + System reference manual
- Processeur TI am3358
- headers
- EasyDriver
- datasheets & co sur le github
- BeagleBone Black PCB RevB5
- How-To's
- Tutorial vidéo BB+EasyDriver+stepper motor (code source)
Médias
Vidéos
- Contrôle simultané de 4 axes
- Contrôle du bras par joystick
Photos
Participants
Non exhaustif :
- Jérôme
- Claude
- Fx
- David
- Cédric
- Julien
- Nicolas
- Raoul
- Rolland