具体实施方式:
[0034]One aspect of the invention is an apparatus and method for detecting Z-scale error and/or component misalignment. Another aspect of the invention is an apparatus and method for performing such detection(s) in a 3D printer. Yet another aspect of the invention is an apparatus and method for correcting Z-scale error and/or component misalignment. Still yet another aspect of the invention is an apparatus and method for performing such correction(s) in a 3D printer.
[0035]FIGS. 1A-1B illustrate an apparatus 1000 in accordance with one embodiment of the invention. The apparatus 1000 includes a controller 20 and one or more print heads 10, 18. For instance, one head 10 may deposit a metal or fiber reinforced composite filament 2, and another head 18 may apply pure or neat matrix resin 18a (thermoplastic or curing). In the case of the filament 2 being a fiber reinforced composite filament, such filament (also referred to herein as continuous core reinforced filament) may be substantially void free and include a polymer or resin that coats, permeates or impregnates an internal continuous single core or multistrand core. It should be noted that although the print head 18 is shown as an extrusion print head, “fill material print head”18 as used herein includes optical or UV curing, heat fusion or sintering, or “polyjet”, liquid, colloid, suspension or powder jetting devices (not shown) for depositing fill material. It will also be appreciated that a material bead formed by the filament 10a may be deposited as extruded thermoplastic or metal, deposited as continuous or semi-continuous fiber, solidified as photo or UV cured resin, or jetted as metal or binders mixed with plastics or metal, or are structural, functional or coatings. The fiber reinforced composite filament 2 (also referred to herein as continuous core reinforced filament) may be a push-pulpreg that is substantially void free and includes a polymer or resin 4 that coats or impregnates an internal continuous single core or multistrand core 6. The apparatus includes heaters 715, 1806 to heat the print heads 10, 18, respectively so as to facilitate deposition of layers of material to form the object 14 to be printed. A cutter 8 controlled by the controller 20 may cut the filament 2 during the deposition process in order to (i) form separate features and components on the structure as well as (ii) control the directionality or anisotropy of the deposited material and/or bonded ranks in multiple sections and layers. As depicted, the cutter 8 is a cutting blade associated with a backing plate 12 located at the nozzlet outlet. Other cutters include laser, high-pressure air or fluid, or shears. The apparatus 1000 may also include additional non-printing tool heads, such as for milling, SLS, etc.
[0036]The apparatus 1000 includes a gantry 1010 that supports the print heads 10, 18. The gantry 1010 includes motors 116, 118 to move the print heads 10, 18 along X and Y rails in the X and Y directions, respectively. The apparatus 1000 also includes a build platen 16 (e.g., print bed) on which an object to be printed is formed. The height of the build platen 16 is controlled by a motor 120 for Z direction adjustment. Although the movement of the apparatus has been described based on a Cartesian arrangement for relatively moving the print heads in three orthogonal translation directions, other arrangements are considered within the scope of, and expressly described by, a drive system or drive or motorized drive that may relatively move a print head and a build plate supporting a 3D printed object in at least three degrees of freedom (i.e., in four or more degrees of freedom as well). For example, for three degrees of freedom, a delta, parallel robot structure may use three parallelogram arms connected to universal joints at the base, optionally to maintain an orientation of the print head (e.g., three motorized degrees of freedom among the print head and build plate) or to change the orientation of the print head (e.g., four or higher degrees of freedom among the print head and build plate). As another example, the print head may be mounted on a robotic arm having three, four, five, six, or higher degrees of freedom; and/or the build platform may rotate, translate in three dimensions, or be spun.
[0037]FIG. 1B depicts an embodiment of the apparatus 1000 applying the filament 2 to build a structure. In one embodiment, the filament 2 is a metal filament for printing a metal object. In one embodiment, the filament 2 is a fiber reinforced composite filament (also referred to herein as continuous core reinforced filament) may be a push-pulpreg that is substantially void free and includes a polymer or resin 4 that coats or impregnates an internal continuous single core or multistrand core 6.
[0038]The filament 2 is fed through a nozzlet 10a disposed at the end of the print head 10, and heated to extrude the filament material for printing. In the case that the filament 2 is a fiber reinforced composite filament, the filament 2 is heated to a controlled push-pultrusion temperature selected for the matrix material to maintain a predetermined viscosity, and/or a predetermined amount force of adhesion of bonded ranks, and/or a surface finish. The push-pultrusion may be greater than the melting temperature of the polymer 4, less than a decomposition temperature of the polymer 4 and less than either the melting or decomposition temperature of the core 6.
[0039]After being heated in the nozzlet 10a and having its material substantially melted, the filament 2 is applied onto the build platen 16 to build successive layers 14 to form a three dimensional structure. One or both of (i) the position and orientation of the build platen 16 or (ii) the position and orientation of the nozzlet 10 are controlled by a controller 20 to deposit the filament 2 in the desired location and direction. Position and orientation control mechanisms include gantry systems, robotic arms, and/or H frames, any of these equipped with position and/or displacement sensors to the controller 20 to monitor the relative position or velocity of nozzlet 10a relative to the build platen 16 and/or the layers 14 of the object being constructed. The controller 20 may use sensed X, Y, and/or Z positions and/or displacement or velocity vectors to control subsequent movements of the nozzlet 10a or platen 16. The apparatus 1000 may include a laser scanner 15 to measure distance to the platen 16 or the layer 14, displacement transducers in any of three translation and/or three rotation axes, distance integrators, and/or accelerometers detecting a position or movement of the nozzlet 10a to the build platen 16. The laser scanner 15 may scan the section ahead of the nozzlet 10a in order to correct the Z height of the nozzlet 10a, or the fill volume required, to match a desired deposition profile. This measurement may also be used to fill in voids detected in the object. The laser scanner 15 may also measure the object after the filament is applied to confirm the depth and position of the deposited bonded ranks. Distance from a lip of the deposition head to the previous layer or build platen, or the height of a bonded rank may be confirmed using an appropriate sensor.
[0040]Various 3D-printing aspects of the apparatus 1000 are described in detail in U.S. Patent Application Publication No. 2019/0009472, which is incorporated by reference herein in its entirety.
[0041]Laser Scanner
[0042]Various aspects of the laser scanner 15 will now be discussed. The laser scanner 15 may scan the section ahead of the next deposition in order to correct the Z height of the nozzlet 10a, or the fill volume required, to match a desired deposition profile. This measurement may also be used to fill in voids detected in the part. The laser scanner 15 may measure the object after the filament is applied to confirm the depth and position of the deposited bonded ranks. Distance from a lip of the deposition head to the previous layer or build platen, or the height of a bonded rank may be confirmed using an appropriate sensor, including the laser scanner 15.
[0043]The laser scanner 15 may be formed as a short-range laser scanner, a high resolution RGBD camera, a triangulating, time of flight, phase difference, or interferometric scanner, a structured light camera or sensor, or the like. As illustrated in FIG. 2, the laser scanner 15 includes a laser emitter 15a and a laser receiver 15b.
[0044]In one embodiment, the laser scanner 15 is mounted on (e.g., integral with) the print head 10. In another embodiment, the laser scanner 15 is mounted on an independent head coupled to the print head 10. In yet another embodiment, the laser scanner 15 is fixed to the apparatus 1000 (e.g., mounted to a chassis), and the object to be measured is moved relative to the laser scanner 15.
[0045]The laser emitter 15a emits a laser beam of a predetermined sized profile on the surface of the object to be scanned. In one embodiment, the laser emitter 15a is arranged such that the emitted laser beam is oriented generally downward at a predetermined angle relative to a vertical direction of the apparatus. In one embodiment, the predetermined angle is oblique. In one embodiment, the predetermined angle is in a range between 0 and 89 degrees relative to the vertical direction, preferably between 0 and 45 degrees, and even more preferably between 0 and 20 degrees.
[0046]In one embodiment, the predetermined angle of the emitted laser beam is zero, such that the laser beam is coincident with the vertical direction and oriented directly downward. In one embodiment, the laser beam is a circular (e.g., dot) profile. In one embodiment, the diameter of the laser dot is between 0.1 and 100 μm, preferably between 20 and 80 μm, and even more preferably between 40 and 60 μm. In one embodiment, the laser beam has a profile other than a circular profile, such as a line profile or a chevron profile.
[0047]The laser receiver 15b senses the laser beam emitted from the laser emitter 15a, incident and visible on a surface of the 3D-printed object. In one embodiment, the laser receiver includes an optical sensor 15c and an optical system (not shown). In one embodiment, the optical sensor 15c is a two-dimensional sensor, including but not limited to a CCD or CMOS sensor. In another embodiment, the optical sensor 15c is a line sensor. In one embodiment, the laser scanner 15 includes a vision system to analyze optical signals received from the optical sensor 15c.
[0048]The optical sensor 15c is arranged so as to face generally downward, at a predetermined angle relative to the vertical direction of the apparatus. In one embodiment, the predetermined angle is oblique. In one embodiment, the predetermined angle is in a range between 0 and 89 degrees relative to the vertical direction, preferably between 0 and 45 degrees, and even more preferably between 0 and 20 degrees. In one embodiment, the predetermined angle is zero, such that the optical detector is facing directly downward in the vertical direction.
[0049]In one embodiment, the laser beam emitted from the laser emitter 15a is aimed directly downwards, and the optical sensor 15c is likewise aimed directly downwards. In one embodiment, the laser beam emitted from the laser emitter 15a is aimed directly downwards, while the optical sensor 15c is oriented at an angle relative to the vertical direction, preferably in a range between 0 and 45 degrees relative to the vertical direction, even more preferably between 0 and 20 degrees, and even further more preferably between 0 and 5 degrees. In one embodiment, the laser emitter 15a and the laser receiver 15b are arranged to be as close to each other as possible.
[0050]The apparatus may rely on principles of triangulation to determine the distance (e.g., depth) between the laser scanner 15 and the surface of the object on which the laser beam is incident. In particular, the distance will affect the position of the laser beam as observed from the laser receiver's perspective. The distance may be determined based on where the laser beam is observed within the laser receiver's perspective.
[0051]It will be appreciated that laser scanning involves a line of sight between the laser emitter 15a and the sample point being scanned (so that the laser beam is incident on the sample point) and a line of sight between the optical sensor 15c and the sample point (so that the visualized laser beam incidence on the object is visible to the optical sensor).
[0052]In a circumstance that no object is being printed, the laser scanner 15 may be configured to measure the distance to the build platen 16. In a circumstance that an object (e.g., a gauge block, as described below) is placed on the build platen 16 or the build platen is replaced with a reference bed (as also described below), the laser scanner 15 may be configured to measure the distance to such object or reference bed.
[0053]Such distance measurements collected by the laser scanner 15 may also be used to determine the height of the build platen 16 along its Z range of motion, according to predefined inter-positioning of components within the apparatus. Furthermore, when an object placed on the build platen 16, the combined height of the build platen 16 and the object placed hereon may be determined from a distance measurement collected by the laser scanner 15.
[0054]Z-Scale Calibration Detection
[0055]FIG. 3 illustrates an example of the system experiencing Z-scale error. For example, even when the height of the build platen 16 (also known as a print bed) is calibrated at one height (e.g., Z1), the Z-scale error causes a difference between a set height that is commanded by the system (e.g., Z2) and the actual reached height, when the build platen 16 is raised or lowered to a different height from Z1.
[0056]FIG. 4 illustrates an operation S400 for performing Z-scale calibration detection in the system, according to one embodiment. First, in step S410, the controller 20 controls the Z motor 120 to set the height of the build platen 16 to a first height Z1(set). In one embodiment, the height Z1(set) is at or near the lowest height within the height measurement range of the laser scanner 15.
[0057]In step S420, the controller 20 controls the laser scanner 15 to measure the height of the build platen 16 in the Z direction, and stores the measured height value Z1(measured) in the memory 21.
[0058]In step S430, the controller 20 controls the Z motor 120 to raise the height of the build platen 16 to a second height Z2(set). In one embodiment, the height Z2(set) is at or near the highest height within the height measurement range of the laser scanner 15.
[0059]In step S440, the controller 20 controls the laser scanner 15 to measure the height of the build platen 16 in the Z direction, and stores the measured height value Z2(measured) in the memory 21.
[0060]In step S450, the controller 20 calculates the Z-scale error based on Z1(set), Z2(set), Z1(measured), and Z2(measured), and stores the error value in the memory 21.
[0061]In an ideal case devoid of Z-scale error, the difference between the measured distances will equal the difference between the set distances, i.e., Z2(measured)−Z1(measured)=Z2(set)−Z1(set). However, if a Z-scale error exists, these two differences will differ from each other. The Z-scale error may be calculated as:
Error=Z2(measured)-Z1(measured)Z2(set)-Z1(set)
[0062]FIG. 5 illustrates another operation S500 for performing Z-scale calibration detection in the system, according to one embodiment. The operation of FIG. 5 differs from that of FIG. 4 by—instead of utilizing two heights and respective measurements to determine the Z-scale error—moving the build platen 16 to ‘n’ number of heights Z1(set)→Zn(set) and taking corresponding height measurements Z1(measured)→Zn(measured) to determine the Z-scale error. In describing this operation:[0063]‘n’ represents the total number of height measurements to be collected,[0064]‘i’ represents the i-th height during the operation (where i increments by one for each successive height),[0065]Zi(set) represents the set height for the i-th height, and[0066]Zi(measured) represents the measured height for the i-th height.
[0067]First, in step S510, the controller 20 sets i to 1, and controls the Z motor 120 to set the height of the build platen 16 to a first height Z1(set) (e.g., Zi(set) where i=1). In one embodiment, the height Z1(set) is at or near the lowest height of the height measurement range of the laser scanner 15.
[0068]In step S520, the controller 20 controls the laser scanner 15 to measure the height of the build platen 16 in the Z direction, and stores the measured height value Z1(measured) in the memory 21.
[0069]In step S530, the controller 20 increments i by one, and controls the Z motor 120 to raise the height of the build platen 16 to the next (i.e., i-th) height Zi(set) (e.g., Z2(set) for a second height, where i=2).
[0070]In step S540, the controller 20 controls the laser scanner 15 to measure the height of the build platen 16 in the Z direction, and stores the measured height value Zi(measured) in the memory 21.
[0071]In step S550, the controller 20 determines whether the current number i of height measurements has reached the total number n of height measurements to be collected, i.e., whether i=n. If the current number i has not yet reached the total number n, the operation returns to step S530 to move the build platen 16 to the next height and collect the next height measurement. If the current number i has reached the total number n, the operation proceeds to step S560.
[0072]In step S560, the controller 20 calculates one or more Z-scale error values based on Z1(set) through Zn(set) and Z1(measured) through Zn(measured), and stores the error value(s) in the memory 21. Such calculation(s) may be accomplished through various known approaches. For example, the controller 20 may utilize a linear regression model (e.g., linear least squares) to define the Z-scale error. In another example, the controller 20 may employ a higher-order regression model to define the Z-scale error.
[0073]In one embodiment, the operation 500 sets each successive height based on a constant increment (e.g., ΔZset) from the previous height. For example, ΔZset may be a value that divides the height measurement range of the laser scanner 15 (or a substantial portion thereof) into n height measurements that are equally spaced apart.
[0074]In one embodiment, the operation 500 sets each successive height based on variable increments. For example, the operation 500 may divide the height measurement range of the laser scanner 15 (or a substantial portion thereof) into n height measurements with more densely distributed heights in one or more portions of the range. For instance, the height measurements may be more densely distributed near one or both ends of the measurement range, or may be more densely distributed near the center of the measurement range.
[0075]The present invention further includes variants that may be combined with the operations described herein (including at least those of FIGS. 4 and 5) without deviating from the spirit of the invention. For instance, the calibration detection operation may incorporate multiple sets of height measurements taken at different X-Y positions on the build platen 16. By taking height measurements at multiple X-Y positions, the system may account for measurement errors induced by any imperfections on the surface of the build platen 16. In one embodiment, the X-Y positions are arranged in a grid pattern. In one embodiment, the X-Y positions are arranged at random. In one embodiment, the X-Y positions are based on continuous movement of the laser scanner 15 (e.g., including any print head on which the laser scanner 15 may be mounted) in the X and/or Y directions.
[0076]Z-Scale Calibration Detection with Gauge Block
[0077]Another aspect of the present invention includes utilizing one or more gauge blocks to perform Z-scale calibration detection. A gauge block is a component manufactured with sufficient accuracy to serve as a measurement tool based on its predefined dimensions. As employed for use with the present invention, a gauge block is manufactured at least to a predefined height Zblock with sufficient accuracy. In one aspect of the present invention, the gauge block may be a rectangular and/or box-shaped with adjacent surfaces oriented at right angles. In one aspect of the present invention, the gauge block is constructed of ceramic material.
[0078]FIG. 6 illustrates an example of the system utilizing a gauge block. The gauge block is placed on the build platen 16, and provides a known height difference relative to its absence on the build platen 16, as a reference point for Z-scale error detection.
[0079]FIG. 7A illustrates an operation S700 for performing Z-scale calibration detection in the system by utilizing a gauge block, according to one embodiment. First, in step S710, the controller 20 controls the Z motor 120 to set the height of the build platen 16 to a first height Z1(set). In one embodiment, the height Z1(set) is at or near the highest height within the height measurement range of the laser scanner 15. In one embodiment, the height Z1(set) is a sufficient height that allows for lowering of the build platen 16 by at least an amount corresponding to the height of the gauge block.
[0080]In step S720, the controller 20 controls the laser scanner 15 to measure the height of the build platen 16 in the Z direction, and stores the measured height value Z1(measured) in the memory 21.
[0081]In step S730, the controller 20 controls the Z motor 120 to lower the height of the build platen 16 to a second height Z2(set). In one embodiment, the amount by which the build platen 16 is set to be lowered is equal to the height of the gauge block Zblock. That is, Z2(set)=Z1(set)−Zblock.
[0082]In step S740, the gauge block is placed on the build platen 16 (e.g., by an operator).
[0083]In step S750, the controller 20 controls the laser scanner 15 to measure the height of the build platen 16 (with the gauge block provided thereon) in the Z direction, and stores the measured height value Z2(measured) in the memory 21.
[0084]In step S760, the controller 20 calculates the Z-scale error based on Z1(set), Z2(set), Z1(measured), and Z2(measured), and stores the error value in the memory 21.
[0085]In an ideal case devoid of Z-scale error, the two measured heights will be equal, i.e., Z2(measured)=Z1(measured), since the actual lowered amount is equal to the set lowered amount. However, if a Z-scale error exists, these two measurements will differ from each other. The Z-scale error may be calculated as:
Error=Z2(measured)-Z1(measured)Z2(set)-Z1(set)
[0086]It will also be appreciated that, instead of moving the build platen 16, the laser scanner 15 may alternatively be set at a single height, with the gauge block being placed on the build platen 16. Then, the controller 20 may collect two height measurements at two different X-Y positions, the first X-Y position being an area of the build platen 16 not covered by the gauge block, and the second X-Y position being an area of the build platen 16 having the gauge block placed thereon.
[0087]FIG. 7B illustrates an operation S700′ for performing Z-scale calibration detection in the system by utilizing multiple gauge blocks, according to one embodiment. The operation of FIG. 7B differs from that of FIG. 7A by—instead of utilizing two heights and a single gauge block—moving the build platen 16 to ‘n’ number of heights Z1(set)→Zn(set) (based on [n−1] number of gauge blocks), and taking corresponding height measurements Z1(measured)→Zn(measured) to determine the Z-scale error. In describing this operation:[0088]‘n’ represents the total number of height measurements to be collected (and [n−1] represents the total number of gauge blocks being used),[0089]‘i’ represents the i-th height during the operation (where i increments by one for each successive height/gauge block), and [i−1] represents the [i−1]-th gauge block used at the i-th height,[0090]Zi(set) represents the set height for the i-th height,[0091]Zblock-[i-1] represents the predefined height of the [i−1]-th gauge block (used for the i-th height measurements starting at i=2), and[0092]Zi(measured) represents the measured height for the i-th height and [i−1]-th gauge block.
In one embodiment, the multiple gauge blocks are ordered from 1 to n according to increasing height, i.e., the [i+1]-th gauge block is taller than the i-th gauge block.
[0093]First, in step S710′, the controller 20 sets i to 1, and controls the Z motor 120 to set the height of the build platen 16 to a first height Z1(set). In one embodiment, the height Z1(set) is at or near the highest height within the height measurement range of the laser scanner 15. In one embodiment, the height Z1(set) is a sufficient height that allows for lowering of the build platen 16 by at least an amount corresponding to the height of the highest of then gauge blocks.
[0094]In step S720′, the controller 20 controls the laser scanner 15 to measure the height of the build platen 16 in the Z direction, and stores the measured height value Z1(measured) in the memory 21.
[0095]In step S730′, the controller 20 increments i by one, and controls the Z motor 120 to lower the height of the build platen 16 to the next (i.e., i-th) height Zi(set). In one embodiment, the build platen 16 is lowered by a set amount such that the aggregated amount of set lowering from Z1(set) is equal to the height Zblock-[i-1] of the corresponding (i.e., [i−1]-th) gauge block to be used in the next step S740′. That is, Zi(set)=Z1(set)−Zblock-[i-1].
[0096]In step S740′, any gauge block currently placed on the build platen 16 is removed, and the [i−1]-th gauge block is placed on the build platen 16 (e.g., by an operator).
[0097]In step S750′, the controller 20 controls the laser scanner 15 to measure the height of the build platen 16 (with the gauge block provided thereon) in the Z direction, and stores the measured height value Zi(measured) in the memory 21.
[0098]In step S760′, the controller 20 determines whether the current number i of height measurements (and [i−1] gauge blocks) has reached the total number n of height measurements to be collected (and [n−1] gauge blocks), i.e., whether i=n. If the current number i has not yet reached the total number n, the operation returns to step S730′ to move the build platen 16 to the next height and collect the next height measurement using the next gauge block. If the current number i has reached the total number n, the operation proceeds to step S770′.
[0099]In step S770′, the controller 20 calculates one or more Z-scale error values based on Z1(set) through Zn(set) and Z1(measured) through Zn(measured), and stores the error value(s) in the memory 21. Such calculation(s) may be accomplished through various known approaches. For example, the controller 20 may utilize a linear regression model (e.g., linear least squares) to define the Z-scale error. In another example, the controller 20 may employ a higher-order regression model to define the Z-scale error.
[0100]In one embodiment, each successive gauge block is taller than the previous gauge block by a constant increment. In one embodiment, the height differences between successive gauge blocks differ.
[0101]In addition to a detached gauge block, the present invention includes Z-scale error detection using a gauge block integrated with the build platen 16. Such gauge block is preferably positioned at the perimeter of the build platen 16, so as to avoid interference with 3D printing operations.
[0102]FIG. 8 illustrates an operation S800 for performing Z-scale calibration detection in the system by utilizing one or more gauge blocks, according to one embodiment. This operation may be particularly beneficial where the measurement range of the laser scanner 15 is less than the movement range of the build platen 16 (e.g., significantly less than such movement range). This operation may provide detection of localized Z-scale errors along the entire movement range of the build platen 16. This operation builds on the operations of FIGS. 4 and/or 5. While the operations of FIGS. 4 and/or 5 produce one set of height measurements based on heights within the measurement range of the laser scanner 15, the operation of FIG. 8 repeats these operations across the full measurement range of the laser scanner 15 to collect multiple sets of height measurements. To maintain the overall heights used for measurement within the measurement range of the laser scanner 15, one or more gauge blocks may be used. In describing this operation:[0103]‘n’ represents the total number of sets of height measurements to be collected (and [n−1] represents the total number of gauge blocks being used), and[0104]‘i’ represents the i-th set of heights during the operation (where i increments by one for each successive set of heights/each successive gauge block), and [i−1] represents the [i−1]-th gauge block used at the i-th set of heights.
In one embodiment, the multiple gauge blocks are ordered from 1 to n according to increasing height, i.e., the [i+1]-th gauge block is taller than the i-th gauge block.
[0105]First, in step S810, the controller 20 sets i to 1, and controls the Z motor 120 to set the height of the build platen 16 to a first height within the measurement range of the laser scanner 15.
[0106]In step S820, the controller 20 performs the operation S400 or S500 described in FIG. 4 or FIG. 5, thereby producing and storing a set of height measurements corresponding to multiple heights.
[0107]In step S830, the controller 20 increments i by one, and controls the Z motor 120 to lower the height of the build platen 16 to a height suitable for the next set of height measurements. In one embodiment, the build platen 16 is lowered by a set amount such that the aggregated amount of set lowering subsequent to step S810 is equal to the height of the corresponding (i.e., [i−1]-th) gauge block to be used in the next step S840.
[0108]In step S840, any gauge block currently placed on the build platen 16 is removed, and the [i−1]-th gauge block is placed on the build platen 16 (e.g., by an operator). The [i−1]-th gauge block has a height such that the combined current height of the build platen 16 and the gauge block places the top of the gauge block within the measurement range of the laser scanner 15, and the operation of FIG. 4 or FIG. 5 may be performed at such combined height while remaining within the measurement range of the laser scanner 15.
[0109]In step S850, the controller performs the operation S400 or S500 described in FIG. 4 or FIG. 5 based on the top surface of the gauge block, thereby producing and storing a set of height measurements corresponding to multiple heights.
[0110]In step S860, the controller 20 determines whether the current number i of height measurement sets (and [i−1] gauge blocks) has reached the total number n of height measurement sets to be collected (and [n−1] gauge blocks), i.e., whether i=n. If the current number i has not yet reached the total number n, the operation returns to step S830 to move the build platen 16 to the next height and collect the next set of height measurements using the next gauge block. If the current number i has reached the total number n, the operation proceeds to step S770′. Preferably, the height measurement sets are spaced so as to collectively span at least a substantial portion of the movement range of the build platen 16.
[0111]In step S870, the controller 20 calculates one or more Z-scale error values based on the collected sets of height measurements and the height changes performed in the instances of step S830 (which may correspond to the various gauge block heights), and stores the error value(s) in the memory 21. Such calculation(s) may be accomplished through various known approaches. For example, the controller 20 may utilize a linear regression model (e.g., linear least squares) to define the Z-scale error. In another example, the controller 20 may employ a higher-order regression model to define the Z-scale error. The one or more Z-scale error values may include localized errors specific to a particular portion of the movement range of the build platen 16.
[0112]It will be appreciated that, instead of using one or more gauge blocks, th