GBC EV3 Writ3r

Présentez-nous vos créations...
Avatar de l’utilisateur
Vinz
Level 6
Level 6
 
Messages: 371
Localisation: Nancy
Âge: 37 ans

Messagepar Vinz » Dim Avr 03, 2016 5:03 pm

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.php?showtopic=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


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.
Dernière édition par Vinz le Lun Avr 04, 2016 10:57 pm, édité 1 fois au total.

ted1057
Level 3
Level 3
 
Messages: 43
Localisation: Metz-Verdun
Âge: 42 ans

Messagepar ted1057 » Dim Avr 03, 2016 10:40 pm

Très beau travail :ooo:

method
Level 6
Level 6
 
Messages: 287
Localisation: Région parisienne
Âge: 41 ans

Messagepar method » Lun Avr 04, 2016 1:57 am

Quel boulot de dingue ! Bravo !!

Tofe59
Level 6
Level 6
 
Messages: 345
Localisation: Douaisis
Âge: 40 ans

Messagepar Tofe59 » Lun Avr 04, 2016 9:14 am

MOC vraiment bien, et la review est super. Merci
Tu pourrais nous faire un imprime-écran du logiciel (zoom au mini) pour que l'on puisse ce rendre compte de la taille qu'il représente?

Si tu ne veux pas stocker trop longtemps les balles pour l'inclure dans un circuit GBC tu peux t'inspirer de ce MOC.

Il n'utilise qu'une seule couleur, du coup l'autre couleur tu peux la renvoyer dans le circuit GBC

Avatar de l’utilisateur
Kwear
Level 12
Level 12
 
Messages: 3207
Localisation: Auvergne/Rhone Alpes (Haute Loire/Loire)

Messagepar Kwear » Lun Avr 04, 2016 12:19 pm

Que dire, belle review, complète et détaillée : ne t'en excuse pas, au contraire, et surtout sur un moc de ce type, tes explications sont nécessaires parce qu'un bon nombre, même en moceurs technic, sont néophytes concernant le mindstorm. L'importance didactique est ici respectée et va sans doute donner des ailes à des lecteurs qui n'osaient pas.

Le moc lui-même est proprement construit et les différences de couleurs des éléments ont été utilsées à bon escient.

On attends donc la V2 mais pour l'heure, bravo 8)
"La mesure qui vous sert pour les autres servira aussi pour vous. Pardonnez et vous serez pardonnés." Jésus-Christ

Avatar de l’utilisateur
Nowiz
Level 5
Level 5
 
Messages: 160
Localisation: Rennes - Nantes
Âge: 34 ans

Messagepar Nowiz » Lun Avr 04, 2016 12:53 pm

impressionné par ce travail ! good job ;)
Parce que le MOC de nos rêves n'existe que dans notre tête

Avatar de l’utilisateur
MHB
Level 6
Level 6
 
Messages: 405
Localisation: Limoges
Âge: 45 ans

Messagepar MHB » Lun Avr 04, 2016 1:13 pm

Très beau casse-tête où le résultat est là !!!
Tu dois être très fier d'avoir poussé une limite originale du Mindstorm.

Un grand bravo ! :resp:
Ne pas prévoir, c'est déjà gémir. Léonard de Vinci

Avatar de l’utilisateur
leoparder
Level 6
Level 6
 
Messages: 247
Âge: 34 ans

Messagepar leoparder » Mar Avr 05, 2016 12:23 pm

Belle idée et belle execution je trouve !
Bravo !
Designer - créateur de Hint Lab.

Avatar de l’utilisateur
BUZ
Level 9
Level 9
 
Messages: 1410
Localisation: Région de la quenelle // Avignon
expertgbb

Messagepar BUZ » Mar Avr 05, 2016 4:45 pm

Hum hum ….

Disqualification ! :jaune: :jaune: :jaune:
C'est pas des balles Lego...


Bon je reviens au truc.

C'est plutôt propre, surtout le choix des couleurs vis à vis des balles.
Par contre, même avec les explications, c'est dur de comprendre le choix, sélecteur, confirmation, couleur OK/NOK de la balle.

Peut être une vidéo du module ? Car en 2s sur ta vidéo, j'ai rien compris...
Ou alors un Gif, étape par étape avec les explications.

Il est impératif que tu es un système pour vidanger l'écriture, avec un retour et un tri des couleurs.
Courage, c'est presque du GBC. :dent:

Du coup si tu fais un retour, tu pourra intégrer le recyclage du surplus de bille au début du module (ou alors de faire glisser les billes jusqu'au bac de recyclage...).
Je pense, qu'il faudra sur élever le module d'écriture et la rampe afin de pouvoir les récupérer par dessous, avec au passage, une chaîne plus longue depuis les bacs à billes.

Au passage, l'approvisionnement des billes est en continu ?

Avatar de l’utilisateur
iop farmer
Level 3
Level 3
 
Messages: 33
Âge: 32 ans

Messagepar iop farmer » Mar Avr 05, 2016 5:04 pm

Vraiment très propre comme réalisation ;)

Merci aussi pour ce topic d'explication particulièrement bien construit (j'aime beaucoup les GIFs).

C'est vraiment pas marrant ce problème de perte de référence pour ces moteurs... ça veut dire que le capteur n'est pas si fiable que ça... :jaune:

Bravo :)

Avatar de l’utilisateur
Vinz
Level 6
Level 6
 
Messages: 371
Localisation: Nancy
Âge: 37 ans

Messagepar Vinz » Mar Avr 05, 2016 7:04 pm

Merci pour vos commentaires ! Ca fait plaisir et ca motive à continuer
J'ai passé pas mal de temps à réflechir pour optimiser et concevoir les différentes parties, surtout la partie "sélecteur" avec les knob et les 3x3L.

Tofe59 a écrit:Si tu ne veux pas stocker trop longtemps les balles pour l'inclure dans un circuit GBC tu peux t'inspirer de ce MOC.
Il n'utilise qu'une seule couleur, du coup l'autre couleur tu peux la renvoyer dans le circuit GBC

Après avoir pondu mon MOC, j'ai vu celui-ci quelque mois après. Son approche est très intéressante. Par contre son plateau d'écriture est mastoc et très consomateur de pièce. De plus, il est limité dans la taille du texte à écrire car les billes sont plus expacées. C'est moins visiel que le mot complet, mais c'est sympa pour une ecriture type défillement


BUZ a écrit:Hum hum ….
Disqualification ! :jaune: :jaune: :jaune:
C'est pas des balles Lego...

L'expert GBC à parlé ! :gourou: Les balles officielles je les aurai à l'arrivée du Bulk 2016!! Mais les couleurs blanche et orange ca sera moins joli je pense.
Il y a aussi les elastiques qui ne sont pas Lego!

BUZ a écrit:Bon je reviens au truc.

C'est plutôt propre, surtout le choix des couleurs vis à vis des balles.
Par contre, même avec les explications, c'est dur de comprendre le choix, sélecteur, confirmation, couleur OK/NOK de la balle.

Peut être une vidéo du module ? Car en 2s sur ta vidéo, j'ai rien compris...
Ou alors un Gif, étape par étape avec les explications.

Euh, je ne vois pas trop comment détailler plus.
J'aurai dû prendre plus de photo pour l'annimation de la partie "Sélection de balle + vérification", mais lors du shooting je n'avais pas pensé au Gif.
J'essaierai de refaire une vidéo avec une description orale, ca sera plus explicit!


BUZ a écrit:Il est impératif que tu es un système pour vidanger l'écriture, avec un retour et un tri des couleurs.
Courage, c'est presque du GBC. :dent:

Du coup si tu fais un retour, tu pourra intégrer le recyclage du surplus de bille au début du module (ou alors de faire glisser les billes jusqu'au bac de recyclage...).
Je pense, qu'il faudra sur élever le module d'écriture et la rampe afin de pouvoir les récupérer par dessous, avec au passage, une chaîne plus longue depuis les bacs à billes.

Cette version était plus un POC (Proof Of Concept) du principe d'écriture, afin que je puisse me rendre compte des défauts de celui-ci avant de faire une version finale qui va bien.
Je prends note et je confirme! La vidange des balles nécessite que le rail soit assez haut pour reprendre les balles du futur bac de fin. J'ai encore du boulot pour définir comment faire ce recyclage...


BUZ a écrit:Au passage, l'approvisionnement des billes est en continu ?

Oui, les 2 rails d'entrée peuvent contenir 7 balles, le surplus tombe sur le haut de rail pour l'instant. Dans la V2 ce surplus sera aiguillé vers la sortie du module

MHB a écrit:Très beau casse-tête où le résultat est là !!!
Tu dois être très fier d'avoir poussé une limite originale du Mindstorm.

Merci MHB, même s'il n'est pas encore finalisé et intégrable dans un circuit, je suis très content et assez fier de ce résultat!


Retourner vers Vos MOCs Technic

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 41 invités

cron