GBC - EV3 WRIT3R

Fais-nous partager tes créations !
Répondre
Avatar du membre
vinc
Membre
Membre
Messages : 550
Enregistré le : 12 nov. 2014 16:16
Exposant : Oui
Bulk2015 : Oui
Bulk2016 : Oui
Bulk2017 : Oui

GBC - EV3 WRIT3R

Message par vinc »

Bonjour à tous,


Je prends enfin le temps de faire une review de mon module GBC.

Image

Le but du module est d’écrire du texte avec les balles à l’aide d’un EV3, d’où son nom : "EV3 WRIT3R".

L’idée n’est pas de moi, j’avais vu le module Multiplex de sqiddster (http://www.eurobricks.com/forum/index.p ... opic=72575) et j’ai eu l’envie de faire le mien, le principe étant le même.

Je n’ai pas de ballon officiel Lego en quantité suffisante, j’utilise des perles ayant les mêmes caractéristiques, pour ce module elles sont noires et blanches.

Je préviens par avance, la review est longue et dense, mais complète et détaillée !

Cahier des charges :
Etude :
  • Pour les mécanismes, rien de mieux que de s’inspirer du meilleur ! Je potasse les vidéos d’akiyuky et d’autre GBC pour connaitre les techniques sur le sujet, les structures de châssis, etc.
    Définir l’écriture des caractères (une feuille Excel avec des cellules en forme de carré pour avoir un aperçu)
    Définir la trame de programmation et les différentes étapes.
Finalité :
  • - L’écriture doit être de 5 balles de haut
    - L’écriture d’un caractère ou chiffre se fait sur 3 balles de large tant que possible. La lettre K sur 4 balles de large, M N W sont sur 5 balles de large.
    - L’espace de texte est de 40 balles de large (environ 10 caractères), la limite est la longueur du plateau qui stocke les balles.
    - L’écriture se fait avec les balles blanches, le fond/l’arrière plan avec des balles noires.
    - Séquencer mécaniquement les manipulations des balles pour limiter le nombre de moteur.
Le module doit :
  • - Permettre de choisir son texte sur l’EV3 (avec des textes prédéfinis, exemple LEGO)
    - Calculer de la séquence de balles par ligne
Ressources nécessaires:
  • - ~200 balles
    - De la brique..
    - EV3
    - De la patience pour le logiciel EV3….
Architecture fonctionnelle du MOC :
Entrée :
  • Le module n’intègre pas le trieur de couleur, il suppose avoir en entrée les balles déjà triées dans deux rails distincts.
    Note : Après réflexion une V2 intégrera le trieur de couleur en amont pour que le MOC n’ait pas de dépendance d’une autre MOC
    Image Image
Sélection de balle + vérification :
  • Mécanisme
    • Voici l’architecture de cette partie :
      Image

      Le moteur est lié aux liftarm 3x3 L (Image) et par sa rotation actionne les knob (Image) décrits ci-après. (En bleu ce sont les continuités des axes)

      Ici un seul moteur est nécessaire pour les trois « fonctions »
      - choisir une balle noire : ce que je nommerai sélecteur noir
      - choisir une balle blanche : ce que je nommerai sélecteur blanc
      • Image
      - stopper la balle pour vérifier la couleur : ce que je nommerai le vérificateur (sur la photo il est en état "libéré")
      • Image
      J’utilise des knob associés à des liftarm 2x4 avec un élastique afin d’avoir une position fixe tous les 90° pour chacune des 3 fonctions.
      • Image
      En position centrale, les deux « sélecteurs » de balle ont chacun une balle de « chargée » et le « vérificateur » est en état libéré.
      • Image
      Si choix d’une noire, rotation gauche du moteur, les 3x3L font tourner de 1/4 de tour le knob vérificateur pour le passer en état « stoppé » puis font tourner de 1/4 de tour le knob sélecteur noir.
      La balle descend jusqu’au vérificateur.
      • Image
      Le capteur de couleur confirme ou non la couleur de la balle.
      • - Si KO on enlève manuellement la balle.
        - Si pas de balle, on revient en postion centrale pour prendre la suivante (jusqu’à ce qu’il y en ait une).
        - Si OK rotation inverse qui fait tourner de 1/4 de tour le knob sélecteur noir pour recharger la balle suivante puis fait tourner de 1/4 de tour le knob vérificateur pour le passer en état « libéré ». Ainsi la balle descend sur le chargeur du plateau.
      • Image
      Si choix d’une blanche, c’est identique sauf que la rotation se fait de l’autre coté. Les étapes sont mécaniquement les mêmes.
      • Image
      • Image
      Annimation
      • Image
    Logiciel
    • Suite à plusieurs rotations les moteurs EV3 ont la fâcheuse tendance à engendrer un déphasage (si vous faites plusieurs fois +90° -90° le moteur ne reviendra pas à la position initiale), pour l’éviter j’ai mis une butée avec un capteur de pression pour la sélection d’une balle du rail de gauche. Cette méthode me permet de réinitialiser la position du moteur à chaque sélection d’une balle du rail de gauche.
      Poition centrale
      • Image
      Position gauche en butée du capteur de pression (selection balle noire)
      • Image
Les rails d’écriture :
  • Mécanisme
    • Une fois que le sélecteur a envoyé la séquence de 5 balles, les 5 balles sont poussées par des slope 1x1. Les slopes sont importants car les rails d’écriture sont espacés de 2 tenons soit 15.8mm et les balles font 14mm, sur 5 balles on arrive à 70mm contre 5x2tenons = 79, il y a donc un décalage. Les slope permettent de centrer la balle par rapport au rail.
      Annimation
      • Image

      Ici j’utilise une seconde technique pour calibrer le moteur qui pousse les slope. J’ai une butée en position basse et position haute et je connais la rotation (R) pour faire position basse vers position haute. Grâce à une Clutch 24t j’initialise en faisant une rotation de +R° (vers position haute) puis -R° (vers position basse), ainsi quelque soit la position initiale je m’assure d’être dans la position basse avant de recevoir le séquencement des balles.
Programmation :
Le programme est scindé en 2 étapes, sinon la quantité d’objet géré fait planter l’EV3….
Sélection du texte :
  • Sur l’écran, on choisit caractère par caractère le texte à écrire. Il y a de A à Z, de 0 à 9 et quelque ponctuation, espacement. Il y a une fonction d’effacement d’un caractère.
    • Image
    Annimation
    • Image
Ecriture du texte :
    • Image
    Chaque caractère est traduit en séquence de balle.

    Prenons l’exemple du A, en considérant que 1=écriture, 0=l’arrière plan, on traduit cela :
    Ligne1= 010
    Ligne2= 101
    Ligne3= 111
    Ligne4= 101
    Ligne5= 101

    Ainsi l’affichage en balle donnerait (écriture = balles blanches, arrière plan = balles noires) :
    OOO
    OOO
    OOO
    OOO
    OOO


    Cette traduction est faite pour tous les caractères : de A à Z, 0 à 9 et la ponctuation.

    Suite à la saisie, le programme analyse le texte à écrire pour déterminer la séquence des balles noires/blanches.

    Le MOC pousse les balles, par conséquent l’affichage sur le plateau se fait en sens inverse, on écrit la dernière lettre en premier.
    Note : Dans la v2 je verrai s’il y a possibilité d’écrire en commençant par la première lettre.

    Prenons l’exemple d’écrire LEGO :
    • 1. Le programme va prendre chaque lettre et y insérer un espacement (traduit par une colonne de balles noires) entre chaque lettre.
      • Ainsi, la finalité est :


        OOOOOOOOOOOOOOO
        OOOOOOOOOOOOOOO
        OOOOOOOOOOOOOOO
        OOOOOOOOOOOOOOO
        OOOOOOOOOOOOOOO
      2. Le programme va créer la séquence de balle pour chaque ligne
      • La séquence est

        Code : Tout sélectionner

        Ligne1 : 100011101110111
        Ligne2 : 100010001000101
        Ligne3 : 100011001010101
        Ligne4 : 100010001010101
        Ligne5 : 111011101110111
        
        Le but est d’écrire colonne par colonne en commençant par la dernière colonne, et par la dernière ligne
      3. Le programme en déduit le nombre de colonne, ici nbColonne=15
      4. Il positionne un avancement à 0
      5. Il prend comme séquence de balle la valeur de la colonne "nbColonne-avancement" en commençant par la dernière ligne (Ligne 5)
      • Donc :
        1ere balle : Ligne5 [nbColonne-avancement] = Ligne5 [15-0] = Ligne5 [15] = 1 = O
        2eme balle : Ligne4 [nbColonne-avancement] = Ligne4 [15-0] = Ligne4 [15] =1 = O
        3eme balle : Ligne3 [nbColonne-avancement] = Ligne3 [15-0] = Ligne3 [15] = 1 = O
        4eme balle : Ligne2 [nbColonne-avancement] = Ligne2 [15-0] = Ligne2 [15] = 1 = O
        5eme balle : Ligne1 [nbColonne-avancement] = Ligne1 [15-0] = Ligne1 [15] = 1 = O

        La séquence va donc être 5 balles couleur écriture, donc 5 balles blanches

        On incrémente avancement de 1 : avancement=1
      6. On continue avec la colonne suivante : Il prend comme séquence de balle la valeur de la colonne "nbColonne-avancement" en commençant par la dernière ligne (Ligne 5)
      • Donc :
        1ere balle : Ligne5 [nbColonne-avancement] = Ligne5 [15-1] = Ligne5 [14] = 1 = O
        2eme balle : Ligne4 [nbColonne-avancement] = Ligne4 [15-1] = Ligne4 [14] = 0 = O
        3eme balle : Ligne3 [nbColonne-avancement] = Ligne3 [15-1] = Ligne3 [14] = 0 = O
        4eme balle : Ligne2 [nbColonne-avancement] = Ligne2 [15-1] = Ligne2 [14] = 0 = O
        5eme balle : Ligne1 [nbColonne-avancement] = Ligne1 [15-1] = Ligne1 [14] = 1 = O

        La séquence va donc être 1 balle couleur écriture, 3 balles couleur arrière plan, 1 balles couleur écriture : 1 balle blanche, 3 balles noires, 1 balles blanche.
      On poursuit jusqu’à ce que avancement=nbColonne
    Voici une animation de ce qui est fait : (Pour les curieux c’est fait par un shell sous linux)


Vidéo :

(Désolé pour la qualité de la vidéo, je n’ai pas encore de matériel… adéquat !)
L’écriture de LEGO dure environ 4 minutes
[youtubehd]http://youtu.be/4jWr4ASJarc[/youtubehd]


Améliorations à faire :

J’ai identifié quelques axes d’amélioration pour ce MOC.
L’écriture du texte :
  • L’écriture avec les balles se fait en sens inverse. J’avais imaginé cela car je souhaitais que le chemin des balles soit de gauche vers la droite, mais je constate que c’est moins lisible de voir l’avancement en commençant par la fin.
Dépendance du MOC :
  • Le MOC est actuellement « dépendant » d’un second MOC trieur en amont pour avoir les deux rails de balle en entrée, ce qui fait un peu « riche » car suppose avoir un second MOC avec un EV3. Ici j’utilise le capteur de couleur comme vérificateur de couleur et/ou présence d’une balle. J’ai déjà imaginé la V2 avec
    1. Bac d’entrée, les balles arrivent sur un rail
    2. Le capteur de couleur trie les balles : blanche = rail1, noire = rail2, autre = rail 3 = rejet
    3. L’ev3 enregistre le nombre de balles blanches/noires dans chaque rail
    4. Même moulinette qu’avant avec les deux rails d’entrée, à l’exception qu’il n’y a plus de vérificateur post sélection de la balle, mais cela sera fait avant.
    Ainsi j’aurai un moc indépendant
Bac de sortie :
  • Ce MOC a comme inconvénient dans un circuit de stocker les balles et de nécessiter une grande quantité de balle. De plus mon objectif et d’envoyer les balles le plus rapidement possible sur le plateau d’écriture, donc (j’espère) un rythme plus soutenu que le débit normé de 1 balle / seconde du GBC. Je pense donc le faire en circuit « semi-fermé ». Les balles présentes sur le plateau d’écriture retourneront dans le bac d’entrée.
    - Soit le MOC en entrée ne prend qu’une balle sur deux pour écrire : Evite de trop solliciter le capteur de couleur
    - Soit le MOC fera en sorte de réguler la sortie a une balle par seconde avec les balles en rejet (autre couleur) et complète avec des balles blanches ou noires
Programmation :
  • Programmation. Le MOC a été fait sous le logiciel fournit par Lego, donc autant dire merdique dès lors que le programme est conséquent. Il est actuellement fait en deux parties : Sélection du texte et Ecriture du texte. J’ai récemment découvert qu’il était possible de faire tourner la brique sous linux (ev3dev), pour la v2 je ré-écrierai certainement le programme sous shell qui est un langage que je maitrise (et qui est simple d’utilisation).

Si vous avez des questions ou des améliorations à proposer (choix des couleurs, lisibilité du MOC, mécanisme, etc.), n’hésitez pas, j’en prendrai note dans l’étude de la version 2. Pour info, je compte l’amener pour fanabrick fin juin.
Avatar du membre
oracid
Membre
Membre
Messages : 384
Enregistré le : 30 nov. 2014 08:06
Bulk2016 : Oui
Bulk2017 : Oui
Localisation : Val d'Oise

Re: GBC - EV3 WRIT3R

Message par oracid »

Beau boulot !
Répondre