Power tool including a machine learning block for

By adopting machine learning control programs in power tools, processing sensor data and controlling the operation of the motor, the problems of low efficiency and high risk of misoperation during fastener installation in the prior art are solved, and more efficient and Accurate tightening operation.

CN119458249APending Publication Date: 2025-02-18MILWAUKEE ELECTRIC TOOL CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411444535.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2019-07-23
Filing Date
2020-07-23
Publication Date
2025-02-18

AI Technical Summary

Technical Problem

During the installation of control fasteners, existing power tools are difficult to adapt to different application conditions and complex conditions, resulting in low operating efficiency and high risk of misoperation.

Method used

Using machine learning control programs, the relevant output is generated through sensor data processing, and the speed and power of the motor are controlled for precise tightening operations. The control program can be trained on an external system and received and executed by a power tool.

Benefits of technology

It improves the operating efficiency and accuracy of power tools during fastener installation, reduces the risk of misoperation, and adapts to different application conditions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119458249A_ABST
    Figure CN119458249A_ABST
Patent Text Reader

Abstract

A power tool is provided that includes a housing, a motor supported by the housing, a sensor supported by the housing, and an electronic controller. The sensor is configured to generate sensor data indicative of an operating parameter of the power tool. The electronic controller includes an electronic processor and a memory. The memory includes a trained machine learning model implementing a neural network for execution by the electronic processor. The electronic processor is configured to receive the sensor data and process the sensor data using a machine learning control program. The electronic processor is further configured to receive the sensor data, process the sensor data using the trained machine learning model, generate an output based on the sensor data using the trained machine learning model; the output indicates a mounting value associated with a fastening operation of the power tool, and the mounting value indicates a mounting level of a fastener; and controlling the motor according to the generated output.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the Chinese patent application with application number 202080064439.4, application date July 23, 2020, and name “Power tool including a machine learning block for controlling the installation of fasteners”.

[0002] Related Applications

[0003] This application claims the benefit of U.S. Provisional Patent Application No. 62 / 877,489, filed on July 23, 2019, the entire contents of which are incorporated herein by reference. Technical Field

[0004] Embodiments described herein relate to power tools that control the seating of fasteners based on one or more received inputs. Summary of the invention

[0005] In one embodiment, a power tool is provided, comprising: a housing, a motor supported by the housing, a sensor supported by the housing, and an electronic controller. The sensor is configured to generate sensor data indicating an operating parameter of the power tool. The electronic controller includes an electronic processor and a memory. The memory includes a machine learning control program for execution by the electronic processor. The electronic controller is configured to receive the sensor data and process the sensor data using the machine learning control program. The electronic processor is also configured to generate an output based on the sensor data using the machine learning control program, the output indicating an installation value associated with a tightening operation of the power tool. The electronic processor is also configured to control the motor based on the generated output.

[0006] In some embodiments of the power tool, the machine learning control program is generated on the external system device by training based on example sensor data and related outputs, and is received by the power tool from the external system device.

[0007] In some embodiments of the power tool, the machine learning control program is one of a static machine learning control program and a trainable machine learning control program.

[0008] In some embodiments of the power tool, a seating value indicates that installation of the fastener has begun.

[0009] In some embodiments of the power tool and method, the electronic controller is configured to reduce the speed of the motor based on the installation value indicating that the fastener has begun to be installed.

[0010] In some embodiments of the power tool and method, the electronic controller is configured to stop a motor of the power tool based on the installation value indicating that the fastener is fully installed.

[0011] In another embodiment, a method of operating a power tool to control fastener installation is provided. The method includes: generating sensor data indicating operating parameters of the power tool by a sensor of the power tool. The method also includes receiving the sensor data by an electronic controller of the power tool. The controller includes an electronic processor and a memory. The memory includes a machine learning control program for execution by the electronic processor. The method also includes processing the sensor data using the machine learning control program of the machine learning controller, and generating an output based on the sensor data using the machine learning control program. The output indicates a tightening value associated with a tightening operation of the power tool. The method also includes controlling the motor of the power tool by the electronic controller based on the output.

[0012] In some embodiments of the power tool and method, the machine learning control program is generated on the external system device by training based on example sensor data and related outputs, and is received by the power tool from the external system device.

[0013] In some embodiments of the method, the machine learning control program is one of a static machine learning control program and a trained machine learning control program.

[0014] In some embodiments of the method, the tightening value indicates a level at which the fastener is tightened.

[0015] In some embodiments of the method, the electronic controller is configured to reduce the speed of the motor based on the tightening value indicating that the fastener is approaching the target tightening torque.

[0016] In some embodiments of the method, the electronic controller is configured to stop a motor of the power tool based on the tightening value indicating that the fastener is tightened to the target tightening torque.

[0017] In some embodiments of the method, the operating parameters include one or more of: number of fastener rotations, measured torque, characteristic speed, power tool voltage, power tool current, selected operating mode, fluid temperature, and tool movement information.

[0018] In some embodiments of the method, the power tool includes a gyroscope configured to provide data indicative of movement of the tool.

[0019] In one embodiment, a power tool is provided, comprising: a housing, a motor supported by the housing, a sensor supported by the housing, and an electronic controller. The sensor is configured to generate sensor data indicating an operating parameter of the power tool. The electronic controller includes an electronic processor and a memory. The memory includes a machine learning control program for execution by the electronic processor. The electronic controller is configured to receive the sensor data and process the sensor data using the machine learning control program. The electronic processor is also configured to generate an output based on the sensor data using the machine learning control program, the output being associated with one or more operating functions of the power tool. The electronic processor is also configured to control the speed, power, or other output of the motor based on the generated output.

[0020] In some embodiments of the power tool, the one or more operating functions include a tightening operation.

[0021] In some embodiments of the power tool, the electronic controller is configured to reduce the speed, power, or other output of the motor based on the installation value indicating that the fastener is approaching a specified torque value.

[0022] In some embodiments of the power tool, the machine learning control program is configured to process the sensor data using a neural network.

[0023] In some embodiments of the power tool, the neural network is configured to generate a plurality of outputs corresponding to desired speeds of the motor.

[0024] In some embodiments of the power tool, the machine learning control program is generated on the external system device by training based on example sensor data and related outputs, and is received by the power tool from the external system device.

[0025] In some embodiments of the power tool, the machine learning control program is one of a static machine learning control program and a trained machine learning control program.

[0026] Before explaining any embodiment in detail, it should be understood that the application of the embodiment is not limited to the construction details and component arrangements set forth in the following description or shown in the accompanying drawings. The embodiment can be practiced or implemented in different ways. In addition, it should be understood that the words and terms used herein are for descriptive purposes and should not be considered restrictive. The use of "including", "comprising" and "having" and their variations is intended to cover the items listed thereafter and their equivalents and additional items. Unless otherwise specified or limited, the terms "mount", "connect", "support" and "couple" and their variations are used broadly and cover direct and indirect mounting, connection, support and coupling.

[0027] In addition, it should be understood that embodiments may include hardware, software, and electronic components or modules, where for the purpose of discussion, they may be shown and described as if most components are implemented only in hardware. However, a person of ordinary skill in the art will recognize, based on a reading of this detailed description, that in at least one embodiment, the electronic-based aspects may be implemented in software (e.g., stored on a non-transitory computer-readable medium) that can be executed by one or more processing units (e.g., a microprocessor and / or an application-specific integrated circuit ("ASIC")). Therefore, it should be understood that embodiments may be implemented using multiple hardware- and software-based devices and multiple different structural components. For example, the "server", "computing device", "controller", "processor", etc. described in the specification may include one or more processing units, one or more computer-readable media modules, one or more input / output interfaces, and various connectors (e.g., a system bus) connecting different components.

[0028] Relative terms (e.g., "about," "approximately," "substantially," etc.) used in conjunction with quantities or conditions will be understood by those of ordinary skill in the art to include the stated values ​​and have the meaning dictated by the context (e.g., the term includes at least the degree of error associated with measurement precision, the tolerance associated with a particular value [e.g., manufacturing, assembly, use, etc.], etc.). Such terms should also be considered to disclose a range defined by the absolute values ​​of the two endpoints. For example, the expression "about 2 to about 4" also discloses a range of "2 to 4." Relative terms can refer to plus or minus a certain percentage (e.g., 1%, 5%, 10% or more) on a specific value.

[0029] It should be understood that although some drawings show that hardware and software are located in a specific device, these diagrams are only for illustrative purposes. The function described as being performed by a component in this article can be performed by multiple components in a distributed manner. Similarly, the function performed by multiple components can be merged and performed by a single component. In some embodiments, the components shown can be combined or divided into separate software, firmware and / or hardware. For example, logic and processing can be distributed between multiple electronic processors, rather than being located in a single electronic processor and performed by a single electronic processor. Regardless of how they are combined or divided, hardware and software components can be located on the same computing device or can be distributed between different computing devices connected by one or more networks or other suitable communication links. Similarly, the components described as performing a specific function can also perform other functions not described herein. For example, a device or structure "configured" in a certain way is configured at least in this way, but may also be configured in a way that is not explicitly listed.

[0030] Other aspects of the embodiments will become apparent by consideration of the detailed description and accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0031] Figure 1 A first power tool system is shown.

[0032] Figure 2 A second power tool system is shown.

[0033] Figure 3 A third power tool system is shown.

[0034] FIG. 4A to FIG. 4B A fourth power tool system is shown.

[0035] Figure 4C A fourth power tool system is shown.

[0036] Figure 4D A fifth power tool system is shown.

[0037] Figure 5A yes Figures 1 to 4C A block diagram of an exemplary power tool of a power tool system.

[0038] Figure 5B yes Figure 5A Block diagram of a machine learning controller for a power tool.

[0039] Figure 6 It shows how to build and implement Figure 5A A flow chart of a method for a machine learning controller for a power tool.

[0040] Figure 7 It is operated by a machine learning controller Figure 5A A flow chart of a method of a power tool.

[0041] Figure 8a A power tool including a feedback actuator is shown.

[0042] Figure 8b is a diagram of the rotation of the power tool providing feedback information.

[0043] Fig. 9 is a schematic diagram of different types of information that can be used by a machine learning controller.

[0044] Fig.10 A schematic diagram of a machine learning controller configured to identify the type of fastener being used is shown.

[0045] Fig.11 is a flow chart illustrating a method of identifying a type of fastener using a machine learning controller.

[0046] Fig.12 is a schematic diagram of various types of information that can be used by a machine learning controller to perform a fastener installation procedure.

[0047] Fig.13 is a flow chart illustrating a method of training a power tool to perform a fastener installation operation using static logic.

[0048] Fig.14 is a graph of the torque output of the tool during installation.

[0049] Figures 15a to 15g is a graph of data illustrating a plurality of sensed inputs during a fastener installation process according to some embodiments.

[0050] Fig.16 is a flow chart illustrating a method of training a power tool to perform a fastener installation operation using adaptive logic, according to some implementations.

[0051] Fig.17 is a flow chart illustrating a method of installing fasteners with a power tool using machine learning, according to some embodiments.

[0052] Fig.18 is a flow chart illustrating a method of torqueing fasteners with a power impact tool using machine learning, according to some embodiments.

[0053] Fig.19 is a graph of data showing actual torque according to some embodiments versus predicted torque using a known blow counting method used with impact tools.

[0054] Fig. 20 is a data graph showing actual torque versus predicted torque using a machine learning algorithm configured to analyze hammer position information in an impact tool according to some embodiments.

[0055] Fig.21 is a chart illustrating actual and predicted installation operations for deck screws using an impulse tool according to some embodiments.

[0056] Fig. 22 is a graph showing the distribution of distances of installed deck screws using a neural network in accordance with some embodiments.

[0057] Fig.23 is a graph illustrating errors associated with installing bolts using a hydraulic pulse tool according to some embodiments.

[0058] Fig.24 is a graph showing the distribution of distances of deck screws installed using an electric drill and associated machine learning algorithms, according to some embodiments. DETAILED DESCRIPTION

[0059] Some power tools include sensors and control systems that use hard-coded thresholds to, for example, change or adjust the operation of the tool. For example, a sensor can detect that the battery voltage is below a predetermined hard-coded threshold. The power tool can then stop the operation of the motor to protect the battery pack. While these types of thresholds may be easy to implement and provide some benefits to the operation of the power tool, these types of hard-coded thresholds cannot adapt to changing conditions or applications during the operation of the power tool and may ultimately fail to help detect and respond to more complex conditions, such as when the power tool experiences kickback.

[0060] The present application describes various systems in which a machine learning controller is used to control features or functions of a power tool. For example, rather than implementing hard-coded thresholds determined and programmed by, for example, an engineer, the machine learning controller detects conditions based on data collected during previous operation of the power tool. In some embodiments, the machine learning controller determines adjustable thresholds for operating the tool based on, for example, a specific application of the power tool or during a specific mode of the power tool. Thus, the thresholds, conditions, or a combination thereof are based on previous operation of the same type of power tool and can change based on input received from a user and further operation of the power tool.

[0061] Figure 1 A first power tool system 100 is shown. The first power tool system 100 includes a power tool 105, an external device 107, a server 110, and a network 115. The power tool 105 includes various sensors and devices that collect usage information during operation of the power tool 105. The usage information may alternatively be referred to as operating information of the power tool 105, and refers to, for example, data regarding the operation of the motor (e.g., speed, position, acceleration, temperature, usage time, etc.), the operating mode of the power tool 105 (e.g., drive mode, impact mode, operating time in each mode, operating frequency in each mode, etc.), conditions encountered during operation (e.g., overheating of the motor, etc.), and other aspects (e.g., battery charge state, discharge rate, etc.).

[0062] In the illustrated embodiment, the power tool 105 communicates with an external device 107. The external device 107 may include, for example, a smart phone, a tablet computer, a cellular phone, a laptop computer, a smart watch, etc. The power tool 105 communicates with the external device 107, for example, to send at least a portion of the usage information for the power tool 105, to receive configuration information for the power tool 105, or a combination thereof. In some embodiments, the external device may include a short-range transceiver for communicating with the power tool 105, and a long-range transceiver for communicating with the server 110. In the illustrated embodiment, the power tool 105 also includes a short-range communication protocol (such as Bluetooth) to communicate with the server 110. ) a transceiver for communicating with an external device. In some embodiments, the external device 107 bridges the communication between the power tool 105 and the server 110. That is, the power tool 105 sends the operating data to the external device 107, and the external device 107 forwards the operating data from the power tool 105 to the server 110 via the network 115. The network 115 can be a long-range wireless network, such as the Internet, a local area network ("LAN"), a wide area network ("WAN"), or a combination thereof. In other embodiments, the network 115 can be a short-range wireless communication network, and in other embodiments, the network 115 can be a wired network using, for example, a serial protocol (e.g., USB, USB-C, FireWire, etc.). Similarly, the server 110 can send information to the external device 107 to be forwarded to the power tool 105. In some embodiments, the power tool 105 is equipped with a long-range transceiver instead of or in addition to the short-range transceiver. In such an embodiment, the power tool 105 communicates directly with the server 110. In some embodiments, the power tool 105 can communicate directly with the server 110 and the external device 107. In such embodiments, the external device 107 can, for example, generate a graphical user interface to facilitate control and programming of the power tool 105, while the server 110 can store and analyze a larger amount of operational data for future programming or operation of the power tool 105. However, in other embodiments, the power tool 105 can communicate directly with the server 110 without utilizing a short-range communication protocol with the external device 107.

[0063] The server 110 includes a server electronic control assembly having a server electronic processor 425, a server memory 430, a transceiver, and a machine learning controller 120. The transceiver allows the server 110 to communicate with the power tool 105, the external device 107, or both. The server electronic processor 425 receives tool usage data from the power tool 105 (e.g., via the external device 107), stores the received tool usage data in the server memory 430, and in some embodiments, uses the received tool usage data to establish or adjust the machine learning controller 120.

[0064] The machine learning controller 120 implements a machine learning program. The machine learning controller 120 is configured to build a model (e.g., build one or more algorithms) based on example inputs. Supervised learning involves presenting example inputs and their actual outputs (e.g., classifications) to a computer program. The machine learning controller 120 is configured to learn general rules or models that map inputs to outputs based on the provided example input-output pairs. Machine learning algorithms can be configured to use different types of methods to perform machine learning. For example, the machine learning controller 120 can use decision tree learning, association rule learning, artificial neural networks, recurrent artificial neural networks, long short-term memory neural networks, inductive logic programming, support vector machines, clustering, Bayesian networks, reinforcement learning, representation learning, similarity and metric learning, sparse dictionary learning, genetic algorithms, k-nearest neighbors (KNN), attention networks / transformers, and others (such as the following

[0065] Table 1) to implement the machine learning procedure.

[0066]

[0067] The machine learning controller 120 is programmed and trained to perform a specific task. For example, in some embodiments, the machine learning controller 120 is trained to identify the application of the power tool 105 (e.g., for installing fasteners). The task for which the machine learning controller 120 is trained may vary based on, for example, the type of power tool, a selection from a user, a typical application for which the power tool is used, and the like. Similarly, the training method of the machine learning controller 120 also varies based on the specific task. Specifically, the training examples used to train the machine learning controller may include different information and may have different dimensions based on the task of the machine learning controller 120. In the above example where the machine learning controller 120 is configured to identify the use application of the power tool 105, each training example may include a set of inputs, such as motor speed, motor current and voltage, the operating mode currently being implemented by the power tool 105, and the movement of the power tool 105 (e.g., from an accelerometer). Each training example also includes a specified output. For example, when the machine learning controller 130 identifies the use application of the power tool 105, the training example may have an output including a specific use application of the power tool 105 (e.g., installing fasteners). Other training examples include different values ​​for each input and outputs indicating that the use application is, for example, installing a screw on a wooden workpiece. The training examples may be previously collected training examples, such as from a plurality of power tools of the same type. For example, the training examples may have been previously collected from, for example, two hundred power tools of the same type (e.g., electric drills) over a period of, for example, one year.

[0068] A plurality of different training examples are provided to the machine learning controller 120. The machine learning controller 120 uses these training examples to generate a model (e.g., rules, system of equations, etc.) that helps to classify or estimate outputs based on new input data. The machine learning controller 120 may weigh different training examples differently, for example, to prioritize different conditions or outputs from the machine learning controller 120. For example, a training example corresponding to a recoil condition may be weighted more heavily than a training example corresponding to a stripping condition, to prioritize correct identification of the recoil condition over the stripping condition. In some embodiments, the training examples are weighted differently by associating different cost functions or values ​​with particular training examples or types of training examples.

[0069] In one example, the machine learning controller 120 implements an artificial neural network. The artificial neural network typically includes an input layer, a plurality of hidden layers or nodes, and an output layer. Typically, the input layer includes as many nodes as the inputs provided to the machine learning controller 120. As described above, the number (and type) of inputs provided to the machine learning controller 120 may vary based on the specific task of the machine learning controller 120. Therefore, the input layer of the artificial neural network of the machine learning controller 120 may have a different number of nodes based on the specific task of the machine learning controller 120. The input layer is connected to the hidden layer. The number of hidden layers is variable and may depend on the specific task of the machine learning controller 120. In addition, each hidden layer may have a different number of nodes and may be connected to the next layer differently. For example, each node of the input layer may be connected to each node of the first hidden layer. The connection between each node of the input layer and each node of the first hidden layer may be assigned a weight parameter. In addition, a bias value may also be assigned to each node of the neural network. However, each node of the first hidden layer may not be connected to each node of the second hidden layer. That is, some nodes of the first hidden layer may not be connected to all nodes of the second hidden layer. The connections between the nodes of the first hidden layer and the second hidden layer are respectively assigned different weight parameters. Each node of the hidden layer is associated with an activation function. The activation function defines how the hidden layer processes the input received from the input layer or previous input layers. These activation functions can vary and can vary based not only on the type of task associated with the machine learning controller 120, but also on the specific type of hidden layer implemented.

[0070] Each hidden layer can perform a different function. For example, some hidden layers can be convolutional hidden layers, which can reduce the dimensionality of the input in some cases, while other hidden layers can perform more statistical functions, such as maximum pooling, which can reduce the group of inputs to the maximum value, average layers, etc. In some hidden layers (also called "dense layers"), each node is connected to each node of the next hidden layer. Some neural networks that include more than, for example, three hidden layers can be considered deep neural networks. The last hidden layer is connected to the output layer. Similar to the input layer, the output layer typically has the same number of nodes as possible outputs. In the above example where the machine learning controller 120 identifies the use application of the power tool 105, the output layer may include, for example, four nodes. The first node may indicate that the use application corresponds to installing drywall, the second node may indicate that the use application corresponds to installing screws on a wooden workpiece, the third node may indicate that the use application corresponds to removing screws, and the fourth node may indicate that the use application corresponds to an unknown (or unrecognizable) task. In some embodiments, the machine learning controller 120 then selects the output node with the highest value and indicates the corresponding use application to the power tool 105 or the user. In some embodiments, the machine learning controller 120 may also select more than one output node. The machine learning controller 120 or the electronic processor 550 can then use the multiple outputs to control the power tool 500. For example, the machine learning controller 120 can identify the type of fastener and select self-drilling screws (e.g., self-drilling (TEK) screws) and sheet metal screws as the most likely fasteners. The machine learning controller 120 or the electronic processor 550 can then control the motor, for example, based on the ramp up speed for the self-drilling screws, but using backlash detection from the sheet metal screws. The machine learning controller 120 and the electronic processor 550 can implement different methods of combining the outputs from the machine learning controller 120.

[0071] During training, the artificial neural network receives the input of the training examples and generates the output using the bias of each node and the connection between each node and the corresponding weight. The artificial neural network then compares the generated output with the actual output of the training example. Based on the generated output and the actual output of the training example, the neural network changes the weights and / or biases associated with each node connection. In some embodiments, the neural network also changes the weights associated with each node during training. Training will continue until the training condition is met. The training condition may correspond to, for example, the use of a predetermined number of training examples, reaching a minimum accuracy threshold during training and validation, completing a predetermined number of validation iterations, optimized training compared to testability testing, etc. Based on the training examples, different types of training algorithms can be used to adjust the bias values ​​and weights of the node connections. The training algorithm may include, for example, gradient descent, Newton's method, conjugate gradient, quasi-Newton, Levenberg Marquardt, etc. (again, see Table 1).

[0072] In another example, the machine learning controller 120 implements a support vector machine to perform classification. The machine learning controller 120 can, for example, classify whether a fastener is wearing. In such an embodiment, the machine learning controller 120 can receive inputs such as motor speed, output torque, and operating time (e.g., how long the power tool 105 has been working on the same fastener). The machine learning controller 120 then uses a combination of some input variables (e.g., motor speed, output torque, operating time, etc.) as support vectors to define margins to maximize the margins. In some embodiments, the machine learning controller 120 uses a combination of more than one similar input variables (e.g., movement of the tool along different axes) to define margins. The margin corresponds to the distance between the two closest vectors of different classifications. For example, the margin corresponds to the distance between a vector representing a fastener that is wearing and a vector representing a fastener that is not wearing. In some embodiments, the machine learning controller 120 uses more than one support vector machine to perform a single classification. For example, when the machine learning controller 120 classifies whether a fastener is wearing, the first support vector machine may determine whether the fastener is wearing based on the motor speed and the operating time, while the second support vector machine may determine whether the fastener is wearing based on the motor speed and the output torque. Then, when both support vector machines classify the fastener as worn, the machine learning controller 120 may determine whether the fastener is wearing. In other embodiments, a single support vector machine may use more than two input variables and define a hyperplane that separates fasteners that are wearing from fasteners that are not wearing.

[0073] Training examples for support vector machines include: an input vector that includes values ​​for input variables (e.g., motor speed, operating time, output torque, etc.); and an output classification that indicates whether a fastener represents a fastener that is wearing. During training, the support vector machine selects a support vector (e.g., a subset of the input vector) that maximizes the margin. In some embodiments, the support vector machine can define a line or hyperplane that accurately separates fasteners that are wearing from fasteners that are not wearing. However, in other embodiments (e.g., in the case of inseparability), the support vector machine can define a line or hyperplane that maximizes the margin and minimizes the slack variable, which measures the error in the classification of the support vector machine. After the support vector machine is trained, new input data can be compared to the line or hyperplane to determine how to classify the new input data (e.g., determine whether the fastener is wearing). In other embodiments, as described above, the machine learning controller 120 can implement different machine learning algorithms to estimate or classify based on a set of input data.

[0074] Some examples of pairings of input data, processing techniques, and machine learning algorithms are listed below in Table 2. The input data listed in the table below as time series data includes, for example, one or more of the different examples of time series tool usage information described herein.

[0075]

[0076]

[0077] exist Figure 1 In the example of , the server 110 receives usage information from the power tool 105. In some embodiments, the server 110 uses the received usage information as an additional training example (e.g., when the actual value or classification is also known). In other embodiments, the server 110 sends the received usage information to the trained machine learning controller 120. The machine learning controller 120 then generates an estimated value or classification based on the input usage information. The server electronic processor 425 then generates a recommendation for future operation of the power tool 105. For example, the trained machine learning controller 120 may determine that a fastener is being installed. The server electronic processor 425 may then determine that a slower motor speed for the selected operating mode can be used to prevent the fastener from being over-tightened or installed. The server 110 may then send the recommended operating parameters to the external device 107. The external device 107 may display the recommended changes to the operating parameters and request confirmation from the user to implement the recommended changes before forwarding the changes to the power tool 105. In other embodiments, the external device 107 forwards the recommended changes to the power tool 105 and displays the recommended changes to notify the user of the changes implemented by the power tool 105.

[0078] Specifically, in Figure 1 In the illustrated embodiment, the server electronic control assembly generates a set of parameters and updated thresholds that are recommended for operation of the power tool 105 in a particular mode. For example, during various operations of the power tool 105 in impact mode, the machine learning controller 120 may detect that the power tool 105 may benefit from a faster average rotational speed of the motor during the first ten seconds of operation. The machine learning controller 120 may then adjust the motor speed threshold for the impact mode so that the motor speed increases during the first ten seconds of the impact mode of the power tool 105. The server 110 then sends the updated motor speed threshold to the power tool 105 via the external device 107.

[0079] The power tool 105 receives the updated motor speed threshold, updates the impact mode according to the updated motor speed threshold, and operates in the impact mode according to the updated motor speed threshold. In some embodiments, the power tool 105 periodically sends the usage data to the server 110 based on a predetermined schedule (e.g., every eight hours). In other embodiments, the power tool 105 sends the usage data after a predetermined period of inactivity (e.g., when the power tool 105 has been inactive for two hours), which may indicate that the operating period has been completed. In some embodiments, the power tool 105 sends the usage data to the server 110 in real time, and the updated thresholds and parameters can be implemented in subsequent operations.

[0080] Figure 2 A second power tool system 200 is shown. The second power tool system 200 includes a power tool 205, an external device 107, a server 210, and a network 215. The power tool 205 and the external device 107 are connected to the server 210. Figure 1 The power tool system 100 is similar to the power tool system 100, and collects information about Figure 1The power tool 205 of the second power tool system 200 includes a static machine learning controller 220. In the illustrated embodiment, the power tool 205 receives the static machine learning controller 220 from the server 210 via the network 215. In some embodiments, the power tool 205 receives the static machine learning controller 220 during manufacturing, while in other embodiments, the user of the power tool 205 can choose to receive the static machine learning controller 220 after the power tool 205 has been manufactured, and in some embodiments, after operation of the power tool 205. The static machine learning controller 220 is a trained machine learning controller similar to the trained machine learning controller 120, wherein the machine learning controller 120 has been trained using different training examples and is configured to receive new input data and generate estimates or classifications for the new input data.

[0081] The electric tool 205 is operated by, for example, Figure 1 The external device 107 described is in communication with the server 210. The external device 107 can also provide additional functionality to the power tool 205 (e.g., generating a graphical user interface). The server 210 of the power tool system 200 can utilize usage information from power tools similar to the power tool 205 (e.g., when the power tool 205 is a power drill, the server 210 can receive usage information from various other power drills) and use training examples of the received usage information from the power tool to train the machine learning program. The server 210 then sends the trained machine learning program to the machine learning controller 220 of the power tool 205 for execution during future operations of the power tool 205.

[0082] Thus, the static machine learning controller 220 includes a trained machine learning program, for example, provided at the time of manufacture. During future operation of the power tool 205, the static machine learning controller 220 analyzes new usage data from the power tool 205 and generates recommendations or actions based on the new usage data. As discussed above with respect to the machine learning controller 120, the static machine learning controller 220 has one or more specific tasks, such as determining the current application of the power tool 205. In other embodiments, the tasks of the static machine learning controller 220 may be different. In some embodiments, a user of the power tool 205 may select a task for the static machine learning controller 220 using, for example, a graphical user interface generated by an external device 107. The external device 107 may then send a target task for the static machine learning controller 220 to the server 210. The server 210 then sends a trained machine learning program to the static machine learning controller 220, which is trained for the target task. Based on the estimate or classification from the static machine learning controller 220, the power tool 205 may change its operation, adjust one of the operating modes of the power tool 205, and / or adjust different aspects of the power tool 205. In some embodiments, the power tool 205 may include more than one static machine learning controller 220, each static machine learning controller 220 having a different target task.

[0083] Figure 3 A third power tool system 300 is shown. The third power tool system 300 also includes a power tool 305, an external device 107, a server 310, and a network 315. The power tool 305 is similar to the power tools 105, 205 described above, and includes similar sensors that monitor various types of usage information of the power tool 305 (e.g., motor speed, output torque, type of battery pack, state of charge of the battery pack, etc.). However, the power tool 305 of the third power tool system 300 includes an adjustable machine learning controller 320 instead of the static machine learning controller 220 of the second power tool 205. In the illustrated embodiment, the adjustable machine learning controller 320 of the third power tool 305 receives a machine learning program from the server 310 via the network 315. Unlike the static machine learning controller 220 of the second power tool 205, the server 310 can send an updated version of the machine learning program to the adjustable machine learning controller 320 to replace the previous version.

[0084] The power tool 305 of the third power tool system 300 sends feedback about the operation of the adjustable machine learning controller 320 to the server 310 (e.g., via the external device 107). The power tool 305 may, for example, send an indication to the server 310 about the number of operations incorrectly classified by the adjustable machine learning controller 320. The server 310 receives feedback from the power tool 305, updates the machine learning program, and provides the updated program to the adjustable machine learning controller 320 to reduce the number of operations incorrectly classified. Thus, the server 310 updates or retrains the adjustable machine learning controller 320 based on the feedback received from the power tool 305. In some embodiments, the server 310 also uses feedback received from similar power tools to adjust the adjustable machine learning controller 320. In some embodiments, the server 310 updates the adjustable machine learning controller 320 periodically (e.g., every month). In other embodiments, the server 310 updates the adjustable machine learning controller 320 when the server 310 receives a predetermined number of feedback indications (e.g., after the server 310 receives two feedback indications). The feedback indication may be positive (e.g., indicating that the adjustable machine learning controller 320 correctly classified the condition, event, operation, or combination thereof), or the feedback may be negative (e.g., indicating that the adjustable machine learning controller 320 incorrectly classified the condition, event, operation, or combination thereof). In some examples, the feedback indication may be numerical (e.g., a torque value achieved) or categorical (not installed, installed, worn).

[0085] In some embodiments, the server 310 also uses usage data and / or sensor data (raw or processed) received from the power tool 305 and other similar power tools to update the adjustable machine learning controller 320. For example, the server 310 can periodically retrain the adjustable machine learning controller 320 (or adjust the training) based on the newly received usage data. The server 310 then sends the updated version of the adjustable machine learning controller 320 to the power tool 305.

[0086] When the power tool 305 receives an updated version of the adjustable machine learning controller 320 (e.g., when an updated machine learning program is provided to and stored on the machine learning controller 320), the power tool 305 replaces the current version of the adjustable machine learning controller 320 with the updated version. In some embodiments, the power tool 305 is equipped with a first version of the adjustable machine learning controller 320 during manufacturing. In such embodiments, a user of the power tool 305 can request a newer version of the adjustable machine learning controller 320. In some examples, the implementation of the update and / or the use of the machine learning functionality may be provided by subscription, purchase, and / or rental. In some embodiments, the user may select the frequency with which the adjustable machine learning controller 320 is sent to the power tool 305. In other examples, operation or mode use of the power tool 305 may be disabled until a newer version of the machine learning controller 320 is established on the power tool 305 and / or a calibration step of the machine learning controller 320 and / or the power tool 305 is performed.

[0087] Figure 4A A fourth power tool system 400 is shown. The fourth power tool system 400 includes a power tool 405, an external device 107, a network 415, and a server 410. The power tool 405 includes a self-updating machine learning controller 420. The self-updating machine learning controller 420 is first loaded on the power tool 405, for example, during manufacturing. The self-updating machine learning controller 420 updates itself. In other words, the self-updating machine learning controller 420 receives new usage information from sensors of the power tool 405, feedback information indicating a desired change to an operating parameter (e.g., the user wants to increase the motor speed or output torque), feedback information indicating whether a classification made by the machine learning controller 420 is incorrect, or a combination thereof. The self-updating machine learning controller 420 then uses the received information to retrain the self-updating machine learning controller 420.

[0088] In some embodiments, the power tool 405 retrains the self-updating machine learning controller 420 while the power tool 405 is not operating. For example, the power tool 405 may detect that the motor has not been operated for a predetermined period of time and begin the retraining process of the self-updating machine learning controller 420 while the power tool 405 remains inoperative. Training the self-updating machine learning controller 420 while the power tool 405 is not operating allows more processing power to be used during retraining without competing for computing resources that would normally be used to operate the power tool 405.

[0089] like Figure 4A As shown, in some embodiments, the power tool 405 also communicates with the external device 107 and the server 410. For example, as described above with respect to Figures 1 to 3As described above, the external device 107 communicates with the power tool 405. The external device 107 generates a graphical user interface to facilitate adjustment of operating parameters of the power tool 405. The external device 107 can also bridge communications between the power tool 405 and the server 410. For example, as described above with respect to Figure 2 As described above, in some embodiments, the external device 107 receives a selection of a target task for the machine learning controller 420. The external device 107 can then request a corresponding machine learning program from the server 410 for transmission to the power tool 405. The power tool 405 also communicates with the server 410 (e.g., via the external device 107). In some embodiments, the server 410 can also retrain the self-updating machine learning controller 420, for example, as described above with respect to Figure 3 As described. The server 410 can use additional training examples from other similar power tools. Using these additional training examples can provide greater variability and ultimately make the machine learning controller 420 more reliable. In some embodiments, the power tool 405 retrains the self-updating machine learning controller 420 when the power tool 405 is not operating, and the server 410 can retrain the machine learning controller 420 when the power tool 405 remains in operation (e.g., when the power tool 405 is in an operating state during a predetermined retraining period of the machine learning controller 420). Therefore, in some embodiments, the self-updating machine learning controller 420 can be retrained on the power tool 405, by the server 410, or by a combination thereof. In some embodiments, the server 410 does not retrain the self-updating machine learning controller 420, but still exchanges information with the power tool 405. For example, the server 410 can provide other functions for the power tool 405, such as sending information about various operating modes of the power tool 405.

[0090] Figures 1 to 4A Each of the embodiments describes a power tool system 100, 200, 300, 400, wherein the power tool 105, 205, 305, 405 communicates with the server 110, 210, 310, 410 and with the external device 107. Figure 1As discussed, the external device 107 can bridge communications between the power tool 105, 205, 305, 405 and the server 110, 210, 310, 410. That is, the power tool 105, 205, 305, 405 can communicate directly with the external device 107. The external device 107 can then forward information received from the power tool 105, 205, 305, 405 to the server 110, 210, 310, 410. Similarly, the server 110, 210, 310, 410 can send information to the external device 107 to be forwarded to the power tool 105, 205, 305, 405. In such an embodiment, the power tool 105, 205, 305, 405 can include a transceiver to communicate with the external device 107 via, for example, a short-range communication protocol such as Bluetooth(R). The external device 107 may include a short-range transceiver to communicate with the power tool 105, 205, 305, 405, and may also include a long-range transceiver to communicate with the server 110, 210, 310, 410. In some embodiments, a wired connection (e.g., via a USB data cable) is provided between the external device 107 and the power tool 105, 205, 405 to enable direct communication between the external device 107 and the power tool 105, 205, 305, 405. Providing a wired connection can provide a faster and more reliable communication method between the external device 107 and the power tool 105, 205, 305, 405.

[0091] The external device 107 may include, for example, a smart phone, a tablet computer, a cellular phone, a laptop computer, a smart watch, etc. Figures 1 to 4A The server 110, 210, 310, 410 shown in the figure includes at least a server electronic processor 425, a server memory 430 and a transceiver to communicate with the power tool 105, 205, 305, 405 via the network 115, 215, 315, 415. The server electronic processor 425 receives tool usage data from the power tool 105, 205, 305, 405, stores the tool usage data in the server memory 430, and in some embodiments, uses the received tool usage data to establish or adjust the machine learning controller 120, 220, 320, 420. The term "external system device" may be used herein to refer to one or more of the external device 107 and the servers 110, 210, 310 and 410, as each of which is located external to the power tool 105, 205, 305, 405. In addition, in some embodiments, the external system device is a wireless hub, such as a beacon device placed at a worksite to monitor the tool, used as a gateway network device (e.g., to provide As described herein, the external system device includes at least an input / output unit for communication (e.g., a wireless or wired transceiver), a memory storing instructions, and an electronic processor that executes the instructions stored in the memory to perform the functions attributed to the external system device.

[0092] In some embodiments, the power tool 405 may not communicate with the external device 107 or the server 410. For example, Figure 4B The power tool 405 is shown without being connected to the external device 107 or the server 410. In contrast, because the power tool 405 includes a self-updating machine learning controller 420, the power tool 405 can implement the machine learning controller 420, receive user feedback, and update the machine learning controller 420 without communicating with the external device 107 or the server 410.

[0093] Figure 4C A fifth power tool system 450 is shown, which includes a power tool 455 and an external device 107. The external device 107 is used as described above with reference to Figures 1 to 4A Various methods are described to communicate with the power tool 455. Specifically, the power tool 455 sends operational data regarding the operation of the power tool 455 to the external device 107. The external device 107 generates a graphical user interface to facilitate adjustment of operating parameters of the power tool 455 and to provide information to the user regarding the operation of the power tool 455. Figure 4C In the illustrated embodiment, the external device 107 includes a machine learning controller 460. In some embodiments, the machine learning controller 460 is similar to Figure 1 The machine learning controller 460 of the embodiment of the present invention receives usage information from the power tool 455 and generates recommendations for future operation of the power tool 455. In such an embodiment, the machine learning controller 460 can generate a set of parameters and updated thresholds recommended for operation of the power tool 105 in a particular mode. The external device 107 then sends the updated set of parameters and updated thresholds to the power tool 455 for implementation.

[0094] In some embodiments, the machine learning controller 460 is similar to Figure 3 In such an embodiment, the external device 107 can update the machine learning controller 460 based on, for example, feedback received from the power tool 455 and / or other operating data from the power tool 455. In such an embodiment, the power tool 455 also includes a similar Figure 3The external device 107 can then modify and update the adjustable machine learning controller 320 and transmit the updates to the machine learning controller 320 to the power tool 455 for implementation. For example, the external device 107 can retrain the machine learning controller 460 using feedback from the user to continue training the machine learning controller 460 to implement reinforcement learning control, or in some embodiments, feedback can be used to adjust, for example, a switching rate on a recurrent neural network.

[0095] In some embodiments, as briefly discussed above, the power tool 455 also includes a machine learning controller. The machine learning controller of the power tool 455 can be similar to, for example, the one described above. Figure 2 The static machine learning controller 220, Figure 3 The adjustable machine learning controller 320, or Figure 4A A self-updating machine learning controller 420.

[0096] Figure 4D A sixth power tool system 475 is shown that includes a battery pack 480. The battery pack 480 includes a machine learning controller 485. Although not shown, in some embodiments, the battery pack 480 can communicate with an external device 107, a server, or a combination thereof, such as via a network. Alternatively or additionally, the battery pack can communicate with a power tool 455 (e.g., a power tool 455 attached to the battery pack 480). The external device 107 and the server can be similar to those described above with respect to Figures 1 to 4A The external device 107 and the server 110, 210, 310, 410 described above. The machine learning controller 485 of the battery pack 480 can be similar to any of the machine learning controllers 220, 320, 420 described above. In one embodiment, the machine learning controller 220, 320, 420 controls the operation of the battery pack 480. For example, the machine learning controller 485 can help identify different battery conditions that may be harmful to the battery pack 480, and can automatically change (e.g., increase or decrease) the amount of current provided by the battery pack 480 and / or can change some thresholds that regulate the operation of the battery pack 480. For example, the battery pack 480 can reduce power from the instructions of the machine learning controller 485 to prevent overheating of the battery cells. In some embodiments, the battery pack 480 communicates with a power tool (e.g., similar to the power tools 105, 205, 305, 405, 455), and the machine learning controller 485 controls at least some aspects and / or operations of the power tool. For example, the battery pack 480 can receive usage data (e.g., sensor data) from the power tool and generate an output to control the operation of the power tool. The battery pack 480 can then send the control output to the electronic processor of the power tool.

[0097] In other embodiments, a power system is provided that includes a charger (e.g., for charging battery pack 480 or a similar battery pack without a machine learning controller), wherein the charger includes a machine learning controller similar to that described herein. In some embodiments, an adapter configured to be positioned between battery pack 480 and a power tool (e.g., power tool 305) can include a machine learning controller that can control the power tool.

[0098] Figures 1 to 4C An exemplary power tool is shown in the form of an impact driver 105, 205, 305, 405. However, the specific power tools 105, 205, 305, 405 shown and described herein are merely exemplary. In other embodiments, the power tool systems 100, 200, 300, 400 described herein may include different types of power tools, such as electric drills, hammer drills, electric screwdrivers, screw guns, electric ratchet wrenches, electric torque wrenches, hydraulic pulse tools, impact drivers, impact wrenches, reaction arm tools, tension control guns or drivers, pipe cutters, sanders, nail guns, grease guns, etc. The power tools 105, 205, 305, 405 of the power tool systems 100, 200, 300, 400 are configured to perform one or more specific tasks (e.g., drilling, cutting, fastening, pressing, applying lubricants, grinding, heating, grinding, bending, shaping, impacting, polishing, lighting, etc.). For example, an impact wrench is associated with the task of producing a rotational output (e.g., to drive a tool head), while a reciprocating saw is associated with the task of producing a reciprocating output motion (e.g., for pushing and pulling a saw blade). The task associated with a particular tool may also be referred to as the primary function of the tool. Each power tool includes a drive device that is specifically designed for the primary function of the power tool. For example, in the illustrated embodiment in which the power tool corresponds to an impact driver, the drive device is a socket. However, in an embodiment in which the power tool is, for example, an electric drill, the drive device may include an adjustable chuck as a tool head driver.

[0099] Figures 1 to 4D Each of the foregoing illustrates a different embodiment in which a different type of machine learning controller 120, 220, 320, 420 is used in conjunction with a power tool 105, 205, 305, 405. In some embodiments, each power tool 105, 205, 305, 405 may include more than one machine learning controller 120, 220, 320, 420, and each machine learning controller 120, 220, 320, 420 may be of a different type. For example, a power tool 105, 205, 305, 405 may include a controller as described in reference to Figure 2 The static machine learning controller 220 may also include a Figure 4AIn another example, the power tool 105, 205, 305, 405 may include a static machine learning controller 220. The static machine learning controller 220 may then be removed and replaced by, for example, an adjustable machine learning controller 320. In other words, the same power tool may include the self-updating machine learning controller 420 described above. Figures 1 to 4B Any of the machine learning controllers 120, 220, 320, 420 described herein. In addition, Figure 6 The machine learning controller 540 shown in and described in more detail below is an exemplary controller that can be used as one or more of the machine learning controllers 120, 220, 320, 420, 460, and 485.

[0100] Figure 5A A block diagram of an exemplary power tool 500 in the form of an impact driver and including a machine learning controller. Figures 1 to 4C As an exemplary power tool, power tool 500 represents various types of power tools. Therefore, the description of power tool 500 is similarly applicable to other types of power tools. The machine learning controller of power tool 500 can be a static machine learning controller similar to static machine learning controller 220 of second power tool 205, an adjustable machine learning controller similar to adjustable machine learning controller 320 of third power tool 305, or a self-updating machine learning controller similar to self-updating machine learning controller 420 of fourth power tool 405. Although Figure 5A The power tool 500 is described as communicating with an external device 107 or a server, but in some embodiments, the power tool 500 is standalone or closed (with respect to machine learning) and does not need to communicate with an external device 107 or a server to perform the functions of the machine learning controller 540 described in more detail below.

[0101] like Figure 5AAs shown, the power tool 500 includes a motor 505, a trigger 510, a power interface 515, a switch network 517, a power input control 520, a wireless communication device 525, a modepad 527, a plurality of sensors 530, a plurality of indicators 535 and an electronic control assembly 536. The electronic control assembly 536 includes a machine learning controller 540, an activation switch 545 and an electronic processor 550. The motor 505 actuates the drive device of the power tool 500 and allows the drive device to perform specific tasks of the power tool 500. The motor 505 receives power from an external power source through the power interface 515. In some embodiments, the external power source includes an alternating current (AC) power source. In such an embodiment, the power interface 515 includes an AC power cord that can be connected to, for example, an AC outlet. In other embodiments, the external power source includes a battery pack. In such an embodiment, the power interface 515 includes a battery pack interface. The battery pack interface may include a battery pack receiving portion on the power tool 500 that is configured to receive and couple to a battery pack (e.g., a battery pack or a similar battery pack without a machine learning controller). The battery pack receiving portion may include: a connection structure that engages a mechanism that secures the battery pack; and a terminal block that electrically connects the battery pack to the power tool 500.

[0102] The motor 505 is powered based on the state of the trigger 510. Generally, when the trigger 510 is activated, the motor 505 is powered, and when the trigger 510 is deactivated, the motor is de-energized. Figures 1 to 4C In the power tools 105, 205, 305, 405 shown in the drawings, the trigger 510 partially extends over the length of the handle of the power tool and is movably coupled to the handle so that the trigger 510 moves relative to the power tool housing. In the illustrated embodiment, the trigger 510 is coupled to a trigger switch 555 so that when the trigger 510 is pressed, the trigger switch 555 is activated, and when the trigger is released, the trigger switch 555 is deactivated. In the illustrated embodiment, the trigger 510 is biased (e.g., having a biasing member, such as a spring) so that when the user releases the trigger 510, the trigger 510 moves away from the handle of the power tool 500 in a second direction. In other words, unless the user presses the trigger 510 and activates the trigger switch 555, the default state of the trigger switch 555 is to be deactivated.

[0103] The switch network 517 enables the electronic processor 550 to control the operation of the motor 505. The switch network 517 includes a plurality of electronic switches (e.g., field effect transistors (FETs), bipolar transistors, etc.) connected together to form a network that controls the activation of the motor 505 using a pulse width modulation (PWM) signal. For example, the switch network 217 may include a six FET bridge that receives a pulse width modulation (PWM) signal from the electronic processor 550 to drive the motor 505. In general, when the output of the trigger switch 555 indicates that the trigger 510 is pressed, current is supplied from the power interface 515 to the motor 505 via the switch network 517. When the trigger 510 is not pressed, current is not supplied from the power interface 515 to the motor 505. As discussed in more detail below, in some embodiments, the amount of trigger pull detected by the trigger switch 555 is related to or corresponds to a desired rotational speed of the motor 505. In other embodiments, the amount of trigger pull corresponds to a desired torque.

[0104] In response to the electronic processor 550 receiving an activation signal from the trigger switch 555, the electronic processor 550 activates the switch network 517 to provide power to the motor 505. The switch network 517 controls the amount of current available to the motor 505, thereby controlling the speed and torque output of the motor 505. The mode plate 527 allows the user to select a mode of the power tool 500 and indicates to the user the currently selected mode of the power tool 500. In some embodiments, the mode plate 527 includes a single actuator. In such an embodiment, the user can select an operating mode for the power tool 500, for example, based on multiple actuations of the mode plate 527. For example, when the user activates the actuator three times, the power tool 500 can operate in the third operating mode. In other embodiments, the mode plate 527 includes multiple actuators, each actuator corresponding to a different operating mode. For example, the mode plate 527 can include four actuators, and when the user activates one of the four actuators, the power tool 500 can operate in the first operating mode. The electronic processor 550 receives a user selection of an operating mode via the mode plate 527 and controls the switch network 517 so that the motor 505 operates according to the selected operating mode. In some embodiments, the power tool 500 does not include the mode plate 527. In such embodiments, the power tool 500 can operate in a single mode, or can include different selection mechanisms for selecting an operating mode of the power tool 500. In some embodiments, as described in more detail below, the power tool 500 (e.g., the electronic control assembly 536) automatically selects an operating mode of the power tool 500 using, for example, a machine learning controller 540.

[0105] The sensor 530 is coupled to the electronic processor 550 and transmits various output signals indicating different parameters of the power tool 500 or the motor 505 to the electronic processor 550. The sensor 530 includes, for example, a Hall effect sensor, a motor current sensor, a motor voltage sensor, a temperature sensor, a torque sensor, a position or motion sensor (e.g., an accelerometer or a gyroscope), etc. The Hall effect sensor outputs motor feedback information (e.g., an indication (e.g., pulses) related to the position, speed, and acceleration of the rotor of the motor 505) to the electronic processor 550. In some embodiments, the electronic processor 550 uses the motor feedback information from the Hall effect sensor to control the switch network 517 to drive the motor 505. For example, by selectively enabling and disabling the switch network 517, power is selectively provided to the motor 505 to rotate the motor at a specific speed, a specific torque, or a combination thereof. The electronic processor 550 can also control the operation of the switch network 517 and the motor 505 based on other sensors included in the power tool 500. For example, in some embodiments, the electronic processor 550 varies the control signal based on a sensor output signal indicating the number of impacts delivered by the power tool 500, a sensor output signal indicating the speed of the anvil of the power tool 500, etc. The output signal from the sensor is used to ensure the correct timing of the control signal to the switch network 517, and in some cases, to provide closed-loop feedback to control the speed of the motor 505 within a target range or at a target level.

[0106] The indicator 535 is also connected to the electronic processor 550. The indicator 535 receives control signals from the electronic processor 500 to generate visual signals to convey information about the operation or status of the power tool 500 to the user. The indicator 535 may include, for example, an LED or a display screen, and may generate various signals that indicate, for example, the operating state or mode of the power tool 500, abnormal conditions or events detected during the operation of the power tool 500, etc. For example, the indicator 535 may indicate a measured electrical characteristic of the power tool 500, the condition or state of the power tool 500, the operating mode of the power tool 500 (discussed in further detail below), etc. In some embodiments, the indicator 535 includes an element for conveying information to the user through an audible or tactile output. In some embodiments, the power tool 500 does not include the indicator 535. In some embodiments, the operation of the power tool 500 warns the user about the condition of the power tool. For example, a rapid deceleration of the motor 505 may indicate the presence of an abnormal condition. In some embodiments, the power tool 500 communicates with the external device 107 , and the external device 107 generates a graphical user interface that conveys information to the user without requiring an indicator 535 on the power tool 500 .

[0107] The power interface 515 is coupled to the power input control 520. The power interface 515 transmits power received from an external power source to the power input control 520. The power input control 520 includes active and / or passive components (e.g., buck controllers, voltage converters, rectifiers, filters, etc.) to regulate or control the power received through the power interface 515 to the electronic processor 550 and other components of the power tool 500 (e.g., wireless communication device 525).

[0108] Wireless communication device 525 is coupled to electronic processor 550. Figures 1 to 4A and Figure 4C In the exemplary power tool 105, 205, 305, 405 of FIG. 1 , the wireless communication device 525 is located near the foot of the power tool 105, 205, 305, 405 (see FIG. 1 ). Figure 1 4) to save space and ensure that the magnetic activity of the motor 505 does not affect the wireless communication between the power tool 500 and the server 110, 210, 310, 410 or with the external device 107. In a specific example, the wireless communication device 525 is located below the mode plate 527. The wireless communication device 525 may include, for example, a radio transceiver and antenna, a memory, a processor and a real-time clock. The radio transceiver and antenna operate together to send and receive wireless messages to and from the external device 107, the second power tool 500 or the server 110, 210, 310, 410 and the processor. The memory of the wireless communication device 525 stores instructions implemented by the processor and / or may store data related to the communication between the power tool 500 and the external device 107, the second power tool 500 or the server 110, 210, 310, 410. The processor for the wireless communication device 525 controls wireless communication between the power tool 500 and an external device 107, a second power tool 500, or a server 110, 210, 310, 410. For example, the processor of the wireless communication device 525 buffers incoming and / or outgoing data, communicates with the electronic processor 550, and determines the communication protocol and / or settings to be used in the wireless communication.

[0109] In some embodiments, the wireless communication device 525 is Controller. Controller and Adoption The wireless communication device 525 communicates with an external device 107, a second power tool 500, or a server 110, 210, 310, 410 using a wireless communication protocol. Therefore, in such an embodiment, the external device 107, the second power tool 500, or the server 110, 210, 310, 410, and the power tool 500 are within the communication range of each other (i.e., nearby) when they exchange data. In other embodiments, the wireless communication device 525 communicates using other protocols (e.g., Wi-Fi, cellular protocols, proprietary protocols, etc.) on different types of wireless networks. For example, the wireless communication device 525 can be configured to communicate via Wi-Fi over a wide area network (such as the Internet) or a local area network, or to communicate via a micro-net (e.g., using infrared or near field communication (NFC)). Communications via the wireless communication device 525 can be encrypted to protect data exchanged between the power tool 500 and the external device 107, the second power tool 500, or the server 110, 210, 310, 410 from being affected by a third party.

[0110] In some embodiments, the wireless communication device 525 includes a real-time clock (RTC). The RTC increments and keeps time independently of other power tool components. The RTC receives power from the power interface 515 when an external power source is connected to the power tool 500, and receives power from the backup power source when the external power source is not connected to the power tool 500. The RTC can timestamp operational data from the power tool 500. In addition, the RTC can enable a safety feature in which the power tool 500 is disabled (e.g., locked and inoperable) when the time of the RTC exceeds a lockout time determined by the user.

[0111] In some embodiments, the wireless communication device 525 outputs tool usage data, maintenance data, mode information, drive device information, etc. from the power tool 500 (e.g., from the power tool electronic processor 550). For example, the output data can indicate the time when the work was completed and the specifications of the completed work. The output data can also provide a chronological record of the work performed, record the duration of tool use, etc. The server 110, 210, 310, 410 receives the output information directly from the wireless communication device 525 or receives the output information through the external device 107, and records the data received from the power tool 500. As discussed in more detail below, the output data can be used by the power tool 500, the external device 107, or the server 110, 210, 310, 410 to train or adapt the machine learning controller associated with similar power tools. The wireless communication device 525 can also receive information from the server 110, 210, 310, 410, the external device 107, or the second power tool 500, such as configuration data, operating thresholds, maintenance thresholds, mode configurations, programming for the power tool 500, an updated machine learning controller for the power tool 500, etc. For example, the wireless communication device 525 can exchange information with the second power tool 500 directly or via the external device 107.

[0112] In some embodiments, the power tool 500 does not communicate with the external device 107 or the server 110, 210, 310, 410 (e.g., Figure 4B 405 in the power tool 500). Therefore, in some embodiments, the power tool 500 does not include the wireless communication device 525 described above. In some embodiments, the power tool 500 includes a wired communication interface to communicate with, for example, the external device 107 or a different device (e.g., another power tool 500). The wired communication interface can provide a faster communication route than the wireless communication device 525.

[0113] In some embodiments, the power tool 500 includes a data sharing setting. The data sharing setting indicates what data (if any) is output from the power tool 500 to the server 110, 210, 310, 410. In one embodiment, the power tool 500 receives an indication of the type of data to be output from the power tool 500 (e.g., via a graphical user interface generated by the external device 107). In one embodiment, the external device 107 can display various options or levels of data sharing for the power tool 500, and the external device 107 receives the user's selection through the graphical user interface generated by it. For example, the power tool 500 may receive an indication that only usage data (e.g., motor current and voltage, number of impacts delivered, torque associated with each impact, etc.) is to be output from the power tool 500, but information about, for example, the mode implemented by the power tool 500, the location of the power tool 500, etc. may not be output. In some embodiments, the data sharing setting may be a binary indication of whether data (e.g., usage data) about the operation of the power tool 500 is sent to the server 110, 210, 310, 410. The power tool 500 receives the user selection regarding the data sharing setting and stores the data sharing setting in memory to control the communication of the wireless communication device 525 according to the selected data sharing setting.

[0114] The electronic control assembly 536 is electrically and / or communicatively connected to the various modules or components of the power tool 500. The electronic assembly 536 controls the motor 505 based on the output and determination from the machine learning controller 540. Specifically, the electronic control assembly 136 includes an electronic processor 550 (also referred to as an electronic controller), a machine learning controller 540, and a corresponding activation switch 545. In some embodiments, the electronic processor 550 includes a plurality of electrical and electronic components that provide power, operational control, and protection for the electronic processor 550 and / or the components and modules in the power tool 500. For example, the electronic processor 550 includes a processing unit 557 (e.g., a microprocessor, a microcontroller, or another suitable programmable device), a memory 560, an input unit 565, and an output unit 570, among others. The processing unit 557 includes a control unit 572, an arithmetic logic unit ("ALU") 574, and a plurality of registers 576, among others. In some embodiments, electronic processor 550 is implemented partially or completely on a semiconductor (e.g., a field programmable gate array [“FPGA”] semiconductor) chip or an application specific integrated circuit (“ASIC”) (e.g., a chip developed through a register transfer level (“RTL”) design process).

[0115] The memory 560 includes, for example, a program storage area 580 and a data storage area 582. The program storage area 580 and the data storage area 582 may include a combination of different types of memory, such as read-only memory ("ROM"), random access memory ("RAM") (e.g., dynamic RAM ["DRAM"], synchronous DRAM ["SDRAM"], etc.), electrically erasable programmable read-only memory ("EEPROM"), flash memory, a hard disk, an SD card, or other suitable magnetic, optical, physical, or electronic storage device. The electronic processor 230 is connected to the memory 560 and executes software instructions that can be stored in the RAM of the memory 560 (e.g., during execution), in the ROM of the memory 560 (e.g., on a substantially permanent basis), or in other non-transitory computer-readable media (e.g., another memory or disk). The software included in the embodiment of the power tool 500 can be stored in the memory 560 of the electronic processor 550. The software includes, for example, firmware, one or more applications, program data, filters, rules, one or more program modules, and other executable instructions. In some embodiments, the machine learning controller 540 may be stored in the memory 560 of the electronic processor 550 and executed by the processing unit 557 .

[0116] The electronic processor 550 is configured to retrieve and execute instructions related to the control processes and methods described herein from the memory 560, etc. The electronic processor 550 is also configured to store power tool information on the memory 560, which includes tool usage information, information identifying the type of tool, a unique identifier for a specific tool, user characteristics (e.g., identity, type of work, skill level), and other information related to operating or maintaining the power tool 500 (e.g., information received from an external source such as the external device 107 or information pre-programmed at the time of manufacture). Tool usage information (e.g., current level, motor speed, motor acceleration, motor direction, number of impacts) can be captured or inferred from data output by the sensor 530. More specifically, Table 3 shows the types of exemplary tool usage information that can be captured or inferred by the electronic processor 550. In other configurations, the electronic processor 550 includes more, fewer, or different components.

[0117]

[0118] The machine learning controller 540 is coupled to the electronic processor 550 and the activation switch 545. The activation switch 545 switches between an activated state and a deactivated state. When the activation switch 545 is in the activated state, the electronic processor 550 communicates with the machine learning controller 540 and receives a decision output from the machine learning controller 540. When the activation switch 545 is in the deactivated state, the electronic processor 550 does not communicate with the machine learning controller 540. In other words, the activation switch 545 selectively enables and disables the machine learning controller 540. As described above with respect to Figures 1 to 4D As described, the machine learning controller 540 includes a trained machine learning controller that uses previously collected power tool usage data to analyze and classify new usage data from the power tool 500. As explained in more detail below, the machine learning controller 540 can identify the condition, application, and state of the power tool. In one embodiment, the activation switch 545 switches between an activated state and a deactivated state. In such an embodiment, when the activation switch 545 is in an activated state, the electronic processor 550 controls the operation of the power tool 500 (e.g., changes the operation of the motor 505) based on a determination from the machine learning controller 540. However, when the activation switch 545 is in a deactivated state, the machine learning controller 540 is deactivated, and the machine learning controller 540 does not affect the operation of the power tool 500. In some embodiments, however, the activation switch 545 switches between an activated state and a background state. In such an embodiment, when the activation switch 545 is in an activated state, the electronic processor 550 controls the operation of the power tool 500 based on a determination or output from the machine learning controller 540. However, when the activation switch 545 is in the background state, the machine learning controller 540 continues to generate outputs based on usage data of the power tool 500 and may calculate (e.g., determine) thresholds or other operating levels, but the electronic processor 550 does not change the operation of the power tool 500 based on the determinations and / or outputs from the machine learning controller 540. In other words, in such embodiments, the machine learning controller 540 operates in the background without affecting the operation of the power tool 500. In some embodiments, the activation switch 545 is not included on the power tool 500, and the machine learning controller 540 is maintained in an enabled state or controlled to be enabled and disabled, for example, by a wireless signal from a server (e.g., server 110, 210, 310, 410) or from an external device 107.

[0119] like Figure 5B As shown, the machine learning controller 540 includes an electronic processor 575 and a memory 580. The memory 580 stores the machine learning controller 585. The machine learning controller 585 may include the above reference Figures 1 to 4DThe trained machine learning program described above. In the illustrated embodiment, the electronic processor 575 includes a graphics processing unit. Figure 5B In some embodiments, the machine learning controller 540 is located on a separate printed circuit board (PCB) (relative to the electronic processor 550 of the power tool 500). For example, the PCB of the electronic processor 550 and the machine learning controller 540 are connected by, for example, a wire or cable, so that the electronic processor 550 of the power tool 500 can control the motor 505 based on the output and determination from the machine learning controller 540. However, in other embodiments, the machine learning control 585 can be stored in the memory 560 of the electronic processor 550 and can be implemented by the processing unit 557. In such embodiments, the electronic control assembly 536 includes a single electronic processor 550. In still other embodiments, the machine learning controller 540 is implemented in a separate electronic processor 575, but it is located on the same PCB as the electronic processor 550 of the power tool 500. The implementation of the machine learning controller 540 as a processing unit separate from the electronic processor 550 (whether on the same or different PCB) allows the selection of a processing unit to implement each of the machine learning controller 540 and the electronic processor 550, which has its capabilities (e.g., processing power and memory capacity) tailored to the specific needs of each unit. This customization can reduce the cost of the power tool and improve the efficiency of the power tool. Figure 4C As shown, for example, the external device 107 includes a machine learning controller 540, and the power tool 500 communicates with the external device 107 to receive an estimate or classification from the machine learning controller 540. In some embodiments, the machine learning controller 540 is implemented in a plug-in chip or controller that can be easily added to the power tool 500. For example, the machine learning controller 540 may include a plug-in chip that is received within a cavity of the power tool 500 and connected to the electronic processor 550. For example, in some embodiments, the power tool 500 includes a lockable compartment that includes electrical contacts that are configured to receive and electrically connect to the plug-in machine learning controller 540. The electrical contacts enable two-way communication between the plug-in machine learning controller 540 and the electronic processor 550, and enable the plug-in machine learning controller 540 to receive power from the power tool 500.

[0120] As mentioned above about Figure 1 As discussed, the machine learning control 585 can be established and operated by the server 110. In other embodiments, the machine learning control 585 can be established by the server 110, but implemented by the power tool 500 (similar to Figure 2 and Figure 3), and in other embodiments, the power tool 500 (e.g., the electronic processor 550, the electronic processor 575, or a combination thereof) establishes and implements the machine learning control 585 (similar to Figure 4B ). Figure 6 A method 600 for establishing and implementing a machine learning control 585 is shown. The method 600 is described with respect to the power tool 500, however, as previously described with respect to FIG. 5, the power tool 500 represents a Figures 1 to 4C The power tools 105, 205, 305, 405 described in each system. Therefore, Figures 1 to 4D A similar method may be implemented by the power tools 105, 205, 305, 405 of each system. In step 605, the server electronic processor 425 accesses tool usage information previously collected from similar power tools. In addition, the server electronic processor 425 accesses user characteristic information, such as characteristic information of the user who used the power tool while the corresponding power tool was collecting tool usage information. For example, to establish a user-defined user information structure for the power tool. Figures 1 to 4C and Figure 5A To develop a machine learning control 585 for an impact driver, the server electronic processor 425 accesses tool usage data previously collected from other impact drivers (e.g., via the network 115). The tool usage data includes, for example, motor current, motor voltage, motor position and / or speed, usage time, battery charge status, position of the power tool, position or speed of the output shaft, number of impacts, etc. In addition, the server electronic processor 425 accesses previously collected user characteristic information (e.g., via the network 115). The server electronic processor 425 then builds and trains the machine learning control 585 based on the tool usage data, the user characteristic information, or both (step 610).

[0121] Building and training the machine learning control 585 may include, for example, determining a machine learning architecture (e.g., using a support vector machine, a decision tree, a neural network, or a different architecture). For example, in the case of building and training a neural network, building the neural network may also include determining the number of input nodes, the number of hidden layers, the activation function for each node, the number of nodes per hidden layer, the number of output nodes, etc. Training the machine learning control 585 includes providing training examples to the machine learning control 585 and using one or more algorithms to set various weights, margins, or other parameters of the machine learning control 585 to make reliable estimates or classifications.

[0122] In some embodiments, establishing and training the machine learning control 585 includes establishing and training a recurrent neural network. A recurrent neural network allows for analysis of a sequence of inputs rather than processing each input individually. That is, the recurrent neural network can determine or output based not only on information about that particular input, but also based on previous inputs. For example, when the machine learning control 585 is configured to identify the type of fastener used with the power tool 500, the machine learning control 585 may determine that since the last three operations used lug nuts, the fourth operation may also use lug nuts. Using a recurrent neural network helps to compensate for some misclassifications that the machine learning control 585 may cause by providing and considering relationships about specific operations. Therefore, when implementing a recurrent neural network, the learning rate not only affects how each training example affects the entire recurrent neural network (e.g., adjusting weights, biases, etc.), but also affects how each input affects the output of the next input.

[0123] The server electronic processor 425 builds and trains the machine learning control 585 to perform specific tasks. For example, in some embodiments, the machine learning control 585 is trained to identify the application of the power tool 500 (e.g., for installing fasteners). In other embodiments, the machine learning control 585 is trained to detect when a harmful condition exists or is about to occur (e.g., kickback is detected). The tasks that the machine learning control 585 is trained for can vary based on, for example, the type of power tool 500, selections from the user, typical applications of the power tool, user profile information, etc. Figures 12 to 17 An example of a machine learning control 585 being built and trained for a specific task is expanded. The server electronic processor 425 uses data from different tools to train the machine learning control 585 based on the specific task.

[0124] In some embodiments, the specific tasks for the machine learning controller 540 (e.g., for the machine learning control 585) also define the specific architecture for the machine learning control 585. For example, for a first set of tasks, the server electronic processor 425 may establish a support vector machine, while for a second set of tasks, the server electronic processor 425 may establish a neural network. In some embodiments, each task or task type is associated with a specific architecture. In such embodiments, the server electronic processor 425 determines the architecture for the machine learning control 585 based on the task and the machine learning architecture associated with the specific task.

[0125] After the server electronic processor builds and trains the machine learning control 585, the server electronic processor 425 stores the machine learning control 585 in, for example, the memory 430 of the server 110 (step 615). Additionally or alternatively, the server electronic processor 425 transmits the trained machine learning control 585 to the power tool 500. In such an embodiment, the power tool 500 stores the machine learning control 585 in the memory 580 of the machine learning controller 540. In some embodiments, for example, when the electronic processor 550 of the power tool 500 implements the machine learning control 585, the power tool 500 stores the machine learning control 585 in the memory 560 of the electronic control assembly 536.

[0126] Once the machine learning control 585 is stored, the power tool 500 operates the motor 505 according to (or based on) the output and determination from the machine learning controller 540 (step 620). In an embodiment where the machine learning controller 540 (including the machine learning control 585) is implemented in the server 110, 210, the server 110, 210 can determine the operating threshold from the output and determination from the machine learning controller 540. The server 110, 210 then transmits the determined operating threshold to the power tool 500 to control the motor 505.

[0127] The performance of the machine learning controller 540 depends on the amount and quality of data used to train the machine learning controller 540. Therefore, if insufficient data is used to train the machine learning controller 540 (e.g., by the server 110, 210, 310, 410), the performance of the machine learning controller 540 may be reduced. Alternatively, different users may have different preferences and may operate the power tool 500 in different applications and in slightly different ways (e.g., some users may press the power tool 500 against the work surface with greater force, some users may expect a faster completion speed, etc.). From the user's perspective, these differences in the use of the power tool 500 may also impair certain performance of the machine learning controller 540.

[0128] Optionally, to improve the performance of the machine learning controller 540, in some embodiments, the server electronic processor 425 receives feedback from the power tool 500 (or external device 107) regarding the performance of the machine learning controller 540 (step 625). In other words, at least in some embodiments, the feedback is about the control of the motor from the earlier step 620. However, in other embodiments, the power tool 500 does not receive user feedback about the performance of the machine learning controller 540, but continues to operate the power tool 500 by executing the machine learning controller 585. As further detailed below, in some embodiments, the power tool 500 includes a specific feedback mechanism for providing feedback on the performance of the machine learning controller 540. In some embodiments, the external device 107 may also provide a graphical user interface that receives feedback from the user regarding the operation of the machine learning controller 540. The external device 107 then sends a feedback indication to the server electronic processor 425. In some embodiments, the power tool 500 may only provide negative feedback to the server 110, 210, 310, 410 (e.g., when the machine learning controller 540 performs poorly).

[0129] In some embodiments, the server 110, 210, 310, 410 may consider the lack of feedback from the power tool 500 (or external device 107) to be positive feedback indicating sufficient performance of the machine learning controller 540. In some embodiments, the power tool 500 receives positive feedback and negative feedback and provides it to the server electronic processor 425. In some embodiments, in addition to user feedback (e.g., directly input to the power tool 500) or as a substitute for user feedback (e.g., directly input to the power tool 500), the power tool 500 senses one or more power tool characteristics via one or more sensors 530, and the feedback is based on the sensed power tool characteristics. For example, in a torque wrench embodiment of the power tool 500, the torque wrench includes a torque sensor to sense the output torque during the operation of the fastener, and the sensed output torque is provided as feedback. The feedback of the torque sensor can be fed back directly to itself to prevent the target torque from being too high during the assembly and installation of the fastener. In addition, sensors on different power tools (e.g., a separate electric torque wrench) can also be used to provide feedback.

[0130] The sensed output torque (e.g., feedback) can be evaluated locally on the power tool 500, or externally on the external device 107 or server electronic processor 425 to determine whether the feedback is positive or negative (e.g., when the sensed output torque is within an acceptable torque range, the feedback can be positive; and when it is outside the acceptable torque range, the feedback can be negative). Alternatively, the sensed output can be used to scale or shift thresholds and / or confidence ranges for the output and / or adjustments used for the machine learning control 585. As discussed above, in some embodiments, the power tool 500 can send feedback or other information directly to the server 110, 210, 310, 410, while in other embodiments, the external device 107 can serve as a communication bridge between the power tool 500 and the server 110, 210, 310, 410, and feedback can be sent to the server 110, 210, 310, 410.

[0131] The server electronic processor 425 then adjusts the machine learning control 585 based on the received user feedback (step 630). In some embodiments, the server electronic processor 425 adjusts the machine learning control 585 after receiving a predetermined number of feedback indications (e.g., after receiving 100 feedback indications). In other embodiments, the server electronic processor 425 adjusts the machine learning control 585 after a predetermined period of time has passed (e.g., every two months). In other embodiments, the server electronic processor 425 continuously (e.g., after each feedback indication is received) adjusts the machine learning control 585. Adjusting the machine learning control 585 can include, for example, retraining the machine learning controller 540 using the additional feedback as a new training data set or adjusting certain parameters of the machine learning controller 540 (e.g., weights, support vectors, etc.). Because the machine learning controller 540 has already been trained for a specific task, less computing resources (e.g., time, memory, computing power, etc.) are required to retrain the machine learning controller 540 using a smaller new data set than the original training of the machine learning controller 540.

[0132] In some embodiments, the machine learning control 585 includes a reinforcement learning control that allows the machine learning control 585 to continuously integrate feedback received by the user to optimize the performance of the machine learning control 585. In some embodiments, the reinforcement learning control periodically evaluates the reward function based on the performance of the machine learning control 585. In such an embodiment, training the machine learning control 585 includes increasing the operating time of the power tool 500 so that the reinforcement learning control 585 receives sufficient feedback to optimize the execution of the machine learning control 585. In some embodiments, when reinforcement learning is implemented by the machine learning control 585, a first stage of operation (e.g., training) is performed during or before manufacturing so that when the user operates the power tool 500, the machine learning control 585 can achieve a predetermined minimum performance (e.g., accuracy). Once the user operates his / her power tool 500, the machine learning control 585 can continue to learn and evaluate the reward function to further improve its performance. Therefore, the power tool can be initially provided with a stable and predictable algorithm that can adapt to changes over time. In some embodiments, reinforcement learning is limited to some parts of the machine learning control 585. For example, in some embodiments, instead of potentially updating the weights / biases of a substantial portion or all of the machine learning control 585 (which can take up a lot of processing power and storage), the actual model is kept frozen or mostly frozen (e.g., all but the last one or more layers or outputs), and only one or a few output parameters or output characteristics of the machine learning control 585 (e.g., a final scaling or threshold) are updated based on the feedback.

[0133] In some embodiments, the machine learning controller 540 interprets the user's operation of the power tool 500 as feedback about the performance of the machine learning controller 540. For example, if the user presses the trigger harder during the execution of a particular mode, the machine learning controller 540 may determine that the motor speed selected by the machine learning controller 540 is not high enough, and may directly increase the motor speed, use the received feedback to retrain or modify the machine learning controller, or a combination thereof. Thus, the operation of the power tool 500 may change between two identical consecutive pulls of the trigger 510 of the power tool 500. In some embodiments, the amount of change is based on user feedback, a learning rate, or both. For example, Table 4 below indicates certain user controls of the power tool 500, and how the machine learning controller 540 interprets various types of controls as feedback about the machine learning controller 540. This type of feedback can allow the machine learning controller 540 to determine appropriate motor control thresholds and parameters, for example, when the machine learning controller 540 lacks some information related to the operation of the power tool 500. For example, these feedback mechanisms enable the machine learning controller 540 to change the operating mode to tighten a self-drilling screw of unknown length.

[0134]

[0135] In some embodiments, for example, at step 625, the server 110, 210, 310, 410 receives tool usage data from a variety of different power tools. Thus, when the server electronic processor 425 adjusts the machine learning control 585 based on user feedback (step 630), the server electronic processor 425 may adjust the machine learning control 585 based on feedback from different users. In embodiments where the machine learning controller 540 is fully implemented on the power tool 500 (e.g., such as described above with respect to FIG. 4A to FIG. 4B In some embodiments, the electronic processor 550 may use only feedback indications from the power tool 405 to adjust the machine learning controller 420 of the same power tool 405. In other words, some power tools 500 may use only feedback information from a particular user to adjust the machine learning control 585. Using feedback information from a particular user can help customize the operation of the power tool 500 for the user of that particular tool.

[0136] After the server electronic processor 425 adjusts the machine learning controller 540 based on the user feedback, the power tool 500 operates according to the output and determination from the adjusted machine learning controller 540 (step 635). Figure 3In the power tool system 300 of the embodiment of the present invention, the server 310 sends the adjusted machine learning control 585 to the power tool 500. The power tool 500 then stores the adjusted machine learning control 585 in the memory 580 of the machine learning controller 540 (or in the memory 560 of the power tool 500) and operates the motor 505 according to the adjusted machine learning controller 540. The adjusted machine learning controller 540 improves its performance by using a larger and more diverse data set for training the machine learning controller 540 (e.g., by receiving feedback indications from different users).

[0137] In some embodiments, the user may also select a learning rate for the machine learning controller 540. Adjusting the learning rate of the machine learning controller 540 may affect the speed at which the machine learning controller 540 adjusts based on received user feedback. For example, when the learning rate is high, even a small amount of feedback indications from a user (or multiple users) may affect the performance of the machine learning controller 540. On the other hand, when the learning rate is low, more feedback indications from the user are used to create the same change in the performance of the machine learning controller 540. Using too high a learning rate may cause the machine learning controller 540 to change unnecessarily due to abnormal operation of the power tool 500. On the other hand, using too low a learning rate may cause the machine learning controller 540 to remain unchanged until a large amount of feedback indications requesting similar changes are received. In some embodiments, the power tool 500 includes a dedicated actuator to adjust the learning rate of the machine learning controller 540. In another embodiment, an activation switch 545 for enabling or disabling the machine learning controller 540 may also be used to adjust the learning rate of the machine learning controller 540. For example, the activation switch 545 may include a rotary dial. When the rotary dial is at a first end, the machine learning controller 540 may be disabled, and when the rotary dial moves toward a second end opposite the first end, the machine learning controller 540 is enabled and the learning rate increases. When the rotary dial reaches the second end, the learning rate may be at a maximum learning rate. In other embodiments, an external device 107 (e.g., a smart phone, a tablet computer, a laptop computer, an ASIC, etc.) may be communicatively coupled to the power tool 500 and provide a user interface to, for example, select a learning rate. In some embodiments, the selection of a learning rate may include a selection of a low, medium, or high learning rate. In other embodiments, more or fewer options may be used to set the learning rate, and the ability to turn off learning (i.e., setting the learning rate to zero) may be included.

[0138] As described above, when the machine learning controller 540 implements a recurrent neural network, the learning rate (or sometimes referred to as a "switching rate") affects how the previous input or training example affects the output of the current input or training example. For example, when the switching rate is high, the previous input has less influence on the output associated with the current input. That is, when the switching rate is high, each input is more regarded as an independent input. On the other hand, when the switching rate is low, the output of the previous input has a higher correlation with the output of the current input. That is, the output of the current input is highly dependent on the output determined for the previous input. In some embodiments, the user can select the switching rate in relation to the learning rate (e.g., using the same actuator). However, in other embodiments, an independent actuator (or graphical user interface element) is generated to change the switching rate independently of the learning rate. The method or component for setting the switching rate is similar to the method or component for setting the learning rate described above.

[0139] Figure 6 The description focuses on the server electronic processor 425 training, storing and adjusting the machine learning control 585. However, in some embodiments, the electronic processor 550 of the power tool 500 can perform the above reference Figure 6 For example, FIG. 4 shows an exemplary power tool system 400 in which a power tool 405 stores and adjusts a machine learning controller 540. Thus, in the system 400, the electronic processor 550 performs the above-referenced Figure 6 Similarly, in some embodiments, the electronic processor 575 of the machine learning controller 540 or the external device 107 performs the above-referenced Figure 6 Some or all of the steps described.

[0140] Figure 7 It is shown as in Figure 6Flowchart of method 700 of operating power tool 500 according to machine learning controller 540 referenced in step 620 of . In step 705, power tool 500 receives a trigger signal from trigger 510 indicating that power tool 500 is about to begin operation. During operation of power tool 500, electronic processor 550 receives output sensor data from sensor 530 (step 710). As described above, the output sensor data provides information about changes in the operation of power tool 500 (referred to as operating parameters), which include, for example, motor position, motor speed, spindle position, spindle speed, output torque, position of power tool 500, charge state of battery pack, date, time, timing, time since last use, mode, clutch setting, direction, battery type, presence of side handle, faults, past application and switching rate history, user input, external input, speed change, etc. (again, see Table 3). The electronic processor 550 then provides at least some of the sensor data to the machine learning controller 540 (step 715). In an embodiment in which the electronic processor 550 implements machine learning control 585, the electronic processor 550 bypasses step 715. When the power tool 500 does not store a local copy of the machine learning controller 540 (e.g., Figure 1 ), the electronic processor 550 sends some or all of the sensor information to the server 110, wherein the machine learning controller 540 analyzes the received information in real time, substantially in real time, or later, or does not analyze the received information at all.

[0141] The sensor information sent to the machine learning controller 540 varies based on, for example, the specific task of the machine learning controller 540. As described above, the task for the machine learning controller can vary based on, for example, the type of power tool 500. For example, in the case of an impact driver, the machine learning controller 540 for the power tool 500 can be configured to identify the type of application of the power tool 500, and can use specific operating thresholds for each type of application. In such an embodiment, the electronic processor 550 can send, for example, the rotation speed of the motor 505, the rotation speed of the spindle, the operating mode of the power tool, but may not send the power state of the battery pack. The machine learning controller 540 then generates an output based on the received sensor information and the specific task associated with the machine learning block 540 (step 720). For example, the machine learning program executed on the machine learning controller 540 processes (e.g., classifies according to one of the aforementioned machine learning algorithms) the received sensor information and generates an output. In the above example, the output of the machine learning controller 540 can indicate the type of application that the power tool 500 is being used for. The electronic processor 550 then operates the motor 505 based on the output from the machine learning controller 540 (step 725). For example, the electronic processor 550 can use the output from the machine learning controller 540 to determine whether to change any operating thresholds (e.g., starting speed, maximum speed, finishing speed, direction of rotation, number of impacts, etc.) to improve the operating efficiency of the power tool 500.

[0142] The electronic processor 550 then operates the motor 505 using the updated operating threshold or range. In another example, the output can indicate a condition of the tool and the electronic processor 550 controls the motor depending on the condition. For example, and as described in further detail below, the condition can indicate an output torque value of the motor, a detected obstacle, a detected abnormal accessory condition, a detected recoil, or a completed operation (e.g., a completed tightening operation). In another example, the detected impact is used to predict an ideal blow-to-blow motor profile to optimize the impact time, additional torque output, maximum torque output, or another characteristic of the impact. In turn, the motor can be controlled to stop, increase speed, or decrease speed (e.g., by braking) based on the condition, or the motor can be controlled in other ways based on the condition. Although the specific tasks of the machine learning controller 540 can change as described in more detail below, the electronic processor 550 uses the output of the machine learning controller 540 to, for example, better operate the power tool 500 and obtain higher operating efficiency.

[0143] In some embodiments, in addition to or as an alternative to the sensor data, the machine learning controller 540 receives a user characteristic of the current user of the power tool 500 in step 715, and then generates an output in step 720 based on the user characteristic or based on the user characteristic and the sensor data received in step 715. In some embodiments, in addition to or as an alternative to controlling the motor in step 725, another electronically controllable element is controlled. For example, in some embodiments, one or more LEDs of the power tool are enabled, disabled, change color, or change brightness; the gear ratio of the power tool is changed (e.g., the gear ratio is increased or decreased, or a gear ratio is selected from multiple gear ratios), the solenoid of the power tool is enabled or disabled, or the electronic filter rate is adjusted for a faulty or noisy sensor. In some embodiments, an electronically controlled clutch is engaged / disengaged or adjusted to avoid overshoot of bolts and wear of fasteners. In other embodiments, motor drive characteristics are changed, such as which windings are used and / or the use of field weakening / phase advance techniques.

[0144] In some embodiments, the server 110, 210, 310, 410 may store a selection of various machine learning controls 585, each of which is specifically trained to perform a different task. In such embodiments, the user may select which machine learning control 585 to implement with the power tool 500. For example, the external device 107 (see FIG. 15 ) may provide a graphical interface that allows the user to select the type of machine learning control 585. The user may select the machine learning control 585 based on, for example, the application in which the user often uses the power tool 500 (e.g., if the user often installs drywall) or the commonly used power tools (e.g., the user often uses an impact driver). In such embodiments, the graphical user interface receives the selection of the type of machine learning control 585. The external device 107 may then send the user's selection to the server 110, 210, 310, 410. The server 110, 210, 310, 410 may then send the corresponding machine learning control 585 to the power tool 500, or may send an updated operating threshold based on the output of the machine learning control 585 selected by the user. Thus, a user can select which functions are to be implemented by the machine learning control 585 during operation of the power tool 500, and can change the type of machine learning control 585 implemented by the server 110, 210, 310, 410, or the power tool 500.

[0145] Figure 8aYet another embodiment of providing an actuator to receive user feedback about the operation of the power tool 500 and, in particular, about the operation of the machine learning controller 540 is shown. In the illustrated embodiment, the power tool 500 includes a first actuator 785 and a second actuator 790. In some embodiments, each actuator 785, 790 can be associated with a different type of feedback. For example, activation of the first actuator 785 can indicate that the operation of the machine learning controller 540 is appropriate (e.g., positive feedback), while activation of the second actuator 790 can indicate that the operation of the machine learning controller 540 is inappropriate (e.g., negative feedback). For example, when the electronic processor 550 implements a different completion speed because the machine learning controller 540 determines that the power tool 500 is being used for a particular application, the user can indicate that the change in the completion speed is undesirable. In other embodiments, the first actuator 785 and the second actuator 790 (or an additional pair of buttons) are associated with an increase and a decrease in the learning rate of the machine learning controller 540, respectively. For example, when the user wants to increase the learning rate of the machine learning controller 540, the user can activate the first actuator 785. Figure 8a The first actuator 785 and the second actuator 790 are shown on the handle of the power tool 500. However, in other embodiments, the first actuator and the second actuator can be located on the foot of the power tool 500, below the handle or on the motor housing portion above the handle.

[0146] In another embodiment, the user can provide feedback to the electronic processor 550 by moving the power tool 500 itself. For example, the power tool 500 may include an accelerometer, a gyroscope, and / or a magnetometer (e.g., as sensors 530) that provide output signals to the electronic processor 550 indicating the position, orientation, or combination thereof of the power tool 500. In such an embodiment, as shown in FIG. Figure 8b The clockwise or counterclockwise rotation of the power tool shown in the figure can provide feedback information to the electronic processor 550. For example, rotating the power tool clockwise may correspond to a request from the electronic processor 550 to increase the speed of the motor 505, while rotating the power tool 500 counterclockwise may correspond to a request from the electronic processor 550 to decrease the speed of the motor 505. In some embodiments, the electronic processor 550 can use a similar sensor to detect a shaking motion of the power tool 500. Shaking the power tool 500 may indicate that the power tool 500 is not operating as the user expects to provide negative feedback. For example, the user may shake the power tool 500 when the machine learning controller 485 makes an incorrect determination of the application of the power tool 500 to the current task. As described above, providing such feedback allows the machine learning controller 540 to update its parameters to improve its performance.

[0147] As described above, the machine learning controller 540 is associated with one or more specific tasks. The machine learning controller 540 receives different types of information from the power tool 500 and the electronic processor 550 based on the specific tasks for which the machine learning controller 540 is configured. For example, Fig. 9 A schematic diagram 900 is shown of different types of information that may be used by the machine learning controller 540 to generate outputs, make determinations, predictions, etc. In the illustrated diagram, the machine learning controller 540 may receive, for example, the operating time of the power tool 500 (e.g., how long the power tool 500 is used in each period, the amount of time between periods of use of the power tool, etc.) 905, information about a tool head, blade, or other accessory device 910 for the power tool 500, an indication of the charge state of the battery pack 915, the amount of time the battery pack has been used, whether the battery pack has been recently replaced 920, etc. The machine learning controller 540 may also receive information about the type of battery pack 923 used with the power tool 500 (e.g., an 18V battery pack).

[0148] As discussed above, the mode plate 527 selects an operating mode of the power tool. The operating mode may specify operating parameters and thresholds during operation of the power tool 500 in the mode. For example, each operating mode may define maximum torque, minimum torque, average torque, starting speed, finishing speed, non-impact speed, impact speed, speed slope (e.g., how fast the motor 505 reaches the target speed), the target number of impacts, the direction of rotation, the speed of each direction of rotation, and combinations thereof. A combination of two or more operating parameters or thresholds defines a tool usage profile or mode. When the user selects a mode, the electronic processor 550 controls the motor 505 according to the operating parameters or thresholds specified by the selected mode, which parameters or thresholds may be stored in the memory 560. The machine learning controller 540 also receives information about the operating mode 925 of the power tool 500 (e.g., speed associated with the mode, mode torque, mode slope, etc.). The machine learning controller also receives sensor information 945 indicating operating parameters of the power tool 500 (e.g., motor current, motor voltage, trigger activation or feedback from the trigger, movement of the power tool, motor speed, output shaft speed, etc.).

[0149] As described above, the machine learning controller 540 may also receive feedback 927 from the user and an indication of a target learning rate 928. The machine learning controller 540 uses the types and combinations of the various information described above to generate various outputs based on the specific tasks associated with the machine learning controller 540. For example, in some embodiments, the machine learning controller 540 generates suggested parameters for a particular mode. The machine learning controller 540 may generate a suggested start or finish speed 930, a suggested mode torque 935, and a suggested mode slope 940. FIG. 15 illustrates an exemplary graphical user interface 1080 showing suggested torque levels and suggested trigger slopes for a particular operating mode. Additionally, the machine learning controller 540 may determine possible workpiece materials (e.g., whether the power tool 500 is used on wood or drywall) 955. In some embodiments, the machine learning controller 540 may determine the condition of a tool head or blade 960 attached to the power tool 500. In some embodiments, the machine learning controller 540 may also identify specific events, such as worn fasteners, broken blades, kickback, and the like. The power tool 500 may then generate an indication to the user that such an event or condition has been detected so that corrective action may be taken. For example, in some embodiments, when the machine learning controller 540 implements a recurrent neural network, identification of a particular event is input (e.g., sent) to the machine learning controller 540 to help identify other events and / or other aspects of the operation of the power tool 500. For example, when the machine learning controller 540 determines that a first fastener has worn, the machine learning controller 540 may then change the completion speed when securing the next fastener to prevent wearing the second fastener.

[0150] As described above, the architecture for the machine learning controller 540 can vary based on, for example, the specific tasks associated with the machine learning controller 540. In some embodiments, the machine learning controller 540 can include neural networks, support vector machines, decision trees, logistic regression, and other machine learning architectures. The machine learning controller 540 can also utilize kernel methods or ensemble methods to extend the basic structure of the machine learning controller 540. In some embodiments, the machine learning controller 540 implements reinforcement learning to update the machine learning controller 540 based on feedback indications received from the user.

[0151] Fig.10A diagram 1000 is shown for an exemplary use of a machine learning controller 540. In the illustrated embodiment, the machine learning controller 540 is configured to identify the type of fastener being worked on by the power tool 500. In such an embodiment, the machine learning controller 540 receives, for example, the number of revolutions 1005, the load torque 1010, the motor speed 1015, the torque or speed ramp slope 1020, information about whether the load increases monotonically 1025, information about whether the load increases rapidly near the end of the operation 1030, information about the tool motion (e.g., rotation of the power tool 500, output signals from an accelerometer) 1035, and a selected operating mode 1040 of the power tool 500. In one embodiment, the information (operating parameters) described above are generated by the electronic processor 550 based on sensor data from the sensor 530, arithmetic operations using the sensor data (e.g., to calculate the ramp), and comparison of the sensor data or calculated values ​​with threshold values ​​(e.g., defining whether the increase is rapid). Then, after each operation of the power tool 500 is completed (e.g., after each fastener is fully installed or removed), the machine learning controller 540 receives the generated information. Based on the received information, the machine learning controller 540 determines the type of fastener used in the operation of the power tool 500. In the illustrated embodiment, the machine learning controller 540 can utilize, for example, a neural network with multiple outputs, where each output corresponds to a different type of fastener. In some embodiments, the machine learning controller 540 can also generate an output indicating that the fastener cannot be identified.

[0152] In one example, the machine learning controller 540 can identify the fastener type of a fastener from a variety of possible fastener types. For example, the machine learning controller 540 distinguishes between self-drilling screws, sheet metal screws, drywall screws, etc. Therefore, in the illustrated embodiment, the training examples of the machine learning controller 540 include input vectors indicating the number of rotations 1005, the load torque 1010, the motor speed 1015, the torque or ramp slope 1020, an indication of whether the load increases monotonically 1025, an indication of whether the load increases rapidly near the end of the operation 1030, an indication of tool motion 1035, an indication of the selected operating mode 1040, and an output label indicating the type of fastener. In the illustrated embodiment, the machine learning controller 540 implements an artificial neural network to perform the classification. The artificial neural network includes, for example, six input nodes and, for example, one hundred output nodes. Each output node corresponds to, for example, a different type of fastener that the machine learning controller 540 can identify and an additional output that indicates the power tool 500 when the fastener does not correspond to any identifiable fastener type. The artificial neural network can include more or fewer output nodes based on the number of fasteners that can be distinguished. In some embodiments, the neural network includes an additional layer that includes a single node. The additional layer can determine which output node has the highest value (which can correspond to the probability that the fastener type is identified as the fastener type corresponding to the output node) and output (e.g., one, two, three, or four) values ​​associated with the output node. The value of the output node can correspond to the fastener type identified by the machine learning controller 540.

[0153] During training of the machine learning controller 540 to identify fastener types, the machine learning controller 540 adjusts the weights associated with each node connection of the neural network to obtain a set of weights that reliably classifies different types of fasteners. Figure 1 As discussed, each node of the neural network can have a different activation network, so adjusting the weights of the neural network may also be affected by the activation function associated with each layer or each node. Once the neural network is trained, the machine learning controller 540 receives input variables (e.g., the values ​​associated with each input variable) and applies weights and connections through each layer of the neural network. One or more outputs from the trained neural network correspond to a specific type of fastener that the machine learning controller 540 can identify.

[0154] Fig.111050 is a flow chart illustrating a method 1050 for identifying a fastener type using a machine learning controller 540. At step 1055, the electronic processor 550 receives a signal from the trigger 510 indicating that a user is operating the power tool 500. The electronic processor 550 begins operating the power tool 500 and receives sensor data from the sensor 530 (step 1060). As described above, the sensor data indicates one or more operating parameters of the power tool and may include, for example, motor speed and / or position information, torque information, impact information, tool motion information, information about a selected mode, etc. The electronic processor 550 then sends at least a subset of the sensor data to the machine learning controller 540 (step 1065). As described above with respect to Fig.13 As discussed, the machine learning controller 540 of the illustrated embodiment receives motor speed, torque, and torque slope, as well as the number of rotations performed. Some of the signals received by the machine learning controller 540 may be calculated by the electronic processor 550 rather than being received directly from the sensor 530. For example, the electronic processor 550 may determine whether the load on the power tool 500 increases monotonically or whether the load increases rapidly (e.g., forming a spike) as the operation is about to be completed. The electronic processor 550 also sends these intermediate inputs (e.g., calculated or determined by the electronic processor 550 based on the signals from the sensor 530) as sensor data to the machine learning controller 540 in step 1065. In step 1067, the machine learning controller 540 also receives an indication of the selected operating mode of the power tool 500.

[0155] The machine learning controller 540 then generates an output identifying the type of fastener being used by the power tool 500 (step 1070). Fig.13 As discussed, the machine learning controller 540 generates an output that identifies the type of fastener by using an artificial neural network. In other embodiments, the machine learning controller 540 may implement different architectures to identify the type of fastener used by the power tool 500. Specifically, the machine learning controller 540 receives values ​​of input variables and uses these values ​​to process at various layers of the neural network using node connection weights and activation functions for each node. As described above, the output layer may include one or more output nodes that indicate the type of fastener used by the power tool 500 or indicate that the machine learning controller 540 cannot identify the type of fastener.

[0156] At step 1075, a suggested change to the operating mode of the power tool is generated based on the identified fastener type. The generated suggested change is then stored by the electronic processor 550 as an operating parameter or threshold in a tool profile in the memory 560. The suggested change is generated by an electronic processor that receives the identified fastener type from the machine learning controller 540, which is, for example, an electronic processor that implements the machine learning controller 540 or another electronic processor that does not implement the machine learning controller 540, which may be the electronic processor 550, an electronic processor of the external device 107, or a server electronic processor 425, depending on the implementation. The suggested change may be generated using the identified fastener type as an input to a lookup table (stored in a memory associated with the particular electronic processor), which maps the fastener type to a suggested operating parameter for the power tool 500.

[0157] The machine learning controller 540 has different applications and can provide the power tool 500 with the ability to analyze various types of sensor data and received feedback. In general, the machine learning controller 540 can provide various levels of information and usability to the user of the power tool 500. For example, in some embodiments, the machine learning controller 540 analyzes usage data from the power tool 500 and provides analysis that helps the user make more informed decisions. Table 5 below lists a number of different embodiments or applications of the machine learning controller 540. For each application, Table 5 lists possible inputs to the machine learning controller 540 that will provide sufficient insight for the machine learning controller 540 to provide the listed possible outputs. As described above, the inputs are provided by various sources (e.g., sensors 530).

[0158]

[0159]

[0160]

[0161] In one embodiment, the machine learning controller 540 can be used to analyze the operational data of the tool 500 to identify the user currently using the tool. Because users can operate the same tool 500 in different ways or for different tasks, the machine learning controller 540 can change the operation of the power tool 500 or the training of the machine learning controller 540 based on the characteristics of the identified user (e.g., the user's industry, current geographic region, age, gender, strength, body size, or any other desired characteristics). Therefore, multiple machine learning controllers 540 in corresponding power tools 500 can provide similar experiences between power tools 500 for corresponding users. For example, referring to Figure 7, the sensor signal is input to the machine learning controller 540 (step 715). The machine learning controller can then output (step 720) the identity of the user currently using the tool based on the sensor signal, and then operate the tool based on the output (i.e., the identity of the user) (step 725). For example, based on the identity of the user currently using the tool (which may indicate a user preference or user characteristic), the maximum motor current may be reduced or the power tool may be operated with a more sensitive anti-kickback feature having a reduced trigger threshold. The specific identity of the user may be associated with one or more user preferences or characteristics in a lookup table stored locally on the power tool 500 or remotely on an external system device. In some embodiments, the identity of the user is fed back to another machine learning program of the machine learning controller 540, which is used to generate another output, wherein the operation of the motor is based on the other output.

[0162] In one embodiment, the machine learning controller 540 can be used to analyze motion data of the tool 500 executing an application during development of the tool 500, and the resulting pattern recognition information can then be included on the machine learning controller 540 that is sold so that the tool is pre-trained.

[0163] In another embodiment, direct user feedback (buttons, manual phone input, shaking / tapping the tool, override of application mode) can also be a useful input to the machine learning controller 540. The user can provide a setting for "how much to follow the machine learning controller 540's recommendation relative to the trigger" so that there is an override capability. This can be done through the application, tool input (e.g., slider, dial, button), or trigger switch 555 (multiple levels, input function, non-linear trigger, etc.).

[0164] In addition, the programming of the machine learning controller 540 can be adjusted periodically through updates (e.g., wireless updates, etc.). User inputs with "most used applications" and other defined characteristics or preferences ("I prefer to protect the blade rather than cut quickly", "I strongly prefer to minimize vibration", etc.) can all be input into the machine learning controller 540. In some embodiments, user preferences or characteristics persist between power tools or across power tools. For example, a user preference to minimize vibration can be used to train the machine learning controller 540 or operate a similar type of power tool previously used by the user. Alternatively or additionally, such user preferences or user characteristics can be used to train the machine learning controller 540 or operate a different type of power tool previously used by the user. For example, a user with a preference to minimize vibration in an impact driver can be provided with a reciprocating saw that has a pre-trained machine learning program for minimizing vibration.

[0165] Thus, as discussed above, the machine learning controller 540 can provide the power tool 500 with the ability to analyze various types of sensor data and the ability to provide feedback to a user by one or more of: implementing or suggesting changes to the operating mode of the power tool 500, altering the operation of the power tool 500, or providing analysis regarding the use of a particular power tool or power tool device (e.g., a power pack).

[0166] As described above, power tools such as power tool 105 can be used for various purposes. In one specific application, power tool users can use power tools such as impact drivers, screwdrivers, hydraulic pulse tools and impact tools to help install (seating) fasteners and bolts. Fasteners can include screws, such as deck screws, drywall / plaster screws, building screws, sheet metal screws, concrete anchors, machine screws, lag bolts, wall anchors and / or other special screws (e.g., EMT fixing screws, plastic screws, screws for assembly line products, automotive screws, screws for electronic equipment, etc.). Bolts can include lug nuts, structural and non-structural bolts, tension control bolts, etc. Bolts can be rated for specific tension and / or torque and / or rotation. In some embodiments, the power tool can act on a bolt or a corresponding nut. Unless otherwise specified, the terms fastener, screw, anchor, bolt and nut can be used interchangeably.

[0167] Traditionally, techniques for improving fastener and bolt installation include the use of torque-based mechanical or electronic clutches (such as those on electric drills and electric screwdrivers); contact sensors and clutches (such as those on screwdrivers); and different tool modes used in other tools. Tool modes can limit parameters such as output speed, motor current, or application duration, and typically use profiles and / or basic state machines to perform the desired operation. These tool modes exist on some electric drills, pulse tools, and impact tools. Tool modes can be used with a variety of sensory inputs, such as current, voltage, temperature, trigger input, motion, force, contact, and position detection (e.g., inductive sensors in impact drivers). Programming of such tool modes is typically implemented as a series of sequential tool states (e.g., basic state machines), where a power tool may need to move from an acceleration state to a maintain output state, to a state that counts a fixed number of impacts, to a stop state. Alternative states can occur in response to signals, such as when kickback is detected in the case of certain tools (e.g., electric drills).

[0168] The programming of the above generic tool modes is typically fixed, meaning that there is no use of memory that could use signals or results from previous uses and apply them to future runs to obtain an adaptive characteristic output response. The programming of traditional tool modes is typically narrow in focus (e.g., installing a specific fastener), simple in control (e.g., setting a target speed), or if the application is broader (e.g., a general 'drilling screw mode' or a general 'torque level') its performance is often inconsistent. Table 6 below shows a comparison of the features, aspects, and topics of traditional fastening and bolting tools and machine learning fastening and bolting power tools (such as those described herein).

[0169]

[0170]

[0171]

[0172]

[0173]

[0174] As described above, various sensors may be used on the power tool 105 to perform machine learning for specific purposes. Turning now to Table 7, potential sensor arrangements for implementing fastener installation using machine learning are shown.

[0175]

[0176]

[0177] Fig.12A schematic diagram 1200 of an exemplary use of a machine learning controller 540 for use with a power tool such as the power tool 500 is shown. In the illustrated embodiment, the machine learning controller 540 is configured to determine the installation level of a fastener. For example, the machine learning controller 540 determines when the fastener begins to be installed and continues to determine the installation level of the fastener until the fastener is fully installed. In such an embodiment, the machine learning controller 540 receives a plurality of operating parameters (inputs) associated with the tool 500. These operating parameters may include a number of revolutions 1202, a measured torque 1204, a characteristic speed 1206, one or more voltages 1208, one or more currents 1210, a selected operating mode 1220 of the tool 500, a fluid temperature 1214 (e.g., for a hydraulic pulse tool), and tool movement information 1216 (e.g., provided by a gyroscope, motion sensor, etc.). In one embodiment, the above information (operating parameters) is generated by the electronic processor 550 based on the following: sensor data from the sensor 530, arithmetic operations performed using the sensor data (e.g., calculating torque), and comparing the sensor data or calculated values ​​to threshold values ​​(e.g., defining whether the increase or decrease of the operating parameter is rapid). The generated information is then received by the machine learning controller 540 during the operation of the tool. Based on the received information, the machine learning controller 540 determines the installation level 1218 of the fastener and outputs it to the electronic processor 550, and the electronic processor 550 controls the output of the tool 500 accordingly. For example, the machine learning controller 540 can instruct the electronic processor 550 to slow down the rotation of the tool when the installation is close to completion, and / or stop the operation of the tool based on determining that the fastener is fully installed. In one embodiment, the machine learning controller 540 can utilize, for example, a neural network with multiple outputs, such that each output corresponds to a speed value of the tool 500. In some examples, the neural network can be relatively small, thereby allowing the electronic processor 550 to perform the functions of the machine learning controller 540 without first significantly increasing the processing power or functionality or otherwise upgrading the hardware of the processor 550.

[0178] Now turn to Fig.13, a process 1300 is provided for training and operating a power tool (e.g., power tool 500) with machine learning using static logic. In one embodiment, the machine learning is performed by a machine learning controller (e.g., the machine learning controller 540 described above). However, other machine learning controllers may also be used. In some examples, the use of static logic can reduce the computing power used to implement machine learning, such as by requiring a smaller neural network. By reducing the required computing power and / or other processing resources, the process machine learning controller 540 can be integrated into the processor 550, as described above. However, in other examples, the machine learning controller 540 can have its own processor, as described above.

[0179] In a static logic tool, the machine learning controller 540 may be programmed before the tool is provided to the user (e.g., during manufacturing) and not subsequently updated. Static logic may be used with a variety of fastening tools, such as a drill, pulse, or impact tool. In some embodiments, the tool has multiple modes, such as a self-drilling screw mode, a drywall screw mode, a deck screw mode, a concrete anchor mode, a pipe flange / coupling mode, or other fastening modes. The static logic tool may also be a drill, pulse, or impact tool capable of applying precise tightening torques, such as for bolts and lug nuts.

[0180] At process block 1302, tool data is collected. In some embodiments, tool data is collected during product development and / or manufacturing. The tool can be used in different situations to generate data. Multiple data points are used because there are many variables that may affect determining when installation occurs and to what extent installation occurs. Fig.14 As shown, the torque output of tool 500 may exhibit sudden changes due to uncontrollable factors. For example, peaks 1402 and 1404 show torque peaks due to changes in hardness or type of work material (e.g., concrete to wood, drywall to wood, etc.). Torque peak 1406 may be the result of an abnormality in the work material, such as a knot in the wood. Therefore, machine learning controller 540 uses multiple data points through multiple inputs to effectively generate an appropriate algorithm.

[0181] In some embodiments, approximately 2,000 fasteners are installed to collect tool data. However, in some embodiments, more than 2,000 fasteners or less than 2,000 fasteners may be installed to collect tool data (e.g., between 1,000 and 3,000 fasteners, or at least 1,000 fasteners). For each installation, various data are collected, such as fastener type, length, diameter; material type and thickness; number and sequence of material layers; user experience, size and age; battery type, charge level and age; sensory data generated by tool sensors (e.g., current, voltage, acceleration, temperature, motor speed, motor rotational acceleration, torque); sensory data generated by external sensors (e.g., torque, tool acceleration); an indication of the level of fastener installation, and an indication of successful installation completion. During many of the fastener installation operations used to generate data, different users may operate the tool because, for example, different users have different ways of holding and operating the tool, which may result in different forces, speeds, etc. being used to install the screw. During data collection, the power source type may be changed and evaluated. For example, where the tool is a battery-powered tool, various batteries, such as 1.5Ah, 2Ah, 3Ah, 5Ah, 6Ah, 9Ah, and / or 12Ah batteries, may be used during the collection of tool data (e.g., during fastener installation). In addition, batteries with various states of charge may be used. Various material combinations may also be used during the collection of tool data. For example, a combination of different materials (e.g., concrete, wood, plastic, plaster, drywall, metal, etc.) may be combined into multiple layers, and then fasteners may be driven and secured in the combined materials. In one embodiment, the combination is a two-layer combination. However, other values ​​of layered combinations are possible. In addition, tool data may be collected using multiple different types of fasteners. Even if the tool is programmed to install one type of fastener, such as a deck screw, tool data may be collected using multiple deck screws of different lengths. In addition, a model previously trained on one application (even an unknown or unlabeled application) may be used to help train another application (e.g., drywall screw data or other unlabeled field data may be relevant to a model for deck screws).

[0182] Figure 15a to Figure 1 5 shows examples of time-based and parameter-based (eg, installation depth) data. Figure 15a to Figure 15b Multiple data inputs are shown over time during the installation process. In one embodiment, the inputs include motion data (eg, via one or more gyroscopes), current values, rotation values ​​(eg, via Hall conversion), tool speed, voltage, and estimated fastener depth. Figure 15c to Figure 15dThe same data points are shown, but at the depth of the fastener. In some embodiments, one or both of time-based data and parameter-based data are collected for use in establishing and training machine learning controls.

[0183] In some embodiments, motion tracking using motion sensors is used in applications with multiple bolts (e.g., lug nuts, pipe flanges, and couplings). Motion tracking can understand whether the user hits all multiple bolts and which bolt is impacted. This tracking can be reliably done by motion integration between impact runs. In some embodiments, the model can take advantage of knowing which fastener is being tightened and which operation is being performed (e.g., first operation, second operation, or third operation). This information can be provided to the machine learning controller 540 to improve torque control.

[0184] Figure 15e to Figure 15f The time-based output of a hammer signal (such as used in an impact tool) is shown. Fig.15e , data graph 1550 shows the axial hammer position derived from a simulated sensor for impact as it installs a fastener. The simulated signal contains a wealth of information that can be used to install the fastener, which can be provided as an input to a machine learning controller, such as machine learning controller 540. As shown in data graph 1550, the axial position gradually increases until the trip torque is reached, at which point impact begins. Fig.15f An analog signal 1552 representing the axial position of the hammer during a single impact is shown. The curves before, during, and after the impact, especially when used in conjunction with other sensors, may contain information about each impact event. Because the torque curve of a screw varies greatly, relying solely on counting the number of impacts is generally not a good indicator of the installation of the detected screw. Bolt torque has a higher correlation with the number of impacts, but it is still limited. Instead, the analog signal (and combination with other sensors) can help derive a number of "features" to provide useful input to a machine learning controller to more reliably determine the installation of the screw. These features can include, but are not limited to, the interval between impacts, the speed before and after impact, the angular increase of the anvil output, and the coefficient of rebound. In addition, the hammer signal during impact can be transformed and / or combined with the signal when not impacting. An example of a major transformation and combination is to estimate the relationship between the fastener torque and angle throughout the operation. The information about the relationship between this torque and angle can then be used as input to the machine learning algorithm. Although Figure 15e to Figure 15f Axial hammer position is shown, and in some embodiments, similar or different sensors are used to estimate the angular and axial translation of both the anvil and hammer during impact.

[0185] Figure 15gA data graph 1554 showing time-based torque measurements from a hydraulic pulse tool is provided. In one example, the torque value is determined using a load sensor within the hydraulic pulse tool. In some embodiments, the torque measurement can provide the machine learning controller 540 with better data to determine the fastener installation condition. For example, the characteristic torque (e.g., the continuous load experienced by each pulse) can be directly input into a recurrent neural network (RNN). In other examples, the characteristic torque can be input or buffered into a DNN or CNN. The machine learning controller 540 can then use the characteristic torque to assess the installation condition. In one embodiment, the machine learning algorithm helps estimate the continuous load of the tool along with other sensor data, especially as the joint becomes stiffer and the continuous load becomes more difficult to determine.

[0186] After the tool data is collected, a machine learning control (e.g., the machine learning control 585 described above) associated with the machine learning controller 540 is built and trained at process block 1304. In one embodiment, the server electronic processor 425 builds and trains the machine learning control, as described above. Building and training the machine learning control 585 may include, for example, determining a machine learning architecture (e.g., using a support vector machine, a decision tree, a neural network, or a different architecture). In the case of building and training a neural network, for example, building the neural network may also include determining the number of input nodes, the number of hidden layers, the activation function for each node, the number of nodes per hidden layer, the number of output nodes, etc. In addition, building the neural network may involve feature engineering, whereby ideal inputs and potential filters, combinations, or calculations are selected. In addition, the neural network output may be provided to one or more output filters on the neural network so that noisy sensor data estimates cross a threshold prematurely. In some embodiments, machine learning is used to optimize the parameters of the output filters. Training the machine learning control 585 includes providing training examples (e.g., those described above) to the machine learning control 585 and using one or more algorithms to set various weights, margins, or other parameters of the machine learning control to make reliable estimates or classifications.

[0187] In some embodiments, building and training the machine learning control 585 includes building and training a recursive neural network. A recurrent neural network (RNN) allows a sequence of inputs to be analyzed instead of processing each input individually. That is, a recurrent neural network can determine or output based not only on information about that particular input, but also on previous inputs. RNNs can operate in different ways. In the first example, each tool operation or "run" can be considered independent, with no previous memory of the last run. However, the RNN may aggregate and use some or all of the time series data during the run. Therefore, a version of the RNN can provide a more robust output than a DNN that processes filtered, processed, buffered, or raw data. RNNs are convenient because they process data in multiple steps and, at least in some embodiments, do not require storage to store all of the previous run time series data. This processing is particularly useful because the duration of the run may vary and may be long. In addition, in addition to determining when to stop the tool operation, the RNN can also effectively provide multiple outputs that control the output speed.

[0188] In a second example, the RNN can also save at least part of its state from one run and use it in a subsequent run. For example, when the machine learning control 585 is configured to identify the installation of a fastener, the machine learning control 585 can determine that because the first three operations installed the fastener to a first depth, the fourth operation is also likely to install the fastener to the first depth. By providing and considering the circumstances of a particular operation, the use of the RNN helps to compensate for some misclassifications that the machine learning control 585 may make. Other use cases include identifying various aspects of the fastening application, such as the type of screw or bolt, user hand stiffness characteristics, runout characteristics of the tool, battery status, grease characteristics, bolt coating, workpiece stiffness, use of adapters, accessory conditions, etc. This information can be fed back into the next run or series of runs.

[0189] In a third example, another use of RNNs is to use a generally non-recurrent neural network, such as a DNN or CNN, where there is some subset of outputs from previous runs that are fed into a machine learning algorithm as a set of inputs. One example is a DNN that identifies the use of a particular screw type by updating a matrix of possible use cases. This matrix of possible use cases is then fed into the machine learning algorithm as one of the inputs. In the above example where some information is passed from one run to the next, this may be filtered, hidden, aggregated, or reset depending on the time between use cases, mode switching, battery switching, sensor data indicating tool movement or accessory changes, etc. A more complex recurrent algorithm can be used where a previously detected drilling state suggests setting a pilot hole for a subsequent particular screw type. In one example, this complex algorithm is another RNN. In other examples, the algorithm is a variation of a Markov chain that can manage the inputs to the machine learning control 585.

[0190] As described above, the machine learning control 585 is trained to perform specific tasks, such as accurately installing fasteners into work materials. In addition, the machine learning control 585 is trained to detect and account for adverse conditions, such as material changes, tangles, kickbacks, etc., when determining how to properly install fasteners. The tasks that the machine learning control 585 is trained for can vary based on, for example, the type of power tool 500 (e.g., drill / driver, pulse, impact, etc.), selections from the user, user profile information, etc.

[0191] After the machine learning control 585 has been built and trained, the machine learning control is saved at process block 1306. In some embodiments, the machine learning control 585 is saved in the memory 430 of the server 110. The machine learning control 585 can also be stored in the memory 580 of the machine learning controller 540. In some embodiments, for example, when the machine learning control 585 is implemented by the electronic processor 550 of the power tool 500, the power tool 500 stores the machine learning control 585 in the memory 560 of the electronic control assembly 536.

[0192] Once the machine learning control 585 is stored, at process block 1308 , the power tool 500 operates the motor 505 according to (or based on) the output and determination from the machine learning controller 540 . Fig.17Process 1700 (described further below) illustrates an example of operating the motor 505 based on the machine learning controller 540, which can be used to implement process block 1308. In embodiments where the machine learning controller 540 (including the machine learning controller 585) is implemented in a server 110, 210, the server 110, 210 can determine the operating threshold based on the output and determination from the machine learning controller 540. The server 110, 210 then transmits the determined operating threshold to the power tool 500 to control the motor 505.

[0193] As described above, the performance of the machine learning controller 540 depends on the amount and quality of data used to train the machine learning controller 540. Therefore, if insufficient data is used to train the machine learning controller 540 (e.g., by the server 110, 210, 310, 410), the performance of the machine learning controller 540 may be reduced. Alternatively, different users may have different preferences and may operate the power tool 500 differently than other users (e.g., some users may press the power tool 500 onto the work material with greater force, some users may expect a faster completion speed, etc.). From the user's perspective, these differences in the use of the power tool 500 may also impair some of the performance of the machine learning controller 540.

[0194] Now turn to Fig.16 , a process 1600 for training and operating a power tool (e.g., power tool 500) with machine learning using adaptive logic. The use of adaptive logic allows certain logic to be static, but also allows parameters to change from one run to the next. These changes can allow the tool to update the likelihood of a given fastener type or characteristic (e.g., material hardness) between operations. The adaptive logic provides the ability to predict fastener installation (and typically slow down) even before the fastener head engages and generates a detectable signal. Adaptive aspects can include thresholds for machine learning algorithms (e.g., those described herein), configuration parameters (e.g., ideal ramp-up, maximum speed, etc.), expected rotation, etc. In one embodiment, the adaptive logic uses an RNN, as described above. In one example, the adaptive logic is used to highlight information from one run to the next that is processed in a manner that does not use machine learning (but actually still acts as a neural network, such as an RNN). An example is a conditional statement: if the tool has not been used for 10 minutes, the historical information of the previous run will be reset to a default value. Adaptive aspects can have a substantial impact on the output performance of a tool with machine learning control 585 without the need for potentially computationally intensive training of the entire machine learning logic.

[0195] Process 1600 includes the same process blocks 1302-1308 as described above. Therefore, for the sake of brevity, blocks 1302-1308 will not be described again. At process block 1310, user feedback is received. In one embodiment, the server electronic processor 425 receives feedback from the power tool 500 (and / or the external device 107) regarding the performance of the machine learning controller 540. Therefore, in at least some embodiments, the feedback is about the control of the motor from the earlier block 1308. However, in other embodiments, the power tool 500 does not receive user feedback about the performance of the machine learning controller 540, but continues to operate the power tool 500 by executing the machine learning control 585. As described above, in some embodiments, the power tool 500 includes a specific feedback mechanism for providing feedback about the performance of the machine learning controller 540. In some embodiments, the external device 107 can also provide a graphical user interface for receiving feedback from the user regarding the operation of the machine learning controller 540. The external device 107 then transmits the feedback indication to the server electronic processor 425. In other embodiments, the power tool 500 may only provide negative feedback to the server 110, 210, 310, 410 (e.g., when the machine learning controller 540 performs poorly).

[0196] In other embodiments, the server 110, 210, 310, 410 may consider the lack of feedback from the power tool 500 (or external device 107) to be positive feedback indicating adequate performance of the machine learning controller 540. In some embodiments, the power tool 500 receives positive feedback and provides positive feedback to the server electronic processor 425. In some embodiments, in addition to user feedback (e.g., directly input to the power tool 500) or as an alternative to user feedback (e.g., directly input to the power tool 500), the power tool 500 senses one or more power tool characteristics via one or more sensors 530, and the feedback is based on the sensed power tool characteristics. For example, in a pulse tool embodiment of the power tool 500, the pulse tool includes a torque sensor to sense the output torque during fastener operation, and the sensed output torque is provided as feedback. The sensed output torque can be evaluated locally on the power tool 500 or on the external device 107 or server electronic processor 425 to determine whether the feedback is positive or negative (e.g., the feedback may be positive when the sensed output torque is within the acceptable torque range; it may be negative when it is outside the acceptable torque range). As described above, in some embodiments, the power tool 500 can send feedback or other information directly to the server 110, 210, 310, 410, while in other embodiments, the external device 107 can be used as a communication bridge between the power tool 500 and the server 110, 210, 310, 410, and feedback can be sent to the server 110, 210, 310, 410. In addition, randomization can be used to test whether alternative logic of the machine learning control 585 is more appropriate.

[0197] Then, at process block 1312, the machine learning control 585 is adjusted based on the user feedback. In one embodiment, the server electronic processor adjusts the machine learning control. For example, the server electronic processor 425 adjusts the machine learning control after receiving a predetermined number of feedback indications (e.g., after receiving 50 or 100 feedback indications). In other embodiments, the server electronic processor 425 adjusts the machine learning control 585 after a predetermined time period has passed (e.g., every two weeks or every two months). In still other embodiments, the server electronic processor 425 continuously (e.g., after each feedback indication is received) adjusts the machine learning control 585. Adjusting the machine learning control 585 can include, for example, retraining the machine learning controller 540 using the additional feedback as a new training data set or adjusting certain parameters of the machine learning controller 540 (e.g., weights, support vectors, etc.). Because the machine learning controller 540 has already been trained for a specific task, less computing resources (e.g., time, memory, computing power, etc.) are required to retrain the machine learning controller 540 using a smaller new data set than the original training of the machine learning controller 540.

[0198] In some embodiments, the machine learning control 585 includes a reinforcement learning control that allows the machine learning control 585 to continuously integrate feedback received by the user to optimize the performance of the machine learning control 585. In some embodiments, the reinforcement learning control periodically evaluates the reward function based on the performance of the machine learning control 585. In such an embodiment, training the machine learning control 585 includes increasing the operating time of the power tool 500 so that the reinforcement learning control 585 receives sufficient feedback to optimize the execution of the machine learning control 585. In some embodiments, when reinforcement learning is implemented by the machine learning control 585, a first stage of operation (e.g., training) is performed during or before manufacturing so that when the user operates the power tool 500, the machine learning control 585 can achieve a predetermined minimum performance (e.g., accuracy). Once the user operates his / her power tool 500, the machine learning control 585 can continue to learn and evaluate the reward function to further improve its performance. Therefore, the power tool can be initially provided with a stable and predictable algorithm that can adapt to changes over time. In some embodiments, reinforcement learning is limited to some parts of the machine learning control 585. For example, in some embodiments, instead of potentially updating the weights / biases of a substantial portion or all of the machine-learned control 585 (which can take up a lot of processing power and storage), the actual model is kept static or mostly static (e.g., all but the last one or more layers or outputs), and only one or a few output parameters or output characteristics of the machine-learned control 585 are updated based on feedback.

[0199] In some embodiments, the machine learning controller 540 interprets the user's operation of the power tool 500 as feedback regarding the performance of the machine learning controller 540. For example, if the user presses the trigger harder during execution of a particular mode, the machine learning controller 540 may determine that the motor speed selected by the machine learning controller 540 is not high enough, and may directly increase the motor speed, use the received feedback to retrain or modify the machine learning controller, or a combination thereof. Thus, the operation of the power tool 500 may vary between two identical consecutive pulls of the trigger 510 of the power tool 500. In some embodiments, the amount of variation is based on user feedback, a learning rate, randomization, or a combination thereof.

[0200] After the machine learning controller is adjusted, at process block 1314, the motor operates based on the updated output from the machine controller 540. In one embodiment, the server electronic processor 425 adjusts the machine learning controller 540 based on user feedback, and the power tool 500 operates according to the output and determination from the adjusted machine learning controller 540. In some embodiments, for example Figure 3 The server 310 transmits the adjusted machine learning control 585 to the power tool 500. The power tool 500 then stores the adjusted machine learning control 585 in the memory 580 of the machine learning controller 540 (or in the memory 560 of the power tool 500) and operates the motor 505 according to the adjusted machine learning controller 540 (block 1314). Similar to process block 1308, Fig.17 Process 1700 (described further below) shows an example of operating the motor 505 based on the machine learning controller 540 (adjusted based on user feedback), as adjusted based on user feedback, which can be used to implement process block 1314. The adjusted machine learning controller 540 improves its performance by using a larger and more diverse data set for training the machine learning controller 540 (e.g., by receiving feedback indications from different users).

[0201] Now turn to Fig.17, a process 1700 for installing a fastener according to some embodiments is shown. Process 1700 can be performed by a power tool, such as the power tool 500 described above. However, other power tools described herein can also be used to perform process 1700. In addition, the fastener to be driven can be any of the fasteners described above, such as deck screws, wood screws, lag bolts, drywall screws, machine screws, nuts on bolts, or any other applicable fasteners. At process box 1702, the tool begins operation. For example, a user can begin driving a fastener into a work material. Once the operation begins, at process box 1704, the electronic processor 550 receives output sensor data from one or more sensors. As described above, the sensor data can provide a plurality of operating parameters related to the operation of the power tool 500. Example operating parameters can include motor position, motor speed, spindle position, spindle speed, output torque, position of the power tool 500, battery pack charge state, date, time, time since last use, mode, clutch setting, direction, battery type, presence of side handles or other accessories, faults, past applications, switching rates, user inputs, external inputs, speed changes, etc. (See Table 3 above).

[0202] Then, at process block 1706, the electronic processor 550 provides at least some of the sensor data to the machine learning controller 540. In embodiments where the electronic processor 550 implements the machine learning controller 585, the electronic processor 550 bypasses step 1706. In embodiments where the power tool 500 does not store a local copy of the machine learning controller 540, for example, Figure 1 In the power tool system 100, the electronic processor 550 sends some or all of the sensor information to the server 110, wherein the machine learning controller 540 analyzes the received information in real time, substantially in real time, or later, or does not analyze the received information at all.

[0203] The sensor information sent to the machine learning controller 540 varies based on, for example, the specific task of the machine learning controller 540. As described above, the task for the machine learning controller can vary based on, for example, the type of power tool 500. For example, in the case of an impact driver, the machine learning controller 540 for the power tool 500 can be configured to identify the type of application of the power tool 500, and specific operating thresholds can be used for each type of application. In such an embodiment, the electronic processor 550 can send, for example, the rotational speed of the motor 505, the rotational speed of the spindle, the operating mode of the power tool, but may not send the charge state of the battery pack. In other examples, in the case of an electric drill / driver, the electronic processor 550 can transmit, for example, the rotational speed of the motor 505, the rotational speed of the spindle, the motor current, the reaction force (e.g., via a gyroscope sensor), etc. In other examples, in the case of a pulse tool, the electronic processor 550 can transmit, for example, the temperature of the hydraulic fluid, the speed of the spindle, the speed of the motor 505, the output torque, and the reaction force. However, it should be noted that the tools described herein are not limited to the types of signals described herein for each use, and any number of signals can be used.

[0204] At process block 1708, the machine learning controller 540 applies one or more machine learning algorithms to determine whether the fastener has been installed. For example, the machine learning controller 540 may apply one or more of the machine learning algorithms described above, particularly those shown in Table 2. For example, a machine learning program executed on the machine learning controller 540 processes (e.g., classifies according to one of the aforementioned machine learning algorithms) the received sensor information and generates an output. In the above example, the output of the machine learning controller 540 may indicate the installation status of the fastener (e.g., not installed, partially installed, fully installed, etc.).

[0205] At process block 1710, the machine learning controller 540 determines whether installation of a fastener has been detected. As described above, various machine learning algorithms may be used to determine whether installation has begun. For example, the machine learning controller 540 may utilize a classifier or regressor function on the time series data and / or its filters to determine installation conditions using a tool such as a drill, a pulse tool, or an impact tool. In some embodiments, for example, when the machine learning controller 540 is determining whether a nut is installed on an associated bolt using an impact tool, the machine learning controller 540 may use various machine learning algorithms to estimate the rotation of the anvil to determine when the fastener is installed. In embodiments where the power tool 500 is a pulse tool, the machine learning controller 540 may use various machine learning algorithms to interpret torque sensor readings to predict actual fastener torque. Although the above process describes detecting installation of a fastener, it is contemplated that the machine learning controller 540 may also detect conditions such as: the likelihood that the fastener has reached a target depth; the likelihood of an anomaly occurring (e.g., fastener wear, material splitting, fastener damage, loss of engagement with the tool head, etc.); the likelihood that the tool may install a fastener at a particular depth or depth feature (by braking or sliding).

[0206] Based on the determination by the machine learning controller 540 that installation has not yet begun, the process 1700 returns to process block 1704. In response to the machine learning controller 540 determining that installation of the fastener has been detected, at process block 1712, the machine learning controller 540 modifies the operation of the tool 500 via the electronic processor 550. The electronic processor 550 then operates the motor 505 based on the output from the machine learning controller 540. In some embodiments, the electronic processor 550 can slow the rotation of the tool 500 when installation is detected. In other examples, the torque can be reduced by the electronic processor 550 (e.g., by changing a clutch value, reducing the speed or current of the motor, etc.). In further embodiments, the electronic controller 550 can cause the tool 500 to generate pulses based on the installation level determined by the machine learning controller (e.g., by repeatedly reversing or interrupting the current to the motor 505). In some embodiments, the machine learning controller 540 can determine that the fastener has been fully installed and stop the operation of the tool 500.

[0207] In some embodiments, at block 1710, in addition to or as an alternative to a binary determination of whether installation has been detected, the machine learning controller 540 determines an installation level, such as between a range of values. For example, the range of values ​​may be 0-10, where 0 indicates that the fastener has not been installed, 1 indicates that installation of the fastener has just begun (e.g., 10% installed), and so on, with 10 indicating that the installation is complete. Then, at block 1712, a modified operation may correspond to the determined installation level. For example, the modified operation of block 1712 may be to reduce the motor speed in proportion to the installation level until the fastener is indicated as fully installed, at which point the electronic processor 550 stops driving the motor. Thus, in some embodiments, after reducing the motor speed at process block 1712, the electronic processor 550 returns to process block 1704 to receive further signals, thereby performing the modified operation process block 1712 multiple times during a single fastener operation. This example results in process blocks 1704-1712 being executed in a loop to gradually slow down the motor 505 until the fastener is fully installed, at which point the electronic processor 550 stops driving the motor 505. In further embodiments, the gradual reduction in speed is also based on a confidence level associated with the determined installation level. In other words, the more confident the machine learning controller 540 is in its determination of the installation level, the greater the reduction in speed of the motor 505 and / or the more aggressively the motor 505 is slowed down and ultimately stopped.

[0208] In one example, the machine learning controller 540 can act as an electronic clutch ("e-clutch"). For example, the machine learning controller 540 can act as an e-clutch where the installation conditions can be primarily torque values ​​or some other installation curve. The input settings to the e-clutch can provide a target range for expected torque, give a target range for final depth, or provide additional sensitivity. When the confidence of a particular machine learning algorithm is low, the additional sensitivity can be used to provide an indication of how conservative the machine learning controller 540 should be. In some embodiments, the machine learning controller 540 can significantly reduce the motor speed before detecting installation (e.g., approximately five turns after detecting good engagement with the workpiece) to allow more user control.

[0209] Now turn to Fig.18, describes a process 1800 for tightening a fastener using a power tool (such as the power tool 500 described above) according to some embodiments. At process block 1802, a tightening operation is initiated. This may be related to installing a fastener or tightening a bolt or other threaded fastener. In one example, the tightening process may be initiated by a user actuating a trigger or other input on a power tool (e.g., an impact driver or a hydraulic pulse tool (as described in more detail above)). At process block 1804, the electronic processor 550 receives output sensor data from one or more sensors of the power tool 500. As described in more detail above, the sensor data may provide a plurality of operating parameters related to the operation of the power tool 500. Example operating parameters may include motor position, motor speed, spindle position, spindle speed, output torque, position of the power tool 500, direction of the power tool 500, battery pack charge state, date, time, time since last use, mode, clutch setting, direction, battery type, presence of a side handle or other attachment, fault, history of past applications, switching rate, user input, external input, speed change, hydraulic pressure, impact time, impact force, etc. (See Table 3 above).

[0210] Then, at process block 1806, the electronic processor 550 provides at least some of the sensor data to the machine learning controller 540. In embodiments where the electronic processor 550 implements the machine learning control 585, the electronic processor 550 may bypass process block 1806. The sensor information transmitted to the machine learning controller 540 varies, for example, based on the specific task of the machine learning controller 540. For example, when involving a fastening operation using an impact driver or hydraulic pulse tool, the electronic processor 550 may transmit output torque, reaction force, time since last impact, force of last impact, torque before first impact, temperature of hydraulic oil, speed of spindle, speed of motor 505, output torque, etc.

[0211] Then, at process block 1808, the machine learning controller 540 applies one or more machine learning algorithms to determine whether the fastener is sufficiently tightened (e.g., tightened). For example, the machine learning controller 540 may apply one or more of the above-described machine learning algorithms, particularly those shown in Table 2. In one embodiment, the machine learning controller 540 may apply a machine learning algorithm that is configured to determine or estimate the number of impacts or forces remaining to fully tighten the fastener. In some embodiments, the fastener may be considered sufficiently tightened based on the specifications provided by the user. In other embodiments, a machine learning algorithm may be applied that determines whether the fastener may be pre-tightened, thereby changing the required starting torque and / or other parameters required to properly tighten the fastener according to the provided specifications. In another embodiment, a machine learning algorithm may be applied to assess whether the power tool 500 is maintained stable enough to perform the desired operation. For example, sensor data from an accelerometer, gyroscope, or magnetometer may be used to assess the stability of the tool during (or before) operation. In yet another embodiment, a machine learning algorithm may be applied to verify the rationality of the machine learning output. For example, a machine learning algorithm may provide a limit for multiple pulses or impacts that may be used to tighten a given fastener. In further embodiments, a machine learning algorithm may be used to estimate whether a subsequent pulse or impulse will exceed the target torque (eg, overshoot).

[0212] At process block 1810, the machine learning controller 540 determines whether the operation is complete based on the sensor data and the output of the machine learning algorithm from one or more applications. For example, the operation can be completed when the fastener is tightened with sufficient torque or when a subsequent impact or pulse will exceed the target torque. In response to determining that the operation is completed, at process block 1812, the electronic processor 550 stops the current operation of the power tool 500 (e.g., stops the motor). In some examples, the electronic processor 550 can initiate a controlled completion (e.g., continuous operation may result in an overshoot event, such as over-tightening the fastener) to complete the operation. For example, a final pulse or impact of a lower speed or force can be applied to the fastener to complete the operation.

[0213] In response to determining at process block 1810 that the operation is not completed, at process block 1814, the machine learning controller 540 determines what is required to complete the operation (e.g., operating parameters). For example, the machine learning controller 540 may determine the number of new pulses and / or impacts required, the amount of energy required, the rotation of the fastener, etc. At process block 1816, the machine learning controller 540 then modifies one or more parameters of the power tool 500 based on the determined required operating parameters. The electronic processor 550 then continues to receive sensor signals at process block 1804.

[0214] Now turn to Fig.19, shows a data graph 1900 comparing actual torque according to some embodiments to predicted torque using a known blow counting method used with an impact tool. Each data point in graph 1900 represents an actual measured torque value, while the line illustrates the predicted torque value. Turning now to Fig. 20 , according to some embodiments, a data graph 2000 is shown showing actual torque versus predicted torque using a machine learning algorithm configured to analyze hammer position information in an impact tool according to some embodiments. Fig. 20 As shown, machine learning algorithms can Fig.19 The known blow counting method shown more accurately predicts the torque on the fastener by up to 37%. Fig.19 and Fig. 20 The data of the fastener and tool type are the same. In addition, Fig.19 and Fig. 20 In the example, each data point represents a complete operation.

[0215] Now turn to Fig.21 , a graph 2100 showing actual and predicted installation operations for deck screws using a pulse tool according to some embodiments. Deck screws are often difficult fasteners to install due to variations in screws and materials (e.g., wood). While soft joints allow for longer pulse durations, where torque can be more easily determined, there is no fixed torque level that applies to deck screw installations, as torque varies with each application. To obtain Fig.21 The data shown uses a hydraulic pulse tool with an integrated load sensor. The load sensor provides data to a neural network (described above) that determines whether the deck screws were successfully installed. Fig. 22 As shown, profile 2200 shows that the deck screws are typically within less than 0.1 inches of the desired installation depth using a neural network. Thus, using a machine learning algorithm based on load data, the deck screws can be consistently installed using a hydraulic pulse tool.

[0216] Now turn to Fig.23 , shows a distribution graph 2300 illustrating errors associated with installing bolts using a hydraulic pulse tool, according to some embodiments. In experiments associated with distribution graph 2300, one or more machine learning algorithms (as described herein) were used to predict fastener torque after a bolting application was completed using a load sensor in a hydraulic pulse tool. The machine learning algorithm used regression techniques to accumulate torque estimates from one pulse to another. Fig.23 As shown, the machine learning algorithm was able to consistently predict fastener torque within a + / - 5% error range.

[0217] Now turn to Fig.24, shows a distribution graph 2400 of the distribution of distances of deck screws installed using an electric drill and associated machine learning algorithms according to some embodiments. Fig.24 As shown in Figure 2, the machine learning algorithm can install most deck screws from within 0 inches to within about 0.07 inches. This is better than similar operations using mechanical or electronic clutches (including by updating the clutch settings for different materials). Fig.24 The test run shown did not adjust any settings, which still outperformed other operations using the clutch, indicating that using a machine learning algorithm to install deck screws was successful.

[0218] Thus, the embodiments described herein provide, among other things, power tools and related systems that include a machine learning controller for controlling features or functions of the power tools or related systems. Various features and advantages of the present invention are set forth in the following claims.

Claims

1. An electric tool comprising: case; an electric motor supported by the housing; a sensor supported by the housing and configured to generate sensor data providing information regarding operation of the power tool; an electronic controller supported by the housing; the electronic controller comprising an electronic processor and a memory, the memory comprising a trained machine learning model implementing a neural network for execution by the electronic processor; the electronic controller being configured to: receiving the sensor data, processing the sensor data using the trained machine learning model, generating an output based on the sensor data using the trained machine learning model; the output is indicative of an installation value associated with a tightening operation of the power tool, wherein the installation value is indicative of an installation level of a fastener; and The electric motor is controlled based on the generated output.

2. The power tool according to claim 1, wherein the neural network is selected from at least one of the group consisting of a recurrent neural network, a deep neural network, and a convolutional neural network.

3. The power tool of claim 1 , wherein the trained machine learning model is generated on an external system device by training based on example sensor data and related outputs, and is received by the power tool from the external system device.

4. The electric tool according to claim 3, wherein: The trained machine learning model is one of a static machine learning control program and a trainable machine learning control program.

5. The electric tool according to claim 1, wherein: The electronic controller is configured to reduce the speed of the motor based on the installation value indicating that installation of the fastener has begun.

6. The electric tool according to claim 1, wherein: The electronic controller is configured to stop the motor of the power tool based on the installation value indicating that the fastener is fully installed.

7. The electric tool according to claim 1, wherein: In order to control the motor according to the generated output, the electronic controller is configured to: determining, based on the installation level, that a subsequent impact or pulse will cause a target torque for the fastener to be exceeded; and Based on the above determination, the motor is controlled to stop or start a controlled completion, wherein a final pulse or impact of a lower speed or force is applied to complete the operation.

8. The electric tool according to claim 1, wherein: In order to process the sensor data using the trained machine learning model, the electronic controller is configured to process intermediate data derived from raw sensor data output by the sensor using the trained machine learning model.

9. A method of operating a power tool to control the tightening of a fastener, the method comprising: repeatedly generating sensor data by a sensor of the power tool during operation of the power tool, thereby producing a plurality of iterations of sensor data; For each iteration of sensor data in the plurality of iterations of sensor data: receiving iterations of the sensor data by an electronic controller of the power tool, the electronic controller comprising an electronic processor and a memory, wherein the memory comprises a trained machine learning model for execution by the electronic processor; processing iterations of the sensor data using the trained machine learning model; generating an output based on iterations of the sensor data using the trained machine learning model; wherein the output indicates a tightening value associated with a tightening operation of the power tool, wherein the tightening value indicates an installation level of the fastener; as well as Operation of the power tool is modified by the electronic controller based on the output.

10. The method of claim 9, wherein for each iteration, modifying the operation of the power tool based on the output comprises: Operation of the power tool is modified proportionally based on the level of installation indicated by the tightening value.

11. The method of claim 9, wherein for each iteration, modifying the operation of the power tool based on the output comprises: The speed of the motor is reduced based on the installation level indicating that the fastener is approaching a target tightening torque.

12. The method according to claim 9, wherein: The trained machine learning model is generated on an external system device based on example sensor data and related outputs, and is received by the power tool from the external system device.

13. The method according to claim 9, wherein: The trained machine learning model is one of a static machine learning control program and a trained machine learning control program.

14. The method of claim 9, further comprising stopping the motor based on the tightening value indicating that the fastener is tightened to a target tightening torque.

15. The method of claim 9, wherein the sensor data indicates operating parameters of the power tool, the operating parameters comprising one or more of: number of rotations, measured torque, characteristic speed, voltage of the power tool, current of the power tool, power of the power tool, selected operating mode, fluid temperature, and tool movement information.

16. The method of claim 9, wherein for each iteration, processing the iteration of the sensor data using the trained machine learning model includes processing intermediate data derived from raw sensor data output by the sensor.

17. An electric tool comprising: case; an electric motor supported by the housing; a sensor supported by the housing and configured to generate sensor data; An electronic controller comprising an electronic processor and a memory, the memory comprising a trained machine learning model for execution by the electronic processor, the electronic controller being configured to: receiving the sensor data, processing the sensor data using the trained machine learning model, Using the trained machine learning model, generating an output based on the sensor data, and generating a confidence level associated with the output; the output indicating a level of installation of a fastener; as well as The speed of the electric motor is controlled based on the generated output and the confidence level associated with the generated output.

18. The electric power tool according to claim 17, wherein: The electronic controller is configured to reduce the speed of the electric motor based on the sensor data indicating that the fastener is approaching a specified torque value.

19. The electric power tool according to claim 17, wherein: To control the speed of the motor based on the generated output and the confidence level associated with the generated output, comprising: When the confidence level is a first level, reducing the speed of the motor by a first amount, and When the confidence level is a second level greater than the first level, the speed of the motor is reduced to a second amount having a magnitude greater than the first amount.

20. The power tool of claim 17, wherein the trained machine learning model comprises a neural network configured to generate a plurality of outputs corresponding to desired speeds of the motor.

21. The electric power tool according to claim 17, wherein: The trained machine learning model is generated on an external system device through training based on example sensor data and related outputs, and is received by the power tool from the external system device.

22. The electric power tool according to claim 15, wherein: The trained machine learning model is one of a static machine learning control program and a trained machine learning control program.

23. An electric tool comprising: case; an electric motor supported by the housing; a sensor supported by the housing and configured to generate sensor data indicative of information regarding operation of the power tool; an electronic controller supported by the housing; the electronic controller comprising an electronic processor and a memory, the memory comprising a trained machine learning model implementing a neural network for execution by the electronic processor; the electronic controller being configured to: receiving the sensor data, Processing the sensor data using the trained machine learning model to generate operating parameters for the power tool to complete the operation, the operating parameters including the number of strokes to complete the operation; determining whether the operation is completed; as well as The motor is controlled in response to determining that the operation has been completed.

24. The electric power tool according to claim 23, wherein: To control the motor in response to determining that the operation has been completed, the electronic controller is configured to stop the motor.

25. The electric power tool according to claim 23, wherein: To control the motor in response to determining that the operation has been completed, the electronic controller is configured to initiate a controlled completion in which a final pulse or impulse of lower speed or force is applied to complete the operation.

26. The electric power tool according to claim 23, wherein: The trained machine learning model is a k-nearest neighbor model.

27. The power tool according to claim 23, wherein: The trained machine learning model is selected from at least one of the group consisting of a recurrent neural network, a deep neural network, and a convolutional neural network.

28. The power tool according to claim 23, wherein: The trained machine learning model is generated on an external system device through training based on example sensor data and related outputs, and is received by the power tool from the external system device.

29. The power tool of claim 28, wherein the trained machine learning model is one of a static machine learning control program and a trainable machine learning control program.

30. The power tool of claim 23, wherein the information includes one or more of: number of rotations, measured torque, characteristic speed, voltage of the power tool, current of the power tool, power of the power tool, selected operating mode, fluid temperature, and tool movement information.

31. The power tool of claim 23, wherein the information includes rotational speed, voltage of the power tool, current of the power tool, and tool movement information.

32. A method of operating a power tool to control the tightening of a fastener, the method comprising: receiving, by an electronic controller of the power tool, sensor data indicating information indicative of operation of the power tool; processing the sensor data using a trained machine learning model for execution by the electronic controller to generate operating parameters for the power tool to complete the operation, the operating parameters including a number of strokes to complete the operation; determining, by the electronic controller, whether the operation is complete; and In response to determining that the operation has been completed, the electric motor of the power tool is controlled by the electronic controller.

33. The method of claim 32, wherein controlling the motor in response to determining that the operation has been completed comprises stopping the motor.

34. The method of claim 32, wherein controlling the motor in response to determining that the operation has been completed includes initiating a controlled completion in which a final pulse or impulse of lower speed or force is applied to complete the operation.

35. The method of claim 32, wherein the trained machine learning model is a k-nearest neighbor model.

36. The method of claim 32, wherein the trained machine learning model is selected from at least one of the group consisting of a recurrent neural network, a deep neural network, and a convolutional neural network.

37. The method of claim 32, further comprising: The trained machine learning model is received by the power tool from an external system device; wherein the trained machine learning model is generated on the external system device by training based on example sensor data and related outputs.

38. The method of claim 32, wherein the trained machine learning model is one of a static machine learning control program and a trainable machine learning control program.

39. The method of claim 32, wherein the information includes one or more of: number of rotations, measured torque, characteristic speed, voltage of the power tool, current of the power tool, power of the power tool, selected operating mode, fluid temperature, and tool movement information.

40. The method of claim 32, wherein the information includes rotational speed, voltage of the power tool, current of the power tool, and tool movement information.