# US 2020/0409335 A1 · Multi-user computer-numerically-controlled machine

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2020/0409335 A1
- Document ID: US20200409335A1
- Status: Published application
- Kind: A1
- Application number: 17/013,290
- Filed: 2020-09-04
- Published: 2020-12-31
- Earliest claimed: 2016-11-25
- Assignees: Glowforge Inc.
- Applicants: Glowforge Inc.
- Inventors: Daniel Shapiro; Mark Gosselin; Anthony Wright; Scott Haug; Linden Wright
- Web page: https://patentgrep.com/patent/US20200409335A1

## CPC

- G05B 19/4068: Verifying part program on screen, by drawing or other means
- G05B 19/4063: Monitoring general control system (G05B19/4062 takes precedence)
- G05B 19/409: characterised by using manual data input [MDI] or by using control panel, e.g. controlling functions with the panel; characterised by control panel details or by setting parameters (G05B19/408, G05B19/4093 take precedence)
- G06F 3/048: Interaction techniques based on graphical user interfaces [GUI]
- G06F 21/305: {by remotely controlling device operation}
- G05B 2219/36531: Inhibit, ignore or postpone new command if previous is still in execution
- G05B 2219/36542: Cryptography, encrypt, access, authorize with key, code, password
- G05B 2219/45165: Laser machining
- G05B: CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS (systems for controlling or regulating non-electric variables G05D; systems for regulating electric or magnetic variables G05F; control devices or systems insofar as characterised by mechanical features only G05G)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for accessing a computer-numerically-controlled machine can include receiving a command to be executed by the computer-numerically-controlled machine. A hardware state of a component in the computer-numerically-controlled machine can be determined by receiving, from the component, data indicative of the hardware state. An origin of the command including a user identification of a user who sent the command and/or a machine identification of a device that sent the command can be determined. Whether the computer-numerically-controlled machine is allowed to execute the command can be determined by applying a set of rules and based on the hardware state and/or the origin of the command. In response to determining that the computer-numerically-controlled machine is allowed to execute the command, the command can be executed at the computer-numerically-controlled machine.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, at a computer-numerically-controlled machine comprising a laser configured to deliver electromagnetic energy to effect a change in a material within an interior space of the computer-numerically-controlled machine, a command to be executed by the computer-numerically-controlled machine;
determining a hardware state of a component in the computer-numerically-controlled machine by at least receiving, from the component, data indicative of the hardware state;
identifying an origin of the command, the origin of the command comprising a user identification of a user who sent the command and/or a machine identification of a device that sent the command;
determining, based at least on the hardware state of the component and/or the origin of the command, that the command is allowed to be executed by the computer-numerically-controlled machine, the determining comprising applying a set of rules defining when the computer-numerically controlled machine is allowed to execute the command; and
in response to determining that the computer-numerically-controlled machine is allowed to execute the command, executing the command at the computer-numerically-controlled machine.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising defining, at a device configured to communicate with the computer-numerically-controlled machine, permissions comprising an administrator-level permission and/or a lower-level permission, the administrator-level permission including an ability to modify the command based at least on the origin of the command being associated with the lower-level permission.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, further comprising defining, at a device configured to communicate with the computer-numerically-controlled machine, an owner of a job, the job comprising instructions for at least partially executing a motion plan at the computer-numerically-controlled machine.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein the component in the computer-numerically-controlled machine comprises a sensor configured to capture data from the computer-numerically-controlled machine, and wherein the command comprises a request to transmit, to the device, at least a portion of the data captured by the sensor.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein the computer-numerically-controlled machine is configured to execute a job comprising executing at least a portion of a motion plan, wherein the job is associated with a completion state defined by at least the completion of the motion plan, and wherein the command is not allowed to be executed by the computer-numerically-controlled machine when the origin of the command is associated with a lower-level permission unless the origin of the command is an owner of the job and the job is completed according to the completion state.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein the command is not allowed to be executed unless a material being operated on by the computer-numerically-controlled machine is removed from the computer-numerically-controlled machine.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, further comprising displaying, at a display device, a graphical representation of at least one of a material in the computer-numerically-controlled machine, a current user of the computer-numerically-controlled machine, a status of the computer-numerically-controlled machine, a remaining time of a job being executed by the computer-numerically-controlled machine, a waiting user scheduled to use the computer-numerically-controlled machine, a delay time between consecutive uses of the computer-numerically-controlled machine, and a schedule of jobs queued to be executed by the computer-numerically-controlled machine.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein the command is not allowed to be executed by the computer-numerically controlled machine based at least on a type of a material associated with the command.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, further comprising verifying the type of the material at least by analyzing an image of the material acquired from at least sensor operatively connected to the computer-numerically-controlled machine and comparing the image to a library of known material types that are permitted for use in the computer-numerically-controlled machine.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein the set of rules includes one or more operation limits of the computer-numerically-controlled machine, and wherein the command is not allowed to be executed by the computer-numerically-controlled machine based at least on the command being associated with a motion plan that conflicts with the set of rules.

### Claim 11 (depends on 1)

The computer-implemented method of claim 1, wherein the command is not allowed to be executed by the computer-numerically-controlled machine based at least on the user who sent the command being locked out of the computer-numerically-controlled machine.

### Claim 12 (depends on 1)

The computer-implemented method of claim 1, further comprising disabling the computer-numerically-controlled machine in response to the command being a disable command and a determination that the computer-numerically-controlled machine is allowed to execute the disable command.

### Claim 13 (depends on 12)

The computer-implemented method of claim 12, wherein the disabling comprises at least one of immediately shutting down at least the laser and shutting down the computer-numerically-controlled machine according to a pre-programmed sequence that minimizes a difference in an appearance of a finished work-product relative to an appearance of the finished work-product machined without a shutdown.

### Claim 14

A computer-implemented method comprising:
modifying a set of instructions for a computer-numerically-controlled machine in response to receiving, at a server and from a first computing device, a first modification to the set of instructions, the first computing device previously associated with a user account stored at the server;
in response to an abandonment signal received at the server and from the first computing device, removing an ability of the first computing device to modify the set of instructions, the abandonment signal indicating that the first computing device is no longer modifying the set of instructions;
enabling an ability of a second computing device to modify the set of instructions, the enabling based at least on a connection signal received at the server from the second computing device, the second computing device previously associated with the user account stored at the server; and
modifying the set of instructions for the computer-numerically-controlled machine in response to receiving, at the server from the second computing device, a second modification to the set of instructions.

### Claim 15

A system comprising:
at least one data processor; and
at least one memory including instructions, which when executed by the at least one data processor, cause operations comprising:
receiving, at a computer-numerically-controlled machine comprising a laser configured to deliver electromagnetic energy to effect a change in a material within an interior space of the computer-numerically-controlled machine, a command to be executed by the computer-numerically-controlled machine;
determining a hardware state of a component in the computer-numerically-controlled machine at least by receiving, from the component, data indicative of the hardware state;
identifying an origin of the command, the origin of the command comprising a user identification of a user who sent the command and/or a machine identification of a device that sent the command;
determining, based at least on the hardware state of the component and/or the origin of the command, that the command is allowed to be executed by the computer-numerically-controlled machine, the determining comprising applying a set of rules defining when the computer-numerically controlled machine is allowed to execute the command; and
in response to determining that the computer-numerically-controlled machine is allowed to execute the command, executing the command at the computer-numerically-controlled machine.

### Claim 16 (depends on 15)

The system of claim 15, further comprising defining, at a device configured to communicate with the computer-numerically-controlled machine, permissions comprising an administrator-level permission and/or a lower-level permission, the administrator-level permission including an ability to modify the command based at least on the origin of the command being associated with the lower-level permission.

### Claim 17 (depends on 16)

The system of claim 16, further comprising defining, at a device configured to communicate with the computer-numerically-controlled machine, an owner of a job, the job comprising instructions for at least partially executing a motion plan at the computer-numerically-controlled machine.

### Claim at position 18

18-27. (canceled)

### Claim 28

A system, comprising:
at least one data processor;
at least one memory including instructions, which when executed by the at least one data processor, cause operations comprising:
modifying a set of instructions for a computer-numerically-controlled machine in response to receiving, at a server and from a first computing device, a first modification to the set of instructions, the first computing device previously associated with a user account stored at the server;
in response to an abandonment signal received at the server and from the first computing device, removing an ability of the first computing device to modify the set of instructions, the abandonment signal indicating that the first computing device is no longer modifying the set of instructions;
enabling an ability of a second computing device to modify the set of instructions, the enabling based at least on a connection signal received at the server from the second computing device, the second computing device previously associated with the user account stored at the server; and
modifying the set of instructions for the computer-numerically-controlled machine in response to receiving, at the server from the second computing device, a second modification to the set of instructions.

### Claim 29

A non-transitory computer medium including program code, which when executed by at least one data processor, cause the operations comprising:
receiving, at a computer-numerically-controlled machine comprising a laser configured to deliver electromagnetic energy to effect a change in a material within an interior space of the computer-numerically-controlled machine, a command to be executed by the computer-numerically-controlled machine;
determining a hardware state of a component in the computer-numerically-controlled machine by at least receiving, from the component, data indicative of the hardware state;
identifying an origin of the command, the origin of the command comprising a user identification of a user who sent the command and/or a machine identification of a device that sent the command;
determining, based at least on the hardware state of the component and/or the origin of the command, that the command is allowed to be executed by the computer-numerically-controlled machine, the determining comprising applying a set of rules defining when the computer-numerically controlled machine is allowed to execute the command; and
in response to determining that the computer-numerically-controlled machine is allowed to execute the command, executing the command at the computer-numerically-controlled machine.

### Claim 30

A non-transitory computer medium including program code, which when executed by at least one data processor, cause the operations comprising:
modifying a set of instructions for a computer-numerically-controlled machine in response to receiving, at a server and from a first computing device, a first modification to the set of instructions, the first computing device previously associated with a user account stored at the server;
in response to an abandonment signal received at the server and from the first computing device, removing an ability of the first computing device to modify the set of instructions, the abandonment signal indicating that the first computing device is no longer modifying the set of instructions;
enabling an ability of a second computing device to modify the set of instructions, the enabling based at least on a connection signal received at the server from the second computing device, the second computing device previously associated with the user account stored at the server; and
modifying the set of instructions for the computer-numerically-controlled machine in response to receiving, at the server from the second computing device, a second modification to the set of instructions.
