« IllustraBot2 » : différence entre les versions

De Kernel Fablab Lannion
mAucun résumé des modifications
 
(36 versions intermédiaires par 4 utilisateurs non affichées)
Ligne 4 : Ligne 4 :
== Présentation ==
== Présentation ==
[[File:concept.svg|200px|gauche]]
[[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 !


Ligne 12 : Ligne 12 :
== Architecture ==
== Architecture ==
[[File:archi.png|500px]]
[[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 : (au moins 2) à acheter
* 6 drivers moteur pas à pas
* un smartphone 4G : don Alcatel-Lucent
* un smartphone 4G : don Alcatel-Lucent


Ligne 23 : Ligne 32 :


=== TODO ===
=== TODO ===
* commande drivers : Urgent => Jerome, cedric
* encore plein de choses :)
* classeur de documentation : jerome
* taper alu: cedric
 


== ETAT MOTEURS ==
== ETAT MOTEURS ==
Ligne 49 : Ligne 55 :


NB: inversion fils rouge(+5V) / noir (GND) fait
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 ==
== CARTE DE CONNECTION ==
Ligne 56 : Ligne 67 :
* 6 entrées avec adaptation 5V->3.3V
* 6 entrées avec adaptation 5V->3.3V
* 3 à 4 alimentations ( 5V/3.3 V/ 12 volts ou plus)
* 3 à 4 alimentations ( 5V/3.3 V/ 12 volts ou plus)
** prévoir capacité autour du 5V
** prévoir capacité autour du 5V ( 10 µF ou + )
** prévoir capacité autour du 3.3V des transistors de l'adaptation  
** 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 ( VDD et VMOT )
** 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 :
** 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 )
***  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 )
Ligne 66 : Ligne 77 :
* liste composant : nico, claude, jerome
* liste composant : nico, claude, jerome
* voir carte controle moteur de la fraisseuse CNC
* voir carte controle moteur de la fraisseuse CNC
* regarder IO beaglebone => nico, claude, jérome
* 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:
* question:
** le 3.3V peut-il provenir de la beaglebone ? => action: nico, claude
** le 3.3V peut-il provenir de la beaglebone ? => action: nico, claude
*** si oui, quel amperage ?  besoin X mA = 60 mA (led) + 6 x driver  
*** 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 )
** 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 ==
== Logiciel ==


=== Commande du bras ===
=== Commande du bras ===
3 axes de commande avec le gyroscope :
3 axes de commande avec le [http://en.wikipedia.org/wiki/Aircraft_principal_axes gyroscope android] :
*  
* azimuth ???
*  
* pitch -180:180
*  
* roll -90:90


Exemples :
Exemples :
* [http://youtu.be/ZhIoyLxZLv4?t=1m50s avec un nunchuk] (coupez le son)
* [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 ===
* 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)
* [ANDROID]  
* préparer [https://github.com/fablab-lannion/IllustraBot2 forge logicielle] : jerome, OK
      - 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]]
* définir protocole de communication : Jérôme, en cours [[IllustraBot2:protocole]]
* Étudier une solution basée sur LinuxCNC : FX
* É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 ===
=== Code source ===
Ligne 139 : Ligne 202 :
** carte de [https://github.com/fablab-lannion/IllustraBot2/blob/master/DOC/schema_carte_detection.pdf?raw=true détection]
** carte de [https://github.com/fablab-lannion/IllustraBot2/blob/master/DOC/schema_carte_detection.pdf?raw=true détection]
* Hardware
* Hardware
** BeagleBone [http://elinux.org/Beagleboard:BeagleBoneBlack Black]
** BeagleBone [http://elinux.org/Beagleboard:BeagleBoneBlack Black PCB RevB5]
*** shema + System reference manual [http://beagleboard.org/static/beaglebone/latest/Docs/Hardware/BeagleBone_Black_DOCS.zip]
*** [http://beagleboard.org/static/beaglebone/latest/Docs/Hardware/BeagleBone_Black_DOCS.zip shema + System reference manual]
*** Processeur TI [http://www.ti.com/product/am3358]
*** Processeur TI [http://www.ti.com/product/am3358 am3358]
*** [https://github.com/derekmolloy/boneDeviceTree/tree/master/docs headers]
** [http://www.schmalzhaus.com/EasyDriver/ EasyDriver]
** [http://www.schmalzhaus.com/EasyDriver/ EasyDriver]
** datasheets & co sur le [https://github.com/fablab-lannion/IllustraBot2/tree/master/DOC github]
** datasheets & co sur le [https://github.com/fablab-lannion/IllustraBot2/tree/master/DOC github]
Ligne 152 : Ligne 216 :


=== Vidéos ===
=== 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
* [http://www.dailymotion.com/video/x1a73h9_illustrabot2-controle-du-bras-par-joystick_tech Contrôle du bras] par joystick


Ligne 182 : Ligne 247 :
* Nicolas
* Nicolas
* Raoul
* Raoul
* Rolland


[[Category:Projet]] [[Category:IllustraBot2]]
[[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