This disclosure relates generally to additive manufacturing and, more particularly, to methods and apparatus to optimize stitch quality in additive manufacturing.
Additive manufacturing technologies (e.g., three-dimensional (3D) printing) permit formation of three-dimensional parts from computer-aided design (CAD) models. For example, a 3D printed part can be formed layer-by-layer by adding material in successive steps until a physical part is formed. Numerous industries (e.g., engineering, aviation, manufacturing, healthcare, etc.) have adopted additive manufacturing technologies to produce a variety of products, ranging from custom medical devices to aviation parts.
The figures are not to scale. In general, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts. Unless specifically stated otherwise, descriptors such as “first,” “second,” “third,” etc., are used herein without imputing or otherwise indicating any meaning of priority, physical order, arrangement in a list, and/or ordering in any way, but are merely used as labels and/or arbitrary names to distinguish elements for ease of understanding the disclosed examples. In some examples, the descriptor “first” may be used to refer to an element in the detailed description, while the same element may be referred to in a claim with a different descriptor such as “second” or “third.” In such instances, it should be understood that such descriptors are used merely for identifying those elements distinctly that might, for example, otherwise share a same name. As used herein, “approximately” and “about” refer to dimensions that may not be exact due to manufacturing tolerances and/or other real-world imperfections. As used herein “substantially real time” refers to occurrence in a near instantaneous manner, recognizing there may be real world delays for computing time, transmission, etc. Thus, unless otherwise specified, “substantially real time” refers to real time+/−1 second. As used herein, the phrase “in communication,” including variations thereof, encompasses direct communication and/or indirect communication through one or more intermediary components, and does not require direct physical (e.g., wired) communication and/or constant communication, but rather additionally includes selective communication at periodic intervals, scheduled intervals, aperiodic intervals, and/or one-time events. As used herein, “processor circuitry” is defined to include (i) one or more special purpose electrical circuits structured to perform specific operation(s) and including one or more semiconductor-based logic devices (e.g., electrical hardware implemented by one or more transistors), and/or (ii) one or more general purpose semiconductor-based electrical circuits programmed with instructions to perform specific operations and including one or more semiconductor-based logic devices (e.g., electrical hardware implemented by one or more transistors). Examples of processor circuitry include programmed microprocessors, Field Programmable Gate Arrays (FPGAs) that may instantiate instructions, Central Processor Units (CPUs), Graphics Processor Units (GPUs), Digital Signal Processors (DSPs), XPUs, or microcontrollers and integrated circuits such as Application Specific Integrated Circuits (ASICs). For example, an XPU may be implemented by a heterogeneous computing system including multiple types of processor circuitry (e.g., one or more FPGAs, one or more CPUs, one or more GPUs, one or more DSPs, etc., and/or a combination thereof) and application programming interface(s) (API(s)) that may assign computing task(s) to whichever one(s) of the multiple types of the processing circuitry is/are best suited to execute the computing task(s).
In the following detailed description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific examples that may be practiced. These examples are described in sufficient detail to enable one skilled in the art to practice the subject matter, and it is to be understood that other examples may be utilized. The following detailed description is therefore, provided to describe an exemplary implementation and not to be taken limiting on the scope of the subject matter described in this disclosure. Certain features from different aspects of the following description may be combined to form yet new aspects of the subject matter discussed below.
“Including” and “comprising” (and all forms and tenses thereof) are used herein to be open ended terms. Thus, whenever a claim employs any form of “include” or “comprise” (e.g., comprises, includes, comprising, including, having, etc.) as a preamble or within a claim recitation of any kind, it is to be understood that additional elements, terms, etc. may be present without falling outside the scope of the corresponding claim or recitation. As used herein, when the phrase “at least” is used as the transition term in, for example, a preamble of a claim, it is open-ended in the same manner as the term “comprising” and “including” are open ended. The term “and/or” when used, for example, in a form such as A, B, and/or C refers to any combination or subset of A, B, C such as (1) A alone, (2) B alone, (3) C alone, (4) A with B, (5) A with C, (6) B with C, and (7) A with B and with C. As used herein in the context of describing structures, components, items, objects and/or things, the phrase “at least one of A and B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, and (3) at least one A and at least one B. Similarly, as used herein in the context of describing structures, components, items, objects and/or things, the phrase “at least one of A or B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, and (3) at least one A and at least one B. As used herein in the context of describing the performance or execution of processes, instructions, actions, activities and/or steps, the phrase “at least one of A and B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, and (3) at least one A and at least one B. Similarly, as used herein in the context of describing the performance or execution of processes, instructions, actions, activities and/or steps, the phrase “at least one of A or B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, and (3) at least one A and at least one B.
As used herein, singular references (e.g., “a”, “an”, “first”, “second”, etc.) do not exclude a plurality. The term “a” or “an” entity, as used herein, refers to one or more of that entity. The terms “a” (or “an”), “one or more”, and “at least one” can be used interchangeably herein. Furthermore, although individually listed, a plurality of means, elements or method actions may be implemented by, e.g., a single unit or processor. Additionally, although individual features may be included in different examples or claims, these may possibly be combined, and the inclusion in different examples or claims does not imply that a combination of features is not feasible and/or advantageous.
As used herein, the terms “system,” “unit,” “module,” “component,” etc., may include a hardware and/or software system that operates to perform one or more functions. For example, a module, unit, or system may include a computer processor, controller, and/or other logic-based device that performs operations based on instructions stored on a tangible and non-transitory computer readable storage medium, such as a computer memory. Alternatively, a module, unit, or system may include a hard-wires device that performs operations based on hard-wired logic of the device. Various modules, units, component, and/or systems shown in the attached figures may represent the hardware that operates based on software or hardwired instructions, the software that directs hardware to perform the operations, or a combination thereof.
Additive manufacturing (AM), also known as 3D-printing, permits the formation of physical objects from three-dimensional (3D) model data using layer-by-layer material addition. For example, consumer and industrial-type 3D printers can be used for fabrication of 3D objects, with the goal of replicating a structure generated using computer-aided design (CAD) software. Complex 3D geometries including high-resolution internal features can be printed without the use of tooling, with sections of the geometries varied based on the type of material selected for forming the structure. However, 3D printing requires the assessment of printing parameters, such as 3D printer-specific settings, to determine which parameters result in the highest quality build (e.g., limiting presence of defects and/or deviations from the original CAD-based model). Such a process is especially critical when 3D printed parts and/or objects are used in products intended for human use (e.g., aviation, medicine, etc.), as opposed to just prototyping needs. An existing challenge with current AM techniques is that build strategies that direct how an AM system creates a region of an object within each layer are not readily modifiable. For example, multiple irradiation device AM systems have two or more irradiation devices (e.g., lasers) that create a region of interest during a build. However, how the irradiation devices create and/or interact to create the region of interest is not easily modifiable. For example, when two or more irradiation devices are used during additive manufacturing, the area where the scan vector paths of the two or more irradiation devices intersects and/or where the vector paths are in close proximity defines the stitching region. Such a region can be rougher when compared to a region formed using a single irradiation device. The region where the two or more areas formed using various irradiation devices intersect can represent a stitching line and/or a stitching boundary. The location of a stitching region in an object in which two or more irradiation devices interact to build the object may not be easily modifiable. For example, stitch boundary lines can be placed (e.g., during CAD-based model development) in fixed and/or proximate locations that extend through the printed parts (e.g., such that the stitching line at one layer of a build is within some distance of a stitching line on a layer positioned below). However, this can be a time-consuming and labor-intensive process involving the laying out and/or identification of such stitch boundaries by hand. Such a process presents a risk of human error as judgement is required to create an optimal stitching path with respect to laser capability, part features, machine constraints, and/or required material properties. Difficulty is compounded as the stitch is to be created using a moving gantry which creates only a limited window of opportunity for the lasers to scan their respective sides of the stitch. Accordingly, methods and apparatus that permit an optimization-based technique to control the stitch boundary quality in multi-laser additive machines would be welcomed in the technology.
AM-based processes are diverse and include powder bed fusion, material extrusion, and material jetting. For example, powder bed fusion uses either a laser or an electron beam to melt and fuse the material together to form a 3D structure. Powder bed fusion can include multi jet fusion (MJF), direct metal laser sintering (DMLS), direct metal laser melting (DMLM), electron beam melting (EBM), selective laser sintering (SLS), among others. For example, DMLM uses lasers to melt ultra-thin layers of metal powder to create the 3D object, with the object built directly from a CAD file (e.g., .STL file) generated using CAD data. Using a laser to selectively melt thin layers of metal particles permits objects to exhibit homogenous characteristics with fine details. A variety of materials can be used to form 3D objects using additive manufacturing, depending on the intended final application (e.g., prototyping, medical devices, aviation parts, etc.). For example, the DMLM process can include the use of titanium, stainless steel, superalloys, and aluminum, among others. For example, titanium can withstand high pressures and temperatures, superalloys (e.g., cobalt chrome) can be more appropriate for applications in jet engines (e.g., turbine and engine parts) and the chemical industry, while 3D printed parts formed from aluminum can be used in automotive and thermal applications.
Powder bed fusion techniques such as DMLM use a fabrication process that is determined by a range of controlled and uncontrolled process parameters. For example, laser control parameters (e.g., position, velocity, power) as well as powder layer parameters (e.g., material, density, layer height) should be well-defined and include specific combinations to permit adequate melting of adjacent laser scan tracks and/or the underlying substrate (e.g., previously melted layers). In metal powder additive manufacturing, metal powder layers are sequentially melted together to form the object. For example, fine metal powder layers are melted after being uniformly distributed using an applicator on a metal powder bed. The metal powder bed can be moved in a vertical axis. Once each layer is created, each two-dimensional slice of the object geometry can be fused by selectively melting the metal powder. Multiple irradiation devices (e.g., laser beams, electron beams, etc.) can be used during the build process for faster formation of larger objects, use of larger build areas, and/or improvement of the build accuracy. When two or more irradiation devices interact to build an object, stitching regions can be formed in regions where multiple irradiation devices are used to form a part, thereby resulting in an overlap. However, stitching regions can have an increased surface roughness or altered material properties that may not be desirable in sensitive areas in certain objects (e.g., within a hole that requires precise dimensions or a smooth bearing surface, etc.). To build an object one layer at a time, an object can be divided into cross sections and multiple irradiation devices (e.g., lasers) can be utilized at the same time. It is desirable to distribute the workload between the two or more lasers while also minimizing any stitching effects (e.g., minimizing a length of the stitch that is passing through a part).
Examples disclosed herein describe methods and apparatus for optimizing and/or otherwise improving stitch quality in additive manufacturing applications. The methods and apparatus disclosed herein permit implementation of an optimization-based technique to control the stitch boundary quality in multi-laser additive machines (e.g., large-scale format additive machines). For example, the stitch boundary quality can be defined in terms of stitch length and avoidance of certain no-go zones (e.g., keep out zones related to high stress, smoke occlusion, etc.). For example, the methods and apparatus disclosed herein permit development of a multi-segment stitch boundary that drives the stitch out of a given part area and ensures non-overlap with keep-out zones. As such, large parts requiring multiple irradiation devices (e.g., lasers, fixed and/or moving configurations, etc.) can be printed while controlling the location of any stitching artifacts. Additionally, superior part quality can be achieved by reducing or minimizing the stitch length while avoiding no-go zones (e.g., part areas and/or keep-out zones), thereby reducing weak links in the build part. Furthermore, such a solution provides high flexibility to easily add more constraints, objections and/or modify parameters based on specific user needs. In the examples disclosed herein, load balancing of the laser workload permits increased or otherwise improved throughput for builds of 3D objects requiring multiple lasers working in parallel. In the examples disclosed herein, an algorithm is developed that can be implemented to evaluate a given stitch line with respect to load balancing, stitch length and/or avoidance of keep-out zones. In the examples disclosed herein, such an algorithm can further be used to performs a search for a better solution (e.g., optimized stitch boundary) in the neighborhood of the existing stitch, where the neighborhood can correspond to modification of x- and y-coordinates of a set of points along the stitch boundary based on a local search, the local search a function of part geometry and stitching region parameters.
During operation, the irradiation device(s) 105A, 105B can be guided (e.g., by scanner mirrors for lasers or electromagnetic field/electric coils for electron beams, etc.) along scan vectors (e.g., paths). In some examples, internal scan vectors melt inner regions of an object as they scan linearly across a layer, while a thin border can be melted with one or three contour scan vectors that follow a desired outer edge of a layer. In some examples, a system with multiple lasers can include irradiation device 105A, 105B assignments. For example, as each scan vector of a laser travel along the surface of a given layer, a melt pool is created, wherein the melt pool stops where the scan vector stops. As such, in some examples each irradiation device 105A, 105B has its laser or electron beam positioned relative to the build platform. In some examples, stitching regions can be created as described in connection with
Additionally, load balancing (e.g., load balancing the laser workload to increase throughput) is accomplished, given that the build area on the right side of the stitch (e.g., part 315) is the same as the build area on the left side of the stitch (e.g., part 315). To determine the parameters of the optimized stitch (e.g., x- and y-coordinates used to form the stitch 305), an algorithm can be used to perform a search for a better solution (e.g., optimized stitch boundary) in the neighborhood of the existing stitch. For example, the neighborhood can correspond to a modification of x- and y-coordinates of a set of points along the stitch boundary based on a local search, the local search a function of part geometry and stitching region parameters. Such an example algorithm (e.g., pseudo code) can include:
In the example pseudocode presented above, EvaluateSolution( ) (e.g., shown in example code lines 3 and 6) is a function that evaluates a given stitch line with respect to load balancing, stitch length, avoidance of keep-out zones etc. The example function LocalSearch( ) (e.g., shown in example code line 5) performs a search for a better solution (stitch) in the neighborhood of the existing stitch (e.g., modifying x- and y-coordinates of a set of points along the stitch boundary based on the local search, the local search a function of part geometry and stitching region parameters). As shown in example code line 11, if a solution values does not improve over a given amount of time, the initial stitch can be reinitialized. The algorithm disclosed herein can be developed and/or implemented using any programming language (e.g., Python programming language, etc.). In some examples, the set of points of an initial stitch line can include a set of points that are identified based on the initial stitch 320 (e.g., x- and y-coordinates). In some examples, an iteration of potential coordinates identifying regions around the initial stitch area determine whether a particular iteration matches a location that reduces incursion of the stitch onto a keep-out zone (e.g., keep-out zone 310). If coordinates that correspond to a reduced incursion on the keep-out zones are not identified after a set number of iterations and/or a set amount of time, the algorithm can be reinitialized until coordinates matching the optimal stitch 305 (e.g., a stitch avoiding the keep out zones and/or the part zones) are identified. While in some examples the coordinates are identified using a local search algorithm, the coordinates can also be identified using a random coordinate modification algorithm along the stich boundary. In some examples, the neighborhood structure of the local search algorithm can depend on the part geometry and/or the stitching region (e.g., the region of overlap between laser systems where stitching is feasible). In some examples, there are degrees of freedom (e.g., parameters) related to the number of points along the stitch that can be modified and/or the amount of modification to be performed in a single iteration for a given set of stitch coordinates (e.g., x- and y-coordinates). In some examples, such parameters need not be fixed but can change as a function of the number of algorithm iterations and/or time elapsed during the algorithm runtime. Furthermore, any other type of local search algorithm can be used to implement the modification of x- and y-coordinates. In some examples, the algorithm can include local gradients to cover random and/or directed searches for improved stitch line(s) with respect to load balancing, stitch length, and/or avoidance of keep-out zones.
The controller 815 can be used to control the additive manufacturing process as it relates to stitching optimization. For example, the controller 815 can be used to identify the region of interest for a particular build where stitching can occur (e.g., based on total number of lasers used, the regions where lasers overlap during the building process, etc.). In some examples, the controller determines when to initiate the geometry determiner 820, the zone identifier 825, the stitch boundary identifier 830, the load balance identifier 835, and/or the test results analyzer 840. In some examples, the controller 815 receives input from the printer 805 (e.g., printer configuration, irradiation device settings, user-provided settings, CAD-file specifications, etc.) and/or provides output to the printer 805 (e.g., laser reassignment, stitch boundary coordinates, etc.).
The geometry determiner 820 determines the geometry of a given build (e.g., extracts data from a CAD-based file to determine dimensions of an object to be additively manufactured). In some examples, the geometry determiner 820 identifies the coordinates at which a stitch boundary can occur based on laser assignments to specific regions of the build area. In some examples, the geometry determiner 820 identifies a total number of layers and/or total number of laser overlap regions. The geometry determiner 820 can further be used to determine a geometry of an initial stitch and/or an optimized stitch (e.g., total number of points 410, 415, 420, etc.). In some examples, the geometry determiner 820 determines the stitch geometry based on the location of the part(s) 315 and/or the keep-out zones 310.
The zone identifier 825 identifies the various zones that are to be avoided by an optimized stitch boundary. For example, the zone identifier 825 determines the location (e.g., x- and y-coordinates) of part areas (e.g., parts 315) and/or keep-out zone(s) 310 (e.g., related to high stress areas, smoke occlusions, etc.). In some examples, the zone identifier 825 identifies the keep-out zones 310 based on printer settings, material properties, part geometries, and/or any other variables that can affect the final build (e.g., areas sensitive to roughness, desired mechanical properties of the build, edges of the build, etc.). In some examples, the zone identifier 825 can determine the keep-out zones based on user preferences and/or inputs. In some examples, the zone identifier 825 can determine the keep-out zones 310 and/or areas of the part(s) 315 and store them in the data storage 845.
The stitch boundary identifier 830 determines a given stitch boundary relative to a region of the build (e.g., based on the anticipated overlap of laser work areas, etc.). In some examples, the stitch boundary identifier 830 determines a boundary of the stitch based on the overlapping scan vector paths of two or more lasers used during the fabrication of a three-dimensional object. In some examples, the stitch boundary identifier 830 uses the algorithm described in connection with
The load balance identifier 835 determines whether a given stitch boundary supports load balancing (e.g., increasing build efficiency using a given number of lasers). For example, the load balance identifier 835 can be used to alter stitch boundaries based on a given laser assignment in order to permit lasers to build a part in unison without compromising on the time efficiency of the build (e.g., evenly dividing the workload among lasers). In some examples, the load balance identifier 835 determines the load balance based on the total size of the build, build object coordinates and/or dimensions, laser settings (e.g., power, speed, etc.), and/or part geometry. In some examples, the load balance identifier 835 can be used to monitor and/or correct load balance in real-time during ongoing fabrication of a three-dimensional object.
The test results analyzer 840 can be used to analyze initial stitches and compare them to optimized stitches to determine improvements in stitch boundaries (e.g., based on avoidance of keep-out zones 310, areas of a part 315, stitch length, etc.). In some examples, the test results analyzer 840 can be used to determine how a given stitch boundary affects the final build (e.g., mechanical properties, stress points, surface roughness, etc.). In some examples, the test results analyzer 840 can be used to optimize and/or otherwise improve certain features of the stitch boundary (e.g., length, etc.) based on the desired build outcome (e.g., as defined by a user, based on printer configuration, etc.). For example, if a stitch boundary does not meet all the desired features of an optimized stitch (e.g., minimum length, avoidance of keep-out zones, etc.), the test results analyzer 840 can be used to determine what kind of stitch boundary (e.g., coordinates, length, number of points, etc.) improves the desired outcome (e.g., speed of build, quality of build, etc.). For example, the test results analyzer 840 can be used to determine whether certain areas of a keep-out zone 310 can be breached as long as other user preferences are satisfied (e.g., load balancing, etc.).
The data storage 845 can be used to store any data relating to inputs provided by the printer 805, the stitch geometries determined by the geometry determiner 820, the zones (e.g., keep-out zones 310) identified by the zone identifier 825 (e.g., based on coordinates), the stitch boundaries determined by the stitch boundary identifier 830, the load balancing based on evaluation of laser workloads as determined using the load balance identifier 835, and/or the test results analyzer 840 data (e.g., optimum stitch lengths as compared to initial stitch lengths). The data storage 845 can be implemented by any storage device and/or storage disc for storing data such as, for example, flash memory, magnetic media, optical media, etc. Furthermore, the data stored in the data storage 845 can be in any data format such as, for example, binary data, comma delimited data, tab delimited data, structured query language (SQL) structures, etc. While in the illustrated example the data storage 845 is illustrated as a single database, the data storage 845 can be implemented by any number and/or type(s) of databases.
In some examples, the apparatus includes means for identifying at least one keep-out zone of an object build area in which stitching is to be reduced during additive manufacturing. For example, the means for identifying may be implemented by the zone identifier 825 of
In some examples, the apparatus includes means for determining a set of coordinates to identify a first set of stitch coordinates corresponding to a stitching region of the object, the stitching region including a stitch boundary of the stitching region and identify a second set of stitch coordinates reducing stitching in the at least one keep-out zone of the object build area, the second set of stitch coordinates based on modification of x- and y-coordinates of a set of points along the stitch boundary based on a local search, the local search a function of part geometry and stitching region parameters. For example, the means for determining a set of coordinates may be implemented by the stitch boundary identifier 830 of
In some examples, the apparatus includes means for identifying a stitch geometry based on a location of an object part area or the at least one keep-out zone. For example, the means for identifying a stitch geometry may be implemented by the geometry determiner 820 of
In some examples, the apparatus includes means for load balance identification to adjust the first stitch coordinates to support laser load balancing. For example, the means for load balance identification may be implemented by the load balance identifier 835 of
While an example implementation of the stitch determiner 810 is illustrated in
Flowcharts representative of example hardware logic, machine readable instructions, hardware implemented state machines, and/or any combination thereof for implementing the stitch determiner 810 of
The machine readable instructions described herein may be stored in one or more of a compressed format, an encrypted format, a fragmented format, a compiled format, an executable format, a packaged format, etc. Machine readable instructions as described herein may be stored as data (e.g., portions of instructions, code, representations of code, etc.) that may be utilized to create, manufacture, and/or produce machine executable instructions. For example, the machine readable instructions may be fragmented and stored on one or more storage devices and/or computing devices (e.g., servers). The machine readable instructions may require one or more of installation, modification, adaptation, updating, combining, supplementing, configuring, decryption, decompression, unpacking, distribution, reassignment, compilation, etc. in order to make them directly readable, interpretable, and/or executable by a computing device and/or other machine. For example, the machine readable instructions may be stored in multiple parts, which are individually compressed, encrypted, and stored on separate computing devices, wherein the parts when decrypted, decompressed, and combined form a set of executable instructions that implement a program such as that described herein.
In another example, the machine readable instructions may be stored in a state in which they may be read by a computer, but require addition of a library (e.g., a dynamic link library (DLL)), a software development kit (SDK), an application programming interface (API), etc. in order to execute the instructions on a particular computing device or other device. In another example, the machine readable instructions may need to be configured (e.g., settings stored, data input, network addresses recorded, etc.) before the machine readable instructions and/or the corresponding program(s) can be executed in whole or in part. Thus, the disclosed machine readable instructions and/or corresponding program(s) are intended to encompass such machine readable instructions and/or program(s) regardless of the particular format or state of the machine readable instructions and/or program(s) when stored or otherwise at rest or in transit.
The machine readable instructions described herein can be represented by any past, present, or future instruction language, scripting language, programming language, etc. For example, the machine readable instructions may be represented using any of the following languages: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift, etc.
As mentioned above, the example processes of
The processor 1112 of the illustrated example includes a local memory 1113 (e.g., a cache). The processor 1112 of the illustrated example is in communication with a main memory including a volatile memory 1114 and a non-volatile memory 1116 via a bus 1118. The volatile memory 1114 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS® Dynamic Random Access Memory (RDRAM®) and/or any other type of random access memory device. The non-volatile memory 1116 may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory 1114, 1116 is controlled by a memory controller.
The processor platform 1100 of the illustrated example also includes an interface circuit 1120. The interface circuit 1120 may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), a Bluetooth® interface, a near field communication (NFC) interface, and/or a PCI express interface.
In the illustrated example, one or more input devices 1122 are connected to the interface circuit 1120. The input device(s) 1122 permit(s) a user to enter data and/or commands into the processor 1112. The input device(s) 1122 can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, isopoint and/or a voice recognition system.
One or more output devices 1124 are also connected to the interface circuit 1120 of the illustrated example. The output devices 1124 can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display (LCD), a cathode ray tube display (CRT), an in-place switching (IPS) display, a touchscreen, etc.), a tactile output device, a printer and/or speaker. The interface circuit 1120 of the illustrated example, thus, typically includes a graphics driver card, a graphics driver chip and/or a graphics driver processor.
The interface circuit 1120 of the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem, a residential gateway, a wireless access point, and/or a network interface to facilitate exchange of data with external machines (e.g., computing devices of any kind) via a network 1126. The communication can be via, for example, an Ethernet connection, a digital subscriber line (DSL) connection, a telephone line connection, a coaxial cable system, a satellite system, a line-of-site wireless system, a cellular telephone system, etc.
The processor platform 1100 of the illustrated example also includes one or more mass storage devices 1128 for storing software and/or data. Examples of such mass storage devices 1128 include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, redundant array of independent disks (RAID) systems, and digital versatile disk (DVD) drives.
The machine executable instructions 1132 of
The cores 1202 may communicate by an example bus 1204. In some examples, the bus 1204 may implement a communication bus to effectuate communication associated with one(s) of the cores 1202. For example, the bus 1204 may implement at least one of an Inter-Integrated Circuit (I2C) bus, a Serial Peripheral Interface (SPI) bus, a PCI bus, or a PCIe bus. Additionally or alternatively, the bus 1204 may implement any other type of computing or electrical bus. The cores 1202 may obtain data, instructions, and/or signals from one or more external devices by example interface circuitry 1206. The cores 1202 may output data, instructions, and/or signals to the one or more external devices by the interface circuitry 1206. Although the cores 1202 of this example include example local memory 1220 (e.g., Level 1 (L1) cache that may be split into an L1 data cache and an L1 instruction cache), the microprocessor 1200 also includes example shared memory 1210 that may be shared by the cores (e.g., Level 2 (L2_cache)) for high-speed access to data and/or instructions. Data and/or instructions may be transferred (e.g., shared) by writing to and/or reading from the shared memory 1210. The local memory 1220 of each of the cores 1202 and the shared memory 1210 may be part of a hierarchy of storage devices including multiple levels of cache memory and the main memory (e.g., the main memory 1114, 1116 of
Each core 1202 may be referred to as a CPU, DSP, GPU, etc., or any other type of hardware circuitry. Each core 1202 includes control unit circuitry 1214, arithmetic and logic (AL) circuitry (sometimes referred to as an ALU) 1216, a plurality of registers 1218, the L1 cache 1220, and an example bus 1222. Other structures may be present. For example, each core 1202 may include vector unit circuitry, single instruction multiple data (SIMD) unit circuitry, load/store unit (LSU) circuitry, branch/jump unit circuitry, floating-point unit (FPU) circuitry, etc. The control unit circuitry 1214 includes semiconductor-based circuits structured to control (e.g., coordinate) data movement within the corresponding core 1202. The AL circuitry 1216 includes semiconductor-based circuits structured to perform one or more mathematic and/or logic operations on the data within the corresponding core 1202. The AL circuitry 1216 of some examples performs integer based operations. In other examples, the AL circuitry 1216 also performs floating point operations. In yet other examples, the AL circuitry 1216 may include first AL circuitry that performs integer based operations and second AL circuitry that performs floating point operations. In some examples, the AL circuitry 1216 may be referred to as an Arithmetic Logic Unit (ALU). The registers 1218 are semiconductor-based structures to store data and/or instructions such as results of one or more of the operations performed by the AL circuitry 1216 of the corresponding core 1202. For example, the registers 1218 may include vector register(s), SIMD register(s), general purpose register(s), flag register(s), segment register(s), machine specific register(s), instruction pointer register(s), control register(s), debug register(s), memory management register(s), machine check register(s), etc. The registers 1218 may be arranged in a bank as shown in
Each core 1202 and/or, more generally, the microprocessor 1200 may include additional and/or alternate structures to those shown and described above. For example, one or more clock circuits, one or more power supplies, one or more power gates, one or more cache home agents (CHAs), one or more converged/common mesh stops (CMSs), one or more shifters (e.g., barrel shifter(s)) and/or other circuitry may be present. The microprocessor 1200 is a semiconductor device fabricated to include many transistors interconnected to implement the structures described above in one or more integrated circuits (ICs) contained in one or more packages. The processor circuitry may include and/or cooperate with one or more accelerators. In some examples, accelerators are implemented by logic circuitry to perform certain tasks more quickly and/or efficiently than can be done by a general purpose processor. Examples of accelerators include ASICs and FPGAs such as those discussed herein. A GPU or other programmable device can also be an accelerator. Accelerators may be on-board the processor circuitry, in the same chip package as the processor circuitry and/or in one or more separate packages from the processor circuitry.
More specifically, in contrast to the microprocessor 1200 of
In the example of
The interconnections 1310 of the illustrated example are conductive pathways, traces, vias, or the like that may include electrically controllable switches (e.g., transistors) whose state can be changed by programming (e.g., using an HDL instruction language) to activate or deactivate one or more connections between one or more of the logic gate circuitry 1308 to program desired logic circuits.
The storage circuitry 1312 of the illustrated example is structured to store result(s) of the one or more of the operations performed by corresponding logic gates. The storage circuitry 1312 may be implemented by registers or the like. In the illustrated example, the storage circuitry 1312 is distributed amongst the logic gate circuitry 1308 to facilitate access and increase execution speed.
The example FPGA circuitry 1300 of
Although
In some examples, the processor circuitry 1112 of
A block diagram illustrating an example software distribution platform 1405 to distribute software such as the example machine readable instructions 1132 of
From the foregoing, it will be appreciated that methods and apparatus described herein permit implementation of an optimization-based technique to control the stitch boundary quality in multi-laser additive machines (e.g., large-scale format additive machines). In the examples disclosed herein, a multi-segment stitch boundary drives the stitch out of a given part area and ensures non-overlap with keep-out zones. As such, large parts requiring multiple irradiation devices (e.g., lasers, fixed and/or moving configurations, etc.) can be printed while controlling the location of any stitching artifacts. Additionally, superior part quality is achieved by minimizing the stitch length while avoiding no-go zones (e.g., part areas and/or keep-out zones), thereby reducing weak links in the build part. In the examples disclosed herein, load balancing of the laser workload permits reduced throughput for builds of 3D objects requiring multiple lasers working in parallel. In the examples disclosed herein, an algorithm is developed that can be implemented to evaluate a given stitch line with respect to load balancing, stitch length and/or avoidance of keep-out zones. In the examples disclosed herein, such an algorithm can further be used to performs a search for a better solution (e.g., optimized stitch boundary) in the neighborhood of the existing stitch, where the neighborhood can correspond to modification of x- and y-coordinates of a set of points along the stitch boundary based on a local search, the local search a function of part geometry and stitching region parameters.
Example methods, apparatus, systems, and articles of manufacture to optimize stitch quality in additive manufacturing are disclosed herein. Further examples and combinations thereof include the following:
Example 1 includes an apparatus comprising at least one memory to store instructions, and processor circuitry to execute the instructions to identify at least one keep-out zone of an object build area in which stitching is to be reduced during additive manufacturing, determine a first set of stitch coordinates corresponding to a stitching region of the object, the stitching region including a stitch boundary of the stitching region, and generate a second set of stitch coordinates reducing stitching in the at least one keep-out zone of the object build area, the second set of stitch coordinates determined using (1) a local search algorithm and/or (2) a random coordinate modification algorithm, the second set of stitch coordinates to reduce stitch length or support load balancing.
Example 2 includes the apparatus of any preceding clause, wherein the local search algorithm includes a local search for x- and y-coordinates as a function of part geometry or stitching region parameters.
Example 3 includes the apparatus of any preceding clause, wherein the random coordinate modification algorithm includes random modification of an x-coordinate or a y-coordinate of a set of points along the stitch boundary.
Example 4 includes the apparatus of any preceding clause, wherein the processor circuitry is to identify the first set of stitch coordinates based on a laser assignment to the object build area.
Example 5 includes the apparatus of any preceding clause, wherein the laser assignment includes a scan vector overlap of a first laser and a second laser at the stitch boundary.
Example 6 includes the apparatus of any preceding clause, wherein the processor circuitry is to identify a stitch geometry based on a location of an object part area or the at least one keep-out zone.
Example 7 includes the apparatus of any preceding clause, wherein the processor circuitry is to identify the at least one keep-out zone based on location of a high stress area of an object part to be additively manufactured.
Example 8 includes the apparatus of any preceding clause, wherein the processor circuitry is to identify the at least one keep-out zone based on a printer setting of a printer selected for the additive manufacturing or a material property of a material selected for the object build area.
Example 9 includes the apparatus of any preceding clause, wherein the processor circuitry is to adjust the first set of stitch coordinates to support laser load balancing.
Example 10 includes a method comprising identifying at least one keep-out zone of an object build area in which stitching is to be reduced during additive manufacturing, determining a first set of stitch coordinates corresponding to a stitching region of the object, the stitching region including a stitch boundary of the stitching region, and generating a second set of stitch coordinates reducing stitching in the at least one keep-out zone of the object build area, the second set of stitch coordinates determined by using (1) a local search algorithm and/or (2) a random coordinate modification algorithm, the second set of stitch coordinates to reduce stitch length or support load balancing.
Example 11 includes the method of any preceding clause, wherein the local search algorithm includes a local search for x- and y-coordinates as a function of part geometry or stitching region parameters.
Example 12 includes the method of any preceding clause, wherein the random coordinate modification algorithm includes random modification of an x-coordinate or a y-coordinate of a set of points along the stitch boundary.
Example 13 includes the method of any preceding clause, further including identifying the first set of stitch coordinates based on a laser assignment to the object build area.
Example 14 includes the method of any preceding clause, wherein the laser assignment includes a scan vector overlap of a first laser and a second laser at the stitch boundary.
Example 15 includes the method of any preceding clause, further including identifying a stitch geometry based on a location of an object part area or the at least one keep-out zone.
Example 16 includes the method of any preceding clause, further including identifying the at least one keep-out zone based on location of a high stress area of an object part to be additively manufactured.
Example 17 includes the method of any preceding clause, further including identifying the at least one keep-out zone based on a printer setting of a printer selected for the additive manufacturing or a material property of a material selected for the object build area.
Example 18 includes the method of any preceding clause, further including adjusting the first set of stitch coordinates to support laser load balancing.
Example 19 includes at least one computer readable storage medium comprising instructions that, when executed, cause at least one processor to at least identify at least one keep-out zone of an object build area in which stitching is to be reduced during additive manufacturing, determine a first set of stitch coordinates corresponding to a stitching region of the object, the stitching region including a stitch boundary of the stitching region, and generate a second set of stitch coordinates reducing stitching in the at least one keep-out zone of the object build area, the second set of stitch coordinates determined by using (1) a local search algorithm and/or (2) a random coordinate modification algorithm, the second set of stitch coordinates used to reduce stitch length or support load balancing.
Example 20 includes the at least one computer readable storage medium as defined in any preceding clause, wherein the computer readable instructions, when executed, cause the at least one processor to identify the first set of stitch coordinates based on a laser assignment to the object build area.
Although certain example methods, apparatus and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent.
This disclosure claims the benefit of U.S. Provisional Patent Application No. 63/117,268, filed Nov. 23, 2020, entitled “Methods and Apparatus to Optimize Stitch Quality in Additive Manufacturing”. The entire disclosure of U.S. Provisional Patent Application No. 63/117,268 is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
63117268 | Nov 2020 | US |