Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DEVICE FOR GENERATION OF A THREE-DIMENSIONAL OBJECT THAT ENCODES DATA BY ADDITIVE MANUFACTURING
Document Type and Number:
WIPO Patent Application WO/2024/088914
Kind Code:
A1
Abstract:
The invention relates to a device for the generation of a three-dimensional object that encodes data by additive manufacturing, comprising: - a memory (4) arranged to receive information data to be encoded and object substrate data comprising shape data and encoding-type data; - an encoder (6) designed to determine a set of target lengths and a number of layers on the basis of the information data to be encoded and of the encoding-type data; - an initialiser (8) designed to initialise a three-dimensional object model from the shape data with a stack of layers corresponding to said number of layers in an additive manufacturing production direction, thereby defining an object surface, to define on the object surface a number of measurement points corresponding to the number of lengths in the set of target lengths, and to generate paths between pairs of measurement points, each path matching a length from the set of target lengths.

Inventors:
LEFEBVRE SYLVAIN (FR)
KENZARI SAMUEL (FR)
Application Number:
PCT/EP2023/079350
Publication Date:
May 02, 2024
Filing Date:
October 20, 2023
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
INSTITUT NATIONAL DE RECH EN INFORMATIQUE ET EN AUTOMATIQUE (FR)
International Classes:
B29C64/386; B33Y50/00; B33Y80/00; G06K1/00
Foreign References:
US20160259306A12016-09-08
US10700872B12020-06-30
FR3098758A12021-01-22
Other References:
LEFEBVRE ET AL., INFORMATION TEXTURE SYNTHESIS, 2021, Retrieved from the Internet
KIRKPATRICK ET AL.: "Optimization by Simulated Annealing", SCIENCE, 1983
GOLDBERG, GENETIC ALGORITHMS IN SEARCH, OPTIMIZATION, AND MACHINE LEARNING, 1989
Attorney, Agent or Firm:
VIDON BREVETS & STRATÉGIE (FR)
Download PDF:
Claims:
Revendications

[Revendication 1] Dispositif de génération d'objet tridimensionnel encodant des données par fabrication additive, comprenant une mémoire (4) agencée pour recevoir des données d'information à encoder et des données de substrat d'objet comprenant des données de forme et des données de type d'encodage, un encodeur (6) agencé pour déterminer un ensemble de longueurs cibles et un nombre de couches en fonction des données d'information à encoder et des données de type d'encodage, un initialiseur (8) agencé pour initialiser un modèle d'objet tridimensionnel à partir des données de forme avec un empilement de couches correspondant audit nombre de couches selon une direction de réalisation de fabrication additive définissant ainsi une surface d'objet, définir sur la surface d'objet un nombre de points de mesure correspondant au nombre de longueurs dans l'ensemble de longueurs cibles, et générer des chemins entre des paires de points de mesure chacun en correspondance d'une longueur de l'ensemble de longueurs cibles, chaque point de mesure étant associé à un unique chemin, la longueur de chaque chemin étant inférieure ou égale à la longueur cible à laquelle il est associé, un chemin étant défini par une suite continue de déplacements de dimension fixe entre les points de mesure associés à ce chemin, chaque déplacement s'exprimant selon une parmi trois directions associées à un repère en trois dimensions et dont une correspond à la direction de réalisation de fabrication additive, chaque déplacement définissant un espace à l'intérieur de l'empilement de couche permettant de mesurer une propriété physique qualifiant une mesure associée au chemin dont ce déplacement fait partie, et un calculateur (10) agencé pour modifier les déplacements des chemins générés par l'initialiseur (8) afin que ces derniers présentent chacun une longueur correspondant à la longueur cible à laquelle ils sont associés, en appliquant une optimisation stochastique dont les opérations sont exclusivement l'ajout, le retrait ou la modification d'un ou plusieurs déplacements, lesquelles opérations doivent en outre préserver la continuité de chaque chemin, l'inclusion de chaque chemin à l'intérieur de l'empilement de couches, et empêcher le chevauchement ou la contiguïté de deux chemins entre eux.

[Revendication 2] Dispositif selon la revendication 1, dans lequel le calculateur (10) est en outre agencé pour appliquer une optimisation stochastique telle que les chemins associés à une longueur cible non nulle ont un nombre identique d'opérations selon la direction de réalisation de fabrication additive.

[Revendication 3] Dispositif selon la revendication 1 ou 2, dans lequel le calculateur (10) est en outre agencé pour appliquer une optimisation stochastique telle que les chemins associés à une longueur cible non nulle présentent un sens de parcours de l'empilement de couches qui est monotone.

[Revendication 4] Dispositif selon l'une des revendications précédentes, dans lequel le calculateur (10) est agencé pour appliquer une optimisation stochastique dont les opérations augmentent la distance de Manhattan entre l'espace défini par les déplacements faisant l'objet d'une modification et l'espace défini par les chemins qui lui sont les plus proches selon la distance de Manhattan.

[Revendication 5] Dispositif selon l'une des revendications précédentes, dans lequel l'encodeur (6) est agencé pour définir un code de surface sur une portion supérieure de la surface d'objet.

[Revendication 6] Dispositif selon l'une des revendications précédentes, dans lequel l'encodeur (6) est agencé pour définir un ensemble de longueurs cibles aléatoire ou pseudo-aléatoire, et pour retourner une valeur correspondant à la mesure associée aux chemins.

[Revendication 7] Procédé de génération d'objet tridimensionnel encodant des données par fabrication additive, comprenant les opérations suivantes a) recevoir des données d'information à encoder et des données de substrat d'objet comprenant des données de forme et des données de type d'encodage, b) déterminer un ensemble de longueurs cibles et un nombre de couches en fonction des données d'information à encoder et des données de type d'encodage, c)initialiser un modèle d'objet tridimensionnel à partir des données de forme avec un empilement de couches correspondant audit nombre de couches selon une direction de réalisation de fabrication additive définissant ainsi une surface d'objet, définir sur la surface d'objet un nombre de points de mesure correspondant au nombre de longueurs dans l'ensemble de longueurs cibles, et générer des chemins entre des paires de points de mesure chacun en correspondance d'une longueur de l'ensemble de longueurs cibles, chaque point de mesure étant associé à un unique chemin, la longueur de chaque chemin étant inférieure ou égale à la longueur cible à laquelle il est associé, un chemin étant défini par une suite continue de déplacements de dimension fixe entre les points de mesure associés à ce chemin, chaque déplacement s'exprimant selon une parmi trois directions associées à un repère en trois dimensions et dont une correspond à la direction de réalisation de fabrication additive, chaque déplacement définissant un espace à l'intérieur de l'empilement de couche permettant de mesurer une propriété physique qualifiant une mesure associée au chemin dont ce déplacement fait partie, et d) modifier les déplacements des chemins générés par l'opération c) afin que ces derniers présentent chacun une longueur correspondant à la longueur cible à laquelle ils sont associés, en appliquant une optimisation stochastique dont les opérations sont exclusivement l'ajout, le retrait ou la modification d'un ou plusieurs déplacements, lesquelles opérations doivent en outre préserver la continuité de chaque chemin, l'inclusion de chaque chemin à l'intérieur de l'empilement de couches, et empêcher le chevauchement ou la contiguïté de deux chemins entre eux.

[Revendication 8] Procédé selon la revendication 7, dans lequel l'opération d) comprend appliquer une optimisation stochastique telle que les chemins associés à une longueur cible non nulle ont un nombre identique d'opérations selon la direction de réalisation de fabrication additive.

[Revendication 9] Procédé selon la revendication 7 ou 8, dans lequel l'opération d) comprend appliquer une optimisation stochastique telle que les chemins associés à une longueur cible non nulle présentent un sens de parcours de l'empilement de couches qui est monotone.

[Revendication 10] Procédé selon l'une des revendications 7 à 9, dans lequel l'opération d) comprend appliquer une optimisation stochastique dont les opérations augmentent la distance de Manhattan entre l'espace défini par les déplacements faisant l'objet d'une modification et l'espace défini par les chemins qui lui sont les plus proches selon la distance de Manhattan.

[Revendication 11] Procédé selon l'une des revendications 7 à 10, dans lequel l'opération b) comprend définir un code de surface sur une portion supérieure de la surface d'objet.

[Revendication 12] Procédé selon l'une des revendications 7 à 11, dans lequel l'opération b) comprend définir un ensemble de longueurs cibles aléatoire ou pseudo- aléatoire, et pour retourner une valeur correspondant à la mesure associée aux chemins.

[Revendication 13] Programme informatique comprenant des instructions pour exécuter le procédé selon l’une des revendications 7 à 12 lorsqu'il est exécuté sur un ordinateur.

[Revendication 14] Support de stockage de données sur lequel est enregistré le programme informatique selon la revendication 13.

Description:
Description

Dispositif de génération d’objet tridimensionnel encodant des données par fabrication additive

L’invention concerne le domaine de la fabrication d'objets encodant de l'information et en particulier les objets produits par fabrication additive encodant de l'information.

Le domaine des objets encodant de l'information est à ce jour peu développé. L'encodage d'information se fait généralement par l'apposition d'un signe en surface, comme un code barre ou un code QR.

Certains développements ont essayé d'offrir des objets anti-contrefaçon, comme la demande FR3098758 qui propose un marquage dans un volume d'authentification par lecture par diffractométrie de rayons X, DRX.

Aucun de ces systèmes ne donne satisfaction. En effet, les codes de surface sont limités, tandis que le marquage dans un volume d'authentification est complexe à mettre en œuvre et la lecture par diffractométrie de rayons X, DRX ne permet pas une diffusion large.

L’invention vient améliorer la situation. À cet effet, elle propose un dispositif de génération d'objet tridimensionnel encodant des données par fabrication additive, comprenant une mémoire agencée pour recevoir des données d'information à encoder et des données de substrat d'objet comprenant des données de forme et des données de type d'encodage, un encodeur agencé pour déterminer un ensemble de longueurs cibles et un nombre de couches en fonction des données d'information à encoder et des données de type d'encodage, un initialiseur agencé pour initialiser un modèle d'objet tridimensionnel à partir des données de forme avec un empilement de couches correspondant audit nombre de couches selon une direction de réalisation de fabrication additive définissant ainsi une surface d'objet, définir sur la surface d'objet un nombre de points de mesure correspondant au nombre de longueurs dans l'ensemble de longueurs cibles, et générer des chemins entre des paires de points de mesure chacun en correspondance d'une longueur de l'ensemble de longueurs cibles, chaque point de mesure étant associé à un unique chemin, la longueur de chaque chemin étant inférieure ou égale à la longueur cible à laquelle il est associé, un chemin étant défini par une suite continue de déplacements de dimension fixe entre les points de mesure associés à ce chemin, chaque déplacement s'exprimant selon une parmi trois directions associées à un repère en trois dimensions et dont une correspond à la direction de réalisation de fabrication additive, chaque déplacement définissant un espace à l'intérieur de l'empilement de couche permettant de mesurer une propriété physique qualifiant une mesure associée au chemin dont ce déplacement fait partie, et un calculateur agencé pour modifier les déplacements des chemins générés par l'initialiseur afin que ces derniers présentent chacun une longueur correspondant à la longueur cible à laquelle ils sont associés, en appliquant une optimisation stochastique dont les opérations sont exclusivement l'ajout, le retrait ou la modification d'un ou plusieurs déplacements, lesquelles opérations doivent en outre préserver la continuité de chaque chemin, l'inclusion de chaque chemin à l'intérieur de l'empilement de couches, et empêcher le chevauchement ou la contiguïté de deux chemins entre eux.

Ce dispositif est particulièrement avantageux car il permet d'encoder dans le corps de l'objet des informations de manière sûre et aisée à recouvrer.

Selon divers modes de réalisation, l’invention peut présenter une ou plusieurs des caractéristiques suivantes :

- le calculateur est en outre agencé pour appliquer une optimisation stochastique telle que les chemins associés à une longueur cible non nulle ont un nombre identique d'opérations selon la direction de réalisation de fabrication additive,

- le calculateur est en outre agencé pour appliquer une optimisation stochastique telle que les chemins associés à une longueur cible non nulle présentent un sens de parcours de l'empilement de couches qui est monotone,

- le calculateur est agencé pour appliquer une optimisation stochastique dont les opérations augmentent la distance de Manhattan entre l'espace défini par les déplacements faisant l'objet d'une modification et l'espace défini par les chemins qui lui sont les plus proches selon la distance de Manhattan,

- l'encodeur est agencé pour définir un code de surface sur une portion supérieure de la surface d'objet, et - l'encodeur est agencé pour définir un ensemble de longueurs cibles aléatoire ou pseudoaléatoire, et pour retourner une valeur correspondant à la mesure associée aux chemins.

L’invention concerne également un procédé de génération d'objet tridimensionnel encodant des données par fabrication additive, comprenant les opérations suivantes : a) recevoir des données d'information à encoder et des données de substrat d'objet comprenant des données de forme et des données de type d'encodage, b) pour déterminer un ensemble de longueurs cibles et un nombre de couches en fonction des données d'information à encoder et des données de type d'encodage, cjinitialiser un modèle d'objet tridimensionnel à partir des données de forme avec un empilement de couches correspondant audit nombre de couches selon une direction de réalisation de fabrication additive définissant ainsi une surface d'objet, définir sur la surface d'objet un nombre de points de mesure correspondant au nombre de longueurs dans l'ensemble de longueurs cibles, et générer des chemins entre des paires de points de mesure chacun en correspondance d'une longueur de l'ensemble de longueurs cibles, chaque point de mesure étant associé à un unique chemin, la longueur de chaque chemin étant inférieure ou égale à la longueur cible à laquelle il est associé, un chemin étant défini par une suite continue de déplacements de dimension fixe entre les points de mesure associés à ce chemin, chaque déplacement s'exprimant selon une parmi trois directions associées à un repère en trois dimensions et dont une correspond à la direction de réalisation de fabrication additive, chaque déplacement définissant un espace à l'intérieur de l'empilement de couche permettant de mesurer une propriété physique qualifiant une mesure associée au chemin dont ce déplacement fait partie, et d) modifier les déplacements des chemins générés par l'opération c) afin que ces derniers présentent chacun une longueur correspondant à la longueur cible à laquelle ils sont associés, en appliquant une optimisation stochastique dont les opérations sont exclusivement l'ajout, le retrait ou la modification d'un ou plusieurs déplacements, lesquelles opérations doivent en outre préserver la continuité de chaque chemin, l'inclusion de chaque chemin à l'intérieur de l'empilement de couches, et empêcher le chevauchement ou la contiguïté de deux chemins entre eux. Selon divers modes de réalisation, ce procédé peut présenter une ou plusieurs des caractéristiques suivantes : l'opération d) comprend appliquer une optimisation stochastique telle que les chemins associés à une longueur cible non nulle ont un nombre identique d'opérations selon la direction de réalisation de fabrication additive,

- l'opération d) comprend appliquer une optimisation stochastique telle que les chemins associés à une longueur cible non nulle présentent un sens de parcours de l'empilement de couches qui est monotone,

- l'opération d) comprend appliquer une optimisation stochastique dont les opérations augmentent la distance de Manhattan entre l'espace défini par les déplacements faisant l'objet d'une modification et l'espace défini par les chemins qui lui sont les plus proches selon la distance de Manhattan,

- l'opération b) comprend définir un code de surface sur une portion supérieure de la surface d'objet, et

- l'opération b) comprend définir un ensemble de longueurs cibles aléatoire ou pseudoaléatoire, et pour retourner une valeur correspondant à la mesure associée aux chemins.

L’invention concerne également un programme informatique comprenant des instructions pour exécuter le procédé selon l'invention, un support de stockage de données sur lequel est enregistré un tel programme informatique et un système informatique comprenant un processeur couplé à une mémoire, la mémoire ayant enregistré un tel programme informatique.

D’autres caractéristiques et avantages de l’invention apparaîtront mieux à la lecture de la description qui suit, tirée d’exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels :

- la figure 1 représente un diagramme schématique d'un dispositif selon l'invention,

- la figure 2 représente un exemple d'une boucle de fonctionnement du dispositif de la figure 1,

- la figure 3 représente un exemple d'une fonction mise en œuvre par l'encodeur de la figure 1, et - la figure 4 représente un exemple d'une fonction mise en œuvre par l'initialiseur de la figure 1.

Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant.

La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d’auteur et/ou le copyright. Le titulaire des droits n’a pas d’objection à la reproduction à l’identique par quiconque du présent document de brevet ou de sa description, telle qu’elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits.

La figure 1 représente un diagramme schématique d'un dispositif de génération d'objet tridimensionnel encodant des données par fabrication additive 2 selon l'invention.

Le dispositif 2 a pour rôle de recevoir en entrée des données qui définissent un ou plusieurs messages à encoder dans un objet tridimensionnel, et pour retourner un modèle de fabrication additive de cet objet permettant, par une mesure d'une grandeur physique, de recouvrer le ou les plusieurs messages. D'une manière générale, le ou les plusieurs messages peuvent contenir tout type d'information, que celle-ci ait un sens ou pas.

Le dispositif 2 comprend une mémoire 4, un encodeur 6, un initialiseur 8 et un calculateur 10.

La mémoire 4 peut être tout type de stockage de données propre à recevoir des données numériques : disque dur, disque dur à mémoire flash, mémoire flash sous toute forme, mémoire vive, disque magnétique, stockage distribué localement ou dans le cloud, etc.

Dans l'exemple décrit ici, la mémoire 4 reçoit toutes les données qui concernent le dispositif 2, c’est-à-dire les programmes et logiciels instanciant l'encodeur 6, l'initialiseur 8 et le calculateur 10, les paramètres et hyperparam êtres de ceux-ci, les poids des réseaux de neurones le cas échéant, les sorties et données intermédiaires des réseaux de neurones, les données reçues en entrée, les valeurs intermédiaires, les données stockées en mémoire tampon, ainsi que les données de modèle de fabrication additive en sortie. Les données calculées par le dispositif peuvent être stockées sur tout type de mémoire similaire à la mémoire 4, ou sur celle-ci. Ces données peuvent être effacées après que le dispositif a effectué ses tâches ou conservées.

Dans l'exemple décrit ici, la mémoire 4 reçoit des données d'informations à encoder ainsi que des données de substrat d'objet comme données d'entrée. Les données de substrat d'objet contiennent des données de forme ainsi que des données de type d'encodage.

Les données de substrat d'objet permettent de définir la manière dont les données d'information à encoder vont être utilisées pour générer le modèle de fabrication additive. En effet, la Demanderesse a découvert que son invention permet de générer une très grande variété d'objets qui encodent l'information de manière diverse.

Ainsi, ces objets peuvent comprendre un code en surface et un code dans le corps de l'objet qui sont indépendants l'un de l'autre. Dans ce cas, le code dans le corps de l'objet peut être utilisé comme une marque stéganographique, qui permet d'authentifier de manière unique l'objet, quel que soit le code en surface. Dans une autre variante, ces codes peuvent être la continuité l'un de l'autre, c’est-à-dire que le code en surface constitue des bits de poids fort (respectivement de poids faible), tandis que le code dans le corps de l'objet constitue des bits de poids faible (respectivement de poids fort). Toujours en variante, le code en surface et le code dans le corps de l'objet peuvent être complémentaires et former un couple clé publique / clé privée. Enfin, le code en surface (respectivement le code dans le corps de l'objet) peut servir de clé publique à combiner avec une clé privée inconnue pour permettre de décoder un message ('' ayload'' en anglais) contenu dans le code dans le corps de l'objet (respectivement dans le code de surface). Les données de type d'encodage permettent de définir le paradigme retenu et conditionnent le message qui sera encodé dans le code dans le corps de l'objet, et donc son modèle de fabrication additive.

La Demanderesse a en effet découvert que la fabrication additive, grâce à sa précision et aux nouvelles possibilités matérielles permet d'encoder des informations très complexes tout en offrant une manière aisée de les lire.

Ainsi, un objet peut comprendre sur une face une pluralité de points de mesure, reliés ou non à une pluralité de points de mesure sur une autre face (par exemple la face opposée dans le sens de la fabrication additive). D'une manière plus générale, les points de mesure peuvent être répartis sur la surface du modèle de fabrication additive, et les points de mesure peuvent être associés deux par deux, de sorte que chaque paire de point représente une puissance de 2, ou une position dans un code qui a une valeur de base. De plus, la longueur du chemin entre deux points peut également être mesurée pour moduler la valeur de base. Ainsi, si les points sont reliés entre eux par un élément conducteur électriquement, une mesure aux bornes des deux points de mesure peut permettre de déterminer la résistance du chemin qui les relie et donc sa longueur pour en tirer une valeur. En variante, les chemins peuvent être creux, et la mesure peut être la mesure du temps d'écoulement d'un fluide d'un point de mesure à l'autre. Toujours en variante, un phénomène de conduction thermique peut être utilisé pour mesurer la longueur du chemin entre deux points de mesure, etc. Ainsi, il est possible d'encoder un très long message dans le corps de l'objet, et de lire ce message par une mesure simple d'une propriété physique.

Les données de forme permettent pour leur part de définir la forme générale de l'objet dont on cherche à générer le modèle de fabrication additive. Ainsi, celui-ci peut être de forme cubique ou parallélépipédique, ce qui sont les formes les plus spontanées, mais plus généralement, l'invention permet toute forme : à base hexaédrique, de section variable, etc. Typiquement, les données de formes peuvent être vues comme un ensemble de couches empilées qui correspondent à une forme souhaitée pour l'objet avant que le code soit intégré dans son corps. Les données de forme peuvent indiquer des portions de ces couches qui doivent être préservées et ne doivent pas être associées à un chemin.

Ainsi, les données d'informations à encoder et les données de substrat d'objet viennent contraindre le modèle de fabrication additive. En effet, selon la complexité du message à encoder, la manière d'encoder ce message et la forme spécifique recherchée pour l'objet, il sera possible de réaliser directement le modèle de fabrication additive, ou il faudra modifier les données de forme, par exemple en rajoutant des couches ou en modifiant l'échelle de l'objet pour permettre de mettre en œuvre les chemins qui encodent le code dans le corps de l'objet.

Comme on le verra plus bas, pour cela, le dispositif 2 utilise d'une part l'encodeur 6 afin de dimensionner a priori le modèle de fabrication additive de l'objet, puis l'initialiseur 8 afin de préparer le travail du calculateur 10. Enfin, le calculateur 10 opère une optimisation stochastique afin de définir des chemins dans le corps de l'objet qui permettent de respecter les règles de constitution de celui-ci, tant du point de vue de son intégrité structurelle que du point de vue de la mesure ultérieure permettant de recouvrer le code dans le corps de l'objet.

Cette approche stochastique est particulièrement avantageuse car elle permet de libérer les contraintes de conception et est particulièrement adaptée à la fabrication additive. En effet, l'approche stochastique garantit que si une solution satisfaisante existe (c’est-à-dire un ensemble de chemins dont les longueurs satisfont des tolérances d'optimisation et de fabrication), elle sera trouvée, et la fabrication additive, par la liberté sur le dimensionnement, permet de garantir qu'une solution existe quelle que soit la forme de l'objet ou la taille du message à encoder.

Ainsi, le modèle de fabrication additive produit par le dispositif 2 comprendra des données de couches définissant chaque couche de l'objet. Ces données de couches seront réparties sur une grille correspondant à la fabrication additive envisagée, et définiront à chaque point ou case de la grille si ce point est vide ou plein et s'il est plein avec quelle matière. Pour obtenir ce résultat final, l'encodeur 6 part des données d'informations à encoder et des données de substrat d'objet pour créer un ensemble de données de couches initiales qui correspondent à un objet "plein" propre à recevoir les chemins nécessaires à encoder le code dans le corps de l'objet. Il va de soi qu'un objet "plein" peut comporter des zones évidées tant qu'il reste possible de le fabriquer par fabrication additive, ou présenter des zones dans laquelle la densité de matière est plus faible que dans le reste de l'objet. L'encodeur 6 a également pour fonction de générer un tableau de longueurs cibles qui va définir la longueur que doit prendre chaque chemin entre deux points de mesure afin d'encoder les données d'informations à encoder. Comme expliqué plus haut, ces longueurs sont déterminées en fonction de la mesure de propriété physique qui est envisagée, de sorte que la mesure de cette propriété soit directement reliée à cette longueur et permette de définir une valeur associée à une paire de points de mesure.

Les données de couches initiales sont alors transmises à l'initiali seur 8 qui va définir d'une part les emplacements des points de mesure sur la surface de l'objet (par exemple sur des faces opposées, ou autrement), et d'autre part qui va initialiser des chemins entre des paires de points de mesure sur la base du tableau de longueurs cibles.

Ensuite, le calculateur 10 optimise les chemins générés par l'initialiseur 8 afin de respecter les contraintes de forme de l'objet définies par les données de forme, d'obtenir des chemins dont les longueurs correspondent au tableau de longueur cible, et de respecter des contraintes de fabrication structurelles et de mesure de propriété.

Toutes les données décrites ci-dessus pourront être stockées dans la mémoire 4.

L'encodeur 6, l'initialiseur 8 et le calculateur 10 accèdent directement ou indirectement à la mémoire 4. Ils peuvent être réalisés sous la forme d’un code informatique approprié exécuté sur un ou plusieurs processeurs. Par processeurs, il doit être compris tout processeur adapté aux calculs décrits plus bas. Un tel processeur peut être réalisé de toute manière connue, sous la forme d’un microprocesseur pour ordinateur personnel, portable, tablette ou smartphone, d’une puce dédiée de type FPGA ou SoC, d’une ressource de calcul sur une grille ou dans le cloud, d’une grappe de processeurs graphiques (GPUs), d’un microcontrôleur, ou de toute autre forme propre à fournir la puissance de calcul nécessaire à la réalisation décrite plus bas. Un ou plusieurs de ces éléments peuvent également être réalisés sous la forme de circuits électroniques spécialisés tel un ASIC. Une combinaison de processeur et de circuits électroniques peut également être envisagée. Des processeurs dédiés à l’apprentissage automatique pourront aussi être envisagés.

La figure 2 représente un exemple d'une boucle de fonctionnement du dispositif 2.

Dans une opération 200, le dispositif 2 exécute une fonction Inp(). La fonction Inp() permet de recevoir les données d'entrée en vue de la génération du modèle de fabrication additive. Comme on l'a vu plus haut, les données d'entrée comprennent les données d'information à encoder et les données de substrat d'objet. Les données d'entrées peuvent être obtenues par tout moyen, en utilisant une interface homme-machine et en accédant à celles-ci sur la mémoire 4 ou sur tout autre stockage.

Ensuite, l'encodeur 6 exécute une fonction Enc() dans une opération 210. Comme décrit plus haut, la fonction Enc() a pour rôle de transformer les données d'information à encoder en tableau de longueurs cibles en fonction des données de type d'encodage. De plus, la fonction Enc() a pour autre rôle d'instancier les couches pleines définissant l'objet qui doit recevoir le code dans son corps.

La figure 3 représente une mise en œuvre de la fonction Enc().

Dans une opération 300, l'encodeur 6 accède aux données d'information à encoder et aux données de type d'encodage et exécute une fonction Tab() qui retourne un tableau contenant les longueurs cibles des chemins. Les données de type d'encodage jouent un rôle particulier. En effet, en fonction de la propriété physique mesurée pour déterminer la longueur des chemins ainsi que du type d'encodage choisi (tableau à N bits, mot comprenant N groupes de mots à K bits chacun, valeur aléatoire), la fonction Tab() établit un tableau de longueurs cibles distinct. Comme on le verra plus bas, la mesure de la longueur des chemins peut être directement corrélée avec la longueur physique des chemins, mais elle peut également être basée sur d'autres propriétés, comme sur le nombre de virages que comprend un chemin, la mesure de propriété étant prévue pour permettre de compter ceux-ci.

Ensuite, une fonction Fit() est exécutée dans une opération 310. La fonction Fit() utilise comme arguments d'une part les données de forme, et d'autre part le tableau de longueurs cibles. La fonction Fit() a pour rôle de vérifier s'il est possible de réaliser des chemins dont les longueurs sont contenues dans le tableau de longueurs cibles à l'intérieur de l'objet défini par les données de forme. Cette vérification peut être réalisée au moyen d'un entraînement automatique (par exemple à base d'arbre boosté) ou reposer sur des critères analytiques (par exemple le fait que l'objet ne soit pas plus haut que la longueur de chemin la plus courte lorsque les points de mesure sont disposés sur des faces respectivement supérieure et inférieure de l'objet).

Si la fonction Fit() retourne une valeur positive, alors la fonction Enc() s'arrête dans une opération 399. Sinon, une fonction Adapt() est exécutée dans une opération 320 et l'opération 310 est répétée. La fonction Adapt() peut déterminer seule s'il faut augmenter ou diminuer la taille du modèle de fabrication additive, ou utiliser une valeur en retour de la fonction Fit(). La fonction Adapt() procède dans l'exemple décrit ici en réduisant ou en augmentant par un facteur d'échelle les données de forme.

Une fois la fonction Enc() de l'opération 210 terminée, une fonction Init() est exécutée par l'initialiseur 8 dans une opération 220.

La figure 4 représente une mise en œuvre de la fonction Init().

Comme expliqué plus haut, la fonction Init() part des données de forme éventuellement modifiées par la fonction Enc() et du tableau de longueurs cibles et a pour rôle de générer des points de mesure sur la surface de l'objet, ainsi que d'initialiser des chemins entre chaque paire de points de mesure.

Ainsi, dans une opération 400, une fonction MeasP() dispose de manière aléatoire ou pseudo-aléatoire des points de mesure sur la surface de l'objet. La fonction MeasP() peut également être contrainte par un code en surface prévu sur l'une des faces, de sorte que les points de mesures peuvent être forcés comme appartenant à une partie du code de surface (par exemple une partie plus claire) ou à l'autre (par exemple une partie plus foncée). De plus, la fonction MeasP() crée les paires de points de mesure qui vont être reliés par des chemins. Les paires de points de mesure générées par la fonction MeasP() sont uniques dans l'exemple décrit ici, et un point de mesure n'est relié qu'à un unique autre point de mesure.

Dans une variante particulière, des points de liaison pourront être créés à l'intérieur du corps de l'objet afin de permettre de créer des triplets, quadruplets ou plus de points de mesure reliés entre eux. Dans ce cas, ces liaisons multiples pourront être utilisées pour soit rendre plus difficile l'analyse de l'objet (puisqu'il faut savoir quelle paire de points est pertinente ou s'il s'agit d'une combinaison des deux mesures), ou pour encoder plus d'information.

Ensuite, dans une opération 410, une fonction Pat() reçoit comme arguments le tableau de longueurs cibles et l'ensemble des points de mesure générés par la fonction MeasP() de l'opération 400. La fonction Pat() opère en déterminant des chemins entre les points de mesure de chaque paire qui correspondent le mieux possible avec les longueurs du tableau de longueurs cibles.

Par exemple, la fonction Pat() peut appliquer un algorithme de type Djykstra pour déterminer le plus court chemin entre chaque paire de points de mesure, et associer à chaque paire de points une des longueurs du tableau de longueurs cibles par ordre croissant de longueur de chaque chemin. Ainsi, chaque paire de points de mesure se trouve associé à une partie du message des données d'information à encoder.

En variante, la fonction Pat() peut appliquer l'algorithme décrit dans l'article de Lefebvre et al. "Information texture synthesis", 2021, hal-01706539, accessible à l'adresse https://web.archive.Org/web/20221019215343/https://hal.inria .fir/hal-01706539v4. De manière optionnelle, après l'exécution de la fonction Pat() (ou à la fin de celle-ci) l'initialiseur 8 peut "figer" une partie des chemins pour que le calculateur 10 ne les modifie pas. Par exemple, la partie visible des chemins peut avoir été construite avec un but secondaire, comme suivre un logo, encoder une information, etc. Il va de soi que cela imposera que la partie figée soit plus courte que la longueur cible associée au chemin concerné. Cela est particulièrement avantageux lorsque l'algorithme "Information texture synthesis" est utilisé pour générer une partie visible des chemins : l'initialiseur 8 peut alors figer la partie visible selon la méthode de l’article "Information texture synthesis" encodant une information visuelle dans le motif formé par les chemins, et générer le reste au hasard.

De manière préférée mais optionnelle, l'opération 410 peut valider qu'aucun des chemins initialisés n'est plus long que la longueur à laquelle il est associé. Cela permet d'éviter un risque de non-convergence de l'opération suivante. Lorsque c'est le cas, les opérations 400 et 410 peuvent être répétées jusqu'à ce que cette condition soit remplie.

Une fois la fonction Init() de l'opération 220 terminée, une fonction Opt() est exécutée par le calculateur 10 dans une opération 230.

Comme expliqué plus haut, cette fonction a pour rôle d'optimiser les chemins issus de l'opération 220 jusqu'à ce que tous les chemins présentent une longueur correspondant à la longueur qui leur est associée dans le tableau de longueurs cibles à l'issue de l'opération 400.

La fonction Opt() met en œuvre un algorithme d'optimisation stochastique. Plus précisément, il s'agit d'un algorithme de type « Simulated Annealing » tel que décrit dans l'article de Kirkpatrick et al. “ Optimization by Simulated Annealing". Science 1983. En variantes, d'autres algorithmes stochastiques pourront être applicqués, par exemple en variante les algorithmes génétiques décrits dans l'article “Genetic Algorithms in Search, Optimization, and Machine Learning^, Goldberg, 1989. Pour cela, cet algorithme vient modifier de manière pseudo-aléatoire chaque chemin. Pour cela, dans chaque chemin, une sous-séquence de ce chemin de taille choisie aléatoirement va subir une opération de modification. Le type d'opération sera choisi de manière pseudo-aléatoire pondérée en fonction de la distance entre la longueur du chemin auquel appartient cette sous-séquence et la longueur auquel il est associé dans le tableau de longueurs cibles.

Comme on l'a vu précédemment, chaque couche est représentée sur une grille dont x et y sont deux axes orthogonaux, et z est la direction d'empilement des couches pendant la fabrication additive. Ainsi, chaque chemin peut être vu comme une suite de déplacements unitaires selon x, y ou z. Les opérations opérées sur chaque sous-séquence pourront donc être :

- une opération d'allongement, par l'ajout d'une séquence (+1 ;-l) en x, y, ou z autour de la sous-séquence, une opération,

- une opération de réduction, par la suppression de deux déplacements de signe opposé en x, y ou z dans la sous-séquence, ou

- une opération de mélange, par la réorganisation pseudo-aléatoire d'une suite de déplacements au sein de la sous-séquence.

A chaque fois que l'une de ces opérations est réalisée, l'opération Opt() est agencée pour vérifier que le changement induit ne provoque pas des problèmes structurels (impossibilité de construire le modèle de fabrication additive), ou de mesure (intersection ou chevauchement de deux chemins suite à l'opération). La vérification implique aussi de valider que l'opération n'induit pas de déplacement de type (+1 ;-l) ou l'inverse en x, y ou z, puisque cela n'aurait aucune conséquence physique dans l'objet. Si c'est le cas, alors l'opération est rejetée. Sinon, la boucle d'optimisation reprend avec un nouveau chemin, et une nouvelle sous-séquence à modifier.

De manière optionnelle et préférée, la fonction Opt() peut mettre en outre en œuvre une ou plusieurs des règles suivantes :

- les déplacements en z doivent être monotones, c’est-à-dire qu'il n'y que des déplacements en +z ou en -z. A partir d'une couche supérieure recevant tous les points de mesure, cela permet de s'assurer que tous les chemins présentent le même nombre de transitions de couche. Cela est particulièrement avantageux lorsque la mesure de la longueur des chemins est basée sur la mesure de la résistance électrique de ces derniers. En effet, les transitions entre deux couches, qui constituent de fait les déplacements en z, peuvent présenter des résistances plus fluctuantes qu'en x ou en y. Dès lors, en assurant le même nombre de déplacements en z, le bruit de mesure est sensiblement le même pour tous les chemins.

- la vérification que l'opération permet de diminuer la proximité des chemins entre eux, cette proximité pouvant être définie comme la distance de Manhattan entre chaque déplacement de la sous-séquence concernée par l'opération courante d'optimisation et son voisin le plus proche dans un autre chemin. Si la proximité de la sous-séquence modifiée est plus importante que celle de la sous-séquence initiale, alors l'opération peut être annulée et une autre opération de modification de sous-séquence être exécutée, jusqu'à ce que la proximité entre voisins augmente.

De manière optionnelle, fonction Opt() peut mettre en outre en œuvre une ou plusieurs des règles suivantes :

- les déplacements en z respectent une séquence bitonique (chemin qui « monte puis descend » ou « descend puis monte »)

- les déplacements en z présentent un même nombre de montées/descentes sans imposer d’ordre.

Bien que dans l'exemple décrit ici la grille des couches soit à éléments carrés, celle-ci pourrait être à éléments tétraédriques ou toute autre forme. De plus, lorsqu'une longueur du tableau de longueurs cibles est nulle, la fonction Opt() peut être agencée pour soit ne réaliser aucun chemin, soit réaliser des morceaux de chemin discontinus depuis l'un, l'autre ou les deux points de mesure concernés.

Ainsi, le dispositif 2 permet de réaliser une variété considérable d'objets par fabrication additive dont les applications peuvent être extrêmement variées :

- réalisation d'un code de surface, ou pas, - réalisation d'un code d'authenticité par encodage d'une valeur arbitraire dans le corps de l'objet,

- réalisation d'un code à clé publique / clé privée, ou secret partagé, etc. Et ces réalisations, tout en étant extrêmement simplifiée par l'utilisation d'un paradigme basé sur les algorithmes stochastiques, font appel à des mesures de propriétés physiques simples telles que la mesure de résistance, de température, ou de temps d'écoulement d'un fluide ou d'un gaz, ce qui rend le déploiement de ces objets extrêmement simple.