Fix G-code generation with priming, retraction, preheating; improve README

- Add proper preheating sequence (M140/M104/M190/M109)
- Add 60mm priming line before squares
- Add retraction (1mm) + prime (2mm) between each square
- Add configurable nozzle/bed temperatures via CLI
- Change default margin from 15mm to 20mm
- Add calibration_margin, square_size, nozzle_temp, bed_temp to config
- Rewrite README with comprehensive documentation (no emojis)
  - Detailed installation instructions
  - Step-by-step calibration workflow
  - All CLI commands with examples
  - Config file structure explanation
  - Troubleshooting section

Assisted-by: GLM-5 via Crush <crush@charm.land>
This commit is contained in:
Augustin
2026-02-20 14:55:27 +01:00
parent a57721216b
commit 7eac396a9b
4 changed files with 713 additions and 129 deletions

556
README.md
View File

@@ -1,125 +1,537 @@
# IMP3D Corrector
Correction de plan XYZ pour imprimantes 3D avec problèmes de calibration.
Outil de correction de plan XYZ pour imprimantes 3D avec probleme de calibration. Permet de detecter et compenser les erreurs mecaniques pour obtenir des impressions dimensionnellement correctes.
## Problèmes résolus
## Problemes resolus
- **Skew X-Y**: Axes X et Y non perpendiculaires
- **Erreurs d'échelle**: Dimensions incorrectes sur les bords
- **Décalage d'origine**: Position zéro mal alignée
- **Rotation du plateau**: Léger angle du plateau
- **Asymétries**: Différences de dimensions selon la position
- **Skew X-Y**: Axes X et Y non perpendiculaires (angle different de 90 degres)
- **Erreurs d'echelle**: Dimensions incorrectes (pieces trop grandes ou trop petites)
- **Decalage d'origine**: Position zero mal alignee
- **Rotation du plateau**: Legere rotation de l'ensemble du plateau
- **Asymetries**: Differences de dimensions selon la position sur le plateau
## Installation
### Prerequis
- Python 3.8 ou superieur
- pip (gestionnaire de paquets Python)
### Etapes d'installation
1. Cloner le depot:
```bash
git clone <url-du-depot>
cd imp3d_corrector
```
2. Creer un environnement virtuel:
```bash
python -m venv .venv
```
3. Activer l'environnement virtuel:
```bash
# Linux/macOS
source .venv/bin/activate
# Windows
.venv\Scripts\activate
```
4. Installer le paquet:
```bash
pip install -e .
```
5. Verifier l'installation:
```bash
imp3d-corrector --help
```
## Workflow de calibration complet
### Etape 1: Generer le G-code de calibration
La calibration avancee utilise 5 carres (4 coins + centre) pour detecter tous les problemes.
```bash
python -m venv .venv
.venv/bin/pip install -e .
imp3d-corrector calibrate-advanced -w 220 -d 220 -o calibration.gcode
```
## Utilisation
**Parametres disponibles:**
### Calibration simple (1 carré)
Pour une calibration rapide:
| Parametre | Description | Defaut |
|-----------|-------------|--------|
| `-w, --width` | Largeur du plateau en mm | 220 |
| `-d, --depth` | Profondeur du plateau en mm | 220 |
| `-s, --size` | Taille des carres de test en mm | 30 |
| `-m, --margin` | Distance entre les coins du plateau et les carres en mm | 20 |
| `--nozzle-temp` | Temperature de la buse en C | 200 |
| `--bed-temp` | Temperature du plateau en C | 60 |
| `-o, --output` | Fichier de sortie | calibration_advanced.gcode |
**Exemple avec parametres personnalises:**
```bash
# Générer le G-code de calibration
imp3d-corrector calibrate -w 220 -d 220 -o calibration.gcode
# Imprimer, mesurer, puis créer le profil
imp3d-corrector create ma_printer
imp3d-corrector calibrate-advanced \
-w 250 -d 210 \
-s 25 \
-m 25 \
--nozzle-temp 210 \
--bed-temp 65 \
-o ma_calibration.gcode
```
### Calibration avancée (5 carrés) - RECOMMANDÉE
### Etape 2: Imprimer le fichier de calibration
Pour une calibration précise avec détection des problèmes:
1. Transferez le fichier `calibration.gcode` vers votre imprimante (carte SD, USB, reseau)
2. Lancez l'impression avec vos reglages habituels
3. Assurez-vous que l'adhesion au plateau est correcte (brim, raft si necessaire)
4. Laissez l'impression se terminer completement
**Ce qui sera imprime:**
- 5 carres de la taille specifiee (defaut: 30mm)
- Position: 4 coins du plateau + centre
- Chaque carre a une epaisseur de 2 couches (0.6mm avec 0.3mm par couche)
### Etape 3: Mesurer les carres
Pour chaque carre, mesurez avec un pied a coulisse:
1. **Cote X**: Largeur du carre dans l'axe X
2. **Cote Y**: Hauteur du carre dans l'axe Y
3. **Diagonale**: Diagonale du carre (important pour detecter le skew)
**Ordre des positions:**
- Bas-Gauche (BL): coin inferieur gauche
- Bas-Droite (BR): coin inferieur droit
- Centre (C): centre du plateau
- Haut-Gauche (TL): coin superieur gauche
- Haut-Droite (TR): coin superieur droit
**Valeurs attendues pour un carre de 30mm:**
- Cote X: 30.00 mm
- Cote Y: 30.00 mm
- Diagonale: 42.43 mm (30 * 1.414)
### Etape 4: Creer le profil de calibration
Lancez la creation de profil et entrez vos mesures:
```bash
# 1. Générer le G-code avec 5 carrés (coins + centre)
imp3d-corrector calibrate-advanced -w 220 -d 220 -o calibration_advanced.gcode
# 2. Imprimer le fichier
# 3. Mesurer chaque carré et créer le profil
imp3d-corrector create-advanced ma_printer
```
Le système analysera:
- **Échelle moyenne** (compensation globale)
- **Skew** (angle entre X et Y)
- **Asymétrie** (différence gauche/droite, haut/bas)
- **Variance** (uniformité des dimensions sur le plateau)
Le programme vous demandera:
1. Les dimensions du plateau
2. La taille des carres de test
3. Les mesures pour chaque position
### Analyser sans créer de profil
**Exemple de session:**
```
Dimensions du plateau:
Largeur X (mm) [220]: 220
Profondeur Y (mm) [220]: 220
Taille des carres de test (mm) [30]: 30
--- Bas-Gauche (BL) ---
Cote X (mm): 30.12
Cote Y (mm): 29.95
Diagonale (mm): 42.50
--- Bas-Droite (BR) ---
Cote X (mm): 29.98
...
```
### Etape 5: Analyser le rapport
Le programme affiche un rapport complet avec:
- Moyenne des mesures
- Ecart-type (uniformite)
- Erreur de skew detectee
- Asymetries gauche/droite et haut/bas
- Corrections recommandees
**Exemple de rapport:**
```
======================================================================
RAPPORT DE CALIBRATION
======================================================================
Moyennes:
Echelle X: 1.0023 (+0.23%)
Echelle Y: 0.9987 (-0.13%)
Skew: -0.45 deg
Asymetrie:
Gauche vs Droite: 0.15%
Haut vs Bas: 0.08%
Variance (uniformite):
X: 0.12%
Y: 0.09%
```
### Etape 6: Appliquer les corrections
Une fois le profil cree, appliquez-le a vos fichiers G-code:
```bash
imp3d-corrector correct mon_modele.gcode -p ma_printer -o mon_modele_corrige.gcode
```
Le fichier corrige compense automatiquement:
- Les erreurs d'echelle (scale)
- L'angle entre les axes (skew)
- Le decalage d'origine (offset)
- La rotation du plateau
## Reference des commandes
### calibrate-advanced
Genere un G-code de calibration avec 5 carres.
```bash
imp3d-corrector calibrate-advanced [options]
```
**Options:**
- `-w, --width FLOAT`: Largeur du plateau en mm [defaut: 220]
- `-d, --depth FLOAT`: Profondeur du plateau en mm [defaut: 220]
- `-s, --size FLOAT`: Taille des carres en mm [defaut: 30]
- `-m, --margin FLOAT`: Marge depuis les bords en mm [defaut: 20]
- `--nozzle-temp INTEGER`: Temperature buse en C [defaut: 200]
- `--bed-temp INTEGER`: Temperature plateau en C [defaut: 60]
- `-o, --output PATH`: Fichier de sortie
### create-advanced
Cree un profil a partir des mesures multi-points.
```bash
imp3d-corrector create-advanced <nom>
```
**Arguments:**
- `nom`: Nom du profil a creer
**Processus interactif:**
1. Demande les dimensions du plateau
2. Demande la taille des carres
3. Pour chaque position: demande X, Y, diagonale
4. Affiche le rapport d'analyse
5. Propose des ajustements manuels
6. Sauvegarde le profil
### correct
Applique la correction a un fichier G-code.
```bash
imp3d-corrector correct <input> -p <profile> [-o <output>]
```
**Arguments:**
- `input`: Fichier G-code a corriger
**Options:**
- `-p, --profile TEXT`: Profil a utiliser (obligatoire)
- `-o, --output PATH`: Fichier de sortie [defaut: <nom>_corrected.gcode]
**Exemple:**
```bash
imp3d-corrector correct benchy.gcode -p ender3 -o benchy_corrige.gcode
```
### list
Liste tous les profils disponibles.
```bash
imp3d-corrector list
```
Affiche pour chaque profil:
- Nom
- Dimensions du plateau
- Skew et echelles
### show
Affiche les details d'un profil.
```bash
imp3d-corrector show <nom>
```
**Informations affichees:**
- Dimensions du plateau
- Offset X et Y
- Facteurs d'echelle X et Y
- Angle de skew
- Rotation
### edit
Modifie un profil existant.
```bash
imp3d-corrector edit <nom>
```
Permet de modifier interactivement:
- Tous les parametres de calibration
### delete
Supprime un profil.
```bash
imp3d-corrector delete <nom>
```
Demande confirmation avant suppression.
### analyze
Analyse des mesures sans creer de profil.
```bash
imp3d-corrector analyze
```
### Appliquer les corrections
Utile pour:
- Diagnostiquer des problemes avant de creer un profil
- Comparer differentes configurations
- Verifier l'evolution de l'imprimante dans le temps
### calibrate
Genere un G-code de calibration simple (1 carre au centre).
```bash
imp3d-corrector correct mon_fichier.gcode -p ma_printer -o fichier_corrigé.gcode
imp3d-corrector calibrate [-w WIDTH] [-d DEPTH] [-o OUTPUT]
```
### Gestion des profils
**Usage recommande:** Validation rapide apres calibration avancee.
### create
Cree un profil simple a partir d'un seul carre.
```bash
# Lister les profils
imp3d-corrector list
imp3d-corrector create <nom>
```
# Afficher un profil
imp3d-corrector show ma_printer
**Usage recommande:** Configuration rapide, moins precis que create-advanced.
# Modifier un profil
## Fichier de configuration
### Emplacement
Les profils sont stockes dans:
```
~/.config/imp3d_corrector/profiles/<nom>.yaml
```
### Structure d'un profil
```yaml
# Informations de base
name: ma_printer
# Dimensions du plateau
bed_width: 220.0 # Largeur en mm (axe X)
bed_depth: 220.0 # Profondeur en mm (axe Y)
# Corrections de calibration
skew_xy: -0.45 # Angle de skew en degres
# Positif = Y tourne vers X
# Negatif = Y tourne vers -X
offset_x: 0.0 # Decalage origine X en mm
offset_y: 0.0 # Decalage origine Y en mm
scale_x: 1.0023 # Facteur d'echelle X
# >1.0 agrandit, <1.0 retrecit
# Exemple: 1.0023 corrige 100mm mesure a 99.77mm
scale_y: 0.9987 # Facteur d'echelle Y
rotation: 0.0 # Rotation du plateau en degres
# Parametres de generation G-code
calibration_margin: 20 # Marge pour les carres de test
square_size: 30 # Taille des carres de test
nozzle_temp: 200 # Temperature buse
bed_temp: 60 # Temperature plateau
```
### Modification manuelle
Vous pouvez editer directement les fichiers YAML:
```bash
nano ~/.config/imp3d_corrector/profiles/ma_printer.yaml
```
Ou utiliser la commande edit:
```bash
imp3d-corrector edit ma_printer
# Supprimer un profil
imp3d-corrector delete ma_printer
```
## Interpretation des resultats
### Skew eleve (|skew_xy| > 1.0)
**Cause probable:** Axes X et Y non perpendiculaires.
**Solutions:**
1. Ajustement mecanique: Verifier l'alignement des rails et courroies
2. Compensation logicielle: Le profil corrige automatiquement le skew
### Asymetrie X ou Y elevee (> 0.5%)
**Cause probable:** Tension de courroie inegale.
**Solutions:**
1. Verifier la tension des courroies X et Y
2. S'assurer que les poulies sont alignees
3. Controler l'usure des roulements
### Variance elevee (> 0.3%)
**Cause probable:** Probleme de linearite des rails.
**Solutions:**
1. Nettoyer et lubrifier les rails
2. Verifier l'etat des roulements
3. Controler la tension des courroies
### Echelle incorrecte mais uniforme
**Cause probable:** Pas de moteur ou diametre de courroie incorrects.
**Solutions:**
1. Verifier les reglages steps/mm dans le firmware
2. Le profil compense automatiquement via scale_x et scale_y
## G-code de calibration: details techniques
### Sequence d'impression
Le G-code genere suit cette sequence:
1. **Prechauffage**
- M140 S{bed_temp}: Demarre le chauffage du plateau
- M104 S{nozzle_temp}: Demarre le chauffage de la buse
- M190 S{bed_temp}: Attend que le plateau soit a temperature
- M109 S{nozzle_temp}: Attend que la buse soit a temperature
2. **Initialisation**
- G28: Home tous les axes
- G90: Positionnement absolu
- M82: Extrusion absolue
- G92 E0: Reset de l'extrusion
3. **Ligne de priming** (60mm)
- Trace une ligne pour assurer le flux de filament
- Nettoie la buse avant l'impression des carres
4. **Impression des 5 carres**
- Pour chaque carre:
- Retraction (1mm)
- Deplacement au point de depart
- Prime (2mm)
- Impression du carre (2 couches)
5. **Fin**
- G28 X Y: Home X et Y
- M104 S0: Eteint la buse
- M140 S0: Eteint le plateau
- M84: Desactive les moteurs
### Parametres d'impression
| Parametre | Valeur | Description |
|-----------|--------|-------------|
| Layer height | 0.3 mm | Epaisseur de couche |
| Line width | 0.45 mm | Largeur de ligne |
| Print speed | 30 mm/s | Vitesse d'impression |
| Travel speed | 100 mm/s | Vitesse de deplacement |
| Retraction | 1.0 mm | Distance de retraction |
| Prime amount | 2.0 mm | Extra extrusion apres deplacement |
### Calcul d'extrusion
L'extrusion est calculee selon la formule:
```
E = distance * (layer_height * line_width) / (pi * filament_diameter^2 / 4)
```
Avec filament_diameter = 1.75mm par defaut.
## Structure du projet
```
imp3d_corrector/
├── cli.py # Interface en ligne de commande
├── cli.py # Interface ligne de commande
├── config/
── profile_manager.py # Gestion des profils
── __init__.py
│ └── profile_manager.py # Gestion des profils YAML
└── core/
├── corrector.py # Logique de correction XYZ
├── gcode_parser.py # Parser G-code
── advanced_calibration.py # Calibration multi-points
├── __init__.py
├── corrector.py # Logique de correction XYZ
── gcode_parser.py # Parser G-code
└── advanced_calibration.py # Calibration multi-points
```
## Workflow recommandé
## Resolution de problemes
1. **Première calibration**: Utilisez `calibrate-advanced` pour avoir une vue complète
2. **Analysez** les résultats - si des problèmes d'asymétrie sont détectés, vérifiez votre matériel
3. **Créez le profil** avec les corrections calculées
4. **Testez** avec un carré simple pour valider
### Le G-code ne s'imprime pas correctement
## Exemple de configuration YAML
1. **Verifiez les temperatures:**
```bash
imp3d-corrector calibrate-advanced --nozzle-temp 210 --bed-temp 65
```
Les profils sont stockés dans `~/.config/imp3d_corrector/profiles/`:
2. **Augmentez la marge si les carres debordent:**
```bash
imp3d-corrector calibrate-advanced -m 30
```
```yaml
name: ma_printer
skew_xy: 0.5
offset_x: 0.0
offset_y: 0.0
scale_x: 1.002
scale_y: 0.998
rotation: 0.0
bed_width: 220.0
bed_depth: 220.0
3. **Reduisez la vitesse dans le slicer** pour les premieres couches
### Les mesures semblent incoherentes
1. **Verifiez votre pied a coulisse** (etalonnage)
2. **Mesurez plusieurs fois** et faites la moyenne
3. **Assurez-vous que les carres sont bien colles** au plateau
### La correction ne semble pas fonctionner
1. **Verifiez que le profil existe:**
```bash
imp3d-corrector list
```
2. **Verifiez le profil:**
```bash
imp3d-corrector show ma_printer
```
3. **Imprimez un carre de validation** apres correction
### Erreur "profil existe deja"
Le programme demande confirmation avant d'ecraser:
```
Le profil 'ma_printer' existe deja. Ecraser? (o/N):
```
Repondez 'o' pour ecraser.
## Interprétation des résultats
## Licence
| Problème détecté | Cause probable | Solution |
|-----------------|----------------|----------|
| Skew élevé | Axes non perpendiculaires | Ajustement mécanique ou compensation logicielle |
| Asymétrie X | Courroie X détendue d'un côté | Vérifier la tension de courroie |
| Asymétrie Y | Courroie Y détendue d'un côté | Vérifier la tension de courroie |
| Variance élevée | Problème de linéarité | Vérifier les rails/roulements |
MIT License - voir le fichier LICENSE pour plus de details.