« IllustraBot2 » : différence entre les versions

De Kernel Fablab Lannion
(Page créée avec « '''Il revient et il a plus de dents !!''' »)
 
mAucun résumé des modifications
 
(79 versions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[File:20140106_125232.jpg|400px|droite]]
'''Il revient et il a plus de dents !!'''
'''Il revient et il a plus de dents !!'''
== Présentation ==
[[File:concept.svg|200px|gauche]]
Un an après [[IllustraBot]], les Bell Labs relancent une [http://alu-streamz.mobi/ 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.
{{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 ==
* 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
* [https://github.com/fablab-lannion/IllustraBot2/blob/master/DOC/bras_illustration.pdf?raw=true schéma robot]
=== 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 [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 ===
* [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 ==
* Docteur maboule ?
* construction 3D -> maison pour les enfants : [http://www.dailymotion.com/video/x16z3rg_cite-des-sciences-bras-robotique_tech comme ça]
== 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 ===
<gallery>
Fichier:20140106 125232.jpg|Le bras à piloter
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>
== Participants ==
Non exhaustif :
* Jérôme
* Claude
* Fx
* David
* Cédric
* Julien
* Nicolas
* Raoul
* Rolland
[[Category:Projet]] [[Category:IllustraBot2]]

Version actuelle datée du 25 novembre 2014 à 14:41

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
  • 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.

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 :


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

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