SYSTEM AND METHOD FOR OPERATING A MATERIAL DROP EJECTING THREE-DIMENSIONAL (3D) OBJECT PRINTER TO PREVENT QUANTIZATION ERROR IN PERIMETERS OF A THREE-DIMENSIONAL PRINTED OBJECT
20220234110 · 2022-07-28
Inventors
- Stuart A. Schweid (Pittsford, NY)
- David A. Mantell (Rochester, NY, US)
- Christopher T. Chungbin (Rochester, NY, US)
- David G. Tilley (Williamson, NY, US)
- Walter Hsiao (San Mateo, CA, US)
- PriyaankaDevi Guggilapu (Webster, NY, US)
- Daniel Cormier (Pittsford, NY, US)
- Dinesh Krishna Kumar Jayabal (Rochester, NY, US)
Cpc classification
B33Y10/00
PERFORMING OPERATIONS; TRANSPORTING
B22F12/38
PERFORMING OPERATIONS; TRANSPORTING
G05B2219/49023
PHYSICS
B33Y50/00
PERFORMING OPERATIONS; TRANSPORTING
B22F12/48
PERFORMING OPERATIONS; TRANSPORTING
B22F10/85
PERFORMING OPERATIONS; TRANSPORTING
B22F2999/00
PERFORMING OPERATIONS; TRANSPORTING
B22F10/38
PERFORMING OPERATIONS; TRANSPORTING
B22F12/33
PERFORMING OPERATIONS; TRANSPORTING
B22F10/22
PERFORMING OPERATIONS; TRANSPORTING
B33Y50/02
PERFORMING OPERATIONS; TRANSPORTING
B22F12/38
PERFORMING OPERATIONS; TRANSPORTING
B22F10/38
PERFORMING OPERATIONS; TRANSPORTING
B22F12/48
PERFORMING OPERATIONS; TRANSPORTING
B33Y30/00
PERFORMING OPERATIONS; TRANSPORTING
B22F12/33
PERFORMING OPERATIONS; TRANSPORTING
B22F3/115
PERFORMING OPERATIONS; TRANSPORTING
B22F12/00
PERFORMING OPERATIONS; TRANSPORTING
B22F10/85
PERFORMING OPERATIONS; TRANSPORTING
B22D23/003
PERFORMING OPERATIONS; TRANSPORTING
G05B19/4099
PHYSICS
B22F10/80
PERFORMING OPERATIONS; TRANSPORTING
B22F2999/00
PERFORMING OPERATIONS; TRANSPORTING
B22F12/90
PERFORMING OPERATIONS; TRANSPORTING
International classification
B22F10/85
PERFORMING OPERATIONS; TRANSPORTING
B22D23/00
PERFORMING OPERATIONS; TRANSPORTING
B22F10/22
PERFORMING OPERATIONS; TRANSPORTING
B33Y10/00
PERFORMING OPERATIONS; TRANSPORTING
B33Y30/00
PERFORMING OPERATIONS; TRANSPORTING
Abstract
A slicer in a material drop ejecting three-dimensional (3D) object printer determines the number of material drops to eject to form a perimeter in an object layer and distributes a quantization error over the layers forming the perimeter. The slicer also identifies the location for the first material drop ejected to form the perimeter using a blue noise generator.
Claims
1. A method of operating a material drop ejecting three-dimensional (3D) object printer comprising: identifying a perimeter to be formed in a first object layer by execution of machine ready instructions generated from an object layer data model; identifying a number of material drops to eject to form the perimeter in the first object layer and a first quantization error for the first object layer, the identified number of material drops to form the perimeter in the first object layer being a first integer; identifying a location for a first material drop to be ejected to form the perimeter in the first object layer; modifying the machine ready instructions generated from the object layer data model using the identified number of material drops and the identified location for the first material drop; and executing the modified machine-ready instructions to operate the material drop ejecting 3D object printer to form the perimeter in the first object layer to be formed by the material drop ejecting 3D object printer.
2. The method of claim 1 further comprising: identifying a perimeter to be formed in a second object layer of an object layer data model that corresponds to the perimeter to be formed in the first object layer; distributing the quantization error of the first object layer to a second object layer in the object layer data model; identifying a number of material drops to eject to form the perimeter in the second object layer and a second quantization error for the second object layer, the identified number of material drops to form the perimeter in the second object layer being a second integer number that is different than the first integer number; identifying a location for a first material drop to be ejected to form the perimeter in the second object layer; modifying the machine ready instructions generated from the object data model using the identified number of material drops and the identified location to operate the material drop ejecting 3D object printer to form the perimeter in the second object layer of the object; and executing the modified machine-ready instructions to operate the material drop ejecting 3D object printer to form the perimeter in the second object layer.
3. The method of claim 2, the distribution of the first quantization error, the identification of the number of material drops to be ejected to form the perimeter in the second object layer, and the identification of the second quantization error are determined using a non-integer number for an amount of material or a number of drops used to form the perimeter in the second object layer.
4. The method of claim 3, the distribution of the first quantization error, the identification of the number of material drops to be ejected to form the perimeter in the second object layer, and the identification of the second quantization error are determined using the process represented by: drops_accum=drops_float+drop_error; drops_layer=floor(drops_accum+0.5); drop_error=drops_accum−drops_layer, where drops_float is the non-integer number for the number of material drops or amount of drop mass to be ejected to form the perimeter, drops_accum is drops_float adjusted by the first quantization error, drops_layer is the number of material drops to be ejected to form the second object layer, the drop_error is the second quantization error, and the floor function identifies a lower integer number closest to a value for an argument for the function.
5. The method of claim 2, the identification of the location for the first material drop to be ejected to form the perimeter in the second object layer further comprises: shifting the location for the first material drop to be ejected to form the perimeter in the second object layer from the location for the first material drop to be ejected to form the perimeter in the first object layer by one-half of a drop spacing between the location for the first material drop to be ejected to form the perimeter in the first object layer and a location of a next material drop to be ejected to form the perimeter in the first object layer.
6. The method of claim 2, the identification of the location for the first material drop to be ejected to form the perimeter in the second object layer further comprises: using a blue noise generator to identify the location of the first material drop to be ejected to form the perimeter in the second object layer.
7. The method of claim 6, the use of the blue noise generator further comprising: moving the location of the first material drop to be ejected to form the perimeter in the second object layer by one-half of a drop spacing distance between the first material drop to be ejected to form the perimeter in the first object layer and a location of a next material drop to be ejected to form the perimeter in the first object layer; and altering the moved location by an additional distance of between a negative one-half of the drop spacing distance and a positive one-half of the drop spacing distance using a white noise generator that has a triangular probability distribution.
8. The method of claim 2, the generation of the machine-ready instructions further comprising: scaling a plurality of accumulated drop values for a floating point number of drops for forming the perimeter to a plurality of accumulated drop values for the identified first integer number of drops for forming the perimeter in the first layer.
9. The method of claim 8, the generation of the machine-ready instructions further comprising: scaling a plurality of accumulated drop values for a floating point number of drops or an amount of drop mass to be ejected to form the perimeter to a plurality of accumulated drop values for the identified second integer number of drops for forming the perimeter in the first layer, the plurality of accumulated drop values for the second identified integer number being different than the plurality of accumulated drop values for the first identified integer numbers.
10. A metal drop ejecting apparatus comprising: a melter configured to receive and melt a bulk metal; an ejection head having a nozzle that is fluidly connected to the melter to receive melted bulk metal from the melter; a platform positioned opposite the ejection head; at least one actuator operatively connected to at least one of the platform and the at least one ejection head, the at least one actuator being configured to move the at least one of the platform and the at least one ejection head relative to one another; and a controller operatively connected to the melter, the at least one ejection head, and the at least one actuator, the controller being configured to: identify a perimeter to be formed in a first object layer by execution of machine ready instructions generated from an object layer data model; identify a number of material drops to eject to form the perimeter in the first object layer and a first quantization error for the first object layer, the identified number of material drops to form the perimeter in the first object layer being a first integer; identify a location for a first material drop to be ejected to form the perimeter in the first object layer; modify the machine ready instructions generated from the object layer data model using the identified number of material drops and the identified location for the first material drop; and execute the modified machine-ready instructions to operate the material drop ejecting 3D object printer to form the perimeter in the first object layer to be formed by the material drop ejecting 3D object printer.
11. The apparatus of claim 10, the controller being further configured to: identify a perimeter to be formed in a second object layer of an object layer data model that corresponds to the perimeter to be formed in the first object layer; distribute the quantization error of the first object layer to a second object layer in the object layer data model; identify a number of material drops to eject to form the perimeter in the second object layer and a second quantization error for the second object layer, the identified number of material drops to form the perimeter in the second object layer being a second integer number that is different than the first integer number; identify a location for a first material drop to be ejected to form the perimeter in the second object layer; modify the machine ready instructions generated from the object data model using the identified number of material drops and the identified location to operate the material drop ejecting 3D object printer to form the perimeter in the second object layer of the object; and execute the modified machine-ready instructions to operate the material drop ejecting 3D object printer to form the perimeter in the second object layer.
12. The apparatus of claim 11, the controller being further configured to: identify the distribution of the first quantization error, identify the number of material drops to be ejected to form the perimeter in the second object layer, and identify the second quantization error using a non-integer number for an amount of material or a number of drops used to form the perimeter in the second object layer.
13. The apparatus of claim 12, the controller being further configured to: identify the distribution of the first quantization error, identify the number of material drops to be ejected to form the perimeter in the second object layer, and identify the second quantization error using the process represented by: drops_accum=drops_float+drop_error; drops_layer=floor(drops_accum+0.5); drop_error=drops_accum−drops_layer, where drops_float is the non-integer number for the number of material drops or amount of drop mass to be ejected to form the perimeter, drops_accum is drops_float adjusted by the first quantization error, drops_layer is the number of material drops to be ejected to form the second object layer, the drop_error is the second quantization error, and the floor function identifies a lower integer number closest to a value for an argument for the function.
14. The apparatus of claim 11, the controller being further configured to: identify the location for the first material drop to be ejected to form the perimeter in the second object layer by: shifting the location for the first material drop to be ejected to form the perimeter in the second object layer from the location for the first material drop to be ejected to form the perimeter in the first object layer by one-half of a drop spacing between the location for the first material drop to be ejected to form the perimeter in the first object layer and a location of a next material drop to be ejected to form the perimeter in the first object layer.
15. The apparatus of claim 11, the controller being further configured to: identify the location for the first material drop to be ejected to form the perimeter in the second object layer by: using a blue noise generator to identify the location of the first material drop to be ejected to form the perimeter in the second object layer.
16. The apparatus of claim 15, the controller being further configured to use the blue noise generator by: moving the location of the first material drop to be ejected to form the perimeter in the second object layer by one-half of a drop spacing distance between the first material drop to be ejected to form the perimeter in the first object layer and a location of a next material drop to be ejected to form the perimeter in the first object layer; and altering the moved location by an additional distance of between a negative one-half of the drop spacing distance and a positive one-half of the drop spacing distance using a white noise generator that has a triangular probability distribution.
17. The apparatus of claim 11, the controller being further configured to modify the machine-ready instructions by: scaling a plurality of accumulated drop values for a floating point number of drops for forming the perimeter to a plurality of accumulated drop values for the identified first integer number of drops for forming the perimeter in the first layer.
18. The apparatus of claim 17, the controller being further configured to modify the machine-ready instructions by: scaling a plurality of accumulated drop values for a floating point number of drops or an amount of drop mass to be ejected to form the perimeter to a plurality of accumulated drop values for the identified second integer number of drops for forming the perimeter in the first layer, the plurality of accumulated drop values for the second identified integer number being different than the plurality of accumulated drop values for the first identified integer numbers.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The foregoing aspects and other features of a method of operating a material drop ejecting 3D object printer and new material drop ejecting 3D object printer that forms perimeters in parts with discrete material drops at appropriate drop spacings for part integrity in each layer of the perimeter are explained in the following description, taken in connection with the accompanying drawings. The method and printer described below distribute the material density layer error occurring in each layer forming a perimeter across the layers in a manner that makes the error imperceptible to the human eye. This distribution takes the error generated by each quantization step and distributes it to subsequent spatial or temporal quantization steps.
[0010]
[0011]
[0012]
[0013]
DETAILED DESCRIPTION
[0014] For a general understanding of a 3D object printer and its operation that distributes quantization errors across the different layers of a perimeter in an additive manufactured part as well as for the details for the printer and its operation, reference is made to the drawings. In the drawings, like reference numerals designate like elements.
[0015]
[0016] In the printer of
[0017] The ejection head 104 is movably mounted within z-axis tracks 116A and 116B in a pair of vertically oriented members 120A and 120B, respectively. Members 120A and 120B are connected at one end to one side of a frame 124 and at another end to one another by a horizontal member 128. An actuator 132 is mounted to the horizontal member 128 and operatively connected to the ejection head 104 to move the ejection head along the z-axis tracks 116A and 166B. The actuator 132 is operated by a controller 136 to maintain a distance between the single nozzle of the ejection head 104 and an uppermost surface of the object 108 on the platform 112.
[0018] Mounted to the frame 124 is a planar member 140, which can be formed of granite or other sturdy material to provide reliably solid support for movement of the platform 112. Platform 112 is affixed to X-axis tracks 144A and 144B so the platform 112 can move bidirectionally along an X-axis as shown in the figure. The X-axis tracks 144A and 144B are affixed to a stage 148 and stage 148 is affixed to Y-axis tracks 152A and 152B so the stage 148 can move bidirectionally along a Y-axis as shown in the figure. Actuator 122A is operatively connected to the platform 112 and actuator 122B is operatively connected to the stage 148. Controller 136 operates the actuators 122A and 122B to move the platform along the X-axis and to move the stage 148 along the Y-axis to move the platform in an X-Y plane that is opposite the ejection head 104. Performing this X-Y planar movement of platform 112 as drops of molten metal 156 are ejected toward the platform 112 forms a line of melted metal drops on the object 108. Controller 136 also operates actuator 132 to adjust the vertical distance between the ejection head 104 and the most recently formed layer on the substrate to facilitate formation of other structures on the object. While the molten metal 3D object printer 100 is depicted in
[0019] The controller 136 can be implemented with one or more general or specialized programmable processors that execute programmed instructions. The instructions and data required to perform the programmed functions can be stored in memory associated with the processors or controllers. The processors, their memories, and interface circuitry configure the controllers to perform the operations previously described as well as those described below. These components can be provided on a printed circuit card or provided as a circuit in an application specific integrated circuit (ASIC). Each of the circuits can be implemented with a separate processor or multiple circuits can be implemented on the same processor. Alternatively, the circuits can be implemented with discrete components or circuits provided in very large scale integrated (VLSI) circuits. Also, the circuits described herein can be implemented with a combination of processors, ASICs, discrete components, or VLSI circuits. During metal object formation, image data for a structure to be produced are sent to the processor or processors for controller 136 from either a scanning system or an online or work station connection for processing and generation of the ejection head control signals output to the ejection head 104.
[0020] The controller 136 of the melted metal 3D object printer 100 requires data from external sources to control the printer for metal object manufacture. In general, a three-dimensional model or other digital data model of the object to be formed is stored in a memory operatively connected to the controller 136, or the controller can access through a server or the like a remote database in which the digital data model is stored, or a computer-readable medium in which the digital data model is stored can be selectively coupled to the controller 136 for access. This three-dimensional model or other digital data model is processed by a slicer implemented with the controller to produce data identifying each layer of an object and then generate machine-ready instructions for execution by the controller 136 in a known manner to operate the components of the printer 100 and form the metal object corresponding to the model. The generation of the machine-ready instructions can include the production of intermediate models, such as when a CAD digital data model for an object is converted into a STL object layer data model, or other polygonal mesh or other intermediate representation, which can in turn be processed to generate machine instructions, such as g-code, for fabrication of the device by the printer. As used in this document, the term “machine-ready instructions” means computer language commands that are executed by a computer, microprocessor, or controller to operate components of a 3D metal object additive manufacturing system to form metal objects on the platform 112. The controller 136 executes the machine-ready instructions to control the ejection of the melted metal drops from the ejection head 104, the positioning of stage 148 and the platform 112, as well as the distance between the ejection head 102 and the uppermost layer of the object 108 on the platform 112.
[0021] The slicer implemented by the controller 136 distributes the quantization error that occurs in different layers of a perimeter formed in a part made by the system 100 and determines the position of the first drop of ejected material that forms the perimeter in the layer, although the slicer can be implemented with another processor in system 100. The slicer generates the 3D object layer data used to generate the machine-ready instructions that operate the components of the printer to form the object corresponding to the digital data model. A commonly used format for a digital data model is the STL format but other formats, such as 3MF, AMF, and PLY can be used. In the STL format, an object surface is defined by the edges and corners of triangular faces. The slicer converts these STL data into two-dimensional (2D) horizontal slices of the object and then generates the machine-ready instructions that operate the actuators to move the ejection head along tool paths and that operate the ejection head to eject metal drops to form the object. This conversion, in one embodiment, results in g-code, which initializes the printing system and defines the paths along which the ejection head is moved and that operate the ejection head to eject melted metal drops to form the layers of the part.
[0022] The distribution of the quantization error across the layers of a perimeter that is performed by the slicer implemented by the controller 136 of
[0023] Algorithmically, the quantization error is distributed as follows: the drop error for the process is initialized to zero (drop_error=0) and for each layer:
[0024] drops_accum=drops_float+drop_error;
[0025] drops_layer=floor(drops_accum+0.5);
[0026] drop_error=drops_accum−drops_layer, where drops_float is the desired number of drops or amount of drop mass for printing a perimeter expressed as a floating point or non-integer number, which is 12.57 in the example noted previously, and the drop_error identified for a layer is used for identifying the drops_accum in the next layer.
[0027] Following identification of the number of drops for a perimeter in a layer, the values for the virtual axis of the drops during a move are determined. In the machine-ready instructions, such as g-code, each drop is identified by three coordinates, (x, y, e). The x and y coordinates identify points that define a path for movement of the ejector in the X-Y plane of the platform and the e coordinate identifies an accumulated number of drops ejected. The drops are ejected at intervals within a drop spacing parameter. As used in this document, the term “drop spacing” means a predefined distance between the centers of adjacent drops ejected as an ejector moves along a path in a layer. A threshold is defined for ejector movement along a path. The threshold is a particular portion of the drop spacing. For example, 0.5 can be selected as a threshold for use with the defined drop spacing for a path, which means that a drop is ejected at the halfway position along the drop spacing. By changing the threshold, the position of an ejected drop can be changed within the drop spacing.
[0028] As an example, the three coordinates (x, y, e) for points defining a closed ejector path in a layer is shown in the following table:
TABLE-US-00001 drop number x coordinate y coordinate e coordinate 1 2.000 0 94.2200 2 1.6180 1.1756 95.4766 3 0.6180 1.9021 96.7333 4 −0.6180 1.9021 97.9899 5 −1.6180 1.1756 99.2465 6 −2.000 0.0000 100.5032 7 −1.6180 −1.1756 101.7598 8 −0.6180 −1.9021 103.0165 9 0.6180 −1.9021 104.2731 10 1.6180 −1.1756 105.5297 11 2.0000 −0.0000 106.7864
[0029] These values represent the ten points, since the first and the eleventh points are at the same x,y location, that define a closed perimeter that is a circle in a layer. The e coordinate represents the accumulated drop count at the beginning of the path to the return to the origin. The table indicates that the ejector ejects 12.57 drops for a 0.5 threshold of the drop spacing while the ejector traverses the circular path. As noted above, the controller cannot operate the ejector to eject 12.57 drops but, instead, operates the ejector to eject twelve drops in some layers and operates the ejector to eject thirteen drops in other layers. Thus, the floating point numbers for the e coordinates shown in the table need to be scaled to a twelve drop or thirteen drop scheme. The results of this scaling are shown in the following two tables. First shown is the table for the twelve drops:
TABLE-US-00002 drop number x coordinate y coordinate e coordinate 1 2.000 0 94.2200 2 1.6180 1.1756 95.5200 3 0.6180 1.9021 96.8200 4 −0.6180 1.9021 98.1200 5 −1.6180 1.1756 99.4200 6 −2.000 0.0000 100.7200 7 −1.6180 −1.1756 102.0200 8 −0.6180 −1.9021 103.3200 9 0.6180 −1.9021 104.6200 10 1.6180 −1.1756 105.9200 11 2.0000 −0.0000 107.2200
Because the difference between the first e coordinate and the last e coordinate is thirteen, thirteen drops are ejected to form the circular perimeter as the ejector is moved along the (x,y) path.
[0030] Next the table for the twelve drop path is shown:
TABLE-US-00003 drop number x coordinate y coordinate e coordinate 1 2.000 0 94.2200 2 1.6180 1.1756 95.4200 3 0.6180 1.9021 96.6200 4 −0.6180 1.9021 97.8200 5 −1.6180 1.1756 99.0200 6 −2.000 0.0000 100.2200 7 −1.6180 −1.1756 101.4200 8 −0.6180 −1.9021 102.6200 9 0.6180 −1.9021 103.8200 10 1.6180 −1.1756 105.0200 11 2.0000 −0.0000 106.2200
Because the difference between the first e coordinate and the last e coordinate is twelve, twelve drops are ejected to form the circular perimeter as the ejector is moved along the (x,y) path. Using the coordinates, the g-code is generated for the twelve drop and the thirteen drop perimeters in different layers.
[0031] This error distribution calculation determines the number of drops to use in each perimeter layer, but it does not determine the relation of the position of drops from one layer to another. In cases where the number of drops in each layer is the same, the above-identified error distribution produces greater structural integrity if the drops in one layer are offset from the drops in a previous layer by one-half of a cycle. This position shifting is analogous to shifting successive brick layers by half a brick length. Similarly, this drop position shifting can be accomplished in the simple cylindrical object example noted previously by using one-half of the drop spacing distance shift in the location of the first drop used to form a perimeter.
[0032] One problem with the simple shifting of one-half of the drop spacing distance occurs, however, when the number of drops in the perimeter changes. If the number of drops increases by 1, for example, then a beat frequency arises between adjacent layers and the drop spacing distance goes from 0.5 mm to −5 mm as the ejection head follows the perimeter. Since the phase relationship is always 180 degrees out of phase for the start of the perimeter, a location exists along the perimeter where the drops between successive layers always line up and drops nearby are very nearly aligned. This synchronization permits error accumulation as the perimeter is built. In the case where the desired fractional number of drops per layer is 0.5, the number of drops per layer toggle between the two values. This toggling results in the alignment of drops, that is a subsequent drop landing on a previously ejected drop at the same location along the perimeter in every layer and other drops in the nearby vicinity of that location land closely to previously ejected drops. This situation is depicted in
[0033] To eliminate the problems arising from the interaction of start location phase shifting and quantization error distribution of the drops over the layers of a perimeter, a blue noise generator is used to choose the start location instead of a fixed shift of one-half of the drop spacing distance between layers. The blue noise generator moves the first drop of a next layer by one-half of the drop spacing distance from the first drop of the previously formed layer and then additionally perturbing it an additional distance of between a negative one-half of the drop spacing distance and a positive one-half of the drop spacing distance using a white noise generator that has a triangular probability distribution, which means the probability generator is not uniform. A triangular probability density function (PDF) is easily produced by averaging two white noise PDFs. The final shift amount is remapped to be between a negative one-half of the drop spacing distance and a positive one-half of the drop spacing distance (−π to +π).
[0034] In cases where the density of a perimeter in a layer is not uniform compared to a perimeter formed in a previously formed layer, such as areas with overhangs, a phase shift can be defined using the nominal perimeter density, which is the average number of drops per unit length in one layer. This phase shift produces a phase difference between layers that is blue noise distributed near the nominal density, but not full scale, that is, less than +/−one-half of the drop spacing for perimeters having a density lower than the nominal density and approaching white noise distributed for perimeters having densities much larger than the nominal density.
[0035] The blue noise generator implemented with the slicer to position the drops for forming a perimeter in a layer assures that the quantization error variation is decorrelated with the drop start location phase variation. The probability density function of the phase difference between adjacent layers and those that are two and three layers apart is shown in
[0036] A process for operating a material drop ejecting 3D object printer to attenuate quantization error and determine the starting drop location for forming a perimeter in a layer is shown in
[0037]
[0038] It will be appreciated that variants of the above-disclosed and other features and functions, or alternatives thereof, may be desirably combined into many other different systems, applications or methods. Various presently unforeseen or unanticipated alternatives, modifications, variations or improvements may be subsequently made by those skilled in the art that are also intended to be encompassed by the following claims.