Craft-centric 3D printer and scanner

The craft-centric 3D printing apparatus integrates manual interactions with automated control to enhance the expression of traditional craftsmanship, addressing the limitations of CAD-based 3D printing by allowing users to shape objects in real time and recreate hand-made designs.

WO2025236015A1PCT designated stage Publication Date: 2025-11-13MOYER ILAN ELLISON +1
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
PCT/US2025/028991
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-05-10
Filing Date
2025-05-12
Publication Date
2025-11-13

AI Technical Summary

Technical Problem

Commercially available 3D printers for pottery and other hand-crafted objects rely solely on CAD-based design, neglecting the importance of human interaction with materials, limiting the expression of desirable features and details inherent in traditional craftsmanship.

Method used

A craft-centric 3D printing apparatus that allows users to manually interact with a pottery wheel and other controls to shape the printing process in real time, combining manual and automated control operations, with a modular control system and a scanner to recreate hand-made objects.

Benefits of technology

Facilitates the integration of human interaction into the 3D printing process, enabling the creation of objects with unique features and details that reflect traditional craftsmanship, while allowing for flexible and sophisticated control systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2025028991_13112025_PF_FP_ABST
    Figure US2025028991_13112025_PF_FP_ABST
Patent Text Reader

Abstract

Various embodiments of a craft-centric 3D printer, a modular control system, and a craft- aligned scanner are disclosed. In some embodiments, the craft-centric 3D printer is adapted for pottery production. In some embodiments various motion signal streams can be flexibly combined to integrate and mix craft based and computer generated input. In some embodiments, the craft-aligned scanner allows efficiently reproducing a toolpath for a machine to reproduce a scanned object. These and other embodiments and features are more fully described herein.
Need to check novelty before this filing date? Find Prior Art

Description

Craft-centric 3D Printer and ScannerCROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application claims the benefit of priority to U.S. Provisional Application Number 63 / 645,842 filed on May 10, 2024, which is hereby incorporated by reference in its entirety.BACKGROUND

[0002] This disclosure relates generally to 3D printing, in pottery and also other contexts. It also relates to machine control systems and object scanners.SUMMARY

[0003] Commercially available 3D printers are typically automated output devices for fabricating an object based on computer aided design (CAD) models. Such 3D printers assume that the process for designing the printed object takes place via interaction with a CAD interface or other computer user interface. However, for skilled craftspeople (including artists), design and fabrication of objects are not separable processes. A craftsperson may work out an object’s structural form through physical interactions with the material of which the object is made. In the case of pottery, for example, a pottery object might be designed by a skilled potter through physical interactions with clay spinning on a pottery wheel as the object is made.

[0004] Relying solely on CAD-based 3D printing to produce pottery or other traditionally hand-crafted objects risks losing some of the desirable features and details of those objects. In typical CAD-based 3D printing, an important aspect of the craftsperson’ s design process, i.e., human physical interaction with the relevant material while the object is being crafted, is not utilized, and the form of resulting objects are limited to what a craftsperson is able to express indirectly in CAD.

[0005] Existing pottery 3D printers do not have a pottery wheel, but rather rely on causing relative movement between an extruder nozzle and a table while the extruder extrudes clay from the nozzle onto the table, hi some cases, the table remains fixed while actuators move the extruder nozzle in the X, Y, and Z directions. In some cases, actuators move the table in X, Y directions while the extruder nozzle stays fixed in the X,Y plane while another actuator moves the extruder nozzle in the Z direction. The rate of extrusion is controlled by a motor or other actuator that causes the clay to be extruded through the extruder’s nozzle. In some examples, a cartesian-based controller generates step signals to control the table and / or extruder nozzle movements in X, Y, and Z directions (as well as controlling the actuator responsible for causing extrusion of the clay) in response to reading a G-code file. The G-code file is used to generate step signals that control the actuators in the 3D printer.

[0006] As with other typical 3D printers, the process of designing an object for commercially available clay 3D printers is done via a computer interface. Fabrication then happens later and automatically, after printing is started, with little or no further action by the user. At the same time, 3D printing can provide a useful and efficient way of fabricating objects, including pottery objects. However, existing solutions have not explored and utilized a range of opportunities for craft-centric control during the printing process. Craftspeople and other potential users of 3D printing tools are forced to choose between switching to computer-centric design processes and giving up manual interactions to craft an object on the one hand and, on the other hand, forgoing potential benefits of 3D printing technology.

[0007] To address these and other issues, embodiments of the present disclosure provide a craft-centric 3D printing apparatus that facilitates a variety of user control interactions allowing a user to impact the clay 3D printing process and thereby shape, in real time, the way in whichthe pottery object is fabricated. In some embodiments, a user, such as a potter, manually interacts with a pottery wheel pedal, an extruder swing arm lever, and other user controls to initiate control signaling that ultimately shapes the stream of step signals sent from a machine controller to various motion actuators of the craft-centric 3D printer.

[0008] In some embodiments, a mix of manual and automated control operations assist the user by automatically generating some motion streams based on other, user-controlled motion streams. In specific embodiments, some automatically generated motion streams can be finetuned or otherwise modified during printing through manual control interactions. In some embodiments, a recording module allows the motion signal streams resulting from user manual interactions with the inventive system to be saved for later playback to automatically replicate the results of user’s control operations. In some embodiments, the recording module may save and play back motion signal streams that contain a mix in any proportion of both automatically generated motion signal streams and motion signal streams resulting from user manual interaction.

[0009] In some aspects, a modular control system architecture of embodiments of the present disclosure allows multiple modules to be chained together to flexibly build a variety of complex motion streams to control motion along axes of the craft-centric 3D printer. In such embodiments, modules can generate motion signal output streams based on a combination of motion signals received from an external module (e.g., a prior module in a chain of modules) and motion signals generated based on module-specific logic and user control interactions.

[0010] Some embodiments include polar motion mechanisms along with a cartesian-to-polar conversion sub-system that allows external motion signal streams for cartesian-based control operations to be converted into polar-based control operations that are native to an embodimentof the present disclosure. The control results of that external motion signal stream can, in some modes of operation, be modified by locally generated motion signals and additional externally generated motion signals that may be in response to user control interactions.

[0011] In another embodiment of the present disclosure, a scanner is provided that can scan a pottery object (one that is hand-made, machine-made, or a combination thereof) or other object as it spins and then use the scan to synthesize one or more motion signal streams for use by a craft-centric 3D printer of the present disclosure or by other 3D printers in recreating the scanned object. In some embodiments, while the synthesized motion signals streamed from the stored scan data is controlling a craft-centric 3D printer of the present disclosure, a user can modify the signal stream based on one or more interactions with controls coupled to modules of the craft-centric 3D printer.

[0012] In some embodiments of the disclosure, modular functions of the control system, including but not limited to those previously described, may be implemented as software modules and co-exist on a single microcontroller or other computing device.

[0013] Aspects of these and other embodiments are more fully described herein with reference to the following drawing figures.BRIEF DESCRIPTION OF THE DRAWINGS

[0014] FIGs. 1 A-1B illustrate different perspective view of the mechanical structure of a craft-centric 3D printer in accordance with an embodiment of the present disclosure.

[0015] FIG. 2 illustrates a craft-centric 3D printer and scanner in accordance with an embodiment of the present disclosure.

[0016] FIG. 3Aillustrates an embodiment of a control system architecture for controlling mechanisms of the craft-centric 3D printer.

[0017] FIG. 3Billustrates further details of a module architecture of a module in the embodiment of FIG. 3 A.

[0018] FIGs. 4A-4C illustrate various aspects of an architecture of the machine controller module shown in the embodiment of FIG. 3 A.

[0019] FIG. 5 illustrates a processing flow carried about by channel input interface of modules illustrated in FIG. 3Aand by the PIN interrupt processes of the machine controller as shown in FIG. 4A.

[0020] FIG. 6 illustrate a processing flow carried about by one or more module step generators consistent with an embodiment of the present disclosure.

[0021] FIGs. 7A-7B illustrate alternative process flows for the machine controller depicted in FIG. 3Ato convert cartesian-based step signals to polar-based step signals consistent with the native control signals of the control system illustrated in FIG. 3A.

[0022] FIG. 8 illustrates a processing flow carried out to initiate either a wheel mode or print mode in embodiments of the present disclosure.

[0023] FIG. 9 illustrates a processing flow to implement operations of the physical UI module of FIG. 3 Ain either a wheel mode or a print mode in embodiments of the present disclosure.

[0024] FIG. 10 illustrates a processing flow to implement operations of the pot-assist module of FIG. 3 Ain embodiments of the present disclosure.

[0025] FIG. 11 illustrates a processing flow to implement operations of the recorder module of FIG. 3 Ain embodiments of the present disclosure.

[0026] FIG. 12 illustrates using angular values corresponding to the wheel and swing arm of the embodiment of FIGs. 1A-1B to obtain an expression of the position of the extruder, held at the end of the swing arm, relative to the wheel in polar coordinates. Alternative values for R (precise and approximate) and corresponding equations are shown.

[0027] FIG. 13 illustrates translating a position expressed using polar coordinates to an expression of the position in cartesian coordinates.

[0028] FIGs. 14A-14D illustrate structure and operation of an object scanner in accordance with embodiments of the present disclosure.

[0029] FIG. 15 illustrates use of an object scan produced by the scanner embodiment of FIGs. 14A-14D with a 3D printer as well as related computer design systems.

[0030] FIG. 16, Illustrates a computing system that may be used to carry out some of the processing referenced herein.

[0031] While embodiments of the present disclosure are described with reference to the above drawings, the drawings are intended to be illustrative. Other embodiments are consistent with the spirit and scope of the disclosure.DETAILED DESCRIPTION

[0032] The various embodiments now will be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific examples of practicing the embodiments. This specification may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this specificationwill be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art. Among other things, this specification may be embodied as methods or devices.Accordingly, any of the various embodiments herein may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. The following specification is, therefore, not to be taken in a limiting sense. Two papers by the inventors describe aspects of embodiments of the invention. A first is entitled “Throwing Out Conventions: Reimagining Craft-Centered CNC Tool Design through the Digital Pottery Wheel” published 11 May 2024 and available at: https: / / dl.acm.org / doi / 10.1145 / 3613904.3642361. Another is entitled “Don’t Mesh Around: Streamlining Manual-Digital Fabrication Workflows with Domain-Specific 3D Scanning” published 11 October 2024, and available at: https: / / dl.acm.org / doi / 10.1145 / 3654777.3676385. Both papers are hereby incorporated by reference in their entirety.

[0033] FIGs. 1 A-1B are different perspective views illustrating the mechanical structure of a craft-centric 3D printing system 1000 in accordance with one embodiment of the present disclosure. FIG. 1A shows system 1000 from a top perspective view. FIG. IB shows system 1000 from a bottom perspective view.

[0034] As shown in FIG. 1A, system 1000 comprises wheel head 101 and extruder 102, System 1000 further comprises typical pottery wheel elements including splash pan 114 and table / frame 115. A pedal and other user interface control inputs are present but not separately shown in FIGs. 1A-1B. Rather, they are depicted in the context of FIG. 3 A. As illustrated in FIG. 1A, extruder 102 is mounted on arm 103 which in turn is mounted on carriage 104 for movement up and down Z-axis column 105. Z-axis column 105 is mounted on (or otherwise coupled to) pulley 106 (shown in FIG. IB), which in turn is coupled via belt 107 (shown in FIG.IB) to a first extruder motion actuator including a servo motor 108 (shown in FIG. IB). Servo motor 108 actuates rotation of Z-axis column 105 around its vertical axis though an angle OR. A second extruder motion actuator including stepper motor 109 is coupled to move carriage 104 up and down along Z-axis column 105.

[0035] As shown in FIG. IB, wheel head 101 is coupled to pulley 110 via axle 111. Pulley 110 is coupled via belt 112 (shown in FIG. IB) to a wheel actuator including servo motor 113 (shown in FIG. IB). Servo motor 113 actuates rotation of wheel head 101 through an angle 9.

[0036] As shown in FIG. 1 A, extruder 102 includes a rod 116 which is coupled to an extrusion actuator including stepper motor 117. Stepper motor 117 causes rod 116 to move piston 118 to move a material 119 (e.g., clay) within the extruder and extrude it though forming nozzle 152 and downward onto wheel head 101.

[0037] Although system 1000 illustrated in FIGs. 1 A and IB uses an angular actuator to move extruder nozzle 152 in arc shaped path in a plane above wheel head 101, alternative mechanical implementations can be implemented within the scope of embodiments of the present disclosure. In alternative embodiments, a linear actuator may be used to move extruder nozzle 152 along a linear axis, for example, one along a radial direction relative a rotational axis of wheel head 101. In another alternative, two or more linear actuators might be utilized to move nozzle 152 parallel to wheel head 101’s surface along an X and Y axis, which may or may not be perpendicular. These and other alternatives are within the scope of the present disclosure. Moreover, although the illustrated example uses a rod and piston to extrude material from extruder 102, other clay extruder actuators, including pneumatic are well known. These and other actuators (e.g. soft actuators) can, in some cases, be substituted for the illustrated extrusion actuator without necessary departing from the scope of the present disclosure.

[0038] FIG. 2 illustrates system 1000 with a scanner 201 mounted to an elevator 202. Elevator 202 is coupled to a linear actuator including stepper motor 203. Stepper motor 203 raises and lowers scanner 201 to scan work piece 210 as wheel head 101 rotates workpiece 210. The operation of scanner 201 in conjunction with an embodiment of system 1000 will be more fully illustrated and described in the context of FIGs. 14A, 14B, and 15.

[0039] FIG. 3Aillustrates control system 3000 in accordance with one embodiment of a control system for use with craft-centric 3D printing system 1000, Control system 3000 comprises physical user interface circuitry 301, user control inputs 302, recorder 303 (including storage 314) machine controller 304, and cartesian-based controller 305. Cartesian-based controller is coupled to a user computer such as laptop 306 and can receive a G-code 3D printing file and use it to generate control signals that assume movement with reference to cartesian coordinates.

[0040] User interface circuitry 301 includes primary physical user interface circuitry 301A corresponding to the physical user interface module and secondary physical user interface circuitry 301B, corresponding to the “pot assist” module. User control inputs 302 providing input to primary interface circuitry 301 A include throwing / printing switch 11 (which also connects to machine controller 304), pedal 12, lever 13, Z-step knob 14, and extrusion knob 15. User control inputs providing input to secondary user interface circuitry 30 IB include coil knob 16, angle-slider 17, and bead knob 18.

[0041] Recorder 303 includes SD card 314. Recorder 303 carries out recording and playback operations in response to the state of record / playback controls 315 as will be further described below.Modular Architecture

[0042] Each DPW (“digital pottery wheel”) module, i.e., 301A, 301B, and 303 has a similar functional architecture that beneficially allows external motion signals (e.g., step signals) to be received, processed, and output by the module in combination with other motion signals (e.g., signals that update a target position of an element corresponding to particular control channel) that are generated locally at the module and impact the module’s output signal stream.

[0043] Specifically, in the illustrated embodiment, channel input block 31 in each module is configured to, for each control channel (in this case, Wheel, Arm, Z Axis, and Extrusion channels), receive an input step signal (indicating a step and a direction) from a prior module or other external source. In response to such a signal, channel input block 31 executes logic such as that shown in FIG. 5 to determine whether to increment or decrement a target position value in channel state block 32 (and then carry out the determined action). The target position value, along with other values maintained in channel state block 32, are made available to step generator 33. Step generator 33 generates output step signals (including a step pulse and a direction signal) by executing logic such as that shown in FIG. 6 on the state values received from channel step state block 32.

[0044] Furthermore, each DPW module, as shown, has a module-specific motion signal logic block. Depending on the dedicated functions for the corresponding module, each modulespecific motion logic block will execute particular logic on particular inputs. As described further below, in the illustrated example, module-specific block 91 executes logic described in FIG. 9; module-specific block 92 executes logic described in FIG. 10; and module-specific block 93 executes logic described in FIG. 11.

[0045] Thus, in one aspect, embodiments of the present disclosure provide a flexible, modular control system in which different modules can impact step signals in the same controlchannel such that a signal stream controlling machine movement can be generated from the contributions of different sources and real-time user interactions. In one aspect, this facilitates increasingly sophisticated control systems for craft-based 3D printing that can be constructed in a modular way.

[0046] As illustrated in FIG. 3, step signal inputs and outputs are, for ease of illustration, depicted as single outputs. However, as described below in the context of FIG. 3B, each input and each output in fact represents two pins for signaling two pieces of information contained in a step signal: Step and Direction. The “Step” bit signals that the motor should take a step and the “Direction” bit signals whether the step is in the forward or reverse direction. In some embodiments of the disclosure, these signaling pins may transmit additional encoded data, such as which axis the step signal is controlling, or arbitrary data.

[0047] Also, in FIG. 3, each module’s channel input interface, channel state, and step generator are shown as single blocks for ease of illustration only. In fact, a separate input logic and a separate step generator operation is executed for each channel and each channel’s state values are maintained independently of other channel’s state values.

[0048] FIG. 3B shows a DPW module architecture in further detail in the context of illustrating operation of pot assist module 301B shown in FIG. 3A.

[0049] A digital step signal comprising a step bit and a direction bit is received at channel input / state update logic 31. Input logic 31 also receives an enable signal that, in some embodiments, is generated internally at the module. Assuming the enable signal is high (or otherwise indicates that the channel is enabled), then the step bit and direction bit are used by input logic block 31 to determine whether to increment, decrement, or not act on target step position value 412 for the relevant channel (e.g., wheel, arm, Z axis, or extrusion). For theavoidance of doubt, in various embodiments, incrementing and decrementing may occur by integer values and / or by fractional values.

[0050] Step generator 33 executes logic based on channel state values including Max Step Velocity 414, Target Step Position 412, Current Step Position 411, and Time Since Last Step 415. Max Step Velocity 414 can be set based on settings selected via settings interface 444C (which can in some embodiments, be manual controls connected to module 30 IB or a computer or other communications interface to module 30 IB) or, in alternative examples, can be predetermined or automatically determined. Target Step Position 412 can be incremented or decremented (by one or more than one step at a time) by channel input I state update logic 31 or by module-specific motion signal logic 92. module-specific motion signal logic 92 generates signals for updating Target Step Position 411 in response to manipulation of control input connected to module 30 IB and in response to arm channel and wheel channel position values in channel state block 32. Current Step Position value 411 is incremented when step generator 33 generates a step in the forward direction and is decremented when step generator 33 generates a step in the reverse direction. Time Since Last Step value 415 increments each clock cycle and resets each time that step generator 33 outputs a step signal.

[0051] Step generator 33 executes logic which, in some embodiments, may correspond to the logic illustrated in FIG. 6. Specifically, subject to a velocity limit corresponding to Max Step Velocity value 414 maintained by channel state block 32, if Target Step Position value 412 is greater than Current Step Position value 411, a forward step is generated. If Target Step Position value 412 is less than Current Step Position value 411, then a reverse step is generated.

[0052] The more detailed module architecture for physical UI module 301A and recorder module 303 is not separately illustrated. However, it is similar to that described for module301B in the context of FIGs. 3A-3B. The connections shown exist in each module, but in operation of the illustrated embodiment there are differences in operational use of those connections.

[0053] Some operational differences in the illustrated embodiment include the following. For module 301A, the first module in the series of DPW modules, in the presently illustrated embodiment, externally generated step signals are not received by channel input logic 31 of module 301A. Thus, channel state block 32’ s Target Step Position values are only updated by module specific logic 91 and not by input logic 31. Also, logic 91 operates in response to user manipulated inputs. Unlike logic 92 in module 301B, logic 91 does not, in the illustrated embodiment, operate as a function of state values in channel state block 32. For recorder module 30, module specific logic 93 operates in part based on signals from step generator 33 rather than from channel state block 32. However, in some embodiments, the basic structural architecture of each DPW module is similar. Individual DPW modules and operational modes will be discussed further below.

[0054] Note that, in one embodiment, the illustrated control modules are connected by multiple audio cables, with one audio cable per motion channel I stream. However, various alternative can be implemented. In one alternative, multiple channels are communicated over a single cable, using time multiplexing or other methods.

[0055] In one embodiment, the cables that connect control modules to each other carry only step and direction signals, which means that the modules can communicate positional information to each other in a relative manner (i.e. relative to an assumed start state of each module). In other alternatives, the same conductors (or additional conductors) can be used to carry a digital communication protocol used share to share other sorts of information acrossmodules. This could include means of sharing and synchronizing state, or issuing and receiving commands. There could, in such alternatives, be coexistence of step / direction and higher-level communications on the bus, whether they can work simultaneously or need to switch modes.

[0056] In some embodiments, the cables become hot-swappable, so that one does not need to restart the entire control system when adding or removing something. This would advantageously allow state information to be shared with newly attached modules.

[0057] Moreover, in the illustrated embodiment, each module is implemented on a separate circuit board. However, those skilled in the art will appreciate that circuity implementing the described functions can, in alternative embodiments, by combined on one circuit board or even implemented using “system on a chip” architectures.Specific Modules and ModesPHYSICAL UI MODULE, THROW MODE, PRINT MODE

[0058] Referring back to FIG. 3Aand continuing with the description of control system 3000, in this embodiment, first user interface circuitry 301 A (“physical UI module”) is the first module in the series of DPW modules. In this example, module 301A does not receive signals at its channel input block 31 and, therefore, input block 31 does not in turn act upon channel state block 32 of circuitry 301 A. However, in the illustrated example, channel input block 31 is nonetheless present in module 301A and, therefore, could receive such input in a particular implementation. Module-specific motion signal logic block 91 processes input from throwing / printing select switch 11, pedal 12, lever 13, Z baby step knob 14, and extrusion knob 15.

[0059] Throwing / printing select switch 11 is used to select between a “throwing” mode (also referred to herein as a “wheel” mode) and a “printing” mode. In the wheel mode, controlchannels other than the wheel channel are disabled, the extruder is moved out of the way by the swing arm, and a potter can operate the system as a more traditional pottery wheel, using the pedal to control wheel speed via the wheel channel and the machine controller. In printing mode, all control channels are available and extruder 102 is positioned by arc-shaped movement of arm 103 and Z-axis movement of carriage 104 over wheel head 101.

[0060] Referring to FIG. 3Aand to FIGs. 1A -IB, pedal 12 is used to control a rotational (angular) velocity of wheel head 101 (rotationally actuated by servo motor 113), Lever 13 is used to position extruder 102 along an arc-shaped path over wheel head 101 by rotating Z-axis column 105 (rotationally actuated by servo motor 108 and coupled to extruder 102 via swing arm 103) over an angle OR. Z baby step knob 14 is used to position extruder 102 along a vertical path by raising or lowering carriage 104 (vertically actuated by stepper motor 109). Extrusion knob 15 is used to control the linear velocity of extrusion piston 118 attached to the end of rod 116 (vertical linear motion being actuated by stepper motor 117).

[0061] Data from pedal 12, lever 13, Z baby step knob 14, and extrusion knob 15 are processed by module-specific motion signal synthesizer 91 to generate respective motion signal streams for updating respective target position values in channel state block 32, corresponding to, respectively, wheel, arm, Z axis and extrusion channel states.

[0062] In response to user interaction with pedal 12, module-specific logic 91 generates an angular velocity signal in the form of executing increments (or decrements if a wheel directional switch indicates a reverse angular direction) (wheel directional switch not separately illustrated) to the wheel’s target angular position step value in channel state block 32 at a particular rate. In a particular embodiment, the pedal’s position is proportional to the wheel’s target velocity(implemented as a rate of incremental changes of the target position value). Thus, the greaterthe degree to which the pedal is depressed, the greater the target velocity (rate of target position increments); and the greater the degree to which the pedal is lifted, the lower the wheel’s target velocity. However, in the illustrated embodiment, the wheel’s velocity is also subject to a limit. The value of that limit is different depending on whether throwing mode or printing mode is selected. In one example, a higher limit is set in throwing mode than in printing mode. In one example, a limit of 250 RPM is set in throwing mode and a limit of 50 RPM per minute is set in printing mode.

[0063] In response to a user moving lever 13, module-specific logic 91 generates a position signal to change the target angular position R of swing arm 103 on which extruder 102 is mounted. The position signal takes the form of one or more updates (increments or decrements) to the target angular position step value (an increment or decrement can change the value by one or more step positions) for the arm channel state maintained by channel state block 32.

[0064] In response to a user moving Z baby step knob 14, module-specific logic 91 generates a position signal to change the target Z-axis position of carriage 104. The position signal takes the form of one or more updates (increments or decrements) to the target Z-axis step position value for the Z-axis channel state maintained by channel state block 32.

[0065] In response to a user interaction with extrusion knob 15, module-specific logic 91 generates a velocity signal to either increase or decrease the target downward velocity of rod 116 (and therefore of piston 118) in extruder 102. This signal takes the form of executing increments or decrements to extrusion step position value in channel state block 32 at a particular rate. In a particular embodiment, the knob’s position is proportional to an amount to which the extruder piston’s target velocity (implemented as a rate of incremental changes of the target position value, i.e., a rate of position increment signals) is changed. Thus, the greater thedegree to which knob 15 is turned in an increasing direction, the greater the piston’s target downward velocity (rate of target position increments); and the greater the degree to which knob is turned in the opposite direction, the lower the piston’s target downward velocity. In some embodiments, the knob position is proportional to a supplemental component of the piston’s target velocity. In other words, another signal source (e.g., from a G-code, pot assist, recorder, or other signal source) might provide a primary control source for the piston’s target velocity and then adjustment of knob 15 acts to modify or fine tune that target velocity. However, in other alternatives, the target velocity might depend on the position of knob 15 alone.POT ASSIST MODULE AND VARIOUS POT ASSIST MODES

[0066] Secondary user interface circuitry 301B (“pot assist” module) allows a user to modify certain control signals to provide additional control in particular operational modes. In one embodiment, in a print mode, one or more “pot assist” modes can be implemented for particular interactions.

[0067] One pot assist example assists in controlling the orientation of printed spirals. In this example, swing arm 103 (which determines the position of extruder nozzle 152 in a plane parallel to wheel head 101) and Z-axis carriage 104 (which determines nozzle 152’ s vertical position relative to wheel head 101) are controlled to move at velocities that are based on both wheel 101 ’s velocity and a position of angle slider 17 (which maps linear positions to angles between 0 and 180 degrees).

[0068] The orientation of a spiral that is printed when wheel head 101 is spinning while clay is being deposited on wheel head 101 depends on the relationship between the velocity of swing arm 103 and the velocity of carriage 106. For example, if only swing arm 103 (and not carriage106) moves, then a horizontal spiral (which can provide a base) is printed. If only carriage 106 (and not swing arm 103) moves, then a vertical spiral is printed. However, if both carriage 106 and swing arm 103 move during printing, then spirals having orientations between horizontal and vertical can be printed depending on the relative velocities of carriage 106 and swing arm 103. In this example, that relationship depends on the position of angle slider 17. Different linear combinations of swing arm velocity and Z-axis carriage velocity can be implemented by changing the position of angle slider 17. Hence, different spiral orientations between vertical and horizontal can be printed. While this pot-assist example does not require the use of lever 13 or Z-axis knob 14, these inputs may be used in an ancillary role to supplement the motion streams generated by the pot-assist.

[0069] In another pot-assist example, without the use of angle slider 17, controlling the position of swing arm 103 does rely on user movement of lever 13. In this alternative, a base mode and wall mode are both used. In the base mode, the Z-axis does not move automatically, and, while operating the wheel with pedal 12, the user operates lever 13 to move swing arm 103 in one direction as wheel 101 spins to create a first spiral layer. If the user wishes to create a second spiral layer on top of the first layer, the user can operate Z baby step knob 14 to slightly raise extruder 102’ s vertical position and then use lever 13 to move swing arm 103 back in the opposite direction to create the next layer. When the base is finished, the user can stop and start the wheel using pedal 12 to initiate a “wall mode” in which carriage 104 raises extruder 102 vertically (along the Z axis) automatically at a velocity that is a function of the wheel 101 ’s velocity.

[0070] Another pot assist feature can be present in combination with the above examples or on its own.

[0071] In default operation, extrusion piston 118 moves with a velocity that is a function of both swing arm 103 ’ s position and the velocity of the pottery wheel. The proportionate relationships between wheel velocity, arm position, and automatically generated extrusion rate can, in some embodiments, be set or modified via interacting with bead knob 18. In some embodiments, the motion signal for moving the extrusion piston may be synthesized based in part on motions signals for other axes, an extrusion rate parameter, and the positional state of the extruder nozzle.

[0072] When the wheel head is spinning, tangential velocity is greater at points further radially out from the wheel head’s center. Therefore, to deposit a given amount of clay at a given location on the wheel head, if the wheel head’s rotational velocity is constant, the extrusion speed would need to be greater when the extruder’s position is further radially from the center of the wheel head.

[0073] However, at a given wheel head speed and a given radial position of the extruder nozzle, the user may wish to vary the extrusion speed to, for example, achieve variations in the width of deposited spiral lines of clay. Therefore, extrusion knob 15 can be used to increase or decrease the automatically set extrusion rate at a given wheel velocity and arm position. Specifically, in one implementation, the speed of the extrusion piston’s movement can be further controlled using extrusion knob 15 to increment the extrusion piston’s target position in the extrusion channel state in channel state block 32 at a faster or slower rate (i.e., add position steps to the target position at a faster or slower rate).

[0074] One or more of the above-described pot-assist modes I features are implemented using module-specific motion signal logic 92 in circuitry 301B. Specifically, logic 92 uses input data from coil knob 16, angle slider 17, and / or bead knob 18 in conjunction with state values fromchannel state block 32 in pot-assist module 30 IB to carry out the necessary control operations. In one example, module-specific logic 92 uses target position values for the wheel channel and the arm channel to determine, respectively, wheel velocity and arm position, both of which are relevant to the above operations.

[0075] One example of logic executed by block 92 is illustrated and described in the context of FIG. 10.RECORDER MODULE

[0076] Recorder 303 includes storage 314 (in this example, an SD card). If switch 315 is activated to start recording, then the signal stream, including sub-streams for each control channel (wheel, arm, Z axis, and extrusion) are used to generate and store step signals in storage 314. In one example, during recording, the step signals generated by step generator 33 of module 303 are used by module-specific motion signal logic 93 to update a recorder target position value for each channel in a recorder channel state register (not separately shown). A separate recorder current position value is also stored in a recorder channel state register (not separately shown). If the recorder target position value for wheel 101 is greater than recorder current position value, then a forward step signal (e.g., wheel step bit = 1, wheel direction bit = 1) is stored in SD card 314 for the current clock cycle. If the recorder target position value for wheel 101 is less than recorder current position value, then a reverse step signal (e.g., wheel step bit = 1, wheel direction bit = 0) is stored in SD card 314 for the current clock cycle. If the recorder target position value for wheel 101 is equal to the recorder current position value, then a non-step signal is stored (e.g., wheel step bit = 0, wheel direction bit = 0 or 1) is stored in SD card 314 for the current clock cycle. When a forward or reverse step is stored in SD card 314, then the recorder current position value is incremented or decremented, respectively.

[0077] As will be appreciated by one skilled in the art, bits representing synchronous channels can be stored together in the same byte written to the SD card on the same clock cycle, and furthermore, the structure of the stored data may utilize more than one byte to simultaneously represent multiple synchronous channels.

[0078] If switch 315 is set for “playback,” then the stored step signals are read out of SD card in streams (steps for one channel can be read out in parallel to steps for another channel). Module specific motion signal logic uses those steps signals to update (increment or decrement) the channel target position values maintained by channel state block 32, which in turn results in adding steps to the output of recorder module 303. These steps can be in addition to any steps resulting from input received at channel input 31 of recorder module 303 from pot assist module 30 IB. In other words, some embodiments of the present disclosure allow a user to mix, in real time, playback of previously recorded signal streams with newly generated signal streams accomplished through operation of user control inputs to modules 301A and / or 301B.

[0079] Machine controller 304 receives the signal stream (including all sub-streams) from recorder 303 (either passed through from interface circuitry 301 and / or provided from stored signal data in SD card 315) at the inputs marked with white boxes in FIG. 3 A. Machine controller also has inputs, marked with blacked-in boxes in FIG. 3, for receiving a signal stream from cartesian-based controller 305. Signals passing from recorder 303 to machine controller 304 (either from interface circuitry 301 or from SD card 315), in the illustrated embodiment, include two signals representing angular values (wheel velocity and arm position.) Given a known length of swing arm 103 (which, in one embodiment, is the same as the fixed distance between Z-axis column 105), these angular values are usable to express a position of the extruder 102 relative to wheel head 101 in polar coordinates. Machine controller 303 uses theangular value signals to obtain the current and target position of the extruder in polar coordinates, based on the formula described further below in the context of FIG. 12.Furthermore, machine controller 303 has a conversion module so that, when receiving extruder position signals corresponding to cartesian coordinates (at the inputs marked X and Y), those cartesian coordinates can be converted to polar coordinate values and then converted to steps used by machine controller 304 to update channel state values and control the actuators of system 1000. In an alternative example, the conversion for the current position of the extruder in polar coordinates can be approximated using the wheel position directly, as well as the radial path length of the arm motion from the center of the wheel (RA in FIG. 12), as determined by the angular position of the arm and the arm length as shown in the context of FIG. 7A.

[0080] This also allows use of a more typical 3D printing file, represented in G-code, as input to motions streams for system 1000.

[0081] FIGs. 4A-4C illustrate different aspects of an embodiment of the system architecture for machine controller 304.

[0082] As shown in FIG. 4 A, Step Generator 400 generates step signals on output channels including wheel control output 51, arm control output 52, Z-axis control output 53, and extrusion control output 54. Although outputs 51, 52, 53, and 54 are shown as single outputs for ease of illustration, in one embodiment, each output in fact represents two pins for signaling two pieces of information contained in a step signal: Step and Direction. The “Step” bit signals that the motor should take a step and the “Direction” bit signals whether the step is in the forward or reverse direction.

[0083] Output 51 is connected to send wheel-channel step signals (Step, Direction, Enable) to wheel servo motor 113. Output 52 is connected to send arm-channel step signals to arm servomotor 108. The term “servo motor” is used broadly herein to refer to any motor that provides feedback. A regular AC or DC motor used in conjunction with a feedback mechanism such as an encoder is an example of a “servo motor” as that phrase is used herein. Alternative embodiments may use stepper motors in lieu of servo motors. Output 53 is connected to send Z-axis step signals to Z-axis stepper driver 423 which, in turn, is connected to drive Z-axis stepper motor 109 based on 2-phase commutation. Output 54 is connected to send extrusion step signals to extrusion stepper driver 424 which, in turn, is connected to drive extrusion stepper motor 117 based on 2-phase commutation. In some embodiments, Machine Controller 304 may communicate motion control information with stepper drivers and servo motors using a protocol other than step and direction, including established communication protocols such as USB, I2C, SPI, Ethernet, etc.

[0084] In general, for a given channel, step generator 400 generates step signals based on the channel state, specifically, in this example, wheel channel state 401, arm channel state 402, Z- axis channel state 403, and extruder channel state 404. Although step generator 400 is shown as a single block for ease of illustration, a separate step generator operation is executed for each channel. As shown, a channel state 410 is defined by stored values including Current Step Position 411, Target Step Position 412, Current Step Position (Conversion Component) 413, Max Step Velocity 414, and Time Since Last Step 415. In one embodiment illustrated herein, each of these values, with the exception of Conversion Component 413, are used in logic executed by step generator 400 to determine whether to send a step signal and to determine the direction of that step signal. An example of such logic is further illustrated and described in the context of FIG. 6.

[0085] FIG. 4B illustrates additional details of an architecture of machine controller 304.Specifically, as shown, each machine controller input (41-48) communicates with a pin change interrupt input module 421. Logic executed by each pin interrupt input module 421 executes logic further described in the context of FIG. 5 to determine whether to increment, decrement, or leave unchanged the target step position value in one of the channel states 401-406.

[0086] As previously described in the context of FIG. 4A, step generator 400 acts based on information in wheel channel state 401, arm channel state 402, Z channel state 403, and extrusion channel state 404. However, step generator 400 does not act directly on information in X channel state 405 and Y channel state 406. Rather, information from those channel states is converted to step increments native to system 1000’s signaling by cartesian-to-polar converter 430 and those converted components are then used to update a target position values in a corresponding wheel, arm, Z, or extrusion channel (401-404). Therefore, processing of input at received through X channel input 42 and Y channel input 44 follows a different processing path than input received through the other inputs (41, 43, 46, 45, 48, and 47).

[0087] In the case of input received by machine controller 304 from a cartesian-based external controller that interprets G-code and outputs step signals (such as external controller 305 shown in FIG. 3), some of the input signal streams might be compatible such that they can be processed directly by the same channel circuitry that processes input native to system 1000. For example, channel state signaling for system 1000’s Z-step channel and extrusion channel uses steps that already assume motion steps along cartesian axes. Therefore, pin interrupts 421 for those channels can operate directly on channel state information in Z-channel state 403 and extrusion channel state 404 whether the input stream is native or from an external cartesian controller. Note that, although FIG. 4B (and other figures) label the input streams for the two illustrated Z-channel inputs as “cartesian” (at input 46) and “polar” (at input 45), both inputsreceive cartesian compatible step signals (similarly so for the extrusion channel inputs 47 and 48). Hence the label “polar” in some cases is simply used in the drawings as a label to distinguish between natively generated input streams (e.g., input streams generated by one or more of modules 301A, 301B, or 303 shown in FIG. 3) and streams from an external, cartesianbased controller (e.g., module 305).

[0088] As shown, Z channel state 403 can be updated directly by PIN change interrupts from two different inputs, 45 (native) and 46 (external). Similarly, extrusion channel state 404 can be updated directly by PIN changes interrupts from both input 47 (native) and input 48 (external). However, because system 1000’ s wheel channel and arm channel use steps corresponding to polar values, wheel channel state 401 and arm channel state 402 only receive input directly from the pin change interrupts 421 associated with native input streams 41 and 43, respectively.

[0089] Cartesian-polar converter 430 receives polar-compatible current step positions from wheel channel state 401 and arm channel state 402 and receives cartesian-compatible target step positions from X channel state 405 and Y channel state 406. These values are used to convert the cartesian-based step signals received from external controller 305 into step signals that are compatible with the polar-based step values corresponding to wheel arm channel state 401 and arm channel state 402. Cartesian-polar converter 430 then uses the converted values to update target position values for wheel channel state 401 and arm channel state 402. Relevant example processing logic alternatives for implementing converter 430’s processing are illustrated and described in the context of FIGs. 7A, 7B, 12, and 13. In one aspect, as illustrated in FIGs. 7A and 7B, one or more “conversion components” are computed and stored in channel states by a processing flow that allows the conversions to be performed while still supporting the mixing of parallel input streams.

[0090] FIG. 4C illustrates additional details of an architecture of machine controller 304. Specifically, FIG. 4C illustrates user interface loop 443, wheel mode control block 441, and homing routine block 442 in communication with channel states 401, 402, 403, 404 and with various external controls. User interface loop 443 provides control interface to manage various settings and modes of system 1000. Wheel mode control implements control logic for switching between wheel mode and printing mode. An example process flow for such logic is illustrated in further detail in FIG. 8.

[0091] Homing routine 442 is executed by control system 3000 so that each motion axis can be established relative to the fixed structure of the machine. Knowing the position of each axis relative to fixed points on the machine structure is important for two reasons: Often-times motion axes have a limited range of travel, and the controller may wish to establish software limits on this travel relative to the machine structure. Also, if a mechanism is non-linear, such as the system’s polar positioning mechanism, then the absolute position of each axis relative to the machine structure can have a direct bearing on the control kinematics of accurately moving to a target position.

[0092] The presently illustrated embodiments of system 1000 utilize positioning control systems in which the absolute position of the axes are not preserved between power cycles, and in any event may become invalid should the axes move when the controller is off (e.g. by being pushed manually), or should for example a stepper motor skip steps. Consequently, the homing process is performed by the system controller on power-up, and in alternative embodiments may also be performed if a motor skip is detected.

[0093] In alternative embodiments of system 1000, the axis positions of the machine may be instrumented in such as to obviate the need for homing. For example, an absolute encoder (suchas one using a magnetic code disc or strip) may enable the position of an axis to be determined without first establishing a “home” position at each power-on event.

[0094] The presently illustrated embodiment of system 1000 has two axes which require homing: the arm and the Z axis. The arm requires homing both to establish limits of travel, and because the absolute radial position of the extruder nozzle is necessary for performing cartesian- to-polar conversions. The Z axis requires homing to establish its safe travel limits. The scanner’s lift mechanism is outfitted with the capability to do homing, to establish safe travel limits and also enable it to automatically position itself precisely at the top surface of the wheel before the start of a scan.

[0095] In the presently illustrated embodiment of system 1000, homing is performed by moving each relevant axis in a predetermined direction until a portion of the moving stage makes contact with a mechanical limit switch (presently a basic lever switch with a simulated roller). At this point, the axis position has been established relative to the fixed position of the limit switch’s electrical contact point. Subsequently, the axis may be moved to a “home position.” For example, once the arm travels to make contact with its limit switch and establish its absolute position, it may then automatically move back to the center of the wheel.

[0096] In one example, a generalized automated homing routine may proceed in the following steps:(1) Check whether the homing limit switch is already registering IN CONTACT. Note, this can result if the axes of the machine have been manually moved during power-off.(2) If IN CONTACT, move the axis in the direction away from the limit switch until the limit switch registers NO CONTACT. It may be desirable to limit this “back-off’ motion to a plausible distance, because otherwise a failed or disconnected limit switch may never register NO CONTACT, and the axis may hit a mechanical limit in thedirection of back-off. It may also be desirable to back off slightly further than the transition point between IN CONTACT and NO CONTACT, so that the axis must move a small amount to bring the switch back to the IN CONTACT state.(3) If / once the limit switch is in the NO CONTACT state, the stage begins to move in the direction of the limit switch. This direction is known and independent of the position of the stage.(4) The motion of the stage is stopped once the limit switch registers IN CONTACT.(5) At this point, the control system sets the internal position register of that axis to the known absolute position of the limit switch.(6) The control system may then move the axis to a “home position” such as the center of the wheel.

[0097] The direction of homing against the limit switch may be thoughtfully chosen to minimize the chances of unexpected collisions. For example, the Z axis homes in the upwards direction, because typically there is meaningfully unlimited clearance above the machine, whereas if the axis were to home downwards, the extruder might hit the bed of the machine or a workpiece sitting on the wheel head. The direction may also be chosen to bring the axis away from the user rather than towards the user while homing.

[0098] The order in which axes are homed may be chosen in a thoughtful manner, for example in order to minimize the chances of collision by positively locating one axis to a known position before homing the next.

[0099] A homing routine for one axis may also involve other axes. For example, before homing the arm, the Z axis first lifts a distance greater than the distance between the top surface of the wheel and the top of the splash pan. This is to ensure that when the arm homes, the nozzle of the extruder will not collide with the splash pan as the arm swings laterally.

[0100] Limit switches may be installed in both directions of motion of an axis. This is to allow the machine to detect when it is at the limits of travel on both directions, without relying on the assumed position state of the axis. This is useful if for example a motor skips steps.

[0101] An additional homing step may be added after STEP 4, in which the axis backs off the switch and then makes contact again (or multiple times). This can be used to average the contact position of the switch for greater accuracy, or to enable faster homing by performing gross homing motion at one speed, and then homing against the switch a much shorter distance during the second pass but at a slower speed to improve accuracy (accuracy is limited both by variation in the contact position of the switch, and also the speed at which the control system is able to react to switch contact).

[0102] The machine may require positive affirmation to initialize the homing routine, and / or provide the user with a warning that homing is about to commence, and / or provide the user with feedback during the homing process, and / or provide the user with a clear means of interrupting the homing process.

[0103] Besides limit switches, homing may be accomplished by moving against hard stops and detecting changes in motor current, phase angle error, or other means to detect contact with the hard stop.

[0104] The limit switches may be oriented in such a manner that if for some reason they are not detected, the switch mechanism does not act as a hard stop. For example, a limit switch with a lever roller may be oriented with the lever approximately parallel with the direction of motion of the axis, so that the axis sweeps into the bump of the roller, which causes the lever to deflect into the switch element. In this configuration, the axis is free to move past the limit switch.

[0105] FIG. 5 illustrates a processing flow 5000 carried about by channel input interface 31 ofmotion modules illustrated in FIG. 3 A and by the PIN interrupt processes 421 of the machine controller as 304 shown in FIG. 4B. The flow determines whether to update and, if applicable, updates a channel’s target step position. As shown, the illustrated processing begins each time a low-to-high transition occurs at the relevant step input pin. As already noted, a step signal includes both a “step” bit and a “direction” bit. Assuming the relevant input is enabled, then, upon detecting an incoming pulse at the step input pin, a channel step position for the relevant channel state is incremented if the direction signal is high and decremented if the direction signal is low. In some embodiments of the disclosure, the quiescent state of either or both the step and direction inputs may be inverted. In some embodiments of the disclosure, a low-to-high transition on the step input pin may automatically start a hardware-based timer and not trigger an interrupt, and a subsequent high-to-low transition may stop the timer and trigger an interrupt. In such embodiments, the direction bit may be read on this high-to-low transition. In some embodiments of the disclosure, the duration of the step signal pulse on the step pin may encode information regarding which step position register to increment or decrement.

[0106] Process 5000 begins with signals received at a step input pin 501 and a direction input pin 509. When 502 detects a relevant signal transition at step input pin 501 (for example, a rising edge of a digital signal pulse), the flow proceeds to 503 to check if input is enabled. If the input is not enabled, the process terminates at 504 without further action. This ensures that signals received on disabled channels do not affect the system operation, providing a mechanism for selective control activation and deactivation. When a channel is not enabled, the target step position remains unchanged, effectively ignoring any input signals received on that channel's step input pin.

[0107] If the input is enabled, the process continues to 505 and evaluates the state of a signalat direction input pin 509. When the direction input pin signal indicates a forward direction(e.g., if the signal is high), 506 increments the target step. Conversely, when the direction input pin signal indicates a reverse direction (e.g., if signal low), 507 decrements the target step position. The channel target step position 508 is thereby updated. This flow illustrates how digital step and direction signals are processed to modify the target position value for a specific channel.

[0108] In some embodiments, the input enabled state may be dynamically adjusted based on system conditions or user interactions. For example, during a homing sequence, certain input channels may be temporarily disabled to prevent conflicting motion commands. Similarly, during a recorded playback operation, manual input channels might be selectively disabled to prevent unintended interference with the recorded motion sequence.

[0109] FIG. 6 illustrate a processing flow 6000 carried about by one or more module step generators 33 illustrated in FIGs. 3A-3B, and / or machine controller step generator 400 illustrated in FIGs. 4A-4C, consistent with an embodiment of the present disclosure. The illustrated step generator processing compares the current step position and target step position corresponding to the relevant channel state. It also compares the current max step velocity set for that channel with the time since the last step was generated. If taking a step would not result in exceeding the max step velocity, and if the current step position and the target step position are not equal, then a step pulse is sent on the output step pin. If the target position is greater than the current step position, then the direction output pin is set high, indicating a forward step direction, and the current step position value for the channel state is incremented. If the target step position is less than the current step position, then the direction output pin is cleared (brought low), indicating a reverse step direction, and the current step position value for thechannel state is decremented. In some embodiments, the current and target step position values may be integer numbers. In other embodiments consistent with the present disclosure, the current and target step position values may be fractional numbers; in such embodiments, a threshold may be established for the absolute difference between the current and target positions that when exceeded results in a step pulse being sent on the output step pin (e.g. an absolute difference of 1.0).

[0110] Step generator processing 6000 begins with timer interrupt 601 that triggers the start of the process at 602. The process then iterates through each non-virtual channel. For each channel, step 604 checks whether the channel is enabled. When a channel is not enabled, the process terminates for that channel at end point 605.

[0111] For an enabled channel, 606 increments and continues incrementing the value of time since last step 607. At 613, the process computes the difference “delta” between target step position 612 and current step position 614. Step 615 determines if delta equals zero. If yes, then processing ends for the relevant channel at end point 605. If no, then 611 determines whether it is okay to signal a step based on the results of 609. At 609, the process determines that it is okay to step if time since last step 607 is greater than 1 / maximum step velocity 608. If the process determines that it is not okay to step, then processing ends for that channel at end point 605.

[0112] If the process determines that it is okay to step, then 610 resets the time since last step by setting the value to time since last step 607 to zero. At this point, the process has determined that a step signal will be sent (because it is okay to step and delta is not equal to zero), but has not yet determined the step direction. At 625, the process determines if delta is greater than zero. If yes (i .e., delta is greater than zero), then 616 increments current step position 614 and618 sets or maintains the output direction pin 621 at a value indicating a forward direction (e.g., high value). If no (i.e., delta is less than zero), then 617 decrements current step position 614 and 619 clears output direction pin 621 so that the signal state at the pin indicates a reverse direction (e.g., a low value). At 620, the process pulses output step pin 622, indicating a step will be taken in the direction signaled by the signal state at output direction pin 621.

[0113] In some embodiments, the maximum step velocity parameter 608 represents a system- defined constraint that may be adjusted based on operational requirements. This parameter may be expressed in steps per second or similar units, and its reciprocal establishes the minimum time that must elapse between consecutive steps to prevent exceeding the velocity limit. In some embodiments, the maximum step velocity may be dynamically calculated based on the mechanical characteristics of the specific actuator being controlled, or may be manually configured through user settings to accommodate different motion profiles. In some embodiments, the maximum step velocity parameter 608 may be dynamically adjusted based on the operational mode of the system. For example, in a pottery throwing mode, the wheel channel may have a higher maximum step velocity than in pottery printing mode.

[0114] Additionally, in some embodiments, the step generator may support microstepping or fractional step increments, allowing for smoother motion and higher precision positioning.

[0115] In some embodiments, the step and direction pin output operations may include additional timing delays to ensure compatibility with various motor driver specifications. For instance, a minimum direction setup time may be enforced between setting or clearing output direction pin 621 and outputting a step pulse at output step pin 622 to ensure the motor driver correctly registers the direction before receiving the step pulse.

[0116] The system may also implement more sophisticated motion control algorithms inalternative embodiments. For example, the position update logic may incorporate acceleration and deceleration profiles, with the delta value used to determine not just whether to step but also how quickly steps should be generated. In such implementations, the system may dynamically adjust the maximum step velocity parameter 608 based on the magnitude of delta, the current velocity, and predefined acceleration limits.

[0117] FIGs. 7A-7B illustrate alternative process flows (alternative to each other) that can be carried by alternative embodiments in a machine controller such a machine controller 304 depicted in FIG. 3A. The flows illustrate alternative processing methods for converting cartesian-based step signals to polar-based step signals consistent with the native control signals of the control system illustrated in FIG. 3A.

[0118] Both process flows (in FIG. 7A and in 7B) operate at a high level as follows: Target step information from the X and Y channels is converted to target X and Y values in millimeters. That is then converted to polar values R, 9. Current “conversion component” step positions in the wheel channel and the arm channel are converted to polar values R, 0. Those values are then used to determine delta angles for both the wheel motor and the arm motor, and those delta angles are converted back to steps for each motor. The difference is that, in FIG. 7 A, an approximate R value, RA, is used for the current position polar coordinate R. In 7B, an exact value R is used. See FIG. 12 for both approximate and precise variations on converting the current positions from steps to polar coordinates.

[0119] FIG. 7A illustrates a processing flow 700A executed by the machine controller to convert cartesian-based step signals to polar-based step signals consistent with the native control signals of the system. The flow begins with a timer interrupt 701 that initiates the conversion process at 702. At 703, the target X position is calculated based on the X channel target stepposition 712 using conversion factor 711 for converting steps to a distance which, in this example, is expressed in millimeters. At 705, the target Y position is calculated based on the Y channel target step position 713 using conversion factor 710 for converting steps to a distance which, in this example, is expressed in millimeters.

[0120] The system then calculates a target position expressed in polar coordinates from these cartesian position values. At 704, the target polar angle 9p is calculated using the atan2 function with the cartesian target X and Y values as the arguments. At 717, the target polar radius R is calculated as (X2+ T2).

[0121] The system determines current positions in polar space by, at 706, calculating the current wheel angle 0w from the wheel channel current conversion component step position 714 using the wheel motor steps-to-angle conversion factor 709 and calculating the current approximate radius RA 707 from the arm channel current conversion component step position 715 using the arm motor steps to RA conversion factor 708.

[0122] At 716, the system calculates the shortest angular distance to reach the target polar angle 0p. At 719, the system determines the target angle by adding this shortest angular distance to the current angle. At 720, the system determines the delta angle necessary to reach the target angle by subtracting the current angle from the target angle. At 723, this delta angle (from 720) is converted to wheel motor steps using wheel motor angle-to-steps conversion factor 725.

[0123] At 718, the system calculates the delta radius (target minus current) needed to reach the target radius. At 721, the delta radius is converted to a delta arm angle using the relationship RA / L = 4)R. See FIGs. 12-13 for illustration of the elements of this formula. At 722, the delta arm angle is converted to arm motor steps using conversion factor 724.

[0124] At 732, the process adds steps to the wheel channel target step position 731 based onthe result of 723, which determined the wheel motor steps needed to reach the target angle. At 727, the process adds steps to the arm channel target step position 726 based on the result of 722, which determined the arm motor steps needed to reach the target radius.

[0125] At 730 and 729, the process add steps to the respective current conversion component step positions 714 and 715 for, respectively, the wheel channel and the arm channel.Conversion component step positions 714 and 715 are registers associated with the wheel and arm channels, respectively, that, for the benefit of the conversion process, are used to maintain a second positional state of these channels independently of the current step position 614 in Figure 6. It may be beneficial to store the positional state used for coordinate transforms separately from the overall positional state of the actuator because it allows other signals to contribute to the actuator state without affecting the conversion process. For example, it may be beneficial for a user to add to the radial position of the arm without affecting the conversion process. For example, the current step position 614 of a channel controlling the arm may start at a value of zero, and may be incremented by an input signal from a user control (e.g. a hand lever), such that its value becomes 10, in a process similar to that shown in Figure 5.Meanwhile, the X channel target position 712 and the Y channel target position 713 may remain at an initial value of zero. If the conversion process directly used the current step position of the arm channel (e.g. 614 of the arm channel), a difference between the current arm position and the calculated target positions would drive the arm back to a position of zero. Whereas if the current conversion component of the arm’s current step position is stored separately, the conversion process can occur independently of additional input signals intended to act directly on, for example, the arm channel.

[0126] The above processing flow 700A is one example of a processing flow that enables themachine controller to effectively translate cartesian coordinates to the polar coordinates needed by the system's native control mechanism.

[0127] FIG. 7B illustrates a processing flow 700B executed by the machine controller to convert cartesian-based step signals to polar-based step signals consistent with the native control signals of the system. The flow begins with a timer interrupt 731 that initiates the conversion process at 732. At 737, the target X position is calculated based on the X channel target step position 733 using conversion factor 735 for converting steps to a distance which, in this example, is expressed in millimeters. At 738, the target Y position is calculated based on the Y channel target step position 734 using conversion factor 736 for converting steps to a distance which, in this example, is expressed in millimeters.

[0128] The system then calculates a target position expressed in polar coordinates from these cartesian position values. At 739, the target polar angle 0p is calculated using the atan2 function with the target cartesian X and Y values as the arguments. At 742, the target polar radius R is calculated as / (X2+ K2). At 743, the system calculates the target arm angle as4>R = 2*sin-1(R / 2L). See FIG. 12 for illustration of the elements of this formula. At 740, the system calculates the target wheel angle 0w as Op + si n’1(R / 2L) .

[0129] The system determines current positions in polar space by, at 748, calculating the current wheel angle 0w from the wheel channel current conversion component step position 760 using the wheel motor steps-to-angle conversion factor 758, and, at 762, calculating the current arm angle 4>R from the arm channel current conversion component step position 761 using the arm motor steps-to-c|)R conversion factor 759.

[0130] At 741, the system calculates the shortest angular distance to reach the target polar angle 0p. At 745, the system determines the target angle by adding this shortest angular distanceto the current angle. At 746, the system determines the delta angle necessary to reach the target angle by subtracting the current angle from the target angle. At 747, this delta angle (from 746) is converted to wheel motor steps using wheel motor angle-to-steps conversion factor 751.

[0131] At 744, the system calculates the delta arm angle (target minus current) needed to reach the target arm angle. At 749, the delta arm angle is converted to arm motor steps using arm motor angle-to-steps conversion factor 750.

[0132] At 754, the process adds steps to the wheel channel target step position 755 based on the result of 747, which determined the wheel motor steps needed to reach the target angle. At 753, the process adds steps to the arm channel target step position 752 based on the result of 749, which determined the arm motor steps needed to reach the target arm angle.

[0133] At 756 and 757, the process add steps to the respective current conversion component step positions 760 and 761 for, respectively, the wheel channel and the arm channel. These conversion component step positions have the name nature and purpose as described in the context of 714 and 715 of FIG. 7A.

[0134] The above processing flow 700B is one example of a processing flow that enables the machine controller to effectively translate cartesian coordinates to the polar coordinates needed by the system's native control mechanism.

[0135] The approaches described above in the context of FIG. 7A and 7B can be adapted for other coordinate transformations to facilitate motion signals generated by different systems being converted to be compatible with a common coordinate system.

[0136] FIG. 8 illustrates a processing flow carried out to initiate either a wheel (“throwing”) mode or a print mode in embodiments of the present disclosure. In wheel mode, the arm is swung to move the nozzle away from a working area over the wheel head and it is also raisedalong the Z axis so that it is sufficiently clear of the splash pan. This allows the potter to use the system more in the manner of a typical pottery wheel. Conversely, when print mode is initialized, the arm is positioned initially so that the nozzle is over the center of the wheel head. Also, different maximum velocities are set for wheel mode (typically higher maximum velocity) versus print mode (typically lower maximum velocity).

[0137] At 802, the process checks for a state change of wheel mode toggle switch signal 801 (which can be changed, for example, by user interaction with throwing / printing select switch 11 illustrated in FIG. 3A). At 803, the system determines, based on the state of wheel mode toggle switch signal 801, whether the switch has moved from wheel mode to select print mode or whether the switch has moved from print mode to select wheel mode.

[0138] When print mode is selected, the process proceeds to 804 and disables all input streams. At 805, the arm holding the extruder is moved over the center of the wheel for print preparation. This is accomplished by updating the arm channel target step position 811.

[0139] At 806, the maximum wheel speed is set to the maximum revolutions per minute (RPM) for printing mode. This is accomplished by updating the wheel channel max step velocity setting 812. A max speed expressed in RPMs would be converted to wheel motor steps per unit time in order to update setting 812. After executing 805 and 806, the system, at 809, enables all input streams.

[0140] When wheel mode is selected, the process proceeds to 803 and disables all input streams. At 819, the arm is lifted along the Z-axis to ensure that the nozzle is sufficiently above the splash pan. This is accomplished by updated the Z-axis channel target step position 810. At 820, the arm holding the extruder is swung out a specified distance to radially clear the work area. This is accomplished by updating the arm channel target step position 811.

[0141] At 821, the maximum wheel speed is set to the maximum revolutions per minute (RPM) for printing mode. This is accomplished by updating the wheel channel max step velocity setting 812. If a max speed were initially expressed in RPMs, it would be converted to wheel motor steps per unit time in order to update setting 812. After executing 819, 820, and 821, the system, at 822, enables the wheel input stream.

[0142] FIG. 9 illustrates a processing flow 900 to implement operations of the physical UI module of FIG. 3A in either a wheel mode or a print mode in embodiments of the present disclosure in response to input from peripherals 90.

[0143] Processing 900 begins with timer interrupt 901 that triggers the start of the process at 902, which implements a synthesis update. A synthesis update is a series of calculations that occurs at a regular, known timing interval, such as might be established by a timer interrupt. These calculations have the purpose of synthesizing motion signals, for example updating a target position such that it changes at a specified velocity. At 903, the process checks the UI state, which is determined and initialized based on the state of wheel mode toggle switch 95. At 904, the processing determines whether the wheel mode or the print mode is activated. The initialization steps for both wheel mode and print mode are illustrated and described in the context of FIG. 8 and are not repeated here. The processing illustrated in FIG. 9 assumes that whichever mode is active has already been initialized including setting the relevant velocity limit for the select mode and positioning the nozzle consistent with the selected mode as described in the context of FIG. 8.

[0144] If the wheel mode is active, then 905 sets the wheel step velocity as a function of the position of pedal 91 and the wheel maximum step velocity. In one example, the maximum wheel step velocity is set such that the wheel rotates at a maximum of 250 RPM in wheel mode.Based on the current wheel velocity, 906 then adds steps at the relevant rate to the wheel channel target position 915.

[0145] If the print mode is active, then 913 sets the wheel step velocity as a function of the position of pedal 91 position and the wheel maximum step velocity. In one example, the wheel maximum step velocity is set such that the wheel rotates at a maximum of 50 RPM in print mode. Based on the set current wheel velocity, 914 then adds steps at the relevant rate to the wheel channel target step position 91 .

[0146] At 916, the system sets the extruder rate (in this context, the rate at which the extruder piston moves to extrude material, such as clay, from the extruder nozzle onto the wheel head) based on the position of extruder knob 93 multiplied by the maximum extruder rate. Based on the current extruder rate, 918 then adds steps at the relevant rate to the extruder channel target step position 918.

[0147] At 919, the system sets the desired Z-axis position based on the position of Z-step knob 92 multiplied by the Z-step increment. Based on the desired Z-axis position, 918 then adds steps the Z-channel target position 921.

[0148] At 922, the system read an input stream from lever 94, and, based on that, 923 adds steps to arm channel target position 924.

[0149] FIG. 10 illustrates a processing flow 10000 to implement operations of the pot-assist module of FIGs. 3A-3B in embodiments of the present disclosure as previously described. FIG. 10 also illustrates peripherals 1010 including coil knob 1011, bead knob 1012, and angle slider 1013.

[0150] Processing 10000 begins with timer interrupt 1001 that triggers the start of the process at 1002, which implements a synthesis update (previously described in the context of FIG. 9).

[0151] At the triggering of the synthesis update 1002, the system, at 1014, determines if the wheel has been previously started and then stopped. If the wheel has not been previously started and then stopped, the system, 1003 sets (or maintains) base mode. If the wheel has been previously started and then stopped, the system, at 1004, sets or maintains base mode off.

[0152] As previously described in the context of FIGs. 3A-3B, angle slider 1013 is used in conjunction with coil knob 1011 to control the relationship between arm and wheel velocity which allows the system to assist in 3D printing portions of a pottery piece whose radius changes with height (e.g., a pot becoming wider or narrower over a vertical span).

[0153] At 1025, the system maps the position of the angle slider to an angle between (or equal to) -90 degrees and +90 degrees. This mapped angle is then used at 1026 and 1027, respectively, to calculate the sine and cosine of the angle. These trigonometric functions produce the angle radial component 1028 and angle z component 1029, respectively.

[0154] Input 1005 updates the wheel channel target step position 1008 at a rate consistent with the current wheel step velocity (which may be a function of the pedal position and the maximum wheel velocity). At 1006, the arm velocity is calculated as a function of the coil knob value, the angle radial component 1028, and the current wheel velocity. At 1007, the system adds steps to arm channel target position 1009 at a rate consistent with the arm velocity determined at 1006.

[0155] At 1021, the system calculates the extrusion velocity (the rate of movement of the actuator that pushes material out of the extruder) as a function of the bead knob, and arm position, and wheel velocity. At 1022, the system adds steps to extrusion channel target position 1023 consistent with the extrusion velocity determined at step 1021.

[0156] At 1024, if base mode is on, then processing proceeds to 1030 and nothing further isdone. If base mode is not on, then, at 1031, the Z-axis velocity is calculated as a function of wheel velocity, the angle Z component 1029, and the coil knob. At 1032, the system adds steps to Z channel target position 1033 at a rate consistent with the Z-axis velocity determined at 1031.

[0157] The relationship between wheel velocity and arm movements may be configured to create various spiral patterns with different pitches and orientations, allowing for diverse pottery forms to be produced through the pot-assist module operation. This allows for the creation of pottery forms with distinctive profile curves rather than simple conical shapes. The system may also implement different scaling factors for the angle components based on user preferences stored in the machine's memory. These scaling factors may adjust how sensitively the angle slider's position affects the resulting angle components, allowing experienced users to make fine adjustments to the printing angles while providing more gradual control for beginners.

[0158] In alternative embodiments, the angle slider may be ignored, and instead the arm position is controlled manually by an input stream generated by a hand lever (94 in Figure 9). In such embodiments, the synthesis of the extruder signal may continue as shown, as a function of bead knob, arm position, and wheel velocity; the synthesis of the z axis velocity may be a function of the wheel velocity and the coil knob

[0159] FIGs. 11A and 1 IB illustrate processing to implement operations of the recorder module of FIG. 3A in embodiments of the present disclosure as previously described.

[0160] FIG. 11 A illustrates processing 1100A to establish the recorder state based on user control input. If a user indicates via manipulating control inputs a “start record” selection at 1101, then 1102 sets the state to recording and 1103 starts the recorder timer. If a user indicates via manipulating control inputs a “stop record” selection at 1104 or a “stop playback” selectionat 1107, then 1105 sets the state to idle and 1106 stops the recorder timer. If a user indicates via manipulating control inputs a “start playback” selection at 1108, then 1109 sets the state to playback and 1110 starts the recorder timer.

[0161] FIG. 1 IB illustrates processing 1111 during recorder operation. Processing starts with a record time interrupt 1112. If 1113 determines the recorder state is idle, checks continue until it is not idle. At 1114, if not idle, it is determined whether the state is playback or record. If record, processing proceeds to 1115 and all inputs to all channels are passed through. At 1116, the system encodes samples from all current channel positions (wheel, Arm, Z-axis, and extrusion actuator) and 1117 stores the samples on, for example, an SD card (or other electronic storage. If the state is playback, the processing proceeds to 1118 which passes through all inputs to channels. At 1119, next samples stored on the SD card are decoded in sequence and at 1120, as samples are decoded, the system increments or decrements each target step position (wheel channel target position 1121, arm channel target position 1122, extrusion channel target position 1123, and Z channel target position 1124) based on decoded sample values.

[0162] FIG. 12 illustrates using angular values corresponding to the wheel and swing arm of the embodiment of FIGs. 1A-1B to obtain an expression of the current position of the extruder, held at the end of the swing arm, relative to the wheel in polar coordinates. Alternative methods are shown for obtain the “R” value in polar coordinates. One is for obtaining an approximate polar R value “RA” corresponding to length of the arc portion marked “RA”. This is the value computed and used as the polar R value in the processing illustrated in FIG. 7A. The other is for obtaining a precise R value “R”, the length of the hypotenuse marked R in FIG. 12. This is the polar R value computed and used in the processing illustrated in FIG. 7B.

[0163] FIG. 13 illustrates translating a position expressed using polar coordinates to anexpression of the position in cartesian coordinates. This is used for the processing of both alternatives shown in FIGs. 7A-7B.

[0164] FIGs. 14A-14D illustrate operation of a scanner, referenced herein as a “Craft Aligned Scanner” or “CAS,” such as the scanner illustrated in FIG. 2. In some embodiments, the CAS extends the interaction modes available on the craft-aligned the digital pottery wheel (DPW), (e.g., system 1000 of FIG. 1) to include being able to first throw a pot 141 on wheel 140 using standard wheel-throwing techniques, and then to easily, and without necessarily interacting with computer software, capture that shape in a digital toolpath representation 142 that can be directly printed and manipulated on the DPW in printing mode. The illustrations and text below are presented in the context of scanning a pot. But the underlying principles are applicable to scanning other objects in the context of other craft or manufacturing applications. Thus, references to “pot” below are applicable to other objects as well.

[0165] The current embodiment consists of a wheel 150 driven by a DC servo motor 153 thru pulleys 152-2, 151 and a timing belt 154. It is anticipated that the CAS mechanical hardware is integrated into the DPW - for example, mounted to the right of the DPW behind the wheel midline, and these elements are shared with the existing DPW hardware. A user first throws a pot 141 on the wheel using standard wheel throwing techniques, and may optionally modify it using manual techniques. Alternatively, the user can place an existing form on the wheel, perhaps a pre-existing finished pot, or an interesting form like a soda bottle, etc. For the purposes of this description, we will refer to both thrown and found objects as “pots.” Proximal to the wheel is a laser distance sensor 145, e.g. Keyence IL-300, whose ranging laser beam 143 may intersect the wheel’s rotational axis and may be parallel to the plane of the wheel’s surface, and that measures the radius 185 of the pot 141 at the height of the sensor. This particular sensoroperates by measuring the position of the reflected beam 144 on an internal CCD sensor, using triangulation to estimate distance. However, additional sensing modalities are anticipated. The sensor is mounted on a stem 146 to a vertically-oriented linear stage 148, that in this embodiment is driven by a motor 149 thru a lead screw 147. This linear stage allows the sensor to raise and lower under digital control, on an axis that is parallel to the axis of rotation of the wheel. In alternative embodiments, the sensor may be attached to and move with an end effector such as, for example, an extruder mechanism as extruder 102 shown in FIG. 1 A, thereby eliminating the requirement for a separate linear actuator and, in some implementations, eliminating the need for the object to be rotated in order to be scanned. Of course, in other contexts, the sensor may be attached another type of end effector. In other embodiments, the sensor may be attached to an independent rotational stage, which may allow it to move around the object being scanned while remaining oriented towards the object.

[0166] The first step of scanning operation is for the user to position the laser sensor vertically to the starting point of the scan 168 using user controls (not separately shown). Alternatively, the machine could be configured to default to a starting point that is just above the top surface 170 of the wheel 150. The red beam of the laser sensor, that is incident on the object to be scanned, provides visual feedback as to the starting point. The user then initiates a scan. At this point, the CAS control system has digital control of the rotational position of the wheel, as well as the vertical position of the laser sensor. The wheel then begins to spin, while the laser sensor is constantly providing the CAS control system with pot radius readings. Simultaneously, the laser sensor is slowly lifting on the linear motion stage 148 such that with each full revolution, it may have lifted a fixed pitch distance 169. The rotational velocity of the wheel may be continuously determined so as to keep the path velocity constant. For example, as the radius ofthe pot (1) increases with height, the laser sensor conveys its radius to the CAS, which adjusts the rotational velocity of the wheel to maintain a constant tangential scanning velocity at the surface of the pot. Scanning may end when the user hits a stop button, or may return a wheel pedal to its neutral “off’ position. Alternatively, scanning may end when the laser registers a distance reading corresponding to a negative radius, which may be inferred to indicate that the laser height is exceeding that of the pot and is overshooting past the lip of the pot. During the recording process, the CAS control system may be storing the rotational wheel position, the measured radius of the pot, and the height of the laser sensor to a memory, at a frequency of perhaps 100kHz or other frequencies. This becomes the digitally recorded scan of the pot, and may represent the toolpath that the axes of a system such as the DPW must follow in order to reproduce the pot. Recording data may be stored in absolute or relative coordinates, or in a format that is compatible with the DPW recorder module.

[0167] Referring to FIG. 14C, if a pot (e.g. pot 173) has a sharp change 175 in radius, the wheel may slow to a stop for a given period of time, corresponding to the time needed to traverse the sudden change in radius at the constant path velocity. The memory recording may not record the sudden change in radius, but rather a constant change in radial position from the start to the end of the discontinuity, occurring at the constant path velocity. The purpose of this is so that the recording is always a valid toolpath that, e.g., the DPW could follow. Additionally, having sensed the discontinuity, the CAS may pause the recording to avoid capturing overshoot of the wheel position that may occur before a determination to stop has been realized in the mechanical hardware.

[0168] Additionally, when the recording is started, it may be the case that the pot has a nonzero radius. The CAS may be instructed by the user to synthesize a radial move from the centerof the wheel to the radius of the pot at a controlled rate, before the wheel begins to spin and additional surface radius readings are taken. Alternatively, the recorded data may start at the radius of the pot directly. Or the recording data may be stored in a mixed format, where the first reading is stored in an absolute way and the subsequent readings are relative to that first reading.

[0169] Referring to FIG. 4D, if a pot e.g. 177 is not centered relative to the rotational axis 162 of the wheel, it is possible for the CAS to optionally virtually center the pot for the purposes of the recording, by perhaps measuring its variation in radius along one full revolution of the wheel and using these measurements as rotationally-dependent radial compensation factors for subsequent measurements. Other centering algorithms may be used.

[0170] FIG. 15 illustrates use of an object scan produced by the scanner embodiment of FIGs. 14A-14D with a 3D printer as well as related computer design systems. Once a pot has been recorded, or “sampled”, the recording may be used as a component of several workflows. A first workflow generates motion signal streams (e.g., streams of step and direction signals for actuators in the system) from the recording 154, and plays these into the DPW control system 160, which then controls the mechanical hardware of the DPW 161. This may involve playing back the recording verbatim into the output motion streams of the CAS, and may necessitate that the CAS synthesizes the extruder motion stream based on internal settings and / or the scanning path velocity. During playback, the user is free to use affordances of the DPW to adjust the diameter of the pot or to adjust the z position of the extruder, the rotational velocity of the wheel, and the extrusion rate. Additionally, the playback may not occur verbatim with how it was recorded, but may be scaled internal to the CAS in any dimension including spiral pitch, scale, rate of printing, etc. Because the recording contains time-series data of the entire print process, it is possible to resample this data along these axes of modification.

[0171] A display may additionally be mounted in a convenient location. Proximal to this display may additionally be a rotary control knob, which may be a rotary encoder with an integrated momentary push button, that can enable a user to scroll thru setting screens on the display and to modify their values or states by using the pushbutton to toggle between modes of input. These settings may include parameters such as the scanning spiral pitch 169 (see FIG. 14A), the path velocity to be held constant during recording, whether or not to automatically center the scan of the pot when recorded, the stop condition of the recording, the extrusion rate to be synthesized during playback, as well as any additional modifications to be made to the recording during playback such as spiral pitch, scale, rate of printing, etc. Pressing on the DPW foot pedal may also be mapped to one or more of these settings, allowing dynamic adjustment for example of the scanning or playback surface speed.

[0172] An alternative workflow involves transmitting the entire recording as a digital file 155 to a second computer, where the original toolpath 142 may be de-spiralized into a series of 2D paths defined by points on a series of evenly or unevenly spaced planes 156. This de-spiralizing algorithm may include an inverse-distance-weighted average of the proximity of the two nearest angularly-parameterized point to each plane. This de-spiralizing algorithm may include a simple projection of points onto a plane that is nearest, nearest below, or nearest above each point.This de-spiralized toolpath may then be used as the input to direct toolpath manipulation and editing software such as CoilCAM 171. See CoilCAM: Enabling Parametric Design for Clay 3D Printing, doi.org / 10.1145 / 3544548.3580745, Bourgault et al., 2023. This paper is hereby incorporated by reference in its entirety. Coilcam may enable the user to manipulate this de- spiralized toolpath in many ways (example shown in 157). This de-spiralized toolpath may then be spiralized 158 in accordance with toolpath settings established for the DPW (e.g. spiralprinting pitch), and converted into g-code 159. This g-code may then be transmitted to a g-code interpreter 179, which by executing the g-code generates step and direction signals for all four axes of the DPW (wheel, arm, z axis, and extruder), which may then be input into the DPW control system either as cartesian or polar motion streams. Worth noting is that CoilCam may also be modified to operate directly on spiralized toolpaths. During playback of this digitally modified toolpath, the DPW controls may be used as normal to enable further real-time modification as discussed in the paper.

[0173] Note that, the reason for spiralized toolpaths is that the DPW operates by spinning the wheel while continuously raising the z axis (although the rate may vary). This requires a spiral rather than layered toolpath. However, CoilCAM is presently architected to work with layered toolpath representations until a final spiralizing step.

[0174] Although the embodiments of the present system have been described in the context of a digital pottery wheel, various principles of the disclosure can be implemented in other contexts. For example, any control system utilizing the teachings of this disclosure to implement more flexible and sophisticated mixing of various motion streams for 3D printing, digitally controlled fabrication tools generally, or other motion control is within the spirit and scope of this disclosure. Moreover, the scanning system disclosed can by used in other contexts. For example, it is potentially well-suited for scanning the exterior contours of any object with curved surfaces and the resulting scans can be used in a variety of ways comparable to those described above on non-pottery objects.

[0175] In general, principles of the disclosure have general motion control applications for any form of digitally-controlled fabrication, including but not limited to laser cutting, ComputerNumeric Control (CNC) machining, turning, plasma cutting, and polymer 3D printing.. Theframework can be used to enable the mixing of real-time input with machine motion, whether synthesized or pre-planned, for both existing and novel CNC machines. Potential sample applications include using the system to replace a G-code controller in a CNC lathe to support a record-playback for subtractive turning of cylindrical parts, akin to that described herein for a digital pottery wheel; modifying a consumer 3D printer to enable on-board customization of geometric parameters for a series of prints by an end-user without the requirement of a desktop CAD workflow; or as a prototyping platform for engineering new user interfaces and motioncontrol paradigms for novel CNC machines.

[0176] The scanner disclosed herein also has general applications beyond clay 3D printing and pottery. When paired with the modular motion machine control system disclosed herein, it can enable the 3D scanning and 3D printing of any object without the requirement for desktop processing of the scan data and conversion into G-code toolpaths. This workflow is beneficial for reducing the labor and expertise required for applying scanning to 3D printing, as users do not require expertise in CAD modeling and 3D printing slicing software. Furthermore, the disclosed scanner has applications in settings where real-time monitoring and adjusting of digital fabrication behavior are necessary. One such area that is closely related to clay 3D printing is 3D construction printing. Often, when 3D printing with cementitious materials on an architectural scale, environmental conditions substantially impact printing behavior and geometry, and printed forms risk structural collapse if toolpaths are not adjusted to compensate. In some embodiments, the scanning system can provide a method for real-time monitoring and adjustment of construction scale printing behavior.

[0177] FIG. 16 Shows an example of a computer system 16000, one or more of which may be used to implement one or more of the apparatuses, systems, and methods illustrated herein.

[0178] Notably, those skilled in the art will appreciate that control logic described herein can, in various embodiments, be implemented by application-specific hardware (e.g., ASICs), by configurable hardware (e.g., FPGAs), and / or by general or special purpose processors executing firmware and or software stored in a computer readable medium.

[0179] Computer system 16000 executes instruction code contained in a computer program product 1660. Computer program product 1660 comprises executable code in an electronically readable medium that may instruct one or more computers such as computer system 16000 to perform processing that accomplishes the exemplary method steps performed.

[0180] The electronically readable medium may be any transitory or non-transitory medium that stores information electronically and may be accessed locally or remotely, for example via a network connection. The medium may include a plurality of geographically dispersed media each configured to store different parts of the executable code at different locations and / or at different times. The executable instruction code in an electronically readable medium directs the illustrated computer system 16000 to carry out various exemplary tasks described herein. The executable code for directing the carrying out of tasks described herein would be typically realized in software. However, it will be appreciated by those skilled in the art, that computers or other electronic devices might utilize code realized in hardware to perform many or all the identified tasks. Those skilled in the art will understand that many variations on executable code may be found that implement exemplary methods within the spirit and the scope of the disclosure.

[0181] The code or a copy of the code contained in computer program product 1660 may reside in one or more storage persistent media (not separately shown) communicatively coupled to system 16000 for loading and storage in persistent storage device 1670 and / or memory 1610for execution by processor 1620. Computer system 1600 also includes I / O subsystem 1630 and peripheral devices 1640. I / O subsystem 1630, peripheral devices 1640, processor 1620, memory 1610, and persistent storage device 1670 are coupled via bus 1650. Like persistent storage device 1670 and any other persistent storage that might contain computer program product 1660, memory 1610 is a non-transitory media (even if implemented as a typical volatile computer memory device). Moreover, those skilled in the art will appreciate that in addition to storing computer program product 1660 for carrying out processing described herein, memory 1610 and / or persistent storage device 1670 may be configured to store the various data elements referenced and illustrated herein.

[0182] Those skilled in the art will appreciate computer system 16000 illustrates just one example of a system in which a computer program product in accordance with the disclosure may be implemented. To cite but one example, execution of instructions contained in a computer program product may be distributed over multiple computers, such as, for example, over the computers of a distributed computing network.

[0183] Instructions for implementing an artificial neural network or other deep learning network may reside in computer program product 1660. When processor 1620 is executing the instructions of computer program product 1660, the instructions, or a portion thereof, are typically loaded into working memory 1610 from which the instructions are readily accessed by processor 1620.

[0184] Processor 1620 may comprise multiple processors which may comprise respective additional working memories (additional processors and memories not individually illustrated) including one or more graphics processing units (GPUs) comprising at least thousands of arithmetic logic units supporting parallel computations on a large scale. GPUs are often utilizedin deep learning applications because they can perform the relevant processing tasks more efficiently than typical general-purpose processors (CPUs). Processor 1620 may additionally or alternatively comprise one or more specialized processing units comprising systolic arrays and / or other hardware arrangements that support efficient parallel processing. Such specialized hardware may work in conjunction with a CPU and / or GPU to carry out the various processing described herein. Such specialized hardware may comprise application specific integrated circuits and the like (which may refer to a portion of an integrated circuit that is applicationspecific), field programmable gate arrays and the like, or combinations thereof. However, a processor such as processor 1620 may be implemented as one or more general purpose processors (preferably having multiple cores) without necessarily departing from the spirit and scope of the present disclosure.

[0185] While the present disclosure has been particularly described with respect to the illustrated embodiments, it will be appreciated that various alterations, modifications, and adaptations may be made based on the disclosure and are intended to be within the scope of the disclosure. While the disclosure has been described in connection with what are presently considered to be the most practical and preferred embodiments, it is to be understood that the present disclosure is not limited to the disclosed embodiments but, on the contrary, is intended to cover various modifications and equivalent arrangements included within the scope of the underlying principles of the invention as described by the various embodiments referenced above and below.

Claims

CLAIMS1. An apparatus comprising: a pottery wheel; an extruder having an extruder nozzle coupled to one or more extruder nozzle motion actuators that are configured to move the extruder nozzle relative to a wheel head of the pottery wheel, the extruder further being coupled to an extrusion actuator configured to move a material through the extruder so that the material is extruded through the extruder nozzle; and a machine controller configured to receive a signal stream including an extruder nozzle motion signal, the machine controller being coupled to the one or more extruder nozzle motion actuators to control a position of the extruder nozzle relative to the wheel head based on the extruder nozzle motion signal.

2. The apparatus of claim 1 wherein the extrusion actuator comprises a piston.

3. The apparatus of claim 1 wherein the extrusion actuator comprises a pneumatic actuator.

4. The apparatus of claim 1 wherein the extrusion actuator comprises one of an auger and a peristaltic pump.

5. The apparatus of claim 1 wherein the signal stream comprises a signal stream generated by computer numeric control (CNC) motion interpreter based on a pre-stored CNC instruction file.

6. The apparatus of claim 5 wherein the CNC motion interpreter is a G-code interpreter and the pre-stored CNC instruction file is a G-code file.

7. The apparatus of any of claims 1-6 further comprising:a physical user interface module configured to generate at least a portion of the signal stream in response to user manipulation of one or more control inputs coupled to the physical user interface module.

8. The apparatus of claim 7. wherein the signal stream is generated using both signals generated from a pre-stored computer numeric control (CNC) instruction file and signals received from the physical user interface module.

9. The apparatus of any of claims 1-8 wherein: the signal stream includes a wheel motion signal that is generated by the physical user interface module in response to user manipulation of one or more control inputs coupled to the user interface circuity; and the machine controller is coupled to a wheel actuator to control at least one of an angular position and an angular velocity of the wheel head based on the wheel motion signal.

10. The apparatus of any of claims 1-9 wherein the user interface module comprises logic realized in circuitry communicatively coupled to receive signals from the one or more control inputs.

11. The apparatus of any of claims 1-10 wherein the user interface module comprises logic realized in computer-executable instructions stored in a non-transitory computer readable medium.

12. The apparatus of any of claims 1-11 wherein: the signal stream includes an extrusion signal; and the machine controller is coupled to the extrusion actuator to control pressing of the material through the extruder based on the extrusion signal.

13. The apparatus of claim 12 wherein the extrusion signal is generated at least in part in response to user manipulation of a control input.

14. The apparatus of claim 4 wherein the extrusion signal is generated at least in part from a pre-stored CNC code file.

15. The apparatus of any of claims 1-14 wherein the one or more extruder nozzle motion actuators comprise: a first extruder nozzle motion actuator configured to move the extruder nozzle along a first path substantially parallel to a surface of the wheel head; and a second extruder nozzle motion actuator configured to move the extruder nozzle along a second path to raise or lower the extruder nozzle relative to the surface of the wheel head; wherein the extruder motion signal comprises a first extruder motion signal corresponding to motion along the first path and a second extruder motion signal corresponding to motion along the second path.

16. The apparatus of claim 15 wherein the first path is arc-shaped and the first extruder motion actuator is configured to cause angular motion along an angular motion axis.

17. The apparatus of claim 16 wherein the second path is linear and the second extruder motion actuator is configured to cause linear motion along a linear motion axis.

18. The apparatus of claim 17 wherein the linear motion axis intersects the angular motion axis.

19. The apparatus of claim 18 wherein the linear motion axis is oriented radially relative to a center of the wheel head.

20. The apparatus of claim 15 wherein:the first path comprises a first sub-path and a second sub-path; and the first extruder motion actuator comprises a first sub-actuator and a second subactuator.

21. The apparatus of claim 20 wherein: the first sub-path is linear, the second sub-path is linear, and the first and second subpaths are differently oriented; and the first sub-actuator is configured to cause linear motion on the first linear sub-path and the second sub-actuator is configured to cause linear motion on the second sub-path.

22. The apparatus of claim 21 wherein the first sub-path and the second sub-paths are oriented perpendicularly to each other.

23. The apparatus of claim 22 wherein: the two or more sub-paths comprise a circular sub-path and a radial sub-path and; the two or more sub-actuators comprise a first sub-actuator configured to cause angular motion on the circular sub-path and a second sub-actuator configured to cause radial motion on the radial sub-path.

24. The apparatus of any of claims 20-22 wherein the first extruder nozzle motion signal comprises a first sub-signal and a second sub-signal and further wherein the physical user interface module generates the first sub-signal and the second sub-signal in response to user manipulation of one or more control inputs.

25. The apparatus of any of claims 15-24 wherein the first extruder nozzle motion signal is generated by the physical user interface module in response to user manipulation of a first control input and wherein the second extruder motion signal is generated by the physical userinterface module in response to user manipulation of a second control input.

26. The apparatus of any of claims 15-25 wherein the first extruder nozzle motion actuator comprises a servo motor.

27. The apparatus of any of claims 15-26 wherein the second extruder nozzle motion actuator comprises a stepper motor.

28. The apparatus of any of claims 15-27 wherein the wheel actuator comprises a servo motor.

29. The apparatus of any of claims 1-28 wherein the extrusion actuator comprises a stepper motor.

30. The apparatus of any of claims 1-29 wherein the machine controller is configured to operate in one or more operational modes comprising: a first operational mode in which the machine controller controls the one or more extruder nozzle motion actuators in response to receiving first operational mode signals of the signal stream from the physical user interface module; a second operational mode in which the machine controller controls the one or more extruder nozzle motion actuators in response to receiving second operational mode signals of the signal stream corresponding to previously-stored signals resulting from any one or any combination of more than one of: prior user manipulation of the one or more control inputs, automatic generation from G-code (or other CNC code) execution, and automatic generation from processing an object scan; and a third operational mode in which the machine controller controls the one or more extruder nozzle motion actuators based on a combination of the first operational mode signalsand the second operational mode signals.

31. The apparatus of claim 30 wherein: in the first operational mode, the machine controller controls the extrusion actuator in response to receiving the signal stream from the physical user interface module; and in the second operational mode, the machine controller controls the extrusion actuator in response to receiving the motion signal stream from the recorder, wherein the signal stream corresponds to previously-stored motion signals resulting from prior user manipulation of the one or more control inputs; and in the third operational mode, the machine controller controls the extrusion actuator based on a combination of first operational mode signals and second operational mode signals.

32. The apparatus of any of claims 1-31 wherein the machine controller is configured to operate in one or more operational modes comprising: a first operational mode in which the machine controller controls one or more actuators in response to receiving first operational mode signals of the signal stream from the physical user interface module; a second operational mode in which the machine controller controls one or more actuators in response to receiving second operational mode signals of the signal stream corresponding to previously-stored signals resulting from any one or any combination of more than one of: prior user manipulation of the one or more control inputs, automatic generation from G-code (or other CNC code) execution, and automatic generation from processing an object scan; and a third operational mode in which the machine controller controls one or more actuatorsbased on a combination of the first operational mode signals and the second operational mode signals.

33. The apparatus of claims 30-31 wherein: in the first operational mode, the machine controller controls the wheel actuator in response to receiving the signal stream from the physical user interface module; in the second operational mode, the machine controller controls the wheel actuator in response to receiving the motion signal stream from the recorder, wherein the signal stream corresponds to previously-stored motion signals resulting from prior user manipulation of the one or more control inputs.

34. The apparatus of any of claims 1-33 wherein the signal stream is a first signal stream and wherein the machine controller comprises: a first set of channel inputs coupled to receive the signal stream from the physical interface module or from a recorder; a second set of channel inputs coupled to receive a second signal stream from a cartesian-based controller, the cartesian-based controller generating the second signal stream based on a computer-generated CNC instruction file.

35. The apparatus of claim 34 wherein the computer-generated CNC instruction file file is a G-code file.

36. The apparatus of any of claims claim 34-35 wherein at least some of the first set of channel inputs receive input corresponding to at least one of angular position and angular velocity values.

37. The apparatus of any of claims 34-36 wherein the machine controller is configured toselect between controlling one or more actuators of the apparatus based on either the first signal stream or the second signal stream.

38. The apparatus of any of claims 34-36 wherein the machine controller is configured to select between controlling one or more actuators of the apparatus based on either the first signal stream, the second signal stream or, a combination of both signal streams.

39. The apparatus of any of claims 34-38 wherein the machine controller further comprises a cartesian-to-polar converter configured to convert at least some signals in the second signal stream corresponding to cartesian values to signals corresponding to polar values.

40. The apparatus of any of claims 34-39 wherein the machine controller further comprises a polar-to-cartesian converter configured to convert at least some signals in the first signal stream corresponding to polar values to signals corresponding to cartesian values.

41. The apparatus of claim 40 wherein the polar-to-cartesian converter is configured to convert the at least some signals at a rate corresponding to one of: a rate at which the at least some signals are received and a predetermined rate.

42. The apparatus of claim 41 wherein the predetermined rate is in a range of 1-100 microseconds.

43. The apparatus of any of claims 1-42 being configured to implement either of a “throwing mode” in which the pottery wheel is operable and the extruder and nozzle are kept clear of an area above the pottery wheel and a “printing mode” in which the nozzle and extruder are active and present in an area above the pottery wheel.

44. A control system for controlling a machine, the control system comprising: a plurality of motion signal modules communicatively coupled together from a firstmotion signal module to a last motion signal module to transmit a plurality of motion signal streams, a motion signal module of the plurality of motion signal modules being configured to generate a motion signal stream of the plurality of motion signal streams, the motion signal stream corresponding to a motion axis along which an actuator controlled by the control system moves an end effector or a workpiece holder; and a machine controller configured to receive the plurality of motion signal streams from the last motion signal module, the machine controller being configured to control one or more actuators, each actuator of the one or more actuators being configured to cause relative movement between an end effector and a workpiece holder.

45. The control system of claim 44 wherein: the motion signal modules are configured to maintain channel state information for channels corresponding with motion axes and to generate output corresponding to the motion signal streams based on the channel state information wherein the channel state information comprises, for a given channel, current position information and target position information corresponding to a motion axis controlled by a motional signal stream corresponding to the given channel; and the motion signal modules are configured to generate the output based at least part on the current position information and the target position information.

46. The control system of claim 45 wherein: the channel state information further comprises a maximum step velocity and a time since last step; and the motion signal modules are configured to generate the respective output motion signal streams such that the maximum step velocity is not exceeded.

47. The control system of any of claims 44-46 wherein a motion signal module of the plurality of motion signal modules is configured to generate output motion signal streams based on signals received from another motion signal module of the plurality of motion signal modules and based on module-specific input signals.

48. The control system of claim 47 wherein the module-specific input signals comprise signals generated in response to user manipulation of one or more control input of the machine.

49. The control system of any of claims 47-48 wherein the module-specific input signals comprise stored signals received from persistent electronic storage communicatively coupled to the motion signal module.

50. The control system of claim 49 wherein the stored signals comprise motion signals previously generated from one or more of: prior user manipulation of one or more control inputs of the machine, automatic generation from execution of CNC instructions, and automatic generation from processing an object scan.

51. The control system of claim 50 wherein the CNC instructions comprise G-code.

52. The control system of any of claims 44-51 wherein the machine controller is configured to receive externally generated motion signals from an electronic device external to the control system.

53. The control system of claim 52 wherein the machine controller is configured to select between the externally generated motion signals and the motion signal streams received from the last motion control module for use in controlling the one or more actuators.

54. The control system of claim 52 wherein the machine controller is configured to control at least some of the one or more actuators based on a combination of externally generated motion signals and one or more motion signal streams generated by one or more of the motionsignal modules.

55. The control system of claim 54 wherein: the electronic device external to the control system generates the externally generated motion signals based on a first coordinate system; and the machine controller is configured to convert at least some of the externally generated motion signals to motion signals based on a second coordinate system that is native to the control system.

56. The control system of claim 55 wherein the first coordinate system is a cartesian coordinate system and the second coordinate system is a polar coordinate system.

57. The control system of any of claims 44-56 wherein at least one of the plurality of motion control modules is configured to generate a respective motion signal stream for one respective channel based at least in part on channel state information for one or more other respective channels.

58. The control system of any of claims 44-57 wherein the workpiece holder comprises one of a fixture and a platform.

59. The control system of any of claims 44-58 wherein at least one of the one or more actuators is coupled to cause movement of the workpiece holder.

60. The control system of any of claims 44-59 wherein at least one of the one or more actuators is coupled to cause movement of an end effector.

61. The control system of any of claims 44-60 wherein one or more of the motion signal modules comprise logic realized in circuitry communicatively coupled to receive signals from the one or more control inputs.

62. The control system of any of claims 44-61 wherein one or more of the motion signal modules comprise logic realized in computer-executable instructions stored in a non-transitory computer readable medium.

63. A scanning system for scanning an object, the scanning system comprising: a sensor configured to sense an object to be scanned; one or more actuators configured to cause relative movement between the sensor and the object such that, during an object scan, a field of view (FOV) of the sensor traverses the object along at least one motion axis; a controller configured to, during a scan of the object, control the one or more actuators to move the sensor relative to the object along a scanning path having a shape that substantially corresponds to a shape of one or more toolpaths usable by a machine to reproduce the object; and a processor coupled to a memory and configured to use sensor data received from the sensor to generate and store in the memory scanning data comprising object surface location data and order data that are usable to generate one or more motion signal streams executable by a machine control system to cause one or more end effectors of a machine, or attached to the machine, to traverse the one or more toolpaths.

64. The scanning system of claim 63 wherein; the order data corresponds to an order in which the surface location data is captured; and the order in which the surface location data is captured substantially corresponds to one of a forward and a reverse direction to be followed by the one or more end effectors when the machine control system executes the one or motion signal streams to cause the one or more endeffectors to traverse the one or more toolpaths.

65. The scanning system of any of claims 63-64 wherein the order data comprises respective times stamps associated with respective surface location data.

66. The scanning system of any of claims 63-65 wherein the surface location data comprises a radial distance from a location on a surface of the object to a reference line orthogonal to a platform surface configured to support the object and a vertical distance above the platform surface.

67. The scanning system of claim 66 wherein: the platform surface comprises a wheel head and the reference line extends from a center of the wheel head; the sensor data comprises a distance from the sensor to a location on a surface of the object; and the processor is configured to convert the sensor data to the radial distance based on a calibration of the scanning system relative to the reference line.

68. The scanning system of any of claims 63-67 wherein the at least one motion axis comprises a linear motion axis and an angular motion axis.

69. The scanning system of any of claim 68 wherein: the one or more actuators comprise a first motor coupled to a wheel head to rotate the wheel head on the angular motion axis during the scan of the object, the wheel head providing a platform to support the object during the scan of the object; the one or more actuators comprise a second motor coupled to a structure to which the sensor is attached for moving the sensor on the linear motion axis.

70. The scanning system of claim 69 wherein when the first motor and the second motor are arranged to, when activated, cause relative motion between the sensor and the object when the object is placed on the wheel head.

71. The scanning system of any of claims 63-70 wherein the scanning path is a spiral path.

72. The scanning system of any of claims 69-71 wherein the system is configured to record an angular position on the angular motion axis based on data corresponding to the first motor and to record a linear position on the linear motion axis based on data corresponding to the second motor.

73. The scanning system of claim 72 wherein the linear position is a vertical position and the linear motion axis is a vertical axis.

74. A method comprising steps carrying out any motion actuation and / or processing recited in any of claims 1-43.

75. A method comprising steps carrying out any motion actuation and / or processing recited in any of claims 44-62.

76. A method comprising steps carrying out any motion actuation and / or processing recited in any of claims 63-73.

Citation Information

Patent Citations

  • Three-Dimensional Printing System Using Dual Rotation Axes

    US20130189435A1

  • System and method for operating an additive manufacturing system for continual production of three-dimensional objects without operator intervention

    US20200086560A1

  • Additive manufacturing in gel-supported environment

    US20210178702A1

  • Methods and Systems For 3D Printing With A 3D Printing Platform Including Printing Tool Coupling Components

    US20210347120A1

  • Additive manufacturing of engineered cementitious composites

    US20230256649A1