This disclosure relates generally to three-dimensional (3D) printing. Background
In general, 3D printing an object can proceed in layers according to a Cartesian coordinate system oriented such that each layer is parallel to the XY plane, e.g., representing the horizontal surface of the Earth, with additional layers added to extend the object in the Z-axis direction, e.g., representing up and down relative to gravity. Deposition of print material for each layer may be provided according to a toolpath, that is, a defined route of the deposition nozzle. The toolpath may be specified by computer readable toolpath instructions, such as a GCode file. Additional layers may be added to build the object in the Z axis direction.
Furthermore, 3D printing may be used to manufacture complex 3D designs that otherwise could not be made using traditional methods such as machining, casting, or injection molding. This ability is made possible through the aforementioned layered printing process. In this approach, complex features, such as re-entrant geometries, hollow features, fine features which the traditional tools cannot machine owing to space constraints or reachability, and the like, are divided among multiple layers and fairly simple 2D layers are printed one above the other until the entire object is completed in this fashion. Despite this straightforward approach, each 3D printing process by virtue of its working principle or construction has its own challenges to address. One such common challenge manifests in the form of overhangs. An overhang is a feature of a 3D printed part that is unsupported by an underlying support structure. A layer-by-layer printing approach can produce one or more undersides of a slope in a part, where each subsequent layer must protrude slightly beyond a preceding layer. As the initially printed material is still in its flowable liquid state prior to solidification, gravity and other factors, such as the angle and slope of the overhang, can result in drooping or sagging, curling, or the prohibition of printing a desired shape altogether.
For large homogenous areas in a layer, the feed rate, that is the rate of print material flow through the print nozzle (e.g., extrusion rate, flow rate, drop rate, etc.) of print material to produce a specified layer thickness can be readily calculated. However, this does not generally hold for features of anisotropic regions, which can include outer perimeters, thin features, and overhangs. This is because the 3D printer system's response at such edge-type regions are functions of flow, temperature, and other variables. The most direct method of calculating the appropriate feed rates is to print the feature type at several different feed rates and have a metric or visual assessment that measures the part quality. This can be laborious and time consuming for multiple part types.
According to various embodiments, a method of providing a feed rate for three-dimensional printing a part is presented. The method includes: obtaining computer readable toolpath instructions for the part, where the toolpath instructions specify a nominal feed rate for a toolpath segment and spatial toolpath data of the toolpath segment; providing an input including the spatial toolpath data to a trained machine learning system, where the trained machine learning system has been trained using training data including: training spatial toolpath data, training closed loop gain data, and training feed rate data; obtaining a revised feed rate for the toolpath segment different from the nominal feed rate for the toolpath segment, where the revised feed rate is output from the trained machine learning system; and providing revised computer readable toolpath instructions, where the revised machine learning toolpath instructions include the revised feed rate.
Various optional features of the above embodiments include the following. The method may include printing the part using the revised computer readable toolpath instructions. The input may further include a predetermined closed loop gain value. The training data may include data that is specific to the part, and the method may further include training the trained machine learning system using the training data. The toolpath instructions may specify an anisotropic region of the part that includes the toolpath segment. The anisotropic region may include at least one of: an overhang, an outer perimeter, or a thin feature. The spatial toolpath data for the toolpath segment may include at least one of: a distance from an edge of the part, a distance from a corner of the part, or a rounding radius of the toolpath segment. The training data may further include training overhang angle data. The training feed rate data may include an induced feed rate variation. The induced feed rate variation may include a periodic induced feed rate variation along an edge of a feature.
According to various embodiments, a system for providing a feed rate for three-dimensional printing a part is presented. The system includes an electronic processor and a persistent memory storing non-transitory computer readable instructions that, when executed by the electronic processor, configure the electronic processor to perform actions including: obtaining computer readable toolpath instructions for the part, where the toolpath instructions specify a nominal feed rate for a toolpath segment and spatial toolpath data of the toolpath segment; providing an input including the spatial toolpath data to a trained machine learning system, where the trained machine learning system has been trained using training data including:
training spatial toolpath data, training closed loop gain data, and training feed rate data; obtaining a revised feed rate for the toolpath segment different from the nominal feed rate for the toolpath segment, where the revised feed rate is output from the trained machine learning system; and providing revised computer readable toolpath instructions, where the revised machine learning toolpath instructions include the revised feed rate.
Various optional features of the above embodiments include the following. The actions may further include printing the part using the revised computer readable toolpath instructions. The input may further include a predetermined closed loop gain value. The training data may include data that is specific to the part, and the actions may further include training the trained machine learning system using the training data. The toolpath instructions may specify an anisotropic region of the part that includes the toolpath segment. The anisotropic region may include at least one of: an overhang, an outer perimeter, or a thin feature. The spatial toolpath data for the toolpath segment may include at least one of: a distance from an edge of the part, a distance from a corner of the part, or a rounding radius of the toolpath segment. The training data may further include training overhang angle data. The training feed rate data may include an induced feed rate variation. The induced feed rate variation may include a periodic induced feed rate variation along an edge of a feature.
Combinations, (including multiple dependent combinations) of the above-described elements and those within the specification have been contemplated by the inventors and may be made, except where otherwise indicated or where contradictory.
Various features of the examples can be more fully appreciated, as the same become better understood with reference to the following detailed description of the examples when considered in connection with the accompanying figures, in which:
Reference will now be made in detail to example implementations, illustrated in the accompanying drawings. Wherever convenient, the same reference numbers will be used throughout the drawings to refer to the same or like parts. In the following description, reference is made to the accompanying drawings that form a part thereof, and in which is shown by way of illustration specific exemplary examples in which the invention may be practiced. These examples are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other examples may be utilized and that changes may be made without departing from the scope of the invention. The following description is, therefore, merely exemplary.
In 3D printing there are special feature types that require feed rate settings different from the nominal feed rate settings that are used for large uniform sections of a layer. Most of these features are quickly locally varying in at least one dimension, such as: thin features, overhangs, and outer perimeters. Thin features, for example, may be thinner than the nominal layer thickness in the direction of the Z-axis.
It is difficult to determine the appropriate feed rates of these feature types, as they can vary significantly based on feature type. Currently, the feature is printed multiple times (e.g., twenty times) at various feed rates and the feed rate that the optimizes print quality, using either a metric or visual assessment, is chosen.
Various embodiments use the closed loop of some 3D printing processes to determine an appropriate feed rate to use with a given feature type. According to some embodiments, to determine appropriate feed rates for special feature types of 3D printing, machine learning is employed within a closed loop system context. According to some embodiments, a given feature is printed using multiple induced feed rates along the edge of the feature, with the response of the closed loop Z-axis height correction system being captured. According to some embodiments, the distances to the edge and/or corner of the feature, along with the closed loop response, are used to train a neural network that predicts the open loop feed rate used. According to some embodiments, once the neural network is trained, the appropriate feed rate is then chosen as the one that corresponds to the closed loop system not modifying the open loop response.
Thus, some embodiments automatically determine an appropriate feed rate for special features in 3D printing, without having to print multiple instances of the features and without having to apply visual inspection or an external network.
These and other features and advantages are shown and described herein in reference to the figures.
The ejector 110 may define one or more reservoirs 112. One ejector reservoir 112 is shown in
The ejector reservoir (s) 112 is/are configured to receive and/or store the build material 120 that is to be ejected from the nozzle 114. The build material 120 may be or include a metal, a polymer, a ceramic, or the like. In one embodiment, the build material 120 may be greater than about 50% metal, greater than 60% metal, greater than 70% metal, greater than 80% metal, greater than 90% metal, or about 100% metal (e.g., by volume or mass). For example, the build material 120 may be or include a spool of aluminum wire (e.g., 6061 aluminum). In another embodiment, the build material 120 may be or include copper or other metals.
The 3D printer 100 may also include one or more heating elements 130. The heating elements 130 may be configured to melt the build material 120 within the ejector reservoir 112, thereby converting the build material 120 from a solid state to a liquid (e.g., molten) state within the ejector reservoir 112.
The 3D printer 100 may also include a power source 132 and one or more metallic coils 134. The metallic coils 134 are wrapped at least partially around the ejector 110 and/or the heating elements 130. The power source 132 may be coupled to the coils 134 and configured to provide power thereto. In one embodiment, the power source 132 may be configured to provide a step function direct current (DC) voltage profile (e.g., voltage pulses or jetting pulses) to the coils 134, which may create an increasing magnetic field. The increasing magnetic field may cause an electromotive force within the ejector 110, that in turn causes an induced electrical current in the liquid build material 120. The magnetic field and the induced electrical current in the liquid build material 120 may create a radially inward force on the liquid build material 120, known as a Lorentz force. The Lorentz force creates a pressure at an inlet of the nozzle 114 of the ejector 110. The pressure causes the liquid build material 120 to be jetted through and/or ejected from the nozzle 114 in the form of one or more drops 122.
The 3D printer 100 may include a build plate (also referred to as a substrate) 140 that is positioned below the nozzle 114. The drops 122 may be ejected from the nozzle 114 and subsequently land on the build plate 140 where they may cool and solidify to form a first (e.g., bottom) layer. Additional drops 122 may be jetted to form layer upon layer that eventually produces a 3D part 124.
The 3D printer 100 may also include one or more substrate control motors that are configured to move the build plate 140 while the drops 122 are being ejected through the nozzle 114, or during pauses between when the drops 122 are being ejected through the nozzle 114, to cause the 3D part to have the desired shape and size. The substrate control motors may be configured to move the substrate in one dimension (e.g., along the X-axis), in two dimensions (e.g., along the X-axis and the Y-axis), or in three dimensions (e.g., along the X-axis, the Y-axis, and the Z-axis). According to some embodiments, the nozzle 114 may be also or instead be configured to move in one, two, or three dimensions. In other words, the build plate 140 may be moved under a stationary nozzle 114, or the nozzle 114 may be moved above a stationary build plate 140. In some embodiments, there may be relative rotation between the nozzle 114 and the build plate 140 around one or two axes, e.g., such that there is four or five axis position control. In some embodiments, both the nozzle 114 and the build plate 140 may move. For example, the build plate 140 may move in X and Y directions, while the nozzle 114 may move up and/or down in the Z direction.
The 3D printer 100 may include a closed loop Z-axis height correction system 150, which monitors the height of the deposition and corrects the feed rate accordingly. According to various embodiments, the closed loop Z-axis height correction system 150 may include a camera or a (e.g., laser) scanner that is configured to capture a feed (e.g., video and/or images) of the nozzle 114, the drops 122, the 3D part 124, or a combination thereof. According to various embodiments, the camera captures images of the part as the drops are deposited, which may be analyzed to determine whether the deposition height at a given layer is within specification. In another example, the camera may be configured to capture the feed of the drops 122 as they are falling. More particularly, the feed may show the drops 122 after they are ejected from the nozzle 122 and before they land on the build plate 140. The size, shape, mass, and/or direction of the drops 122 may be determined based upon the feed.
While the closed loop Z-axis height correction system 150 can correct the feed rate based on the monitored deposition height as a part is being printed, such correction leaves an error in the printed part. Multiple such errors can occur and accumulate, and the resulting part can be out of spec and unusable.
The 3D printer 100 may also include a computing system 160. As described herein, the computing system 160 may perform at least a portion of the methods described herein in reference to
According to some embodiments, to train a machine learning system to determine appropriate feed rates for features such as overhangs, multiple feed rates are tested in each feature in a single print instance. For example, the feed rate may be varied along the edge of the feature, such as along the edge of a layer of the overhang feature 200, as a function of position (e.g., rather than the feed rate being set according to a nominal feed rate and adjusted in real time during printing by the closed loop Z-height correction system). As each square layer of the overhang feature 200 is printed, a feed rate variation at every point can be induced as shown and described in reference to
The induced feed rate variation map 300 is used to print a test part, such as the overhang feature 100, and the values of the induced rate variation map 300 as well as the responses of the closed loop Z-axis height correction system are recorded and used to train a machine learning system. In more detail, as the test part is printed using the varying feed rate, the value of the closed loop gain is recorded. In general, the closed loop gain is output by the closed loop Z-axis height correction system for adjusting the feed rate. Thus, the closed loop gain value may be used as a multiplier to adjust the feed rate during the printing process. In areas where the induced feed rate is low, the closed loop response should compensate by having a large gain (e.g., greater than 1.0, in order to command more material). Similarly, in areas where the induced feed rate is high, the closed loop response should compensate by choosing a small gain (e.g., less than 1.0, in order to command less material). If the induced feed rate is correct, then the closed loop response would not need to modify the feed rate, and the feed rate gain would be 1.0. According to some embodiments, a machine learning system is trained to output a feed rate that results in such a feed rate gain.
Z-axis height correction system as a function of both distance to an edge and distance to a corner for an overhang of 50°. The closed loop gain values may be used as feed rate multiplier values, for example. The units of the chart 400 are millimeters. As the chart 400 shows, the feed rate amount is relatively consistent at a given distance from the edge, as long as the location is not close to a corner. The graph below is only measured inside the boundary 402. The lower left triangle shaped boundary 402 of the chart 400 has no data because the distance to the edge is never larger than the distance to the corner for a 90° corner. The right side crescent shaped boundary 402 of the chart 400 has no data because the printed part was only 12 mm wide.
Some embodiments train a machine learning system to determine appropriate feed rates for printing overhangs with any of a variety of overhang angles. According to some embodiments, a machine learning system is trained using induced feed rate and closed loop gain as training data as shown and described in reference to
Once trained with training data for a variety of overhang angles, a trained machine learning system may predict feed rate multipliers for overhang features with angles not present in the training data. For example, if trained using the data of charts 502, 504, and 506, which correspond to angles 40°, 45°, and 50°, respectively, a trained machine learning system may predict closed loop Z-axis height correction gain values for overhang features with angles of, by way of non-limiting example, 42°, 46.5°, 48°, etc.
According to various embodiments, a machine learning system is trained using training data so as to be able to output feed rates for various features according to spatial toolpath data regarding the features.
At 602, method 600 obtains training data. The training data may be obtained directly using techniques as shown and described herein in reference to
The training data may include training spatial toolpath data, such as any, or any combination, of: a distance from an edge of the part, a distance to a corner of the part, and/or a rounding radius of a corner. The training data may include training closed loop gain data. The training data may include training feed rate data. Note that for each printed layer (e.g., as shown and described in reference to
For some embodiments, training feed rate data, training closed loop gain data, and training spatial toolpath data may be sufficient. For other embodiments, any, or a combination, of the preceding may be included, along with data for one or more additional specific feature types. For example, for an overhang feature, training overhang angle data, such as shown and described in reference to
According to some embodiments, any, or a combination, of training feed rate data, training closed loop gain data, training spatial toolpath data, and/or training overhang angle data may be included, along with training drop size data (e.g., for drop on demand three-dimensional printing). In general, as an additional enhancement, measured drop size can be included in the training data. This allows the data training to be more accurate even if the drop size varies, which it often does between runs. (As an alternative to using the drop size to train the neural network, the gain map, such as is shown and described herein in reference to
When extending the number of inputs (e.g., using a parameter for a class of feature types, such as overhang angle and/or drop size) it may be beneficial to also increase the number of hidden nodes in the neural network to be able to handle variations that happen with the additional parameter(s). If the number of points used in training is much greater than the number of connections of the neural network topology, overfitting should not occur. For the case of training overhang angle data, the number of hidden nodes may be three, by way of non-limiting example.
At 604, method 600 trains the machine learning system using the training data obtained at 602. The training may include an iterative process for training a neural network, for example.
Once trained, the machine learning system may accept input data, such as spatial toolpath data corresponding to a part or portion thereof, as well as a gain value, such as one, and output a corresponding feed rate. When the part (or portion thereof) is printed with the output feed rate, the Z-axis height need not be adjusted, because of the training data that it was trained with. For example, in the interior of a layer, e.g., far from an edge, the closed loop gain value is generally the inverse of the induced feed rate variation, as the nominal unperturbed feed rate chosen for the interior is generally accurate, so the gain should just “undo” the induced variation.
According to a reduction to practice, training results using over 100,000 points show that the correlation between the actual instantaneous feed rate of the three-dimensional printer and the estimated value provided by the trained machine learning system was about 80% for overhangs. That is, the neural network of the reduction to practice could predict about 80% of the variation in the feed rate. If not training across parts (e.g., for a single overhang angle), the correlation may be even better. This allows an efficient method of determining the feed rate needed for unique features.
At 702, the method 700 includes obtaining computer readable toolpath instructions for the part. The computer readable instructions may be included in a GCode file, by way of non-limiting example. The toolpath instructions may direct a tool to follow a toolpath and extrude or otherwise deposit material along some or all of the toolpath to produce one or more layers to produce the part. The toolpath instructions may specify a nominal feed rate for a toolpath segment (e.g., a local portion of a longer toolpath) and spatial toolpath data of the toolpath segment.
At 704, the method 700 includes providing an input that includes the spatial toolpath data to a trained machine learning system. The trained machine learning system may be generated as shown and described herein in reference to
At 706, the method 700 includes obtaining a revised feed rate for the toolpath segment output from the trained machine learning system in response to the input of 704. The revised feed rate may be the same as or different from the nominal feed rate for the toolpath segment.
At 708, the method 700 includes providing revised computer readable toolpath instructions. The revised computer readable toolpath instructions may include the revised feed rate for the toolpath segment, e.g., replacing the nominal feed rate for all or part of the toolpath segment. The revised computer readable toolpath instructions may be in the form of GCode, by way of non-limiting example. The instructions may be provided to a three-dimensional printer, for storage in persistent electronic memory, or over a network, for example.
At 710, the method 700 includes printing the part using the revised computer readable toolpath instructions. The part may be printed using any of a variety of three-dimensional printers and in any of a variety of materials.
Many variations and alternative embodiments fall within the scope of this disclosure. For example, some embodiments may train a machine learning system to print layers on top of layers that have been printed with fewer errors using the techniques disclosed herein. For example, an initial layer may be printed using closed loop Z-axis height correction gain values provided by a machine learning system that has been trained to print using training data obtained by printing an initial layer, and a subsequent layer may be printed using closed loop Z-axis height correction gain values provided by a machine learning system that has been trained to print using training data obtained by printing a layer on top of such a first layer. Such embodiments may account for the fact that an initial layer printed using the techniques disclosed herein will be more accurate than an initial layer printed without using the techniques disclosed herein. Accordingly, a subsequent layer may be printed using a trained machine learning system that has been trained to print on top of such a more accurate initial layer. Thus, some embodiments may be further iteratively trained to print on top of previous layers printed using a machine learning system trained according to a previous iteration.
Note that some embodiments may be used together with real time closed loop Z-axis height correction. However, such embodiments are expected to utilize closed loop Z-axis height correction less than if closed loop Z-axis height correction were used without the machine learning embodiments disclosed herein.
Some embodiments may provide a pre-trained machine learning system, where the pre-trained machine learning system has been pre-trained for a first feature or set of features using training data obtained from a particular three-dimensional printer or class of three-dimensional printers. Some embodiments may be additionally trained for an additional feature or set of features using training data obtained from the same three-dimensional printer or class of three-dimensional printers, or from a different three-dimensional printer or class of three-dimensional printers.
Certain examples can be performed using a computer program or set of programs. The computer programs can exist in a variety of forms both active and inactive. For example, the computer programs can exist as software program(s) comprised of program instructions in source code, object code, executable code or other formats; firmware program(s), or hardware description language (HDL) files. Any of the above can be embodied on a transitory or non-transitory computer readable medium, which includes storage devices and signals, in compressed or uncompressed form. Exemplary computer readable storage devices include conventional computer system RAM (random access memory), ROM (read-only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes.
Aspects of the present disclosure are described herein with reference to flowchart illustrations (e.g.,
These computer readable program instructions may be provided to a processor of a general-purpose computer, special purpose computer, or other programmable data processing apparatus, to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
In embodiments, the computer readable program instructions may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the C programming language or similar programming languages. The computer readable program instructions may execute entirely on a user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
As used herein, the terms “A or B” and “A and/or B” are intended to encompass A, B, or {A and B}. Further, the terms “A, B, or C” and “A, B, and/or C” are intended to encompass single items, pairs of items, or all items, that is, all of: A, B, C, {A and B}, {A and C}, {B and C}, and {A and B and C}. The term “or” as used herein means “and/or.”
As used herein, language such as “at least one of X, Y, and Z,” “at least one of X, Y, or Z,” “at least one or more of X, Y, and Z,” “at least one or more of X, Y, or Z,” “at least one or more of X, Y, and/or Z,” or “at least one of X, Y, and/or Z,” is intended to be inclusive of both a single item (e.g., just X, or just Y, or just Z) and multiple items (e.g., {X and Y}, {X and Z}, {Y and Z}, or {X, Y, and Z}). The phrase “at least one of” and similar phrases are not intended to convey a requirement that each possible item must be present, although each possible item may be present.
The techniques presented and claimed herein are referenced and applied to material objects and concrete examples of a practical nature that demonstrably improve the present technical field and, as such, are not abstract, intangible, or purely theoretical. Further, if any claims appended to the end of this specification contain one or more elements designated as “means for [perform]ing [a function]. . . ” or “step for [perform]ing [a function]. . . ”, it is intended that such elements are to be interpreted under 35 U.S.C. § 112(f). However, for any claims containing elements designated in any other manner, it is intended that such elements are not to be interpreted under 35 U.S.C. § 112(f).
While the invention has been described with reference to the exemplary examples thereof, those skilled in the art will be able to make various modifications to the described examples without departing from the true spirit and scope. The terms and descriptions used herein are set forth by way of illustration only and are not meant as limitations. In particular, although the method has been described by examples, the steps of the method can be performed in a different order than illustrated or simultaneously. Those skilled in the art will recognize that these and other variations are possible within the spirit and scope as defined in the following claims and their equivalents.