2026-10-23 : Développement de l’interface de contrôle et algorithmique d’image

Séance : planifiée · Durée : 3 h

Fait

  • Validation de l’architecture globale : L’équipe a officiellement basculé sur une architecture cartésienne en portique. Nous avons réparti les chantiers (CAO, Électronique, Logiciel) pour lancer la phase de prototypage en parallèle.
  • Interface de contrôle web : Création d’une page controle.md autonome hébergée sur nos GitHub Pages. Le but est d’offrir un outil permettant l’import d’images, la prévisualisation du tracé et, à terme, le pilotage direct de la machine en USB via l’API Web Serial.
  • Vectorisation d’image (JavaScript) : Intégration de la librairie open-source imagetracer.js pour transformer les pixels d’une image matricielle en chemins vectoriels (SVG) directement dans le navigateur de l’utilisateur, sans requérir de serveur.
  • Traitement d’image (Seuillage) : Développement d’un script intermédiaire (filtre par luminance) pour convertir les nuances de gris d’une image en pixels strictement noirs ou blancs avant la vectorisation.
  • Recherche algorithmique avancée : Étude théorique des méthodes de rendu pour les photographies (balayage modulé, TSP squiggle, hachurage croisé) face aux limites de la détection de contours classique sur les portraits.

Pourquoi

  • Architecture cartésienne : Le système en portique simplifie la gestion de la tension des courroies et réduit drastiquement les risques de blocage (arc-boutement) liés à l’utilisation de nos guidages lisses en PTFE, assurant ainsi un POC fonctionnel pour la fin du S1.
  • Interface front-end autonome : L’utilisation exclusive de JavaScript s’intègre parfaitement avec notre site statique Jekyll. Cela centralise l’outil de production et la documentation, ce qui sera un atout majeur lors de la Journée des Projets.
  • Filtre de seuillage : La machine à dessiner (et son stylo) ne gère pas l’opacité ou les nuances. Sans seuillage préalable, l’algorithme regroupe les zones ombragées en d’immenses aplats noirs impossibles à hachurer proprement.
  • Limites sur les photographies : Tracer les contours d’un visage donne un résultat abstrait. Pour imprimer des photos, il faut tromper l’œil en faisant varier la densité de l’encre plutôt que de tracer des bordures.

Reste à faire

  • Coder notre propre algorithme de balayage modulé (Wave/Amplitude modulation) en alternative à la vectorisation pour traiter les photos de portraits.
  • Développer l’étape d’aplatissement (flattening) pour échantillonner les courbes de Bézier du SVG en minuscules segments de droites.
  • Écrire la fonction de parsing pour générer le G-Code final (G0, G1) en gérant correctement le Z-lift (levée du servomoteur entre deux tracés).