Description:

TECHNICAL FIELD

The systems, methods and apparatuses described below relate generally to the field of manufacturing systems for building three-dimensional (3D) models. More particularly, the systems, methods and apparatuses relate to the field of generating support structures for use with 3D models in additive manufacturing systems.

BACKGROUND

Additive manufacturing systems based on deposition or cured liquid resins are capable of fabricating 3D digital models by simplifying them into stacked layer profiles. For deposition-based systems, these stacked layers can be created using a heated nozzle that deposits a thin layer of liquid thermoplastic material. Once the current layer has cooled and partially solidified, the nozzle moves upward to the next stacked layer and the process repeats. For cured resin systems, an accurately controlled laser can be used to solidify liquid photopolymers using a similar layering strategy. In both manufacturing techniques, an upper-most stacked layer relies on support from the layer or layers directly below it to maintain desired part shape. If this support is not provided, the unsupported layer may shift in position or deform due to the partially pliable state of the material. In an attempt to mitigate or at least reduce the shifting of layers during the manufacturing process, supportive structures can be added to the 3D model at strategic locations. For example, supportive structures can be incorporated into portions of a 3D model that have an overhanging section that may not be adequately supported by the lower layers. These supportive structures can be removed from the 3D model subsequent to manufacturing.

BRIEF DESCRIPTION OF THE DRAWINGS

It is believed that certain embodiments will be better understood from the following description taken in conjunction with the accompanying drawings, in which like references indicate similar elements and in which:

FIG. 1 is a front view of an extrusion-based digital manufacturing system for building 3D models and support structures, where the support structures are generated pursuant to a support structure generation technique of the present disclosure.

FIG. 2 is a flow diagram of a method for generating data of a 3D model and a corresponding support structure.

FIG. 3 is an example 3D model before support structures have been generated.

FIG. 4 depicts a footprint of a 3D model having ray origins.

FIG. 5 depicts virtual rays extending through a 3D model and intersecting with an outer surface of the 3D model.

FIG. 6 depicts a 3D model subsequent to the generation of a plurality of support structures.

FIG. 7A is a perspective view of a 3D model having support structures.

FIG. 7B is a front view of the 3D model of FIG. 7A.

FIG. 8 is a cross-sectional view of FIG. 7B taken along line 8-8.

FIGS. 9-11 depict example cross-sectional views of support structures.

FIG. 12 schematically depicts the interaction between virtual rays and a surface of a 3D model during the structural support generation process.

FIG. 13 schematically depicts the 3D model of FIG. 12 subsequent to the generation of a support structure.

FIGS. 14A-14E depict an example graphical user interface displayed by a computing system.

FIG. 15 depicts an example computing device.

DETAILED DESCRIPTION

Various non-limiting embodiments of the present disclosure will now be described to provide an overall understanding of the principles of the structure, function, and use of systems and methods disclosed herein for the generation and control of support material for use in the fabrication of 3D models. One or more examples of these non-limiting embodiments are illustrated in the selected examples disclosed and described in detail with reference made to FIGS. 1-15 in the accompanying drawings. Those of ordinary skill in the art will understand that systems and methods specifically described herein and illustrated in the accompanying drawings are non-limiting embodiments. The features illustrated or described in connection with one non-limiting embodiment may be combined with the features of other non-limiting embodiments. Such modifications and variations are intended to be included within the scope of the present disclosure.

The systems, apparatuses, devices, and methods disclosed herein are described in detail by way of examples and with reference to the figures. The examples discussed herein are examples only and are provided to assist in the explanation of the apparatuses, devices, systems and methods described herein. None of the features or components shown in the drawings or discussed below should be taken as mandatory for any specific implementation of any of these systems, apparatuses, devices, or methods unless specifically designated as mandatory. For ease of reading and clarity, certain components, modules, or methods may be described solely in connection with a specific figure. In this disclosure, any identification of specific techniques, arrangements, etc. are either related to a specific example presented or are merely a general description of such a technique, arrangement, etc. Identifications of specific details or examples are not intended to be, and should not be, construed as mandatory or limiting unless specifically designated as such. Any failure to specifically describe a combination or sub-combination of components should not be understood as an indication that any combination or sub-combination is not possible. It will be appreciated that modifications to disclosed and described examples, arrangements, configurations, components, elements, apparatuses, devices, systems, methods, etc. can be made and may be desired for a specific application. Also, for any methods described, regardless of whether the method is described in conjunction with a flow diagram, it should be understood that unless otherwise specified or required by context, any explicit or implicit ordering of steps performed in the execution of a method does not imply that those steps must be performed in the order presented but instead may be performed in a different order or in parallel.

Reference throughout the specification to “various embodiments,” “some embodiments,” “one embodiment,” “some example embodiments,” “one example embodiment,” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with any embodiment is included in at least one embodiment. Thus, appearances of the phrases “in various embodiments,” “in some embodiments,” “in one embodiment,” “some example embodiments,” “one example embodiment, or “in an embodiment” in places throughout the specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined in any suitable manner in one or more embodiments.

Throughout this disclosure, references to components or modules generally refer to items that logically can be grouped together to perform a function or group of related functions. Like reference numerals are generally intended to refer to the same or similar components. Components and modules can be implemented in software, hardware, or a combination of software and hardware. The term “software” is used expansively to include not only executable code, for example machine-executable or machine-interpretable instructions, but also data structures, data stores and computing instructions stored in any suitable electronic format, including firmware, and embedded software. The terms “information” and “data” are used expansively and include a wide variety of electronic information, including executable code; content such as text, video data, and audio data, among others; and various codes or flags. The terms “information,” “data,” and “content” are sometimes used interchangeably when permitted by context. It should be noted that although for clarity and to aid in understanding some examples discussed herein might describe specific features or functions as part of a specific component or module, or as occurring at a specific layer of a computing device (for example, a hardware layer, operating system layer, or application layer), those features or functions may be implemented as part of a different component or module or operated at a different layer of a communication protocol stack. Those of ordinary skill in the art will recognize that the systems, apparatuses, devices, and methods described herein can be applied to, or easily modified for use with, other types of equipment, can use other arrangements of computing systems such as client-server distributed systems, and can use other protocols, or operate at other layers in communication protocol stacks, than are described.

The present disclosure is generally directed to support structure generation and management techniques for use with 3D models. As described below, various types of support structures can be generated underneath overhanging portions or in cavities of a 3D model which are not supported by modeling material itself. Further, prior to manufacturing the 3D model with a manufacturing system, the generated support structures can be selectively altered or removed, and additional support structures can be added to the 3D model, through various user interactions with a graphical user interface.

FIG. 1 is a front view of system 10 in use with a computing system 12, where the system 10 is deposition-based digital manufacturing system that can be used to build 3D models with support structures generated pursuant to the technique of the present disclosure. Suitable deposition-based digital manufacturing systems include extrusion-based systems, such as fused deposition modeling (FDM) systems developed by MakerGear LLC, Beachwood, Ohio, among others. While an FDM system is shown in FIG. 1, a variety of other types of manufacturing systems can be utilized without departing from the scope of the present disclosure. For example, in some embodiments stereolithography (SLA) systems that utilize photopolymers cured with a laser or other illuminating devices can be used to build 3D models with support structures. Additional details regarding example SLA systems can be found in U.S. Pat. Nos. 5,182,056 and 7,785,093, both of which are herein incorporated by reference in their entirety.

Referring still to FIG. 1, the computing system 12 can include one or more computer-based systems that communicate with the system 10, and can be separate from the system 10, or alternatively can be an internal component of the system 10. As discussed below, the computing system 12 can generate data, such as tool paths, for building 3D models. The computing system 12 can also generate support structures for incorporation into the 3D model, and allow for user control and interaction with the support structures, pursuant to the support structure generation technique of the present disclosure.

In the illustrated embodiment, the system 10 is an extrusion-based system that includes a build chamber 14, a platen 16, a gantry 18, an extrusion head 20, and a supply source 22. While the system 10 is shown having one supply source 22, other embodiments can have more than one supply source. The build chamber 14 can be an open or closed environment that contains the platen 16, the gantry 18, and the extrusion head 20 for building a 3D model (shown as 3D model 26) and a corresponding support structures (shown as support structures 28). The platen 16 is a platform on which the 3D model 26 and the support structure 28 are built, and moves along a vertical z-axis based on signals (e.g., instructions) provided from a controller 30. The controller 30 may direct the motion of the platen 16 and/or the extrusion head 20 based on data supplied by computing system 12.

In the illustrated embodiment, the gantry 18 is a guide rail system configured to move the extrusion head 20 in a horizontal x-y plane within the build chamber 14 based on signals provided from controller 30. The horizontal x-y plane is a plane defined by an x-axis and a y-axis, where the x-axis, the y-axis, and the z-axis are orthogonal to each other. In an alternative embodiment, the platen 16 may be configured to move in the horizontal x-y plane within build chamber 14, and the extrusion head 20 may be configured to move along the z-axis. Other similar arrangements may also be used such that one or both of the platen 16 and the extrusion head 20 are moveable relative to each other. As is to be appreciated by those skilled in the art, the present disclosure for generating and managing support structures can be used with a wide variety of manufacturing systems.

The extrusion head 20 is supported by the gantry 18 for building the 3D model 26 and the support structure 28 on the platen 16 in a layer-by-layer manner, based on signals provided from controller 30. Accordingly, the controller 30 also directs the extrusion head 20 to selectively deposit the modeling and support materials based on data supplied by the computing system 12. In the embodiment shown in FIG. 1, extrusion head 20 is a single-tip extrusion head configured to deposit modeling and support materials from supply source 22.

Examples of suitable extrusion heads for extrusion head 20 include those disclosed in LaBossiere, et al., U.S. Patent Application Publication Nos. 2007/0003656 and 2007/00228590; and Leavitt, U.S. Patent Application Publication No. 2009/0035405, all of which are incorporated herein by reference. Alternatively, system 10 may include one or more two-stage pump assemblies, such as those disclosed in Batchelder et al., U.S. Pat. No. 5,764,521; and Skubic et al., U.S. Patent Application Publication No. 2008/0213419, both of which are incorporated herein by reference. Furthermore, the system 10 may include a plurality of extrusion heads 20 for depositing modeling and/or support materials.

Manufacturing material may be provided to the extrusion head 20 from the supply source 22 through the pathway 32. In some embodiments, model material is sourced from a first supply source of the system 10 and the support material is sourced from a second supply source of the system 10. As is to be appreciated, the system 10 may also include additional drive mechanisms (not shown) configured to assist in feeding the modeling and support materials from the supply source.

Manufacturing material(s) may be provided to the system 10 in a variety of different media. For example, the manufacturing material may be provided as continuous filaments fed from the supply source, as disclosed in Swanson et al., U.S. Pat. No. 6,923,634; Comb et al., U.S. Pat. No. 7,122,246; and Taatjes et al, U.S. Patent Application Publication No. 2010/0096489 and US2010/0096485, all of which are incorporated herein by reference. Examples of suitable average diameters for the filaments of the modeling and support materials range from about 1.27 millimeters (about 0.050 inches) to about 3.25 millimeters (about 0.128 inches), with particularly suitable average diameters ranging from about 1.75 millimeters (about 0.069 inches) to about 3.00 millimeters (about 0.118 inches). Alternatively, the modeling and support materials may be provided as other forms of media (e.g., pellets and resins) from other types of storage and delivery components (e.g., supply hoppers and vessels).

Suitable modeling materials for building the 3D model 26 include materials having amorphous properties, such as thermoplastic materials, amorphous metallic materials, and combinations thereof. Examples of suitable thermoplastic materials include acrylonitrile-butadiene-styrene (ABS) copolymers, polylactic acids or polylactides (PLA), polycarbonates, polysulfones, polyethersulfones, polyphenylsulfones, polyetherimides, amorphous polyamides, modified variations thereof (e.g., ABS-M30 copolymers), polystyrene, and blends thereof. Examples of suitable amorphous metallic materials include those disclosed in U.S. Patent Application Publication No. US2009/0263582, which is incorporated herein by reference. Additional examples of manufacturing materials include light-cured liquid resins (e.g., photopolymers) which can have a wide range of chemical makeup, as is known in the art. Some embodiments can utilize UV photopolymers, while other can use liquid resins that are cured by exposure to other specific wavelengths. Suitable support materials for building the support structure 28 include materials having amorphous properties (e.g., thermoplastic materials) and that are desirably removable from the corresponding modeling materials after the 3D model 26 and the support structure 28 are built. In some systems, the support material and the model material is the same material. In other systems, such as systems having multiple supply sources, the support material and the model material are different materials.

During a build operation, the controller 30 directs one or more drive mechanisms (not shown) to feed the material to the extrusion head from the supply source 22. For each layer, the controller 30 then directs the gantry 18 to move the extrusion head 20 around in the horizontal x-y plane within the build chamber 14 based on the data (e.g., tool paths) generated by the computing system 12. The materials are then deposited onto the platen 16 to build the layer of the 3D model 26 and the support structure 28 using the layer-based additive technique. The support structure 28 can be deposited to provide vertical support along the z-axis for overhanging regions of the layers of the 3D model 26, as shown in FIG. 1. After the build operation is complete, the resulting 3D model 26 with its support structure 28 may be removed from the build chamber 14, and the support structure 28 may be removed from 3D model 26.

FIG. 2 is a flow diagram of method 60 for generating data of a 3D model and corresponding support structure with the computing system 12, where the generated data may be subsequently used to build the 3D model and support structure in a deposition-based digital manufacturing system (such as system 10 of FIG. 1), an SLA system, or any other suitable type of digital manufacturing system. The method 60 is an example of a suitable method that incorporates the support structure generation technique of the present disclosure for generating support structures for 3D models having overhanging or otherwise structurally unsupported portions. The following discussion of method 60 is made with reference to 3D model 100 and support structures 116, as shown in FIGS. 3-6. However, the method 60 is applicable for building 3D models and corresponding support structures having a variety of different geometries, and with a variety of different deposition-based manufacturing systems and liquid resin-based manufacturing systems.

Referring now to FIG. 2, at step 62, a digital representation of 3D model 100 (FIG. 3) having an outer surface is received at a computing system. As shown in FIG. 3, the 3D model 100 can have unsupported portions, generally shown as overhangs 102. Generally, overhangs 102 can include any portion of the 3D model 100 that is not supported by a lower layer, such that the overhang 102 may have the tendency to deform or collapse during a manufacturing process.

At step 64, a plurality of virtual rays are generated that extend through the 3D model. FIGS. 4-5 illustrate an example generation of virtual rays in accordance with one non-limiting embodiment. Referring first to FIG. 4, a model footprint 110 is determined based on the outermost dimensions of the 3D model 100 in the x-y plane. Ray origins 112 positioned within the model footprint 110 are schematically illustrated in FIG. 4. The ray origins 112 are oriented in a grid pattern. The ray origins 112 can have a ray origin density, as quantified by the number of ray origins 112 per a unit of area. The ray origin density can vary and can be based on a number of parameters, such as the physical size of the 3D model 100, type of support material being used, size of the support structures, 3D model complexity, and so forth. In some embodiments, the ray origin density (i.e. resolution), or other configurations of the ray origins 112, can be modified by a user interacting with the computing system 12. While the ray origin density can vary, in some embodiments the ray origin density ranges from about 10 rays/in2 to about 600 rays/in2.

Referring now to FIG. 5, a plurality of virtual rays 114 that are shown extending through the 3D model 100. While FIG. 5 illustrates the virtual rays 114 extending upward in the z-direction, other configurations can be used without departing from the scope of the current disclosure. For example, in one embodiment, virtual rays 114 originate from “above” the 3D model 100 and extend downward through the 3D model 100. Additionally, while the plurality of virtual rays 114 of FIG. 5 are parallel to each other and normal to the x-y plane, this disclosure is not so limited. The virtual ray configuration may also differ based on the type of manufacturing system being used. With respect to liquid resin-based manufacturing systems, for example, the system 10 can generate a plurality of virtual rays 114 extending from local minima positions on the 3D model 100 that travel downward and intersect with a build platform base or the part below it (whichever comes first).

At step 66 of FIG. 2, the intersection points of the virtual rays 114 and the outer surface of the 3D model 100 are identified. As shown in FIG. 5, some of the virtual rays 114 intersect the overhangs 102 of the 3D model 100.

At step 68, for each intersection point, a support structure requirement is determined by the computing system 12. The support structure requirement can be based on one or more parameters. In one embodiment, for example, the support structure requirement can be based on an angle formed between (1) the virtual ray 114 and (2) a normal vector extending from the surface of the 3D model 100 at the intersection point. If the angle is beneath a given threshold, a support structure can be required at that intersection point. If the angle is above the given threshold, support structure is not required at the intersection point. Additional details regarding the angular thresholds are provided below with regard to FIGS. 12-13. Other parameters can additionally or alternatively be used to determine the support structure requirement at the individual intersection points. At step 70, the computing system 12 generates support structures 116 at each intersection point that satisfy the support structure requirement.

At step 72, a preview of the 3D model 100 having support structures 116 is graphically displayed to the user. FIG. 6 depicts the 3D model 100 subsequent to the generation of a plurality of support structures 116. As shown, some of the support structures 116 are positioned between an overhang 102 and the “ground”, while other of the support structures 116 are positioned between an overhang and another portion of the 3D model 100. At step 74, user modifications to the support structures 116 can be received. In some embodiments, user modifications include the addition of a support structure, the removal of a support structure, the grouping of support structures, the ungrouping of support structures, and/or changing the size, shape or other physical characteristics of a support structure. Example user modifications are described in more detail below with regard to FIGS. 14A-14E. In some embodiments, the grouping of a plurality of support structures into a unitary support structure can be intelligently performed by the computer computing system 12 based on bundling parameters. Additionally or alternatively, a user can selectively bundle neighboring support structures through interactions with the computing system 12.

At step 76, an updated 3D model based on the user modifications is displayed. Upon acceptance by a user, at step 78 the 3D model and support material can be converted into their corresponding polygon outlines for layer-based fabrication. In some embodiments, support material in close proximity can be intelligently grouped or bundled so that a single undivided region of support material can support a plurality of support regions. For a given slice layer, the layer will include a list of polygons representing the support material and the list of polygons for the 3D model outline. Tool path instructions for an extrusion head, a light source (i.e., a laser), or other manufacturing component, among other manufacturing parameters can be determined. At step 80, the data can be transmitted to a digital manufacture system.

In some embodiments, subsequent to any user modification to the support structures, the support material polygons can also be post-processed by computing the convex hull or by applying other types of polygon simplification algorithms. A boundary polygon of the 3D model can then be subtracted from the final support material polygons to avoid intersections with the desired part outline. In some embodiments, a negative polygon offset can be applied to the support material polygons if additional separation from the 3D model is desired for easy removal of the support structure material subsequent to manufacturing.

FIG. 7A is a perspective view of a 3D model 200 having an overhang 202 and support structures 216 generated in accordance with the systems and methods described herein. FIG. 7B is a front view of the 3D model 200 of FIG. 7A. FIG. 8 is a cross-sectional view of FIG. 7B taken along line 8-8. While the support structures 216 are illustrated as being rectangular, this disclosure is not so limited. Instead, the support structures 216 can have any suitable shape or configuration. For example, the portion of the support structure 216 proximate to the intersecting point of the 3D model 200 can be cone-shaped or pyramidal-shaped to reduce costs and ease in the separation of the support structure 216 from the 3D model 200 subsequent to manufacturing. FIGS. 9-11 depict example cross-sectional views of structural supports 216 that can be used with the 3D model 200 of FIGS. 7A-7B. As shown in FIG. 9, the support structures 216 can be grouped or bundled to form unitary support structure 216. FIG. 10 illustrates the support structures 216 can have circular cross-sectional areas. FIG. 11 illustrates the grouping of individual support structures into two unitary support structures 216. While various cross-sectional views are illustrated, it is to be appreciated that the support structures can have a wide variety of different cross-sectional shapes. Additional example cross-sectional shapes of support structures include triangular, “X” shaped, “L” shaped, “U” shaped, trapezoidal shaped, or any other suitable closed polygon shaped. Furthermore, support structures can have different cross-sectional shapes at different points along its Z-axis. For example, in accordance with one embodiment, a support structure can have an “X” shaped cross-sectional area at a portion that is proximate to the platen of a manufacturing system and transition to a circular cross-sectional shape at a portion that is proximate to the support structure's interface with the 3D model 200. In one embodiment, a user can toggle between the support structures 216 shown in FIGS. 8-11, among others, prior to transmitting data to the digital manufacturing system through user interactions with a graphical user interface.

In one embodiment, the ultimate configuration of the support structures for a 3D model is determined based purely on the recommendations of the computing system 12 resulting from the virtual ray-based analysis. In another embodiment, the ultimate configuration of the support structure for a 3D model is determined based both on the recommended support structures by the computing system 12 as well changes to the recommended support structures by a user interacting with the computing system 12. In yet another embodiment, the ultimate configuration of the support structure for a 3D model is determined purely on a user interacting with the computing system 12 to identify the placement location and configuration of support structures.

FIG. 12 and FIG. 13 schematically depict the interaction between virtual rays 314A, 314B and a surface 302 of a 3D model 300 during the structural support generation process. The characteristics of this interaction can be used by a computing system (such as computing system 12) to determine if a support structure(s) may be required. Referring first to FIG. 12, a virtual ray 314A is shown intersecting the surface 302 at intersection point (shown as P 1 ) and a virtual ray 314B is shown intersecting the surface 302 at intersection point (shown as P 2 ). An angle θ 1 is determined (such as by the computing system 12) between a normal vector (shown as n 1 ) and the virtual ray 314A, with the normal vector n 1 originating at the intersection point P 1 . An angle θ 2 is determined (such as by the computing system 12) between a normal vector (shown as n 2 ) and the virtual ray 314B with the normal vector n 2 originating at the intersection point P 2 . As illustrated, due to the curvature of the surface 302, angle θ 2 is less than angle θ 1 based on the relative positions of intersection points P 1 and P 2 .

In one embodiment, a threshold angle (θ T ) is used to determine if a support structure is to be generated at a particular intersection point. The threshold angle θ T can be, for example, 45 degrees, or any other suitable angle. In the illustrated embodiment, angle θ 1 is greater than angle θ T and angle θ 2 is less than angle θ T . As a result, as shown in FIG. 13, it can be determined that a support structure 316B is recommended at intersection point P 2 since angle θ 2 is less than angle θ T . Other factors beyond comparing angle θ 2 angle θ T can be considered by the computing system 12 prior to recommending the support structure 316B. Furthermore, comparing a threshold angle to an angle formed by (1) a vector that is normal to a model's surface and (2) a virtual ray is merely one non-limiting example of determining which intersection points can (at least initially) be provided with support structures.

FIG. 14A-14E depict the 3D model 300 presented on an example graphical user interface 400 displayed on a display 50 of a computing system 12. As is to be appreciated, the graphical user interface 400 is simplified for clarify. Referring first to FIG. 14A, the 3D model 300 having a support structure 316B generated by the computing system 12 is shown. An input device 52 can be used to control a cursor 404 on the graphical user interface 400. The input device 52 can be any user-controllable device, such as a computer mouse, a touchpad device, a gesture-based device, a voice-controlled device, and so forth. FIG. 14B depicts a user moving the cursor 404 to a point on the surface 302 and providing a user input 406 (shown as mouse click). Referring now to FIG. 14C, upon receiving the user input 406, a support structure 316A is generated proximate to the location identified by the user input 406. Furthermore, user inputs can also be used to remove support structures. FIG. 14D depicts a user moving the cursor 404 to the support structure 316B and providing a user input 406 (shown as mouse click). Upon receiving the user input 406, the support structure 316B can be removed from the 3D model 300, as shown in FIG. 14E. Therefore, through a series of interactions with the input device 52, a user can quickly and conveniently add supporting structures to the 3D model 300 and remove supporting structures from the 3D model 300. Additional alterations can also be made through these interactions, such alterations related to supporting structure sizing, supporting structure grouping, among other alterations.

The processes described herein can be performed on or between one or more computing devices. Referring now to FIG. 15, an example computing device 500 is presented. A computing device 500 can be a server, a computing device that is integrated with other systems or subsystems, a mobile computing device, a cloud-based computing capability, and so forth. The computing device 500 can be any suitable computing device as would be understood in the art, including without limitation, a custom chip, an embedded processing device, a tablet computing device, a personal data assistant (PDA), a desktop, a laptop, a microcomputer, a minicomputer, a server, a mainframe, or any other suitable programmable device. In various embodiments disclosed herein, a single component can be replaced by multiple components and multiple components can be replaced by a single component to perform a given function or functions. Except where such substitution would not be operative, such substitution is within the intended scope of the embodiments.

The computing device 500 includes a processor 502 that can be any suitable type of processing unit, for example a general purpose central processing unit (CPU), a reduced instruction set computer (RISC), a processor that has a pipeline or multiple processing capability including having multiple cores, a complex instruction set computer (CISC), a digital signal processor (DSP), an application specific integrated circuits (ASIC), a programmable logic devices (PLD), and a field programmable gate array (FPGA), among others. The computing resources can also include distributed computing devices, cloud computing resources, and virtual computing resources in general.

The computing device 500 also includes one or more memories 506, for example read only memory (ROM), random access memory (RAM), cache memory associated with the processor 502, or other memories such as dynamic RAM (DRAM), static ram (SRAM), programmable ROM (PROM), electrically erasable PROM (EEPROM), flash memory, a removable memory card or disk, a solid state drive, and so forth. The computing device 500 also includes storage media such as a storage device that can be configured to have multiple modules, such as magnetic disk drives, floppy drives, tape drives, hard drives, optical drives and media, magneto-optical drives and media, compact disk drives, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), a suitable type of Digital Versatile Disk (DVD) or BluRay disk, and so forth. Storage media such as flash drives, solid state hard drives, redundant array of individual disks (RAID), virtual drives, networked drives and other memory means including storage media on the processor 502, or memories 506 are also contemplated as storage devices. It can be appreciated that such memory can be internal or external with respect to operation of the disclosed embodiments. It can be appreciated that certain portions of the processes described herein can be performed using instructions stored on a computer-readable medium or media that direct a computer system to perform the process steps. Non-transitory computer-readable media, as used herein, comprises all computer-readable media except for transitory, propagating signals.

Network and communication interfaces 512 can be configured to transmit to, or receive data from, other computing devices 500 across a network 514. The network and communication interfaces 512 can be an Ethernet interface, a radio interface, a Universal Serial Bus (USB) interface, or any other suitable communications interface and can include receivers, transmitter, and transceivers. For purposes of clarity, a transceiver can be referred to as a receiver or a transmitter when referring to only the input or only the output functionality of the transceiver. Example communication interfaces 512 can include wired data transmission links such as Ethernet and TCP/IP. The communication interfaces 512 can include wireless protocols for interfacing with private or public networks 514. For example, the network and communication interfaces 512 and protocols can include interfaces for communicating with private wireless networks 514 such as a WiFi network, one of the IEEE 802.11x family of networks, or another suitable wireless network. The network and communication interfaces 512 can include interfaces and protocols for communicating with public wireless networks 514, using for example wireless protocols used by cellular network providers, including Code Division Multiple Access (CDMA) and Global System for Mobile Communications (GSM). A computing device 500 can use network and communication interfaces 512 to communicate with hardware modules such as a database or data store, or one or more servers or other networked computing resources. Data can be encrypted or protected from unauthorized access.

In various configurations, the computing device 500 can include a system bus 516 for interconnecting the various components of the computing device 500, or the computing device 500 can be integrated into one or more chips such as programmable logic device or application specific integrated circuit (ASIC). The system bus 516 can include a memory controller, a local bus, or a peripheral bus for supporting user interfaces 504, and communication interfaces 512. Example user interfaces 504 include keyboards, keypads, gesture or graphical input devices, motion input devices, touchscreen interfaces, one or more displays, audio units, voice recognition units, vibratory devices, computer mice, and any other suitable user interface.

The processor 502 and memory 506 can include nonvolatile memory for storing computer-readable instructions, data, data structures, program modules, code, microcode, and other software components for storing the computer-readable instructions in non-transitory computer-readable mediums in connection with the other hardware components for carrying out the methodologies described herein. Software components can include source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, or any other suitable type of code or computer instructions implemented using any suitable high-level, low-level, object-oriented, visual, compiled, or interpreted programming language.

It is to be understood that the figures and descriptions of the present disclosure have been simplified to illustrate elements that are relevant for a clear understanding of the present disclosure, while eliminating, for purposes of clarity, other elements. Those of ordinary skill in the art will recognize, however, that these sorts of focused discussions would not facilitate a better understanding of the present disclosure, and therefore, a more detailed description of such elements is not provided herein.

Any element expressed herein as a means for performing a specified function is intended to encompass any way of performing that function including, for example, a combination of elements that performs that function. Furthermore the disclosure, as may be defined by such means-plus-function claims, resides in the fact that the functionalities provided by the various recited means are combined and brought together in a manner as defined by the appended claims. Therefore, any means that can provide such functionalities may be considered equivalents to the means shown herein. Moreover, the processes associated with the present embodiments may be executed by programmable equipment, such as computers. Software or other sets of instructions that may be employed to cause programmable equipment to execute the processes may be stored in any storage device, such as, for example, a computer system (non-volatile) memory, an optical disk, magnetic tape, or magnetic disk. Furthermore, some of the processes may be programmed when the computer system is manufactured or via a computer-readable memory medium.

It can also be appreciated that certain process aspects described herein may be performed using instructions stored on a computer-readable memory medium or media that direct a computer or computer system to perform process steps. A computer-readable medium may include, for example, memory devices such as diskettes, compact discs of both read-only and read/write varieties, optical disk drives, and hard disk drives. A non-transitory computer-readable medium may also include memory storage that may be physical, virtual, permanent, temporary, semi-permanent and/or semi-temporary.

These and other embodiments of the systems and methods can be used as would be recognized by those skilled in the art. The above descriptions of various systems and methods are intended to illustrate specific examples and describe certain ways of making and using the systems disclosed and described here. These descriptions are neither intended to be nor should be taken as an exhaustive list of the possible ways in which these systems can be made and used. A number of modifications, including substitutions of systems between or among examples and variations among combinations can be made. Those modifications and variations should be apparent to those of ordinary skill in this area after having read this disclosure.