No description
Find a file
2025-02-05 21:19:30 +01:00
images slides avancées 2025-01-14 22:16:41 +01:00
.gitignore fixed controller class 2025-01-14 17:10:10 +01:00
clock.svg ça marche putain 2025-02-05 16:10:16 +01:00
controller.py Demo works! 2025-02-05 13:07:49 +01:00
GCode_Interpreterdc.py Demo works! 2025-02-05 13:07:49 +01:00
hardware.py Works! 2025-01-15 09:54:55 +01:00
main.py huh 2025-02-05 16:29:25 +01:00
README.md readme mieux 2025-02-05 21:19:30 +01:00
shell.nix Various bugfixes, moved svgtogcode to its own file 2025-01-15 01:13:41 +01:00
simulator.py ça marche putain 2025-02-05 16:10:16 +01:00
svgtogcode.py pre rendu 2025-02-05 20:53:50 +01:00
svgtroppagcode.py huh 2025-02-05 16:29:25 +01:00

Contrôleur de Petite Machine à Bois (PMB™)

Utilisation

Pour lancer le script, d'abord lancer le simulateur dans un terminal, puis, dans un second terminal lancer le programme main.

Dans main on met les instructions gcode, qui peuvent être converties depuis un fichier svg par le programme svgtroppagcode.py. Ce dernier utilisant la bibliothèque toppra, il faut une version compatible numpy<=1.21.6, version de numpy qui n'est installable que pour des versions de python pré 3.6, ce qui rend le code contrôlleur très complexe à utiliser...

N'hésitez pas à revenir vers nous si besoin.

Fonctionnement

Le programme fonctionne de la manière suivante:

  • On crée une socket par laquelle vont transiter les informations.
  • On dispose d'un contrôleur "local" et d'un simulateur "distant" qui dispose d'un modèle physique plus réaliste que notre contrôleur.
  • En se basant sur le GCode en entrée, le contrôleur calcule les vitesses de commande à envoyer aux deux moteurs de la PMB™ et les envoie à la socket.
  • Le simulateur intègre alors les vitesses des moteurs pour obtenir une position "réelle" (en réalité ce sera directement des capteurs sur la PMB™) et les envoie à la socket.
  • Le contrôleur va alors modifier les vitesses de commande pour s'adapter aux positions "mesurées".

Contrôle de l'Entrée

Pour l'entrée, on propose deux méthodes:

  • Une qui traduit fidèlement un fichier .svg sans prendre en compte aucune contrainte.
  • Une qui échantillonne des points sur des fichiers .svg et reparamétrise les courbes en tenant en compte de contraintes de vitesses maximales et d'accélération maximale. Cette seconde méthode à le grand défaut de linéariser les courbes, avec une précision fortement arbitraire.