Various aspects of the present invention relate generally to systems and methods for distortion compensation for 3D printing.
Mechanical processes used to print and sinter metal parts may cause multiple geometric distortions to take place upon the material. For example, parts that are 3D printed and sintered undergo shrinkage, warping, cracking, and slumping. Parts that are laser printed (e.g., using Selective Laser Melting and Direct Metal Laser Sintering) may also undergo geometric distortions. Parts that manufactured using metal injection molding (i.e. MIM) may also undergo geometric distortions.
To account for these geometric distortions, engineers may attempt to guess at dimensional corrections, and geometry additions (e.g., supports) and apply them to the manufactured parts in order to achieve a post processed result that approaches near net shape of the designed parts. As an example, an engineer may anticipate that a part will experience slumping in a sintering process and thus create a part design including a distortion in one direction, such that the 3D printed resultant part may be near the desired shape after slumping. These engineer designed approaches may use only “as-measured” data points from scans or photographs. The resulting corrections—usually negative offsets—may thus be haphazard and inaccurate, both because they are manual and because they are based on the final result, with no knowledge of the time-based process that achieves these results.
A desire exists for a way to provide mechanical designs and manufacturing solutions that result in desired geometries. The following invention is directed to systems and methods for addressing this need for designing and manufacturing parts while accounting for geometric distortions that may occur during manufacturing or post-processing.
In exemplary embodiments, a non-transitory, computer-readable medium for use on a computer system containing computer-executable programming instructions for performing a distortion simulation can perform methods for distortion compensation and/or methods for additive manufacturing and metal injection molding manufacturing.
The method can include receiving a model of a part used in at least one of additive manufacturing or metal injection molding manufacturing; generating a cell mesh using the received model of the part; and/or performing a simulation on the cell mesh undergoing one or more mechanical processes.
In at least some embodiments, the simulation can include an input parameter representing at least one of a mechanical property of the part, a coefficient associated with the one or more mechanical processes, or a combination thereof and/or generating, based on the simulation, a distorted cell mesh.
In exemplary embodiments, the method can also include receiving a scan of a physical part generated from the one or more mechanical processes; defining a set of rotation axes comprising at least a first rotation axis and a second rotation axis; defining an axis of the set of rotation axes as at least two increments; computing rotational deviation for the at least two increments; identifying, of the computed rotational deviation for the at least to increments, the lowest computed rotational deviation; identifying one or more axes of the set of rotation axes associated with the identified lowest computed rotational deviation; aligning the scan of the physical part mesh to the cell mesh based on the identified one or more axes; and computing, based on the aligned scan of the physical part mesh, a deviation score by comparing the distorted cell mesh to the scan of a physical part generated from the one or more mechanical processes.
In exemplary embodiments, the deviation score can be the average of the deviations between vertices of distorted cell mesh and nearest points on scan of physical part.
In exemplary embodiments, the method can include running a distortion simulation using input parameter values including at least one of shrinkage rate, coefficients of friction, creep strain stress threshold, and material compliance; iterating the running of the distortion simulation by incrementing values of input parameters; and/or generating the deviation score for each step corresponding to those input parameter values.
In exemplary embodiments, the method can include repeating the distortion simulation by incrementing the input parameter values; selecting the input parameter values corresponding to the minimum deviation score and identifying the corresponding input parameter values as the tuning result; and/or generating a negative offset for the model of the part from the tuning result.
In exemplary embodiments, the generating a negative offset for the model of the part from the tuning result can include performing a first distortion simulation on initial cell mesh to produce a first distorted cell mesh using parameter values from the tuning result; initializing a map of aggregate distortion vectors corresponding to vertices in initial cell mesh; computing values for first distortion vectors where each first distortion vector is the difference between the position of a first distorted cell mesh vertex and the corresponding position of the initial cell mesh vertex; updating the map of aggregate distortion vectors by applying one or more first distortion vectors; adding distortion vectors from map of aggregate distortion vectors to positions in initial cell mesh to create first updated cell mesh; performing the distortion simulation on first updated cell mesh to produce a second distorted cell mesh; computing values for second distortion vectors, wherein each second distortion vector is the difference between the position of a second distorted cell mesh vertex and the corresponding position of the initial cell mesh vertex; updating the map of aggregate distortion vectors by applying one or more second distortion vectors; and adding distortion vectors from map of aggregate distortion vectors to positions in first updated cell mesh to create second updated cell mesh.
In exemplary embodiments, the method can include repeating the steps of performing a distortion simulation on Nth updated cell mesh to produce a Nth+1 distorted cell mesh and updated map of aggregate distortion vectors; and stopping the repeating of steps when the deviation between positions of vertices in Nth+1 distorted cell mesh and positions of vertices in the initial cell mesh is within a tolerance of plus or minus (+/−) 1%.
In exemplary embodiments, the updated aggregated distortion vectors can be applied to a generated triangle mesh.
In exemplary embodiments, the triangle mesh generation can include defining a vector function on the triangle mesh based on the updated map of aggregate distortion vectors; and generating a distortion mesh based on the vector function and the updated map of aggregate distortion vectors.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various exemplary embodiments and together with the description, serve to explain the principles of the disclosed embodiments.
Reference will now be made in detail to the exemplary embodiments of the present invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
As described above, engineers may manually account for distortions that may occur during part manufacturing and/or post-processing, but such manual adjustments may be unreliable, labor-intensive, and misguided. Accordingly, the present invention is directed to systems and methods for automatically generating mechanical part designs and manufacturing specifications/instructions that account for geometric distortions that may occur during manufacturing or post-processing.
One drawback with existing methods of pre-distorting parts to achieve better results is that they simply observe a final distortion and aim to adjust a part based on the final distortion. However, distortions may be attributable to several processes performed while manufacturing a part. The disclosed systems and methods recognize the need for an accurate simulation of the many mechanical processes involved in producing a physical form of a designed mechanical part. In particular, the disclosed systems and methods are directed to creating complex simulations that are time-dependent and non-linear, and based on multiple physical phenomenon.
In other words, if one simply observes the final distortion caused by an actual mechanical process, such as sintering, and applies a simplistic negative distortion to the original CAD part (or other model part) by the negative of the amount that it shrank and sagged, the result may be a part that distorts close to the desired shape, but does not match the desired shape. The reason is that a negatively distorted part will behave in a new way. For example, if a beam distorts to a sagged shape with sintering, and one simply distorts the beam upwards by the same amount that it sagged, the result of sintering the upward arched beam may still be a curved beam. The negatively distorted arch may not sag at all, or the arch shape may provide some stability that prevents it from distorting into a flat beam. The current embodiments recognize the need to provide an accurate simulation of the mechanical transform process, measure the delta in the results to the desired shape, and iteratively apply a negative transformation in a compounding way to the original part and subsequently negatively distorted parts. If the simulation is close but not exact, the current embodiments include an iterative approach that may repeatedly apply compounded transforms to the original shape, and thus result in a simulated result that matches actual mechanical transformation results. Further, even if an iterative approach is taken, the incremental modifications may be informed based on simulated parameters as opposed to based on trial-and error observations of outcomes. In this way, the disclosed systems and methods may provide accuracy in sintering (or performing any process on) parts, which may be critical to the usefulness of the final mechanical parts.
Referring now to the figures,
Server systems 116 may include storage devices for storing images and data received from at least one of the various processors or platforms. Server systems 116 may also include processing devices for processing images and data stored in the storage devices. Server systems 116 may further include one or more machine learning tool(s) or capabilities, e.g., due to the processing devices. Alternatively or in addition, the present invention (or portions of the system and methods of the present invention) may be performed on a local processing device (e.g., a laptop), absent an external server or network. While
System 100 may comprise a software system for geometrically compensating the shape of a part and optional supporting structures in order to account for distortion due to time-based mechanical process transformations. System 100 may help achieve formation of a part that has a desired, undistorted shape. To do so, system 100 may employ a tuning phase and an application phase. The tuning phase may be applied to test or sample parts. The tuning phase may employ a neural network combined with a time-based multi-physics engine to simulate and tune simulated mechanical distortions. Once system 100 has tuned a mechanical simulation using actual sample part results (that may be digitally scanned), the application phase may be initiated. For example, system 100 may provide a means of adaptively predicting negative pre-distortions to any number of input design parts in order to correct for undesired distortions using the same mechanical process, e.g., an iterative self-adaptive part correcting mechanism. Using an adaptive iterative approach, for example, system 100 may simulate a distortion, apply a negative pre-distortion, and run the simulation again while applying a next compounded negative-distortion. In one embodiment, the iterative simulation process may be repeated until the simulated result erases all, or a threshold number of, undesired distortions caused by the mechanical process. The result of the application phase may include a design, model, or manufacturing specification(s) comprising a pre-distorted part, support structure(s), or a combination thereof, that will produce desired results when the actual mechanical processes are applied to parts manufactured according to the pre-distorted data. The output of system 100 may include a set of pre-distorted files used in downstream manufacturing.
Examples of mechanical processes that apply geometric distortions include 3D printing, sintering, metal injection molding, chemical debinding, and thermal debinding. The tuning and application phases of system 100 account for one or more of characteristics of these mechanical processes, or other mechanical processes not listed, including creep strain, phase changes of elastic to plastic deformation, friction drag, time-based shrinkage and densification, Poisson Effect of compressibility of hot materials, collisions with rigid structures, and/or responses to body forces such as gravity, surface tension, and tearing thresholds for simulating cracks. A subset of these processes may be activated in a system 100 simulation. As an example, when bound powder metal parts are sintered, they may undergo transformation distortions in the form of creep strain, shrinkage, frictional drag, and/or cracking that result in shapes that fail to match desired dimensional accuracy of parts prior to mechanical transformations. Other forms of part construction include Fused Deposition Modeling (FDM), or Fused Filament Fabrication (FFF) of MIM powders, injection molding of MIM powders. Other mechanical transformations include thermal and chemical debinding and sintering.
System 100 may comprise a software module that simulates numerous distortions that are a function of time, temperature, and other environmental factors. These simulated processes may take place, or compound, over time and are not static snapshots similar to what is obtained with simulations such as linear, elastic finite element analysis.
System 100 may further comprise one or more components for scanning/imaging (e.g., one or more of a laser scanner, camera, coordinate measuring machine, touch probe, etc.) actual samples of transformed or printed parts (made of, e.g., metal, plastic, etc.), and comparing the actual scanned/imaged samples with the simulated distorted results to obtain a number of fitness scores. A fitness score may represent the accuracy of a simulated distorted part to an actual distorted part. An example of fitness includes overall distortion of external part mesh vertices (e.g., a heat map).
System 100 may determine and correct mechanical distortion using a variety of approaches, machine learning algorithms, simulations, and computations. The following invention describes various capabilities and functions of system 100. First, system 100 may provide a multi-physics mechanical distortion simulation, e.g., as described by
Making the manufacturing process simulation of system 100 may include an iterative training process. An initial step of an exemplary training process may include, for example, running a simulation that distorts the original mesh vertices to shrunken and deformed mesh vertices, and then checking the accuracy of the simulation by comparing the deformed mesh vertices to a scan of a physical part that was subjected to the real-life process that system 100 was set to simulate. As an example, the training process may include running a sintering simulation in which an original mesh may be subjected to one or more parameters and, as a result, may be distorted to a shrunken and deformed mesh. The shrunken mesh may represent the original mesh, post-simulation. The shrunken mesh may thus comprise a mesh of a simulated sintered part. The simulated sintered part mesh may then be compared to a scan of a physical sintered part, to check the accuracy of the sintering simulation. In other words, original mesh vertex transformations that are made to form the simulated sintered part mesh may be verified against actual transformations, provided by a scan of a physical part that has undergone sintering.
If discrepancies exist between the scan of the physical part (e.g., the sintered part) and the simulated sintered part mesh, the simulation may be adjusted, or tuned. The tuning may be performed manually, whereby a user observes the shape discrepancy between the simulation result and the scanned part, and decides to change one or more input parameters and rerun the simulation. As an example, a user may observe that the sides of part represented by the simulation result are more tipped inwards than the sides of the scanned part, and may determine that the friction coefficient of the part in the simulation against the furnace surface was too high, preventing the part from sliding inwards. Alternatively, the tuning may be performed by a neural network. The tuning may only be needed until the simulated sintered part mesh matches the scan or matches the scan within a predetermined threshold level of acceptable difference. Once the tuning has been performed, the parameter values that generate simulated part meshes that match the scan of the physical part may be identified and set for use with future simulations. In this way, negative distortions may be created for new simulated part meshes without first tuning the simulation parameters using scans of these new part meshes. The tuning process applies to materials and print/mold manufacturing processes rather than each unique part geometry. As such, one may tune the simulation parameters for a material and process using a handful of representative part geometries. Once this is complete, one may run simulations on new part geometries using these parameter values. It is possible, however, to periodically tune the simulation after the initial tuning of the simulation environment has been performed.
A neural network may be incorporated into the process used to distort a part. For example, a simulation may distort an original mesh vertex to account for geometric changes that may occur during a manufacturing process. For instance, a distortion may include an enlarged, negatively distorted version of the original mesh vertex. The enlarged version may be designated as the “working mesh”. This working mesh may be run through a sintering simulation, which should distort the enlarged working mesh to a shrunken, deformed, simulated sintered part mesh. The simulated sintered part mesh generated from the working mesh may be compared to the original (desired) part mesh. If the comparison indicates that discrepancies exist between the meshes, the working mesh may be altered to update the negative distortion applied to the working mesh, and the simulation may be run again on the updated working mesh. Comparing of the simulated sintered part mesh to the original part mesh, updating the working mesh, and running the simulation, may be repeated until the simulated sintered part mesh generated from the working mesh matches the original part mesh within a given threshold, or until there is no difference. The neural network may be used to detect and anticipate parameter changes/distortions that should be made to a working mesh, to ensure that a post-manufacturing geometry reflects the original part mesh.
System 100 may also tune or train a simulation environment, in order to provide accurate simulations of the geometric distortions. For example, system 100 may use an approximation of many complex behaviors from predicted effects of mechanical processes to tune a simulation to obtain results that match actual test sample parts. The tuning of the simulation may involve employing a neural network, e.g., as described in
System 100 may further apply an adaptive iterative negative pre-distortion approach to generate design part shapes that will distort through simulation to give shapes that match desired design part input shapes. In other words, system 100 may tune distortion models based on actual/physical scanned parts. This approach is described in greater detail at
As part of checking or ensuring that the distortion corrections are correct, system 100 may use camera/scanner/measurement data acquisitions to fine-tune a tuned simulation model. Furthermore, system 100 may provide a way to compare a physical, mechanically processed part, to an original part mesh. For example, system 100 may provide an auto-positioning mechanism to facilitate this comparison (e.g.,
Throughout this invention, several references are made to distorting models/meshes and simulating distortions. As possible embodiments, the invention describes an exemplary method for iteratively generating negative distortion vectors (e.g.,
As previously described, system 100 may provide a mechanical distortion simulation environment. The simulation environment may use a multi-physics approach to provide a high speed time simulation of mechanical effects, such as shrinkage, creep deformation (e.g., plastic creep deformation), and friction drag. These simulations have coefficients that may be used to tune the behavior and outcome.
To illustrate,
A “cell” in the present invention refers to a parameterized, modeling building block that makes up a model of a part in order to simulate the reactions of the part to applied forces over time. For example, a cell may be comprised of a mathematical and visual representation of physical material properties, mechanical properties, electrical properties, thermal properties, chemical properties, or a combination thereof. For instance, one exemplary cell may include a representation of elastic material properties by modeling one or more physical elements, such as springs, dampers, and masses.
For example, the system 100 may attach spring/damper structures along the rectangular grid of spheres and use criss-crossing springs on the faces of each cell—connecting the diagonals across the face of each cell in a model. Such a simulation method may give the deformable structure the ability to change shape without flowing out of control as is the case with a fluid. The structure may then behave as elastic, according to supplied material properties such as Young's Modulus.
The collection of attached spheres with springs and dampers may allow the system 100 to model the interaction of a deformable object as it collides and deforms elastically with other deformable objects in addition to the rigid bodies that are represented by mesh objects.
The multi-physics engine may be coupled with one or more linear elastic finite element method (FEM) modules that may take a mesh representation of the parts as represented as deformable objects, and given the forces and boundary conditions such as friction contact points at some point in the time based simulation, the software of system 100 may provide a stress measure for each point location at the center of the spheres.
Exemplary simulations provided by system 100 may include simulations of plastic creep strain and/or shrinkage. One approach for simulating creep strain deformation may be to modify the normally linear elastic behavior of the multi-physics spring/damper/collidable sphere model with a stress based spring relaxation approach that essentially relaxes the resting lengths of springs over time—from one step to the next. In taking such an approach, system 100 may take the assumption that a spring under load will stretch from its resting length. Over time, the simulated model/structure may reach an equilibrium, where the stretched spring may have a reactive force that equals the applied force. In one embodiment, system 100 may measure the stresses of the material at different snapshot points in time (rather than let the simulated structure reach an equilibrium). In such a case, the measured stresses at snapshot points may be used to modify the spring resting lengths in order to relax them and simulate plastic deformetion. This approach may achieve plastic deformation simulation by combining the multi-physics elastic time-based behavior with point-in-time snapshots of stress using a linear FEM simulation.
In one embodiment, system 100 may perform this relaxation to the springs that connect spheres. System 100 may derive the stress at a cell location, along with the strain of the springs, as measured by the deformation versus their resting lengths. Using a scientifically understood relationship of the time rate of strain change—or delta strain delta time as a function of the stress, temperature, and other factors, the system 100 may measure the desired spring lengths along with the resting spring lengths, and change the resting spring lengths as a linear interpolation of the resting lengths and desired lengths—where the interpolation weighting factor may be a function of the strain on that face (edge and diagonal springs on a face) and the stress in the vicinity.
System 100 may also simulate shrinkage by modifying spring resting lengths repeatedly, based on a function of time steps and overall amount of densification that has already occurred. The latter densification may be a measure of the amount the springs have already shrunk. In addition to modifying the spring resting lengths, system 100 may modify the effective collision radii of the particles so that as the material shrinks, it may allow for closer proximity of the particles. In one embodiment, during creep strain, system 100 may maintain the particle radii and relax the springs on the cell diagonals less than the edge springs. This may give the modeled material an ability to deform, while maintaining an element of incompressibility. When the radii of the particles do not change and the diagonal springs remain rigid, the material may deform and bulge outwards—this may be one way for system 100 to simulate the Poisson effect.
System 100 may tune the simulation environment by using a neural network. To ensure accurate distortion compensation, the simulation environment should accurately reflect effects of actual manufacturing processes (e.g., sintering). The following embodiments describe processes to create a simulation environment that accurately reflects outcomes of manufacturing processes. In particular,
1) Receive (e.g., load) a CAD model at system 100.
2) Run a simulation using a sample test part, and a number of input parameters representing mechanical properties, coefficients of mechanical processes such as friction drag, creep rates as a function of strain and temperature. System 100 may produce a simulated distorted part.
3) Receive, at system 100, a 3D digital scan file representing the actual sample test part after the actual mechanical process has been applied.
4) Compute, using system 100, a delta score or fitness score. This score may be the sum of the absolute values of the distances between the original mesh vertices to the distorted mesh vertices. While the exemplary step 4 describes a comparison of meshes, the scores may be derived from a comparison of any form of the simulated distorted part against the accrual test part.
Other approaches of determining the amount of distortion may be used that give weights to certain areas.
5) If the score is bad (e.g., higher than a specified threshold in some scenarios), then the simulation may be run again and again using different parameters. When a final score is obtained that shows accurate simulation (e.g., a score within or under a specified threshold), then the iterative simulation process may be halted.
6) Employ a neural network to detect patterns in the correlation of input parameter changes and resulting score changes.
An example of two input parameters that may be modified by the neural network are the friction drag coefficient and the creep strain rate. Friction drag may characterize how quickly or readily the part slides along the circular supports shown in
Using the multi-physics based simulation module, many behaviors may be simulated in accelerated real time—including shrinkage as a function of time and temperature, creep strain as a function of stress, strain, temperature, friction drag, material elasticity, Poisson effect, etc.
Alternately or in addition to simulating the complex time-based behavior of the mechanical processes described herein, snapshots, data, or measurement(s) of the shape of a part may be obtained at multiple points during a simulation. For example, a camera in a furnace may collect data on actual deformation of a part by taking images over time. Using the time-based progression of a mechanical distortion, functions may be fit to the behavior of the part during the mechanical process. This may be difficult, given the complex 3D geometry involved in many modeling scenarios. However, the shrinkage over time may be computed or predicted, and then this single physical transform aspect could be applied to a design part.
The simulation environment may be used to predict the transformed shapes of parts undergoing one or more mechanical processes.
Once a simulation environment is set up, accurate part correction may take place. In one embodiment, system 100 may provide an iterative self-adaptive part correcting mechanism based on a tuned mechanical process. For example, system 100 may provide an adaptive pre-distortion compensation mechanism in a part design (e.g., a CAD model of a part). For instance, a simulated mechanical process (e.g., a sintering run) may be tuned for a set of material properties and mechanical environmental factors (such as temperature ramp up times). The tuning of such a process may inform geometric corrections or adjustments of a part, e.g., via a self-adaptive part correcting mechanism. An accurate time-based simulation of the mechanical process may be important to obtaining a correct net shape and effectively employing adaptive tuning of negative pre-distortions.
In one embodiment, a self-adaptive part correcting mechanism may use the tuned simulation model based on actual sample parts to generate sets of pre-distorted shapes based on a set of input shapes. These pre-distorted shapes may transform to the desired original shape when run through the tuned simulation and when processed in the actual physical simulation. This mechanism may involve system 100 providing or comprising software that predicts negative distortions that will accurately transform to the original part shape, rather than to an unusable part. The process of the self-adaptive part correcting mechanism may be iterative, employing simulations and corrections, and then applying corrections to the corrections, until the compounded effect of multiple corrections achieves post simulated results that match the original parts. Iterative self-adaptive correction of negative pre-distortions in parts may include system 100 executing one or more of the following steps:
1) Obtain or detect a pre-tuned simulation model for a mechanical distortion and a defined material and environmental factors. This may include the material elastic properties, the time-based shrinkage rate, friction drag, coefficients, time rate of temperature change, etc.
2) Load into system 100 (or receive at system 100), a new design part. Support structure(s) may also be received. The part and/or support structure(s) may be received in the form of one or more CAD models or a 3D scanned data file. The model(s) or file may comprise a triangular mesh, a gcode, or other representation that provides an outer boundary shape that must be negatively pre-distorted.
3) Run a simulation to generate a distorted result.
4) Compare the distorted result to the initial shape. This step may be different from the tuning process step where the simulated distorted result was compared with the actual distorted sample or test part. Here, the comparison involves detecting how distorted the result is from the desired undistorted shape.
5) Determine a negative offset amount based on the distortion. In the exemplary diagram 600 of
6) Apply a negative distortion to the original part.
7) Using the first negative distortion, run the simulation again. Again, the simulation result may be compared with the undeformed original CAD part—not the negatively distorted part.
8) Derive a new, second distortion from the above simulation. In the example of
9) Run the simulation on this now compounded negatively distorted part. Measure the deviation of the result against the original shape.
10) Derive and apply a third negative distortion.
Negative distortions may be repeatedly derived and applied until the simulated shape change matches the original part. This process may be adaptive and may correct for unexpected behaviors that may emerge from changing the shape of the part (e.g., in the negative direction) and running the simulation again.
Alternately or in addition, at least one camera, 3D digital scanning device, and/or measurement device (e.g., camera, laser scanner, coordinate measuring machine, touch probe, etc.) may be part of system 100. Such a device may observe (e.g., scan, monitor, image, or measure) the mechanical distortion process. The results of a large number of actual processed part results may be fed into a database along CAD models of the parts, one or more pre-distorted models created by system 100, or a combination thereof. In one embodiment, system 100 may use a neural network to discover patterns in deviations of actual results from original CAD models and the negative distortion models. For example, one may find that the negative distortion model is not accurate for thick parts versus thin parts. The patterns discovered with the neural network analysis may be used to re-tune the simulation model. In other words, one or more digital scan(s)/image(s) of a produced/3D printed part may be obtained and fed back into system 100 to tune the tuned simulation environment, part correcting mechanism, pre-distorted shape(s), or any other design features and manufacturing parameters/models provided by system 100.
The described scanning/data collection may take place at each, or some, of the manufacturing station end points. For example, for scanning during a 3D printing process, a camera may be mounted overhead of a part being printed. In this position, the camera may capture a picture every N passes and use edge detection to find the perimeters of the part being printed. A 3D mesh model may be produced, based on the layer height offsets of the printing process. This 3D mesh model may reflect a structure of the part, as seen from the Z axis. Scanners may also be incorporated into debind and sintering runs. Such scanners may capture scans and/or data of the part and the supports.
In one embodiment, system 100 may be implemented as part of a computer-aided design software package or system. The software package or system may include a growth-based or generative design software using a cell-based approach. A “cell” in this context may refer to a parameterized, modeling building block that makes up a model of a part in order to simulate the reactions of the part to applied forces over time. For example, a cell may be comprised of a mathematical and visual representation of physical material properties, mechanical properties, electrical properties, thermal properties, chemical properties, or a combination thereof. For instance, one exemplary cell may include a representation of elastic material properties by modeling one or more physical elements, such as springs, dampers, and masses. The user may set up modeling constraints that may guide these cells to grow from a set of seed cells into a collection of cells. The collection of cells may grow to form a model of a physical structure. Users may benefit from this solution by being able to create naturally self-optimized designs that they could not have envisioned on their own. Example embodiments can provide design tools that blend principles of growth and adaptation with engineering. In particular, example embodiments may provide elements of cell-level growth behaviors, and may include them into a toolset of building blocks for creating structures. The cells may be programmed to generate populations of cells, as reactions to the simulated application of force. For instance, cells may be added (e.g., “grown”) or removed from a part during a simulation of applied forces. This cell-based approach is discussed in detail, for example, in U.S. Patent Application Publication No. 2019/0138673, entitled “Growth-Based Design System”, and U.S. patent application Ser. No. 16/373,349, entitled “Systems and Methods for Growth-Based Design”, both of which are hereby incorporated by reference in their entireties.
In one embodiment, system 100 may import fill zones from a design software. In one instance, system 100 may then populate the imported fill zones with cells. System 100 may represent the fill zones as plastically deformable bodies that may collide with each other and experience body forces, external forces, and rigid constraints. Alternately or in addition, system 100 may import keep out zones from a design software storage or system and render these imported keep out zones as rigid bodies.
System 100 may provide a time-based simulation where a part may begin to deform under one or more loads—initially elastically. In one embodiment, at every N frames, system 100 may pause simulation and perform stress analysis on deformable meshes of the simulated part, in their deformed states. For each stress analysis, system 100 may use the current set of friction contacts that are detected between the deformable parts and the rigid bodies around them.
The stress results may be incorporated back into the cells, where the system 100 may use the combination of stress, face strain, point in time in the simulation, and a number of input parameters to determine the incremental change in spring resting lengths due to creep strain and shrinkage.
In one embodiment, one or more application(s) of system 100 may be run with no user interface(s), and the design parts may be loaded as files with input parameters, in order to run the automated neural network simulations. The actual result scan/imaging files may also be loaded from a database so that the system 100 may compare the actual point data deviations from the simulated deviations.
Once the system 100 has derived a set of negative pre-distortion values, it may output the negatively pre-distorted shapes for production via 3D printing or other processes. This system 100 may be used to simulate any type of manufacturing process that involves material that changes shape due to heat, chemical transform, and mechanical interaction with other objects. This includes debind processes in addition to sintering.
In summary, system 100 may use a combination of multi-physics based simulation engines to predict the time dependent mechanical distortions. System 100 may tune the input parameters that define these distortion behaviors using a neural network, in order to achieve simulation accuracy on a set of test sample parts, and then apply the simulation to a set of design parts in order to obtain a set of negatively pre-distorted design parts that achieve accurate net shapes when subject to the actual mechanical distortions. System 100 may allow a user to load a part into system 100, and then system 100 may simulate the distortion over time of the part and/or its supports. System 100 may further apply a negative pre-distortion (e.g., correction) to all the part(s) and support(s), to compensate for the distortion. System 100 may include and/or execute one or more of the following elements:
1) a software-based sintering simulation of the time and temperature dependent effects of creep deformation, shrinkage, frictional drag, and cracking during numerous mechanical processes,
2) a means of reading test or sample scanned actual transformed parts (i.e. sintered parts)—this may be a camera or a digital point scanner,
3) a scoring function that ranks the accuracy of the simulation model to actual results,
4) a neural network that varies the input coefficients to the simulation model in order to enable simulated results to best match actual results,
5) an iterative processing engine that uses the neural network to tune the behavior of the simulated transform to achieve a small delta in the simulated to actual results.
6) a processor that accepts a new set of “design” parts to be manufactured, for which a pre-distorted negative transform is desired that will result in transformed parts that accurately match the original parts
7) a negative pre-distortion mechanism to apply a calculated opposite distortion to the design parts and optional supports based on the delta between a simulated transform of the design part and the original design part,
8) an iteration mechanism to repeatedly simulate the mechanical distortion of the design parts, calculate the delta with respect to the original part shape, apply a negative distortion, run the simulation again, and apply a compounding negative pre-distortion until the result matches the original design part, and/or
9) an export mechanism that produces a negative pre-distorted design part shape.
To further enhance the results of system 100, system 100 may include a feedback loop involving actual processed or generated physical parts. For example, image-based data of physical parts may be obtained via a camera or scanning device, and the image-based data may further inform adjustments or calibrations to be made for accurate manufacturing of a part. A neural network may be used to analyze image-based data for the feedback loop.
In some aspects, a sintered part may be scanned or imaged to reveal discrepancies between an original design model mesh of a mechanical part, and a resultant sintered part. When a sintered part is scanned (we will use ‘scanned’ herein to refer to imaging, measuring, or scanning of any suitable modality for ease), the scan may comprise or be generated as a scanned mesh, with a coordinate system of reference. The coordinate system of reference may not readily integrate with the coordinate system used in an original CAD model mesh of the part. As such, when the scanned mesh is imported into a workstation with the model part mesh, the scanned mesh may not automatically display as an overlay of or even near the part mesh. In some cases, the display may respond to the different coordinate systems of the model mesh and the scanned mesh by showing the scanned mesh as being off of the screen displaying the design workstation, e.g., if the coordinate systems do not align with one another.
The present embodiment may automatically position a scan of a real part, e.g., a real printed, debound, or sintered part, against point cloud data of the original design model, so that deviation, if any, between the simulated model of the sintered part and the actual (scanned) resulting part may be accurately determined. For example, system 100 may provide an automated mechanism that finds the best position, or a range of optimum positions, to eliminate a translation and/or rotation deviation between a compare zone mesh (e.g., a scanned mesh of a real part) and the final working mesh representing the distorted sintered part. System 100 may additionally or alternatively provide manual translation and/or rotation tools that allow a user to manually orient one or more scanned compare zone meshes and place them close to the original CAD part mesh. In some embodiments, once the user manipulates the scanned compare zone mesh and/or the CAD part mesh, system 100 may include an automated mechanism to perform a closer alignment of the two meshes for comparison. In other words, system 100 may automatically position the scanned compare zone mesh and/or the CAD part mesh relative to each other for comparison, may allow a user to manipulate the scanned compare zone mesh and/or the CAD part mesh to position them relative to one another, or may allow for both some manual manipulation and some automation of the alignment process.
The automated mechanism may comprise an algorithm performing exemplary method 800, shown at
Alternately or in addition, the automated mechanism may comprise an algorithm performing exemplary method 900, shown at
Step 903 may include running through the 3 for loops. Since each of the axes may be broken into two increments, step 903 may include 6 iterations—each iteration corresponding to a quadrant of the positive/negative quadrants about the X, Y, and Z axes. Step 905 may include identifying, of the 6 quadrants, the quadrant producing the lowest rotational deviation. For example, steps 903 and 905 may include computing a rotational deviation for each of the 6 quadrants defined by the 6 axis increments. The lowest of the computed rotational deviations may be identified, and the axes or quadrant associated with the lowest computed rotational deviation may be determined. This determined quadrant may be the quadrant producing the lowest rotational deviation.
Next, this determined quadrant may be broken into two 90 degree increments about each of the 3 axes, again performing 6 iterations (step 907). This may allow determination of the orientation, of the six incremental orientations within the space of this quadrant, which produces the lowest rotational deviation. This refinement of the range values for each of the three X, Y, and Z axes may be repeated until the increment is small enough to allow the scanned compare zone mesh to have a sufficiently small rotational deviation with respect to the final working mesh positions (steps 909 and 911). For example, step 909 may include comparing the computed rotational deviation to a predetermined rotational deviation value. The predetermined rotational deviation value may represent a threshold value of deviation below which would mean acceptable value of deviation permitted between the scanned mesh and the working mesh. This predetermined rotational deviation value may be input by a user, or pre-defined by system 100. The predetermined rotational deviation value may vary, depending on the level of refinement desired for matching the scanned mesh to the working mesh. Step 909 may include determining whether a computed rotational deviation is less than (or, in some embodiments, less than or equal to) the predetermined rotational deviation value. If the computed rotational deviation is less than (or equal to) the predetermined value, then the method may proceed to step 911. If the computed rotational deviation is not less than (or equal to) the predetermined rotational deviation value, then steps 905, 907, and 909 may again be repeated. Steps 905, 907, and 909 may be repeated as many times as necessary to fall within an acceptable threshold of values. Step 911 may further include aligning a scanned part mesh to an original part mesh based on the identified one or more axes or quadrant. The method may output the quadrant at which the computed rotational deviation was less than the predetermined threshold rotational deviation value.
Another embodiment of method 900 may include dividing the mesh surface into grid regions. For example, a sphere surface could be broken into 8 quadrants. A part may have dozens or hundred(s) of such quadrants and surfaces. A deviation score may be calculated for each region. A neural net or other artificial intelligence/machine learning technique may be used to analyze the output and to identify regions that have a good score, as well as regions that may have bad score in terms of how closely the resultant (scanned) physical part deviates from the original design model mesh. This technique of computing a deviation score may also be used for tuning the simulation environment and ensuring that a simulated model accurately reflects the machining process, e.g., a sintering simulation accurately reflects the effects of sintering on an object.
System 100 may also provide a negative distortion algorithm, which may generate negative distortion vectors. The algorithm may iteratively adjust a negative offset and re-run a generative design simulation until the simulation result matches a desired part shape. The algorithm may execute the following exemplary method 1000, shown at
Before a generative design simulation runs, the initial cell positions may be applied to a working mesh that will undergo the simulation and leave the initial cell positions intact (step 1003). This working mesh will may deform due to simulated sintering and the working mesh may be updated after each sintering run with new positions.
A first sintering simulation may be run on the initial working part mesh (step 1005). When the sintering simulation runs, the working mesh may shrink and slump. At the end of the round of simulation, the difference between the final position of each cell, or a subset of cells, in this working mesh and the initial cell mesh positions may be calculated (step 1007). The negative of each of these vectors may be added to the negative distortion vectors in the map, given the difference between each final position and initial cell mesh position (step 1009). This may be the first update of the negative distortion vectors.
Once each of the negative distortion vectors have been updated, the updated values may be applied to the positions of the working mesh to generate an updated working mesh (step 1011). The sintered and distorted working mesh may then represent the negative offset positions. This sintered and distorted working mesh may comprise an updated working mesh. For example, the updated working mesh may be bigger and bulgier than the original cell positions, because it has been negatively distorted. The updated working mesh may be repositioned in a simulation design space, to account for the dimensions and projected changes to the updated working mesh. For example, the updated working mesh may be translated in a direction opposite a gravity force so that the mesh is above a “floor” surface in a simulation, such that when the gravity force is applied in a simulation, the new working mesh would not intersect with the floor (step 1013). The negative distortion to the initial cell mesh may push the mesh into neighboring geometry, e.g., preset surfaces or mesh/geometry of other parts.
The simulation may be run again (step 1015) on the updated working mesh. When the simulation is finished, the final/post-simulation updated working mesh positions may be compared to corresponding cell positions of the initial post-simulation working mesh (step 1017). The computed difference between the post-simulation position of each cell in the final working mesh and its corresponding cell positions of the initial post-simulation working mesh (e.g., from step 1017) should be less than the computed difference between the post-simulation position of each particle in the initial post-simulation working mesh and its corresponding initial cell position (e.g., from step 1007). In some places, the difference between the final working mesh position and the initial offset position working mesh may not have distorted enough in response to the negative offsets, while in other places it may have still distorted and shrunk too much. The goal is to generate a final working mesh that looks like the initial cell mesh.
The difference between the final working mesh and the initial cell mesh positions may be calculated (step 1021) and the difference in the negative distortion vectors may be added to the negative distortion vectors map (step 1023). In one example, the first simulation run may have distorted a point on the working mesh downwards by 5 mm below the initial cell position. The negative offset may cast the point upwards by 5 mm. On the second simulation run, the final working mesh position of this point might be 1 mm below the initial cell position. This means that the initial negative offset may not have been enough, and as such the new negative offset would be 6 mm above the original position. On the other hand, if the final working mesh position was 1 mm above the initial cell position, it would mean that the initial negative offset may have been too far. As such, the updated negative distortion vector may be 4 mm above the original position.
Once the negative distortion vectors have been updated, the negative positions may be applied to the working mesh. The working mesh may be adjusted (e.g., translated so that it lies above the floor and does not intersect with it), and the simulation is run again.
Each time the simulation runs, the negative distortion vectors may be updated. This process may be repeated until the final working mesh positions fall within an acceptable tolerance of the initial cell positions. At this point, the negative distortion vector map may be deemed complete.
System 100 may maintain and save the initial cell positions, negative distortion vectors, and working mesh such that if the user saves the model and opens it again, the simulation may be continued where it left off.
Algorithm for Creating Negative Distortion Mesh from Negatively Distorted Cell Mesh Positions
In this embodiment, the original geometry may be morphed or converted to negatively distorted geometry, using the distortion data that is derived from cells. In short, detailed part geometry may be received, mapped to a set of discrete cells, a simulation may be run and the cells distorted. The distorted cells may then be used to derive negative offset vectors that may be applied to the original geometry. This embodiment may comprise an export algorithm that consolidates and stores the negative offset vectors determined from the distorted cells. This embodiment is described in more detail below, and as exemplary method 1100 of
Step 1101 may include importing a detailed part model, e.g., model 1200 of
A particular challenge is, applying the distortion that exists within resulting cell mesh to the original CAD part mesh, which may have more detail in fine feature areas (e.g., fillets, holes, threads) while having less detail in large planar areas. Step 1103 may include re-meshing the imported part model such that it has enough degrees of freedom to capture the transformation of flat, or nearly flat areas into slightly curved ones, e.g., model 1203 of
A new triangle mesh may be defined corresponding to the initial cell positions of the model (step 1105). An exemplary block or triangle mesh (or a mesh consisting of any suitable shape of individual cells) is shown as model 1205 of
A sintering simulation may be run one or more times on the cell mesh (step 1107). After each simulation run or subsets of simulation runs, a negative offset vector field may be updated (step 1109). Each vector may represent the displacement of one of the cell vertices from the original cell mesh in, e.g., model 1205, to the final shape of the negatively distorted mesh. An exemplary resultant vector field 1207 may be seen
At step 1111, a continuous displacement vector function may be defined on the triangle mesh (e.g., model 1205), which may have vertices that coincide with the initial particle positions. The function value at mesh vertices may be defined as the difference between positions before and after simulation. The function value on triangle interior points may be defined as the barycentric sum of function values at triangle vertices, as shown in model 1209 of
As step 1113, the vertices of the remeshed part (e.g., of step 1103) may be projected onto the initial cell positions triangle mesh (e.g., of step 1105). For example, each vertex on the remeshed part may be projected onto the initial cell positions mesh, to find the neighborhood of nearest vertices on the initial cell positions mesh. This set of nearest neighbors may be used to look up the negative distortion vector for each vertex (or one or more vertices). In particular, the barycentric sum of these vectors may be used. This usage of the vectors may take into account the distance of each neighboring vertex, in order to establish the correct weighting for each vector. For example, a nearby neighbor that is very close may have a higher weight applied to its negative offset vector than a nearby neighbor that is farther away. Once the combined or weighted negative offset is determined, this negative offset vector may be applied to the remeshed part position for each vertex. The effect of this operation is that each vertex (or one or more vertices) on the remeshed part may be negatively offset by the proper weighted amount corresponding to the nearby negative offset vertices. This projection may push the high fidelity triangles from the remeshed part onto the coarser initial cell positions mesh.
The projected points from step 1113 may be translated (as step 1115) by a displacement vector that is evaluated at the projected point, using the function defined in step 1111. The result may be a high fidelity mesh that is distorted to reflect the negative offset of the deformed cell mesh. Step 1117 may include outputting this high fidelity mesh.
The systems, devices, and methods disclosed herein may also be used to inform the generation of manufacturing support structures for parts. For example, parts made with distortion corrections may require additional supports, fewer supports, or no supports. System 100 may provide automatic determinations regarding suggested support structures for making parts containing distortion corrections. In some aspects, system 100 may generate distortion corrections that may reduce or replace the need for supports (or smaller supports). For example, instead of requiring the presence of a support to uphold an overhanging bridge portion of a part, a distortion correction may be applied that forms the bridge portion in an arch shape so that the final bridge portion has a straight, horizontal profile, even without the presence of a support underneath. It is also possible that the need for supports may be reduced, e.g., fewer supports are needed, or those that are needed are less critical or smaller in scale.
System 100 may further provide automatic recommendations for manufacturing, in light of the distortion corrections. For instance, system 100 may provide recommendations as to printing orientation, sintering temperature or timing, part material distribution, etc., based on the distortion corrections. The many capabilities of system 100 may be used in any combination to enhance reliability in producing physical parts that match an intended geometric structure of the part.
The systems, apparatuses, devices, and methods disclosed herein are described in detail by way of examples and with reference to the figures. The examples discussed herein are examples only and are provided to assist in the explanation of the apparatuses, devices, systems, and methods described herein. None of the features or components shown in the drawings or discussed below should be taken as mandatory for any specific implementation of any of these the apparatuses, devices, systems, or methods unless specifically designated as mandatory. For ease of reading and clarity, certain components, modules, or methods may be described solely in connection with a specific figure. In this invention, any identification of specific techniques, arrangements, etc. are either related to a specific example presented or are merely a general description of such a technique, arrangement, etc. Identifications of specific details or examples are not intended to be, and should not be, construed as mandatory or limiting unless specifically designated as such. Any failure to specifically describe a combination or sub-combination of components should not be understood as an indication that any combination or sub-combination is not possible. It will be appreciated that modifications to disclosed and described examples, arrangements, configurations, components, elements, apparatuses, devices, systems, methods, etc. can be made and may be desired for a specific application. Also, for any methods described, regardless of whether the method is described in conjunction with a flow diagram, it should be understood that unless otherwise specified or required by context, any explicit or implicit ordering of steps performed in the execution of a method does not imply that those steps must be performed in the order presented but instead may be performed in a different order or in parallel.
Throughout this invention, references to components or modules generally refer to items that logically can be grouped together to perform a function or group of related functions. Like reference numerals are generally intended to refer to the same or similar components. Components and modules can be implemented in software, hardware, or a combination of software and hardware. The term “software” is used expansively to include not only executable code, for example machine-executable or machine-interpretable instructions, but also data structures, data stores and computing instructions stored in any suitable electronic format, including firmware, and embedded software. The terms “information” and “data” are used expansively and includes a wide variety of electronic information, including executable code; content such as text, video data, and audio data, among others; and various codes or flags. The terms “information,” “data,” and “content” are sometimes used interchangeably when permitted by context. It is intended that the specification and examples be considered as exemplary only.
This application claims the benefit of U.S. Provisional Application No. 62/850,957, filed on May 21, 2019 and U.S. Provisional Application No. 62/902,189, filed on Sep. 18, 2019. The entire teachings of the above applications are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62902189 | Sep 2019 | US | |
62850957 | May 2019 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16880319 | May 2020 | US |
Child | 18122610 | US |