L’acquisition de l’image du patron se fait par un principe de “scanner” . La caméra, présente sur la tête de tissage, balaie l’ensemble de la surface (à l’aide de son système de déplacement dans le plan, voir Mouvement de la tête de tissage) et prend des photos à intervalles réguliers.
Pour tenir compte des décalages liés aux imperfections physiques de la machine, nous procédons à un post-traitement de recalage d’image. L’algorithme consiste simplement à choisir un paramètre constant selon lequel rogner toutes les images acquises.
En pratique, la fonction ‘scan_patron’ prend en entrée deux paramètres (x0, y0), qui correspondent au point d’origine du rognage, qui va être appliqué de façon constante sur toutes les images acquises par la machine. Il renvoie l’image du patron.
Une fois l’image entière du patron numérisée, nous pouvons déterminer et tracer son contour. Cette étape est primordiale et doit parfaitement retracer le contour du patron, car c’est ensuite ce contour qui va servir de base pour planter les épingles et passer les fils.
MATLAB possède une librairie de traitement d’image qui nous permet de réaliser cette opération sans avoir à se plonger dans les lignes de code. La détermination des contours passe par deux étapes :
En pratique, la fonction ‘contour_patron’ prend en entrée l’image numérisée du patron, et renvoie une liste de coordonnées (x,y) relative aux points du contour du patron.
Pour placer les épingles, nous utilisons la fonction Matlab ‘Epingles_inclinees’. Cette fonction prend comme entrées :
La fonction utilise aussi certains paramètre (défini dans le corps de la fonction) :
L’algorithme de détection des coins est très sensible au nombre de points à considérer. Il doit s’adapter à la taille de contour numérisé du patron. On estime que pour assurer une bonne détection des coin, on doit prendre en compte un nombre de points ≃taille du contour/100.
Le dépassement est un autre paramètre important de la procédure de placement des épingles. Il est utilisé lors de la création du second type de contour numérisé. En effet, après détection des coins, le contour numérisé est présenté sous la forme d’une matrice de coordonnées de point du contour. Il s’agit alors d’interpréter ce contour comme un ensemble de courbe à l’aide d’une régression (de degré fixé en paramètre). Le paramètre de dépassement sert alors à déterminer le domaine sur lequel peut se faire la régression. Il s’agit concrètement du nombre de pixel duquel on peut dépasser afin d’assurer le croisement des courbes de régression.
Le paramètre de dépassement doit s’adapter à la taille du contour initiale, on prend dépassement ≃ taille du contour30 .
On réalise alors une détection plus précise des coins : un coin est interprété comme l’intersection de deux courbes de régression successives. C’est sur ce nouveau contour que l’on vient positionner les épingles.
La fonction positionne alors une épingle dans chaque coin du patron afin de ne pas déformer l’allure générale. Ensuite, entre deux coins, on positionne les épingles sur la ligne de régression, espacées de manière régulière. L’espacement entre les épingles est choisi comme la distance la plus proche de l’écartement entre épingles souhaité et permettant un espacement régulier entre épingle sur la ligne de régression entre ces deux coins.
Le fichier ‘Epingles_inclinees.m’ renvoie un seul tableau qui contient à la fois les coordonnées des épingles sur le contour de patron, et les coordonnées de la projection des têtes d'épingles sur le plan de travail en tenant compte de leur inclinaison.
Maintenant que les positions des épingles sur le contour sont déterminées, on peut passer l’étape suivante : déterminer le tracer du fil entre les épingles afin de tisser la surface du vêtement.
Le principe est le suivant : pour une épingle donnée, on trace un aller-retour entre l’épingle considérée et chacune des autres épingles. On élimine les aller-retour qui sortent du contour ou qui ne respectent pas certaines conditions angulaires (voir plus loin). On passe ensuite à l’épingle suivante et ainsi de suite.
En pratique, pour des raisons artistiques voulues par la cliente (éviter un maillage trop fin) on ne considère pas une épingle seule mais des couples de deux épingles.
On utilise la fonction ‘trace_motif’ qui prend en entrée :
La fonction applique la procédure présentée précédemment, un aller-retour élémentaire
est obtenue en tournant autour de 4 épingles.
Parcours élémentaire
Il s’agit de tracer un polygone autour de 4 points (1, 2, 5 et 6) et on ajoute 3 points supplémentaires (3, 4 et 7) de telle sorte que les 4 premiers points restent à l’intérieur du tracé et que les 3 derniers soient à l’extérieur. On détermine les trois points extérieure de la manière suivante :
Pour un couple d’épingle (1,2) fixé, on cherche toutes les possibilités pour les points 5 et 6 qui vérifient les 3 conditions mentionnées ci-dessus.
Comme précisé précédemment, certains aller-retour ne sont pas retenus. En effet chaque tracé doit respecter les conditions suivantes :
Le tracé d’un aller-retour ne doit pas couper ni se trouver en dehors du contour. Pour cela, on s’assure que le tracé ne coupe le contour que deux fois en utilisant la fonction ‘polyxpoly’.
L’angle entre deux segments successifs du fil doit être supérieur à condangle (paramètre modifiable) : on s’assure que l’angle est suffisamment grand pour qu’on puisse relier les épingles sans être redondant. On impose aussi que l’angle soir inférieur à π - condangle.
Tracé ne respectant pas les conditions
On obtient le tracé final comme succession d’aller-retour élémentaires autour de 4 épingles.
La fonction ‘trace_motif’ renvoie alors :
Dans cette partie, on détermine quel doit être le parcours de la tête de tissage afin que le fil suive le tracé déterminé dans la partie précédente.
Différence entre tracé du fil et parcours de la tête de tissage
Pour ce faire, on utilise la fonction ‘trajet_pince.m’ qui contient elle-même plusieurs sous-fonctions.
Tour des épingles
La fonction ‘TourEpingles’ prend en entrée les coordonnées de sept épingles numérotées de 1 à 7 et renvoie celles de 8 points d’une ligne brisée permettant de faire un tour de ces 7 épingles deux par deux.
Deux paramètres a et b contrôlent la distance à laquelle la tête passe des épingles :
Contournement des épingles
Vérification des conditions
On utilise la fonction ‘CondPince.m’ qui prend en entrée les matrices MX (matrice n×7) et MY (matrice n×7) renvoyées par la fonction ‘trace_motif’.
On applique alors la fonction ‘TourEpingles’ sur chaque ligne de MX et MY, donc n fois, et on obtient MX_prime (matrice n×8) et MY_prime (matrice n×8). Il faut ensuite vérifier que le parcours proposé soit conforme à la morphologie du patron. On s’assure qu’ils ne coupent pas le bord du patron, c’est-à-dire que le parcours n’intersecte le contour du patron que deux fois. Il est nécessaire de vérifier cette condition une seconde fois (déjà vérifié lors de la détermination du tracé du fil), car le parcours de la tête de tissage diffère légèrement du tracé et peut introduire des erreurs.
Le parcours obtenu après élimination des tracés qui ne vérifient pas les conditions est stocké dans MX_seconde et MY_seconde.
La fonction ‘CondPince’ renvoi MX_seconde et MY_seconde.
Insertion de points supplémentaires
La fonction ‘TrajetPince’ prend en entrée les nouvelles matrices MX_seconde et MY_seconde calculées précédemment dans la fonction ‘CondPince’. Cette fonction interpole de manière linéaire des points intermédiaires pour éviter les écarts à la consigne pour les moteurs. Pour cela, on évalue la distance entre deux points consécutifs et on intègre si besoin des points intermédiaires. Le paramètre DPINCE (en mm) permet de régler la distance maximale entre deux points.
La fonction ‘TrajetPince’ renvoie finalement deux matrices IX et IY qui indiquent les déplacements selon l’axe X et Y que la tête de la pince doit réaliser.
Fonction principale
La fonction principale ‘trajet_pince.m’, appelle la fonction ‘TrajetPince’ et crée également un fichier move.txt (fonctions ‘aller’ et ‘deplacement’) qui va être ensuite envoyé à la tricotisseuse. Ce fichier contient les instructions en gcode (voir partie suivante Mouvement de la tête de tissage) permettant de réaliser le parcours complet de tricotissage.