US20190107821A9 - Cloud controlled laser fabrication - Google Patents
Cloud controlled laser fabrication Download PDFInfo
- Publication number
- US20190107821A9 US20190107821A9 US15/334,120 US201615334120A US2019107821A9 US 20190107821 A9 US20190107821 A9 US 20190107821A9 US 201615334120 A US201615334120 A US 201615334120A US 2019107821 A9 US2019107821 A9 US 2019107821A9
- Authority
- US
- United States
- Prior art keywords
- execution plan
- numerically controlled
- controlled machine
- computer
- computer numerically
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004519 manufacturing process Methods 0.000 title description 16
- 230000033001 locomotion Effects 0.000 claims abstract description 246
- 239000000463 material Substances 0.000 claims abstract description 211
- 230000000694 effects Effects 0.000 claims abstract description 25
- 230000008859 change Effects 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims description 61
- 230000003287 optical effect Effects 0.000 claims description 21
- 230000009471 action Effects 0.000 claims description 17
- 239000002826 coolant Substances 0.000 claims description 7
- 230000002547 anomalous effect Effects 0.000 claims 6
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 23
- 238000005520 cutting process Methods 0.000 description 22
- 238000003754 machining Methods 0.000 description 22
- 238000012545 processing Methods 0.000 description 13
- 238000013459 approach Methods 0.000 description 12
- 230000004888 barrier function Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 238000004458 analytical method Methods 0.000 description 10
- 239000000047 product Substances 0.000 description 10
- 230000015654 memory Effects 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 239000010410 layer Substances 0.000 description 7
- 238000013439 planning Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000000875 corresponding effect Effects 0.000 description 6
- 238000005286 illumination Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000005670 electromagnetic radiation Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000001816 cooling Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 230000006378 damage Effects 0.000 description 4
- 238000003384 imaging method Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 238000003801 milling Methods 0.000 description 4
- 238000007639 printing Methods 0.000 description 4
- 239000000779 smoke Substances 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 239000006227 byproduct Substances 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 239000012467 final product Substances 0.000 description 3
- 238000001746 injection moulding Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 239000007788 liquid Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 239000004033 plastic Substances 0.000 description 3
- 239000011241 protective layer Substances 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000009897 systematic effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000003708 edge detection Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 238000010191 image analysis Methods 0.000 description 2
- 238000003698 laser cutting Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000005855 radiation Effects 0.000 description 2
- 238000002310 reflectometry Methods 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000008093 supporting effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 239000002023 wood Substances 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- NIXOWILDQLNWCW-UHFFFAOYSA-N acrylic acid group Chemical group C(C=C)(=O)O NIXOWILDQLNWCW-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004061 bleaching Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000002485 combustion reaction Methods 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000000356 contaminant Substances 0.000 description 1
- 230000036461 convulsion Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000008021 deposition Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005562 fading Methods 0.000 description 1
- 230000005251 gamma ray Effects 0.000 description 1
- 230000004313 glare Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000003760 hair shine Effects 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000314 lubricant Substances 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 239000000843 powder Substances 0.000 description 1
- 239000002994 raw material Substances 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 238000005057 refrigeration Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 230000009291 secondary effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 239000007921 spray Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000009423 ventilation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000001429 visible spectrum Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K26/00—Working by laser beam, e.g. welding, cutting or boring
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K10/00—Welding or cutting by means of a plasma
- B23K10/006—Control circuits therefor
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K26/00—Working by laser beam, e.g. welding, cutting or boring
- B23K26/02—Positioning or observing the workpiece, e.g. with respect to the point of impact; Aligning, aiming or focusing the laser beam
- B23K26/03—Observing, e.g. monitoring, the workpiece
- B23K26/032—Observing, e.g. monitoring, the workpiece using optical means
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K26/00—Working by laser beam, e.g. welding, cutting or boring
- B23K26/08—Devices involving relative movement between laser beam and workpiece
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K26/00—Working by laser beam, e.g. welding, cutting or boring
- B23K26/08—Devices involving relative movement between laser beam and workpiece
- B23K26/082—Scanning systems, i.e. devices involving movement of the laser beam relative to the laser head
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K26/00—Working by laser beam, e.g. welding, cutting or boring
- B23K26/08—Devices involving relative movement between laser beam and workpiece
- B23K26/083—Devices involving movement of the workpiece in at least one axial direction
- B23K26/0853—Devices involving movement of the workpiece in at least in two axial directions, e.g. in a plane
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K26/00—Working by laser beam, e.g. welding, cutting or boring
- B23K26/08—Devices involving relative movement between laser beam and workpiece
- B23K26/0869—Devices involving movement of the laser head in at least one axial direction
- B23K26/0876—Devices involving movement of the laser head in at least one axial direction in at least two axial directions
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K26/00—Working by laser beam, e.g. welding, cutting or boring
- B23K26/36—Removing material
- B23K26/38—Removing material by boring or cutting
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K26/00—Working by laser beam, e.g. welding, cutting or boring
- B23K26/70—Auxiliary operations or equipment
- B23K26/702—Auxiliary equipment
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K37/00—Auxiliary devices or processes, not specially adapted to a procedure covered by only one of the preceding main groups
- B23K37/02—Carriages for supporting the welding or cutting element
- B23K37/0211—Carriages for supporting the welding or cutting element travelling on a guide member, e.g. rail, track
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K37/00—Auxiliary devices or processes, not specially adapted to a procedure covered by only one of the preceding main groups
- B23K37/02—Carriages for supporting the welding or cutting element
- B23K37/0211—Carriages for supporting the welding or cutting element travelling on a guide member, e.g. rail, track
- B23K37/0235—Carriages for supporting the welding or cutting element travelling on a guide member, e.g. rail, track the guide member forming part of a portal
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23K—SOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
- B23K37/00—Auxiliary devices or processes, not specially adapted to a procedure covered by only one of the preceding main groups
- B23K37/04—Auxiliary devices or processes, not specially adapted to a procedure covered by only one of the preceding main groups for holding or positioning work
- B23K37/0408—Auxiliary devices or processes, not specially adapted to a procedure covered by only one of the preceding main groups for holding or positioning work for planar work
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23Q—DETAILS, COMPONENTS, OR ACCESSORIES FOR MACHINE TOOLS, e.g. ARRANGEMENTS FOR COPYING OR CONTROLLING; MACHINE TOOLS IN GENERAL CHARACTERISED BY THE CONSTRUCTION OF PARTICULAR DETAILS OR COMPONENTS; COMBINATIONS OR ASSOCIATIONS OF METAL-WORKING MACHINES, NOT DIRECTED TO A PARTICULAR RESULT
- B23Q17/00—Arrangements for observing, indicating or measuring on machine tools
- B23Q17/22—Arrangements for observing, indicating or measuring on machine tools for indicating or measuring existing or desired position of tool or work
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/18—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/18—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
- G05B19/402—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by control arrangements for positioning, e.g. centring a tool relative to a hole in the workpiece, additional detection means to correct position
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/18—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
- G05B19/406—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by monitoring or safety
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B27—WORKING OR PRESERVING WOOD OR SIMILAR MATERIAL; NAILING OR STAPLING MACHINES IN GENERAL
- B27M—WORKING OF WOOD NOT PROVIDED FOR IN SUBCLASSES B27B - B27L; MANUFACTURE OF SPECIFIC WOODEN ARTICLES
- B27M1/00—Working of wood not provided for in subclasses B27B - B27L, e.g. by stretching
- B27M1/08—Working of wood not provided for in subclasses B27B - B27L, e.g. by stretching by multi-step processes
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B29—WORKING OF PLASTICS; WORKING OF SUBSTANCES IN A PLASTIC STATE IN GENERAL
- B29C—SHAPING OR JOINING OF PLASTICS; SHAPING OF MATERIAL IN A PLASTIC STATE, NOT OTHERWISE PROVIDED FOR; AFTER-TREATMENT OF THE SHAPED PRODUCTS, e.g. REPAIRING
- B29C64/00—Additive manufacturing, i.e. manufacturing of three-dimensional [3D] objects by additive deposition, additive agglomeration or additive layering, e.g. by 3D printing, stereolithography or selective laser sintering
- B29C64/30—Auxiliary operations or equipment
- B29C64/386—Data acquisition or data processing for additive manufacturing
- B29C64/393—Data acquisition or data processing for additive manufacturing for controlling or regulating additive manufacturing processes
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B33—ADDITIVE MANUFACTURING TECHNOLOGY
- B33Y—ADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
- B33Y50/00—Data acquisition or data processing for additive manufacturing
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/31—From computer integrated manufacturing till monitoring
- G05B2219/31186—TCP-IP internet protocol
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/32—Operator till task planning
- G05B2219/32001—Computer assisted machining, signals guide operator to manual machine object
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/36—Nc in input of data, input key till input tape
- G05B2219/36053—Adapt, modify program in real time as function of workpiece configuration
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/36—Nc in input of data, input key till input tape
- G05B2219/36199—Laser cutting
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/37—Measurements
- G05B2219/37359—Contour, to sense corners, edges of surface
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/37—Measurements
- G05B2219/37555—Camera detects orientation, position workpiece, points of workpiece
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/42—Servomotor, servo controller kind till VSS
- G05B2219/42307—Compare actual feedback with predicted, simulated value to detect run away
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/45—Nc applications
- G05B2219/45041—Laser cutting
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/45—Nc applications
- G05B2219/45212—Etching, engraving, sculpturing, carving
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P80/00—Climate change mitigation technologies for sector-wide applications
- Y02P80/40—Minimising material used in manufacturing processes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/80—Management or planning
Definitions
- the subject matter described herein relates to manufacturing processes implementing, or aided by, distributed processing of CNC machine data.
- Manufacturing systems such as “3-D” printers, laser cutters, CNC machines, and the like, can be used to create complicated items where traditional manufacturing techniques like moldings or manual assembly fail.
- Such automated methods receive instructions that specify the cuts, layers, patterns, etc. before a machine begins construction.
- the instructions can be in the form of computer files transferred to the memory of a computer controller for the machine and interpreted at run-time to provide a series of steps in the manufacturing process.
- a method includes receiving an execution plan segment of an execution plan created at a general purpose computer.
- the receiving occurs at a control unit of a computer numerically controlled machine, and the general purpose computer is not part of the computer numerically controlled machine (e.g. it is housed separately from the CNC machine).
- the execution plan segment defines operations for causing movement of a movable head of the computer numerically controlled machine to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine.
- the execution plan segment further includes a predefined safe pausing point from which a clean restart of the operations of the execution plan can be performed.
- the predefined safe pausing point is one from which the execution plan can be restarted while minimizing a difference in appearance of a finished work-product relative to if a pause and restart are not necessary.
- the method further includes commencing operations of the computer numerically controlled machine defined in the execution plan segment only after determining that the execution plan segment has been received up to and including the predefined safe pausing point by the computer numerically controlled machine.
- a method can include determining that the execution plan comprises a next execution plan segment to be executed after the execution plan segment, and pausing the operations at the predefined safe pausing point until the next execution plan segment is fully received.
- a method can include determining that the next execution plan segment is fully received, and restarting the operations of the execution plan from the predefined safe pausing point according to the next execution plan segment after the determining.
- the execution plan can include a motion plan defining movement of the movable head and control commands for operation of one or more other components of the computer numerically controlled machine.
- the one or more other components can include one or more of a laser, a power supply, a fan, a thermal control system, an air filter, a coolant, a coolant pump a light source, a lock, a camera mounted on the movable head, and a camera mounted inside the interior space but not on the movable head.
- a method can include receiving, at the computer numerically controlled machine, a forecast of variations in sensor data to be generated by one or more sensors of the computer numerically controlled machine during the operations of the execution plan segment, and comparing actual data from the one or more sensors with the forecast. The forecast can be based on expected electrical, optical, mechanical, and thermal results of the operations of the execution plan.
- a method in another interrelated aspect, includes a control unit of a computer numerically controlled machine receiving a part of an execution plan created at a general purpose computer that is housed separately from (e.g. not part of) the computer numerically controlled machine.
- the execution plan defines operations for causing movement of a movable head of the computer numerically controlled machine to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine.
- State data are recorded for a plurality of subsystems of the computer numerically controlled machine while performing operations of the computer numerically controlled machine defined in the execution plan. The operations are paused at a point of the execution plan upon determining that a next part of the execution plan to be completed has not been received.
- the operations of the execution plan are subsequently restarted from the point, and the restarting includes performing one or more actions to place the computer numerically controlled machine back into its state at the point based on the recorded state data before resuming with the next part of the execution plan after it has been received.
- a computer numerically controlled machine in another interrelated aspect, includes a network connection over which the numerically controlled machine receives data, a movable head configured to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine, and a controller configured to perform operations.
- the operations include receiving an execution plan comprising a motion plan via the network connection, and causing the movable head to execute actions defined in the motion plan.
- Other operations such as for example those discussed elsewhere herein, can optionally also be performed by the controller.
- the execution plan can include a motion plan defining a temporal element indicating times or time offsets at which each action necessary to create fabricated result should occur.
- the motion plan can be precomputed at a remote computer in communication with the network connection of the computer numerically controlled machine over a network that is at least one of lossy and having variable latency and/or having variable bandwidth.
- the network can be, for example, the Internet.
- a computer numerically controlled machine includes a movable head configured to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine, and
- control unit configured to perform operations that enable operation of the computer numerically controlled machine using an execution plan delivered to the computer numerically controlled machine over a lossy and/or variable latency and/or variable bandwidth network connection.
- Implementations of the current subject matter can include, but are not limited to, methods consistent with the descriptions provided herein as well as articles that comprise a tangibly embodied machine-readable medium operable to cause one or more machines (e.g., computers, etc.) to result in operations implementing one or more of the described features.
- machines e.g., computers, etc.
- computer systems are also described that may include one or more processors and one or more memories coupled to the one or more processors.
- a memory which can include a computer-readable storage medium, may include, encode, store, or the like one or more programs that cause one or more processors to perform one or more of the operations described herein.
- Computer implemented methods consistent with one or more implementations of the current subject matter can be implemented by one or more data processors residing in a single computing system or multiple computing systems.
- Such multiple computing systems can be connected and can exchange data and/or commands or other instructions or the like via one or more connections, including but not limited to a connection over a network (e.g. the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, or the like), via a direct connection between one or more of the multiple computing systems, etc.
- a network e.g. the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, or the like
- a direct connection between one or more of the multiple computing systems etc.
- FIG. 1 is an elevational view of a CNC machine with a camera positioned to capture an image of the entire material bed and another camera positioned to capture an image of a portion of the material bed, consistent with some implementations of the current subject matter;
- FIG. 2 is a top view of the implementation of the CNC machine shown in FIG. 1 ;
- FIG. 3A is a diagram illustrating one example of an SVG source file, consistent with some implementations of the current subject matter
- FIG. 3B is an example of a graphical representation of the cut path in the CNC machine, consistent with some implementations of the current subject matter
- FIG. 3C is a diagram illustrating the machine file corresponding to the cut path and the source file, consistent with some implementations of the current subject matter
- FIG. 4A is a diagram illustrating the addition of images, consistent with some implementations of the current subject matter
- FIG. 4B is a diagram illustrating the subtraction of images, consistent with some implementations of the current subject matter
- FIG. 4C is a diagram illustrating the differencing of images to isolate a simulated internal lighting effect, consistent with some implementations of the current subject matter
- FIG. 5 is a diagram illustrating a cloud-based system supporting operation of a
- FIG. 6 is a process flow chart illustrating generating a motion plan for a CNC machine on distributed computing systems, consistent with some implementations of the current subject matter
- FIG. 7 is a system diagram illustrating general purpose computer executing an execution plan to control a CNC machine, consistent with implementations of the current subject matter
- FIG. 8 is a diagram illustrating an example of determination of a safe pause point in a motion and/or execution plan for a CNC machine, consistent with some implementations of the current subject matter
- FIG. 9 is a process flow chart illustrating a method for determination of a safe pause point in a motion and/or execution plan for a CNC machine, consistent with implementations of the current subject matter
- FIG. 10 is a process flow chart illustrating generating a project preview on a distributed computing system, consistent with some implementations of the current subject matter
- FIG. 11 is a diagram illustrating a material overlay for previewing a project, consistent with some implementations of the current subject matter
- FIG. 12 is a diagram illustrating a collection of 2-D patterns previewed as a three dimensional object, consistent with some implementations of the current subject matter
- FIG. 13 is a diagram illustrating parametric modeling incorporated into a project preview, consistent with some implementations of the current subject matter
- FIG. 14 is a process flow chart a method for updating a motion plan based on sensor data, consistent with implementations of the current subject matter
- FIG. 15 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter.
- FIG. 16 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter.
- cutting can generally refer to altering the appearance, properties, and/or state of a material. Cutting can include, for example, making a through-cut, engraving, bleaching, curing, burning, etc. Engraving, when specifically referred to herein, indicates a process by which a CNC machine modifies the appearance of the material without fully penetrating it. For example, in the context of a laser cutter, it can mean removing some of the material from the surface, or discoloring the material e.g. through an application of focused electromagnetic radiation delivering electromagnetic energy as described below.
- laser includes any electromagnetic radiation or focused or coherent energy source that (in the context of being a cutting tool) uses photons to modify a substrate or cause some change or alteration upon a material impacted by the photons.
- Lasers can be of any desired wavelength, including for example, microwave, lasers, infrared lasers, visible lasers, UV lasers, X-ray lasers, gamma-ray lasers, or the like.
- “cameras” includes, for example, visible light cameras, black and white cameras, IR or UV sensitive cameras, individual brightness sensors such as photodiodes, sensitive photon detectors such as a photomultiplier tube or avalanche photodiodes, detectors of infrared radiation far from the visible spectrum such as microwaves, X-rays, or gamma rays, optically filtered detectors, spectrometers, and other detectors that can include sources providing electromagnetic radiation for illumination to assist with acquisition, for example, flashes, UV lighting, etc.
- individual brightness sensors such as photodiodes, sensitive photon detectors such as a photomultiplier tube or avalanche photodiodes, detectors of infrared radiation far from the visible spectrum such as microwaves, X-rays, or gamma rays, optically filtered detectors, spectrometers, and other detectors that can include sources providing electromagnetic radiation for illumination to assist with acquisition, for example, flashes, UV lighting, etc.
- real-time actions includes some degree of delay or latency, either programmed intentionally into the actions or as a result of the limitations of machine response and/or data transmission.
- Real-time” actions are intended to only approximate an instantaneous response, or a response performed as quickly as possible given the limits of the system, and do not imply any specific numeric or functional limitation to response times or the machine actions resulting therefrom.
- the term “material” is the material that is on the bed of the CNC machine.
- the CNC machine is a laser cutter, lathe, or milling machine
- the material is what is placed in the CNC machine to be cut, for example, the raw materials, stock, or the like.
- the CNC machine is a 3-D printer
- the material is either the current layer, or previously existent layers or substrate, of an object being crafted by the 3-D printing process.
- the CNC machine is a printer, then the material can be the paper onto which the CNC machine deposits ink.
- a computer numerical controlled (CNC) machine is a machine that is used to add or remove material under the control of a computer.
- heads can incorporate nozzles that spray or release polymers as in a typical 3D printer.
- the heads can include an ink source such as a cartridge or pen.
- material can be built up layer by layer until a fully realized 3D object has been created.
- the CNC machine can scan the surface of a material such as a solid, a liquid, or a powder, with a laser to harden or otherwise change the material properties of said material. New material may be deposited.
- the heads can incorporate tools such as blades on a lathe, drag knives, plasma cutters, water jets, bits for a milling machine, a laser for a laser cutter/engraver, etc.
- FIG. 1 is an elevational view of a CNC machine 100 with a camera positioned to capture an image of an entire material bed 150 and another camera positioned to capture an image of a portion of the material bed 150 , consistent with some implementations of the current subject matter.
- FIG. 2 is a top view of the implementation of the CNC machine 100 shown in FIG. 1 .
- the CNC machine 100 shown in FIG. 1 corresponds to one implementation of a laser cutter. While some features are described in the context of a laser cutter, this is by no means intended to be limiting. Many of the features described below can be implemented with other types of CNC machines.
- the CNC machine 100 can be, for example, a lathe, engraver, 3D-printer, milling machine, drill press, saw, etc.
- laser cutter/engravers share some common features with CNC machines, they have many differences and present particularly challenging design constraints.
- a laser cutter/engraver is subject to regulatory guidelines that restrict the egress of electromagnetic radiation from the unit when operating, making it challenging for light to enter or escape the unit safely, for example to view or record an image of the contents.
- the beam of a laser cutter/engraver must be routed from the emitter to the area to be machined, potentially requiring a series of optical elements such as lenses and mirrors.
- the beam of a laser cutter/engraver is easily misdirected, with a small angular deflection of any component relating to the beam path potentially resulting in the beam escaping the intended path, potentially with undesirable consequences.
- a laser beam may be capable of causing material destruction if uncontrolled.
- a laser cutter/engraver may require high voltage and/or radio frequency power supplies to drive the laser itself.
- Liquid cooling is common in laser cutter/engravers to cool the laser, requiring fluid flow considerations.
- Airflow is important in laser cutter/engraver designs, as air may become contaminated with byproducts of the laser's interaction with the material such as smoke, which may in turn damage portions of the machine for example fouling optical systems.
- the air exhausted from the machine may contain undesirable byproducts such as smoke that must be routed or filtered, and the machine may need to be designed to prevent such byproducts from escaping through an unintended opening, for example by sealing components that may be opened.
- the kerf the amount of material removed during the operation—is both small and variable depending on the material being processed, the power of the laser, the speed of the laser, and other factors, making it difficult to predict the final size of the object.
- the output of the laser cutter/engraver is very highly dependent on the speed of operation; a momentary slowing can destroy the workpiece by depositing too much laser energy.
- operating parameters such as tool rotational speed and volume of material removed are easy to continuously predict, measure, and calculate, while laser cutter/engravers are more sensitive to material and other conditions.
- fluids are used as coolant and lubricant; in laser cutter/engravers, the cutting mechanism does not require physical contact with the material being affected, and air or other gasses may be used to aid the cutting process in a different manner, by facilitating combustion or clearing debris, for example.
- the CNC machine 100 can have a housing surrounding an enclosure or interior area defined by the housing.
- the housing can include walls, a bottom, and one or more openings to allow access to the CNC machine 100 , etc.
- the CNC machine can also include an openable barrier as part of the housing to allow access between an exterior of the CNC machine and an interior space of the CNC machine.
- the openable barrier can include, for example, one or more doors, hatches, flaps, and the like that can actuate between an open position and a closed position.
- the openable barrier can attenuate the transmission of light between the interior space and the exterior when in a closed position.
- the openable barrier can be transparent to one or more wavelengths of light or be comprised of portions of varying light attenuation ability.
- One type of openable barrier can be a lid 130 that can be opened or closed to put material 140 on the material bed 150 on the bottom of the enclosure.
- an openable barrier can be a front door that is normally vertical when in the closed position and can open horizontally or vertically to allow additional access.
- the CNC machine 100 can execute actions to maintain the safety of the user and the system, for example, a controlled shutdown.
- the CNC machine 100 can be completely open (i.e. not having a lid 130 , or walls). Any of the features described herein can also be present in an open configuration, where applicable.
- the CNC machine 100 can have one or more movable heads that can be operated to alter the material 140 .
- the movable head can be the head 160 .
- the head 160 can include optical components, mirrors, cameras, and other electronic components used to perform the desired machining operations.
- the head 160 typically is a laser-cutting head, but can be a movable head of any type.
- the head 160 can be configured to include a combination of optics, electronics, and mechanical systems that can, in response to commands, cause a laser beam or electromagnetic radiation to be delivered to cut or engrave the material 140 .
- the CNC machine 100 can also execute operation of a motion plan for causing movement of the movable head. As the movable head moves, the movable head can deliver electromagnetic energy to effect a change in the material 140 that is at least partially contained within the interior space.
- the position and orientation of the optical elements inside the head 160 can be varied to adjust the position, angle, or focal point of a laser beam. For example, mirrors can be shifted or rotated, lenses translated, etc.
- the head 160 can be mounted on a translation rail 170 that is used to move the head 160 throughout the enclosure.
- the motion of the head can be linear, for example on an X axis, a Y axis, or a Z axis.
- the head can combine motions along any combination of directions in a rectilinear, cylindrical, or spherical coordinate system.
- a working area for the CNC machine 100 can be defined by the limits within which the movable head can cause delivery of a machining action, or delivery of a machining medium, for example electromagnetic energy.
- the working area can be inside the interior space defined by the housing. It should be understood that the working area can be a generally three-dimensional volume and not a fixed surface. For example, if the range of travel of a vertically oriented laser cutter is a 10′′ ⁇ 10′′ square entirely over the material bed 150 , and the laser from the laser beam comes out of the laser cutter at a height of 4′′ above the material bed of the CNC machine, that 400 in 2 volume can be considered to be the working area.
- the working area can be defined by the extents of positions in which material 140 can be worked by the CNC machine 100 , and not necessarily tied or limited by the travel of any one component. For example, if the head 160 could turn at an angle, then the working area could extend in some direction beyond the travel of the head 160 .
- the working area can also include any surface, or portion thereof, of any material 140 placed in the CNC machine 100 that is at least partially within the working area, if that surface can be worked by the CNC machine 100 .
- oversized material which may extend even outside the CNC machine 100 , only part of the material 140 might be in the working area at any one time.
- the translation rail 170 can be any sort of translating mechanism that enables movement of the head 160 in the X-Y direction, for example a single rail with a motor that slides the head 160 along the translation rail 170 , a combination of two rails that move the head 160 , a combination of circular plates and rails, a robotic arm with joints, etc.
- Components of the CNC machine 100 can be substantially enclosed in a case or other enclosure.
- the case can include, for example, windows, apertures, flanges, footings, vents, etc.
- the case can also contain, for example, a laser, the head 160 , optical turning systems, cameras, the material bed 150 , etc.
- an injection-molding process can be performed. The injection-molding process can be performed to create a rigid case in a number of designs.
- the injection molding process may utilize materials with useful properties, such as strengthening additives that enable the injection molded case to retain its shape when heated, or absorptive or reflective elements, coated on the surface or dispersed throughout the material for example, that dissipate or shield the case from laser energy.
- materials with useful properties such as strengthening additives that enable the injection molded case to retain its shape when heated, or absorptive or reflective elements, coated on the surface or dispersed throughout the material for example, that dissipate or shield the case from laser energy.
- one design for the case can include a horizontal slot in the front of the case and a corresponding horizontal slot in the rear of the case. These slots can allow oversized material to be passed through the CNC machine 100 .
- an interlock system that interfaces with, for example, the openable barrier, the lid 130 , door, and the like. Such an interlock is required by many regulatory regimes under many circumstances.
- the interlock can then detect a state of opening of the openable barrier, for example, whether a lid 130 is open or closed.
- an interlock can prevent some or all functions of the CNC machine 100 while an openable barrier, for example the lid 130 , is in the open state (e.g. not in a closed state). The reverse can be true as well, meaning that some functions of the CNC machine 100 can be prevented while in a closed state.
- some components of the CNC machine 100 can be tied to states of other components of the CNC machine, such as not allowing the lid 130 to open while the laser is on, a movable component moving, a motor running, sensors detecting a certain gas, etc.
- the interlock can prevent emission of electromagnetic energy from the movable head when detecting that the openable barrier is not in the closed position.
- a traditional CNC machine accepts a user drawing, acting as a source file that describes the object the user wants to create or the cuts that a user wishes to make.
- source files are:
- FIG. 3A is a diagram illustrating one example of an SVG source file 310 , consistent with some implementations of the current subject matter.
- FIG. 3B is an example of a graphical representation 320 of the cut path 330 in the CNC machine, consistent with some implementations of the current subject matter.
- FIG. 3C is a diagram illustrating the machine file 340 that would result in a machine creating the cut path 330 , created from the source file 310 , consistent with some implementations of the current subject matter.
- the example source file 310 represents a work surface that is 640 ⁇ 480 units with a 300 ⁇ 150 unit rectangle whose top left corner is located 100 units to the right and 100 units down from the top-left corner of the work surface.
- a computer program can then convert the source file 310 into a machine file 340 that can be interpreted by the CNC machine 100 to take the actions illustrated in FIG. 3B .
- the conversion can take place on a local computer where the source files reside on the CNC machine 100 , etc.
- the machine file 340 describes the idealized motion of the CNC machine 100 to achieve the desired outcome. Take, for example, a 3D printer that deposits a tube-shaped string of plastic material. If the source file specifies a rectangle then the machine file can instruct the CNC machine to move along a snakelike path that forms a filled in rectangle, while extruding plastic.
- the machine file can omit some information, as well. For example, the height of the rectangle may no longer be directly present in the machine file; the height will be as tall as the plastic tube is high.
- the machine file can also add some information. For example, the instruction to move the print head from its home position to a corner of the rectangle to begin printing. The instructions can even depart from the directly expressed intent of the user.
- a common setting in 3D printers causes solid shapes to be rendered as hollow in the machine file to save on material cost.
- the conversion of the source file 310 to the machine file 330 can cause the CNC machine to move the cutting tool from (0,0) (in FIG. 3B ) to the point at which cutting is to begin, activate the cutting tool (for example lower a drag knife or energize a laser), trace the rectangle, deactivate the cutting tool, and return to (0,0).
- a motion plan for the CNC machine 100 can be generated.
- the motion plan contains the data that determines the actions of components of the CNC machine 100 at different points in time.
- the motion plan can be generated on the CNC machine 100 itself or by another computing system.
- a motion plan can be a stream of data that describes, for example, electrical pulses that indicate exactly how motors should turn, a voltage that indicates the desired output power of a laser, a pulse train that specifies the rotational speed of a mill bit, etc.
- motion plans are defined by the presence of a temporal element, either explicit or inferred, indicating the time or time offset at which each action should occur. This allows for one of the key functions of a motion plan, coordinated motion, wherein multiple actuators coordinate to have a single, pre-planned affect.
- the motion plan renders the abstract, idealized machine file as a practical series of electrical and mechanical tasks.
- a machine file might include the instruction to “move one inch to the right at a speed of one inch per second, while maintaining a constant number of revolutions per second of a cutting tool.”
- the motion plan must take into consideration that the motors cannot accelerate instantly, and instead must “spin up” at the start of motion and “spin down” at the end of motion.
- the motion plan would then specify pulses (e.g. sent to stepper motors or other apparatus for moving the head or other parts of a CNC machine) occurring slowly at first, then faster, then more slowly again near the end of the motion.
- the machine file is converted to the motion plan by the motion controller/planner.
- the motion controller can be a general or special purpose computing device, such as a high performance microcontroller or single board computer coupled to a Digital Signal Processor (DSP).
- DSP Digital Signal Processor
- the job of the motion controller is to take the vector machine code and convert it into electrical signals that will be used to drive the motors on the CNC machine 100 , taking in to account the exact state of the CNC machine 100 at that moment (e.g. “since the machine is not yet moving, maximum torque must be applied, and the resulting change in speed will be small”) and physical limitations of the machine (e.g. accelerate to such-and-such speed, without generating forces in excess of those allowed by the machine's design).
- the signals can be step and direction pulses fed to stepper motors or location signals fed to servomotors among other possibilities, which create the motion and actions of the CNC machine 100 , including the operation of elements like actuation of the head 160 , moderation of heating and cooling, and other operations.
- a compressed file of electrical signals can be decompressed and then directly output to the motors.
- These electrical signals can include binary instructions similar to 1's and 0's to indicate the electrical power that is applied to each input of each motor over time to effect the desired motion.
- the motion plan is the only stage that understands the detailed physics of the CNC machine 100 itself, and translates the idealized machine file into implementable steps. For example, a particular CNC machine 100 might have a heavier head, and require more gradual acceleration. This limitation is modeled in the motion planner and affects the motion plan.
- Each model of CNC machine can require precise tuning of the motion plan based on its measured attributes (e.g. motor torque) and observed behavior (e.g. belt skips when accelerating too quickly).
- the CNC machine 100 can also tune the motion plan on a per-machine basis to account for variations from CNC machine to CNC machine.
- the motion plan can be generated and fed to the output devices in real-time, or nearly so.
- the motion plan can also be pre-computed and written to a file instead of streamed to a CNC machine, and then read back from the file and transmitted to the CNC machine 100 at a later time.
- Transmission of instructions to the CNC machine 100 for example, portions of the machine file or motion plan, can be streamed as a whole or in batches from the computing system storing the motion plan. Batches can be stored and managed separately, allowing pre-computation or additional optimization to be performed on only part of the motion plan.
- a file of electrical signals which may be compressed to preserve space and decompressed to facilitate use, can be directly output to the motors.
- the electrical signals can include binary instructions similar to 1's and 0's to indicate actuation of the motor.
- the motion plan can be augmented, either by precomputing in advance or updating in real-time, with the aid of machine vision.
- Machine vision is a general term that describes the use of sensor data, and not only limited to optical data, in order to provide additional input to machine operation.
- Other forms of input can include, for example, audio data from an on-board sound sensor such as a microphone, or position/acceleration/vibration data from an on-board sensor such as a gyroscope or accelerometer.
- Machine vision can be implemented by using cameras to provide images of, for example, the CNC machine 100 , the material being operated on by the CNC machine, the environment of the CNC machine 100 (if there is debris accumulating or smoke present), or any combination of these. These cameras can then route their output to a computer for processing.
- the CNC machine 100 By viewing the CNC machine 100 in operation and analyzing the image data it can, for example, be determined if the CNC machine 100 is working correctly, if the CNC machine 100 is performing optimally, the current status of the CNC machine 100 or subcomponents of the CNC machine 100 , etc.
- the material can be imaged and, for example, the operation of the CNC machine 100 can be adjusted according to instructions, users can be notified when the project is complete, or information about the material can be determined from the image data. Error conditions can be identified, such as if a foreign body has been inadvertently left in the CNC machine 100 , the material has been inadequately secured, or the material is reacting in an unexpected way during machining.
- Cameras can be mounted inside the CNC machine 100 to acquire image data during operation of the CNC machine 100 .
- Image data refers to all data gathered from a camera or image sensor, including still images, streams of images, video, audio, metadata such as shutter speed and aperture settings, settings or data from or pertaining to a flash or other auxiliary information, graphic overlays of data superimposed upon the image such as GPS coordinates, in any format, including but not limited to raw sensor data such as a .DNG file, processed image data such as a JPG file, and data resulting from the analysis of image data processed on the camera unit such as direction and velocity from an optical mouse sensor.
- the viewing can occur when the lid 130 is in a closed position or in an open position or independently of the position of the lid 130 .
- one or more cameras for example a camera mounted to the interior surface of the lid 130 or elsewhere within the case or enclosure, can view the interior portion when the lid 130 to the CNC machine 100 is a closed position.
- the cameras can image the material 140 while the CNC machine 100 is closed and, for example, while machining the material 140 .
- cameras can be mounted within the interior space and opposite the working area.
- One or more cameras mounted to a translatable support such as a gantry 210 , which can be any mechanical system that can be commanded to move (movement being understood to include rotation) the camera or a mechanism such as a mirror that can redirect the view of the camera, to different locations and view different regions of the CNC machine.
- the head 160 is a special case of the translatable support, where the head 160 is limited by the track 220 and the translation rail 170 that constrain its motion.
- Lenses can be chosen for wide angle coverage, for extreme depth of field so that both near and far objects may be in focus, or many other considerations.
- the cameras may be placed to additionally capture the user so as to document the building process, or placed in a location where the user can move the camera, for example on the underside of the lid 130 where opening the CNC machine 100 causes the camera to point at the user.
- the single camera described above can take an image when the lid is not in the closed position.
- Such an image can include an object, such as a user, that is outside the CNC machine 100 .
- Cameras can be mounted on movable locations like the head 160 or lid 130 with the intention of using video or multiple still images taken while the camera is moving to assemble a larger image, for example scanning the camera across the material 140 to get an image of the material 140 in its totality so that the analysis of image data may span more than one image.
- a lid camera 110 can be mounted to the lid 130 .
- the lid camera 110 can be mounted to the underside of the lid 130 .
- the lid camera 110 can be a camera with a wide field of view 112 that can image a first portion of the material 140 . This can include a large fraction of the material 140 and the material bed or even all of the material 140 and material bed 150 .
- the lid camera 110 can also image the position of the head 160 , if the head 160 is within the field of view of the lid camera 110 . Mounting the lid camera 110 on the underside of the lid 130 allows for the user to be in view when the lid 130 is open.
- a number of sub-images possibly acquired at a number of different locations, can be assembled, potentially along with other data like a source file such as an SVG or digitally rendered text, to provide a final image.
- the lid camera 110 rotates down with the lid 130 and brings the material 140 into view.
- a head camera 120 can be mounted to the head 160 .
- the head camera 120 can have a narrower field of view 122 and take higher resolution images of a smaller area, of the material 140 and the material bed, than the lid camera 110 .
- One use of the head camera 120 can be to image the cut made in the material 140 .
- the head camera 120 can identify the location of the material 140 more precisely than possible with the lid camera 110 .
- Other locations for cameras can include, for example, on an optical system guiding a laser for laser cutting, on the laser itself, inside a housing surrounding the head 160 , underneath or inside of the material bed 150 , in an air filter or associated ducting, etc. Cameras can also be mounted outside the CNC machine 100 to view users or view external features of the CNC machine 100 .
- Multiple cameras can also work in concert to provide a view of an object or material 140 from multiple locations, angles, resolutions, etc.
- the lid camera 110 can identify the approximate location of a feature in the CNC machine 100 .
- the CNC machine 100 can then instruct the head 160 to move to that location so that the head camera 120 can image the feature in more detail.
- the use of the cameras for machine vision in this application is not limited to only that specific type of CNC machine 100 .
- the lid camera 110 can be mounted nearby to view the rotating material 140 and the head 160 , and the head camera 120 located near the cutting tool.
- the head camera 120 can be mounted on the head 160 that deposits material 140 for forming the desired piece.
- An image recognition program can identify conditions in the interior portion of the CNC machine 100 from the acquired image data.
- the conditions that can be identified are described at length below, but can include positions and properties of the material 140 , the positions of components of the CNC machine 100 , errors in operation, etc.
- instructions for the CNC machine 100 can be created or updated.
- the instructions can, for example, act to counteract or mitigate an undesirable condition identified from the image data.
- the instructions can include changing the output of the head 160 .
- the laser can be instructed to reduce or increase power or turn off.
- the updated instructions can include different parameters for motion plan calculation, or making changes to an existing motion plan, which could change the motion of the head 160 or the gantry 210 .
- the motion plan can be calculated with an equal and opposite offset to counteract the problem, for example for a second subsequent operation or for all future operations.
- the CNC machine 100 can execute the instructions to create the motion plan or otherwise effect the changes described above.
- the movable component can be the gantry 210 , the head 160 , or an identifiable mark on the head 160 .
- the movable component for example the gantry 210 , can have a fixed spatial relationship to the movable head.
- the image data can update software controlling operation of the CNC machine 100 with a position of the movable head and/or the movable component with their position and/or any higher order derivative thereof.
- multiple cameras can be placed throughout the CNC machine 100 to provide the needed image data. Camera choice and placement can be optimized for many use cases. Cameras closer to the material 140 can be used for detail at the expense of a wide field of view. Multiple cameras may be placed adjacently so that images produced by the multiple cameras can be analyzed by the computer to achieve higher resolution or wider coverage jointly than was possible for any image individually.
- the manipulation and improvement of images can include, for example, stitching of images to create a larger image, adding images to increase brightness, differencing images to isolate changes (such as moving objects or changing lighting), multiplying or dividing images, averaging images, rotating images, scaling images, sharpening images, and so on, in any combination.
- the system may record additional data to assist in the manipulation and improvement of images, such as recordings from ambient light sensors and location of movable components.
- stitching can include taking one or more sub-images from one or more cameras and combining them to form a larger image. Some portions of the images can overlap as a result of the stitching process. Other images may need to be rotated, trimmed, or otherwise manipulated to provide a consistent and seamless larger image as a result of the stitching.
- Lighting artifacts such as glare, reflection, and the like, can be reduced or eliminated by any of the above methods.
- the image analysis program can performing edge detection and noise reduction or elimination on the acquired images.
- Edge detection can include performing contrast comparisons of different parts of the image to detect edges and identify objects or features in the image.
- Noise reduction can involve averaging or smoothing of one or more images to reduce the contribution of periodic, random, or pseudo-random image noise, for example that due to CNC machine 100 operation such as vibrating fans, motors, etc.
- FIG. 4A is a diagram illustrating the addition of images, consistent with some implementations of the current subject matter. Images taken by the cameras can be added, for example, to increase the brightness of an image.
- First image 410 has horizontal bands (shown in white against a black background in the figure). The horizontal bands can conform to a more brightly lit object, though the main point is that there is a difference between the bands and the background.
- Second image 412 has similar horizontal bands, but offset in the vertical direction relative to those in the first image 410 .
- the first image 410 and second image 412 are added, their sum is shown in by the third image 414 .
- the two sets of bands interleave to fill in the bright square as shown.
- This technique can be applied to, for example, acquiring many image frames from the cameras, possibly in low light conditions, and adding them together to form a brighter image.
- FIG. 4B is a diagram illustrating the subtraction of images, consistent with some implementations of the current subject matter.
- Image subtraction can be useful to, for example, isolate dim laser spot from a comparatively bright image.
- a first image 420 shows two spots, one representative of a laser spot and the other of an object.
- a second image 422 can be taken with the laser off, leaving only the object. Then, the second image 422 can be subtracted from the first image 420 to arrive at the third image 424 .
- the remaining spot in the third image 424 is the laser spot.
- FIG. 4C is a diagram illustrating the differencing of images to isolate a simulated internal lighting effect, consistent with some implementations of the current subject matter.
- an object in the CNC machine 100 represented as a circle in first image 430 .
- This could represent, for example an object on the material bed 150 of the CNC machine 100 . If, for example, half of the material bed 150 of the CNC machine 100 was illumined by outside lighting, such as a sunbeam, the second image 420 might appear as shown, with the illuminated side brighter than the side without the illumination. It can sometimes be advantageous to use internal lighting during operation, for example to illuminate a watermark, aid in image diagnostics, or simply to better show a user what is happening in the CNC machine.
- Machine vision processing of images can occur at, for example, the CNC machine 100 , on a locally connected computer, or on a remote server connected via the internet.
- image processing capability can be performed by the CNC machine 100 , but with limited speed.
- One example of this can be where the onboard processor is slow and can run only simple algorithms in real-time, but which can run more complex analysis given more time. In such a case, the CNC machine 100 could pause for the analysis to be complete, or alternatively, execute the data on a faster connected computing system.
- a specific example can be where sophisticated recognition is performed remotely, for example, by a server on the internet. In these cases, limited image processing can be done locally, with more detailed image processing and analysis being done remotely.
- the camera can use a simple algorithm, run on a processor in the CNC machine 100 , to determine when the lid 130 is closed.
- the processor on the CNC machine 100 can send images to a remote server for more detailed processing, for example, to identify the location of the material 140 that was inserted.
- the system can also devote dedicated resources to analyzing the images locally, pause other actions, or diverting computing resources away from other activities.
- the head 160 can be tracked by onboard, real-time analysis. For example, tracking the position of the head 160 , a task normally performed by optical encoders or other specialized hardware, can be done with high resolution, low resolution, or a combination of both high and low resolution images taken by the cameras. As high-resolution images are captured, they can be transformed into lower resolution images that are smaller in memory size by resizing or cropping. If the images include video or a sequence of still images, some may be eliminated or cropped. A data processor can analyze the smaller images repeatedly, several times a second for example, to detect any gross misalignment.
- the data processor can halt all operation of the CNC machine 100 while more detailed processing more precisely locates exactly the head 160 using higher resolution images.
- the head 160 can be adjusted to recover the correction location.
- images can be uploaded to a server where further processing can be performed. The location can be determined by, for example, looking at the head 160 with the lid camera, by looking at what the head camera 120 is currently imaging, etc. For example, the head 160 could be instructed to move to a registration mark. Then the head camera 120 can then image the registration mark to detect any minute misalignment.
- the cameras can be, for example, a single wide-angle camera, multiple cameras, a moving camera where the images are digitally combined, etc.
- the cameras used to image a large region of the interior of the CNC machine 100 can be distinct from other cameras that image a more localized area.
- the head camera 160 can be one example of a camera that, in some implementations, images a smaller area than the wide-angle cameras.
- a camera or cameras with broad field of view can cover the whole of the machine interior, or a predefined significant portion thereof.
- the image data acquired from one or more of the cameras can include most (meaning over 50%) of the working area.
- at least 60%, 70%, 80%, 90%, or 100% of the working area can be included in the image data.
- the above amounts do not take into account obstruction by the material 140 or any other intervening objects. For example, if a camera is capable of viewing 90% of the working area without material 140 , and a piece of material 140 is placed in the working area, partially obscuring it, the camera is still considered to be providing image data that includes 90% of the working area.
- the image data can be acquired when the interlock is not preventing the emission of electromagnetic energy.
- a camera mounted outside the machine can see users and/or material 140 entering or exiting the CNC machine 100 , record the use of the CNC machine 100 for sharing or analysis, or detect safety problems such as an uncontrolled fire.
- Other cameras can provide a more precise look with limited field of view.
- Optical sensors like those used on optical mice can provide very low resolution and few colors, or greyscale, over a very small area with very high pixel density, then quickly process the information to detect material 140 moving relative to the optical sensor. The lower resolution and color depth, plus specialized computing power, allow very quick and precise operation.
- Video cameras can detect changes over time, for example comparing frames to determine the rate at which the camera is moving. Still cameras can be used to capture higher resolution images that can provide greater detail.
- Yet another type of optical scanning can be to implement a linear optical sensor, such as a flatbed scanner, on an existing rail, like the sliding gantry 210 in a laser system, and then scan it over the material 140 , assembling an image as it scans.
- the laser may be turned off and on again, and the difference between the two measurements indicates the light scattered from the laser while removing the effect of environmental light.
- the cameras can have fixed or adjustable sensitivity, allowing them to operate in dim or bright conditions. There can be any combination of cameras that are sensitive to different wavelengths. Some cameras, for example, can be sensitive to wavelengths corresponding to a cutting laser, a range-finding laser, a scanning laser, etc. Other cameras can be sensitive to wavelengths that specifically fall outside the wavelength of one or more lasers used in the CNC machine 100 .
- the cameras can be sensitive to visible light only, or can have extended sensitivity into infrared or ultraviolet, for example to view invisible barcodes marked on the surface, discriminate between otherwise identical materials based on IR reflectivity, or view invisible (e.g. infrared) laser beams directly.
- the cameras can even be a single photodiode that measures e.g. the flash of the laser striking the material 140 , or which reacts to light emissions that appear to correlate with an uncontrolled fire.
- the cameras can be used to image, for example, a beam spot on a mirror, light escaping an intended beam path, etc.
- the cameras can also detect scattered light, for example if a user is attempting to cut a reflective material.
- cameras can be implemented, for example, instead of detecting light of the same wavelength of the laser, instead detecting a secondary effect, such as infrared radiation (with a thermographic camera) or x-rays given off by contact between the laser and another material.
- a secondary effect such as infrared radiation (with a thermographic camera) or x-rays given off by contact between the laser and another material.
- the cameras may be coordinated with lighting sources in the CNC machine 100 .
- the lighting sources can be positioned anywhere in the CNC machine 100 , for example, on the interior surface of the lid 130 , the walls, the floor, the gantry 210 , etc.
- One example of coordination between the lighting sources and the cameras can be to adjust internal LED illumination while acquiring images of the interior portion with the cameras. For example, if the camera is only capable of capturing images in black and white, the internal LEDs can illuminate sequentially in red, green, and blue, capturing three separate images. The resulting images can then be combined to create a full color RGB image. If external illumination is causing problems with shadows or external lighting effects, the internal lighting can be turned off while a picture is taken, then turned on while a second picture is taken.
- ambient light can be cancelled out so that it can be determined what the image looks like when illuminated only by internal lights.
- lighting is movable, for example on the translation arm of the CNC machine 100 , it can be moved around while multiple pictures are taken, then combined, to achieve an image with more even lighting.
- the brightness of the internal lights can also be varied like the flash in a traditional camera to assist with illumination.
- the lighting can be moved to a location where it better illuminates an area of interest, for example so it shines straight down a slot formed by a cut, so a camera can see the bottom of the cut. If the internal lighting is interfering, it can be turned off while the camera takes an image.
- the lighting can be turned off for such a brief period that the viewer does not notice (e.g. for less than a second, less than 1/60 th of a second, or less than 1/120 th of a second).
- the internal lighting may be momentarily brightened like a camera flash to capture a picture. Specialized lights may be used and/or engaged only when needed; for example, an invisible but UV-fluorescent ink might be present on the material. When scanning for a barcode, UV illumination might be briefly flashed while a picture is captured so that any ink present would be illuminated.
- the same technique of altering the lighting conditions can be performed by toggling the range-finding and/or cutting lasers as well, to isolate their signature and/or effects when imaging.
- the images can be cropped, translated, expanded, rotated, and so on, to obtain images that share common features in order to allow subtraction.
- This differencing technique is preferably done with automatic adjustments in the cameras are overridden or disabled. For example, disabling autofocus, flashes, etc.
- Features that can ideally be held constant between images can include, for example, aperture, shutter speed, white balance, etc. In this way, the changes in the two images are due only to differences from the lighting and not due to adjustment in the optical system.
- Multiple cameras or a single camera moved to different locations in the CNC machine 100 , can provide images from different angles to generate 3D representations of the surface of the material 140 or an object.
- the 3D representations can be used for generating 3D models, for measuring the depth that an engraving or laser operation produced, or providing feedback to the CNC machine 100 or a user during the manufacturing process. It can also be used for scanning, to build a model of the material 140 for replication.
- the camera can be used to record photos and video that the user can use to share their progress.
- Automatic “making of” sequences can be created that stitch together various still and video images along with additional sound and imagery, for example the digital rendering of the source file or the user's picture from a social network.
- Knowledge of the motion plan, or even the control of the cameras via the motion plan directly, can enable a variety of optimizations.
- the final video can be created with footage from the head camera at any time that the gantry is directed to a location that is known to obscure the lid camera.
- the cameras can be instructed to reduce their aperture size, reducing the amount of light let in, when the machine's internal lights are activated.
- the machine is a laser cutter/engraver and activating the laser causes a camera located in the head to become overloaded and useless, footage from that camera may be discarded when it is unavailable.
- elements of the motion plan may be coordinated with the camera recording for optimal visual or audio effect, for example fading up the interior lights before the cut or driving the motors in a coordinated fashion to sweep the head camera across the material for a final view of the work result.
- sensor data collected by the system might be used to select camera images; for example, a still photo of the user might be captured from a camera mounted in the lid when an accelerometer, gyroscope, or other sensor in the lid detects that the lid has been opened and it has reached the optimal angle.
- recording of video might cease if an error condition is detected, such as the lid being opened unexpectedly during a machining operation.
- the video can be automatically edited using information like the total duration of the cut file to eliminate or speed up monotonous events; for example, if the laser must make 400 holes, then that section of the cut plan could be shown at high speed. Traditionally, these decisions must all be made by reviewing the final footage, with little or no a priori knowledge of what they contain.
- Pre-selecting the footage can allow higher quality video and much less time spent editing it.
- Video and images from the production process can be automatically stitched together in a variety of fashions, including stop motion with images, interleaving video with stills, and combining video and photography with computer-generated imagery, e.g. a 3D or 2D model of the item being rendered.
- Video can also be enhanced with media from other sources, such as pictures taken with the user's camera of the final product.
- FIG. 5 is a diagram illustrating a cloud-based system supporting operation of a CNC machine 100 , consistent with some implementations of the current subject matter.
- the cloud-based system can include any number or combinations of first computing systems 520 (servers, mainframes, etc.) to provide powerful computation services.
- Both the first computing system 520 and the second computing system 530 can be connected by the network 510 to each other and to any number of CNC machines.
- the network 510 can be a wired or wireless network.
- the source file can be processed by the server to generate the instructions required by the CNC machine 100 in order to execute operations that will result in the desired product.
- the server can transmit the instructions to the CNC machine 100 without requiring the user to have any direct contact with the CNC machine 100 .
- the server can be a more powerful computer than the remote computer, more detailed motion planning calculations can be performed.
- the server can contain data on the physics of the CNC machine 100 that will be doing the fabrication, for example, cutting/layering parameters, machine information, material restrictions, etc.
- Advanced computational methods can be used to generate the motion plan, for example optimizing the motion of the head to not only generate an accurate set of instructions, but instructions that are executed in a minimum amount of time given a particular CNC machine.
- the instructions may be optimized to minimize noise created by fans (by generating less heat, smoke, or debris by operating more slowly), they may be optimized to create minimum vibration (for a machine on an unstable surface, like a card table), they may be optimized for maximum accuracy and precision at the cost of speed, and/or they may be optimized for maximum speed at the expense of accuracy.
- the particular path chosen by the machine in moving from machining operation to machining operation is a complex problem and can be likened to the “travelling salesman” problem which has been proven to be NP-complete.
- different optimizations can be used. For example, a nearest neighbor approach can be used to perform one set of motions, move to the location of the next set of motions, execute those, and so on.
- time-varying features associated with adding or subtracting material 140 can be calculated and accounted for when generating the motion plan by software on the server.
- the motion plan can be transmitted to the CNC machine 100 where the instructions will be executed.
- Continuous communication with the server during the execution of the operations can allow the use of image recognition programs to monitor the process. For example, corrections can be made due to machine error, observed defects in the material 140 , or on the basis of feedback as to the progression of the operations.
- the image processing system may detect that an anomaly has caused a part to be cut slightly larger than specified; the machine may be instructed to go back and recut the part slightly smaller.
- FIG. 6 is a process flow chart illustrating generating a motion plan for a CNC machine 100 on distributed computing systems, consistent with some implementations of the current subject matter.
- source files can be generated by providing an electronic characterization of an object for manufacture by the CNC machine 100 .
- the source files can be photos, screen captures, electronic tracings, CAD drawings, etc.
- the source files can be sent to the first computing system by, for example, uploading to a server, etc.
- source files can be received by the first computing system.
- a machine file can be generated at the first computing system.
- the machine file as described above, can include steps describing operations of the CNC machine 100 .
- the machine file can be converted into a motion plan by the first computing system.
- the motion plan can be a set of instructions for the CNC machine 100 .
- the motion plan can be transmitted to the CNC machine 100 over a network.
- FIG. 7 is a system diagram illustrating general purpose computer executing an execution plan to control a CNC machine, consistent with implementations of the current subject matter.
- an execution plan 710 that not only includes the motion plan 720 , but also includes component commands 730 for selectively activating other components and controlling their operation, such as when to turn fans 770 on or off, what speed to run fans, settings for the cooling 750 or ventilation system, when to activate cameras 760 , what images to acquire, etc.
- the execution plan can be related to known or expected sensor data, stored locally on the CNC machine 100 or accessed from a database over a computer network or data connection 780 .
- the cooling system can include a coolant pump, a liquid refrigeration unit, a fan, a heat sink, or the like.
- the generation of the execution plan 710 can occur on the CNC machine 100 or on a general-purpose computer 700 in communication with the CNC machine over a data connection 780 .
- general-purpose computers can include, for example, PCs, tablet computers, smartphones, laptop computers, etc.
- the data connection 780 can be, for example, the Internet, a wide area network, a wireless network, a USB connection, or a serial connection.
- the execution plan thus provides a comprehensive description of the operation of the CNC machine.
- the execution plan can, in some implementations, be generated in an iterative manner to result in an allowable and consistent execution plan. For example, if a motion plan instructs the CNC machine to make a high speed cut, the execution fan can also include commands to turn on a fan to quickly clear the debris. However, if the system had accessed sensor data from similar past operations indicating that the fan could not operate to clear that type of debris quickly enough to make a proper cut, then the cut speed can be reduced to an acceptable level.
- FIG. 8 is a diagram illustrating an example of determination of a safe pause point in a motion and/or execution plan for a CNC machine consistent with some implementations of the current subject matter.
- CNC machines typically operate by having a machine file, for example in the G-code language, loaded on to it.
- a motion planner executing on the CNC machine calculates the motions required by the actuators (such as steppers and servomotors) based on the machine file and causes execution of these motions in realtime or near-realtime.
- the execution of such a motion planner must be fast enough that it can generate new elements of the motion plan as quickly as the machine can execute them, and will often make tradeoffs in accuracy to ensure that it presents the next set of output data to the actuators when required. While there may be a small buffer in case of instantaneous delay, the design assumes that the motion planner is fast enough and coupled closely enough to the actual CNC machine that a loss of connection between the motion planner and CNC machine is not possible.
- the CNC machine and the one or more processors implementing the motion planner may be connected by a cable such as a USB cable or a network such as the Internet, a local area network, a wide area network, or the like.
- the data connection between the motion planner and the CNC machine may be cut, data transmission may be slow or lossy (e.g. data packets might be delayed or lost), and/or other issues may affect reliability and timeliness of receipt of commands from the motion planner at the CNC machine.
- a motion planner implemented on a computing device separate from the CNC machine can present a number of challenges, including but not limited to handling of a connectivity difficulty between the two machines (CNC and motion planner) that occurs midway through a fabrication operation. Such an occurrence is unlikely in conventional approaches in which the motion planner is integrated into the CNC machine. In contrast, it is virtually guaranteed to occur when the motion planner is connected to the CNC via a network.
- an interrupted motion plan would result in the work aborting and tremendous manual effort required to restart it, with a likely outcome that the fabrication process does not turn out entirely as intended. For example, the laser might turn off suddenly, and realigning it so it can be restarted can be a manual undertaking that may result in noticeable imperfections.
- CNC machines that incorporate the motion planner must include the motion planner in their cost, which can be a substantial price, especially for advanced motion planners that calculate second, third, fourth, and higher order derivatives of position and forces on the machine in order to minimize wear and provide optimal results. If the motion planner is connected via the Internet, it may be a resource that is shared among many machines. In another improvement that may be possible with one or more implementations of the current subject matter, CNC machines that integrate the motion planner generally impose a realtime requirement. In other words, they must include sufficient processing power to keep up with the motion of the machine.
- motion planners can require a trade off between accuracy (performing more calculations per unit of time) and cost (including a more expensive processor that can complete those calculations).
- using a separate motion planner can allow repurposing of a general-purpose computer, such as a high powered workstation or server in a cloud hosting provider, temporarily for the execution of the machining operation, before returning it to other, non-machining-related tasks.
- the motion planner can calculate the motion plan in motion plan or execution plan segments.
- Each segment contains the instructions to perform a series of useful machining operations, and then instructions to put the CNC machine in a state where it may be safely paused and then resumed.
- This state is referred to elsewhere herein as a safe pause point, and can optionally include a state in which a movable head of the CNC device is not moving and/or moving but not cutting.
- the safe pause point can be an end of the motion plan.
- a motion or execution plan segment consistent with this implementation of the current subject matter can be limited to the size of a buffer present on the CNC machine, so it may be loaded into that buffer in its entirety.
- a segment may contain the entirety of a machining operation, or it may contain a portion of it and the instructions to reach a next safe pause point.
- FIG. 8 shows features of a machining operation that uses a laser cutter/engraver to engrave the letters “v l” 800 .
- the required operations are as follows:
- the motion planner is a series of instructions such as electrical impulses that can be used to direct the motors' and other actuators' operations.
- a typical motion planner would calculate the electrical impulses to implement these commands and send them to the machine in realtime. If the motion planner was suddenly disconnected from the laser during upward-right line 820 , the material might be wasted. It might be possible to order the machine to continue the motion plan from the downward-right line 810 , but then part of the plan would be performed twice, resulting in possible damage to the material as the laser revisited the already-processed material; alternately, the motion plan might be instructed to resume from the downward line 840 , resulting in an incomplete machining operation 850 .
- a segmented file consistent with implementations of the current subject matter can be created based on a consideration of a maximum buffer capacity of the CNC machine, which in the case of this example might hold the electrical impulses needed to implement the first six commands.
- the motion planner can instead identify a point (or points) at which the execution of the motion plan could be paused and resumed without affecting the final output. In this example, that would be anywhere during the upward-right line 830 that occurs when the laser is off.
- the motion planner can therefore create a segment with the impulses for the first five commands and send this segment to the CNC machine.
- the CNC machine would wait until the motion plan for all five commands were stored in its buffer (e.g.
- the motion planner would prepare and the machine would receive a second segment, completing the machining operation, before the first one was complete.
- the motion planner were slow, for example an underpowered computer, or if the second segment were delayed, for example by network traffic, a network disconnection or failure (for example by someone tripping over the cable), then the CNC machine can be able to pause in a resumeable condition safely, with the laser off, awaiting further commands. It can be possible to include more data past the end of the segment, for example the start of the next segment, as long as the safe pausing point—the termination of the segment—is clearly identified should the full next segment not be received before reaching the end of the prior segment.
- a second approach besides segmenting is also within the scope of the current subject matter. Instead of segmenting the motion or execution plan into one or more segments with a safe pause point, the CNC machine can be optimized to allow pausing and resuming at any point. This approach may still result in some perceptible physical effects of pausing and resuming in the final product. However, when applied carefully consistent with implementations of the current subject matter, such errors can be minimized.
- the motion plan can be streamed from the motion planner in the usual fashion.
- the CNC machine can take responsibility for arranging for a “graceful” pause and subsequent resumption of operations.
- One or more of a number of tactics may be used to optimize this outcome.
- the machine may precisely note the time of the data interruption or identify the last instruction executed or the final piece of motion plan data fed to the motors.
- a sufficiently capable motion planner knows a great deal of information about the system at every instant: e.g. position, velocity, laser tube output power, etc. Provided with nothing more than the time at which data ceased to arrive or final instruction, it may be capable of calculating a new motion plan that can resume the machining operation with minimal disruption.
- the motion planner may command a replay of the entirety of the motion plan up to the moment of interruption with the laser off, then turn on the laser very close if not precisely at the point in the motion plan at which the interruption occurred.
- the motion planner may truncate the majority of the motion plan, and instead arrange for the moving components to achieve the correct position, speed, and other parameters necessary to resume the cut. Note that lasers affect materials based on their speed as well as their power, so it is not sufficient to simply locate the original position.
- the CNC machine may use a locally-generated or pre-calculated motion plan to bring the machine to a safe stop.
- This approach can include turning off the laser in the case of a laser cutter. A sudden stop can cause problems such as missed steps on a stepper motor, so the machine might instead bring the moving components to a gradual stop.
- the CNC machine may use onboard sensors to detect a state of the system. For example, the CNC machine may use a camera to detect where the cutline ended, or position sensors to detect where the head is after shutdown, or other parameters that would assist with the system restart.
- a revised motion plan can be created and executed that, as closely as possible, resumes the state of the laser at the moment when the last data was executed. This approach may suffer from minor defects, such as a small break 870 on the right side of the ‘v’ in cut 860 as the resumed motion was not able to perfectly align with the previously terminated motion, but it can come close, in many cases imperceptibly so.
- This approach may also be used for interruptions not caused by a disconnection from the motion planner. For example, existing laser cutters will shut off the laser immediately if their safety interlock is tripped, for example if the door is open. However, they do not have the ability to resume seamlessly if the user closes the interlock.
- the same safe-pause techniques may be used to arrange for a graceful resumption of machining after a user-induced stop.
- Lasers are particularly well suited for this type of behavior, because they can turn off the laser at a moment's notice.
- Other types of machines have a lesser ability to ‘pause’ since, for example, the rotating bit of a mill must be stopped.
- FIG. 9 is a process flow chart illustrating a method for determination of a safe pause point in a motion and/or execution plan for a CNC machine, consistent with implementations of the current subject matter.
- a control unit of the CNC machine can receive, from a general purpose computer that is not part of the CNC machine, an execution plan segment of an execution plan.
- the execution plan can be created at the general purpose computer.
- Execution plan segments define operations for causing movement of a movable head of the CNC machine to deliver electromagnetic energy.
- the electromagnetic energy can effect a change in the material 140 within an interior space of the CNC machine.
- the execution plan segment can also include a predefined safe pausing point from which a clean restart of the operations of the execution plan can be performed.
- operations of the computer numerically controlled machine, defined in the execution plan segment can commence only after determining that the execution plan segment has been received by the computer numerically controlled machine.
- the receiving can be up to and including the predefined safe pausing point.
- a pattern, source file, or other selection of operations to be executed by the CNC machine 100 can be initiated from a remote computer.
- the remote computer can be, for example, the first computing system 310 , second computing system 320 , or a computer local to the CNC machine 100 .
- a list of available CNC machines can be provided by a server to the user of the remote computer to allow the user to select a desired CNC machine 100 for their project.
- Other graphical user interfaces can be provided by the server to the user of the remote computer to enable selection and use of connected CNC machines.
- Patterns, associated source files, and/or motion plans can also be stored on the server in a database. If desired, these or similar resources can be referenced by the user or the system instead of requiring that all the files and calculations be generated from scratch.
- a single CNC machine 100 can be accessed or controlled by a number of users.
- a group of users can transmit motion plans to the CNC machine 100 .
- the motion plans can be conducted in sequence on different pieces of material 140 , or conducted in sequence on the same piece of material 140 .
- the motion plans from different users can also be combined into a single motion plan.
- the CNC machine 100 can test for conflicts, or the testing can be performed at the local computer of the user downloading the motion plan or on an intermediate server.
- access to the CNC machine 100 can be restricted to registered users. Some features can have varying levels of permission.
- a user can be in control of their project, able to update the motion plan.
- Other users however, can be given access view the output of sensors in the CNC machine 100 , for example, cameras, power output, temperature readings, etc.
- video can be transmitted in real-time to users watching the manufacturing process even though they are unable to control it.
- the user can be contacted by the server, for example, to inform them that the CNC machine 100 needs attention, that an operation is completed, to provide updates as to the status of their project, etc.
- the form of contact can be, for example, text messages, mobile phone calls, email, mobile app notifications, etc.
- Coarse instructions can be transmitted continually by the server to the CNC machine 100 .
- the server can transmit the motion plan, or part of the motion plan, in an open-loop manner, with no feedback from the CNC machine 100 .
- control of the motion plan can be transferred to the CNC machine 100 in order to allow real-time feedback, particularly in situations where it is determined that latency will be a problem.
- the fine instructions can be performed with the aid of feedback, for example, camera data, sensor data, CNC machine 100 diagnostics, etc.
- the instructions can be performed in this closed-loop manner with the feedback altering the motion plan on the basis of the determined feedback.
- the types of commands that originate locally versus from the server can vary depending on the application or the specification from the user. Error-handling, image analysis from installed camera systems, verification of motion plans, etc. can be performed either at the server or at the CNC machine 100 .
- Memory buffering can also be used to overcome some latency issues, for example sets of instructions can be compiled at the server and transmitted as a packet to the CNC machine 100 . The CNC machine 100 can then execute the instructions while continuing to receive updates, thus not interrupting the machining process while waiting for the next instruction to arrive.
- Each CNC machine 100 is unique in that they have slightly different operation given the same set of instructions. This can be, for example, due to aging components, misalignments, environmental conditions, variation in makes or models of components, etc.
- the motion plan may be calculated with such variations taken into account.
- the motion planning code on the server can calculate the motion plan based in part on known facts about a given CNC machine 100 , for example offsets, backlash in the belts or screws, motor acceleration capabilities, etc. and create or alter the motion plan accordingly.
- the motion planning code may also take into account details about the material being machined such as its location in the bed and the proper parameters necessary to machine it. As a result, the motion plan will work optimally on one machine, with one piece of material, and may not work as well or at all in other machines under other circumstances.
- This architecture can differ from a design in which the CNC machine creates its own motion plan, in that it does not require the machine file (often implemented in G-code), which represents the abstract shapes needed to create the design, to be sent to the machine. Because the machine file is sufficient to create the product on any machine with a motion planner, ownership of the machine file gives control of the underlying intellectual property; ownership of the motion plan alone, however, is less useful.
- An analogy may be drawn to distributing the source code to a program written in a high level language, versus distributing compiled binary code that is only expected to function on a single class of computer. In this case, however, the “compiled” motion plan not only will work on only one class of machines, but may only work well on one singular machine, with one particular piece of material, in one particular location.
- a user duplicates a motion plan intended for another machine, bypassing the motion planner, execution of the motion plan on any CNC machine 100 can be expected to have errors.
- the user may be instructed to access a server to retrieve a correction to the motion plan or a new motion plan generated from the original machine or source file, in either case resulting in a motion plan optimized for that machine and the material the user intends to use. For example, if the user places material in the left side of the bed of a laser cutter and cuts a circle, and then duplicates the motion plan and gives it to another user, that user may place the material in the right side of the machine, in which case it may not be cut.
- the second machine might have a slightly less powerful laser, so the cut may not fully penetrate the material with the motion plan for the first machine.
- the user may be best served by generating a new motion plan for the cut they wish to perform or generating a set of variations to the motion plan for their specific machine.
- Creating motion plans on a server instead of the CNC machine 100 or a local PC allows for further advantages.
- the motion planning algorithms and code can be updated in one place and thereby instantly utilized whenever the server is used.
- Server software may be operated using containerization services such as Docker so that different versions or variations of the software may be easily started and stopped, with different variations used depending on the time, the user, the machine, or other factors.
- containerization services such as Docker
- new versions of the motion planning code can be tested on select machines by sending them motion plans from different software operating in different containers, with ease of toggling between established and proposed versions of the motion planning code.
- a small change can be sent to the CNC machine 100 , for example, a change to a setting, instructions in memory, onboard data tables, etc. This small change might be downloaded with no interruption in the operation of the CNC machine 100 .
- Another implementation can have the firmware update downloaded and swapped out in its entirety.
- Yet another implementation can have the CNC machine 100 power up with minimal firmware installed, only that required for contacting the server. The CNC machine 100 can then download the latest version before proceeding with operation.
- Yet another implementation can have the CNC machine store the firmware in volatile memory, so that it downloads the firmware from a server every time it boots, meaning that a firmware error can always be corrected by rebooting the device and downloading a new firmware.
- the CNC machine 100 can require a local action or authorization before implementing instructions that may have been received from a remote computer.
- the CNC machine 100 can require a user to physically push a button, switch, or other mechanical system, to initiate an operation the CNC machine 100 .
- the switch can cause an electronic signal to be sent to the CNC machine 100 that the instructions can begin.
- the electronic signal could, with proper access to the computing system in the CNC machine 100 be sent without the switch being activated.
- the computer in the CNC machine 100 can receive commands that set the CNC machine 100 into a state identical to one in which the switch had been activated.
- the switch can, also or instead, cause a mechanical connection to open or close, with the connection status being necessary for the instructions to be executed.
- any remote system it is not possible for any remote system to cause the CNC machine 100 to operate in the desired manner because without the switch being physically activated locally by a user, the CNC machine 100 is effectively disabled.
- the switch could bypass the software running on the computer and energize elements of the CNC machine such as providing power to a laser or to motors. In this example, even someone who had modified the software on the machine would be incapable of causing it to start unattended.
- the switch might enable the operation of the laser and not allow any software means of so enabling it, disabling the switch can be allowed in software. If someone does not press the switch, the laser may not operate; but if someone does press the switch, the software can reset it, because of a detected anomaly, because of time elapsed, because the user has moved the material, etc.
- a physical switch necessary for operation of the CNC machine can be incorporated into any CNC machine operations. They can be used with, for example, startup or shutdown, powering one or more components, initiation or continuation of a motion plan, confirmation of an update to a motion plan, opening or closing of the CNC machine lids/doors, control of any of the diagnostics in the CNC machine 100 , activation of cameras, etc.
- a CNC machine 100 can be started or run remotely, with the exception of turning a laser on or off.
- the laser can require local actuation of a button or switch to turn on or off
- the CNC machine 100 can receive updates to motion plans, execute projects, and the like, while still requiring an on-site user to be directly involved in some operations of the laser system.
- Machines may also have “accounts” (distinct entities) on the server, with unique keys so that the server can communicate securely with them. These keys may be assigned by the server, for example when the machine is first powered up; drawn from the environment, for example a combination of date, time, and WiFi network settings; programmed at the factory, for example MAC address; or some other means.
- a given piece of intellectual property for example, a pattern to cut a product
- a person may buy a pattern.
- a user may buy a piece of material with a marking on it, for example a unique barcode, that entitles the bearer of the material to some intellectual property, such as a free pattern.
- a pattern may be “free” with the purchase of the machine, and any user who uses that particular machine has access to it.
- Access to intellectual property can be granted by users to other users, for example, one user who owns the machine may have permission to delegate or license usage rights to another user. Usage can also be restricted geographically, to certain companies or individuals, etc.
- the ability to machine a given piece of intellectual property may be limited to a certain number of times, to certain materials, to certain times or locales, or any other restriction that may be expressed in software. This could be enforced by the motion planner refusing to create a motion plan for intellectual property that was not properly acquired. For example, a user might purchase the right to print up to five wallets bearing the likeness of a well-known superhero. Once the fifth wallet is printed, no further motion plans for that wallet may be generated without further licensing payment.
- Variations may be made for extenuating circumstances. For example, if the print was aborted, another attempt might be allowed. The aborted attempt could be verified through onboard cameras or sensors. If a user was dissatisfied with a print, the user could place the print in the machine to be imaged. The machine could then deface or destroy the failed print, and verify that the destruction occurred with a camera, before issuing a refund.
- the server can receive analytics data relating to usage of the CNC machine 100 or the performance of the CNC machine 100 . Since all source files are submitted to the server, aggregated data can be compiled including source file or motion plan file size, the frequency of use of different features (e.g. engrave versus cutting), the frequency of use of different file types, and so on.
- Analytics related to the machine file can include which file types require the greatest amount of processing resources to compute, or which path algorithm is, on average, fastest to execute. Further analytics related to the motion plan can include the average speed at which the motors operate, the percentage of time that the laser is at full power, and the average cut time of the motion plan.
- machine usage or information may be correlated with errors, returns, malfunctions, or other problems. For example, it may be determined that the majority of units that were returned with a stuck fan exhibited a characteristic vibration that was measured on the devices' accelerometers in the weeks before failure. Users who were experiencing the vibration could pre-emptively be sent replacement fans. In another example, it might be determined that machines that incorporate laser tubes from Supplier A have lower average output power than machines that use tubes from Supplier B. This would allow better future vendor selection.
- Functions of the CNC machine 100 can benefit by performing some processing on remote computing systems.
- 3-D rendering and overlaying of realistic material 140 textures from either a library (based on the identification of the material) or a camera (from a picture taken directly of the material) can be performed by fast servers and images transmitted to a user.
- Changes to a project for example rearranging the layout of the pieces on the underlying material, can be quickly translated into an updated motion plan by taking into account how the new cutting pattern will be reflected in the final project.
- a motion plan can be analyzed in the context of the particular CNC machine 100 to determine if the motion plan will exceed machine motion limits.
- the motion plan can also be updated based on known, or real-time, determination of systematic errors or other characteristics of operation that may be unique to the particular CNC machine 100 executing the project.
- FIG. 10 is a process flow chart illustrating generating a project preview on a distributed computing system, consistent with some implementations of the current subject matter.
- a user can generate or supply patterns to be converted into a motion plan that the CNC machine 100 can execute.
- a pattern can be any visual representation of what it is that the CNC machine 100 is to cut, print, form, etc.
- the pattern can be a drawing, image, outline of a part, etc.
- the process can include: starting with a pattern, manipulating the pattern into a modified pattern, converting the modified pattern into a motion plan, and executing the motion plan by the CNC machine 100 .
- the pattern can be supplied, for example by the user, to a preview device in the form of a pre-existing image file.
- the image file can be in any file format, for example, a JPEG, PDF, bitmap, Scalable Vector Graphics (SVG), etc.
- the preview device can be, for example, a mobile device, laptop computer, tablet computer, desktop computer, CNC machine 100 , etc.
- the image file can also be the same as a source file, and vice versa.
- we distinguish between an image file and a source file by generally assuming that the image file is not in a finalized state to be used as a source file.
- image files corresponding to the material 140 on which the pattern is to be cut can be specified by, for example, the user, imaged by the cameras in the CNC machine 100 , identified from the watermark, etc. If images of the real material 140 are not being acquired by the cameras, then images of the material 140 can be accessed from a library or other database that stores images of materials. If the material 140 can be identified, for example by a barcode or by image recognition, then specific post-fabrication material 140 properties can be accessed. For example, a light colored wood may turn dark when a certain amount of laser power is applied; this can be determined for a more accurate preview of what the material 140 will look like post-fabrication. In one implementation, the material 140 is uniquely identified e.g.
- the machine determines the material 140 's unique identifier and retrieves the photograph, showing what the material 140 looks like underneath the protective layer. If called upon to preview a project with that material, it will use the stored image of the material's appearance in the preview.
- the pattern can, if needed, be converted to an intermediate format, for example, an SVG format, and sent to a web browser or other software program capable of manipulating SVG files.
- the received SVG file (or other appropriate file type) can be rotated, expanded, translated, or the like, by the native software in the receiving computer or by a remote server, and then either those transformations or the resulting transformed file may be returned to the server.
- the image files for the material 140 can be combined with the pattern to provide a preview of what the cut will look like on the material 140 .
- the type of cut can be selected by the user and the preview updated accordingly.
- the user can specify a cut depth for each point on the pattern.
- the cut depth can range from, for example, zero (or no effect) to 100 indicating a cut through the material 140 .
- a library or database of recorded cuts for the given material 140 can be accessed in order to show what the cut will look like, for example, with the specified depth, on the specified material 140 .
- Additional features of the preview can include showing effects of laser power (scorching), varying the spot size of the laser, etc.
- the preview can include, for example, displaying the pattern as it is built up, showing the necessary buttressing to support the pattern, etc.
- Notes or other instructions can be generated during the preview and appended as metadata to the source files used to generate the motion plan, for example, comments, instructions, etc. Some metadata can be converted into a portion of the motion plan while other metadata can be stored for later reference and associated with the motion plan.
- the manipulated or updated preview can be used to modify or update the source files, for example the SVG files, used to generate the motion plan.
- Data corresponding to the preview can be transmitted to a remote computing device, for example, a server, mainframe, cloud network, etc. Once transmitted, the manipulated preview can be converted to back to its original file type, another file type, or to a motion plan.
- the motion plan can be transmitted to one or more computing systems, CNC machines, etc.
- the motion plan can then be executed or modified by the local machine as needed.
- FIG. 11 is a diagram illustrating a material 140 overlay for previewing a project, consistent with some implementations of the current subject matter.
- a graphical representation of what a finished project will look can be displayed on a preview device.
- the preview device can, for example, be a mobile device, a tablet computer, a desktop computer, a screen integrated with the CNC machine 100 , etc.
- images of a pattern for example an outline of a cut, can be overlaid with images of a material 140 , for example from the CNC machine 100 or from a data library.
- the pattern can be modified by the user based on a rendering of the pattern on the material 140 .
- FIG. 11 is a diagram illustrating a material 140 overlay for previewing a project, consistent with some implementations of the current subject matter.
- a graphical representation of what a finished project will look can be displayed on a preview device.
- the preview device can, for example, be a mobile device, a tablet computer, a desktop computer, a screen integrated with the CNC machine
- the top portion shows material 140 with a pattern 1110 overlaid upon it and the grain running the short way across each piece of the pattern 1110 . If a user wished the pieces to have a grain running the long way across each piece of the cut pattern, then the pattern can be rotated as shown in the bottom portion of FIG. 11 resulting in the desired pattern 1120 .
- FIG. 12 is a diagram illustrating a collection of 2-D patterns previewed as a three dimensional object, consistent with some implementations of the current subject matter.
- 3-D visualization can be combined with a material 140 preview to render what the finished product will look like given a particular material 140 .
- a 3-D design can be provided by, for example, a scan by the CNC machine 100 , a data file by the user, etc.
- a 2-D representation of the pattern to be cut on the material 140 can be generated to construct the pieces necessary to construct the 3-D product. For example, if a box was imaged, then the pattern would show five pieces, the four walls and the bottom.
- the material type of the material 140 can be specified or scanned and an image of the material 140 then integrated with the cut pattern.
- One way in which the material 140 can be scanned is by placing the material 140 in the CNC machine 100 and imaging the material 140 with the cameras. Also, any watermarks, if present, that specify material appearance or other properties can also be acquired. If no scan of real material 140 is available, then a material 140 can be selected from a library or other database storing known or standard characteristics for particular materials. Once known, the features of the material 140 can be included in the preview image to show, for example, colors, grain, knots, etc.
- the combination of the pattern and preview of the material 140 can be rendered as a 3-D image to show what the final product will look like when assembled. This can allow the user to interactively manipulate the preview to, for example, orient portions of the 2-D representation to capture a particular grain pattern, avoid defects in the material 140 surface, etc.
- data representing the user-defined cut pattern can be uploaded to the cloud, the CNC machine 100 , or other connected computing system.
- any adjustments made by the user to the layout are taken into account. The process can then proceed by, for example, generating the motion plan.
- FIG. 12 One example of using the material 140 overlay feature is shown in FIG. 12 .
- a pattern 1210 for a tall box is shown on a material 140 with a horizontal grain.
- a three-dimensional preview 1220 can be generated showing the finished product and including the features of the material 140 , in this case the grain.
- the three-dimensional preview 1220 When assembled according to the pattern 1210 , the three-dimensional preview 1220 would show a box with sides that have both horizontal and vertical grain patterns. To correct this, the user can manipulate the pattern 1210 to arrive at the pattern 1230 . After doing so, the generated three-dimensional preview 1240 would show a box with the grain patterns all being vertical.
- the extents of the material 140 can be identified by imaging the material 140 and analyzing the resultant images. For example, if the material 140 has a known image, such as being associated with a specific product, the material 140 can be identified from archived images of the product. High-contrast features can be used to identify candidate material 140 s, for example, features of grain, texture, reflectivity, etc. There can be a pattern underneath the material 140 , such as a hex pattern on the support or bed of the CNC machine 100 . When material 140 on the pattern is imaged, missing portions of the pattern can be used to determine the extents of the material 140 .
- the cut pattern can be located inside the material 140 with the preview or automatically when generating the motion plan. If a user attempts to execute a motion plan that extends outside the extents of the material 140 , a warning can be provided. Alternatively, the CNC machine 100 can be configured to not allow motion plans to be executed outside a defined material boundary.
- Subtractive CNC machines such as CNC mills, lasers, plasma cutters, and water jets remove a thin strip of material when cutting, called the “kerf”. For example, in a laser with a 0.01′′ kerf, cutting a 1′′ square in a piece of material yields a 0.995′′ square and a 1.005′′ hole, as the laser cuts down the centerline and removes 0.01′′ of material split evenly between the center and the outside. This can be clearly undesirable in some applications, as complex calculations must be made to ensure that parts intersect and join properly.
- a user can select what part of a cut pattern corresponds to “project” (the dimensions that should be accurate) and what corresponds to “scrap” (the dimensions that will be affected by kerf).
- the selection can occur, for example, in the preview, by marks on the material 140 , etc. For example, if the user was creating a 1′′ square, the user can indicate that with a filled-in one inch square. If the user wanted a 1′′ hole, they can create a large filled-in shape with an unfilled 1′′ hole, with the unfilled portion designated as scrap.
- kerf width depends on a large variety of factors, including the material, the laser power, the ambient temperature, the cut speed, the lens chosen, the focal distance, and more.
- a 1 ⁇ 8′′ end mill can be expected to consistently remove a 1 ⁇ 8′′ path of material, regardless of the material chosen. Calculating and accounting for kerf width is a critical challenge that no laser has solved. For example, if a piece made of wood is to mate properly with a piece made of acrylic, their different kerfs must be taken into account.
- the kerf width can be calculated, for example, either by lookup with a known material 140 , by measurement after cutting and inspecting, by manual entry by the user after a test cut and manual measurement, etc., and then automatically compensated for.
- the design and/or motion plan can be reorganized by the CNC machine 100 or other server-based computer program so that the material 140 perimeter is expanded by one half-kerf-measure, so the resulting project is exactly the right size, for example, either 1′′ square with a bigger hole, or a 1′′ hole with a smaller square.
- FIG. 13 is a diagram illustrating parametric modeling incorporated into a project preview, consistent with some implementations of the current subject matter.
- Parametric modeling can describe constraining a first dimension of a portion of a pattern to a second dimension determined by the system or specified by a user. For example, there can be a pattern 1310 where a rectangular slot 1320 of width D is located in the pattern 1310 . The user can specify that a second pattern 1330 is to contain a tab 1340 which will be inserted into the slot 1320 . The width D of the tab 1340 is associated with the thickness D of the material 140 that the second pattern 1330 is to be cut on. Some variation can be specified, for example, a tight fit, loose fit, etc.
- the width D of the slot 1320 in the first pattern 1310 can be constrained to generally or precisely match the thickness D of the material 140 for the second pattern 830 , after accounting for material removed by the kerf.
- the material 140 thickness can be, for example, determined automatically by having the CNC machine measure the material 140 and report the results back to the software that controls the parametric model. This is an improvement on traditional techniques, where if a parametric model was created, the parameters were abstract. In this invention, the parameters may be related to physical characteristics of the materials that may be determined by the machine via measurement or lookup. In so doing, it is possible for a complex three dimensional design to be cut reliably from material of varying thickness.
- any changes to the thickness of the material 140 can propagate through the patterns according the specified constraints. This can be a computationally intensive operation if many cut dimensions need to be adjusted and/or re-optimized. Making such changes is an operation well-suited to being performed by a server.
- the updated patterns can then be displayed as part of the preview. Also, if changes to a dimension cause a constrained dimension to violate a predefined rule, an alert can be provided to the user. For example, it can be verified that a dimension is not too small or large (too small to be cut or too large to fit on the material 140 ), that portions of the pattern would overlap, etc.
- Any of the parametric modeling or other previewing methods described herein can be combined with calculations of the kerf size to form a motion plan that will cut pieces that will fit according to the specified pattern. Also, for motion plans executed across multiple pieces of material 140 , changes to one pattern can propagate to the other materials 140 , with the corresponding checks executed by the computer program generating the motion plans to see that slots/tabs are within range and do not cause conflict with any other parts of the motion plans.
- Derivative analysis of the motion plan can be used to calculate higher derivatives (of arbitrary degree, for example velocity, acceleration, and jerk) of the motion plan.
- the derivative analysis can be used to determine that operational thresholds are never exceeded.
- the derivative analysis can be performed remotely, such as on a cloud-based server.
- the allowable parameters can be modified based on closed-loop feedback. For example, if the head constantly overshoots by a small amount, this can indicate a weak motor that is unable to provide the acceleration required by the motion plan. This condition, possibly unique to the CNC machine 100 , can be corrected for by updating the acceleration parameters in the motion plan.
- the user may indicate that the machine is shaking, possibly because it is sitting on a flimsy table. Parameters may be adjusted to create less vibration.
- sources of systematic error which can be unique to each CNC machine 100 and also change over time, can be determined and corrected for. For example, if a part is created according to the motion plan but has a mis-alignment in one direction, the misalignment can be detected and stored either on the CNC machine 100 or on a server. Future motion plans can reference the stored file and compensate for the misalignment by creating motion plans that offset the error, creating a new motion plan or by applying a local correction to any received commands. This technique can be applied to, for example, alignments, backlash/hysteresis, offsets, rotations, skews, etc.
- FIG. 14 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter.
- sensor data can be acquired from at least one sensor.
- sensor data can be transmitted to a first computing system separate from the CNC machine 100 .
- the CNC machine 100 can receive an update to the motion plan from the first computing system.
- the motion plan can be updated based on the received update.
- the updated motion plan can be executed by the CNC machine 100 .
- FIG. 15 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter.
- a control unit of a computer numerically controlled machine receives, from a general purpose computer, a part of an execution plan created at the general purpose computer, which is housed separately from the computer numerically controlled machine.
- the execution plan defines operations for causing movement of a movable head of the computer numerically controlled machine to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine.
- state data for a plurality of subsystems of the computer numerically controlled machine are recorded while performing operations of the computer numerically controlled machine defined in the execution plan, and at 1530 , the operations are paused at a point of the execution plan upon determining that a next part of the execution plan to be completed has not been received.
- the operations of the execution plan are restarted from the point at 1540 .
- the restarting includes performing one or more actions to place the computer numerically controlled machine back into its state at the point based on the recorded state data before resuming with the next part of the execution plan after it has been received.
- FIG. 16 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter.
- an execution plan segment of an execution plan created at the general purpose computer can be received at a control unit of a computer numerically controlled machine.
- the execution plan can be from a general purpose computer that is housed separately from a computer numerically controlled machine.
- the execution plan segment can define operations for causing movement of a movable head of the computer numerically controlled machine to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine.
- the execution plan segment can include a predefined safe pausing point from which the execution plan can be restarted while minimizing a difference in appearance of a finished work-product relative to if a pause and restart are not necessary.
- the execution plan can comprise a motion plan defining movement of the movable head and control commands for operation of one or more other components of the computer numerically controlled machine.
- the one or more other components can comprise one or more of a laser, a power supply, a fan, a thermal control system, an air filter, a coolant pump, a light source, a camera mounted on the movable head, a camera, or other components mounted inside the interior space but not on the movable head.
- a determination that the execution plan comprises a next execution plan segment to be executed after the execution plan segment can be made. In some variations, a determination can be made that the next execution plan segment is fully received by the control unit of a computer numerically controlled machine.
- the operations can be paused at the predefined safe pausing point until the next execution plan segment is fully received.
- operations of the computer numerically controlled machine defined in the execution plan segment can be commenced only after determining that the execution plan segment has been received up to and including the predefined safe pausing point by the computer numerically controlled machine. Where the next execution plan segment is fully received by the control unit of a computer numerically controlled machine, the operations of the execution plan can be restarted from the predefined safe pausing point according to the next execution plan segment after the determining.
- a forecast of variations in sensor data to be generated by one or more sensors of the computer numerically controlled machine during the operations of the execution plan segment can be received at the control unit of the computer numerically controlled machine.
- the actual data from the one or more sensors can be compared with the forecast.
- the comparison can be performed by one or more of the computer numerically controlled machine, a general purpose computer in communication with the computer numerically controlled machine, or the like.
- the forecast can be based on expected electrical, optical, mechanical, thermal results, or the like, of the operations of the execution plan.
- One or more aspects or features of the subject matter described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) computer hardware, firmware, software, and/or combinations thereof.
- ASICs application specific integrated circuits
- FPGAs field programmable gate arrays
- These various aspects or features can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which can be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
- the programmable system or computing system may include clients and servers.
- a client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
- machine-readable signal refers to any signal used to provide machine instructions and/or data to a programmable processor.
- the machine-readable medium can store such machine instructions non-transitorily, such as for example as would a non-transient solid-state memory or a magnetic hard drive or any equivalent storage medium.
- the machine-readable medium can alternatively or additionally store such machine instructions in a transient manner, such as for example as would a processor cache or other random access memory associated with one or more physical processor cores.
- one or more aspects or features of the subject matter described herein can be implemented on a computer having a display device, such as for example a cathode ray tube (CRT) or a liquid crystal display (LCD) or a light emitting diode (LED) monitor for displaying information to the user and a keyboard and a pointing device, such as for example a mouse or a trackball, by which the user may provide input to the computer.
- a display device such as for example a cathode ray tube (CRT) or a liquid crystal display (LCD) or a light emitting diode (LED) monitor for displaying information to the user
- LCD liquid crystal display
- LED light emitting diode
- a keyboard and a pointing device such as for example a mouse or a trackball
- feedback provided to the user can be any form of sensory feedback, such as for example visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including, but not limited to, acoustic, speech, or tactile input.
- Other possible input devices include, but are not limited to, touch screens or other touch-sensitive devices such as single or multi-point resistive or capacitive trackpads, voice recognition hardware and software, optical scanners, optical pointers, digital image capture devices and associated interpretation software, and the like.
- phrases such as “at least one of” or “one or more of” may occur followed by a conjunctive list of elements or features.
- the term “and/or” may also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it used, such a phrase is intended to mean any of the listed elements or features individually or any of the recited elements or features in combination with any of the other recited elements or features.
- the phrases “at least one of A and B;” “one or more of A and B;” and “A and/or B” are each intended to mean “A alone, B alone, or A and B together.”
- a similar interpretation is also intended for lists including three or more items.
- the phrases “at least one of A, B, and C;” “one or more of A, B, and C;” and “A, B, and/or C” are each intended to mean “A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together.”
- Use of the term “based on,” above and in the claims is intended to mean, “based at least in part on,” such that an unrecited feature or element is also permissible.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Optics & Photonics (AREA)
- Mechanical Engineering (AREA)
- Plasma & Fusion (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Automation & Control Theory (AREA)
- Manufacturing & Machinery (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Laser Beam Processing (AREA)
- Numerical Control (AREA)
Abstract
Description
- The current application claims priority to U.S. Provisional Patent Application No. 62/115,562 filed Feb. 12, 2015; U.S. Provisional Patent Application No. 62/115,571 filed Feb. 12, 2015; U.S. Provisional Patent Application No. 62/222,756 filed Sep. 23, 2015; U.S. Provisional Patent Application No. 62/222,757 filed Sep. 23, 2015; and U.S. Provisional Patent Application No. 62/222,758 filed Sep. 23, 2015. The written description, claims, and drawings of all of the aforementioned applications are incorporated herein by reference.
- The subject matter described herein relates to manufacturing processes implementing, or aided by, distributed processing of CNC machine data.
- Manufacturing systems, such as “3-D” printers, laser cutters, CNC machines, and the like, can be used to create complicated items where traditional manufacturing techniques like moldings or manual assembly fail. Such automated methods receive instructions that specify the cuts, layers, patterns, etc. before a machine begins construction. The instructions can be in the form of computer files transferred to the memory of a computer controller for the machine and interpreted at run-time to provide a series of steps in the manufacturing process.
- In one aspect, a method includes receiving an execution plan segment of an execution plan created at a general purpose computer. The receiving occurs at a control unit of a computer numerically controlled machine, and the general purpose computer is not part of the computer numerically controlled machine (e.g. it is housed separately from the CNC machine). The execution plan segment defines operations for causing movement of a movable head of the computer numerically controlled machine to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine. The execution plan segment further includes a predefined safe pausing point from which a clean restart of the operations of the execution plan can be performed. In other words, the predefined safe pausing point is one from which the execution plan can be restarted while minimizing a difference in appearance of a finished work-product relative to if a pause and restart are not necessary. The method further includes commencing operations of the computer numerically controlled machine defined in the execution plan segment only after determining that the execution plan segment has been received up to and including the predefined safe pausing point by the computer numerically controlled machine.
- In some variations one or more of the following features can optionally be included in any feasible combination. A method can include determining that the execution plan comprises a next execution plan segment to be executed after the execution plan segment, and pausing the operations at the predefined safe pausing point until the next execution plan segment is fully received. A method can include determining that the next execution plan segment is fully received, and restarting the operations of the execution plan from the predefined safe pausing point according to the next execution plan segment after the determining. The execution plan can include a motion plan defining movement of the movable head and control commands for operation of one or more other components of the computer numerically controlled machine. The one or more other components can include one or more of a laser, a power supply, a fan, a thermal control system, an air filter, a coolant, a coolant pump a light source, a lock, a camera mounted on the movable head, and a camera mounted inside the interior space but not on the movable head. A method can include receiving, at the computer numerically controlled machine, a forecast of variations in sensor data to be generated by one or more sensors of the computer numerically controlled machine during the operations of the execution plan segment, and comparing actual data from the one or more sensors with the forecast. The forecast can be based on expected electrical, optical, mechanical, and thermal results of the operations of the execution plan.
- In another interrelated aspect, a method includes a control unit of a computer numerically controlled machine receiving a part of an execution plan created at a general purpose computer that is housed separately from (e.g. not part of) the computer numerically controlled machine. The execution plan defines operations for causing movement of a movable head of the computer numerically controlled machine to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine. State data are recorded for a plurality of subsystems of the computer numerically controlled machine while performing operations of the computer numerically controlled machine defined in the execution plan. The operations are paused at a point of the execution plan upon determining that a next part of the execution plan to be completed has not been received. The operations of the execution plan are subsequently restarted from the point, and the restarting includes performing one or more actions to place the computer numerically controlled machine back into its state at the point based on the recorded state data before resuming with the next part of the execution plan after it has been received.
- In another interrelated aspect, a computer numerically controlled machine includes a network connection over which the numerically controlled machine receives data, a movable head configured to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine, and a controller configured to perform operations. The operations include receiving an execution plan comprising a motion plan via the network connection, and causing the movable head to execute actions defined in the motion plan. Other operations, such as for example those discussed elsewhere herein, can optionally also be performed by the controller.
- In some variations one or more of the following features can optionally be included in any feasible combination. The execution plan can include a motion plan defining a temporal element indicating times or time offsets at which each action necessary to create fabricated result should occur. The motion plan can be precomputed at a remote computer in communication with the network connection of the computer numerically controlled machine over a network that is at least one of lossy and having variable latency and/or having variable bandwidth. The network can be, for example, the Internet.
- In another interrelated aspect, a computer numerically controlled machine includes a movable head configured to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine, and
- a control unit configured to perform operations that enable operation of the computer numerically controlled machine using an execution plan delivered to the computer numerically controlled machine over a lossy and/or variable latency and/or variable bandwidth network connection.
- Implementations of the current subject matter can include, but are not limited to, methods consistent with the descriptions provided herein as well as articles that comprise a tangibly embodied machine-readable medium operable to cause one or more machines (e.g., computers, etc.) to result in operations implementing one or more of the described features. Similarly, computer systems are also described that may include one or more processors and one or more memories coupled to the one or more processors. A memory, which can include a computer-readable storage medium, may include, encode, store, or the like one or more programs that cause one or more processors to perform one or more of the operations described herein. Computer implemented methods consistent with one or more implementations of the current subject matter can be implemented by one or more data processors residing in a single computing system or multiple computing systems. Such multiple computing systems can be connected and can exchange data and/or commands or other instructions or the like via one or more connections, including but not limited to a connection over a network (e.g. the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, or the like), via a direct connection between one or more of the multiple computing systems, etc.
- The accompanying drawings, which are incorporated in and constitute a part of this specification, show certain aspects of the subject matter disclosed herein and, together with the description, help explain some of the principles associated with the disclosed implementations. In the drawings,
-
FIG. 1 is an elevational view of a CNC machine with a camera positioned to capture an image of the entire material bed and another camera positioned to capture an image of a portion of the material bed, consistent with some implementations of the current subject matter; -
FIG. 2 is a top view of the implementation of the CNC machine shown inFIG. 1 ; -
FIG. 3A is a diagram illustrating one example of an SVG source file, consistent with some implementations of the current subject matter; -
FIG. 3B is an example of a graphical representation of the cut path in the CNC machine, consistent with some implementations of the current subject matter; -
FIG. 3C is a diagram illustrating the machine file corresponding to the cut path and the source file, consistent with some implementations of the current subject matter; -
FIG. 4A is a diagram illustrating the addition of images, consistent with some implementations of the current subject matter; -
FIG. 4B is a diagram illustrating the subtraction of images, consistent with some implementations of the current subject matter; -
FIG. 4C is a diagram illustrating the differencing of images to isolate a simulated internal lighting effect, consistent with some implementations of the current subject matter; -
FIG. 5 is a diagram illustrating a cloud-based system supporting operation of a - CNC machine, consistent with some implementations of the current subject matter;
-
FIG. 6 is a process flow chart illustrating generating a motion plan for a CNC machine on distributed computing systems, consistent with some implementations of the current subject matter; -
FIG. 7 is a system diagram illustrating general purpose computer executing an execution plan to control a CNC machine, consistent with implementations of the current subject matter; -
FIG. 8 is a diagram illustrating an example of determination of a safe pause point in a motion and/or execution plan for a CNC machine, consistent with some implementations of the current subject matter; -
FIG. 9 is a process flow chart illustrating a method for determination of a safe pause point in a motion and/or execution plan for a CNC machine, consistent with implementations of the current subject matter; -
FIG. 10 is a process flow chart illustrating generating a project preview on a distributed computing system, consistent with some implementations of the current subject matter; -
FIG. 11 is a diagram illustrating a material overlay for previewing a project, consistent with some implementations of the current subject matter; -
FIG. 12 is a diagram illustrating a collection of 2-D patterns previewed as a three dimensional object, consistent with some implementations of the current subject matter; -
FIG. 13 is a diagram illustrating parametric modeling incorporated into a project preview, consistent with some implementations of the current subject matter; -
FIG. 14 is a process flow chart a method for updating a motion plan based on sensor data, consistent with implementations of the current subject matter; -
FIG. 15 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter; and -
FIG. 16 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter. - When practical, similar reference numbers denote similar structures, features, or elements.
- The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, and from the claims. While certain features of the currently disclosed subject matter may be described for illustrative purposes in relation to using machine-vision for aiding automated manufacturing processes (e.g. a CNC process), it should be readily understood that such features are not intended to be limiting.
- As used herein, the term “cutting” can generally refer to altering the appearance, properties, and/or state of a material. Cutting can include, for example, making a through-cut, engraving, bleaching, curing, burning, etc. Engraving, when specifically referred to herein, indicates a process by which a CNC machine modifies the appearance of the material without fully penetrating it. For example, in the context of a laser cutter, it can mean removing some of the material from the surface, or discoloring the material e.g. through an application of focused electromagnetic radiation delivering electromagnetic energy as described below.
- As used herein, the term “laser” includes any electromagnetic radiation or focused or coherent energy source that (in the context of being a cutting tool) uses photons to modify a substrate or cause some change or alteration upon a material impacted by the photons. Lasers (whether cutting tools or diagnostic) can be of any desired wavelength, including for example, microwave, lasers, infrared lasers, visible lasers, UV lasers, X-ray lasers, gamma-ray lasers, or the like.
- Also, as used herein, “cameras” includes, for example, visible light cameras, black and white cameras, IR or UV sensitive cameras, individual brightness sensors such as photodiodes, sensitive photon detectors such as a photomultiplier tube or avalanche photodiodes, detectors of infrared radiation far from the visible spectrum such as microwaves, X-rays, or gamma rays, optically filtered detectors, spectrometers, and other detectors that can include sources providing electromagnetic radiation for illumination to assist with acquisition, for example, flashes, UV lighting, etc.
- Also, as used herein, reference to “real-time” actions includes some degree of delay or latency, either programmed intentionally into the actions or as a result of the limitations of machine response and/or data transmission. “Real-time” actions, as used herein, are intended to only approximate an instantaneous response, or a response performed as quickly as possible given the limits of the system, and do not imply any specific numeric or functional limitation to response times or the machine actions resulting therefrom.
- Also, as used herein, unless otherwise specified, the term “material” is the material that is on the bed of the CNC machine. For example, if the CNC machine is a laser cutter, lathe, or milling machine, the material is what is placed in the CNC machine to be cut, for example, the raw materials, stock, or the like. In another example, if the CNC machine is a 3-D printer, then the material is either the current layer, or previously existent layers or substrate, of an object being crafted by the 3-D printing process. In yet another example, if the CNC machine is a printer, then the material can be the paper onto which the CNC machine deposits ink.
- Introduction
- A computer numerical controlled (CNC) machine is a machine that is used to add or remove material under the control of a computer. There can be one or more motors or other actuators that move one or more heads that perform the adding or removing of material. For CNC machines that add material, heads can incorporate nozzles that spray or release polymers as in a typical 3D printer. In some implementations, the heads can include an ink source such as a cartridge or pen. In the case of 3-D printing, material can be built up layer by layer until a fully realized 3D object has been created. In some implementations, the CNC machine can scan the surface of a material such as a solid, a liquid, or a powder, with a laser to harden or otherwise change the material properties of said material. New material may be deposited. The process can be repeated to build successive layers. For CNC machines that remove material, the heads can incorporate tools such as blades on a lathe, drag knives, plasma cutters, water jets, bits for a milling machine, a laser for a laser cutter/engraver, etc.
-
FIG. 1 is an elevational view of aCNC machine 100 with a camera positioned to capture an image of anentire material bed 150 and another camera positioned to capture an image of a portion of thematerial bed 150, consistent with some implementations of the current subject matter.FIG. 2 is a top view of the implementation of theCNC machine 100 shown inFIG. 1 . - The
CNC machine 100 shown inFIG. 1 corresponds to one implementation of a laser cutter. While some features are described in the context of a laser cutter, this is by no means intended to be limiting. Many of the features described below can be implemented with other types of CNC machines. TheCNC machine 100 can be, for example, a lathe, engraver, 3D-printer, milling machine, drill press, saw, etc. - While laser cutter/engravers share some common features with CNC machines, they have many differences and present particularly challenging design constraints. A laser cutter/engraver is subject to regulatory guidelines that restrict the egress of electromagnetic radiation from the unit when operating, making it challenging for light to enter or escape the unit safely, for example to view or record an image of the contents. The beam of a laser cutter/engraver must be routed from the emitter to the area to be machined, potentially requiring a series of optical elements such as lenses and mirrors. The beam of a laser cutter/engraver is easily misdirected, with a small angular deflection of any component relating to the beam path potentially resulting in the beam escaping the intended path, potentially with undesirable consequences. A laser beam may be capable of causing material destruction if uncontrolled. A laser cutter/engraver may require high voltage and/or radio frequency power supplies to drive the laser itself. Liquid cooling is common in laser cutter/engravers to cool the laser, requiring fluid flow considerations. Airflow is important in laser cutter/engraver designs, as air may become contaminated with byproducts of the laser's interaction with the material such as smoke, which may in turn damage portions of the machine for example fouling optical systems. The air exhausted from the machine may contain undesirable byproducts such as smoke that must be routed or filtered, and the machine may need to be designed to prevent such byproducts from escaping through an unintended opening, for example by sealing components that may be opened. Unlike most machining tools, the kerf—the amount of material removed during the operation—is both small and variable depending on the material being processed, the power of the laser, the speed of the laser, and other factors, making it difficult to predict the final size of the object. Also unlike most machining tools, the output of the laser cutter/engraver is very highly dependent on the speed of operation; a momentary slowing can destroy the workpiece by depositing too much laser energy. In many machining tools, operating parameters such as tool rotational speed and volume of material removed are easy to continuously predict, measure, and calculate, while laser cutter/engravers are more sensitive to material and other conditions. In many machining tools, fluids are used as coolant and lubricant; in laser cutter/engravers, the cutting mechanism does not require physical contact with the material being affected, and air or other gasses may be used to aid the cutting process in a different manner, by facilitating combustion or clearing debris, for example.
- The
CNC machine 100 can have a housing surrounding an enclosure or interior area defined by the housing. The housing can include walls, a bottom, and one or more openings to allow access to theCNC machine 100, etc. There can be amaterial bed 150 that can include a top surface on which thematerial 140 generally rests. - In the implementation of
FIG. 1 , the CNC machine can also include an openable barrier as part of the housing to allow access between an exterior of the CNC machine and an interior space of the CNC machine. The openable barrier can include, for example, one or more doors, hatches, flaps, and the like that can actuate between an open position and a closed position. The openable barrier can attenuate the transmission of light between the interior space and the exterior when in a closed position. Optionally, the openable barrier can be transparent to one or more wavelengths of light or be comprised of portions of varying light attenuation ability. One type of openable barrier can be alid 130 that can be opened or closed to putmaterial 140 on thematerial bed 150 on the bottom of the enclosure. Various example implementations discussed herein include reference to a lid. It will be understood that absent explicit disclaimers of other possible configurations of the operable barrier or some other reason why a lid cannot be interpreted generically to mean any kind of openable barrier, the use of the term lid is not intended to be limiting. One example of an openable barrier can be a front door that is normally vertical when in the closed position and can open horizontally or vertically to allow additional access. There can also be vents, ducts, or other access points to the interior space or to components of theCNC machine 100. These access points can be for access to power, air, water, data, etc. Any of these access points can be monitored by cameras, position sensors, switches, etc. If they are accessed unexpectedly, theCNC machine 100 can execute actions to maintain the safety of the user and the system, for example, a controlled shutdown. In other implementations, theCNC machine 100 can be completely open (i.e. not having alid 130, or walls). Any of the features described herein can also be present in an open configuration, where applicable. - As described above, the
CNC machine 100 can have one or more movable heads that can be operated to alter thematerial 140. In some implementations, for example the implementation ofFIG. 1 , the movable head can be thehead 160. There may be multiple movable heads, for example two or more mirrors that separately translate or rotate in able to locate a laser beam., or multiple movable heads that operate independently, for example two mill bits in a CNC machine capable of separate operation, or any combination thereof. In the case of a laser-cutter CNC machine, thehead 160 can include optical components, mirrors, cameras, and other electronic components used to perform the desired machining operations. Again, as used herein, thehead 160 typically is a laser-cutting head, but can be a movable head of any type. - The
head 160, in some implementations, can be configured to include a combination of optics, electronics, and mechanical systems that can, in response to commands, cause a laser beam or electromagnetic radiation to be delivered to cut or engrave thematerial 140. TheCNC machine 100 can also execute operation of a motion plan for causing movement of the movable head. As the movable head moves, the movable head can deliver electromagnetic energy to effect a change in thematerial 140 that is at least partially contained within the interior space. In one implementation, the position and orientation of the optical elements inside thehead 160 can be varied to adjust the position, angle, or focal point of a laser beam. For example, mirrors can be shifted or rotated, lenses translated, etc. Thehead 160 can be mounted on atranslation rail 170 that is used to move thehead 160 throughout the enclosure. In some implementations the motion of the head can be linear, for example on an X axis, a Y axis, or a Z axis. In other implementations, the head can combine motions along any combination of directions in a rectilinear, cylindrical, or spherical coordinate system. - A working area for the
CNC machine 100 can be defined by the limits within which the movable head can cause delivery of a machining action, or delivery of a machining medium, for example electromagnetic energy. The working area can be inside the interior space defined by the housing. It should be understood that the working area can be a generally three-dimensional volume and not a fixed surface. For example, if the range of travel of a vertically oriented laser cutter is a 10″×10″ square entirely over thematerial bed 150, and the laser from the laser beam comes out of the laser cutter at a height of 4″ above the material bed of the CNC machine, that 400 in2 volume can be considered to be the working area. Restated, the working area can be defined by the extents of positions in whichmaterial 140 can be worked by theCNC machine 100, and not necessarily tied or limited by the travel of any one component. For example, if thehead 160 could turn at an angle, then the working area could extend in some direction beyond the travel of thehead 160. By this definition, the working area can also include any surface, or portion thereof, of any material 140 placed in theCNC machine 100 that is at least partially within the working area, if that surface can be worked by theCNC machine 100. Similarly, for oversized material, which may extend even outside theCNC machine 100, only part of thematerial 140 might be in the working area at any one time. - The
translation rail 170 can be any sort of translating mechanism that enables movement of thehead 160 in the X-Y direction, for example a single rail with a motor that slides thehead 160 along thetranslation rail 170, a combination of two rails that move thehead 160, a combination of circular plates and rails, a robotic arm with joints, etc. - Components of the
CNC machine 100 can be substantially enclosed in a case or other enclosure. The case can include, for example, windows, apertures, flanges, footings, vents, etc. The case can also contain, for example, a laser, thehead 160, optical turning systems, cameras, thematerial bed 150, etc. To manufacture the case, or any of its constituent parts, an injection-molding process can be performed. The injection-molding process can be performed to create a rigid case in a number of designs. The injection molding process may utilize materials with useful properties, such as strengthening additives that enable the injection molded case to retain its shape when heated, or absorptive or reflective elements, coated on the surface or dispersed throughout the material for example, that dissipate or shield the case from laser energy. As an example, one design for the case can include a horizontal slot in the front of the case and a corresponding horizontal slot in the rear of the case. These slots can allow oversized material to be passed through theCNC machine 100. - Optionally, there can be an interlock system that interfaces with, for example, the openable barrier, the
lid 130, door, and the like. Such an interlock is required by many regulatory regimes under many circumstances. The interlock can then detect a state of opening of the openable barrier, for example, whether alid 130 is open or closed. In some implementations, an interlock can prevent some or all functions of theCNC machine 100 while an openable barrier, for example thelid 130, is in the open state (e.g. not in a closed state). The reverse can be true as well, meaning that some functions of theCNC machine 100 can be prevented while in a closed state. There can also be interlocks in series where, for example, theCNC machine 100 will not operate unless both thelid 130 and the front door are both closed. Furthermore, some components of theCNC machine 100 can be tied to states of other components of the CNC machine, such as not allowing thelid 130 to open while the laser is on, a movable component moving, a motor running, sensors detecting a certain gas, etc. In some implementations, the interlock can prevent emission of electromagnetic energy from the movable head when detecting that the openable barrier is not in the closed position. - Converting Source Files to Motion Plans
- A traditional CNC machine accepts a user drawing, acting as a source file that describes the object the user wants to create or the cuts that a user wishes to make. Examples of source files are:
- 1) .STL files that define a three-dimensional object that can be fabricated with a 3D printer or carved with a milling machine,
- 2) .SVG files that define a set of vector shapes that can be used to cut or draw on material,
- 3) .JPG files that define a bitmap that can be engraved on a surface, and
- 4) CAD files or other drawing files that can be interpreted to describe the object or operations similarly to any of the examples above.
-
FIG. 3A is a diagram illustrating one example of anSVG source file 310, consistent with some implementations of the current subject matter.FIG. 3B is an example of agraphical representation 320 of thecut path 330 in the CNC machine, consistent with some implementations of the current subject matter.FIG. 3C is a diagram illustrating themachine file 340 that would result in a machine creating thecut path 330, created from thesource file 310, consistent with some implementations of the current subject matter. The example source file 310 represents a work surface that is 640×480 units with a 300×150 unit rectangle whose top left corner is located 100 units to the right and 100 units down from the top-left corner of the work surface. A computer program can then convert the source file 310 into amachine file 340 that can be interpreted by theCNC machine 100 to take the actions illustrated inFIG. 3B . The conversion can take place on a local computer where the source files reside on theCNC machine 100, etc. - The
machine file 340 describes the idealized motion of theCNC machine 100 to achieve the desired outcome. Take, for example, a 3D printer that deposits a tube-shaped string of plastic material. If the source file specifies a rectangle then the machine file can instruct the CNC machine to move along a snakelike path that forms a filled in rectangle, while extruding plastic. The machine file can omit some information, as well. For example, the height of the rectangle may no longer be directly present in the machine file; the height will be as tall as the plastic tube is high. The machine file can also add some information. For example, the instruction to move the print head from its home position to a corner of the rectangle to begin printing. The instructions can even depart from the directly expressed intent of the user. A common setting in 3D printers, for example, causes solid shapes to be rendered as hollow in the machine file to save on material cost. - As shown by the example of
FIGS. 3A-C , the conversion of the source file 310 to themachine file 330 can cause the CNC machine to move the cutting tool from (0,0) (inFIG. 3B ) to the point at which cutting is to begin, activate the cutting tool (for example lower a drag knife or energize a laser), trace the rectangle, deactivate the cutting tool, and return to (0,0). - Once the machine file has been created, a motion plan for the
CNC machine 100 can be generated. The motion plan contains the data that determines the actions of components of theCNC machine 100 at different points in time. The motion plan can be generated on theCNC machine 100 itself or by another computing system. A motion plan can be a stream of data that describes, for example, electrical pulses that indicate exactly how motors should turn, a voltage that indicates the desired output power of a laser, a pulse train that specifies the rotational speed of a mill bit, etc. Unlike the source files and the machine files such as G-code, motion plans are defined by the presence of a temporal element, either explicit or inferred, indicating the time or time offset at which each action should occur. This allows for one of the key functions of a motion plan, coordinated motion, wherein multiple actuators coordinate to have a single, pre-planned affect. - The motion plan renders the abstract, idealized machine file as a practical series of electrical and mechanical tasks. For example, a machine file might include the instruction to “move one inch to the right at a speed of one inch per second, while maintaining a constant number of revolutions per second of a cutting tool.” The motion plan must take into consideration that the motors cannot accelerate instantly, and instead must “spin up” at the start of motion and “spin down” at the end of motion. The motion plan would then specify pulses (e.g. sent to stepper motors or other apparatus for moving the head or other parts of a CNC machine) occurring slowly at first, then faster, then more slowly again near the end of the motion.
- The machine file is converted to the motion plan by the motion controller/planner. Physically, the motion controller can be a general or special purpose computing device, such as a high performance microcontroller or single board computer coupled to a Digital Signal Processor (DSP). The job of the motion controller is to take the vector machine code and convert it into electrical signals that will be used to drive the motors on the
CNC machine 100, taking in to account the exact state of theCNC machine 100 at that moment (e.g. “since the machine is not yet moving, maximum torque must be applied, and the resulting change in speed will be small”) and physical limitations of the machine (e.g. accelerate to such-and-such speed, without generating forces in excess of those allowed by the machine's design). The signals can be step and direction pulses fed to stepper motors or location signals fed to servomotors among other possibilities, which create the motion and actions of theCNC machine 100, including the operation of elements like actuation of thehead 160, moderation of heating and cooling, and other operations. In some implementations, a compressed file of electrical signals can be decompressed and then directly output to the motors. These electrical signals can include binary instructions similar to 1's and 0's to indicate the electrical power that is applied to each input of each motor over time to effect the desired motion. - In the most common implementation, the motion plan is the only stage that understands the detailed physics of the
CNC machine 100 itself, and translates the idealized machine file into implementable steps. For example, aparticular CNC machine 100 might have a heavier head, and require more gradual acceleration. This limitation is modeled in the motion planner and affects the motion plan. Each model of CNC machine can require precise tuning of the motion plan based on its measured attributes (e.g. motor torque) and observed behavior (e.g. belt skips when accelerating too quickly). TheCNC machine 100 can also tune the motion plan on a per-machine basis to account for variations from CNC machine to CNC machine. - The motion plan can be generated and fed to the output devices in real-time, or nearly so. The motion plan can also be pre-computed and written to a file instead of streamed to a CNC machine, and then read back from the file and transmitted to the
CNC machine 100 at a later time. Transmission of instructions to theCNC machine 100, for example, portions of the machine file or motion plan, can be streamed as a whole or in batches from the computing system storing the motion plan. Batches can be stored and managed separately, allowing pre-computation or additional optimization to be performed on only part of the motion plan. In some implementations, a file of electrical signals, which may be compressed to preserve space and decompressed to facilitate use, can be directly output to the motors. The electrical signals can include binary instructions similar to 1's and 0's to indicate actuation of the motor. - The motion plan can be augmented, either by precomputing in advance or updating in real-time, with the aid of machine vision. Machine vision is a general term that describes the use of sensor data, and not only limited to optical data, in order to provide additional input to machine operation. Other forms of input can include, for example, audio data from an on-board sound sensor such as a microphone, or position/acceleration/vibration data from an on-board sensor such as a gyroscope or accelerometer. Machine vision can be implemented by using cameras to provide images of, for example, the
CNC machine 100, the material being operated on by the CNC machine, the environment of the CNC machine 100 (if there is debris accumulating or smoke present), or any combination of these. These cameras can then route their output to a computer for processing. By viewing theCNC machine 100 in operation and analyzing the image data it can, for example, be determined if theCNC machine 100 is working correctly, if theCNC machine 100 is performing optimally, the current status of theCNC machine 100 or subcomponents of theCNC machine 100, etc. Similarly, the material can be imaged and, for example, the operation of theCNC machine 100 can be adjusted according to instructions, users can be notified when the project is complete, or information about the material can be determined from the image data. Error conditions can be identified, such as if a foreign body has been inadvertently left in theCNC machine 100, the material has been inadequately secured, or the material is reacting in an unexpected way during machining. - Camera Systems
- Cameras can be mounted inside the
CNC machine 100 to acquire image data during operation of theCNC machine 100. Image data refers to all data gathered from a camera or image sensor, including still images, streams of images, video, audio, metadata such as shutter speed and aperture settings, settings or data from or pertaining to a flash or other auxiliary information, graphic overlays of data superimposed upon the image such as GPS coordinates, in any format, including but not limited to raw sensor data such as a .DNG file, processed image data such as a JPG file, and data resulting from the analysis of image data processed on the camera unit such as direction and velocity from an optical mouse sensor. For example, there can be cameras mounted such that they gather image data from (also referred to as ‘view’ or ‘image’) an interior portion of theCNC machine 100. The viewing can occur when thelid 130 is in a closed position or in an open position or independently of the position of thelid 130. In one implementation, one or more cameras, for example a camera mounted to the interior surface of thelid 130 or elsewhere within the case or enclosure, can view the interior portion when thelid 130 to theCNC machine 100 is a closed position. In particular, in some preferred embodiments, the cameras can image thematerial 140 while theCNC machine 100 is closed and, for example, while machining thematerial 140. In some implementations, cameras can be mounted within the interior space and opposite the working area. In other implementations, there can be a single camera or multiple cameras attached to thelid 130. Cameras can also be capable of motion such as translation to a plurality of positions, rotation, and/or tilting along one or more axes. One or more cameras mounted to a translatable support, such as agantry 210, which can be any mechanical system that can be commanded to move (movement being understood to include rotation) the camera or a mechanism such as a mirror that can redirect the view of the camera, to different locations and view different regions of the CNC machine. Thehead 160 is a special case of the translatable support, where thehead 160 is limited by thetrack 220 and thetranslation rail 170 that constrain its motion. - Lenses can be chosen for wide angle coverage, for extreme depth of field so that both near and far objects may be in focus, or many other considerations. The cameras may be placed to additionally capture the user so as to document the building process, or placed in a location where the user can move the camera, for example on the underside of the
lid 130 where opening theCNC machine 100 causes the camera to point at the user. Here, for example, the single camera described above can take an image when the lid is not in the closed position. Such an image can include an object, such as a user, that is outside theCNC machine 100. Cameras can be mounted on movable locations like thehead 160 orlid 130 with the intention of using video or multiple still images taken while the camera is moving to assemble a larger image, for example scanning the camera across thematerial 140 to get an image of the material 140 in its totality so that the analysis of image data may span more than one image. - As shown in
FIG. 1 , alid camera 110, or multiple lid cameras, can be mounted to thelid 130. In particular, as shown inFIG. 1 , thelid camera 110 can be mounted to the underside of thelid 130. Thelid camera 110 can be a camera with a wide field ofview 112 that can image a first portion of thematerial 140. This can include a large fraction of thematerial 140 and the material bed or even all of thematerial 140 andmaterial bed 150. Thelid camera 110 can also image the position of thehead 160, if thehead 160 is within the field of view of thelid camera 110. Mounting thelid camera 110 on the underside of thelid 130 allows for the user to be in view when thelid 130 is open. This can, for example, provide images of the user loading or unloading thematerial 140, or retrieving a finished project. Here, a number of sub-images, possibly acquired at a number of different locations, can be assembled, potentially along with other data like a source file such as an SVG or digitally rendered text, to provide a final image. When thelid 130 is closed, thelid camera 110 rotates down with thelid 130 and brings the material 140 into view. - Also as shown in
FIG. 1 , ahead camera 120 can be mounted to thehead 160. Thehead camera 120 can have a narrower field ofview 122 and take higher resolution images of a smaller area, of thematerial 140 and the material bed, than thelid camera 110. One use of thehead camera 120 can be to image the cut made in thematerial 140. Thehead camera 120 can identify the location of the material 140 more precisely than possible with thelid camera 110. - Other locations for cameras can include, for example, on an optical system guiding a laser for laser cutting, on the laser itself, inside a housing surrounding the
head 160, underneath or inside of thematerial bed 150, in an air filter or associated ducting, etc. Cameras can also be mounted outside theCNC machine 100 to view users or view external features of theCNC machine 100. - Multiple cameras can also work in concert to provide a view of an object or
material 140 from multiple locations, angles, resolutions, etc. For example, thelid camera 110 can identify the approximate location of a feature in theCNC machine 100. TheCNC machine 100 can then instruct thehead 160 to move to that location so that thehead camera 120 can image the feature in more detail. - While the examples herein are primarily drawn to a laser cutter, the use of the cameras for machine vision in this application is not limited to only that specific type of
CNC machine 100. For example, if theCNC machine 100 were a lathe, thelid camera 110 can be mounted nearby to view therotating material 140 and thehead 160, and thehead camera 120 located near the cutting tool. Similarly, if theCNC machine 100 were a 3D printer, thehead camera 120 can be mounted on thehead 160 thatdeposits material 140 for forming the desired piece. - An image recognition program can identify conditions in the interior portion of the
CNC machine 100 from the acquired image data. The conditions that can be identified are described at length below, but can include positions and properties of thematerial 140, the positions of components of theCNC machine 100, errors in operation, etc. Based in part on the acquired image data, instructions for theCNC machine 100 can be created or updated. The instructions can, for example, act to counteract or mitigate an undesirable condition identified from the image data. The instructions can include changing the output of thehead 160. For example, for aCNC machine 100 that is a laser cutter, the laser can be instructed to reduce or increase power or turn off. Also, the updated instructions can include different parameters for motion plan calculation, or making changes to an existing motion plan, which could change the motion of thehead 160 or thegantry 210. For example, if the image indicates that a recent cut was offset from its desired location by a certain amount, for example due to a part moving out of alignment, the motion plan can be calculated with an equal and opposite offset to counteract the problem, for example for a second subsequent operation or for all future operations. TheCNC machine 100 can execute the instructions to create the motion plan or otherwise effect the changes described above. In some implementations, the movable component can be thegantry 210, thehead 160, or an identifiable mark on thehead 160. The movable component, for example thegantry 210, can have a fixed spatial relationship to the movable head. The image data can update software controlling operation of theCNC machine 100 with a position of the movable head and/or the movable component with their position and/or any higher order derivative thereof. - Because the type of image data required can vary, and/or because of possible limitations as to the field of view of any individual camera, multiple cameras can be placed throughout the
CNC machine 100 to provide the needed image data. Camera choice and placement can be optimized for many use cases. Cameras closer to thematerial 140 can be used for detail at the expense of a wide field of view. Multiple cameras may be placed adjacently so that images produced by the multiple cameras can be analyzed by the computer to achieve higher resolution or wider coverage jointly than was possible for any image individually. The manipulation and improvement of images can include, for example, stitching of images to create a larger image, adding images to increase brightness, differencing images to isolate changes (such as moving objects or changing lighting), multiplying or dividing images, averaging images, rotating images, scaling images, sharpening images, and so on, in any combination. Further, the system may record additional data to assist in the manipulation and improvement of images, such as recordings from ambient light sensors and location of movable components. Specifically, stitching can include taking one or more sub-images from one or more cameras and combining them to form a larger image. Some portions of the images can overlap as a result of the stitching process. Other images may need to be rotated, trimmed, or otherwise manipulated to provide a consistent and seamless larger image as a result of the stitching. Lighting artifacts such as glare, reflection, and the like, can be reduced or eliminated by any of the above methods. Also, the image analysis program can performing edge detection and noise reduction or elimination on the acquired images. Edge detection can include performing contrast comparisons of different parts of the image to detect edges and identify objects or features in the image. Noise reduction can involve averaging or smoothing of one or more images to reduce the contribution of periodic, random, or pseudo-random image noise, for example that due toCNC machine 100 operation such as vibrating fans, motors, etc. -
FIG. 4A is a diagram illustrating the addition of images, consistent with some implementations of the current subject matter. Images taken by the cameras can be added, for example, to increase the brightness of an image. In the example ofFIG. 4A , there is afirst image 410, asecond image 412, and athird image 414.First image 410 has horizontal bands (shown in white against a black background in the figure). The horizontal bands can conform to a more brightly lit object, though the main point is that there is a difference between the bands and the background.Second image 412 has similar horizontal bands, but offset in the vertical direction relative to those in thefirst image 410. When thefirst image 410 andsecond image 412 are added, their sum is shown in by thethird image 414. Here, the two sets of bands interleave to fill in the bright square as shown. This technique can be applied to, for example, acquiring many image frames from the cameras, possibly in low light conditions, and adding them together to form a brighter image. -
FIG. 4B is a diagram illustrating the subtraction of images, consistent with some implementations of the current subject matter. Image subtraction can be useful to, for example, isolate dim laser spot from a comparatively bright image. Here, afirst image 420 shows two spots, one representative of a laser spot and the other of an object. To isolate the laser spot, asecond image 422 can be taken with the laser off, leaving only the object. Then, thesecond image 422 can be subtracted from thefirst image 420 to arrive at thethird image 424. The remaining spot in thethird image 424 is the laser spot. -
FIG. 4C is a diagram illustrating the differencing of images to isolate a simulated internal lighting effect, consistent with some implementations of the current subject matter. There can be an object in theCNC machine 100, represented as a circle infirst image 430. This could represent, for example an object on thematerial bed 150 of theCNC machine 100. If, for example, half of thematerial bed 150 of theCNC machine 100 was illumined by outside lighting, such as a sunbeam, thesecond image 420 might appear as shown, with the illuminated side brighter than the side without the illumination. It can sometimes be advantageous to use internal lighting during operation, for example to illuminate a watermark, aid in image diagnostics, or simply to better show a user what is happening in the CNC machine. Even if none of these reasons apply, however, internal lighting allows reduction or elimination of the external lighting (in this case the sunbeam) via this method. This internal lighting is represented in thethird image 434 by adding a brightness layer to the entiresecond image 432. To isolate the effect of the internal lighting, thesecond image 432 can be subtracted from 434 to result infourth image 436. Here,fourth image 436 shows the area, and the object, as it would appear under only internal lighting. This differencing can allow image analysis to be performed as if only the controlled internal lighting were present, even in the presence of external lighting contaminants. - Machine vision processing of images can occur at, for example, the
CNC machine 100, on a locally connected computer, or on a remote server connected via the internet. In some implementations, image processing capability can be performed by theCNC machine 100, but with limited speed. One example of this can be where the onboard processor is slow and can run only simple algorithms in real-time, but which can run more complex analysis given more time. In such a case, theCNC machine 100 could pause for the analysis to be complete, or alternatively, execute the data on a faster connected computing system. A specific example can be where sophisticated recognition is performed remotely, for example, by a server on the internet. In these cases, limited image processing can be done locally, with more detailed image processing and analysis being done remotely. For example, the camera can use a simple algorithm, run on a processor in theCNC machine 100, to determine when thelid 130 is closed. Once theCNC machine 100 detects that thelid 130 is closed, the processor on theCNC machine 100 can send images to a remote server for more detailed processing, for example, to identify the location of the material 140 that was inserted. The system can also devote dedicated resources to analyzing the images locally, pause other actions, or diverting computing resources away from other activities. - In another implementation, the
head 160 can be tracked by onboard, real-time analysis. For example, tracking the position of thehead 160, a task normally performed by optical encoders or other specialized hardware, can be done with high resolution, low resolution, or a combination of both high and low resolution images taken by the cameras. As high-resolution images are captured, they can be transformed into lower resolution images that are smaller in memory size by resizing or cropping. If the images include video or a sequence of still images, some may be eliminated or cropped. A data processor can analyze the smaller images repeatedly, several times a second for example, to detect any gross misalignment. If a misalignment is detected, the data processor can halt all operation of theCNC machine 100 while more detailed processing more precisely locates exactly thehead 160 using higher resolution images. Upon location of thehead 160, thehead 160 can be adjusted to recover the correction location. Alternatively, images can be uploaded to a server where further processing can be performed. The location can be determined by, for example, looking at thehead 160 with the lid camera, by looking at what thehead camera 120 is currently imaging, etc. For example, thehead 160 could be instructed to move to a registration mark. Then thehead camera 120 can then image the registration mark to detect any minute misalignment. - Basic Camera Functionality
- The cameras can be, for example, a single wide-angle camera, multiple cameras, a moving camera where the images are digitally combined, etc. The cameras used to image a large region of the interior of the
CNC machine 100 can be distinct from other cameras that image a more localized area. Thehead camera 160 can be one example of a camera that, in some implementations, images a smaller area than the wide-angle cameras. - There are other camera configurations that can be used for different purposes. A camera (or cameras) with broad field of view can cover the whole of the machine interior, or a predefined significant portion thereof. For example, the image data acquired from one or more of the cameras can include most (meaning over 50%) of the working area. In other embodiments, at least 60%, 70%, 80%, 90%, or 100% of the working area can be included in the image data. The above amounts do not take into account obstruction by the
material 140 or any other intervening objects. For example, if a camera is capable of viewing 90% of the working area withoutmaterial 140, and a piece ofmaterial 140 is placed in the working area, partially obscuring it, the camera is still considered to be providing image data that includes 90% of the working area. In some implementations, the image data can be acquired when the interlock is not preventing the emission of electromagnetic energy. - In other implementations, a camera mounted outside the machine can see users and/or
material 140 entering or exiting theCNC machine 100, record the use of theCNC machine 100 for sharing or analysis, or detect safety problems such as an uncontrolled fire. Other cameras can provide a more precise look with limited field of view. Optical sensors like those used on optical mice can provide very low resolution and few colors, or greyscale, over a very small area with very high pixel density, then quickly process the information to detectmaterial 140 moving relative to the optical sensor. The lower resolution and color depth, plus specialized computing power, allow very quick and precise operation. Conversely, if the head is static and the material is moved, for example if the user bumps it, this approach can see the movement of the material and characterize it very precisely so that additional operations on the material continue where the previous operations left off, for example resuming a cut that was interrupted before the material was moved. - Video cameras can detect changes over time, for example comparing frames to determine the rate at which the camera is moving. Still cameras can be used to capture higher resolution images that can provide greater detail. Yet another type of optical scanning can be to implement a linear optical sensor, such as a flatbed scanner, on an existing rail, like the sliding
gantry 210 in a laser system, and then scan it over thematerial 140, assembling an image as it scans. - To isolate the light from the laser, the laser may be turned off and on again, and the difference between the two measurements indicates the light scattered from the laser while removing the effect of environmental light. The cameras can have fixed or adjustable sensitivity, allowing them to operate in dim or bright conditions. There can be any combination of cameras that are sensitive to different wavelengths. Some cameras, for example, can be sensitive to wavelengths corresponding to a cutting laser, a range-finding laser, a scanning laser, etc. Other cameras can be sensitive to wavelengths that specifically fall outside the wavelength of one or more lasers used in the
CNC machine 100. The cameras can be sensitive to visible light only, or can have extended sensitivity into infrared or ultraviolet, for example to view invisible barcodes marked on the surface, discriminate between otherwise identical materials based on IR reflectivity, or view invisible (e.g. infrared) laser beams directly. The cameras can even be a single photodiode that measures e.g. the flash of the laser striking thematerial 140, or which reacts to light emissions that appear to correlate with an uncontrolled fire. The cameras can be used to image, for example, a beam spot on a mirror, light escaping an intended beam path, etc. The cameras can also detect scattered light, for example if a user is attempting to cut a reflective material. Other types of cameras can be implemented, for example, instead of detecting light of the same wavelength of the laser, instead detecting a secondary effect, such as infrared radiation (with a thermographic camera) or x-rays given off by contact between the laser and another material. - The cameras may be coordinated with lighting sources in the
CNC machine 100. The lighting sources can be positioned anywhere in theCNC machine 100, for example, on the interior surface of thelid 130, the walls, the floor, thegantry 210, etc. One example of coordination between the lighting sources and the cameras can be to adjust internal LED illumination while acquiring images of the interior portion with the cameras. For example, if the camera is only capable of capturing images in black and white, the internal LEDs can illuminate sequentially in red, green, and blue, capturing three separate images. The resulting images can then be combined to create a full color RGB image. If external illumination is causing problems with shadows or external lighting effects, the internal lighting can be turned off while a picture is taken, then turned on while a second picture is taken. By subtracting the two on a pixel-by-pixel basis, ambient light can be cancelled out so that it can be determined what the image looks like when illuminated only by internal lights. If lighting is movable, for example on the translation arm of theCNC machine 100, it can be moved around while multiple pictures are taken, then combined, to achieve an image with more even lighting. The brightness of the internal lights can also be varied like the flash in a traditional camera to assist with illumination. The lighting can be moved to a location where it better illuminates an area of interest, for example so it shines straight down a slot formed by a cut, so a camera can see the bottom of the cut. If the internal lighting is interfering, it can be turned off while the camera takes an image. Optionally, the lighting can be turned off for such a brief period that the viewer does not notice (e.g. for less than a second, less than 1/60th of a second, or less than 1/120th of a second). Conversely, the internal lighting may be momentarily brightened like a camera flash to capture a picture. Specialized lights may be used and/or engaged only when needed; for example, an invisible but UV-fluorescent ink might be present on the material. When scanning for a barcode, UV illumination might be briefly flashed while a picture is captured so that any ink present would be illuminated. The same technique of altering the lighting conditions can be performed by toggling the range-finding and/or cutting lasers as well, to isolate their signature and/or effects when imaging. If the object (or camera) moves between acquisitions, then the images can be cropped, translated, expanded, rotated, and so on, to obtain images that share common features in order to allow subtraction. This differencing technique is preferably done with automatic adjustments in the cameras are overridden or disabled. For example, disabling autofocus, flashes, etc. Features that can ideally be held constant between images can include, for example, aperture, shutter speed, white balance, etc. In this way, the changes in the two images are due only to differences from the lighting and not due to adjustment in the optical system. - Multiple cameras, or a single camera moved to different locations in the
CNC machine 100, can provide images from different angles to generate 3D representations of the surface of the material 140 or an object. The 3D representations can be used for generating 3D models, for measuring the depth that an engraving or laser operation produced, or providing feedback to theCNC machine 100 or a user during the manufacturing process. It can also be used for scanning, to build a model of thematerial 140 for replication. - The camera can be used to record photos and video that the user can use to share their progress. Automatic “making of” sequences can be created that stitch together various still and video images along with additional sound and imagery, for example the digital rendering of the source file or the user's picture from a social network. Knowledge of the motion plan, or even the control of the cameras via the motion plan directly, can enable a variety of optimizations. In one example, given a machine with two cameras, one of which is mounted in the head and one of which is mounted in the lid, the final video can be created with footage from the head camera at any time that the gantry is directed to a location that is known to obscure the lid camera. In another example, the cameras can be instructed to reduce their aperture size, reducing the amount of light let in, when the machine's internal lights are activated. In another example, if the machine is a laser cutter/engraver and activating the laser causes a camera located in the head to become overloaded and useless, footage from that camera may be discarded when it is unavailable. In another example, elements of the motion plan may be coordinated with the camera recording for optimal visual or audio effect, for example fading up the interior lights before the cut or driving the motors in a coordinated fashion to sweep the head camera across the material for a final view of the work result. In another example, sensor data collected by the system might be used to select camera images; for example, a still photo of the user might be captured from a camera mounted in the lid when an accelerometer, gyroscope, or other sensor in the lid detects that the lid has been opened and it has reached the optimal angle. In another example, recording of video might cease if an error condition is detected, such as the lid being opened unexpectedly during a machining operation. The video can be automatically edited using information like the total duration of the cut file to eliminate or speed up monotonous events; for example, if the laser must make 400 holes, then that section of the cut plan could be shown at high speed. Traditionally, these decisions must all be made by reviewing the final footage, with little or no a priori knowledge of what they contain. Pre-selecting the footage (and even coordinating its capture) can allow higher quality video and much less time spent editing it. Video and images from the production process can be automatically stitched together in a variety of fashions, including stop motion with images, interleaving video with stills, and combining video and photography with computer-generated imagery, e.g. a 3D or 2D model of the item being rendered. Video can also be enhanced with media from other sources, such as pictures taken with the user's camera of the final product.
- Network Configuration
-
FIG. 5 is a diagram illustrating a cloud-based system supporting operation of aCNC machine 100, consistent with some implementations of the current subject matter. By taking the most computationally expensive steps in the process described herein and distributing them over anetwork 510 to distributed computers, several advantages can be realized. The cloud-based system can include any number or combinations of first computing systems 520 (servers, mainframes, etc.) to provide powerful computation services. There can also be smallersecond computing systems 530, for example, mobile phones, tablet computers, personal computers, etc. where users can access and interact with the system. Both thefirst computing system 520 and thesecond computing system 530 can be connected by thenetwork 510 to each other and to any number of CNC machines. Thenetwork 510 can be a wired or wireless network. - Distributed Motion Plan Generation
- The source file can be processed by the server to generate the instructions required by the
CNC machine 100 in order to execute operations that will result in the desired product. The server can transmit the instructions to theCNC machine 100 without requiring the user to have any direct contact with theCNC machine 100. - Because the server can be a more powerful computer than the remote computer, more detailed motion planning calculations can be performed. The server can contain data on the physics of the
CNC machine 100 that will be doing the fabrication, for example, cutting/layering parameters, machine information, material restrictions, etc. Advanced computational methods can be used to generate the motion plan, for example optimizing the motion of the head to not only generate an accurate set of instructions, but instructions that are executed in a minimum amount of time given a particular CNC machine. Conversely, the instructions may be optimized to minimize noise created by fans (by generating less heat, smoke, or debris by operating more slowly), they may be optimized to create minimum vibration (for a machine on an unstable surface, like a card table), they may be optimized for maximum accuracy and precision at the cost of speed, and/or they may be optimized for maximum speed at the expense of accuracy. The particular path chosen by the machine in moving from machining operation to machining operation is a complex problem and can be likened to the “travelling salesman” problem which has been proven to be NP-complete. Depending on the desired outcome, different optimizations can be used. For example, a nearest neighbor approach can be used to perform one set of motions, move to the location of the next set of motions, execute those, and so on. While being a simple algorithm, this may not be optimal when considering the fact that the motors have a finite acceleration and also given the feedback response of the cutters, pourers, etc. More sophisticated algorithms such as the Christofides algorithm can be used but the complexity of the calculation makes it best-suited to computation on the server, rather than requiring a powerful computer to be installed with every CNC machine. - Also, time-varying features associated with adding or subtracting
material 140, such as head acceleration, variable laser burn, dulling of cutting surfaces, variations in flow rates of deposition materials, etc. can be calculated and accounted for when generating the motion plan by software on the server. - Once the motion plan has been generated on the server, the motion plan can be transmitted to the
CNC machine 100 where the instructions will be executed. Continuous communication with the server during the execution of the operations can allow the use of image recognition programs to monitor the process. For example, corrections can be made due to machine error, observed defects in thematerial 140, or on the basis of feedback as to the progression of the operations. In one example, the image processing system may detect that an anomaly has caused a part to be cut slightly larger than specified; the machine may be instructed to go back and recut the part slightly smaller. -
FIG. 6 is a process flow chart illustrating generating a motion plan for aCNC machine 100 on distributed computing systems, consistent with some implementations of the current subject matter. At 610, source files can be generated by providing an electronic characterization of an object for manufacture by theCNC machine 100. The source files can be photos, screen captures, electronic tracings, CAD drawings, etc. The source files can be sent to the first computing system by, for example, uploading to a server, etc. - At 620, source files can be received by the first computing system.
- At 630, a machine file can be generated at the first computing system. The machine file, as described above, can include steps describing operations of the
CNC machine 100. - At 640, the machine file can be converted into a motion plan by the first computing system. Also as described above, the motion plan can be a set of instructions for the
CNC machine 100. - At 650, the motion plan can be transmitted to the
CNC machine 100 over a network. -
FIG. 7 is a system diagram illustrating general purpose computer executing an execution plan to control a CNC machine, consistent with implementations of the current subject matter. There can be anexecution plan 710 that not only includes themotion plan 720, but also includes component commands 730 for selectively activating other components and controlling their operation, such as when to turnfans 770 on or off, what speed to run fans, settings for the cooling 750 or ventilation system, when to activatecameras 760, what images to acquire, etc. The execution plan can be related to known or expected sensor data, stored locally on theCNC machine 100 or accessed from a database over a computer network ordata connection 780. - The cooling system can include a coolant pump, a liquid refrigeration unit, a fan, a heat sink, or the like.
- The generation of the
execution plan 710 can occur on theCNC machine 100 or on a general-purpose computer 700 in communication with the CNC machine over adata connection 780. Examples of general-purpose computers can include, for example, PCs, tablet computers, smartphones, laptop computers, etc. Thedata connection 780 can be, for example, the Internet, a wide area network, a wireless network, a USB connection, or a serial connection. - The execution plan thus provides a comprehensive description of the operation of the CNC machine. However, because the components in the CNC machine can affect the operation of each other, the execution plan can, in some implementations, be generated in an iterative manner to result in an allowable and consistent execution plan. For example, if a motion plan instructs the CNC machine to make a high speed cut, the execution fan can also include commands to turn on a fan to quickly clear the debris. However, if the system had accessed sensor data from similar past operations indicating that the fan could not operate to clear that type of debris quickly enough to make a proper cut, then the cut speed can be reduced to an acceptable level.
- Realtime Motion Planner
-
FIG. 8 is a diagram illustrating an example of determination of a safe pause point in a motion and/or execution plan for a CNC machine consistent with some implementations of the current subject matter. Currently available CNC machines typically operate by having a machine file, for example in the G-code language, loaded on to it. A motion planner executing on the CNC machine calculates the motions required by the actuators (such as steppers and servomotors) based on the machine file and causes execution of these motions in realtime or near-realtime. The execution of such a motion planner must be fast enough that it can generate new elements of the motion plan as quickly as the machine can execute them, and will often make tradeoffs in accuracy to ensure that it presents the next set of output data to the actuators when required. While there may be a small buffer in case of instantaneous delay, the design assumes that the motion planner is fast enough and coupled closely enough to the actual CNC machine that a loss of connection between the motion planner and CNC machine is not possible. - An alternate approach in which the CNC machine and the motion planner are separated is possible consistent with implementations of the current subject matter. In this case, the CNC machine and the one or more processors implementing the motion planner may be connected by a cable such as a USB cable or a network such as the Internet, a local area network, a wide area network, or the like. In such a configuration, the data connection between the motion planner and the CNC machine may be cut, data transmission may be slow or lossy (e.g. data packets might be delayed or lost), and/or other issues may affect reliability and timeliness of receipt of commands from the motion planner at the CNC machine.
- Use of a motion planner implemented on a computing device separate from the CNC machine can present a number of challenges, including but not limited to handling of a connectivity difficulty between the two machines (CNC and motion planner) that occurs midway through a fabrication operation. Such an occurrence is unlikely in conventional approaches in which the motion planner is integrated into the CNC machine. In contrast, it is virtually guaranteed to occur when the motion planner is connected to the CNC via a network. When the motion planner is integrated in the CNC machine, an interrupted motion plan would result in the work aborting and tremendous manual effort required to restart it, with a likely outcome that the fabrication process does not turn out entirely as intended. For example, the laser might turn off suddenly, and realigning it so it can be restarted can be a manual undertaking that may result in noticeable imperfections.
- Despite these challenges, a configuration consistent with implementations of the current subject matter in which the motion planner is not implemented on a same machine or on machine that is directly connected to the CNC machine can be highly desirable. CNC machines that incorporate the motion planner must include the motion planner in their cost, which can be a substantial price, especially for advanced motion planners that calculate second, third, fourth, and higher order derivatives of position and forces on the machine in order to minimize wear and provide optimal results. If the motion planner is connected via the Internet, it may be a resource that is shared among many machines. In another improvement that may be possible with one or more implementations of the current subject matter, CNC machines that integrate the motion planner generally impose a realtime requirement. In other words, they must include sufficient processing power to keep up with the motion of the machine. As a result, such motion planners can require a trade off between accuracy (performing more calculations per unit of time) and cost (including a more expensive processor that can complete those calculations). In another improvement that may be possible with one or more implementations of the current subject matter, using a separate motion planner can allow repurposing of a general-purpose computer, such as a high powered workstation or server in a cloud hosting provider, temporarily for the execution of the machining operation, before returning it to other, non-machining-related tasks.
- The following describes two example approaches to addressing challenges that may arise with implementations of the current subject matter in which the motion planner and CNC machine are separated.
- In a first approach, the motion planner can calculate the motion plan in motion plan or execution plan segments. Each segment contains the instructions to perform a series of useful machining operations, and then instructions to put the CNC machine in a state where it may be safely paused and then resumed. This state is referred to elsewhere herein as a safe pause point, and can optionally include a state in which a movable head of the CNC device is not moving and/or moving but not cutting. Optionally, the safe pause point can be an end of the motion plan. A motion or execution plan segment consistent with this implementation of the current subject matter can be limited to the size of a buffer present on the CNC machine, so it may be loaded into that buffer in its entirety. A segment may contain the entirety of a machining operation, or it may contain a portion of it and the instructions to reach a next safe pause point.
- A simple example is illustrated in the diagram of
FIG. 8 , which shows features of a machining operation that uses a laser cutter/engraver to engrave the letters “v l” 800. The required operations are as follows: - 1) laser turn on instruction
- 2) downward-
right line 810 - 3) upward-
right line 820 - 4) laser turn off instruction
- 5) upward-
right line 830 - 6) laser turn on
- 7)
downward line 840 - 8) laser turn off
- Note that these are inputs to the motion planner; the output to the motion planner—the motion plan—is a series of instructions such as electrical impulses that can be used to direct the motors' and other actuators' operations. A typical motion planner would calculate the electrical impulses to implement these commands and send them to the machine in realtime. If the motion planner was suddenly disconnected from the laser during upward-
right line 820, the material might be wasted. It might be possible to order the machine to continue the motion plan from the downward-right line 810, but then part of the plan would be performed twice, resulting in possible damage to the material as the laser revisited the already-processed material; alternately, the motion plan might be instructed to resume from thedownward line 840, resulting in anincomplete machining operation 850. - While an interruption in communication between the motion planner and the CNC machine is relatively unlikely in the typical case of a motion planner integrated into the CNC machine, it can be fairly frequent occurrence if the CNC machine and motion planner are not integrated.
- A segmented file consistent with implementations of the current subject matter can be created based on a consideration of a maximum buffer capacity of the CNC machine, which in the case of this example might hold the electrical impulses needed to implement the first six commands. Rather than sending the motion plan for all six commands to the laser, the motion planner can instead identify a point (or points) at which the execution of the motion plan could be paused and resumed without affecting the final output. In this example, that would be anywhere during the upward-
right line 830 that occurs when the laser is off. The motion planner can therefore create a segment with the impulses for the first five commands and send this segment to the CNC machine. The CNC machine would wait until the motion plan for all five commands were stored in its buffer (e.g. until the full segment was received), and then execute the commands in the segment. Under normal operation, the motion planner would prepare and the machine would receive a second segment, completing the machining operation, before the first one was complete. However, if the motion planner were slow, for example an underpowered computer, or if the second segment were delayed, for example by network traffic, a network disconnection or failure (for example by someone tripping over the cable), then the CNC machine can be able to pause in a resumeable condition safely, with the laser off, awaiting further commands. It can be possible to include more data past the end of the segment, for example the start of the next segment, as long as the safe pausing point—the termination of the segment—is clearly identified should the full next segment not be received before reaching the end of the prior segment. - A second approach besides segmenting is also within the scope of the current subject matter. Instead of segmenting the motion or execution plan into one or more segments with a safe pause point, the CNC machine can be optimized to allow pausing and resuming at any point. This approach may still result in some perceptible physical effects of pausing and resuming in the final product. However, when applied carefully consistent with implementations of the current subject matter, such errors can be minimized.
- To implement this second approach, the motion plan can be streamed from the motion planner in the usual fashion. However, if there is an interruption, the CNC machine can take responsibility for arranging for a “graceful” pause and subsequent resumption of operations. One or more of a number of tactics may be used to optimize this outcome. First, the machine may precisely note the time of the data interruption or identify the last instruction executed or the final piece of motion plan data fed to the motors. A sufficiently capable motion planner knows a great deal of information about the system at every instant: e.g. position, velocity, laser tube output power, etc. Provided with nothing more than the time at which data ceased to arrive or final instruction, it may be capable of calculating a new motion plan that can resume the machining operation with minimal disruption. For example, in the case of a laser, the motion planner may command a replay of the entirety of the motion plan up to the moment of interruption with the laser off, then turn on the laser very close if not precisely at the point in the motion plan at which the interruption occurred. Alternately, the motion planner may truncate the majority of the motion plan, and instead arrange for the moving components to achieve the correct position, speed, and other parameters necessary to resume the cut. Note that lasers affect materials based on their speed as well as their power, so it is not sufficient to simply locate the original position.
- Second, with contact with the motion planner interrupted, the CNC machine may use a locally-generated or pre-calculated motion plan to bring the machine to a safe stop. This approach can include turning off the laser in the case of a laser cutter. A sudden stop can cause problems such as missed steps on a stepper motor, so the machine might instead bring the moving components to a gradual stop.
- Third, at some point after the pause occurs, the CNC machine may use onboard sensors to detect a state of the system. For example, the CNC machine may use a camera to detect where the cutline ended, or position sensors to detect where the head is after shutdown, or other parameters that would assist with the system restart. Finally, a revised motion plan can be created and executed that, as closely as possible, resumes the state of the laser at the moment when the last data was executed. This approach may suffer from minor defects, such as a
small break 870 on the right side of the ‘v’ incut 860 as the resumed motion was not able to perfectly align with the previously terminated motion, but it can come close, in many cases imperceptibly so. - This approach may also be used for interruptions not caused by a disconnection from the motion planner. For example, existing laser cutters will shut off the laser immediately if their safety interlock is tripped, for example if the door is open. However, they do not have the ability to resume seamlessly if the user closes the interlock. The same safe-pause techniques may be used to arrange for a graceful resumption of machining after a user-induced stop.
- Lasers are particularly well suited for this type of behavior, because they can turn off the laser at a moment's notice. Other types of machines have a lesser ability to ‘pause’ since, for example, the rotating bit of a mill must be stopped.
-
FIG. 9 is a process flow chart illustrating a method for determination of a safe pause point in a motion and/or execution plan for a CNC machine, consistent with implementations of the current subject matter. - At 910, a control unit of the CNC machine can receive, from a general purpose computer that is not part of the CNC machine, an execution plan segment of an execution plan. The execution plan can be created at the general purpose computer. Execution plan segments define operations for causing movement of a movable head of the CNC machine to deliver electromagnetic energy. The electromagnetic energy can effect a change in the
material 140 within an interior space of the CNC machine. The execution plan segment can also include a predefined safe pausing point from which a clean restart of the operations of the execution plan can be performed. - At 920, operations of the computer numerically controlled machine, defined in the execution plan segment, can commence only after determining that the execution plan segment has been received by the computer numerically controlled machine. The receiving can be up to and including the predefined safe pausing point.
- One User to Many CNC Machines
- A pattern, source file, or other selection of operations to be executed by the
CNC machine 100 can be initiated from a remote computer. The remote computer can be, for example, thefirst computing system 310,second computing system 320, or a computer local to theCNC machine 100. A list of available CNC machines can be provided by a server to the user of the remote computer to allow the user to select a desiredCNC machine 100 for their project. Other graphical user interfaces (GUI's) can be provided by the server to the user of the remote computer to enable selection and use of connected CNC machines. Patterns, associated source files, and/or motion plans can also be stored on the server in a database. If desired, these or similar resources can be referenced by the user or the system instead of requiring that all the files and calculations be generated from scratch. - Many Users to One CNC Machine
- A
single CNC machine 100 can be accessed or controlled by a number of users. In one implementation, a group of users can transmit motion plans to theCNC machine 100. The motion plans can be conducted in sequence on different pieces ofmaterial 140, or conducted in sequence on the same piece ofmaterial 140. The motion plans from different users can also be combined into a single motion plan. Here, theCNC machine 100 can test for conflicts, or the testing can be performed at the local computer of the user downloading the motion plan or on an intermediate server. At any time, access to theCNC machine 100 can be restricted to registered users. Some features can have varying levels of permission. In one implementation, a user can be in control of their project, able to update the motion plan. Other users however, can be given access view the output of sensors in theCNC machine 100, for example, cameras, power output, temperature readings, etc. Here, video can be transmitted in real-time to users watching the manufacturing process even though they are unable to control it. - In any of the implementations described herein, the user (or users) can be contacted by the server, for example, to inform them that the
CNC machine 100 needs attention, that an operation is completed, to provide updates as to the status of their project, etc. The form of contact can be, for example, text messages, mobile phone calls, email, mobile app notifications, etc. - Buffering
- Coarse instructions can be transmitted continually by the server to the
CNC machine 100. For example, for a large cuts or cuts at a very slow rate of speed, the server can transmit the motion plan, or part of the motion plan, in an open-loop manner, with no feedback from theCNC machine 100. - For fine work, control of the motion plan can be transferred to the
CNC machine 100 in order to allow real-time feedback, particularly in situations where it is determined that latency will be a problem. The fine instructions can be performed with the aid of feedback, for example, camera data, sensor data,CNC machine 100 diagnostics, etc. The instructions can be performed in this closed-loop manner with the feedback altering the motion plan on the basis of the determined feedback. The types of commands that originate locally versus from the server can vary depending on the application or the specification from the user. Error-handling, image analysis from installed camera systems, verification of motion plans, etc. can be performed either at the server or at theCNC machine 100. Memory buffering can also be used to overcome some latency issues, for example sets of instructions can be compiled at the server and transmitted as a packet to theCNC machine 100. TheCNC machine 100 can then execute the instructions while continuing to receive updates, thus not interrupting the machining process while waiting for the next instruction to arrive. - Portability Restrictions
- Each
CNC machine 100 is unique in that they have slightly different operation given the same set of instructions. This can be, for example, due to aging components, misalignments, environmental conditions, variation in makes or models of components, etc. The motion plan may be calculated with such variations taken into account. The motion planning code on the server can calculate the motion plan based in part on known facts about a givenCNC machine 100, for example offsets, backlash in the belts or screws, motor acceleration capabilities, etc. and create or alter the motion plan accordingly. The motion planning code may also take into account details about the material being machined such as its location in the bed and the proper parameters necessary to machine it. As a result, the motion plan will work optimally on one machine, with one piece of material, and may not work as well or at all in other machines under other circumstances. - This architecture can differ from a design in which the CNC machine creates its own motion plan, in that it does not require the machine file (often implemented in G-code), which represents the abstract shapes needed to create the design, to be sent to the machine. Because the machine file is sufficient to create the product on any machine with a motion planner, ownership of the machine file gives control of the underlying intellectual property; ownership of the motion plan alone, however, is less useful. An analogy may be drawn to distributing the source code to a program written in a high level language, versus distributing compiled binary code that is only expected to function on a single class of computer. In this case, however, the “compiled” motion plan not only will work on only one class of machines, but may only work well on one singular machine, with one particular piece of material, in one particular location.
- For example, if a user duplicates a motion plan intended for another machine, bypassing the motion planner, execution of the motion plan on any
CNC machine 100 can be expected to have errors. To correct the errors, the user may be instructed to access a server to retrieve a correction to the motion plan or a new motion plan generated from the original machine or source file, in either case resulting in a motion plan optimized for that machine and the material the user intends to use. For example, if the user places material in the left side of the bed of a laser cutter and cuts a circle, and then duplicates the motion plan and gives it to another user, that user may place the material in the right side of the machine, in which case it may not be cut. The second machine might have a slightly less powerful laser, so the cut may not fully penetrate the material with the motion plan for the first machine. The user may be best served by generating a new motion plan for the cut they wish to perform or generating a set of variations to the motion plan for their specific machine. - Software/Firmware Updates
- Creating motion plans on a server instead of the
CNC machine 100 or a local PC allows for further advantages. The motion planning algorithms and code can be updated in one place and thereby instantly utilized whenever the server is used. Server software may be operated using containerization services such as Docker so that different versions or variations of the software may be easily started and stopped, with different variations used depending on the time, the user, the machine, or other factors. For example, new versions of the motion planning code can be tested on select machines by sending them motion plans from different software operating in different containers, with ease of toggling between established and proposed versions of the motion planning code. - In existing solutions, changes to the motion planner are reflected in code on the CNC machine. Since it is more time consuming and risky to modify code on the CNC machine, it makes it more difficult to update functionality related to the motion planner. This is because the code running on the machine (‘firmware’) typically controls safety functions, such as shutting down systems when errors occur, so any change could introduce errors with serious safety side effects. The server, by comparison, has fewer safety-critical functions, so may be updated more freely. Firmware programming is generally held to be slower than server programming, so implementing functionality in the server can make development faster in that way as well.
- When functionality is moved to the server, it is less likely to be necessary to update the firmware, but it is still important and possible. The firmware may have an error, or new features may be introduced such as more robust anomaly detection or improved algorithms to control the lighting. When that is required, in one implementation, a small change can be sent to the
CNC machine 100, for example, a change to a setting, instructions in memory, onboard data tables, etc. This small change might be downloaded with no interruption in the operation of theCNC machine 100. Another implementation can have the firmware update downloaded and swapped out in its entirety. Yet another implementation can have theCNC machine 100 power up with minimal firmware installed, only that required for contacting the server. TheCNC machine 100 can then download the latest version before proceeding with operation. Yet another implementation can have the CNC machine store the firmware in volatile memory, so that it downloads the firmware from a server every time it boots, meaning that a firmware error can always be corrected by rebooting the device and downloading a new firmware. - Because the ability to update the firmware can allow an owner of that ability unrestricted use of the machine, it must be carefully secured. Techniques for doing this can include an encrypted connection, “secret” keys known either by the machine or the server or both, public keys known either by the machine or the server or both, and signatures to guarantee that a firmware update is from the appropriate source and is appropriate for the machine in question.
- Local Confirmation of CNC Machine Instructions
- In some implementations, the
CNC machine 100 can require a local action or authorization before implementing instructions that may have been received from a remote computer. For example, theCNC machine 100 can require a user to physically push a button, switch, or other mechanical system, to initiate an operation theCNC machine 100. In one implementation, the switch can cause an electronic signal to be sent to theCNC machine 100 that the instructions can begin. Here, the electronic signal could, with proper access to the computing system in theCNC machine 100 be sent without the switch being activated. Alternatively, the computer in theCNC machine 100 can receive commands that set theCNC machine 100 into a state identical to one in which the switch had been activated. - In implementations where it is not desired that the switch be overridden or circumvented in the above manner, the switch can, also or instead, cause a mechanical connection to open or close, with the connection status being necessary for the instructions to be executed. Here, it is not possible for any remote system to cause the
CNC machine 100 to operate in the desired manner because without the switch being physically activated locally by a user, theCNC machine 100 is effectively disabled. In another example, the switch could bypass the software running on the computer and energize elements of the CNC machine such as providing power to a laser or to motors. In this example, even someone who had modified the software on the machine would be incapable of causing it to start unattended. Further, while the switch might enable the operation of the laser and not allow any software means of so enabling it, disabling the switch can be allowed in software. If someone does not press the switch, the laser may not operate; but if someone does press the switch, the software can reset it, because of a detected anomaly, because of time elapsed, because the user has moved the material, etc. - The features of having a physical switch necessary for operation of the CNC machine can be incorporated into any CNC machine operations. They can be used with, for example, startup or shutdown, powering one or more components, initiation or continuation of a motion plan, confirmation of an update to a motion plan, opening or closing of the CNC machine lids/doors, control of any of the diagnostics in the
CNC machine 100, activation of cameras, etc. In one example, aCNC machine 100 can be started or run remotely, with the exception of turning a laser on or off. Here, the laser can require local actuation of a button or switch to turn on or off In this way, theCNC machine 100 can receive updates to motion plans, execute projects, and the like, while still requiring an on-site user to be directly involved in some operations of the laser system. - License and Account Management
- Machines may also have “accounts” (distinct entities) on the server, with unique keys so that the server can communicate securely with them. These keys may be assigned by the server, for example when the machine is first powered up; drawn from the environment, for example a combination of date, time, and WiFi network settings; programmed at the factory, for example MAC address; or some other means.
- A given piece of intellectual property, for example, a pattern to cut a product, can be assigned to one or more users, or machines, or bearers of properly-marked material. In the former case, a person may buy a pattern. In the second case, a user may buy a piece of material with a marking on it, for example a unique barcode, that entitles the bearer of the material to some intellectual property, such as a free pattern. In the latter case, a pattern may be “free” with the purchase of the machine, and any user who uses that particular machine has access to it.
- Access to intellectual property can be granted by users to other users, for example, one user who owns the machine may have permission to delegate or license usage rights to another user. Usage can also be restricted geographically, to certain companies or individuals, etc.
- The ability to machine a given piece of intellectual property may be limited to a certain number of times, to certain materials, to certain times or locales, or any other restriction that may be expressed in software. This could be enforced by the motion planner refusing to create a motion plan for intellectual property that was not properly acquired. For example, a user might purchase the right to print up to five wallets bearing the likeness of a well-known superhero. Once the fifth wallet is printed, no further motion plans for that wallet may be generated without further licensing payment.
- Variations may be made for extenuating circumstances. For example, if the print was aborted, another attempt might be allowed. The aborted attempt could be verified through onboard cameras or sensors. If a user was dissatisfied with a print, the user could place the print in the machine to be imaged. The machine could then deface or destroy the failed print, and verify that the destruction occurred with a camera, before issuing a refund.
- Analytics
- At any time, the server can receive analytics data relating to usage of the
CNC machine 100 or the performance of theCNC machine 100. Since all source files are submitted to the server, aggregated data can be compiled including source file or motion plan file size, the frequency of use of different features (e.g. engrave versus cutting), the frequency of use of different file types, and so on. Analytics related to the machine file can include which file types require the greatest amount of processing resources to compute, or which path algorithm is, on average, fastest to execute. Further analytics related to the motion plan can include the average speed at which the motors operate, the percentage of time that the laser is at full power, and the average cut time of the motion plan. - For example, it can be discovered that users are using the Y-axis more aggressively than the X-axis. A redesign of a subsequent version of the
CNC machine 100 could be made to use stronger and more durable motors on the Y-axis. In the meantime, the motion plans could be changed so that the Y-axis motions are slower than X-axis, and use lower laser power to compensate for the reduced speed. In another example, it can be discovered that a certain user always cuts things in the top right corner of the bed. Since, over time, that can cause wear at a certain spot in the belts, a message can be sent to the user to tell them to place shapes in other areas to maximize belt life. Other analytics can include determining the types of projects that are most often abandoned by users, and then offer advice on how to improve the projects. - In another example, machine usage or information may be correlated with errors, returns, malfunctions, or other problems. For example, it may be determined that the majority of units that were returned with a stuck fan exhibited a characteristic vibration that was measured on the devices' accelerometers in the weeks before failure. Users who were experiencing the vibration could pre-emptively be sent replacement fans. In another example, it might be determined that machines that incorporate laser tubes from Supplier A have lower average output power than machines that use tubes from Supplier B. This would allow better future vendor selection.
- Examples of Distributed Processes
- Functions of the
CNC machine 100, at various stages during the planning, setup, and execution of a project, can benefit by performing some processing on remote computing systems. As an example, if a user wishes to preview their project as it will appear when finished, 3-D rendering and overlaying ofrealistic material 140 textures from either a library (based on the identification of the material) or a camera (from a picture taken directly of the material) can be performed by fast servers and images transmitted to a user. Changes to a project, for example rearranging the layout of the pieces on the underlying material, can be quickly translated into an updated motion plan by taking into account how the new cutting pattern will be reflected in the final project. A motion plan can be analyzed in the context of theparticular CNC machine 100 to determine if the motion plan will exceed machine motion limits. The motion plan can also be updated based on known, or real-time, determination of systematic errors or other characteristics of operation that may be unique to theparticular CNC machine 100 executing the project. - Project Preview
-
FIG. 10 is a process flow chart illustrating generating a project preview on a distributed computing system, consistent with some implementations of the current subject matter. In one implementation, a user can generate or supply patterns to be converted into a motion plan that theCNC machine 100 can execute. A pattern can be any visual representation of what it is that theCNC machine 100 is to cut, print, form, etc. The pattern can be a drawing, image, outline of a part, etc. The process can include: starting with a pattern, manipulating the pattern into a modified pattern, converting the modified pattern into a motion plan, and executing the motion plan by theCNC machine 100. - At 1010, the pattern can be supplied, for example by the user, to a preview device in the form of a pre-existing image file. The image file can be in any file format, for example, a JPEG, PDF, bitmap, Scalable Vector Graphics (SVG), etc. The preview device can be, for example, a mobile device, laptop computer, tablet computer, desktop computer,
CNC machine 100, etc. The image file can also be the same as a source file, and vice versa. Here, we distinguish between an image file and a source file by generally assuming that the image file is not in a finalized state to be used as a source file. - Also, image files corresponding to the
material 140 on which the pattern is to be cut can be specified by, for example, the user, imaged by the cameras in theCNC machine 100, identified from the watermark, etc. If images of thereal material 140 are not being acquired by the cameras, then images of the material 140 can be accessed from a library or other database that stores images of materials. If thematerial 140 can be identified, for example by a barcode or by image recognition, then specificpost-fabrication material 140 properties can be accessed. For example, a light colored wood may turn dark when a certain amount of laser power is applied; this can be determined for a more accurate preview of what thematerial 140 will look like post-fabrication. In one implementation, thematerial 140 is uniquely identified e.g. with a barcode and photographed at its point of distribution. Thematerial 140 is then obscured with a protective layer. When thematerial 140 is inserted into theCNC machine 100, instead of showing the protective layer, the machine determines the material 140's unique identifier and retrieves the photograph, showing what thematerial 140 looks like underneath the protective layer. If called upon to preview a project with that material, it will use the stored image of the material's appearance in the preview. - At 1020, the pattern can, if needed, be converted to an intermediate format, for example, an SVG format, and sent to a web browser or other software program capable of manipulating SVG files. The received SVG file (or other appropriate file type) can be rotated, expanded, translated, or the like, by the native software in the receiving computer or by a remote server, and then either those transformations or the resulting transformed file may be returned to the server.
- The image files for the material 140 can be combined with the pattern to provide a preview of what the cut will look like on the
material 140. Additionally, the type of cut can be selected by the user and the preview updated accordingly. For example, the user can specify a cut depth for each point on the pattern. The cut depth can range from, for example, zero (or no effect) to 100 indicating a cut through thematerial 140. Again, a library or database of recorded cuts for the givenmaterial 140 can be accessed in order to show what the cut will look like, for example, with the specified depth, on the specifiedmaterial 140. Additional features of the preview can include showing effects of laser power (scorching), varying the spot size of the laser, etc. For applications involving 3-D printing, the preview can include, for example, displaying the pattern as it is built up, showing the necessary buttressing to support the pattern, etc. - Notes or other instructions can be generated during the preview and appended as metadata to the source files used to generate the motion plan, for example, comments, instructions, etc. Some metadata can be converted into a portion of the motion plan while other metadata can be stored for later reference and associated with the motion plan.
- At 1030, the manipulated or updated preview can be used to modify or update the source files, for example the SVG files, used to generate the motion plan. Data corresponding to the preview can be transmitted to a remote computing device, for example, a server, mainframe, cloud network, etc. Once transmitted, the manipulated preview can be converted to back to its original file type, another file type, or to a motion plan.
- At 1040, the motion plan can be transmitted to one or more computing systems, CNC machines, etc. The motion plan can then be executed or modified by the local machine as needed.
- Material Overlay
-
FIG. 11 is a diagram illustrating amaterial 140 overlay for previewing a project, consistent with some implementations of the current subject matter. A graphical representation of what a finished project will look can be displayed on a preview device. The preview device can, for example, be a mobile device, a tablet computer, a desktop computer, a screen integrated with theCNC machine 100, etc. In one implementation, images of a pattern, for example an outline of a cut, can be overlaid with images of amaterial 140, for example from theCNC machine 100 or from a data library. The pattern can be modified by the user based on a rendering of the pattern on thematerial 140. In the example ofFIG. 11 , the top portion showsmaterial 140 with apattern 1110 overlaid upon it and the grain running the short way across each piece of thepattern 1110. If a user wished the pieces to have a grain running the long way across each piece of the cut pattern, then the pattern can be rotated as shown in the bottom portion ofFIG. 11 resulting in the desiredpattern 1120. - 3-D Preview
-
FIG. 12 is a diagram illustrating a collection of 2-D patterns previewed as a three dimensional object, consistent with some implementations of the current subject matter. In one implementation, 3-D visualization can be combined with amaterial 140 preview to render what the finished product will look like given aparticular material 140. First, a 3-D design can be provided by, for example, a scan by theCNC machine 100, a data file by the user, etc. Then, a 2-D representation of the pattern to be cut on thematerial 140 can be generated to construct the pieces necessary to construct the 3-D product. For example, if a box was imaged, then the pattern would show five pieces, the four walls and the bottom. - The material type of the material 140 can be specified or scanned and an image of the material 140 then integrated with the cut pattern. One way in which the
material 140 can be scanned is by placing thematerial 140 in theCNC machine 100 and imaging thematerial 140 with the cameras. Also, any watermarks, if present, that specify material appearance or other properties can also be acquired. If no scan ofreal material 140 is available, then amaterial 140 can be selected from a library or other database storing known or standard characteristics for particular materials. Once known, the features of the material 140 can be included in the preview image to show, for example, colors, grain, knots, etc. - The combination of the pattern and preview of the material 140 can be rendered as a 3-D image to show what the final product will look like when assembled. This can allow the user to interactively manipulate the preview to, for example, orient portions of the 2-D representation to capture a particular grain pattern, avoid defects in the
material 140 surface, etc. Once the user has finalized the preview, data representing the user-defined cut pattern can be uploaded to the cloud, theCNC machine 100, or other connected computing system. When the preview stage is complete, any adjustments made by the user to the layout are taken into account. The process can then proceed by, for example, generating the motion plan. - One example of using the
material 140 overlay feature is shown inFIG. 12 . Here, apattern 1210 for a tall box is shown on amaterial 140 with a horizontal grain. After the user specifies thepattern 1210 on thematerial 140, a three-dimensional preview 1220 can be generated showing the finished product and including the features of thematerial 140, in this case the grain. When assembled according to thepattern 1210, the three-dimensional preview 1220 would show a box with sides that have both horizontal and vertical grain patterns. To correct this, the user can manipulate thepattern 1210 to arrive at thepattern 1230. After doing so, the generated three-dimensional preview 1240 would show a box with the grain patterns all being vertical. - In another implementation, the extents of the material 140 can be identified by imaging the
material 140 and analyzing the resultant images. For example, if thematerial 140 has a known image, such as being associated with a specific product, thematerial 140 can be identified from archived images of the product. High-contrast features can be used to identify candidate material 140s, for example, features of grain, texture, reflectivity, etc. There can be a pattern underneath thematerial 140, such as a hex pattern on the support or bed of theCNC machine 100. Whenmaterial 140 on the pattern is imaged, missing portions of the pattern can be used to determine the extents of thematerial 140. - Once the extents of the
material 140 are identified, the cut pattern can be located inside thematerial 140 with the preview or automatically when generating the motion plan. If a user attempts to execute a motion plan that extends outside the extents of thematerial 140, a warning can be provided. Alternatively, theCNC machine 100 can be configured to not allow motion plans to be executed outside a defined material boundary. - Kerf Management
- Subtractive CNC machines such as CNC mills, lasers, plasma cutters, and water jets remove a thin strip of material when cutting, called the “kerf”. For example, in a laser with a 0.01″ kerf, cutting a 1″ square in a piece of material yields a 0.995″ square and a 1.005″ hole, as the laser cuts down the centerline and removes 0.01″ of material split evenly between the center and the outside. This can be clearly undesirable in some applications, as complex calculations must be made to ensure that parts intersect and join properly. In another implementation, a user can select what part of a cut pattern corresponds to “project” (the dimensions that should be accurate) and what corresponds to “scrap” (the dimensions that will be affected by kerf). The selection can occur, for example, in the preview, by marks on the
material 140, etc. For example, if the user was creating a 1″ square, the user can indicate that with a filled-in one inch square. If the user wanted a 1″ hole, they can create a large filled-in shape with an unfilled 1″ hole, with the unfilled portion designated as scrap. - One challenge with a laser as compared to a CNC mill is that the kerf width depends on a large variety of factors, including the material, the laser power, the ambient temperature, the cut speed, the lens chosen, the focal distance, and more. By comparison, a ⅛″ end mill can be expected to consistently remove a ⅛″ path of material, regardless of the material chosen. Calculating and accounting for kerf width is a critical challenge that no laser has solved. For example, if a piece made of wood is to mate properly with a piece made of acrylic, their different kerfs must be taken into account. However, in this invention, the kerf width can be calculated, for example, either by lookup with a known
material 140, by measurement after cutting and inspecting, by manual entry by the user after a test cut and manual measurement, etc., and then automatically compensated for. The design and/or motion plan can be reorganized by theCNC machine 100 or other server-based computer program so that the material 140 perimeter is expanded by one half-kerf-measure, so the resulting project is exactly the right size, for example, either 1″ square with a bigger hole, or a 1″ hole with a smaller square. - Parametric Modeling
-
FIG. 13 is a diagram illustrating parametric modeling incorporated into a project preview, consistent with some implementations of the current subject matter. Parametric modeling can describe constraining a first dimension of a portion of a pattern to a second dimension determined by the system or specified by a user. For example, there can be apattern 1310 where arectangular slot 1320 of width D is located in thepattern 1310. The user can specify that asecond pattern 1330 is to contain atab 1340 which will be inserted into theslot 1320. The width D of thetab 1340 is associated with the thickness D of the material 140 that thesecond pattern 1330 is to be cut on. Some variation can be specified, for example, a tight fit, loose fit, etc. Thus, the width D of theslot 1320 in thefirst pattern 1310 can be constrained to generally or precisely match the thickness D of thematerial 140 for thesecond pattern 830, after accounting for material removed by the kerf. For a given pattern of slots and tabs, thematerial 140 thickness can be, for example, determined automatically by having the CNC machine measure thematerial 140 and report the results back to the software that controls the parametric model. This is an improvement on traditional techniques, where if a parametric model was created, the parameters were abstract. In this invention, the parameters may be related to physical characteristics of the materials that may be determined by the machine via measurement or lookup. In so doing, it is possible for a complex three dimensional design to be cut reliably from material of varying thickness. - Any changes to the thickness of the material 140 can propagate through the patterns according the specified constraints. This can be a computationally intensive operation if many cut dimensions need to be adjusted and/or re-optimized. Making such changes is an operation well-suited to being performed by a server. The updated patterns can then be displayed as part of the preview. Also, if changes to a dimension cause a constrained dimension to violate a predefined rule, an alert can be provided to the user. For example, it can be verified that a dimension is not too small or large (too small to be cut or too large to fit on the material 140), that portions of the pattern would overlap, etc. Any of the parametric modeling or other previewing methods described herein can be combined with calculations of the kerf size to form a motion plan that will cut pieces that will fit according to the specified pattern. Also, for motion plans executed across multiple pieces of
material 140, changes to one pattern can propagate to theother materials 140, with the corresponding checks executed by the computer program generating the motion plans to see that slots/tabs are within range and do not cause conflict with any other parts of the motion plans. - Derivative Analysis
- Derivative analysis of the motion plan can be used to calculate higher derivatives (of arbitrary degree, for example velocity, acceleration, and jerk) of the motion plan. The derivative analysis can be used to determine that operational thresholds are never exceeded. The derivative analysis can be performed remotely, such as on a cloud-based server. Further, the allowable parameters can be modified based on closed-loop feedback. For example, if the head constantly overshoots by a small amount, this can indicate a weak motor that is unable to provide the acceleration required by the motion plan. This condition, possibly unique to the
CNC machine 100, can be corrected for by updating the acceleration parameters in the motion plan. In another example, the user may indicate that the machine is shaking, possibly because it is sitting on a flimsy table. Parameters may be adjusted to create less vibration. - Compensation for Systematic Error
- By analyzing images taken with the cameras, sources of systematic error, which can be unique to each
CNC machine 100 and also change over time, can be determined and corrected for. For example, if a part is created according to the motion plan but has a mis-alignment in one direction, the misalignment can be detected and stored either on theCNC machine 100 or on a server. Future motion plans can reference the stored file and compensate for the misalignment by creating motion plans that offset the error, creating a new motion plan or by applying a local correction to any received commands. This technique can be applied to, for example, alignments, backlash/hysteresis, offsets, rotations, skews, etc. -
FIG. 14 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter. - At 1410, sensor data can be acquired from at least one sensor.
- At 1420, sensor data can be transmitted to a first computing system separate from the
CNC machine 100. At 1430, theCNC machine 100 can receive an update to the motion plan from the first computing system. At 1440, the motion plan can be updated based on the received update. At 1450, the updated motion plan can be executed by theCNC machine 100. -
FIG. 15 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter. At 1510, a control unit of a computer numerically controlled machine receives, from a general purpose computer, a part of an execution plan created at the general purpose computer, which is housed separately from the computer numerically controlled machine. The execution plan defines operations for causing movement of a movable head of the computer numerically controlled machine to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine. At 1520, state data for a plurality of subsystems of the computer numerically controlled machine are recorded while performing operations of the computer numerically controlled machine defined in the execution plan, and at 1530, the operations are paused at a point of the execution plan upon determining that a next part of the execution plan to be completed has not been received. The operations of the execution plan are restarted from the point at 1540. The restarting includes performing one or more actions to place the computer numerically controlled machine back into its state at the point based on the recorded state data before resuming with the next part of the execution plan after it has been received. -
FIG. 16 is a process flow chart illustrating features of a method consistent with implementations of the current subject matter. At 1610, an execution plan segment of an execution plan created at the general purpose computer can be received at a control unit of a computer numerically controlled machine. The execution plan can be from a general purpose computer that is housed separately from a computer numerically controlled machine. The execution plan segment can define operations for causing movement of a movable head of the computer numerically controlled machine to deliver electromagnetic energy to effect a change in a material within an interior space of the computer numerically controlled machine. The execution plan segment can include a predefined safe pausing point from which the execution plan can be restarted while minimizing a difference in appearance of a finished work-product relative to if a pause and restart are not necessary. - The execution plan can comprise a motion plan defining movement of the movable head and control commands for operation of one or more other components of the computer numerically controlled machine. The one or more other components can comprise one or more of a laser, a power supply, a fan, a thermal control system, an air filter, a coolant pump, a light source, a camera mounted on the movable head, a camera, or other components mounted inside the interior space but not on the movable head.
- At 1620, a determination that the execution plan comprises a next execution plan segment to be executed after the execution plan segment can be made. In some variations, a determination can be made that the next execution plan segment is fully received by the control unit of a computer numerically controlled machine.
- At 1630, the operations can be paused at the predefined safe pausing point until the next execution plan segment is fully received.
- At 1640 operations of the computer numerically controlled machine defined in the execution plan segment can be commenced only after determining that the execution plan segment has been received up to and including the predefined safe pausing point by the computer numerically controlled machine. Where the next execution plan segment is fully received by the control unit of a computer numerically controlled machine, the operations of the execution plan can be restarted from the predefined safe pausing point according to the next execution plan segment after the determining.
- In some variations, a forecast of variations in sensor data to be generated by one or more sensors of the computer numerically controlled machine during the operations of the execution plan segment can be received at the control unit of the computer numerically controlled machine. The actual data from the one or more sensors can be compared with the forecast. The comparison can be performed by one or more of the computer numerically controlled machine, a general purpose computer in communication with the computer numerically controlled machine, or the like.
- In some variations, the forecast can be based on expected electrical, optical, mechanical, thermal results, or the like, of the operations of the execution plan.
- One or more aspects or features of the subject matter described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) computer hardware, firmware, software, and/or combinations thereof. These various aspects or features can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which can be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. The programmable system or computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
- These computer programs, which can also be referred to programs, software, software applications, applications, components, or code, include machine instructions for a programmable processor, and can be implemented in a high-level procedural language, an object-oriented programming language, a functional programming language, a logical programming language, and/or in assembly/machine language. As used herein, the term “machine-readable medium” refers to any computer program product, apparatus and/or device, such as for example magnetic discs, optical disks, memory, and Programmable Logic Devices (PLDs), used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor. The machine-readable medium can store such machine instructions non-transitorily, such as for example as would a non-transient solid-state memory or a magnetic hard drive or any equivalent storage medium. The machine-readable medium can alternatively or additionally store such machine instructions in a transient manner, such as for example as would a processor cache or other random access memory associated with one or more physical processor cores.
- To provide for interaction with a user, one or more aspects or features of the subject matter described herein can be implemented on a computer having a display device, such as for example a cathode ray tube (CRT) or a liquid crystal display (LCD) or a light emitting diode (LED) monitor for displaying information to the user and a keyboard and a pointing device, such as for example a mouse or a trackball, by which the user may provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well. For example, feedback provided to the user can be any form of sensory feedback, such as for example visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including, but not limited to, acoustic, speech, or tactile input. Other possible input devices include, but are not limited to, touch screens or other touch-sensitive devices such as single or multi-point resistive or capacitive trackpads, voice recognition hardware and software, optical scanners, optical pointers, digital image capture devices and associated interpretation software, and the like.
- In the descriptions above and in the claims, phrases such as “at least one of” or “one or more of” may occur followed by a conjunctive list of elements or features. The term “and/or” may also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it used, such a phrase is intended to mean any of the listed elements or features individually or any of the recited elements or features in combination with any of the other recited elements or features. For example, the phrases “at least one of A and B;” “one or more of A and B;” and “A and/or B” are each intended to mean “A alone, B alone, or A and B together.” A similar interpretation is also intended for lists including three or more items. For example, the phrases “at least one of A, B, and C;” “one or more of A, B, and C;” and “A, B, and/or C” are each intended to mean “A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together.” Use of the term “based on,” above and in the claims is intended to mean, “based at least in part on,” such that an unrecited feature or element is also permissible.
- The subject matter described herein can be embodied in systems, apparatus, methods, and/or articles depending on the desired configuration. The implementations set forth in the foregoing description do not represent all implementations consistent with the subject matter described herein. Instead, they are merely some examples consistent with aspects related to the described subject matter. Although a few variations have been described in detail above, other modifications or additions are possible. In particular, further features and/or variations can be provided in addition to those set forth herein. For example, the implementations described above can be directed to various combinations and subcombinations of the disclosed features and/or combinations and subcombinations of several further features disclosed above. In addition, the logic flows depicted in the accompanying figures and/or described herein do not necessarily require the particular order shown, or sequential order, to achieve desirable results. Other implementations may be within the scope of the following claims.
Claims (20)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/334,120 US10379517B2 (en) | 2015-02-12 | 2016-10-25 | Cloud controlled laser fabrication |
US16/442,198 US11231693B2 (en) | 2015-02-12 | 2019-06-14 | Cloud controlled laser fabrication |
US17/350,789 US11797652B2 (en) | 2015-02-12 | 2021-06-17 | Cloud controlled laser fabrication |
US18/492,742 US20240202290A1 (en) | 2015-02-12 | 2023-10-23 | Cloud controlled laser fabrication |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562115562P | 2015-02-12 | 2015-02-12 | |
US201562115571P | 2015-02-12 | 2015-02-12 | |
US201562222756P | 2015-09-23 | 2015-09-23 | |
US201562222757P | 2015-09-23 | 2015-09-23 | |
US201562222758P | 2015-09-23 | 2015-09-23 | |
PCT/US2016/017904 WO2016131022A1 (en) | 2015-02-12 | 2016-02-12 | Cloud controlled laser fabrication |
US15/334,120 US10379517B2 (en) | 2015-02-12 | 2016-10-25 | Cloud controlled laser fabrication |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2016/017904 Continuation WO2016131022A1 (en) | 2015-02-12 | 2016-02-12 | Cloud controlled laser fabrication |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/442,198 Continuation US11231693B2 (en) | 2015-02-12 | 2019-06-14 | Cloud controlled laser fabrication |
Publications (3)
Publication Number | Publication Date |
---|---|
US20170235294A1 US20170235294A1 (en) | 2017-08-17 |
US20190107821A9 true US20190107821A9 (en) | 2019-04-11 |
US10379517B2 US10379517B2 (en) | 2019-08-13 |
Family
ID=55451578
Family Applications (11)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/334,095 Active 2036-12-19 US10520915B2 (en) | 2015-02-12 | 2016-10-25 | Visual preview for laser fabrication |
US15/334,120 Active 2037-04-16 US10379517B2 (en) | 2015-02-12 | 2016-10-25 | Cloud controlled laser fabrication |
US15/334,104 Active 2037-01-21 US10496070B2 (en) | 2015-02-12 | 2016-10-25 | Moving material during laser fabrication |
US16/442,198 Active US11231693B2 (en) | 2015-02-12 | 2019-06-14 | Cloud controlled laser fabrication |
US16/670,526 Active US11537095B2 (en) | 2015-02-12 | 2019-10-31 | Multi-function computer numerically controlled machine |
US16/691,429 Active US11537097B2 (en) | 2015-02-12 | 2019-11-21 | Visual preview for laser fabrication by assembling multiple camera images |
US16/691,426 Active US11537096B2 (en) | 2015-02-12 | 2019-11-21 | Laser cutter engraver material height measurement |
US17/350,789 Active US11797652B2 (en) | 2015-02-12 | 2021-06-17 | Cloud controlled laser fabrication |
US18/086,652 Pending US20230281279A1 (en) | 2015-02-12 | 2022-12-22 | Visual Preview for Laser Fabrication |
US18/086,655 Active US11995159B2 (en) | 2015-02-12 | 2022-12-22 | Multi-function computer numerically controlled machine |
US18/492,742 Pending US20240202290A1 (en) | 2015-02-12 | 2023-10-23 | Cloud controlled laser fabrication |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/334,095 Active 2036-12-19 US10520915B2 (en) | 2015-02-12 | 2016-10-25 | Visual preview for laser fabrication |
Family Applications After (9)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/334,104 Active 2037-01-21 US10496070B2 (en) | 2015-02-12 | 2016-10-25 | Moving material during laser fabrication |
US16/442,198 Active US11231693B2 (en) | 2015-02-12 | 2019-06-14 | Cloud controlled laser fabrication |
US16/670,526 Active US11537095B2 (en) | 2015-02-12 | 2019-10-31 | Multi-function computer numerically controlled machine |
US16/691,429 Active US11537097B2 (en) | 2015-02-12 | 2019-11-21 | Visual preview for laser fabrication by assembling multiple camera images |
US16/691,426 Active US11537096B2 (en) | 2015-02-12 | 2019-11-21 | Laser cutter engraver material height measurement |
US17/350,789 Active US11797652B2 (en) | 2015-02-12 | 2021-06-17 | Cloud controlled laser fabrication |
US18/086,652 Pending US20230281279A1 (en) | 2015-02-12 | 2022-12-22 | Visual Preview for Laser Fabrication |
US18/086,655 Active US11995159B2 (en) | 2015-02-12 | 2022-12-22 | Multi-function computer numerically controlled machine |
US18/492,742 Pending US20240202290A1 (en) | 2015-02-12 | 2023-10-23 | Cloud controlled laser fabrication |
Country Status (5)
Country | Link |
---|---|
US (11) | US10520915B2 (en) |
EP (5) | EP3256916B1 (en) |
CN (4) | CN117259959A (en) |
HK (1) | HK1248838A1 (en) |
WO (4) | WO2016131018A1 (en) |
Families Citing this family (125)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117259959A (en) | 2015-02-12 | 2023-12-22 | 格罗弗治公司 | Visual preview for laser machining |
US10509390B2 (en) | 2015-02-12 | 2019-12-17 | Glowforge Inc. | Safety and reliability guarantees for laser fabrication |
FR3046370B1 (en) * | 2015-12-31 | 2018-02-16 | Ecole Centrale De Nantes | METHOD AND SYSTEM FOR ADJUSTING AN ADDITIVE MANUFACTURING DEVICE |
US11027332B2 (en) * | 2016-04-15 | 2021-06-08 | United States Of America As Represented By The Administrator Of Nasa | System and method for in-situ characterization and inspection of additive manufacturing deposits using transient infrared thermography |
US10877459B2 (en) * | 2016-05-04 | 2020-12-29 | Yelizaveta Kholodkova | Apparatus for outlining on vertical surface and methods of use |
JP6426667B2 (en) * | 2016-08-10 | 2018-11-21 | 三菱重工工作機械株式会社 | Apparatus for detecting abnormality of tool of machine tool and method |
TWI614081B (en) * | 2016-08-17 | 2018-02-11 | 財團法人工業技術研究院 | Remote machining optimization system and method |
US10674101B2 (en) * | 2016-10-28 | 2020-06-02 | General Electric Company | Imaging devices for use with additive manufacturing systems and methods of imaging a build layer |
US11440261B2 (en) | 2016-11-08 | 2022-09-13 | The Boeing Company | Systems and methods for thermal control of additive manufacturing |
US10814668B2 (en) * | 2016-11-08 | 2020-10-27 | Jeffery James Jackson | Kiosk and method for making puzzle tags |
TR201616881A2 (en) * | 2016-11-21 | 2017-01-23 | Dener Makina Sanayi Ve Ticaret Ltd Sirketi | AUTOMATIC SHEET MEASURING SYSTEM WITH CAMERA DETERMINING THE WIDTH, LENGTH OF THE PLATE, THE CUTTING STARTING POINT AND THE ROTATION ANGLE |
WO2018098398A1 (en) * | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Preset optical components in a computer numerically controlled machine |
WO2018098393A1 (en) | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Housing for computer-numerically-controlled machine |
WO2018098396A1 (en) | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Multi-user computer-numerically-controlled machine |
WO2018098395A1 (en) | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Improved engraving in a computer numerically controlled machine |
WO2018098399A1 (en) | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Controlled deceleration of moveable components in a computer numerically controlled machine |
WO2018098394A1 (en) * | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Fabrication with image tracing |
WO2018098397A1 (en) * | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Calibration of computer-numerically-controlled machine |
JP6859715B2 (en) * | 2017-01-18 | 2021-04-14 | 富士ゼロックス株式会社 | Information processing equipment, 3D modeling system, and information processing program |
JP2018117320A (en) * | 2017-01-20 | 2018-07-26 | 株式会社東芝 | Video synthesizer and video synthesis method for electron mirror |
JP6464213B2 (en) * | 2017-02-09 | 2019-02-06 | ファナック株式会社 | Laser processing system having laser processing head and imaging device |
JP6412185B2 (en) * | 2017-03-02 | 2018-10-24 | ファナック株式会社 | Machine tool system |
CN110494839B (en) * | 2017-03-03 | 2024-08-06 | 皇家飞利浦有限公司 | System and method for three-dimensionally printing spare parts |
US11014265B2 (en) * | 2017-03-20 | 2021-05-25 | Battelle Energy Alliance, Llc | Methods and apparatus for additively manufacturing structures using in situ formed additive manufacturing materials |
US10275722B2 (en) * | 2017-04-19 | 2019-04-30 | The Nordam Group, Inc. | Self recognition CNC machining |
KR102482487B1 (en) * | 2017-05-10 | 2022-12-29 | 모나쉬 유니버시티 | Methods and systems for quality assurance and control of additive manufacturing processes |
JP2018205099A (en) * | 2017-06-02 | 2018-12-27 | コニカミノルタ株式会社 | Inspection device for cylindrical object |
US20190033832A1 (en) * | 2017-07-25 | 2019-01-31 | Inovatech Engineering Corp. | Usability enhancements for cnc tools |
JP6662819B2 (en) * | 2017-08-10 | 2020-03-11 | ファナック株式会社 | Control system |
US11059141B2 (en) * | 2017-08-22 | 2021-07-13 | Gemini Precision Machining, Inc. | Smart tool system |
WO2019055049A1 (en) * | 2017-09-18 | 2019-03-21 | Robert Bosch Tool Corporation | Method to ensure safety critical functionality for an electrically powered machine |
CN107552877B (en) * | 2017-10-16 | 2019-04-12 | 杭州喜马拉雅信息科技有限公司 | A kind of 3D printing metal forming part and substrate sawing separator |
JP7366529B2 (en) * | 2017-10-27 | 2023-10-23 | キヤノン株式会社 | Manufacturing method and modeled object |
WO2019083042A1 (en) * | 2017-10-27 | 2019-05-02 | キヤノン株式会社 | Ceramic molded object production method |
US10919218B2 (en) | 2017-11-08 | 2021-02-16 | General Electric Company | Interlace calibration and methods of use thereof |
JP6904223B2 (en) * | 2017-11-10 | 2021-07-14 | オムロン株式会社 | Abnormal state detection device, abnormal state detection method, and abnormal state detection program |
US10828724B2 (en) | 2017-11-13 | 2020-11-10 | General Electric Company | Foil part vectorization for mobile large scale additive manufacturing using foil-based build materials |
US10828723B2 (en) | 2017-11-13 | 2020-11-10 | General Electric Company | Process monitoring for mobile large scale additive manufacturing using foil-based build materials |
US11364564B2 (en) | 2017-11-13 | 2022-06-21 | General Electric Company | Mobile large scale additive manufacturing using foil-based build materials |
US10894299B2 (en) | 2017-11-13 | 2021-01-19 | General Electric Company | Fixed bed large scale additive manufacturing using foil-based build materials |
CN108081534A (en) * | 2017-11-15 | 2018-05-29 | 东莞万德电子制品有限公司 | Plastic material 3D printing technique and its finished product |
EP3498457A1 (en) * | 2017-12-15 | 2019-06-19 | CL Schutzrechtsverwaltungs GmbH | Apparatus for additively manufacturing three-dimensional objects |
US10558868B2 (en) * | 2017-12-18 | 2020-02-11 | GM Global Technology Operations LLC | Method and apparatus for evaluating a vehicle travel surface |
EP3731993A1 (en) * | 2017-12-28 | 2020-11-04 | Avery Dennison Retail Information Services, LLC | Apparatus and method of adaptive laser cutting control based on optical inspection |
CN108227636B (en) * | 2018-01-17 | 2020-01-17 | 厦门理工学院 | Laser engraving machine working system and method based on cloud load balance control |
US10739128B2 (en) * | 2018-02-26 | 2020-08-11 | The Boeing Company | Laser scanner scanning using a computer numerical controlled (CNC) system for movement |
JP7120774B2 (en) * | 2018-02-27 | 2022-08-17 | 株式会社神戸製鋼所 | Laminate-molded article modeling procedure design method, laminate-molded article modeling method, manufacturing apparatus, and program |
US11402669B2 (en) | 2018-04-27 | 2022-08-02 | Apple Inc. | Housing surface with tactile friction features |
CN110442081B (en) * | 2018-05-03 | 2021-09-03 | 西门子(中国)有限公司 | SVG-based numerical control processing method, device, system and storage medium |
US20190351484A1 (en) * | 2018-05-20 | 2019-11-21 | 3D Flexible, Inc. | Metal pastes for additive manufacturing |
CN108769530B (en) * | 2018-06-19 | 2020-10-20 | 朱炳强 | Image acquisition processing device and image acquisition processing method |
JP7084507B2 (en) * | 2018-06-28 | 2022-06-14 | スリーディー システムズ インコーポレーテッド | 3D printer that responds to external vibration |
US11112827B2 (en) | 2018-07-20 | 2021-09-07 | Apple Inc. | Electronic device with glass housing member |
DE102018118077A1 (en) * | 2018-07-26 | 2020-01-30 | Bystronic Laser Ag | Suction device, laser processing machine and method for suction |
CN108890321A (en) * | 2018-07-29 | 2018-11-27 | 赫克测控技术(苏州)有限公司 | Automatic processing system and lathe |
US11511381B2 (en) * | 2018-08-29 | 2022-11-29 | Illinois Tool Works Inc. | Movement control of material removal systems |
ES2882668T3 (en) * | 2018-09-10 | 2021-12-02 | Sassomeccanica S P A | Machine with interchangeable tools for the processing of rolled materials |
WO2020053694A1 (en) * | 2018-09-13 | 2020-03-19 | Provolution (Pty) Ltd | An additive manufacturing machine, system and method |
DE102018123363B4 (en) * | 2018-09-24 | 2021-01-07 | Bystronic Laser Ag | Procedure for collision avoidance and laser processing machine |
WO2020091746A1 (en) * | 2018-10-30 | 2020-05-07 | Hewlett-Packard Development Company, L.P. | 3d print service compute node for 3d model printing |
US11354466B1 (en) | 2018-11-02 | 2022-06-07 | Inkbit, LLC | Machine learning for additive manufacturing |
AU2019374148A1 (en) | 2018-11-02 | 2021-05-27 | Inkbit, LLC | Intelligent additive manufacturing |
CN109746679A (en) * | 2018-12-14 | 2019-05-14 | 北京印刷学院 | A kind of cutting of five axis of curved surface and surface air brushing compounding method |
US11691912B2 (en) | 2018-12-18 | 2023-07-04 | Apple Inc. | Chemically strengthened and textured glass housing member |
US11077620B2 (en) | 2019-01-08 | 2021-08-03 | Inkbit, LLC | Depth reconstruction in additive fabrication |
US10974460B2 (en) * | 2019-01-08 | 2021-04-13 | Inkbit, LLC | Reconstruction of surfaces for additive manufacturing |
DE102019100416A1 (en) * | 2019-01-09 | 2020-07-09 | Deutsches Zentrum für Luft- und Raumfahrt e.V. | 3D printer with fire protection function |
DE102019101222A1 (en) * | 2019-01-17 | 2020-07-23 | Highyag Lasertechnologie Gmbh | Procedure for selecting camera image sections |
WO2020153964A1 (en) | 2019-01-24 | 2020-07-30 | Hewlett-Packard Development Company, L.P. | Validation of object model dimensions for additive manufacturing |
DE102019103152A1 (en) * | 2019-02-08 | 2020-08-13 | Homag Gmbh | Control device and method |
DE102019201723A1 (en) * | 2019-02-11 | 2020-08-13 | Trumpf Laser- Und Systemtechnik Gmbh | Method for setting up a machine tool and manufacturing system |
DK180404B1 (en) * | 2019-05-01 | 2021-04-12 | Kobots Aps | A method of controlling a portable automated panel cutter |
US11372137B2 (en) | 2019-05-29 | 2022-06-28 | Apple Inc. | Textured cover assemblies for display applications |
US10827635B1 (en) | 2019-06-05 | 2020-11-03 | Apple Inc. | Electronic device enclosure having a textured glass component |
US11109500B2 (en) | 2019-06-05 | 2021-08-31 | Apple Inc. | Textured glass component for an electronic device enclosure |
CN112045314B (en) * | 2019-06-05 | 2023-05-23 | 苹果公司 | Electronic device including a laser textured glass cover member |
CN110222454B (en) * | 2019-06-14 | 2022-03-22 | 哈尔滨理工大学 | Process design method for milling precision consistency |
JP7227083B2 (en) * | 2019-06-17 | 2023-02-21 | ファナック株式会社 | Machining path display device |
DE102019121878A1 (en) * | 2019-08-14 | 2021-02-18 | Homag Gmbh | Interchangeable processing unit |
JP7309277B2 (en) * | 2019-09-12 | 2023-07-18 | 株式会社ディスコ | POSITION ADJUSTMENT METHOD AND POSITION ADJUSTMENT DEVICE |
CN110569257B (en) * | 2019-09-16 | 2022-04-01 | 上海达梦数据库有限公司 | Data processing method, corresponding device, equipment and storage medium |
US11351636B2 (en) * | 2019-10-23 | 2022-06-07 | Banyan Imports Corporation | Laser engraving machine |
US11559856B2 (en) | 2019-10-28 | 2023-01-24 | Robert Bosch Gmbh | Laser cutter adapted to cut rotating workpieces |
US20210136969A1 (en) * | 2019-11-01 | 2021-05-06 | The Boeing Company | Pick and place system and methods for use |
US11712837B2 (en) | 2019-11-01 | 2023-08-01 | Inkbit, LLC | Optical scanning for industrial metrology |
US11305377B2 (en) * | 2019-12-23 | 2022-04-19 | Precitec Gmbh & Co. Kg | Add-on module for interposing between a control device and a laser machining head of a laser machining system |
US20210252633A1 (en) * | 2020-02-18 | 2021-08-19 | Universal Laser Systems, Inc. | Laser processing systems with multi-camera vision subsystems and associated methods of use |
AT17186U1 (en) * | 2020-03-11 | 2021-08-15 | Progress Maschinen & Automation Ag | 3D printing device, especially for the construction industry |
EP3892402A1 (en) * | 2020-04-06 | 2021-10-13 | Siemens Aktiengesellschaft | Positioning means for additive manufacturing |
EP3923095A1 (en) * | 2020-06-08 | 2021-12-15 | Siemens Aktiengesellschaft | Configuration device, update server and method for software update of a technical installation |
TWI724921B (en) * | 2020-06-16 | 2021-04-11 | 中華學校財團法人中華科技大學 | System with real-time monitoring 3d printing device |
CN111823471B (en) * | 2020-07-21 | 2022-01-11 | 上海发那科机器人有限公司 | Automatic cavity foaming visual positioning device and automatic foaming method |
US10994490B1 (en) | 2020-07-31 | 2021-05-04 | Inkbit, LLC | Calibration for additive manufacturing by compensating for geometric misalignments and distortions between components of a 3D printer |
DE102020120887B4 (en) | 2020-08-07 | 2022-05-12 | Trumpf Werkzeugmaschinen Gmbh + Co. Kg | METHOD OF DETECTING A HANGING POSITION OF A SUPPORT BAR AND FLAT BED MACHINE TOOL |
US11897809B2 (en) | 2020-09-02 | 2024-02-13 | Apple Inc. | Electronic devices with textured glass and glass ceramic components |
US20220080668A1 (en) * | 2020-09-17 | 2022-03-17 | Concept Laser Gmbh | Calibrating beam generation systems and imaging systems for additive manufacturing |
US20220171366A1 (en) * | 2020-11-27 | 2022-06-02 | Glowforge Inc. | Thermal modeling for computer numerically controlled fabrication |
US11740608B2 (en) | 2020-12-24 | 2023-08-29 | Glowforge, Inc | Computer numerically controlled fabrication using projected information |
CN112720705A (en) * | 2021-01-19 | 2021-04-30 | 安徽理工大学 | Sliding table saw anti-cutting protection system based on vision |
US11698622B2 (en) | 2021-03-09 | 2023-07-11 | Glowforge Inc. | Previews for computer numerically controlled fabrication |
US11400496B1 (en) * | 2021-03-25 | 2022-08-02 | Unice E-O Services Inc. | Dry laser cleaning apparatus and process thereof |
TR202106461A2 (en) * | 2021-04-12 | 2021-08-23 | Durmazlar Makina Sanayi Ve Ticaret Anonim Sirketi | A SHEET WORKING MACHINE |
US20220391821A1 (en) * | 2021-06-02 | 2022-12-08 | Sustainment Technologies, Inc. | Data-driven requirements analysis and matching |
US20220391820A1 (en) * | 2021-06-02 | 2022-12-08 | Sustainment Technologies, Inc. | Data-driven requirements analysis and matching |
US11783453B2 (en) | 2021-06-10 | 2023-10-10 | Bank Of America Corporation | Adapting image noise removal model based on device capabilities |
WO2023288189A1 (en) * | 2021-07-14 | 2023-01-19 | Wisconsin Alumni Research Foundation | Fabrication of resin objects using focused ultrasound waves |
CN113695754A (en) * | 2021-08-30 | 2021-11-26 | 南京惠镭光电科技有限公司 | Method for preparing nanobelt by femtosecond laser |
US20230081765A1 (en) * | 2021-09-10 | 2023-03-16 | Chun-Fu Kuo | Processing device for processing opposing edges of a flexible sheet body |
AT525468B1 (en) * | 2021-09-30 | 2023-10-15 | Trotec Laser Gmbh | Method for determining a position of a workpiece in a processing space of a laser plotter for cutting, engraving, marking and/or labeling the workpiece, as well as methods for calibrating and laser plotters therefor |
JP7288489B2 (en) * | 2021-10-04 | 2023-06-07 | 株式会社ソディック | LAMINATED MAKING APPARATUS AND METHOD FOR MANUFACTURING LAMINATED PRODUCT |
US20230118552A1 (en) * | 2021-10-14 | 2023-04-20 | Worldwide Superabrasives, LLC | Cnc add-on sensor system and method for real-time detection of tool anomalies |
IT202100027164A1 (en) * | 2021-10-22 | 2023-04-22 | Scm Ind Spa | Method for processing panels and machine to carry out that method |
CN114102256B (en) * | 2021-11-04 | 2022-09-06 | 清华大学 | Machine tool rotating shaft geometric error identification method and device and storage medium |
CN114406982B (en) * | 2022-01-05 | 2023-06-30 | 青岛黄海学院 | Motion workpiece recognition grabbing device and method based on binocular stereoscopic vision |
WO2023150243A2 (en) | 2022-02-02 | 2023-08-10 | WELLER, Edward | Automatic calibration for subtractive fabrication machines |
US20230252443A1 (en) * | 2022-02-04 | 2023-08-10 | Ncr Corporation | Checkout product recognition techniques |
CN114535890B (en) * | 2022-04-28 | 2022-07-15 | 潍坊工商职业学院 | Multi-angle welding device |
US20230359167A1 (en) * | 2022-05-04 | 2023-11-09 | Brenden Morton | Remnant processing |
CN114985994B (en) * | 2022-06-20 | 2024-05-31 | 四川航天长征装备制造有限公司 | Positioning device and cutting method for laser cutting of multi-pass sheet metal parts |
TWI844877B (en) * | 2022-06-28 | 2024-06-11 | 國立中央大學 | Laser processing equipment and method |
CN115157010B (en) * | 2022-07-28 | 2023-11-24 | 北京航空航天大学 | Positioning processing system and method for large thin-wall workpieces of multiple varieties |
CN117754153A (en) * | 2022-11-04 | 2024-03-26 | 深圳市创客工场科技有限公司 | Laser processing apparatus, control method thereof, and computer-readable storage medium |
AT526893A1 (en) * | 2023-02-09 | 2024-08-15 | Trotec Laser Gmbh | Method for detecting an exchangeable processing table or table type of a laser plotter for cutting, engraving, marking and/or labeling a workpiece, as well as a laser plotter for engraving, marking and/or labeling a workpiece therefor |
CN117300335B (en) * | 2023-09-22 | 2024-08-06 | 广东技术师范大学 | Laser processing method and system based on machine vision |
CN117644294B (en) * | 2024-01-29 | 2024-05-03 | 北京金橙子科技股份有限公司 | Laser processing method and control device based on visual preview guidance |
Family Cites Families (258)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3721811A (en) | 1971-04-29 | 1973-03-20 | Cincinnati Milacron Inc | Apparatus for commanding a deceleration in numerical control systems |
US3967176A (en) | 1974-10-15 | 1976-06-29 | Westinghouse Electric Corporation | Process control apparatus |
US4055787A (en) | 1975-07-28 | 1977-10-25 | Giddings & Lewis, Inc. | Interruptable numerical contouring control system with return to path safeguards |
US4138718A (en) | 1977-11-14 | 1979-02-06 | Allen-Bradley Company | Numerical control system with downloading capability |
DE3005520C2 (en) | 1980-02-14 | 1983-05-05 | Kayser-Threde GmbH, 8000 München | Two-beam interferometer for Fourier spectroscopy |
AU7560281A (en) | 1980-09-29 | 1982-04-08 | Xerox Corporation | Laser scanner |
US4589729A (en) | 1982-01-12 | 1986-05-20 | At&T Bell Laboratories | Apparatus comprising an articulated arm radiation guide |
US4518843A (en) | 1982-09-01 | 1985-05-21 | Westinghouse Electric Corp. | Laser lens and light assembly |
JPS6127590U (en) | 1984-07-23 | 1986-02-19 | 昭和電工株式会社 | Laser beam shielding plate |
US4723219A (en) | 1985-06-21 | 1988-02-02 | Amca International Corporation | Programmed path for automatic tool retraction and return responsive to degradation threshold |
DE3544251A1 (en) | 1985-12-14 | 1987-06-19 | Duerkopp System Technik Gmbh | METHOD AND DEVICE FOR THE AUTOMATIC CUTTING OF PARTS FROM FLAT AREA SEWING MATERIAL, ACCORDING TO DIFFERENT CONTOURS, TEMPLATES ON A COORDINATE CUTTING MACHINE |
US4863538A (en) | 1986-10-17 | 1989-09-05 | Board Of Regents, The University Of Texas System | Method and apparatus for producing parts by selective sintering |
US4918611A (en) | 1988-07-21 | 1990-04-17 | Industrial Technology Research Institute | Method and apparatus for controlling laser cutting by image processing |
US4894831A (en) | 1988-09-07 | 1990-01-16 | Spectra-Physics | Longitudinally pumped laser oscillator |
JPH0338611A (en) | 1989-07-05 | 1991-02-19 | Think Lab Kk | Method for correcting passage of gas laser beam |
JPH03245116A (en) | 1990-02-23 | 1991-10-31 | Toshiba Corp | Optical device and image forming device or image reader incorporating the optical device |
JP2684107B2 (en) * | 1990-02-28 | 1997-12-03 | 松下電器産業株式会社 | Numerical controller for laser beam machine |
JPH04237306A (en) | 1991-01-21 | 1992-08-25 | Fanuc Ltd | Method for restarting punch press machine and neumerical control device |
JPH04244347A (en) | 1991-01-29 | 1992-09-01 | Osaka Kiko Co Ltd | Life tool change method during machining |
IT1247844B (en) | 1991-03-29 | 1995-01-02 | Pirelli Cavi S P A Dir Proprie | OPTICAL FIBER TELECOMMUNICATION LINE WITH OPTICAL AMPLIFIERS, EQUIPPED WITH PROTECTIVE MEANS ABLE TO INTERRUPT THE LIGHT EMISSION IN THE ENTIRE LINE IN THE PRESENCE OF AN INTERRUPTION OF THE OPTICAL FIBER AND TO AUTOMATICALLY REACTIVATE IT TO RESTORE ITS CONTACT |
US5682319A (en) * | 1991-06-04 | 1997-10-28 | Anca Pty. Ltd. | Computer numerically controlled machines |
DE4140211C2 (en) * | 1991-12-06 | 1999-12-09 | Meurer Nonfood Product Gmbh | Method and device for setting up cutting dies and for aligning embossing plates for an embossing template |
JP3107628B2 (en) | 1992-01-23 | 2000-11-13 | トヨタ自動車株式会社 | Optical shape recognition device |
DE4215338A1 (en) | 1992-05-09 | 1993-11-11 | Sel Alcatel Ag | Optical communication system with monitoring device to avoid giant impulses |
JPH0647575A (en) | 1992-08-03 | 1994-02-22 | Fanuc Ltd | Optical scanning type laser beam machine |
JPH06196557A (en) | 1992-12-24 | 1994-07-15 | Sumitomo Electric Ind Ltd | Method and apparatus for dicing semiconductor wafer |
TW245669B (en) * | 1993-09-27 | 1995-04-21 | Mitsubishi Electric Machine | |
JP3175463B2 (en) | 1994-02-24 | 2001-06-11 | 三菱電機株式会社 | Laser cutting method |
DE19502472A1 (en) | 1995-01-27 | 1996-08-01 | Fraunhofer Ges Forschung | Method and device for picking up an object |
JP3457436B2 (en) * | 1995-09-21 | 2003-10-20 | 株式会社アマダ | Hand-held YAG laser processing head |
AU1690597A (en) * | 1996-01-11 | 1997-08-01 | Mitre Corporation, The | System for controlling access and distribution of digital property |
FR2748562B1 (en) | 1996-05-10 | 1998-07-03 | Sofie Instr | METHOD AND DEVICE WITH TWO OBSERVATION CAMERAS FOR THREE-DIMENSIONAL MEASUREMENTS OF A COMPLEX STRUCTURE |
US6128546A (en) | 1996-09-30 | 2000-10-03 | Cincinnati Incorporated | Method and apparatus for a cutting system for avoiding pre-cut features |
EP1852209B1 (en) | 1996-11-20 | 2013-08-14 | Ibiden Co., Ltd. | Laser machining apparatus for manufacturing a multilayered printed wiring board |
JP3213882B2 (en) | 1997-03-21 | 2001-10-02 | 住友重機械工業株式会社 | Laser processing apparatus and processing method |
US6085122A (en) | 1997-05-30 | 2000-07-04 | Dtm Corporation | End-of-vector laser power control in a selective laser sintering system |
US6031200A (en) | 1997-08-04 | 2000-02-29 | Data Technology, Inc. | In-process kerf measurement system |
US6317255B1 (en) | 1998-04-28 | 2001-11-13 | Lucent Technologies Inc. | Method and apparatus for controlling optical signal power in response to faults in an optical fiber path |
IT1303239B1 (en) | 1998-08-07 | 2000-11-02 | Brown & Sharpe Dea Spa | DEVICE AND METHOD FOR POSITIONING A MEASURING HEAD IN A THREE-DIMENSIONAL MEASURING MACHINE WITHOUT CONTACT. |
US6498653B1 (en) | 1998-12-14 | 2002-12-24 | Optodyne, Inc. | Tool path measurement |
DE19918613A1 (en) | 1999-04-23 | 2000-11-30 | Eos Electro Optical Syst | Method for calibrating a device for producing a three-dimensional object, calibration device and method and device for producing a three-dimensional object |
US6392192B1 (en) * | 1999-09-15 | 2002-05-21 | W. A. Whitney Co. | Real time control of laser beam characteristics in a laser-equipped machine tool |
US6326586B1 (en) | 1999-07-23 | 2001-12-04 | Lillbacka Jetair Oy | Laser cutting system |
US6284999B1 (en) | 1999-07-23 | 2001-09-04 | Lillbacka Jetair Oy | Laser cutting system |
US6420675B1 (en) | 1999-10-08 | 2002-07-16 | Nanovia, Lp | Control system for ablating high-density array of vias or indentation in surface of object |
EP1428671A1 (en) | 1999-11-08 | 2004-06-16 | Encad, Inc. | Digital media cutter |
DE19960834B4 (en) * | 1999-12-16 | 2006-10-26 | Agie S.A., Losone | Method and device for fault detection, in particular for collision detection, in the drive system of a numerically controlled machine tool |
US6996720B1 (en) * | 1999-12-17 | 2006-02-07 | Microsoft Corporation | System and method for accessing protected content in a rights-management architecture |
JP4311856B2 (en) | 2000-03-30 | 2009-08-12 | 三菱電線工業株式会社 | Laser light transmission device |
WO2001076250A1 (en) * | 2000-04-04 | 2001-10-11 | Learningaction, Inc. | Streaming multimedia information |
JP2001330413A (en) | 2000-05-22 | 2001-11-30 | Disco Abrasive Syst Ltd | Thickness measuring method and apparatus |
JP2002022417A (en) * | 2000-07-13 | 2002-01-23 | Disco Abrasive Syst Ltd | Thickness measuring device |
AU7593601A (en) * | 2000-07-14 | 2002-01-30 | Atabok Inc | Controlling and managing digital assets |
JP2002123306A (en) | 2000-10-17 | 2002-04-26 | Toshiba Mach Co Ltd | Monitor system for machine tool |
CN1364033A (en) | 2000-11-28 | 2002-08-14 | 国枝博昭 | High performance code compressed system for dynamic image data |
US6922607B2 (en) | 2000-12-06 | 2005-07-26 | Tsunehiko Yamazaki | Numerically controlled method |
US6528762B2 (en) * | 2001-02-12 | 2003-03-04 | W. A. Whitney Co. | Laser beam position control apparatus for a CNC laser equipped machine tool |
US6528758B2 (en) | 2001-02-12 | 2003-03-04 | Icon Laser Technologies, Inc. | Method and apparatus for fading a dyed textile material |
US20020129485A1 (en) * | 2001-03-13 | 2002-09-19 | Milling Systems And Concepts Pte Ltd | Method and apparatus for producing a prototype |
US6531680B2 (en) | 2001-04-06 | 2003-03-11 | W. A. Whitney Co. | Cube corner laser beam retroreflector apparatus for a laser equipped machine tool |
GB0118307D0 (en) | 2001-07-26 | 2001-09-19 | Gsi Lumonics Ltd | Automated energy beam positioning |
WO2003022453A1 (en) * | 2001-09-13 | 2003-03-20 | Koninklijke Philips Electronics N.V. | Apparatus for and method of applying a substance to a substrate |
EP1309108A1 (en) | 2001-10-31 | 2003-05-07 | Agilent Technologies, Inc. (a Delaware corporation) | Optical transceiver with automatic power shut-down arrangement |
WO2003057328A1 (en) * | 2002-01-09 | 2003-07-17 | Samuelson Neville Anthony Wyli | Cards at least one being made from transparent material |
US7067763B2 (en) * | 2002-05-17 | 2006-06-27 | Gsi Group Corporation | High speed, laser-based marking method and system for producing machine readable marks on workpieces and semiconductor devices with reduced subsurface damage produced thereby |
US20050115941A1 (en) | 2002-07-31 | 2005-06-02 | Sukhman Yefim P. | Laser containment structure allowing the use of plastics |
US6746310B2 (en) | 2002-08-06 | 2004-06-08 | Qed Technologies, Inc. | Uniform thin films produced by magnetorheological finishing |
US7306696B2 (en) * | 2002-11-01 | 2007-12-11 | Applied Materials, Inc. | Interferometric endpoint determination in a substrate etching process |
US6696667B1 (en) | 2002-11-22 | 2004-02-24 | Scimed Life Systems, Inc. | Laser stent cutting |
FR2850308B1 (en) | 2003-01-28 | 2005-03-04 | Commissariat Energie Atomique | PERIPHERAL DEVICE FOR PRINTING AND CUTTING PAPER SHEETS USING LOW POWER LASER SOURCE |
GB0303270D0 (en) | 2003-02-13 | 2003-03-19 | Renishaw Plc | A machine tool control process and apparatus therefor |
JP4144389B2 (en) | 2003-03-14 | 2008-09-03 | オムロン株式会社 | Optical film measuring device |
JP4055998B2 (en) | 2003-04-15 | 2008-03-05 | 本田技研工業株式会社 | Distance detection device, distance detection method, and distance detection program |
US7005606B2 (en) * | 2003-09-09 | 2006-02-28 | W.A. Whitney Co. | Laser machine tool with image sensor for registration of workhead guidance system |
US20050069682A1 (en) | 2003-09-30 | 2005-03-31 | Tan Tseng | Custom 3-D Milled Object with Vacuum-Molded 2-D Printout Created from a 3-D Camera |
JP2005191173A (en) | 2003-12-25 | 2005-07-14 | Hitachi Ltd | Display and its manufacturing method |
JP4509578B2 (en) | 2004-01-09 | 2010-07-21 | 浜松ホトニクス株式会社 | Laser processing method and laser processing apparatus |
WO2005067790A1 (en) | 2004-01-16 | 2005-07-28 | Compumedics Ltd | Method and apparatus for ecg-derived sleep disordered breathing monitoring, detection and classification |
US7469620B2 (en) | 2004-02-10 | 2008-12-30 | Matthew Fagan | Method and system for eliminating external piercing in NC cutting of nested parts |
JP2005230886A (en) | 2004-02-20 | 2005-09-02 | Hitachi Via Mechanics Ltd | Nc-controlled laser beam machine |
US20060265703A1 (en) | 2005-04-21 | 2006-11-23 | Holt John M | Computer architecture and method of operation for multi-computer distributed processing with replicated memory |
DE102005032946A1 (en) | 2004-07-16 | 2006-02-02 | Carl Zeiss Meditec Ag | Device for processing an object by means of laser radiation |
US7556490B2 (en) | 2004-07-30 | 2009-07-07 | Board Of Regents, The University Of Texas System | Multi-material stereolithography |
KR20040080412A (en) * | 2004-08-24 | 2004-09-18 | 고태조 | A Development of Collision Prevention System For CNC Machine Using Laser Sensor and CCD Camera |
US7449790B2 (en) | 2004-08-26 | 2008-11-11 | Hitachi Global Storage Technologies, Inc. | Methods and systems of enhancing stepper alignment signals and metrology alignment target signals |
US7590497B2 (en) * | 2004-10-05 | 2009-09-15 | Dassault Systemes Solidworks Corporation | Automatic generation of tolerance schemes |
JP2006167728A (en) | 2004-12-13 | 2006-06-29 | Yamazaki Mazak Corp | Method and apparatus for detecting stain of condensing lens in laser beam machine |
CN101095033A (en) * | 2004-12-30 | 2007-12-26 | 通明国际科技有限公司 | Laser-based material processing methods, system and subsystem for use therein for precision energy control |
JP4555092B2 (en) * | 2005-01-05 | 2010-09-29 | 株式会社ディスコ | Laser processing equipment |
CA2601886C (en) * | 2005-03-23 | 2013-03-19 | Hurco Companies, Inc. | Method of tolerance-based trajectory planning and control |
JP2006329751A (en) | 2005-05-25 | 2006-12-07 | Sony Corp | Surface shape measuring method and surface shape measuring instrument |
US7930957B2 (en) * | 2005-06-10 | 2011-04-26 | Prototype Productions, Inc. | Closed-loop CNC machine system and method |
US20070034615A1 (en) | 2005-08-15 | 2007-02-15 | Klaus Kleine | Fabricating medical devices with an ytterbium tungstate laser |
JP5114874B2 (en) * | 2005-09-30 | 2013-01-09 | 日産自動車株式会社 | Laser welding method and laser welding apparatus |
US8111904B2 (en) | 2005-10-07 | 2012-02-07 | Cognex Technology And Investment Corp. | Methods and apparatus for practical 3D vision system |
WO2007050434A1 (en) | 2005-10-21 | 2007-05-03 | Arnold George M | Pigmented images on stone |
EP1780651A1 (en) | 2005-10-25 | 2007-05-02 | Bracco Imaging, S.P.A. | Method and system for automatic processing and evaluation of images, particularly diagnostic images |
KR100963460B1 (en) | 2005-10-27 | 2010-06-17 | 고마쓰 산기 가부시끼가이샤 | Automatic cutting device and production method for beveled product |
GB2455926B (en) * | 2006-01-30 | 2010-09-01 | Axellis Ltd | Method of preparing a medical restraint |
US20070181544A1 (en) | 2006-02-07 | 2007-08-09 | Universal Laser Systems, Inc. | Laser-based material processing systems and methods for using such systems |
US7680633B2 (en) * | 2006-04-25 | 2010-03-16 | Hewlett-Packard Development Company, L.P. | Automated process for generating a computed design of a composite camera comprising multiple digital imaging devices |
US7897895B2 (en) | 2006-05-01 | 2011-03-01 | General Electric Company | System and method for controlling the power level of a laser apparatus in a laser shock peening process |
DE102007018416A1 (en) | 2006-10-24 | 2008-04-30 | Messer Cutting & Welding Gmbh | Method and device for machine cutting a plate-shaped workpiece |
US7728961B2 (en) | 2006-10-31 | 2010-06-01 | Mitutoyo Coporation | Surface height and focus sensor |
JP2008119718A (en) | 2006-11-10 | 2008-05-29 | Marubun Corp | Laser beam machining apparatus |
US8237084B2 (en) * | 2006-12-22 | 2012-08-07 | Taylor Fresh Foods, Inc. | Laser microperforated fresh produce trays for modified/controlled atmosphere packaging |
US20080243299A1 (en) | 2007-03-27 | 2008-10-02 | Haas Automation, Inc. | Machine tool control system |
JP4972447B2 (en) * | 2007-04-06 | 2012-07-11 | オークマ株式会社 | Numerical controller |
US7833572B2 (en) * | 2007-06-01 | 2010-11-16 | Illinois Tool Works, Inc. | Method and apparatus for dispensing a viscous material on a substrate |
IL184218A0 (en) * | 2007-06-26 | 2007-10-31 | Zidkiyahu Simenhaus | Photo-magnetic radiation device |
JP2009012392A (en) * | 2007-07-06 | 2009-01-22 | Seiko Epson Corp | Device and method for discharging liquid |
WO2009026520A1 (en) | 2007-08-23 | 2009-02-26 | 3D Systems, Inc. | Automatic geometric calibration using laser scanning reflectometry |
SG152090A1 (en) | 2007-10-23 | 2009-05-29 | Hypertronics Pte Ltd | Scan head calibration system and method |
DE102007062692A1 (en) * | 2007-12-20 | 2009-07-02 | Karl Hehl | Method for interactively controlling a machine |
GB2460648A (en) * | 2008-06-03 | 2009-12-09 | M Solv Ltd | Method and apparatus for laser focal spot size control |
EP2133171B1 (en) | 2008-06-12 | 2012-08-08 | Trumpf Sachsen GmbH | Machine device for processing workpieces using a laser beam |
DE102008030783B3 (en) | 2008-06-28 | 2009-08-13 | Trumpf Werkzeugmaschinen Gmbh + Co. Kg | Process for laser beam angle cutting of workpiece involving ultrasonic gas cutting stream generally useful in laser cutting operations gives higher quality products at increased cutting speeds |
CN201253852Y (en) | 2008-07-11 | 2009-06-10 | 中国科学院沈阳自动化研究所 | Device for enabling robot to track designated path with high precision |
GB0816308D0 (en) | 2008-09-05 | 2008-10-15 | Mtt Technologies Ltd | Optical module |
US8175725B2 (en) * | 2008-09-08 | 2012-05-08 | National Instruments Corporation | Adapting move constraints for position based moves in a trajectory generator |
WO2010036732A1 (en) | 2008-09-25 | 2010-04-01 | Zeltiq Aesthetics, Inc. | Treatment planning systems and methods for body contouring applications |
CN102245339B (en) | 2008-10-10 | 2015-08-26 | Ipg微系统有限公司 | There is laser-processing system and the method for multiple narrow laser beam transmission system |
US8506182B2 (en) * | 2008-11-04 | 2013-08-13 | James Cameron | Stabilized stereographic camera system |
US8698898B2 (en) * | 2008-12-11 | 2014-04-15 | Lucasfilm Entertainment Company Ltd. | Controlling robotic motion of camera |
US9734419B1 (en) | 2008-12-30 | 2017-08-15 | Cognex Corporation | System and method for validating camera calibration in a vision system |
WO2010091106A1 (en) | 2009-02-03 | 2010-08-12 | Abbott Cardiovascular Systems Inc. | Improved laser cutting system |
US8872062B2 (en) | 2009-02-03 | 2014-10-28 | Abbott Cardiovascular Systems Inc. | Laser cutting process for forming stents |
ATE521047T1 (en) * | 2009-04-24 | 2011-09-15 | Hoffmann La Roche | METHOD FOR OPTICALLY SCANNING AN OBJECT AND DEVICE |
CN101559513B (en) | 2009-05-21 | 2011-11-09 | 山东大学 | Welding track detection and control method of container corrugated plate based on laser ranging |
WO2010134343A1 (en) | 2009-05-21 | 2010-11-25 | 株式会社ニコン | Shape measuring device, observation device, and image processing method |
TWI523720B (en) | 2009-05-28 | 2016-03-01 | 伊雷克托科學工業股份有限公司 | Acousto-optic deflector applications in laser processing of features in a workpiece, and related laser processing method |
US8786928B2 (en) | 2009-05-29 | 2014-07-22 | Intenzity Innovation Aps | Single mirror optical scanner |
US20100326962A1 (en) * | 2009-06-24 | 2010-12-30 | General Electric Company | Welding control system |
US20110005458A1 (en) | 2009-07-13 | 2011-01-13 | Applied Materials, Inc. | Method and apparatus for improving scribe accuracy in solar cell modules |
US20110011222A1 (en) * | 2009-07-20 | 2011-01-20 | Garrie Brian Bales | Mobile CNC cutting machine |
US9380292B2 (en) | 2009-07-31 | 2016-06-28 | 3Dmedia Corporation | Methods, systems, and computer-readable storage media for generating three-dimensional (3D) images of a scene |
US20110080476A1 (en) | 2009-10-02 | 2011-04-07 | Lasx Industries, Inc. | High Performance Vision System for Part Registration |
IT1395814B1 (en) | 2009-10-12 | 2012-10-26 | Gallucci | APPARATUS FOR CUTTING AND / OR ENGRAVING ITEMS INCLUDING A FLAT SURFACE ON WHICH DRAWINGS AND / OR WRITINGS ARE REPRODUCED AND METHOD TO IMPLEMENT THE APPARATUS |
EP2498935B1 (en) | 2009-11-13 | 2015-04-15 | Sciaky Inc. | Process for layer manufacturing a three-dimensional work piece using scanning electron monitored with closed loop control |
US8118227B2 (en) * | 2009-11-30 | 2012-02-21 | Symbol Technologies, Inc. | Multiple camera imaging-based bar code reader with optimized imaging field |
US8798388B2 (en) | 2009-12-03 | 2014-08-05 | Qualcomm Incorporated | Digital image combining to produce optical effects |
CN101733558B (en) * | 2010-01-19 | 2012-05-23 | 广东大族粤铭激光科技股份有限公司 | Intelligent laser cutting system provided with master-slave camera and cutting method thereof |
WO2011091283A1 (en) | 2010-01-22 | 2011-07-28 | Board Of Regents, The University Of Texas System | Systems, devices and methods for imaging and surgery |
CN101837517A (en) | 2010-03-31 | 2010-09-22 | 龙岩理尚精密机械有限公司 | Automatic focus numerical control laser cutter |
CA2796369A1 (en) * | 2010-04-13 | 2011-10-20 | National Research Council Of Canada | Laser processing control method |
US8134717B2 (en) | 2010-05-21 | 2012-03-13 | LTS Scale Company | Dimensional detection system and associated method |
US20110316977A1 (en) * | 2010-06-24 | 2011-12-29 | Pienaar Marius G | Method of cnc profile cutting program manipulation |
US8833921B2 (en) | 2010-07-30 | 2014-09-16 | Ricoh Company, Limited | Thin-film forming apparatus, thin-film forming method, piezoelectric-element forming method, droplet discharging head, and ink-jet recording apparatus |
JP5091287B2 (en) * | 2010-08-06 | 2012-12-05 | ファナック株式会社 | Processing information acquisition device in a processing machine that supplies energy or substance to a processing point |
US8818769B2 (en) | 2010-10-28 | 2014-08-26 | Parametric Technology Corporation | Methods and systems for managing synchronization of a plurality of information items of a computer-aided design data model |
TWI469849B (en) | 2010-11-12 | 2015-01-21 | Ind Tech Res Inst | Manufacturing method for cnc machine tools |
PL216793B1 (en) * | 2010-12-13 | 2014-05-30 | Tadeusz Eckert | Cut-off machine |
WO2012122177A1 (en) * | 2011-03-08 | 2012-09-13 | Spectral Instruments Imaging, LLC | Imaging system having primary and auxiliary camera systems |
JP5828953B2 (en) | 2011-04-07 | 2015-12-09 | トモロジック アーベー | Method, system and computer program for machine cutting several parts from one material using control rules and variables for cutting |
JP5343106B2 (en) | 2011-05-20 | 2013-11-13 | シャープ株式会社 | Instruction receiving system, information processing apparatus, instruction apparatus, instruction receiving method, computer program, and recording medium |
JP5855358B2 (en) | 2011-05-27 | 2016-02-09 | オリンパス株式会社 | Endoscope apparatus and method for operating endoscope apparatus |
US8921734B2 (en) | 2011-11-10 | 2014-12-30 | Mitsubishi Electric Research Laboratories, Inc. | Laser cutting machine |
US20130158957A1 (en) | 2011-12-16 | 2013-06-20 | Lie-Quan Lee | Library generation with derivatives in optical metrology |
US9414501B2 (en) | 2012-01-04 | 2016-08-09 | Board Of Regents, The University Of Texas System | Method for connecting inter-layer conductors and components in 3D structures |
US8938317B2 (en) | 2012-01-10 | 2015-01-20 | Mitsubishi Electronic Research Laboratories, Inc. | System and method for calibrating laser cutting machines |
US9261872B2 (en) | 2012-01-19 | 2016-02-16 | Mitsubishi Electric Research Laboratories, Inc. | System and method for controlling redundant actuators of a machine |
KR20130086773A (en) | 2012-01-26 | 2013-08-05 | 두산인프라코어 주식회사 | Method for setting up work using vision camera |
JP2013167798A (en) | 2012-02-16 | 2013-08-29 | Canon Inc | Image forming device and control method thereof |
WO2013142391A1 (en) | 2012-03-23 | 2013-09-26 | Concentric Power, Inc. | Systems and methods for power cogeneration |
US8794724B2 (en) | 2012-03-28 | 2014-08-05 | Masonite Corporation | Surface marked articles, related methods and systems |
US9395715B2 (en) | 2012-04-04 | 2016-07-19 | Hypertherm, Inc. | Identifying components in a material processing system |
DE102012207916B3 (en) | 2012-05-11 | 2013-09-19 | Artis Gmbh | Method and device for the automated configuration of a monitoring function of a machine tool |
WO2013190444A2 (en) | 2012-06-18 | 2013-12-27 | Indian Institute Of Technology Kanpur | Systems and methods for dry processing fabrication of binary masks with arbitrary shapes for ultra-violet laser micromachining |
US9104192B2 (en) * | 2012-06-27 | 2015-08-11 | Mitsubishi Electric Research Laboratories, Inc. | System and method for controlling machines according to pattern of contours |
US9678499B2 (en) | 2012-06-27 | 2017-06-13 | Mitsubishi Electric Research Laboratories, Inc. | Method for controlling redundantly actuated machines for cutting a pattern of disconnected contours |
DE102012106156B4 (en) * | 2012-07-09 | 2019-09-12 | Acsys Lasertechnik Gmbh | Method for controlling a tool |
US20140018779A1 (en) * | 2012-07-12 | 2014-01-16 | Worrell, Inc. | Telemedicine care system |
US20170057008A1 (en) | 2012-07-13 | 2017-03-02 | Full Spectrum Laser Llc | Infinite thickness laser processing system |
US8990343B2 (en) | 2012-07-30 | 2015-03-24 | Google Inc. | Transferring a state of an application from a first computing device to a second computing device |
FR2994734B1 (en) | 2012-08-21 | 2017-08-25 | Fogale Nanotech | DEVICE AND METHOD FOR MAKING DIMENSION MEASUREMENTS ON MULTI-LAYER OBJECTS SUCH AS WAFERS. |
US9511543B2 (en) | 2012-08-29 | 2016-12-06 | Cc3D Llc | Method and apparatus for continuous composite three-dimensional printing |
ES2693028T3 (en) | 2012-09-05 | 2018-12-07 | Sizer Technologies Ltd | System and method for deriving accurate body size measurements from a sequence of 2D images |
EP2705957B1 (en) | 2012-09-07 | 2015-02-25 | Xeikon IP BV | Method and system for producing series of cut-out forms from a continuous web |
US9578224B2 (en) | 2012-09-10 | 2017-02-21 | Nvidia Corporation | System and method for enhanced monoimaging |
US8687249B1 (en) | 2012-09-11 | 2014-04-01 | Foxlink Image Technology Co., Ltd. | Portable scanner |
JP5923026B2 (en) | 2012-10-31 | 2016-05-24 | 浜松ホトニクス株式会社 | Image acquisition apparatus and image acquisition method |
US9132660B2 (en) | 2012-12-19 | 2015-09-15 | Cimpress Schweiz Gmbh | System and method for offline print head alignment |
US8851616B2 (en) | 2012-12-19 | 2014-10-07 | Vistaprint Schweiz Gmbh | Print head pre-alignment systems and methods |
CN103215411B (en) | 2013-02-06 | 2015-07-08 | 武汉新瑞达激光工程有限责任公司 | Laser quenching method and device |
FR3001906B1 (en) * | 2013-02-11 | 2016-01-01 | Dimeco Alipresse | METHOD FOR CUTTING PARTS IN A WEB OF MATERIAL AND CUTTING MACHINE USING SAID METHOD |
JP5414948B1 (en) | 2013-03-29 | 2014-02-12 | 三菱電機株式会社 | Numerical controller |
JP6138556B2 (en) | 2013-04-05 | 2017-05-31 | 株式会社ディスコ | Laser processing equipment |
US9626708B2 (en) | 2013-04-15 | 2017-04-18 | Thirty-One Gifts Llc | Photographic mementos |
US10201929B2 (en) | 2013-06-12 | 2019-02-12 | Makerbot Industries, Llc | Raft techniques in three-dimensional printing |
TW201446386A (en) * | 2013-06-14 | 2014-12-16 | Hon Hai Prec Ind Co Ltd | Laser processing system |
DE102013217783A1 (en) | 2013-09-05 | 2015-03-05 | Sauer Gmbh Lasertec | Method for processing a workpiece by means of a laser beam, laser tool, laser machine, machine control |
US9618926B1 (en) | 2013-09-13 | 2017-04-11 | D. P. Technology, Corp. | Intelligent engine for managing operations for a computer numerical control (CNC) machine in a computer-aided manufacturing (CAM) system |
US10470486B2 (en) * | 2013-10-04 | 2019-11-12 | Culpitt Ii, Llc | Laser cut edible decorating sheet and methods of manufacture |
WO2015051661A1 (en) | 2013-10-09 | 2015-04-16 | 北京大学口腔医学院 | Numerical control laser automatic tooth preparation method and device therefor, and tooth locator |
US10983506B2 (en) * | 2013-10-16 | 2021-04-20 | Proto Labs, Inc. | Methods and software for manufacturing a discrete object from an additively manufactured body of material including a precursor to a discrete object and a reference feature(s) |
CN104551865A (en) | 2013-10-17 | 2015-04-29 | 鸿富锦精密工业(深圳)有限公司 | Image measuring system and method |
WO2015058182A1 (en) | 2013-10-18 | 2015-04-23 | +Mfg, LLC | Method and apparatus for fabrication of articles by molten and semi-molten deposition |
US9635908B2 (en) | 2013-10-21 | 2017-05-02 | Nike, Inc. | Automated trimming of pliable items |
US9182583B2 (en) | 2013-11-15 | 2015-11-10 | Mitutoyo Corporation | Structured illumination microscopy optical arrangement including projection artifact supression element |
US10307863B2 (en) | 2013-12-06 | 2019-06-04 | Mitsubishi Electric Research Laboratories, Inc. | Control of redundant laser processing machines |
JP6206150B2 (en) | 2013-12-11 | 2017-10-04 | 富士ゼロックス株式会社 | Droplet drying apparatus, droplet drying program, and image forming apparatus |
US20150169853A1 (en) | 2013-12-16 | 2015-06-18 | Avinash Vijai Singh | System and Process for Controlling A Portable Device |
US11161298B2 (en) | 2013-12-19 | 2021-11-02 | Karl Joseph Gifford | Systems and methods for 3D printing with multiple exchangeable printheads |
EP2886242B1 (en) | 2013-12-20 | 2016-09-14 | TRUMPF Werkzeugmaschinen GmbH + Co. KG | Laser processing machine assembly, in particular with barrier free access |
US9272552B2 (en) | 2013-12-28 | 2016-03-01 | Rohit Priyadarshi | Arbitrary surface printing device for untethered multi-pass printing |
US10046521B2 (en) * | 2014-01-16 | 2018-08-14 | Jabil Inc. | Remotely-accessible additive manufacturing systems and methods |
US10562288B2 (en) * | 2014-01-17 | 2020-02-18 | United Technologies Corporation | Additive manufacturing system with ultrasonic inspection and method of operation |
KR101888287B1 (en) * | 2014-01-27 | 2018-08-13 | 도쿄엘렉트론가부시키가이샤 | System and method for shifting critical dimensions of patterned films |
JP6290637B2 (en) | 2014-01-30 | 2018-03-07 | 浜松ホトニクス株式会社 | Film thickness measuring method and film thickness measuring apparatus |
EP3107716A4 (en) * | 2014-02-20 | 2017-11-08 | Dmg Mori Seiki Advanced Solutions Inc. | Machine tool system and method for additive manufacturing |
JP6435099B2 (en) | 2014-02-26 | 2018-12-05 | Juki株式会社 | Electronic component mounting apparatus and electronic component mounting method |
US9908290B1 (en) | 2014-02-27 | 2018-03-06 | Richard A. Clayton | Configurable printers |
JP5743123B1 (en) | 2014-03-14 | 2015-07-01 | 株式会社東京精密 | Laser dicing apparatus and dicing method |
CN106488756A (en) | 2014-04-18 | 2017-03-08 | Gdm股份公司 | Equipment for cutting material web |
MX363099B (en) | 2014-04-30 | 2019-03-08 | 1366 Tech Inc | Methods and apparati for making thin semi-conductor wafers with locally controlled regions that are relatively thicker than other regions and such wafers. |
US10618131B2 (en) * | 2014-06-05 | 2020-04-14 | Nlight, Inc. | Laser patterning skew correction |
US20170129180A1 (en) | 2014-06-09 | 2017-05-11 | Hybrid Manufacturing Technologies Limited | Material processing methods and related apparatus |
US20160059363A1 (en) * | 2014-06-25 | 2016-03-03 | Pittsburgh Portable Laser Company, Llc | Portable computer numerically controlled cutting machine with folding arm |
US20150378348A1 (en) | 2014-06-27 | 2015-12-31 | Hcl Technologies Ltd. | Integrated platform for 3d printing ecosystem interfaces and services |
DE102014214058A1 (en) | 2014-07-18 | 2016-01-21 | Robert Bosch Gmbh | Device for producing a three-dimensional object and method for operating such a device |
US10274715B2 (en) | 2014-08-06 | 2019-04-30 | Cellomics, Inc. | Image-based laser autofocus system |
CN114603249A (en) | 2014-08-28 | 2022-06-10 | Ipg光子公司 | Multi-laser system and method for cutting and post-cutting machining of hard dielectric materials |
CN105373072A (en) | 2014-09-01 | 2016-03-02 | 富泰华工业(深圳)有限公司 | High-precision plane processing system and method thereof |
JP2016060610A (en) | 2014-09-19 | 2016-04-25 | 株式会社東芝 | Elevator hoistway internal dimension measuring device, elevator hoistway internal dimension measuring controller, and elevator hoistway internal dimension measuring method |
US9508610B2 (en) | 2014-09-27 | 2016-11-29 | Intel Corporation | Inline measurement of molding material thickness using terahertz reflectance |
FR3027841B1 (en) | 2014-11-04 | 2017-05-19 | Michelin & Cie | MACHINE AND PROCESS FOR ADDITIVE MANUFACTURE OF POWDER |
EP3220099B1 (en) | 2014-11-13 | 2019-11-06 | Olympus Corporation | Calibration device, calibration method, optical device, imaging device, projection device, measurement system, and measurement method |
JP6140130B2 (en) | 2014-11-21 | 2017-05-31 | ファナック株式会社 | Numerical control device for protecting tools and workpieces |
KR102299764B1 (en) | 2014-11-28 | 2021-09-09 | 삼성전자주식회사 | Electronic device, server and method for ouptting voice |
EP3229996A4 (en) | 2014-12-12 | 2018-09-05 | Velo3d Inc. | Feedback control systems for three-dimensional printing |
US20180001565A1 (en) | 2014-12-17 | 2018-01-04 | Sabic Global Technologies B.V. | Identifying a characteristic of a material for additive manufacturing |
JP6217624B2 (en) | 2014-12-26 | 2017-10-25 | ブラザー工業株式会社 | Laser processing apparatus and laser processing method |
US10589385B2 (en) | 2015-01-08 | 2020-03-17 | General Electric Company | Method and system for confined laser drilling |
US9912915B2 (en) | 2015-01-13 | 2018-03-06 | Solid Innovation, Inc. | Verification and adjustment systems and methods for additive manufacturing |
WO2016118782A1 (en) | 2015-01-21 | 2016-07-28 | University Of North Dakota | Characterizing 3-d printed objects for 3-d printing |
US10509390B2 (en) | 2015-02-12 | 2019-12-17 | Glowforge Inc. | Safety and reliability guarantees for laser fabrication |
CN117259959A (en) | 2015-02-12 | 2023-12-22 | 格罗弗治公司 | Visual preview for laser machining |
CN104808592B (en) | 2015-03-13 | 2016-06-01 | 华中科技大学 | A kind of digital control system based on virtual upper computer |
PL3078443T3 (en) | 2015-03-20 | 2020-05-18 | Matthew Fagan | Method and system for enhanced numerical control plasma cutting of parts from a workpiece |
US9744620B2 (en) * | 2015-04-06 | 2017-08-29 | Mitsubishi Electric Research Laboratories, Inc. | Control of processing machines with redundant actuators |
US9994042B2 (en) | 2015-04-16 | 2018-06-12 | Victor Manuel Sud Arce | Substrates and method for print engravings |
EP3104118B1 (en) | 2015-06-12 | 2019-02-27 | Hexagon Technology Center GmbH | Method to control a drive mechanism of an automated machine having a camera |
JP6526544B2 (en) | 2015-10-30 | 2019-06-05 | 株式会社沖データ | Image processing apparatus and image processing adjustment method |
CN106670656A (en) | 2015-11-06 | 2017-05-17 | 奔腾激光(温州)有限公司 | Automatic focusing cutting head for optical fiber laser cutting machine and control method |
US9782906B1 (en) | 2015-12-16 | 2017-10-10 | Amazon Technologies, Inc. | On demand apparel panel cutting |
CA2959920A1 (en) | 2016-03-04 | 2017-09-04 | Inovatech Engineering Corporation | Direct client initiated cnc tool setting |
WO2017168584A1 (en) | 2016-03-29 | 2017-10-05 | ギガフォトン株式会社 | Laser apparatus and system for generating extreme ultraviolet light |
US10642251B2 (en) * | 2016-04-14 | 2020-05-05 | David E Platts | Subtractive machining work center |
US10848743B2 (en) | 2016-06-10 | 2020-11-24 | Lucid VR, Inc. | 3D Camera calibration for adjustable camera settings |
WO2018098397A1 (en) * | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Calibration of computer-numerically-controlled machine |
WO2018098399A1 (en) * | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Controlled deceleration of moveable components in a computer numerically controlled machine |
WO2018098395A1 (en) * | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Improved engraving in a computer numerically controlled machine |
WO2018098398A1 (en) * | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Preset optical components in a computer numerically controlled machine |
WO2018098394A1 (en) * | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Fabrication with image tracing |
WO2018098396A1 (en) * | 2016-11-25 | 2018-05-31 | Glowforge Inc. | Multi-user computer-numerically-controlled machine |
US10755215B2 (en) * | 2018-03-22 | 2020-08-25 | International Business Machines Corporation | Generating wastage estimation using multiple orientation views of a selected product |
DE102018126050A1 (en) * | 2018-10-19 | 2020-04-23 | Fraunhofer-Gesellschaft für die angewandte Forschung e.V. | METHOD FOR SORTING SUPPORTING DISPLAYS OF WORKPIECE REPRESENTATIONS |
CN110328364B (en) * | 2019-06-24 | 2020-11-24 | 华中科技大学 | Additive manufacturing method and device suitable for ceramic and composite material thereof |
-
2016
- 2016-02-12 CN CN202311146215.XA patent/CN117259959A/en active Pending
- 2016-02-12 WO PCT/US2016/017900 patent/WO2016131018A1/en active Application Filing
- 2016-02-12 EP EP16709185.9A patent/EP3256916B1/en active Active
- 2016-02-12 EP EP16708033.2A patent/EP3256917B1/en active Active
- 2016-02-12 EP EP16707596.9A patent/EP3256920B1/en active Active
- 2016-02-12 CN CN201680021337.8A patent/CN107438800A/en active Pending
- 2016-02-12 WO PCT/US2016/017904 patent/WO2016131022A1/en active Application Filing
- 2016-02-12 CN CN201680021485.XA patent/CN107438495B/en active Active
- 2016-02-12 WO PCT/US2016/017901 patent/WO2016131019A1/en active Application Filing
- 2016-02-12 EP EP21182408.1A patent/EP3907033A1/en active Pending
- 2016-02-12 EP EP21180624.5A patent/EP3907570A1/en active Pending
- 2016-02-12 CN CN201680021300.5A patent/CN107438494B/en active Active
- 2016-02-12 WO PCT/US2016/017903 patent/WO2016131021A1/en active Application Filing
- 2016-10-25 US US15/334,095 patent/US10520915B2/en active Active
- 2016-10-25 US US15/334,120 patent/US10379517B2/en active Active
- 2016-10-25 US US15/334,104 patent/US10496070B2/en active Active
-
2018
- 2018-06-13 HK HK18107656.0A patent/HK1248838A1/en unknown
-
2019
- 2019-06-14 US US16/442,198 patent/US11231693B2/en active Active
- 2019-10-31 US US16/670,526 patent/US11537095B2/en active Active
- 2019-11-21 US US16/691,429 patent/US11537097B2/en active Active
- 2019-11-21 US US16/691,426 patent/US11537096B2/en active Active
-
2021
- 2021-06-17 US US17/350,789 patent/US11797652B2/en active Active
-
2022
- 2022-12-22 US US18/086,652 patent/US20230281279A1/en active Pending
- 2022-12-22 US US18/086,655 patent/US11995159B2/en active Active
-
2023
- 2023-10-23 US US18/492,742 patent/US20240202290A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797652B2 (en) | Cloud controlled laser fabrication | |
US20220350306A1 (en) | Controlled Deceleration of Moveable Components in a Computer Numerically Controlled Machine | |
US11835936B2 (en) | Multi-user computer-numerically-controlled machine | |
US11860601B2 (en) | Calibration of a computer-numerically-controlled machine | |
US20220339735A1 (en) | Preset optical components in a computer numerically controlled machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GLOWFORGE, INC., WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SHAPIRO, DANIEL;GOSSELIN, MARK;WRIGHT, ANTHONY;AND OTHERS;SIGNING DATES FROM 20160908 TO 20161025;REEL/FRAME:047087/0389 |
|
FEPP | Fee payment procedure |
Free format text: PETITION RELATED TO MAINTENANCE FEES GRANTED (ORIGINAL EVENT CODE: PTGR); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: AWAITING TC RESP., ISSUE FEE NOT PAID |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., NEW YORK Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNORS:GLOWFORGE INC.;GLOWFORGE INTERNATIONAL INC.;REEL/FRAME:060556/0845 Effective date: 20220630 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., NEW YORK Free format text: SUPPLEMENT NO. 1 TO INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNORS:GLOWFORGE INC.;GLOWFORGE INTERNATIONAL INC.;REEL/FRAME:067385/0141 Effective date: 20240510 |