« IllustraBot2 » : différence entre les versions
mAucun résumé des modifications |
|||
(68 versions intermédiaires par 4 utilisateurs non affichées) | |||
Ligne 3 : | Ligne 3 : | ||
== Présentation == | == Présentation == | ||
[[File:concept.svg|200px|gauche]] | |||
Un an après [[IllustraBot]], les Bell Labs relancent une expérimentation 4G. | Un an après [[IllustraBot]], les Bell Labs relancent une [http://alu-streamz.mobi/ expérimentation 4G]. | ||
Il est temps de le faire évoluer ! | 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. | Cette fois, l'idée générale est de commander un bras robotisé à l'aide des mouvements d'un téléphone. | ||
{{clr}} | |||
== Architecture == | |||
[[File:archi.png|500px]] | |||
== 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 == | == Matériel == | ||
* un bras robotisé : don du Lycée Le Dantec | * un bras robotisé MultiSoft de 1988 : don du Lycée Le Dantec | ||
* une beagleboard / clef+sim 4G : don des Bell Labs | * une beagleboard / clef+sim 4G : don des Bell Labs | ||
* 6 drivers moteur pas à pas | |||
* un smartphone 4G : don Alcatel-Lucent | * un smartphone 4G : don Alcatel-Lucent | ||
=== TODO | * [https://github.com/fablab-lannion/IllustraBot2/blob/master/DOC/bras_illustration.pdf?raw=true schéma robot] | ||
* | |||
* | === TODO === | ||
* | * encore plein de choses :) | ||
* regarder IO beaglebone | |||
* | == 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 [https://github.com/fablab-lannion/IllustraBot2/blob/master/DOC/a4988_DMOS_microstepping_driver_with_translator.pdf 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 [https://github.com/derekmolloy/boneDeviceTree/tree/master/docs 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. | |||
== BeagleBone Black == | |||
lien utile... | |||
* [http://elinux.org/BeagleBoardDebian#BeagleBone.2FBeagleBone_Black install SD] | |||
* [http://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD extension SD card] | |||
* [http://thethingsystem.com/dev/Bootstrapping-the-BeagleBone-Black-with-Debian.html usb connection...] | |||
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 [http://en.wikipedia.org/wiki/Aircraft_principal_axes gyroscope android] : | |||
* azimuth ??? | |||
* pitch -180:180 | |||
* roll -90:90 | |||
Exemples : | |||
* [http://youtu.be/ZhIoyLxZLv4?t=1m50s avec un nunchuk] (coupez le son) | |||
=== Application Mobile === | |||
Afin de simplifier la réalisation du frontend, on utilise le framework ionic. Le tutorial ci-dessous montre la phase d'installation ( un peu fastidieuse ) pour windows: | |||
http://learn.ionicframework.com/videos/windows-android/ | |||
1) démarrer le serveur ionic pour obtenir le rendu sur votre navigateur chrome (ionic serve ) | |||
2) configurer la taille d'écran pour obtenir la résolution smartphone ( http://aya.io/blog/chrome-dev-tools/ pour + d'infos ) | |||
3) une fois les modifications apportées sur le front end, synchroniser le projet android ( ionic build android ) | |||
=== TODO === | === 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 | |||
- mémoriser adresse ip et port | |||
- faire la chasse aux indiens | |||
forge logicielle: [https://github.com/fablab-lannion/IllustraBot2 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 [https://github.com/fablab-lannion/IllustraBot2 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 : | |||
* [https://github.com/jadonk/validation-scripts/tree/master/test-capemgr exemple de configuration du mux] | |||
* [http://forum.beaglefu.com/topic/26-beaglebone-black-using-devicetrees-to-expose-gpio-pin-functions/ post de forum] d'un mec qui suit le cheminement | |||
* [http://pinmux.tking.org/index.html recherche] qui permet de trouver l'adresse du registre | |||
* chez [http://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/overview adafruit] très bien fait comme d'hab | |||
=== | Le package debian ''device-tree-compiler'' n'est pas bon [http://eewiki.net/display/linuxonarm/BeagleBone+Black#BeagleBoneBlack-Upgradedistro%22device-tree-compiler%22package 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 == | == Évolutions possibles == | ||
* Docteur maboule ? | * Docteur maboule ? | ||
* construction 3D -> maison pour les enfants : [http://www.dailymotion.com/video/x16z3rg_cite-des-sciences-bras-robotique_tech comme ça] | |||
== Bilbiographie == | == Bilbiographie / documentation == | ||
* Dossiers de TP sur [[:File:bobyLeRobot.pdf|BobbyLeRobot]] | |||
* Commande du bras avec un [[:File:chap03.pdf|TO7/70]] :) | |||
* Documentation obtenue par ingénierie inversée | |||
** [https://github.com/fablab-lannion/IllustraBot2/blob/master/DOC/bras_illustration.pdf?raw=true Bras & moteurs] | |||
** carte de [https://github.com/fablab-lannion/IllustraBot2/blob/master/DOC/schema_carte_detection.pdf?raw=true détection] | |||
* Hardware | |||
** BeagleBone [http://elinux.org/Beagleboard:BeagleBoneBlack Black PCB RevB5] | |||
*** [http://beagleboard.org/static/beaglebone/latest/Docs/Hardware/BeagleBone_Black_DOCS.zip shema + System reference manual] | |||
*** Processeur TI [http://www.ti.com/product/am3358 am3358] | |||
*** [https://github.com/derekmolloy/boneDeviceTree/tree/master/docs headers] | |||
** [http://www.schmalzhaus.com/EasyDriver/ EasyDriver] | |||
** datasheets & co sur le [https://github.com/fablab-lannion/IllustraBot2/tree/master/DOC github] | |||
* How-To's | |||
** Tutorial [https://www.youtube.com/watch?v=gqrjtB2cmu8 vidéo] BB+EasyDriver+stepper motor ([https://github.com/derekmolloy/beaglebone code source]) | |||
{{clr}} | |||
== Médias == | |||
=== Vidéos === | |||
* [http://www.dailymotion.com/video/x1hlmol_illustrabot2-controle-de-4-axes-par-joystick_tech Contrôle simultané de 4 axes] | |||
* [http://www.dailymotion.com/video/x1a73h9_illustrabot2-controle-du-bras-par-joystick_tech Contrôle du bras] par joystick | |||
== Photos == | === Photos === | ||
<gallery> | <gallery> | ||
Fichier:20140106 125232.jpg|Le bras à piloter | Fichier:20140106 125232.jpg|Le bras à piloter | ||
Fichier:20140106 133549.jpg|Carte de commande | Fichier:20140106 133549.jpg|Carte de commande | ||
Image:20140108_212028.jpg|Épaule et commande | |||
Image:20140108_212035.jpg|2 moteurs | |||
Image:20140108_212044.jpg|Intérieur coude | |||
Image:20140108_212050.jpg|Intérieur épaule | |||
Image:20140108_212058.jpg|2 autres moteurs | |||
Image:20140108_212108.jpg|Poignet et pince | |||
Image:20140108_212128.jpg|Intérieur pince | |||
Image:20140108_212922.jpg|Bras | |||
Image:20140108_213142.jpg|Intérieur de la base | |||
Image:20140108_213325.jpg|Intérieur de la base | |||
Image:20140108_230046.jpg|Fablab:1, Bras:0 | |||
</gallery> | </gallery> | ||
Ligne 60 : | Ligne 246 : | ||
* Julien | * Julien | ||
* Nicolas | * Nicolas | ||
* Raoul | |||
* Rolland | |||
[[Category:Projet]] | [[Category:Projet]] [[Category:IllustraBot2]] |
Version actuelle datée du 25 novembre 2014 à 14:41
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)
Application Mobile
Afin de simplifier la réalisation du frontend, on utilise le framework ionic. Le tutorial ci-dessous montre la phase d'installation ( un peu fastidieuse ) pour windows: http://learn.ionicframework.com/videos/windows-android/
1) démarrer le serveur ionic pour obtenir le rendu sur votre navigateur chrome (ionic serve )
2) configurer la taille d'écran pour obtenir la résolution smartphone ( http://aya.io/blog/chrome-dev-tools/ pour + d'infos )
3) une fois les modifications apportées sur le front end, synchroniser le projet android ( ionic build android )
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 - mémoriser adresse ip et port - faire la chasse aux indiens
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