« IllustraBot » : différence entre les versions

De Kernel Fablab Lannion
mAucun résumé des modifications
Aucun résumé des modifications
 
(10 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
[[File:illustrabot.jpg|400px|droite]]
[http://fablab-lannion.org/2013/01/illustrabot-un-dessinateur-sans-fil/ Plus d'informations]
[http://fablab-lannion.org/2013/01/illustrabot-un-dessinateur-sans-fil/ Plus d'informations] sur le projet.
 
== Code ==


Le code est disponible dans notre dépôt [https://github.com/fablab-lannion/IllustraBot github].
Le code est disponible dans notre dépôt [https://github.com/fablab-lannion/IllustraBot github].
Ligne 14 : Ligne 12 :
Plus d'information sur [[Github]]
Plus d'information sur [[Github]]


== Serveur WebSocket sur RPi ==


== Principe de Fonctionnement==
A partir d'un smartphone connecté en 4G, une interface graphique permet à l'utilisateur de laisser  libre à cours à son imagination: du mouton au coeur en passant par le carré bien de chez nous, dessin libre :-)
Ce dessin est ensuite reproduit en temps réel par un robot hautement perfectionné, à savoir un crayon suspendu par deux fils de pêche motorisés :-)
== Architecture Globable==
L'objectif de ce ce projet n'était pas de valider les talents artistiques de notre communauté naissante (quoique...) mais d'intégrer dans le cadre d'un premier projets plusieurs briques technologiques:
- application androïd ( parceque qu'Iphone c'est as been :-p )
- conversion du dessin en commandes Gcode ( protocole utilisé notamment dans le pilotage d'imprimantes 3D)
- liaison par websocket par protocole radio 4G/LTE (parceque ca va super vite)
- réception sur raspberri Pi par un serveur websocket
- transmission des commandes Gcodes par SPI à un arduino
- décapsulation des commandes Gcode et pilotage des 2 moteurs par PWM
== Application Androïd==
Les sources sont basées sur le projet https://github.com/mattstock/android-tinyg , permettant de piloter une carte par Gcode.
On a donc dans ce projet déjà plusieurs briques de présentes ( le squelette, la transmission de commandes Gcodes) , auquel on a ensuite ajouté:
- une communication par websocket
- quelques paramètres de tests pour pouvoir valider la chaîne sans trop stresser l'arduino ( il fait ce qu'il peut le pauvre...): envoi de commande unitaire, envoi de commandes en mode rampe toutes les x ms
- quelques paramètres de configuration pour indiquer l'adress IP, son port, et autres curiosités de ce genre
Plus de détails sous github ;-)
== Arduino==
TBC, voir sources pour le détail en attendant la suite...
== Serveur WebSocket sur RPi==
(Inspiré de la page: [http://lowpowerlab.com/blog/2013/01/17/raspberrypi-websockets-with-python-tornado/ Lowpowerlab])
(Inspiré de la page: [http://lowpowerlab.com/blog/2013/01/17/raspberrypi-websockets-with-python-tornado/ Lowpowerlab])


=== Installation ===
Installation de la librairie Python Tornado
Installation de la librairie Python Tornado
  pi@raspberrypi ~ $ sudo aptitude update
  pi@raspberrypi ~ $ sudo aptitude update
  pi@raspberrypi ~ $ sudo aptitude install python-pip
  pi@raspberrypi ~ $ sudo aptitude install python-pip python-dev
  pi@raspberrypi ~ $ sudo pip install Tornado
  pi@raspberrypi ~ $ sudo pip install Tornado
pi@raspberrypi ~ $ cd IllustraBot/RaspberryPi/pyserial-2.6
pi@raspberrypi ~/IllustraBot/RaspberryPi/pyserial-2.6 $ python setup.py install
pi@raspberrypi ~/IllustraBot/RaspberryPi/pyserial-2.6 $ cd ../SPI-Py
pi@raspberrypi ~/IllustraBot/RaspberryPi/SPI-py $ python setup.py install
=== Configurer le serveur ===
L'objectif est de donner au serveur websocket le type d'interface et les modifications à faire sur le gcode.
* botname = 'test' # défini le type de robot à utiliser (parmi la liste suivante)
* sourceMaxX = 500 # la valeur max de l'axe X sur la source
* sourceMaxY = 700 # la valeur max de l'axe Y sur la source
* config = ... défini la liste possible des robots configurés
Les types de robots sont:
* 'type' : 'dev'
** pour les connexions série (type arduino)
** champs liés:
*** 'arduinoDev': '/dev/ttyUSB0',
*** 'arduinoDevSpeed': 115200,
* 'type': 'socket',
** pour les connexions gcode over socket (exemple: parrot)
** champs liés:
***'socketIP': '192.168.1.100'
***'socketPort': 9999,
* 'type': 'file',
** pour envoyer le gcode dans un fichier
** champs liés:
***'file': '/tmp/gcode'
* 'type': 'spi',
** pour envoyer le gcode sur un dev SPI
** champs liés:
*** aucun (pour le moment)


Les autres champs à configurer pour chaque robot:
* 'sizeX': la taille de l'axe X du robot
* 'sizeY': la taille de l'axe Y du robot
* 'inverseAxes': inverser l'axe Y et Z (0 ou 1)
* 'trapezeFactor': si projection trapezoidale, facteur de multiplication du segment haut du trapeze,
* 'floor': passer le gcode de flottant à entier (0 ou 1)
* 'moveToLenght': transformer les coordonnées cartésiennes en longueurs pour les robots à base de poulies,
* 'extraLenght': longueur à ajouter
Lancer le serveur (inclus dans le dépot Git):
Lancer le serveur (inclus dans le dépot Git):
  python IllustraBot/RaspberryPi/websocket-server.py &
  pi@raspberrypi ~/IllustraBot/RaspberryPi/ $ python websocket-server.py &


''NOTE: Le serveur websocket est fonctionnel et log les messages reçus, il reste a réorienter le flux vers un fichier /dev.''
''NOTE: Le serveur websocket est fonctionnel et transmet le GCode vers un port série''


[[Categorie:IllustraBot]]
[[Category:Projet]] [[Category:IllustraBot]]

Version actuelle datée du 16 mars 2014 à 16:36

Illustrabot.jpg

Plus d'informations sur le projet.

Le code est disponible dans notre dépôt github.

Pour accéder en écriture au dépôt, il vous faut créer un compte github puis demander à user:jerome de vous ajouter en tant que collaborateur (pensez à donner votre user github).

Une fois ceci fait, vous pouvez récupérer le code en local :

git clone https://github.com/fablab-lannion/IllustraBot.git
cd IllustraBot

Plus d'information sur Github


Principe de Fonctionnement

A partir d'un smartphone connecté en 4G, une interface graphique permet à l'utilisateur de laisser libre à cours à son imagination: du mouton au coeur en passant par le carré bien de chez nous, dessin libre :-) Ce dessin est ensuite reproduit en temps réel par un robot hautement perfectionné, à savoir un crayon suspendu par deux fils de pêche motorisés :-)

Architecture Globable

L'objectif de ce ce projet n'était pas de valider les talents artistiques de notre communauté naissante (quoique...) mais d'intégrer dans le cadre d'un premier projets plusieurs briques technologiques: - application androïd ( parceque qu'Iphone c'est as been :-p ) - conversion du dessin en commandes Gcode ( protocole utilisé notamment dans le pilotage d'imprimantes 3D) - liaison par websocket par protocole radio 4G/LTE (parceque ca va super vite) - réception sur raspberri Pi par un serveur websocket - transmission des commandes Gcodes par SPI à un arduino - décapsulation des commandes Gcode et pilotage des 2 moteurs par PWM


Application Androïd

Les sources sont basées sur le projet https://github.com/mattstock/android-tinyg , permettant de piloter une carte par Gcode. On a donc dans ce projet déjà plusieurs briques de présentes ( le squelette, la transmission de commandes Gcodes) , auquel on a ensuite ajouté: - une communication par websocket - quelques paramètres de tests pour pouvoir valider la chaîne sans trop stresser l'arduino ( il fait ce qu'il peut le pauvre...): envoi de commande unitaire, envoi de commandes en mode rampe toutes les x ms - quelques paramètres de configuration pour indiquer l'adress IP, son port, et autres curiosités de ce genre

Plus de détails sous github ;-)

Arduino

TBC, voir sources pour le détail en attendant la suite...


Serveur WebSocket sur RPi

(Inspiré de la page: Lowpowerlab)


Installation

Installation de la librairie Python Tornado

pi@raspberrypi ~ $ sudo aptitude update
pi@raspberrypi ~ $ sudo aptitude install python-pip python-dev
pi@raspberrypi ~ $ sudo pip install Tornado
pi@raspberrypi ~ $ cd IllustraBot/RaspberryPi/pyserial-2.6
pi@raspberrypi ~/IllustraBot/RaspberryPi/pyserial-2.6 $ python setup.py install
pi@raspberrypi ~/IllustraBot/RaspberryPi/pyserial-2.6 $ cd ../SPI-Py
pi@raspberrypi ~/IllustraBot/RaspberryPi/SPI-py $ python setup.py install

Configurer le serveur

L'objectif est de donner au serveur websocket le type d'interface et les modifications à faire sur le gcode.

  • botname = 'test' # défini le type de robot à utiliser (parmi la liste suivante)
  • sourceMaxX = 500 # la valeur max de l'axe X sur la source
  • sourceMaxY = 700 # la valeur max de l'axe Y sur la source
  • config = ... défini la liste possible des robots configurés

Les types de robots sont:

  • 'type' : 'dev'
    • pour les connexions série (type arduino)
    • champs liés:
      • 'arduinoDev': '/dev/ttyUSB0',
      • 'arduinoDevSpeed': 115200,
  • 'type': 'socket',
    • pour les connexions gcode over socket (exemple: parrot)
    • champs liés:
      • 'socketIP': '192.168.1.100'
      • 'socketPort': 9999,
  • 'type': 'file',
    • pour envoyer le gcode dans un fichier
    • champs liés:
      • 'file': '/tmp/gcode'
  • 'type': 'spi',
    • pour envoyer le gcode sur un dev SPI
    • champs liés:
      • aucun (pour le moment)

Les autres champs à configurer pour chaque robot:

  • 'sizeX': la taille de l'axe X du robot
  • 'sizeY': la taille de l'axe Y du robot
  • 'inverseAxes': inverser l'axe Y et Z (0 ou 1)
  • 'trapezeFactor': si projection trapezoidale, facteur de multiplication du segment haut du trapeze,
  • 'floor': passer le gcode de flottant à entier (0 ou 1)
  • 'moveToLenght': transformer les coordonnées cartésiennes en longueurs pour les robots à base de poulies,
  • 'extraLenght': longueur à ajouter

Lancer le serveur (inclus dans le dépot Git):

pi@raspberrypi ~/IllustraBot/RaspberryPi/ $ python websocket-server.py &

NOTE: Le serveur websocket est fonctionnel et transmet le GCode vers un port série