Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
AUTOMATIC STEP BIT DETECTION
Document Type and Number:
WIPO Patent Application WO/2021/155156
Kind Code:
A1
Abstract:
Devices and methods for automatically controlling a step bit operation in a power tool. The method includes generating, by a sensor of the power tool, sensor data indicative of an operational parameter of the power tool wherein a step bit is coupled to the power tool. An electronic control assembly of the power tool receives the sensor data, where the electronic control assembly includes an electronic processor and a memory. The memory stores a machine learning control program for execution by the electronic processor. The electronic control assembly processes the sensor data using a machine learning control program of the electronic control assembly and generates, using the machine learning program, an output based on the sensor data. The output indicates step bit progress information. The electronic control assembly controls a motor supported by the housing of the power tool based on the output.

Inventors:
ABBOTT JONATHAN (US)
Application Number:
PCT/US2021/015721
Publication Date:
August 05, 2021
Filing Date:
January 29, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
MILWAUKEE ELECTRIC TOOL CORP (US)
International Classes:
G05B11/01; B25F5/00; G05B19/416; G06N20/00
Foreign References:
US20190227528A12019-07-25
EP1398119A12004-03-17
KR20150098636A2015-08-28
JP2017030088A2017-02-09
JP2019185125A2019-10-24
Attorney, Agent or Firm:
RIEDL, Jared, D. (US)
Download PDF:
Claims:
CLAIMS

We claim:

1. A method for automatically controlling a step bit operation in a power tool including a step bit, the method comprising: generating, by a sensor of the power tool, sensor data indicative of an operational parameter of the power tool; receiving, by an electronic control assembly of the power tool, the sensor data, the electronic control assembly including an electronic processor and a memory, the memory storing a machine learning control program for execution by the electronic processor; processing, by the electronic control assembly using the machine learning control program, the sensor data; generating, by the electronic control assembly using the machine learning control program, an output based on the sensor data, wherein the output indicates step bit progress information; and controlling, by the electronic control assembly, a motor of the power tool based on the output.

2. The method of claim 1, wherein controlling, by the electronic control assembly, the motor of the power tool based on the output includes one of stopping the motor or varying a speed of the motor.

3. The method of claim 1, wherein the step bit progress information indicates at least one selected from the group consisting of: a level of advancement of the step bit into a workpiece relative to an intended step, an active advancement between steps, a detected step in the advancement of the step bit into the workpiece, a count of steps advanced into the workpiece, a diameter of a hole drilled into the workpiece, a depth of the hole drilled into the workpiece by the step bit, and a confidence value for detecting a step of the step bit in the advancement of the step bit into the workpiece.

4. The method of claim 3, wherein the intended step is a next step in the advancement of the step bit into the workpiece or a further step in the advancement of the step bit into the workpiece.

5. The method of claim 3, further comprising: detecting, by the electronic control assembly using the machine learning control program, that the intended step of the step bit has been reached during drilling by counting a number of steps of the step bit in the advancement of the step bit into the workpiece.

6. The method of claim 3, wherein the intended step is based on at least one selected from the group consisting of: a setting of a clutch ring of the power tool, configuration parameters received from an external device, a setting of a user input mechanism of the power tool, and a selected step bit mode of the power tool.

7. The method of claim 3, further comprising: sending a signal to an indicator of the power tool or an external device to alert a user based on at least one selected from the group consisting of: the step bit progress information, a quality of signal received from a power tool sensor, a confidence of an algorithm, a feedback value based on a forward feed rate, a feedback value based on a determined force, and a condition of the step bit.

8. The method of claim 1, wherein the sensor data indicative of the operational parameter of the power tool includes at least one selected from the group consisting of: a current, a voltage, a trigger input, a speed, an applied torque, a loading of the motor, an acceleration, an impact detection from a position sensor, a distance from a distance sensor, and a rotational motion from a gyroscope.

9. The method of claim 1, further comprising: configuring the power tool in a specified mode based on user input, wherein the specified mode is associated with one or more of a predetermined number of steps to advance the step bit into a workpiece, a number of steps included on the step bit, a specific step bit, a material of the workpiece to be drilled into, a step counting function of the power tool, a number of additional steps to take, a specific step value, and a feature on the step bit.

10. The method of claim 1 further comprising: recognizing, by the electronic control assembly using the machine learning control program, a characteristic profile of the step bit based on the sensor data; and learning, by the electronic control assembly, over multiple uses of the power tool, at least one selected from the group consisting of: common sizes of holes drilled, common number of steps drilled, and types of step bits utilized in the multiple uses of the power tool, wherein the controlling of the motor is based on the at least one selected from the group consisting of: common sizes of holes drilled, common number of steps drilled, and types of step bits utilized in the multiple uses of the power tool.

11. A power tool for automatically controlling a step bit operation, the power tool comprising: a housing; a motor supported by the housing; a sensor configured to generate sensor data indicative of an operational parameter of the power tool; a memory; and an electronic control assembly including an electronic processor connected to the memory, wherein the memory stores a machine learning control program that when executed by the electronic processor configures the electronic control assembly to: receive the sensor data, process, using the machine learning control program, the sensor data, generate, using the machine learning control program, an output based on the sensor data that indicates step bit progress information of a step bit of the power tool, and control the motor based on the output.

12. The power tool of claim 11, wherein control the motor based on the output includes one of stopping the motor or varying a speed of the motor.

13. The power tool of claim 11, wherein the step bit progress information indicates at least one selected from the group consisting of: a level of advancement of the step bit into a workpiece relative to an intended step, a detected step in the advancement of the step bit into the workpiece, a count of steps advanced into the workpiece, a diameter of a hole drilled into the workpiece, a depth of the hole drilled into the workpiece by the step bit, and a confidence value for detecting a step of the step bit in the advancement of the step bit into the workpiece.

14. The power tool of claim 13, wherein the intended step is a next step in the advancement of the step bit into the workpiece or a further step in the advancement of the step bit into the workpiece.

15. The power tool of claim 13, wherein the electronic control assembly is further configured to: detect, using the machine learning control program, that the intended step of the step bit has been reached by counting a number of steps of the step bit in the advancement of the step bit into the workpiece.

16. The power tool of claim 13, wherein the intended step is based on at least one selected from the group consisting of: a setting of a clutch ring of the power tool, configuration parameters received from an external device, a setting of a user input mechanism of the power tool, and a selected step bit mode of the power tool.

17. The power tool of claim 13, wherein the electronic control assembly is further configured to send a signal to an indicator of the power tool or an external device to alert a user based on at least one selected from the group consisting of: the step bit progress information, an active advancement between steps, a quality of signal received from a power tool sensor, a confidence of an algorithm, a feedback value based on a determined feed rate, a feedback value based on a determined force, and a condition of the step bit.

18. The power tool of claim 11, wherein the sensor data indicative of the operational parameter of the power tool includes at least one selected from the group consisting of: a current, a voltage, a trigger input, a speed, an applied torque, a loading of the motor, an acceleration, a rotational motion from a gyroscope, a distance from a distance sensor, and an impact motion from one or more inductive impact sensors.

19. The power tool of claim 11, wherein the electronic control assembly is further configured to: configure the power tool in a specified mode based on user input, wherein the specified mode is associated with at least one selected from the group consisting of: a predetermined number of steps to advance the step bit into a workpiece, a number of steps included on the step bit, a specific step bit, a material of the workpiece to be drilled into, a set of most likely desired steps, and a step counting function of the power tool.

20. The power tool of claim 11, wherein the electronic control assembly is further configured to: recognize, using the machine learning control program, one or more of a characteristic profile of the step bit based on the sensor data or a user use of the step bit; and learning, using the machine learning control program, over multiple uses of the power tool, at least one selected from the group consisting of: common sizes of holes drilled, common number of steps drilled, and types of step bits utilized in the multiple uses of the power tool, wherein the controlling of the motor is based on the at least one selected from the group consisting of: common sizes of holes drilled, the common number of steps drilled, and the types of step bits utilized in the multiple uses.

21. A power tool for automatically controlling a step bit operation, the power tool comprising: a housing; a motor supported by the housing; a sensor configured to generate sensor data indicative of an operational parameter of the power tool; a memory; and an electronic control assembly including an electronic processor connected to the memory, wherein the memory stores a machine learning control program that when executed by the electronic processor configures the electronic control assembly to: receive the sensor data, process, using the machine learning control program, the sensor data, generate, using the machine learning control program, an output based on the sensor data that indicates step bit progress information of a step bit of the power tool, recognize, using the machine learning control program, one or more of a characteristic profile of the step bit based on the sensor data or a user use of the step bit, and control the motor based on the output.

22. The power tool of claim 21, wherein the characteristic profile includes at least one selected from the group consisting of: common sizes of holes drilled, common number of steps drilled, and types of step bits utilized in the multiple uses of the power tool.

23. The power tool of claim 22, wherein the control the motor is based on the at least one selected from the group consisting of: common sizes of holes drilled, the common number of steps drilled, and the types of step bits utilized in the multiple uses.

24. The power tool of claim 21, wherein the control the motor includes at least one selected from the group consisting of: slowing a speed of the motor, stopping the motor, reducing a torque of the motor, and pulsing the motor.

25. The power tool of claim 21, further comprising an indicator to alert the user.

26. The power tool of claim 25, wherein the indicator is a visual indicator.

27. The power tool of claim 21, wherein the electronic control assembly is further configured to detect a low clarity signal from the sensor.

28. The power tool of claim 27, wherein the electronic control assembly is further configured to reduce a speed of the motor in response to detecting the low clarity signal.

29. The power tool of claim 21, wherein the machine learning control program is at least one selected from the group consisting of: a recurrent neural network, a long short-term memory model, a gated recurrent unit model, a Markov Process, a reinforcement learning, a deep neural network, a convolution neural network, a transformer, a lambda network, a support vector machine, an anomaly detection, a logistic regression, a decision tree/forest, a stochastic gradient descent, a linear discriminant analysis, a quadratic discriminant analysis, and a nearest neighbors classification/regression.

Description:
AUTOMATIC STEP BIT DETECTION

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application claims the benefit of, and priority to, U.S. Provisional Patent Application No. 62/967,702, filed January 30, 2020, the entire content of which is hereby incorporated by reference.

FIELD

[0002] The present application relates to power tools that detect progress of advancement of a step bit into a workpiece.

SUMMARY

[0003] A method is provided for automatically controlling a step bit operation in a power tool. The method includes generating, by a sensor of the power tool, sensor data indicative of an operational parameter of the power tool wherein a step bit is coupled to the power tool. An electronic control assembly of the power tool receives the sensor data, where the electronic control assembly includes an electronic processor and a memory. The memory stores a machine learning control program for execution by the electronic processor. The electronic control assembly processes the sensor data using a machine learning control program of the electronic control assembly and generates, using the machine learning program, an output based on the sensor data. The output indicates step bit progress information. The electronic control assembly controls a motor supported by the housing of the power tool based on the output.

[0004] In some embodiments, the controlling of a motor supported by the housing of the power tool based on the output includes stopping the motor or varying the speed of the motor.

[0005] In some embodiments, the step bit progress information indicates at least one selected from the group of a level of advancement of a step bit into a workpiece relative to an intended step, an active advancement between steps, a detected step in the advancement of the step bit into the workpiece, a count of steps advanced into the workpiece, a diameter of a hole drilled into the workpiece, a depth of a hole drilled into the workpiece by the step bit, and a confidence value for detecting a step of the step bit in the advancement of the step bit into the workpiece. [0006] In some embodiments, the intended step is a next step in the advancement of the step bit into the workpiece or a further step in the advancement of the step bit into the workpiece.

[0007] In some embodiments, the intended step is detected by the electronic control assembly using the machine learning program, by counting a number of steps of the step bit in the advancement of the step bit into the workpiece.

[0008] In some embodiments, the intended step is configured in the power tool based on at least one selected from the group of a setting of a clutch ring of the power tool, configuration parameters received from an external device, setting of a user input mechanism of the power tool, and a selected step bit mode of the power tool.

[0009] In some embodiments, a signal is sent to an indicator of the power tool or an external device to alert a user based on at least one selected from the group of the step bit progress information, a quality of signal received from a power tool sensor, a confidence of an algorithm, a feedback value based on a forward feed rate, a feedback value based on a determined force, and a condition of the step bit.

[0010] In some embodiments, the sensor data indicative of an operational parameter of the power tool includes at least one of current, voltage, trigger input, speed, applied torque, loading of the motor; acceleration, distance from a distance sensor, rotational motion from a gyroscope.

[0011] In some embodiments, the power tool is configured in a specified mode based on user input, where the specified mode is associated with at least one selected from the group of a predetermined number of steps to advance a step bit into a workpiece, a number of steps included on a step bit, a specific step bit, a material of a workpiece to be drilled into, a step counting function of the power tool, a number of additional steps to take, a specific step value, and a feature on a step bit.

[0012] In some embodiments, the electronic control assembly uses the machine learning program to recognize a characteristic profile of the step bit based on the sensor data, and learns, over multiple uses of the power tool, at least one selected from the group of common sizes of holes drilled, common numbers of steps drilled, and types of step bits utilized in the multiple uses of the power tool. The controlling of the motor is based on the at least one selected from the group of common sizes of holes drilled, the common number of steps drilled, and the types of step bits utilized in the multiple uses. [0013] A power tool is provided for automatically controlling a step bit operation. The power tool includes a housing, a motor supported by the housing, and a sensor supported by the housing. The sensor is configured to generate sensor data indicative of an operational parameter of the power tool. The power tool also includes a memory and an electronic control assembly including an electronic processor that is coupled to the memory. The memory stores a machine learning control program that when executed by the electronic processor configures the electronic control assembly to: receive the sensor data, process, using the machine learning control program, the sensor data, and generate, using the machine learning control program, an output based on the sensor data. The output indicates step bit progress information of a step bit coupled to the power tool. The electronic control assembly controls the motor supported by the housing of the power tool based on the output.

[0014] In some embodiments, the controlling of the motor supported by the housing of the power tool based on the output includes stopping the motor or varying the speed of the motor.

[0015] In some embodiments, the step bit progress information indicates at least one selected from the group of: a level of advancement of a step bit into a workpiece relative to an intended step, a detected step in the advancement of the step bit into the workpiece, an active advancement between steps, a count of steps advanced into the workpiece, a diameter of a hole drilled into the workpiece, a depth of a hole drilled into the workpiece by the step bit, and a confidence value for detecting a step of the step bit in the advancement of the step bit into the workpiece.

[0016] In some embodiments, the intended step is a next step in the advancement of the step bit into the workpiece or a further step in the advancement of the step bit into the workpiece.

[0017] In some embodiments, the electronic control assembly is further configured to detect, using the machine learning program, the intended step by counting a number of steps of the step bit in the advancement of the step bit into the workpiece.

[0018] In some embodiments, the intended step is configured in the power tool based on at least one selected from the group of a setting of a clutch ring of the power tool, configuration parameters received from an external device, setting of a user input mechanism of the power tool, and a selected step bit mode of the power tool. [0019] In some embodiments, the electronic control assembly is further configured to send a signal to an indicator of the power tool or an external device to alert a user based on: at least one selected from the group of the step bit progress information, a quality of signal received from a power tool sensor, a confidence of an algorithm, a feedback value based on a determined feed rate, a feedback value based on a determined force, and a condition of the step bit.

[0020] In some embodiments, the sensor data indicative of an operational parameter of the power tool includes at least one of: current, voltage, trigger input, speed, applied torque, loading of the motor; acceleration, rotational motion from a gyroscope, a distance from a distance sensor, and impact motion from one or more inductive impact sensors.

[0021] In some embodiments, the electronic control assembly is further configured to configure the power tool in a specified mode based on user input, where the specified mode is associated with at least one selected from the group of: a predetermined number of steps to advance a step bit into a workpiece, a number of steps included on a step bit, a specific step bit, a material of a workpiece to be drilled into, a set of most likely desired steps, and a step counting function of the power tool.

[0022] In some embodiments, the electronic control assembly is further configured to: recognize, using the machine learning control program, a characteristic profile of the step bit based on the sensor data, and leam, using the machine learning control program, over multiple uses of the power tool, at least one selected from the group of common sizes of holes drilled, common number of steps drilled, and types of step bits utilized in the multiple uses of the power tool. The controlling of the motor is based on the at least one selected from the group of common sizes of holes drilled, the common number of steps drilled, and the types of step bits utilized in the multiple uses.

[0023] A power tool is provided for automatically providing a step bit operation. The power tool includes a housing, a motor supported by the housing, a sensor supported by the housing, a memory and an electronic control assembly. The sensor is configured to generate sensor data indicative of an operational parameter of the power tool. The electronic control assembly includes an electronic processor coupled to the memory, and the memory stores a machine learning control program that when executed by electronic processor configures the electronic control assembly to receive the sensor data, process the sensor data using the machine learning control program, and generate, using the machine learning control program, an output based on the sensor data, wherein the output indicates step bit progress information of a step bit coupled to the power tool. The electronic is further configured to recognize, using the machine learning control program, one or more of a characteristic profile of the step bit based on the sensor data and a user use of the step bit, and control the motor supported by the housing of the power tool based on the output.

[0024] In some embodiments, the characteristic profile includes at least one selected from the group of common sizes of holes drilled, common number of steps drilled, and types of step bits utilized in the multiple uses of the power tool.

[0025] In some embodiments, the controlling of the motor is based on the at least one selected from the group of common sizes of holes drilled, the common number of steps drilled, and the types of step bits utilized in the multiple uses.

[0026] In some embodiments, controlling the motor includes at least one selected from the group of slowing a speed of the motor, stopping the motor, reducing a torque of the motor, and pulsing the motor.

[0027] In some embodiments, the power tool further includes an indicator to alert a user.

[0028] In some embodiments, the indicator is at least one selected from the group of a visual indicator and an audible indicator.

[0029] In some embodiments, the electronic control assembly is further configured to detect a low clarity signal from the sensor.

[0030] In some embodiments, the electronic control assembly is further configured to reduce a speed of the motor in response to detecting the low clarity signal.

[0031] In some embodiments, the machine learning control program is at least one selected from the group of: : recurrent neural networks, long short-term memory models, gated recurrent unit models, Markov Processes, reinforcement learning, deep neural network, convolution neural network, transformers, lambda networks, support vector machines, anomaly detection, logistic regression, decision trees/forest, stochastic gradient descent, linear discriminant analysis, quadratic discriminant analysis, and nearest neighbors classifications/regressions.

[0032] Before any embodiments are explained in detail, it is to be understood that the application is not limited to the details of construction and the arrangement of components set forth in the following description or illustrated in the following drawings. The embodiments are capable being practiced or of being carried out in various ways. Also, it is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limited. The use of “including,” “comprising” or “having” and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. The terms “mounted,” “connected,” “supported by,” and “coupled” are used broadly and encompass both direct and indirect mounting, connecting and coupling. Further, “connected” and “coupled” are not restricted to physical or mechanical connections or couplings, and can include electrical connections or couplings, whether direct or indirect.

[0033] It should be noted that a plurality of hardware and software based devices, as well as a plurality of different structural components may be utilized to implement the embodiments disclosed herein. Furthermore, and as described in subsequent paragraphs, the specific configurations illustrated in the drawings are intended as example embodiments and that other alternative configurations are possible. The terms “processor” “central processing unit” and “CPU” are interchangeable unless otherwise stated. Where the terms “processor” or “central processing unit” or “CPU” are used as identifying a unit performing specific functions, it should be understood that, unless otherwise stated, those functions can be carried out by a single processor, or multiple processors arranged in any form, including parallel processors, serial processors, tandem processors or cloud processing/cloud computing configurations.

BRIEF DESCRIPTION OF THE DRAWINGS [0034] FIG. 1 illustrates a first power tool system.

[0035] FIG. 2 illustrates a second power tool system.

[0036] FIG. 3 illustrates a third power tool system.

[0037] FIGS. 4A-B illustrate a fourth power tool system.

[0038] FIG. 4C illustrates a fourth power tool system.

[0039] FIG. 4D illustrates a fifth power tool system.

[0040] FIG. 5A is a block diagram of an example power tool of the power tool systems of FIGS. 1-4C.

[0041] FIG. 5B is a block diagram of a machine learning controller of the power tool of FIG. 5 A. [0042] FIG. 6 is a flowchart illustrating a method of building and implementing a machine learning controller for the power tool of FIG. 5 A.

[0043] FIG. 7 is a flowchart illustrating a method of operating the power tool of FIG. 5 A according to the machine learning controller.

[0044] FIG. 8a illustrates a power tool including feedback actuators.

[0045] FIG. 8b is an illustration of a rotation of the power tool to provide feedback information.

[0046] FIG. 9 is a schematic diagram of various types of information that may be utilized by the machine learning controller.

[0047] FIG. 10 is a schematic diagram of various types of information that may be utilized by a machine learning controller for effectuating a step bit control program

[0048] FIG. 11 is a flowchart illustrating a method for identifying a type of step bit using the machine learning controller.

[0049] FIGS. 12A-12B illustrate two examples of a step bit.

[0050] FIG. 13 illustrates scaled sensor output values for detecting steps of a step bit advancing into a sheet metal workpiece over time.

[0051] FIG. 14 is a flow chart for training and operating a power tool with machine learning using static logic.

[0052] FIG. 15 illustrates a process for automatically controlling a step bit operation in the power tool.

DETAILED DESCRIPTION

[0053] Some power tools include sensors and a control system that uses hard-corded thresholds to, for example, change or adjust the operation of the tool. For example, a sensor may detect that a battery voltage is below a predetermined, hard-coded threshold. The power tool may then cease operation of the motor to protect the battery pack. While these type of thresholds may be simple to implement and provide some benefit to the operation of a power tool, these type of hard-coded thresholds cannot adapt to changing conditions or applications during which the power tool is operated, and may not ultimately be helpful in detecting and responding to more complicated conditions such as, for example, when the power tool experiences kickback. [0054] The present application describes various systems in which a machine learning controller is utilized to control a feature or function of the power tool. For example, the machine learning controller, instead of implementing hard-coded thresholds determined and programmed by, for example, an engineer, detects conditions based on data collected during previous operations of the power tool. In some embodiments, the machine learning controller determines adjustable thresholds that are used to operate the tool based on, for example, a particular application of the power tool or during a particular mode of the power tool. Accordingly, the thresholds, conditions, or combinations thereof are based on previous operation of the same type of power tool and may change based on input received from the user and further operations of the power tool.

[0055] Some power tools, such as drills, hydraulic pulse tools, and impact drivers, may be used to drive step bits to drill holes. Step bits offer users the benefits of easy position control, drilling a clean hole, the ability to enlarge existing holes, and the flexibility to create a wide variety of very specific sizes. However, one common user frustration of step bits is that it is easy to accidently go beyond a desired step and thus make a hole too large.

[0056] Additionally, it is not trivial for a power tool to identify each step as a step bit is driven as variations in behavior of the user operating the drill, workpiece characteristics, step bit characteristics, user force, and other factors can contribute to a noisy sensor feedback signal.

[0057] Various embodiments described herein are directed to use of a controller executing machine learning control program to identify or count steps as a step bit is driven by a power tool into a workpiece, and take responsive action to assist a user in controlling the power tool while driving the step bit. The machine learning control program is well-suited to monitor various characteristics during driving of a step bit to identify or count steps. In some embodiments, a power tool may receive user input indicative of a desired number of steps, width of hole, or depth of hole. Then, during operation, the tool counts or identifies each step as the step bit is driven into the workpiece. Once the power tool reaches or nears the final desired step, or loses confidence of its counting, the responsive action is taken. Examples of responsive action include providing a notification to the user that a desired step has been reached, stopping the motor, or slowing the motor. Thus, embodiments discloses herein reduce the likelihood of a user making a hole too large. [0058] FIG. 1 illustrates a first power tool system 100. 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 the operation of the power tool 105. The usage information may alternatively be referred to as operational 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, and the like), the operating mode of the power tool 105 (e.g., driving mode, impact mode, operation time in each mode, frequency of operation in each mode, and the like), conditions encountered during operation (e.g., overheating of the motor, and the like), and other aspects (e.g., state of charge of the battery, rate of discharge, and the like).

[0059] In the illustrated embodiment, the power tool 105 communicates with the external device 107. The external device 107 may include, for example, a smart telephone, a tablet computer, a cellular phone, a laptop computer, a smart watch, and the like. The power tool 105 communicates with the external device 107, for example, to transmit 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 to communicate with the power tool 105, and a long-range transceiver to communicate with the server 110. In the illustrated embodiment, the power tool 105 also includes a transceiver to communicate with the external device via, for example, a short-range communication protocol such as BLUETOOTH ® . 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 transmits operational data to the external device 107, and the external device 107 forwards the operational data from the power tool 105 to the server 110 over the network 115. The network 115 may 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 may be a short-range wireless communication network, and in yet other embodiments, the network 115 may be a wired network using, for example, serial protocols (e.g., USB, USB-C, Firewire, and the like). Similarly, the server 110 may transmit 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 embodiments, the power tool 105 communicates directly with the server 110. In some embodiments, the power tool 105 may communicate directly with both the server 110 and the external device 107. In such embodiments, the external device 107 may, for example, generate a graphical user interface to facilitate control and programming of the power tool 105, while the server 110 may store and analyze larger amounts of operational data for future programming or operation of the power tool 105. In other embodiments, however, the power tool 105 may communicate directly with the server 110 without utilizing a short-range communication protocol with the external device 107.

[0060] The server 110 includes a server electronic control assembly having a server electronic processor 425, a server memory 430, a transceiver 427, and a machine learning controller 120. The transceiver 427 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 for building or adjusting a machine learning controller 120.

[0061] The machine learning controller 120 implements a machine learning program. The machine learning controller 120 is configured to construct a model (e.g., building one or more algorithms) based on example inputs. Supervised learning involves presenting a computer program with example inputs and their actual outputs (e.g., categorizations). The machine learning controller 120 is configured to leam a general rule or model that maps the inputs to the outputs based on the provided example input-output pairs. The machine learning algorithm may be configured to perform machine learning using various types of methods.

For example, the machine learning controller 120 may implement the machine learning program using decision tree learning, associates 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 neighbor (KNN), transformers, and lambda networks among others, such as those listed in Table 1 below.

[0062] The machine learning controller 120 is programmed and trained to perform a particular task. For example, in some embodiments, the machine learning controller 120 is trained to identify an application for which the power tool 105 is used (e.g., using a step bit). 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, typical applications for which the power tool is used, and the like. Analogously, the way in which the machine learning controller 120 is trained also varies based on the particular task. In particular, 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 example mentioned above in which the machine learning controller 120 is configured to identify a use application of the power tool 105, each training example may include a set of inputs such as motor speed, motor current and voltage, an operating mode currently being implemented by the power tool 105, and 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, a training example may have an output that includes a particular use application of the power tool 105, such as advancing a number of steps in a step bit. Other training examples, including different values for each of the inputs and an output indicating that the use application is, for example, drilling a hole in a wooden workpiece. The training examples may be previously collected training examples, from for example, a plurality of the same type of power tools. For example, the training examples may have been previously collected from, for example, two hundred power tools of the same type (e.g., drills) over a span of, for example, one year. [0063] A plurality of different training examples is provided to the machine learning controller 120. The machine learning controller 120 uses these training examples to generate a model (e.g., a rule, a set of equations, and the like) that helps categorize or estimate the output based on new input data. The machine learning controller 120 may weigh different training examples differently to, for example, prioritize different conditions or outputs from the machine learning controller 120. For example, a training example corresponding to a kickback condition may be weighted more heavily than a training example corresponding to a stripping condition to prioritize the correct identification of the kickback condition relative to the stripping condition. In some embodiments, the training examples are weighted differently by associating a different cost function or value to specific training examples or types of training examples.

[0064] 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 inputs provided to the machine learning controller 120. As described above, the number (and the type) of inputs provided to the machine learning controller 120 may vary based on the particular task for the machine learning controller 120. Accordingly, the input layer of the artificial neural network of the machine learning controller 120 may have a different number of nodes based on the particular task for the machine learning controller 120. The input layer connects to the hidden layers. The number of hidden layers varies and may depend on the particular task for the machine learning controller 120. Additionally, 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. Additionally, each node of the neural network may also be assigned a bias value. However, each node of the first hidden layer may not be connected to each node of the second hidden layer. That is, there may be some nodes of the first hidden layer that are not connected to all of the nodes of the second hidden layer. The connections between the nodes of the first hidden layers and the second hidden layers are each assigned different weight parameters. Each node of the hidden layer is associated with an activation function. The activation function defines how the hidden layer is to process the input received from the input layer or from a previous input layer. These activation functions may vary and be based on not only the type of task associated with the machine learning controller 120, but may also vary based on the specific type of hidden layer implemented.

[0065] Each hidden layer may perform a different function. For example, some hidden layers can be convolutional hidden layers which can, in some instances, reduce the dimensionality of the inputs, while other hidden layers can perform more statistical functions such as max pooling, which may reduce a group of inputs to the maximum value, an averaging layer, among others. In some of the hidden layers (also referred to as “dense layers”), each node is connected to each node of the next hidden layer. Some neural networks including more than, for example, three hidden layers may 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 the possible outputs. In the example above in which the machine learning controller 120 identifies a use application of the power tool 105, the output layer may include, for example, four nodes. A first node may indicate that the use application corresponds to installing dry wall, a second node may indicate that the use application corresponds to drilling a hole in a metal or wooden workpiece, a third node may indicate that the use application corresponds to enlarging a hole, and the fourth node may indicate that the use application corresponds to an unknown (or unidentifiable) task. In some embodiments, the machine learning controller 120 then selects the output node with the highest value and indicates to the power tool 105 or to the user the corresponding use application. 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 may then use the multiple outputs to control the power tool 500. For example, the machine learning controller 120 may identify the type of step bit having characteristics of a particular shape and a particular number of steps as the most likely candidates. The machine learning controller 120 or the electronic processor 550 may then, for example, control the motor 100 according to a ramp up speed based on the shape of the step bit, but slow down, pause, or stop when reaching one or more steps of the step bit. The machine learning controller 120 and the electronic processor 550 may implement different methods of combining the outputs from the machine learning controller 120.

[0066] During training, the artificial neural network receives the inputs for a training example and generates an output using the bias for each node, and the connections between each node and the corresponding weights. 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 associated with each node connection. In some embodiments, the neural network also changes the weights associated with each node during training. The training continues until a training condition is met. The training condition may correspond to, for example, a predetermined number of training examples being used, a minimum accuracy threshold being reached during training and validation, a predetermined number of validation iterations being completed, and the like. Different types of training algorithms can be used to adjust the bias values and the weights of the node connections based on the training examples. The training algorithms may include, for example, gradient descent, newton’s method, conjugate gradient, quasi newton, levenberg marquardt, among others, see again Table 1.

[0067] In another example, the machine learning controller 120 implements a support vector machine to perform classification. The machine learning controller 120 may, for example, classify whether step bit has reached a target step, a target diameter, or a target depth, which may be referred to as an intended step, an intended diameter, an intended length, or a depth of a drilled hole. In such embodiments, the machine learning controller 120 may receive inputs such as motor speed, output torque, and operation time (e.g., how long the power tool 105 has been working on the step). The machine learning controller 120 then defines a margin using combinations of some of the input variables (e.g., motor speed, output torque, operation time, and the like) as support vectors to maximize the margin. In some embodiments, the machine learning controller 120 defines a margin using combinations of more than one of similar input variables. The margin corresponds to the distance between the two closest vectors that are classified differently. For example, the margin corresponds to the distance between a vector representing a drill operation that has not reached a target step (or diameter) and a vector that represents a drill operation that has reached the target step (or diameter). 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 step bit has reached a target step, a first support vector machine may determine whether the target step has been reached based on the motor speed and the operation time, while a second support vector machine may determine whether the target step has been reached based on the motor speed and the output torque. The machine learning controller 120 may then determine whether the target step is reached when both support vector machines classify the drill operation as the target step has been reached. In other embodiments, a single support vector machine can use more than two input variables and define a hyperplane that separates those operations that have reached the target step from those that have not reached the target step.

[0068] The training examples for a support vector machine include an input vector including values for the input variables (e.g., motor speed, operation time, output torque, acceleration, and the like), and an output classification indicating whether a step has been reached. During training, the support vector machine selects the support vectors (e.g., a subset of the input vectors) that maximize the margin. In some embodiments, the support vector machine may be able to define a line or hyperplane that accurately separates when a target step has been reached and when the target step has not been reached. In other embodiments (e.g., in anon-separable case), however, the support vector machine may define a line or hyperplane that maximizes the margin and minimizes the slack variables, which measure the error in a classification of a support vector machine. After the support vector machine has been trained, new input data can be compared to the line or hyperplane to determine how to classify the new input data (e.g., to determine whether the target step has been reached). In other embodiments, as mentioned above, the machine learning controller 120 can implement different machine learning algorithms to make an estimation or classification based on a set of input data. Some examples of input data, processing technique, and machine learning algorithm pairings are listed below in Table 2. The input data, listed as time series data in the below table, includes, for example, one or more of the various examples of time-series tool usage information described herein.

[0069] In the example of FIG. 1 , the server 110 receives usage information from the power tool 105. In some embodiments, the server 110 uses the received usage information as additional training examples (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 recommendations for future operations of the power tool 105. For example, the trained machine learning controller 120 may determine that a target step has been reached. The server electronic processor 425 may then determine that a slower motor speed for the selected operating mode may be used to prevent the step bit from exceeding the target step. The server 110 may then transmit the suggested operating parameters to the external device 107. The external device 107 may display the suggested changes to the operating parameters and request confirmation from the user to implement the suggested changes before forwarding the changes on to the power tool 105. In other embodiments, the external device 107 forwards the suggested changes to the power tool 105 and displays the suggested changes to inform the user of changes implemented by the power tool 105.

[0070] In particular, in the embodiment illustrated in FIG. 1, the server electronic control assembly generates a set of parameters and updated thresholds recommended for the operation of the power tool 105 in particular modes. For example, the machine learning controller 120 may detect that, during various operations of the power tool 105 in the impacting mode, the power tool 105 could have benefitted from a faster average rotation speed of the motor during the first ten seconds of operation. The machine learning controller 120 may then adjust a motor speed threshold of an impacting mode such that the motor speed during the first ten seconds of the impacting mode of the power tool 105 is increased. The server 110 then transmits the updated motor speed threshold to the power tool 105 via the external device 107.

[0071] The power tool 105 receives the updated motor speed threshold, updates the impacting mode according to the updated motor speed threshold, and operates according to the updated motor speed threshold when in the impacting mode. In some embodiments, the power tool 105 periodically transmits the usage data to the server 110 based on a predetermined schedule (e.g., every eight hours). In other embodiments, the power tool 105 transmits 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 a session of operation has been completed. In some embodiments, the power tool 105 transmits the usage data in real time to the server 110 and may implement the updated thresholds and parameters in subsequent operations.

[0072] FIG. 2 illustrates a second power tool system 200. The second power tool system 200 includes a power tool 205, the external device 107, a server 210, and a network 215. The power tool 205 is similar to that of the power tool system 100 of FIG. 1 and collects similar usage information as that described with respect to FIG. 1. Unlike the power tool 105 of the first power tool system 100, the 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 over the network 215. In some embodiments, the power tool 205 receives the static machine learning controller 220 during manufacturing, while in other embodiments, a user of the power tool 205 may select 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 in which the machine learning controller 120 has been trained using various training examples, and is configured to receive new input data and generate an estimation or classification for the new input data.

[0073] The power tool 205 communicates with the server 210 via, for example, the external device 107 as described above with respect to FIG. 1. The external device 107 may also provide additional functionality (e.g., generating a graphical user interface) to the power tool 205. The server 210 of the power tool system 200 may utilize usage information from power tools similar to the power tool 205 (for example, when the power tool 205 is a drill, the server 210 may receive usage information from various other drills) and trains a machine learning program using training examples from the received usage information from the power tools. The server 210 then transmits 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.

[0074] Accordingly, the static machine learning controller 220 includes a trained machine learning program provided, for example, at the time of manufacture. During future operations 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, for example, determining a current application of the power tool 205. In other embodiments, the task 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 the external device 107. The external device 107 may then transmit the target task for the static machine learning controller 220 to the server 210. The server 210 then transmits a trained machine learning program, trained for the target task, to the static machine learning controller 220. Based on the estimations or classifications 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 a different aspect of the power tool 205. In some embodiments, the power tool 205 may include more than one static machine learning controller 220, each having a different target task.

[0075] FIG. 3 illustrates a third power tool system 300. 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 battery pack, and the like). The power tool 305 of the third power tool system 300, however, 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 power tool 305 receives the machine learning program from the server 310 over the network 315. Unlike the static machine learning controller 220 of the second power tool 205, the server 310 may transmit updated versions of the machine learning program to the adjustable machine learning controller 320 to replace previous versions.

[0076] The power tool 305 of the third power tool system 300 transmits feedback to the server 310 (via, for example, the external device 107) regarding the operation of the adjustable machine learning controller 320. The power tool 305, for example, may transmit an indication to the server 310 regarding the number of operations that were incorrectly classified by the adjustable machine learning controller 320. The server 310 receives the 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 that are incorrectly classified. Thus, the server 310 updates or re-trains the adjustable machine learning controller 320 in view of 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 indications may be positive (e.g., indicating that the adjustable machine learning controller 320 correctly classified a condition, event, operation, or combination thereof), or the feedback may be negative (e.g., indicating that the adjustable machine learning controller 320 incorrectly classified a condition, event, operation, or combination thereof).

[0077] In some embodiments, the server 310 also utilizes new usage data received from the power tool 305 and other similar power tools to update the adjustable machine learning controller 320. For example, the server 310 may periodically re-train (or adjust the training) of the adjustable machine learning controller 320 based on the newly received usage data.

The server 310 then transmits an updated version of the adjustable machine learning controller 320 to the power tool 305.

[0078] When the power tool 305 receives the 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, the user of the power tool 305 may request newer versions of the adjustable machine learning controller 320. In some embodiments, the user may select a frequency with which the adjustable machine learning controller 320 is transmitted to the power tool 305.

[0079] FIG. 4A illustrates a fourth power tool system 400. 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 during, for example, 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 the sensors in the power tool 405, feedback information indicating desired changes to operational parameters (e.g., user wants to increase motor speed or output torque), feedback information indicating whether the 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 re-train the self-updating machine learning controller 420.

[0080] In some embodiments, the power tool 405 re-trains the self-updating machine learning controller 420 when the power tool 405 is not in operation. For example, the power tool 405 may detect when the motor has not been operated for a predetermined time period, and start a re-training process of the self-updating machine learning controller 420 while the power tool 405 remains non-operational. Training the self-updating machine learning controller 420 while the power tool 405 is not operating allows more processing power to be used in the re-training process instead of competing for computing resources typically used to operate the power tool 405.

[0081] As shown in FIG. 4A, in some embodiments, the power tool 405 also communicates with the external device 107 and a server 410. For example, the external device 107 communicates with the power tool 405 as described above with respect to FIGS. 1-3. The external device 107 generates a graphical user interface to facilitate the adjustment of operational parameters of the power tool 405. The external device 107 may also bridge the communication between the power tool 405 and the server 410. For example, as described above with respect to FIG. 2, in some embodiments, the external device 107 receives a selection of a target task for the machine learning controller 420. The external device 107 may then request a corresponding machine learning program from the server 410 for transmitting 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 may also re train the self-updating machine learning controller 420, for example, as described above with respect to FIG. 3. The server 410 may use additional training examples from other similar power tools. Using these additional training examples may provide greater variability and ultimately make the machine learning controller 420 more reliable. In some embodiments, the power tool 405 re-trains the self-updating machine learning controller 420 when the power tool 405 is not in operation, and the server 410 may re-train the machine learning controller 420 when the power tool 405 remains in operation (for example, while the power tool 405 is in operation during a scheduled re-training of the machine learning controller 420). Accordingly, in some embodiments, the self-updating machine learning controller 420 may be re-trained on the power tool 405, by the server 410, or with a combination thereof. In some embodiments, the server 410 does not re-train the self-updating machine learning controller 420, but still exchanges information with the power tool 405. For example, the server 410 may provide other functionality for the power tool 405 such as, for example, transmitting information regarding various operating modes for the power tool 405.

[0082] Each of FIGS. 1-4A describes a power tool system 100, 200, 300, 400 in which a power tool 105, 205, 305, 405 communicates with a server 110, 210, 310, 410 and with an external device 107. As discussed above with respect to FIG. 1, the external device 107 may bridge communication between the power tool 105, 205, 305, 405 and the server 110, 210, 310, 410. That is, the power tool 105, 205, 305, 405 may communicate directly with the external device 107. The external device 107 may then forward the information received from the power tool 105, 205, 305, 405 to the server 110, 210, 310, 410. Similarly, the server 110, 210, 310, 410 may transmit information to the external device 107 to be forwarded to the power tool 105, 205, 305, 405. In such embodiments, the power tool 105, 205, 305, 405 may 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 (via, for example, a USB 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 the wired connection may provide a faster and more reliable communication method between the external device 107 and the power tool 105, 205, 305, 405.

[0083] The external device 107 may include, for example, a smart telephone, a tablet computer, a cellular phone, a laptop computer, a smart watch, and the like. The server 110, 210, 310, 410 illustrated in FIGS. 1-4A 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 for building or adjusting 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 server 110, 210, 310, and 410, as each are external to the power tool 105, 205, 305, 405. Further, in some embodiments, the external system device is a wireless hub, such as a beaconing device place on a jobsite to monitor tools, function as a gateway network device (e.g., providing Wi-Fi® network), or both. As described herein, the external system device includes at least an input/output unit (e.g., a wireless or wired transceiver) for communication, a memory storing instructions, and an electronic processor to execute instructions stored on the memory to carry out the functionality attributed to the external system device.

[0084] In some embodiments, the power tool 405 may not communicate with the external device 107 or the server 410. For example, FIG. 4B illustrates the power tool 405 with no connection to the external device 107 or the server 410. Rather, since the power tool 405 includes the 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.

[0085] FIG. 4C illustrates a fifth power tool system 450 including a power tool 455 and the external device 107. The external device 107 communicates with the power tool 455 using the various methods described above with respect to FIGS. 1-4A. In particular, the power tool 455 transmits operational data regarding the operation of the power tool 455 to the external device 107. The external device 107 includes a user application and generates a graphical user interface to facilitate the adjustment of operational parameters of the power tool 455 and to provide information regarding the operation of the power tool 455 to the user or receive input from the user. In the illustrated embodiment of FIG. 4C, the external device 107 includes a machine learning controller 460. In some embodiments, the machine learning controller 460 is similar to the machine learning controller 120 of FIG. 1. In such embodiments, the machine learning controller 460 receives the usage information from the power tool 455 and generates recommendations for future operations of the power tool 455. The machine learning controller 460 may, in such embodiments, generate a set of parameters and updated threshold recommended for the operation of the power tool 105 in particular modes. The external device 107 then transmits the updated set of parameters and updated thresholds to the power tool 455 for implementation.

[0086] In some embodiments, the machine learning controller 460 is similar to the machine learning controller 320 of FIG. 3. In such embodiments, the external device 107 may update the machine learning controller 460 based on, for example, feedback received from the power tool 455 and/or other operational data from the power tool 455. In such embodiments, the power tool 455 also includes a machine learning controller similar to, for example, the adjustable machine learning controller 320 of FIG. 3. The external device 107 can then modify and update the adjustable machine learning controller 320 and communicate the updates to the machine learning controller 320 to the power tool 455 for implementation. For example, the external device 107 can use the feedback from the user to retrain the machine learning controller 460, to continue training a machine learning controller 460 implementing a reinforcement learning control, or may, in some embodiments, use the feedback to adjust a switching rate on a recurrent neural network for example.

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

[0088] FIG. 4D illustrates a sixth power tool system 475 including a battery pack 480.

The battery pack 480 includes a machine learning controller 485. Although not illustrated, the battery pack 480 may, in some embodiments, communicate with the external device 107, a server, or a combination thereof through, for example, a network. Alternatively, or in addition, the battery pack may communicate with a power tool 455, such as a power tool 455 attached to the battery pack 480. The external device 107 and the server may be similar to the external device 107 and server 110, 210, 310, 410 described above with respect to FIGS. 1- 4A. The machine learning controller 485 of the battery pack 480 may 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 operation of the battery pack 480. For example, the machine learning controller 485 may help identify different battery conditions that may be detrimental to the battery pack 480 and may automatically change (e.g., increase or decrease) the amount of current provided by the battery pack 480, and/or may change some of the thresholds that regulate the operation of the battery pack 480. For example, the battery pack 480 may, from instructions of the machine learning controller 485, reduce power to inhibit overheating of the battery cells. In some embodiments, the battery pack 480 communicates with a power tool (e.g., similar to the power tool 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 may receive usage data (e.g., sensor data) from the power tool and generate outputs to control the operation of the power tool. The battery pack 480 may then transmit the control outputs to the electronic processor of the power tool.

[0089] In still other embodiments, a power system including a charger (e.g., for charging the battery pack 480 or a similar battery pack without a machine learning controller) is provided, wherein the charger includes a machine learning controller similar to those described herein.

[0090] FIGS. 1-4C illustrate example power tools in the form of an impact driver 105, 205, 305, 405. The particular power tools 105, 205, 305, 405 illustrated and described herein, however, are merely representative. In other embodiments, the power tool systems 100, 200, 300, 400 described herein may include different types of power tools such as, for example, a power drill, a hammer drill, a pipe cutter, a sander, a nailer, a grease gun, and the like. A power tool 105, 205, 305, 405 of the power tool systems 100, 200, 300, 400 is configured to perform one or more specific tasks (e.g., drilling, cutting, fastening, pressing, lubricant application, sanding, heating, grinding, bending, forming, impacting, polishing, lighting, etc.). For example, an impact wrench is associated with the task of generating a rotational output (e.g., to drive a bit), while a reciprocating saw is associated with the task of generating a reciprocating output motion (e.g., for pushing and pulling a saw blade). The task(s) associated with a particular tool may also be referred to as the primary function(s) of the tool. Each power tool includes a drive device specifically designed for the primary function of the power tool. For example, in the illustrated embodiments in which the power tool corresponds to an impact driver, the drive device is a socket. In embodiments, however, where the power tool is, for example, a power drill, the drive device may include an adjustable chuck as a bit driver.

[0091] Each of FIGS. 1-4D illustrate various embodiments in which different types of machine learning controllers 120, 220, 320, 420 are used in conjunction with the 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 static machine learning controller 220 as described with respect to FIG. 2 and may also include a self-updating machine learning controller 420 as described with respect to FIG. 4A. In another example, the power tool 105, 205, 305, 405 may include a static machine learning controller 220. The static machine learning controller 220 may be subsequently removed and replaced by, for example, an adjustable machine learning controller 320. In other words, the same power tool may include any of the machine learning controllers 120, 220, 320, 420 described above with respect to FIGS. 1-4B. Additionally, a machine learning controller 540, shown in FIGS. 5A, 5B, described with respect to FIG. 6, and described in further detail below, is an example controller that may be used as one or more of the machine learning controllers 120, 220, 320, 420, 460, and 485.

[0092] FIG. 5A is a block diagram of a representative power tool 500 in the form of an impact driver, and including a machine learning controller. Similar to the example power tools of FIGS. 1-4C, the power tool 500 is representative of various types of power tools. Accordingly, the description with respect to the power tool 500 is similarly applicable to other types of power tools. The machine learning controller of the power tool 500 may be a static machine learning controller similar to the static machine learning controller 220 of the second power tool 205, an adjustable machine learning controller similar to the adjustable machine learning controller 320 of the third power tool 305, or a self-updating machine learning controller similar to the self-updating machine learning controller 420 of the fourth power tool 405. Although the power tool 500 of FIG. 5A is described as being in communication with the external device 107 or with a server, in some embodiments, the power tool 500 is self-contained or closed, in terms of machine learning, and does not need to communicate with the external device 107 or the server to perform the functionality of the machine learning controller 540 described in more detail below.

[0093] As shown in FIG. 5 A, the power tool 500 includes a motor 505, a trigger 510, a power interface 515, a switching network 517, a power input control 520, a wireless communication device 525, a mode pad 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 the particular task for the power tool 500. The motor 505 receives power from an external power source through the power interface 515. In some embodiment, the external power source includes an AC power source. In such embodiments, the power interface 515 includes an AC power cord that is connectable to, for example, an AC outlet. In other embodiments, the external power source includes a battery pack. In such embodiments, 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., the battery pack 485 or a similar battery pack without machine learning controller). The battery pack receiving portion may include a connecting structure to engage a mechanism that secures the battery pack and a terminal block to electrically connect the battery pack to the power tool 500. [0094] The motor 505 is energized based on a state of the trigger 510. Generally, when the trigger 510 is activated, the motor 505 is energized, and when the trigger 510 is deactivated, the motor is de-energized. In some embodiments, such as the power tools 105, 205, 305, 405 illustrated in FIGS. 1-4C, the trigger 510 extends partially down a length of the handle of the power tool and is moveably coupled to the handle such that the trigger 510 moves with respect to the power tool housing. In the illustrated embodiment, the trigger 510 is coupled to a trigger switch 555 such that when the trigger 510 is depressed, 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., with a biasing member such as a spring) such that the trigger 510 moves in a second direction away from the handle of the power tool 500 when the trigger 510 is released by the user. In other words, the default state of the trigger switch 555 is to be deactivated unless a user presses the trigger 510 and activates the trigger switch 555.

[0095] The switching network 517 enables the electronic processor 550 to control the operation of the motor 505. The switching network 517 includes a plurality of electronic switches (e.g., FETs, bipolar transistors, and the like) connected together to form a network that controls the activation of the motor 505 using a pulse-width modulated (PWM) signal. For instance, the switching network 217 may include a six-FET bridge that receives pulse- width modulated (PWM) signals from the electronic processor 550 to drive the motor 505. Generally, when the trigger 510 is depressed as indicated by an output of the trigger switch 555, electrical current is supplied from the power interface 515 to the motor 505 via the switching network 517. When the trigger 510 is not depressed, electrical 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 speed of rotation of the motor 505. In other embodiments, the amount of trigger pull corresponds to a desired torque.

[0096] In response to the electronic processor 550 receiving the activation signal from the trigger switch 555, the electronic processor 550 activates the switching network 517 to provide power to the motor 505. The switching network 517 controls the amount of current available to the motor 505 and thereby controls the speed and torque output of the motor 505. The mode pad 527 allows a 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 pad 527 includes a single actuator. In such embodiments, a user may select an operating mode for the power tool 500 based on, for example, a number of actuations of the mode pad 527. For example, when the user activates the actuator three times, the power tool 500 may operate in a third operating mode. In other embodiments, the mode pad 527 includes a plurality of actuators, each actuator corresponding to a different operating mode. For example, the mode pad 527 may include four actuators, when the user activates one of the four actuators, the power tool 500 may operate in a first operating mode. The electronic processor 550 receives a user selection of an operating mode via the mode pad 527, and controls the switching network 517 such that the motor 505 is operated according to the selected operating mode. In some embodiments, the power tool 500 does not include a mode pad 527. In such embodiments, the power tool 500 may operate in a single mode, or may include a different selection mechanism for selecting an operation mode for 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 for the power tool 500 using, for example, the machine learning controller 540. In some embodiments, the mode pad 527 or other user inputs 565 may be set to configure a number of steps of a step bit to count or to configure other parameters for automatically detecting steps as described herein.

[0097] The sensors 530 are coupled to the electronic processor 550 and communicate to the electronic processor 550 various output signals indicative of different parameters of the power tool 500 or the motor 505. The sensors 530 include, for example, Hall Effect sensors, motor current sensors, motor voltage sensors, temperature sensors, torque sensors, position or movement sensors such as accelerometers or gyroscopes, distance sensors such as laser distance sensors, infrared (IR) distance sensors, ultrasonic distance, sensors, and the like. In some embodiments the power tool may include multiple distance sensors to allow the electronic processor 550 to determine a distance to the workpiece from various points on the power tool 500. By determining the distances between the various points on the power tool and the workpiece, the electronic processor 550 can determine if the tool is at an oblique angle to the workpiece.

[0098] The Hall Effect sensors output motor feedback information to the electronic processor 550 such as an indication (e.g., a pulse) related to the motor’s position, velocity, and acceleration of the rotor of the motor 505. In some embodiments, the electronic processor 550 uses the motor feedback information from the Hall Effect sensors to control the switching network 517 to drive the motor 505. For example, by selectively enabling and disabling the switching network 517, power is selectively provided to the motor 505 to cause rotation of the motor at a specific speed, a specific torque, or a combination thereof. The electronic processor 550 may also control the operation of the switching 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 changes the control signals based on a sensor output signal indicating a number of impacts delivered by the power tool 500, a sensor output signal indicating a speed of the anvil of the power tool 500, and the like. The output signals from the sensors are used to ensure proper timing of control signals to the switching network 517 and, in some instances, to provide closed-loop feedback to control the speed of the motor 505 to be within a target range or at a target level.

[0099] The indicators 535 are also coupled to the electronic processor 550. The indicators 535 receive control signals from the electronic processor 500 to generate a visual signal to convey information regarding the operation or state of the power tool 500 to the user. The indicators 535 may include, for example, LEDs, a speaker, or a display screen and may generate various signals indicative of, for example, an operational state or mode of the power tool 500, an abnormal condition or event detected during the operation of the power tool 500, and the like. For example, the indicators 530 may indicate measured electrical characteristics of the power tool 500, the state or status of the power tool 500, an operating mode of the power tool 500 (discussed in further detail below), and the like. In some embodiments, the indicators 535 include elements to convey information to a user through audible or tactile outputs. In some embodiments, the power tool 500 does not include the indicators 535. In some embodiments, the operation of the power tool 500 alerts the user regarding a power tool condition. For example, a fast deceleration of the motor 505 may indicate that an abnormal condition is present. 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 the need for indictors 535 on the power tool 500 itself.

[00100] The power interface 515 is coupled to the power input control 520. The power interface 515 transmits the power received from the external power source to the power input control 520. The power input control 520 includes active and/or passive components (e.g., voltage step-down 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 such as the wireless communication device 525. [00101] The wireless communication device 525 is coupled to the electronic processor 550. In the example power tools 105, 205, 305, 405 of FIGS. 1-4A and 4C, the wireless communication device 525 is located near the foot of the power tool 105, 205, 305, 405 (see FIGS.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 an external device 107. In a particular example, the wireless communication device 525 is positioned under the mode pad 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, a second power tool 500, or the server 110, 210, 310, 410 and the processor. The memory of the wireless communication device 525 stores instructions to be implemented by the processor and/or may store data related to communications between the power tool 500 and the external device 107, a second power tool 500, or the server 110, 210, 310, 410. The processor for the wireless communication device 525 controls wireless communications between the power tool 500 and the external device 107, a second power tool 500, or the 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 use in wireless communications.

[00102] In some embodiments, the wireless communication device 525 is a Bluetooth® controller. The Bluetooth® controller communicates with the external device 107, a second power tool 500, or server 110, 210, 310, 410 employing the Bluetooth® protocol. In such embodiments, therefore, the external device 107, a second power tool 500, or server 110, 210, 310, 410 and the power tool 500 are within a communication range (i.e., in proximity) of each other while they exchange data. In other embodiments, the wireless communication device 525 communicates using other protocols (e.g., Wi-Fi, cellular protocols, a proprietary protocol, etc.) over a different type of wireless network. For example, the wireless communication device 525 may be configured to communicate via Wi-Fi through a wide area network such as the Internet or a local area network, or to communicate through a piconet (e.g., using infrared or NFC communications). The communication via the wireless communication device 525 may be encrypted to protect the data exchanged between the power tool 500 and the external device 107, a second power tool 500, or server 110, 210, 310, 410 from third parties. [00103] In some embodiments, the wireless communication device 525 includes a real time clock (RTC). The RTC increments and keeps time independently of the 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 may receive power from a back-up power source when the external power source is not connected to the power tool 500. The RTC may time stamp the operational data from the power tool 500. Additionally, the RTC may enable a security feature in which the power tool 500 is disabled (e.g., locked-out and made inoperable) when the time of the RTC exceeds a lockout time determined by the user.

[00104] The wireless communication device 525, in some embodiments, exports tool usage data, maintenance data, mode information, drive device information, and the like from the power tool 500 (e.g., from the power tool electronic processor 550). The exported data may indicate, for example, when work was accomplished and that work was accomplished to specification. The exported data can also provide a chronological record of work that was performed, track duration of tool usage, and the like. The server 110, 210, 310, 410 receives the exported information, either directly from the wireless communication device 525 or through an external device 107, and logs the data received from the power tool 500. As discussed in more detail below, the exported data can be used by the power tool 500, the external device 107, or the server 110, 210, 310, 410 to train or adapt a machine learning controller relevant to similar power tools. The wireless communication device 525 may also receive information from the server 110, 210, 310, 410, the external device 107, or a second power tool 500, such as configuration data, operation threshold, maintenance threshold, mode configurations, programming for the power tool 500, updated machine learning controllers for the power tool 500, and the like. For example, the wireless communication device 525 may exchange information with a second power tool 500 directly, or via an external device 107.

[00105] In some embodiments, the power tool 500 does not communicate with the external device 107 or with the server 110, 210, 310, 410 (e.g., power tool 405 in FIG. 4B). Accordingly, 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 may provide a faster communication route than the wireless communication device 525. [00106] In some embodiments, the power tool 500 includes a data sharing setting. The data sharing setting indicates what data, if any, is exported from the power tool 500 to the server 110, 210, 310, 410. In one embodiment, the power tool 500 receives (e.g., via a graphical user interface generated by the external device 107) an indication of the type of data to be exported from the power tool 500. In one embodiment, the external device 107 may display various options or levels of data sharing for the power tool 500, and the external device 107 receives the user’s selection via its generated graphical user interface. 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, and the like) is to be exported from the power tool 500, but may not export information regarding, for example, the modes implemented by the power tool 500, the location of the power tool 500, and the like. In some embodiments, the data sharing setting may be a binary indication of whether or not data regarding the operation of the power tool 500 (e.g., usage data) is transmitted to the server 110, 210, 310, 410. The power tool 500 receives the user’s selection for 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.

[00107] The electronic control assembly 536 is electrically and/or communicatively connected to a variety of modules or components of the power tool 500. The electronic assembly 536 controls the motor 505 based on the outputs and determinations from the machine learning controller 540. In particular, the electronic control assembly 136 includes the electronic processor 550 (also referred to as an electronic controller), the machine learning controller 540, and the 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 to the components and modules within the electronic processor 550 and/or power tool 500. For example, the electronic processor 550 includes, among other things, a processing unit 557 (e.g., a microprocessor, a microcontroller, or another suitable programmable device), a memory 560, input units 565, and output units 570. The processing unit 557 includes, among other things, a control unit 572, an arithmetic logic unit (“ALU”) 574, and a plurality of registers 576. In some embodiments, the electronic processor 550 is implemented partially or entirely on a semiconductor (e.g., a field-programmable gate array [“FPGA”] semiconductor) chip or an Application Specific Integrated Circuit (“ASIC”), such as a chip developed through a register transfer level (“RTL”) design process.

[00108] 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 can include combinations 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 memory devices. The electronic processor 230 is connected to the memory 560 and executes software instructions that are capable of being stored in a RAM of the memory 560 (e.g., during execution), a ROM of the memory 560 (e.g., on a generally permanent basis), or another non-transitory computer readable medium such as another memory or a disc.

Software included in the implementation 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 are executed by the processing unit 557.

[00109] The electronic processor 550 is configured to retrieve from memory 560 and execute, among other things, instructions related to the control processes and methods described herein. The electronic processor 550 is also configured to store power tool information on the memory 560 including tool usage information, information identifying the type of tool, a unique identifier for the particular tool, user characteristics (e.g., identity, trade type, skill level), and other information relevant to operating or maintaining the power tool 500 (e.g., received from an external source, such as the external device 107 or pre-programed at the time of manufacture). The tool usage information, such as current levels, motor speed, motor acceleration, motor direction, number of impacts, may be captured or inferred from data output by the sensors 530. More particularly, Table 3 shows example types of tool usage information which may be captured or inferred by the electronic processor 550. In other constructions, the electronic processor 550 includes additional, fewer, or different components.

[00110] The machine learning controller 540 is coupled to the electronic processor 550 and to 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 is in communication with the machine learning controller 540 and receives decision outputs from the machine learning controller 540. When the activation switch 545 is in the deactivated state, the electronic processor 550 is not in communication 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 FIGS. 1-4D, the machine learning controller 540 includes a trained machine learning controller that utilizes 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 conditions, applications, and states of the power tool. In one embodiment, the activation switch 545 switches between an activated state and a deactivated state. In such embodiments, while the activation switch 545 is in the 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 the determinations from the machine learning controller 540. Otherwise, when the activation switch 545 is in the deactivated state, the machine learning controller 540 is disabled 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 embodiments, when the activation switch 545 is in the activated state, the electronic processor 550 controls the operation of the power tool 500 based on the determinations or outputs 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 output based on the usage data of the power tool 500 and may calculate (e.g., determine) thresholds or other operational 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 the enabled state or is controlled to be enabled and disabled via, for example, wireless signals from the server (e.g., servers 110, 210, 310, 410) or from the external device 107.

[00111] As shown in FIG. 5B, the machine learning controller 540 includes an electronic processor 575 and a memory 580. The memory 580 stores a machine learning control 585. The machine learning control 585 may include a trained machine learning program as described above with respect to FIGS. 1-4D. In the illustrated embodiment, the electronic processor 575 includes a graphics processing unit. In the embodiment of FIG. 5B, the machine learning controller 540 is positioned on a separate printed circuit board (PCB) as the electronic processor 550 of the power tool 500. The PCB of the electronic processor 550 and the machine learning controller 540 are coupled with, for example, wires or cables to enable the electronic processor 550 of the power tool 500 to control the motor 505 based on the outputs and determinations from the machine learning controller 540. In other embodiments, however, the machine learning control 585 may be stored in memory 560 of the electronic processor 550 and may be implemented by the processing unit 557. In such embodiments, the electronic control assembly 536 includes a single electronic processor 550. In yet other embodiments, the machine learning controller 540 is implemented in the separate electronic processor 575, but is positioned on the same PCB as the electronic processor 550 of the power tool 500. Embodiments with the machine learning controller 540 implemented as a separate processing unit from the electronic processor 550, whether on the same or different PCBs, allows selecting a processing unit to implement each of the machine learning controller 540 and the electronic processor 550 that has its capabilities (e.g., processing power and memory capacity) tailored to the particular demands of each unit. Such tailoring can reduce costs and improve efficiencies of the power tools. In some embodiments, as illustrated in FIG. 4C, for example, the external device 107 includes the machine learning controller 540 and the power tool 500 communicates with the external device 107 to receive the estimations or classifications from the machine learning controller 540. In some embodiments, the machine learning controller 540 is implemented in a plug-in chip or controller that is 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 connects to the electronic processor 550. For example, in some embodiments, the power tool 500 includes a lockable compartment including electrical contacts that is configured to receive and electrically connect to the plug-in machine learning controller 540. The electrical contacts enable bidirectional 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.

[00112] As discussed above with respect to FIG. 1, the machine learning control 585 may be built and operated by the server 110. In other embodiments, the machine learning control 585 may be built by the server 110, but implemented by the power tool 500 (similar to FIGS. 2 and 3), and in yet other embodiments, the power tool 500 (e.g., the electronic processor 550, electronic processor 575, or a combination thereof) builds and implements the machine learning control 585 (similar to FIG. 4B). FIG. 6 illustrates a method 600 of building and implementing the machine learning control 585. The method 600 is described with respect to power tool 500, but, as previously described with respect to FIG. 5, the power tool 500 is representative of the power tools 105, 205, 305, 405 described in the respective systems of FIGS. 1-4C. Accordingly, a similar method may be implemented by the power tool 105, 205, 305, 405 of the respective systems of FIGS. 1-4D. In step 605, the server electronic processor 425 accesses tool usage information previously collected from similar power tools. Additionally, the server electronic processor 425 accesses user characteristic information, such as characteristic information of a user using a respective power tool at a time the power tool is collecting tool usage information. For example, to build the machine learning control 585 for the impact drivers of FIGS. 1-4C and 5A, 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 velocity, usage time, battery state of charge, position of the power tool, position or velocity of the output shaft, number of impacts, and the like. Additionally, the server electronic processor 425 accesses user characteristic information previously collected (e.g., via the network 115). The server electronic processor 425 then proceeds to build and train the machine learning control 585 based on the tool usage data, the user characteristic information, or both (step 610).

[00113] Building and training the machine learning control 585 may include, for example, determining the 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 of each hidden layer, the number of output nodes, and the like. Training the machine learning control 585 includes providing training examples to the machine learning control 585 and using one or more algorithms to set the various weights, margins, or other parameters of the machine learning control 585 to make reliable estimations or classifications.

[00114] In some embodiments, building and training the machine learning control 585 includes building and training a recurrent neural network. Recurrent neural networks allow analysis of sequences of inputs instead of treating every input individually. That is, recurrent neural networks can base their determination or output for a given input not only on the information for that particular input, but also on the previous inputs. For example, when the machine learning control 585 is configured to identify a type of step bit used with the power tool 500, the machine learning control 585 may determine that since the last three operations used a particular step bit, the fourth operation is also likely to use the same step bit. Using recurrent neural networks helps compensate for some of the misclassifications the machine learning control 585 would make by providing and taking account the context around a particular operation. Accordingly, when implementing a recurrent neural network, the learning rate affects not only how each training example affects the overall recurrent neural network (e.g., adjusting weights, biases, and the like), but also affects how each input affects the output of the next input.

[00115] The server electronic processor 425 builds and trains the machine learning control 585 to perform a particular task. For example, in some embodiments, the machine learning control 585 is trained to identify an application for which the power tool 500 is used (e.g., for drilling with a step bit). In other embodiments, the machine learning control 585 is trained to detect when a detrimental condition is present or eminent (e.g., detecting kickback). The task for which the machine learning control 585 is trained may vary based on, for example, the type of power tool 500, a selection from a user, typical applications for which the power tool is used, user characteristic information, and the like. FIGS. 12A-15 expand on examples of particular tasks for which the machine learning control 585 is built and trained. The server electronic processor 425 uses different tool usage data to train the machine learning control 585 based on the particular task.

[00116] In some embodiments, the particular task for the machine learning controller 540 (e.g., for the machine learning control 585) also defines the particular architecture for the machine learning control 585. For example, for a first set of tasks, the server electronic processor 425 may build a support vector machine, while, for a second set of tasks, the server electronic processor 425 may build a neural network. In some embodiments, each task or type of task is associated with a particular 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 particular task.

[00117] 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). The server electronic processor 425, additionally or alternatively, transmits the trained machine learning control 585 to the power tool 500. In such embodiments, 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 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.

[00118] Once the machine learning control 585 is stored, the power tool 500 operates the motor 505 according to (or based on) the outputs and determinations from the machine learning controller 540 (step 620). In embodiments in which the machine learning controller 540 (including the machine learning control 585) is implemented in the server 110, 210, the server 110, 210 may determine operational thresholds from the outputs and determinations from the machine learning controller 540. The server 110, 210 then transmits the determined operational thresholds to the power tool 500 to control the motor 505.

[00119] The performance of the machine learning controller 540 depends on the amount and quality of the data used to train the machine learning controller 540. Accordingly, if insufficient data is used (e.g., by the server 110, 210, 310, 410) to train the machine learning controller 540, 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 for different applications and in a slightly different manner (e.g., some users may press the power tool 500 against the work surface with a greater force, some may prefer a faster finishing speed, and the like). These differences in usage of the power tool 500 may also compromise some of the performance of the machine learning controller 540 from the perspective of a user.

[00120] 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 the 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 with regard to the control of the motor from the earlier step 620. In other embodiments, however, the power tool 500 does not receive user feedback regarding the performance of the machine learning controller 540 and instead continues to operate the power tool 500 by executing the machine learning control 585. As explained in further detail below, in some embodiments, the power tool 500 includes 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 a user regarding the operation of the machine learning controller 540. The external device 107 then transmits the feedback indications 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). In some embodiments, the server 110, 210, 310, 410 may consider the lack of feedback from the power tool 500 (or the external device 107) to be positive feedback indicating an adequate performance of the machine learning controller 540. In some embodiments, the power tool 500 receives, and provides to the server electronic processor 425, both positive and negative feedback. In some embodiments, in addition or instead of 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 characteristic(s). For example, on a torque wrench embodiment of the power tool 500, the torque wrench includes a torque sensor to sense output torque during a step bit operation, and the sensed output torque is provided as feedback. The sensed output torque may be evaluated locally on the power tool 500, or externally on the external device 107 or the 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 an acceptable torque range, and negative when outside of the acceptable torque range). As discussed above, in some embodiments, the power tool 500 may send the feedback or other information directly to the server 110, 210, 310, 410 while in other embodiments, an external device 107 may serve as a bridge for communications between the power tool 500 and the server 110, 210, 310410 and may send the feedback to the server 110, 210, 310, 410.

[00121] 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 elapsed (e.g., every two months). In yet other embodiments, the server electronic processor 425 adjusts the machine learning control 585 continuously (e.g., after receiving each feedback indication). Adjusting the machine learning control 585 may include, for example, retraining the machine learning controller 540 using the additional feedback as a new set of training data or adjusting some of the parameters (e.g., weights, support vectors, and the like) of the machine learning controller 540. Because the machine learning controller 540 has already been trained for the particular task, re-training the machine learning controller 540 with the smaller set of newer data requires less computing resources (e.g., time, memory, computing power, etc.) than the original training of the machine learning controller 540.

[00122] In some embodiments, the machine learning control 585 includes a reinforcement learning control that allows the machine learning control 585 to continually integrate the feedback received by the user to optimize the performance of the machine learning control 585. In some embodiment, the reinforcement learning control periodically evaluates a reward function based on the performance of the machine learning control 585. In such embodiments, training the machine learning control 585 includes increasing the operation time of the power tool 500 such 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 manufacturing or before such that when a user operates the power tool 500, the machine learning control 585 can achieve a predetermined minimum performance (e.g., accuracy). The machine learning control 585, once the user operates his/her power tool 500, may continue learning and evaluating the reward function to further improve its performance. Accordingly, a power tool may be initially provided with a stable and predictable algorithm, which may be adapted over time. In some embodiments, reinforcement learning is limited to portions of the machine learning control 585. For example, in some embodiments, instead of potentially updating weights/biases of the entire or a substantial portion of the machine learning control 585, which can take significant processing power and memory, the actual model remains frozen or mostly frozen (e.g., all but last layer(s) or outputs), and only one or a few output parameters or output characteristics of the machine learning control 585 are updated based on feedback.

[00123] In some embodiments, the machine learning controller 540 interprets the operation of the power tool 500 by the user 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 sufficiently high, and may increase the motor speed directly, use the received feedback to re-train or modify the machine learning controller, or a combination thereof. Accordingly, 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 variance is based on user feedback, a learning rate, or both. Table 4 below, for example, indicates some control of the power tool 500 by the user and how the various types of control are interpreted as feedback regarding the machine learning controller 540 by the machine learning controller 540. This type of feedback may allow the machine learning controller 540 to determine appropriate motor control thresholds and parameters when, for example, the machine learning controller 540 lacks some information regarding the operation of the power tool 500. For example, these feedback mechanisms make it possible for the machine learning controller 540 to alter an operating mode to drill a hole with a step bit of unknown length.

[00124] In some embodiments, the server 110, 210, 310, 410 receives tool usage data from a variety of different power tools in, for example, block 625. Accordingly, when the server electronic processor 425 adjusts the machine learning control 585 based on the user feedback (block 630), the server electronic processor 425 may be adjusting the machine learning control 585 based on feedback from various users. In embodiments in which the machine learning controller 540 is fully implemented on the power tool 500 (e.g., such as discussed above with respect to FIG. 4A-B), the electronic processor 550 may use the feedback indications from only 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 the feedback information from particular users to adjust the machine learning control 585. Using the feedback information from particular users may help customize the operation of the power tool 500 for the user of that particular tool.

[00125] 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 outputs and determinations from the adjusted machine learning controller 540 (step 635). In some embodiments, such as the power tool system 300 of FIG. 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. The adjusted machine learning controller 540 improves its performance by using a larger and more varied dataset (e.g., by receiving feedback indications from various users) for the training of the machine learning controller 540. [00126] In some embodiments, the user may also select a learning rate for the machine learning controller 540. Adjusting the learning rate for the machine learning controller 540 impacts the speed of adjustment of the machine learning controller 540 based on the received user feedback. For example, when the learning rate is high, even a small number of feedback indications from the user (or users) will impact the performance of the machine learning controller 540. On the other hand, when the learning rate is lower, more feedback indications from the user are used to create the same change in performance of the machine learning controller 540. Using a learning rate that is too high may cause the machine learning controller 540 to change unnecessarily due to an anomaly operation of the power tool 500.

On the other hand, using a learning rate that is too low may cause the machine learning controller 540 to remain unchanged until a large number of feedback indications are received requesting a similar change. 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, the activation switch 545 used to enable or disable 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 positioned at a first end, the machine learning controller 540 may be disabled, as 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., smartphone, tablet, laptop computer, an ASIC, and the like), may communicatively couple with the power tool 500 and provide a user interface to, for example, select the 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 less options are available to set the learning rate, and may include the ability to turn off learning (i.e., setting the learning rate to zero).

[00127] As discussed above, when the machine learning controller 540 implements a recurrent neural network, the learning rate (or sometimes referred to as a “switching rate”) affect how previous inputs or training examples affect the output of the current input or training example. For example, when the switching rate is high the previous inputs have minimal effect on the output associated with the current input. That is, when the switching rate is high, each input is treated more as an independent input. On the other hand, when the switching rate is low, previous inputs have a high correlation with the output of the current input. That is, the output of the current input is highly dependent on the outputs determined for previous inputs. In some embodiments, the user may select the switching rate in correlation (e.g., with the same actuator) with the learning rate. In other embodiments, however, a separate actuator (or graphical user interface element) is generated to alter the switching rate independently from the learning rate. The methods or components to set the switching rate are similar to those described above with respect to setting the learning rate.

[00128] The description of FIG. 6 focuses on the server electronic processor 425 training, storing, and adjusting the machine learning control 585. In some embodiments, however, the electronic processor 550 of the power tool 500 may perform some or all of the steps described above with respect to FIG. 6. For example, FIG. 4 illustrates an example power tool system 400 in which the power tool 405 stores and adjusts the machine learning controller 540. Accordingly, in this system 400, the electronic processor 550 performs some or all of the steps described above with respect to FIG. 6. Analogously, in some embodiments, the electronic processor 575 of the machine learning controller 540 or the external device 107 performs some or all of the steps described above with respect to FIG. 6.

[00129] FIG. 7 is a flowchart illustrating a method 700 of operating the power tool 500 according to the machine learning controller 540 as referenced in step 620 of FIG. 6. In step 705, the power tool 500 receives a trigger signal from the trigger 510 indicating that the power tool 500 is to begin an operation. During operation of the power tool 500, the electronic processor 550 receives output sensor data (step 710) from the sensors 530. As discussed above, the output sensor data provide varying information regarding the operation of the power tool 500 (referred to as operational parameters) including, for example, motor position, motor speed, spindle position, spindle speed, output torque, position of the power tool 500, battery pack state of charge, date, time, time, time since last use, mode, clutch setting, direction, battery type, presence of side-handle, errors, history of past applications and switching rate, user input, external inputs, gear and the like, see again Table 3. The electronic processor 550 then provides at least some of the sensor data to the machine learning controller 540 (step 715). In embodiments in which the electronic processor 550 implements the 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, such as in the power tool system 100 of FIG. 1, the electronic processor 550 transmits some or all of the sensor information to the server 110 where the machine learning controller 540 analyzes the received information in real-time, approximately real-time, at a later time, or not at all.

[00130] The sensor information transmitted to the machine learning controller 540 varies based on, for example, the particular task for the machine learning controller 540. As discussed above, the task for the machine learning controller may vary based on, for example, the type of power tool 500. For example, in the context of an impact driver, the machine learning controller 540 for the power tool 500 may be configured to identify a type of application of the power tool 500 and may use specific operational thresholds for each type of application. In such embodiments, the electronic processor 550 may transmit, for example, the rotating speed of the motor 505, the rotating speed of the spindle, the operating mode of the power tool, but may not send the battery pack state of charge. The machine learning controller 540 then generates an output based on the received sensor information and the particular task associated with the machine learning block 540 (step 720). For example, the machine learning program executing 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 example above, the output of the machine learning controller 540 may indicate a type of application for which the power tool 500 is being used. 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 may use the output from the machine learning controller 540 to determine whether any operational thresholds (e.g., starting speed, maximum speed, finishing speed, rotating direction, number of impacts, and the like) are to be changed to increase the efficacy of the operation of the power tool 500. The electronic processor 550 then utilizes the updated operational thresholds or ranges to operate the motor 505. In another example, the output may indicate a condition of the tool and the electronic processor 550 controls the motor dependent on the condition. For example, and as described in further detail below, the condition may indicate an output torque value of the motor, an obstacle that is detected, an abnormal accessory condition that is detected, a kickback that is detected, or an operation that is finished (e.g., a step bit drilling operation is completed). The motor, in turn, may be controlled to stop, to increase speed, or decrease speed based on the condition, or may be controlled in other ways based on the condition. Although the particular task of the machine learning controller 540 may 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 achieve a greater operating efficiency.

[00131] In some embodiments, the machine learning controller 540 receives user characteristics of the current user of the power tool 500 in step 715, in addition to or instead of sensor data, and then generates an output in step 720 based on the user characteristics or based on the user characteristics and the sensor data received in step 715.. In some embodiments, in addition to or instead of controlling the motor in step 725, another electronically controllable element is controlled. For example, in some embodiments, one or more of an LED of the power tool (e. g., indicator 535) is enabled, disabled, has its color changed, or has its brightness changed; a gear ratio of the power tool is changed (e.g., the gear ratio is increased or decreased, or a gear ratio from a plurality of gear ratios is selected), a solenoid of the power tool is enabled or disabled, or an electronic filtering rate is adjusted for a faulting or noisy sensor.

[00132] In some embodiments, the server 110, 210, 310, 410 may store a selection of various machine learning controls 585 in which each machine learning control 585 is specifically trained to perform a different task. In such embodiments, the user may select which of the machine learning controls 585 to implement with the power tool 500. For example, an external device 107 may provide a graphical interface that allows the user to select a type of machine learning control 585. A user may select the machine learning control 585 based on, for example, applications for which the user utilizes the power tool 500 often (e.g., if the user often installs drywall), or commonly used power tools (e.g., a user often uses an impact driver). In such embodiments, the graphical user interface receives a selection of a 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 would then transmit a corresponding machine learning control 585 to the power tool 500, or may transmit updated operational thresholds based on the outputs from the machine learning control 585 selected by the user. Accordingly, the user can select which functions to be implemented with the machine learning control 585 and can change which type of machine learning control 585 is implemented by the server 110, 210, 310, 410 or the power tool 500 during the operation of the power tool 500.

[00133] FIG. 8a illustrates yet another embodiment of providing actuators to receive user feedback regarding the operation of the power tool 500 and regarding the operation of the machine learning controller 540, in particular. 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 may be associated with a different type of feedback. For example, the activation of the first actuator 785 may indicate that the operation of the machine learning controller 540 is adequate (e.g., positive feedback), while the activation of the second actuator 790 may indicate that the operation of the machine learning controller 540 is inadequate (e.g., negative feedback). For example, a user may indicate that changes made to the finishing speed are undesirable when the electronic processor 550 implemented a different finishing speed due to a determination by the machine learning controller 540 that the power tool 500 is being utilized for a particular application. In other embodiments, the first actuator 785 and the second actuator 790 (or an additional pair of buttons) are associated with increasing and decreasing 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 may activate the first actuator 785. FIG. 8a illustrates the first and second actuators 785, 790 on the handle of the power tool 500. In other embodiments, however, the first and second actuators may be positioned on the foot of the power tool 500, below the handle, or on the motor housing portion above the handle.

[00134] In another embodiment, the user may provide feedback to the electronic processor 550 by moving the power tool 500 itself. For example, the power tool 500 may include an accelerometer and/or a magnetometer (e.g., as a sensor 530) that provides an output signal to the electronic processor 550 indicative of a position, orientation, or combination thereof of the power tool 500. In such embodiments, clockwise or counterclockwise rotation of the power tool as illustrated in FIG. 8b may provide feedback information to the electronic processor 550. For example, rotating the power tool clockwise may correspond to a request for the electronic processor 550 to increase the speed of the motor 505, while rotating the power tool 500 counter-clockwise may correspond to a request for the electronic processor 550 to decrease the speed of the motor 505. In some embodiments, the electronic processor 550 may detect a shaking motion of the power tool 500 using similar sensors. Shaking the power tool 500 may indicate that the power tool 500 is not operating as expected by the user to provide negative feedback. For example, the user may shake the power tool 500 when the machine learning controller 500 determines the incorrect application for the current task of the power tool 500. As discussed above, providing such feedback allows the machine learning controller 540 to update its parameters to improve its performance. [00135] As discussed above, the machine learning controller 540 is associated with one or more particular tasks. The machine learning controller 540 receives various types of information from the power tool 500 and the electronic processor 550 based on the particular task for which the machine learning controller 540 is configured. For example, FIG. 9 illustrates a schematic diagram 900 of the various types of information that may be utilized by the machine learning controller 540 to generate outputs, make determinations and predictions, and the like. In the illustrated diagram, the machine learning controller 540 may receive, for example, an indication of the operation time of the power tool 500 (e.g., how long the power tool 500 is used in each session, the amount of time between sessions of power tool usage, and the like) 905, information regarding changes in bits, blades, or other accessory devices 910 for the power tool 500, the state of charge of the battery pack 915, the amount of time the battery pack has been in use, whether the battery pack was recently changed 920, and the like. The machine learning controller 540 may also receive information regarding the battery pack type 923 used with the power tool 500 (e.g., an 18V battery pack).

[00136] As discussed above, the mode pad 527 selects an operating mode for the power tool. The operating mode may specify operation parameters and thresholds for the power tool 500 during operation in that mode. For example, each operation mode may define a maximum torque, minimum torque, average torque, starting speed, finishing speed, non impacting speed, impacting speed, a speed ramp (e.g., how fast the motor 505 reaches the target speed), a target number of impacts, a rotation direction, a speed for each rotation direction, and a combination thereof. The combination of two or more operation parameters or thresholds define a tool use profile or mode. When the mode is selected by the user, the electronic processor 550 controls the motor 505 according to the operation parameters or thresholds specified by the selected mode, which may be stored in the memory 560. The machine learning controller 540 also receives information regarding the operating mode 925 of the power tool 500 such as, for example, the speed(s) associated with the mode, the mode torque, the mode ramp, and the like. The machine learning controller also receives sensor information 945 indicative of an operational parameter of the power tool 500 such as, for example, motor current, motor voltage, trigger activations or feedback from the trigger, motion of the power tool, motor speed, output shaft speed, and the like.

[00137] As discussed above, the machine learning controller 540 may also receive feedback from the user 927 as well as an indication of a target learning rate 928. The machine learning controller 540 using various types and combinations of the information described above to generate various outputs based on the particular task 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 starting or finishing speed 930, a suggested mode torque(s)

935, and a suggested mode ramp 940. A graphical user interface of the power tool 500 or external device 107 may display a suggested torque level and a suggested trigger ramp for a particular operating mode. Additionally, the machine learning controller 540 may determine a likely workpiece material (e.g., whether a power tool 500 is used on wood or drywall) 955. In some embodiments, the machine learning controller 540 may determine the condition of the bit or blade 960 attached to the power tool 500. In some embodiments, the machine learning controller 540 can also identify particular events such as an exceeded target step, a broken bit, 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 such that corrective action may be taken. In some embodiments, for example, when the machine learning controller 540 implements a recurrent neural network, the 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 target step has been exceeded, the machine learning controller 540 may then alter the finishing speed when drilling an additional hole(s) to inhibit exceeding the target step in the second hole(s).

[00138] As discussed above, the architecture for the machine learning controller 540 may vary based on, for example, the particular task associated with the machine learning controller 540. In some embodiments, the machine learning controller 540 may include a neural network, a support vector machine, decision trees, logistic regression, and other machine learning architectures. The machine learning controller 540 may further utilize kernel methods or ensemble methods to extend the base 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 received feedback indications from the user.

[00139] FIG. 10 illustrates a diagram 1000 for an example use of the machine learning controller 540. In the illustrated embodiment, the machine learning controller 540 is configured to identify a type of step bit or step bit profile being driven by the power tool 500. In such an embodiment, the machine learning controller 540 receives, for example, a number of rotations 1005, a load torque 1010, a motor speed 1015, a torque or speed ramp slope 1020, information regarding whether the load increases monotonically 1025, information regarding whether the load increases rapidly toward the end of the operation 1030, information regarding the tool movement 1035 (e.g., rotation of the power tool 500, output signals from an accelerometer), and a selected operating mode 1040 for the power tool 500.

In one embodiment, the information (operational parameters) described above is generated by the electronic processor 550 based on sensor data from the sensors 530, arithmetic operations using the sensor data (e.g., to calculate slope), and comparisons of the sensor data or calculated values with threshold (e.g., defining whether an increase is rapid). The generated information is then received by the machine learning controller 540 after each operation by the power tool 500 is completed (e.g., after one or more steps have been reached, the step bit is fully seated, or a step bit has been removed). Based on the received information, the machine learning controller 540 determines a characteristic step bit profile used in the operation of the power tool 500. In the illustrated embodiment, the machine learning controller 540 may utilize, for example, a neural network with multiple outputs such that each output corresponds to a different type of step bit profile. In some embodiments, the machine learning controller 540 may also generate an output indicating that the step bit was unable to be identified.

[00140] In one example, the machine learning controller 540 may identify one or more characteristics of a step bit and/or step bit process to determine a step bit profile from various potential step bit profile types. For example, the machine learning controller 540 may differentiate between step bits based on step diameters, or step bits designed for drilling into wood versus one designed for metal among other types of step bits (e.g., see FIG. 12A and 12B). Accordingly, in the illustrated embodiment of FIG. 10, the training examples for the machine learning controller 540 include an input vector indicating the number of rotations 1005, the load torque 1010, the motor speed 1015, the torque or speed ramp slope 1020, an indication of whether the load increases monotonically 1025, an indication indicating whether the load increases rapidly toward the end of the operation 1030, an indication regarding the tool movement 1035, the selected mode of operation 1040, and an output label indicating the type of step bit. In the illustrated embodiment, the machine learning controller 540 implements an artificial neural network to perform this classification. The artificial neural network includes, for example, six input nodes, and, for example, one hundred output nodes. Each output node, for example, corresponds to a different type of step bit identifiable by the machine learning controller 540, and an additional output to indicate to the power tool 500 when the step bit under question does not correspond to any of the identifiable type of step bit. The artificial neural network may include more or less output nodes based on the number of step bits able to be differentiated. In some embodiments, the neural network includes an additional layer including a single node. This additional layer may determine which output node has the highest values (which may correspond to the probability that the type of step bit is identified as the type of step bit corresponding to that output node), and outputs a value (e.g., one, two, three, or four) associated with the output node. The value of the output node may correspond to a type of step bit identified by the machine learning controller 540.

[00141] During training of the machine learning controller 540 to identify one or more characteristics about the step bit and/or step bit process, the machine learning controller 540 adjusts the weights associated with each node connection of the neural network to achieve a set of weights that reliably classify the different types of step bits. As discussed above with respect to FIG. 1, each node of a neural network may have a different activation network, so adjusting the weights of the neural network may also be affected by the activation functions associated with each layer or each node. Once the neural network is trained, the machine learning controller 540 receives the input variables (e.g., the values associated with each input variable), and applies the weights and connections through each layer of the neural network. The output or outputs from the trained neural network correspond to a particular type of step bit identifiable by the machine learning controller 540. The output or outputs from the trained neural network may also correspond to various characteristics associated with the step bit (e.g. step bit dullness, unevenness of step bit steps, etc.) and/or the step bit process (e.g. typical user forward rate, typical applied pressure, material properties, such as thickness, etc.). In some embodiments, the step bit and/or step bit process characteristics may be used by the machine learning controller 540 to better identify steps in future operations.

In other embodiments, the machine learning controller may provide the step bit and/or step bit process characteristics to one or more subsequent counting or processing algorithms that receive the output of the machine learning controller 540.

[00142] FIG. 11 is a flowchart illustrating a method 1050 for identifying a type of step bit using the machine learning controller 540. The method 1050 may also be configured to determine one or more characteristics of a step bit, such as, a step bit dullness, unevenness of the step bit steps, and/or characteristics of the step bit process, such as typical user forward rates, typical applied user pressure, and material properties using the machine learning controller 540. At step 1055, the electronic processor 550 receives a signal from the trigger 510 indicating that the user is operating the power tool 500. The electronic processor 550 begins to operate the power tool 500 and receiving sensor data from the sensors 530 (step 1060). As discussed above, sensor data is indicative of one or more operational parameters of the power tool and may include, for example, motor speed and/or position information, torque information, impact information, tool movement information, information regarding the selected mode, and the like. The electronic processor 550 then sends at least a subset of the sensor data to the machine learning controller 540 (step 1065). As discussed above with respect to FIG. 10, the machine learning controller 540 of the illustrated embodiment receives the motor speed, the torque and torque ramp, and 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 directly received from the sensors 530. For example, the electronic processor 550 may determine whether the load on the power tool 500 increases monotonically or if the load increases rapidly (e.g., spikes) toward the completion of the operation. The electronic processor 550 also sends these intermediary inputs (e.g., calculated or determined by the electronic processor 550 based on signals from the sensors 530) to the machine learning controller 540 as sensor data in step 1065. In step 1067, the machine learning controller 540 also receives an indication of a selected operating mode for the power tool 500.

[00143] The machine learning controller 540 then generates an output identifying the type of step bit in use by the power tool 500 (step 1070). As discussed above with respect to FIG. 10, the machine learning controller 540 generates the output identifying the type of step bit by using an artificial neural network. In other embodiments, the machine learning controller 540 may implement a different architecture to identify the type of step bit used by the power tool 500. In particular, the machine learning controller 540 receives the values for the input variables and uses these values to progress across the layers of the neural networks using the node connection weights and the activation functions for each node. As described above, the output layer may include one or more output nodes indicating the type of step bit used by the power tool 500, or indicating that the type of step bit was not identifiable by the machine learning controller 540.

[00144] In step 1075, a suggested change to an operating mode of the power tool is generated based on the identified type of step bit. The suggested change generated is then stored in a tool profile of the memory 560 by the electronic processor 550 as an operation parameter or threshold (e.g., as a progress threshold for use in block 1510, described in further detail below). The suggested change is generated by an electronic processor that receives the identified type of step bit from the machine learning controller 540, such as the electronic processor implementing the machine learning controller 540 or another electronic processor that is not implementing the machine learning controller 540, which, depending on the embodiment may be the electronic processor 550, an electronic processor of the external device 107, or the server electronic processor 425. The suggested change may be generated using the identified type of step bit as an input to a lookup table (stored in memory associated with the particular electronic processor) that maps step bit types to suggested operation parameters of the power tool 500. In step 1091, the machine learning controller 540 operates the motor 505 according to the changed tool profile.

[00145] The machine learning controller 540 has various applications and can provide the power tool 500 with an ability to analyze various types of sensor data and received feedback. Generally, the machine learning controller 540 may 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 analytics that help the user make more educated decisions. Table 5 below lists a plurality of different implementations or applications of the machine learning controller 540. For each application, Table 5 lists potential inputs to the machine learning controller 540 that would provide sufficient insight for the machine learning controller 540 to provide the listed potential output(s). The inputs are provided by various sources, such as the sensors 530 or user input, as described above.

[00146] In one embodiment, the machine learning controller 540 may be used to analyze operational data for a tool 500 to identify a user currently using the tool. As users may operate the same tool 500 in different manners or for different tasks, the machine learning controller 540 may change the operation of the power tool 500 or a training of the machine learning controller 540 based on characteristics of an identified user, such as the user's trade, present geographic area, age, gender, strength, physical dimensions, or any other characteristics as desired. Accordingly, a plurality of machine learning controllers 540 in respective power tools 500 may provide a similar experience between power tools 500 for respective users. With respect to FIG. 7, for example, sensor signals are input to the machine learning controller 540 (step 715). The machine learning controller may then output (step 720) an identity of the user currently using the tool based on the sensor signals, and tool is then operated based on output (i.e., the identity of the user) (step 725). For example, a power tool may be operated with a reduced maximum motor current or a more sensitive anti kickback feature with reduced triggering thresholds based on the identity of the user currently using the tool, which may indicate a user preference or user characteristic. The particular 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 into a further machine learning program of the machine learning controller 540 that is used to generate a further output on which operation of the motor is based.

[00147] In one embodiment, the machine learning controller 540 may be used to analyze movement data for tools 500 performing applications during development of the tools 500 and then the resulting pattern recognition information may be included on machine learning controllers 540 that are sold such that tools are pre-trained.

[00148] In another embodiment, direct user feedback (button, manual phone input, shaking / hitting tool, override of application mode.) can also be useful input to the machine learning controller 540. A user might provide a “how much to obey the machine learning controller 540 recommendation vs. the trigger” setting such that there is override capability. This could be via an app, a tool input (ex: slider, dial, button) or via trigger switch 555 (multi-stage, function of input, nonlinear trigger, etc.).

[00149] Additionally, the machine learning controller’s 540 programming may be periodically adjusted by updates, e.g., over the air updates, etc. User input with “most common applications” and other defining characteristics or preferences (“I like to preserve blades over cut fast,” “I strongly prefer vibration minimization” etc.) all may feed into the machine learning controller 540. In some embodiments, a user preference or characteristic persists between or across power tools. For example, a user preference for minimized vibration may be used to train a machine learning controller 540 or operate a power tool of a similar type previously used by the user. Alternatively, or in addition, such a user preference or user characteristic may be used to train a machine learning controller 540 or operate a power tool of a dissimilar type previously used by the user. For example, a user with a preference for minimized vibration in an impact driver may be provided a reciprocating saw with a machine learning program pre-trained for minimized vibration.

[00150] Accordingly, as discussed above, the machine learning controller 540 can provide the power tool 500 with an ability to analyze various types of sensor data and provide feedback to the user by one or more of implementing or suggesting changes to an operational mode of the power tool 500, changing the operation of the power tool 500, or providing analytics regarding the use of specific power tools or power tool devices (e.g., power boxes).

[00151] As described above, power tools, such as power tool 105 may be used for various purposes. In one specific application, power tools such as drills, impact drivers, screwdrivers, hydraulic pulse tools, and impact tools can be used by a power tool user to drive a step bit and to improve step bit operation using machine learning.

[00152] Traditionally, techniques for improving tool operation have included using torque- based mechanical or electrical clutches, such as those on drills and powered screwdrivers; contact sensors and clutches, such as those on screw drivers; and different tool modes used in other tools. Tool modes may limit parameters such as output speeds, motor currents, or application durations, and often use profiles and/or basic state machines to perform the desired operations. These tool modes are present on some drills, pulse tools, and impact tools. The tool modes may be used with a wide variety of sensory inputs, such as currents, voltages, temperatures, trigger inputs, motion, forces, contact, and position detection (e.g., inductive sensors in impact drivers). The programming of such tool modes has generally been implemented as a series of consecutive tool states (e.g., basic state machines), wherein the power tool may be required to move from a ramp-up state, to a sustain-an-output state, to a state in which a fixed number of impacts are counted, to a ceasing state. Alternative states can occur in response to signals such as in the case of detecting kickback in the case of certain tools, such as drills.

[00153] The above programming of general tool modes is usually fixed, meaning that memory has not been employed that might use signals or results from previous uses and apply them to future runs for adaptive characteristic output responses. The programming of traditional tool modes is usually narrow in focus (such as using a drill), simplistic in control (such as setting a target speed) or, if broader in application (such as general ‘torque level’), are often inconsistent in performance. Table 6, below, illustrates a comparison of features, aspects, and themes of traditional power tools for drilling to machine learning step bit power tools, such as those described herein.

[00154] As stated above, various sensors may be used on the power tool 105 to effectuate machine learning for a specific purpose. Turning now to Table 7, potential sensor devices for using machine learning to effectuate drill operations with step bits are shown.

[00155] Referring again to FIG. 10, an example embodiment is provided for use of the machine learning controller 540 with a power tool, such as power tool 500. In the example embodiment, the machine learning controller 540 is configured to determine a level of advancement of a step bit toward a target step of a step bit coupled to the power tool 500 (e.g., the step 1212B of step bit 1210 shown in FIG. 12B). In other examples, the machine learning controller 540 is configured to determine the active advancement from one step to the next step. For example, the machine learning controller 540 determines when the step bit approaches a level of advancement into a workpiece to a depth corresponding to the length of the distance from the forward tip of the step bit to the target step, and continues to determine the level of advancement until the target step is reached (e.g., at the surface of the workpiece). In such an embodiment, the machine learning controller 540 receives multiple operational parameters (inputs) associated with the tool 500. These operational parameters may include a number of rotations 1005, a measured torque 1010, a characteristic speed 1015, one or more voltages 1008, one or more currents 1006, a selected operating mode 1040 of the tool 500, a fluid temperature 1014 (e.g., for use on hydraulic impulse tools), a distance or orientation of between the tool and the surface of the work piece (e.g. provided via a distance sensor), and tool movement information 1016 (e.g., provided via a gyroscope, a motion sensor, and the like.). In one embodiment, the information (operational parameters) described above is generated by the electronic processor 550 based on sensor data from the sensors 530, arithmetic operations using the sensor data (e.g., to calculate torque), and comparisons of the sensor data or calculated values with a threshold (e.g., defining whether an increase or decrease of an operational 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 and outputs an advancement level 1018 of the step bit to the electronic processor 550, and the electronic processor 550 controls an output of the tool 500 accordingly. For example, the machine learning controller 540 may indicate to the electronic processor 550 to slow the rotation of the tool when the advancement is nearing a target step, and/or to cease operation of the tool when the step bit fully advances into the workpiece the length of the step bit up to the target step. In one embodiment, the machine learning controller 540 may utilize, for example, a neural network with multiple outputs such that each output corresponds to a speed value for the tool 500. In some examples, the neural networks may be relatively small, thereby allowing the electronic processor 550 to perform the functions of the machine learning controller 540 without first significantly increasing processing capacity or capabilities, or otherwise upgrading the hardware of the processor 550.

[00156] Step bit profiles, diameters, and overall characteristics may vary widely. The clarity of sensor signals captured by the power tool 500 are dependent on characteristics of the step bit as well as characteristics of a workpiece the step bit is drilling into and user behavior when operating the tool. FIGS. 12A-12B illustrate two examples of a step bit. Step bit 1202 includes a plurality of steps, two of which are labeled as step 1204A and step 1204B. Step bit 1210 also includes a plurality of steps, three of which are labeled as step 1212A, step 1212B, and step 1212C. The step bit 1210 has a greater length than the step bit 1202, and a different step profile than step bit 1202. For example, each step of the step bits 1202 and 1210 have an associated diameter. The range of diameters of the step bit 1202 is larger than the range of diameters of the step bit 1210, with largest step of the step bit 1202 (step 1204B) being larger than the largest step of the step bit 1210 (step 1212C), and with the smallest step of the step bit 1210 (unlabeled) being smaller than the smallest step of the step bit 1202 (unlabeled). However, the largest step 1212c of the step bit 1210 is larger than one or more of the smaller steps of the step bit 1202. The step bits 1202 and 1210 may be respectively coupled to the power tool 500 and driven by the motor 505 based on machine learning techniques described herein.

[00157] FIG. 13 illustrates a graph 1300 of scaled sensor output values for detecting steps of a step bit advancing into a sheet metal workpiece over time. Various sensors 530 may generate output signals that are received by the machine controller 540 of the tool 500. The sensor output signals are useful in detecting and counting steps of a step bit coupled to the power tool 500 and driven by the motor 505. Output signals of the sensor(s) 530 may indicate, for example, current (e.g., of the motor or battery), voltage (e.g., of the motor or battery), trigger activation or pull depth, motor speed (e.g., based on Hall sensor outputs sensing rotor rotation), motor acceleration (e.g., based on Hall sensor outputs sensing rotor rotation), tool accelerometer (e.g., from an accelerometer), rotational motion or tool orientation (e.g. from gyroscope), force or torque (e.g., from load cells in hydraulic pulse tools and drills), hammer and/or anvil position, component motion (e.g., for hydraulic pulse tools and impacts), inductive position sensing (impacts). Referring to the graph 1300 of FIG. 13, the data represents a step bit going into a 1/8 inch sheet of aluminum to create a ½ inch diameter hole. The step bit is configured for making thirteen hole sizes in 1/32 of an inch increments ranging from 1/8 inch to ½ inch. The sensor signals 1402 (from a gyroscope 530), sensor signals 1404 (from an accelerometer 530), and sensor signals 1406 (from a current sensor 530) may be utilized to count the steps advancing into the sheet metal workpiece. The sensor signals in FIG. 13 show thirteen step responses, which may be most visible in the output in the gyroscope output signal 1402. The graph illustrates the difficulty associated with counting steps of step bit due to wide variations and noise in the signals. However, the machine learning algorithms discussed herein are capable of detecting the steps captured in the signals.

[00158] Turning now to FIG. 14, a process 1400 for training and operating a power tool with machine learning, such as power tool 500, using static logic is provided. In one embodiment, machine learning is performed by a machine learning controller, such as 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 effectuate the machine learning, such as by requiring a smaller neural network. By reducing the computing power and/or other processing resources required, the process machine learning controller 540 may be integrated into the processor 550, as described above. However, in other examples, the machine learning controller 540 may have its own processor, as described above.

[00159] In a static logic tool, the machine learning controller 540 may be programmed prior to the tool being provided to a user (e.g., during manufacturing), and not subsequently updated. The static logic may be used with various tools coupled with step bits, such as drills, pulse, or impact tools. In some embodiments, the tools have multiple modes, such as step bit mode, and various drill bit type modes. The static logic tool may also be a drill, impulse, or impact tool capable of applying a precision drilling torque.

[00160] At process block 1402, tool data is collected. In some embodiments, the tool data is collected during product development and/or manufacturing. The tool may be used in various situations to generate the data. Multiple data points are used as there are many variables that may affect determining when a step bit is advancing into a workpiece, and to what degree it has advanced. As shown in FIG. 14, an example of sensor output including a gyroscope signal 1402, an accelerometer signal 1404, and a current sensor signal 1406 indicate the advancement of the step bit. Peaks of the signals 1402, 1404, and 1406 illustrate detection of steps being reached in the workpiece. Thus, multiple data points via the multiple inputs are used by the machine learning controller 540 to effectively generate the proper algorithms. [00161] In some embodiments, to collect tool data, step bit drilling operations are performed numerous times and/or with numerous step bits. For each step bit drilling operation, various data is collected, such as, for example: step bit type, length; number of steps; diameters; material type and thickness; number and order of layers of materials; user experience, size, and age; battery type, charge level and age; sensed data generated by the tool sensors (e.g., current, voltage, acceleration, temperature, motor rotation velocity, motor rotation acceleration, torque); sensed data generated by external sensors (e.g., torque, tool acceleration); indications of step bit advancement, and indication of step counting success. Different users may operate the tool over the course of the many step bit operations used to generate the data 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 advance the step bit into the workpiece. Power supply types may also be varied and evaluated during data collection. For example, where the tool 540 is a battery powered tool, various batteries may be used during the collection of tool data, such as 1.5Ah, 2Ah, 3Ah, 5Ah, 6Ah, 9Ah, and/or 12Ah batteries. Furthermore, the batteries may be used having various states of charge. Various material combinations may be used or layered during the collection of tool data as well. In one embodiment, the combinations are two layer combinations. However, other values of layered combinations are also contemplated. Additionally, multiple different types of step bits may be used to collect tool data. Even where the tool is being programmed to use one type of step bit, such as a metal step bit, multiple different lengths and step bit profiles be used to collect the tool data. Additionally, models previously trained on one application (even an unknown or unlabeled application) may be used to help train yet another application (for example, dry wall data or other unlabeled field data may pertain to a model used for a step bit designed for metal)

[00162] In one example, the torque values are determined using a load cell within the hydraulic pulse tool. In some embodiments, torque measurements can provide better data to the machine learning controller 540 for determining step bit conditions. For example, the characteristic torque (e.g., the sustained loading experienced with each pulse) may be fed directly into a recurrent neural network (RNN). In other examples, the characteristic torque may be input or buffered into a DNN or CNN. The machine learning controller 540 can then use the characteristic torque to evaluate a step bit condition. In one embodiment, the machine learning algorithm helps estimating sustained loading of the tool, along with other sensor data, especially as the sustained loading becomes harder to determine. [00163] Upon the tool data being collected, a machine learning control, such as machine learning control 585 described above, associated with the machine learning controller 540 is built and trained at process block 1404. 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 the 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 of each hidden layer, the number of output nodes, and the like. Additionally, building the neural network may involve feature engineering whereby the ideal inputs and potential filters, combination, or calculations are selected. Furthermore, the neural network output may be provided into one or more output filters on the neural network such that noisy sensor data estimates crossing a threshold too early. In some embodiments, the output filters’ parameters are optimized using machine learning. Training the machine learning control 585 includes providing training examples, such as those described above, to the machine learning control 585 and using one or more algorithms to set the various weights, margins, or other parameters of the machine learning control to make reliable estimations and/or classifications.

[00164] In some embodiments, building and training the machine learning control 585 includes building and training a recurrent neural network. Recurrent neural networks (RNNs) allow analysis of sequences of inputs instead of treating every input individually. That is, recurrent neural networks can base their determination or output for a given input not only on the information for that particular input, but also on the previous inputs. RNNs can operate in different ways. In a first example, each tool operation or “run” may be considered independent for which there is no previous memory of the last run. However, the RNN may aggregate and use some or all of the time series data during a run. Thus, one version of an RNN may provide more robust output than a DNN of filtered, processed, buffered, or raw data. RNNs are convenient in that they process data in multiple steps and, at least in some embodiments, do not require a memory that holds all previous run-time series data. This processing is especially useful as the duration of a run can vary and may be quite long. Moreover, RNNs may efficiently feed multiple outputs that govern output speed in addition to determining when to cease tool operation. [00165] In a second example, RNNs may also save at least part of their state from one run and use this in a subsequent run. For example, when the machine learning control 585 is configured to monitor advancement of a step bit, the machine learning control 585 may determine that since the previous three operations advanced the step bit to a first diameter, the fourth operation is also likely to advance to the first diameter. Using RNNs helps to compensate for some of the misclassification that the machine learning control 585 may make, by providing and taking account of the context around a particular operation. Other use cases include identifying characteristic user hand stiffness, runout characteristics of the tool, battery state, grease properties, workpiece stiffness, use of adapters, condition of accessories, etc. This information can be fed back into the next run or series of runs. As another example, when the machine learning control 585 is configured to monitor advancement of a step bit, the machine learning control 585 may determine that a user tends to have a loose grip. This information in a typical RNN may be heavily encoded. The loose grip information from a previous run can then be used in the following run whereby a rotational or other motion sensor may exhibit a higher degree of motion during operation and thus the algorithm can expect a more exaggerated motion signal during operation, improving its consistency.

[00166] Other common characteristics helpful to pass between subsequent runs are estimates of a step bit tip sharpness, a typical user feed rate, a typical spacing between the steps, the step sharpness, battery type used (power rating and/or its added mass), typical thickness of sheet metal (e.g. commercial or residential applications thereof), etc. The machine learning control 585 may then determine the exact step of the step bit at which to stop using an RNN as described above, or, in other examples, using a likelihood matrix such as a Markov chain, as further described below.

[00167] In a third example, another use of an RNN is to use a substantially non-recurrent neural network such as a DNN or CNN where there is some subset of output of previous runs that is fed as a set of inputs into a machine learning algorithm. An example is a DNN that identifies the use of a particular step bit by updating a matrix of likely use cases. This matrix of likely use cases is then fed into the machine learning algorithm as one of the inputs. In some of the above examples where information is passed from one run to the next, the information may be filtered, curtained, aggregated, or reset depending on information such as time between use cases, switching of modes, switching of batteries, sensor data indicating tool movement or changing of accessories. A more complex recurrent algorithm may be used where a previously detected state of drilling suggest a pilot hole for a subsequent particular step bit. Such a complex algorithm is another RNN, in one example. In other examples, the algorithm is a variant of a Markov chain that can govern the inputs to the machine learning control 585.

[00168] In some instances a DNN or CNN could be used on signals or filtered signals near or around where a step is suspected. The DNN or CNN may then be used to evaluate a typical step prominence based on the signals or filtered signals. The prominence information can be fed into later runs prior to the corresponding step to again help set threshold criteria.

In this example, the input to the DNN or CNN is on each short time segment of a step. A DNN or CNN can also be used to take data associated with one or more suspected steps (e.g. based on prominence of steps, spacing of steps, other characteristics, etc.) and subsequently output a likely step bit that is being used. This type of step bit model will help future classifications. In this example, the input to the DNN or CNN is on a sequence of individual steps in which one dimension of the input preferably corresponds to each step taken by the tool.

[00169] As described above, the machine learning control 585 is trained to perform a particular task, such as accurately advancing a step bit into a working material to a specified step. Additionally, the machine learning control 585 is trained to detect and account for detrimental conditions, such as material changes, knots, kickback etc., when determining a step level and how control a step bit. The task for which the machine learning control 585 is trained may vary based on, for example, the type of power tool 500 (e.g., drill/driver, impulse, impact, and the like), a selection from a user, user characteristic information, and the like.

[00170] After the machine learning control 585 has been built and trained, the machine learning control is saved at process block 1406. In some embodiments, machine learning control 585 is saved in the memory 430 of the server 110. The machine learning control 585 may 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.

[00171] Once the machine learning control 585 is stored, the power tool 500 operates in a step bit mode based on machine learning control 585 at process block 1408. Various example techniques for operating the power tool 500 in the step bit mode are explained with in further detail below with respect to the method 1500 of FIG. 15. In embodiments in which the machine learning controller 540 (including the machine learning control 585) is implemented in the server 110, 210, the server 110, 210 may determine operational thresholds from the outputs and determinations from the machine learning controller 540. The server 110, 210 then transmits the determined operational thresholds to the power tool 500 to control the motor. 505.

[00172] 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. Accordingly, if insufficient data is used (e.g., by the server 110, 210, 310, 410) to train the machine learning controller 540, 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 from other users (e.g., some users may press the power tool 500 against the work material with a greater force, some may prefer a faster finishing speed, and the like). These differences in usage of the power tool 500 may also compromise some of the performance of the machine learning controller 540 from the perspective of a user.

[00173] The use of adaptive logic allows for certain logic to be static, but also allow for parameters that change from one run to the next. These changes can allow a tool to update the likelihood of a given step bit type or characteristic (e.g., material hardness) between operations. This adaptive logic provides an ability to anticipate a step approaching during a drilling operation (and may slow down). The adaptive aspects may include thresholds for a machine learning algorithm (such as those described herein), profile parameters (e.g., ideal ramp ups, max speeds, and the like), anticipated rotations, 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 way that does not use machine learning (but is still in effect acting as a neural network, such as an RNN). One example is a conditional statement whereby, if a tool has not been used for ten minutes (or another specified time), the historical information from previous runs is reset towards a default. The adaptive aspects can create substantial influence on the output performance of a tool with the machine learning control 585 without the potentially computationally intensive training of the whole machine learned logic.

[00174] In some embodiments, at process block 1410, 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. Thus, in at least some embodiments, the feedback is with regard to the control of the motor from the earlier step 1408. In other embodiments, however, the power tool 500 does not receive user feedback regarding the performance of the machine learning controller 540 and instead continues to operate the power tool 500 by executing the machine learning control 585. As explained above, in some embodiments, the power tool 500 includes specific feedback mechanisms 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 a user regarding the operation of the machine learning controller 540. The external device 107 then transmits the feedback indications 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).

[00175] In other embodiments, the server 110, 210, 310, 410 may consider the lack of feedback from the power tool 500 (or the external device 107) to be positive feedback indicating an adequate performance of the machine learning controller 540. In some embodiments, the power tool 500 receives, and provides to the server electronic processor 425, both positive and negative feedback. In some embodiments, in addition or instead of 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 characteristic(s). For example, on an impulse tool embodiment of the power tool 500, the impulse tool includes a torque sensor to sense output torque during a step bit operation, and the sensed output torque is provided as feedback. The sensed output torque may be evaluated locally on the power tool 500, or externally on the external device 107 or the 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 an acceptable torque range, and negative when outside of the acceptable torque range). As discussed above, in some embodiments, the power tool 500 may send the feedback or other information directly to the server 110, 210, 310, 410 while in other embodiments, an external device 107 may serve as a bridge for communications between the power tool 500 and the server 110, 210, 310410 and may send the feedback to the server 110, 210, 310, 410. Furthermore, randomization may be used to test if alternative logic for the machine learning control 585 may be more suitable. [00176] The machine learning control 585 is then adjusted based on the user feedback at process block 1412. 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 period of time has elapsed (e.g., every two week or two months). In yet other embodiments, the server electronic processor 425 adjusts the machine learning control 585 continuously (e.g., after receiving each feedback indication). Adjusting the machine learning control 585 may include, for example, retraining the machine learning controller 540 using the additional feedback as a new set of training data or adjusting some of the parameters (e.g., weights, support vectors, and the like) of the machine learning controller 540. Because the machine learning controller 540 has already been trained for the particular task, re-training the machine learning controller 540 with the smaller set of newer data requires less computing resources (e.g., time, memory, computing power, etc.) than the original training of the machine learning controller 540.

[00177] In some embodiments, the machine learning control 585 includes a reinforcement learning control that allows the machine learning control 585 to continually integrate the feedback received by the user to optimize the performance of the machine learning control 585. In some embodiment, the reinforcement learning control periodically evaluates a reward function based on the performance of the machine learning control 585. In such embodiments, training the machine learning control 585 includes increasing the operation time of the power tool 500 such 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 manufacturing or before such that when a user operates the power tool 500, the machine learning control 585 can achieve a predetermined minimum performance (e.g., accuracy). The machine learning control 585, once the user operates his/her power tool 500, may continue learning and evaluating the reward function to further improve its performance. Accordingly, a power tool may be initially provided with a stable and predictable algorithm, which may be adapted over time. In some embodiments, reinforcement learning is limited to portions of the machine learning control 585. For example, in some embodiments, instead of potentially updating weights/biases of the entire or a substantial portion of the machine learning control 585, which can take significant processing power and memory, the actual model remains static or mostly static (e.g., all but last layer(s) or outputs), and only one or a few output parameters or output characteristics of the machine learning control 585 are updated based on feedback.

[00178] In some embodiments, the machine learning controller 540 interprets the operation of the power tool 500 by the user 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 sufficiently high, and may increase the motor speed directly, use the received feedback to re-train or modify the machine learning controller, or a combination thereof. Accordingly, 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 variance is based on user feedback, a learning rate, a randomization, or a combination thereof.

[00179] After the machine learning controller is adjusted, the motor is operated based on the updated output from the machine controller 540 at process block 1414. In one embodiment, the server electronic processor 425 adjusts the machine learning controller 540 based on the user feedback, and the power tool 500 operates according to the outputs and determinations from the adjusted machine learning controller 540. In some embodiments, such as the power tool system 300 of FIG. 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 1414).

[00180] FIG. 15 illustrates a flow chart 1500, also referred to as a method 1500, for automatically controlling a step bit operation in the power tool 500. In some embodiments, the method 1500 is executed to implement the process block 1408 of FIG. 14. Prior to operation of the power tool 500 for drilling a hole in a workpiece using a step bit (e.g., the step bit 1202, 1210, or another step bit) in accordance with the method 1500, the power tool 500 may be configured (e.g., in a configuration mode). For example, the machine learning controller 540 of the power tool 500 may be trained for operation with the step bit or may receive a static or adjustable machine learning control program for operation with the step bit from another device such as one of the servers 120, 210, or 310, the external device 107, or the battery pack 480 (see, e.g., process blocks 1402-1406 described above). In some embodiments, the power tool 500 may be set to a step bit mode of operation and/or may detect a step bit coupled to the power tool 500. A step bit mode may be associated with a number of steps of a step bit, a particular type of step bit (e.g., step bit profile, length, diameter, number of steps, etc.), and/or a type of workpiece or characteristics of a workpiece that is to be drilled into using the step bit coupled to the power tool 500. In some embodiments, the tool may begin a drilling operation with a step bit (e.g., the step bit 1202 or 1210) coupled to the power tool and recognize the type of step bit or a step bit profile (or other characteristics) using machine learning rather than using user input such a step bit mode. In some embodiments, a user may configure the power tool 500 to have a particular progress threshold for use in the method 1500, such as indicating a number of steps to count when drilling into the workpiece before a particular control action is taken. For example, a clutch ring on the power tool 500 (see, e.g., the tool 500 with a clutch ring 501 in FIG. 8b) can be used as an input to the machine learning controller of the tool 500 to indicate a desired number of steps to be drilled with a step bit, where a clutch ring sensor (e.g., potentiometer or Hall sensor) may provide an indication of a rotational position of the clutch ring, which is mapped to a corresponding desired number of steps. For example, each selectable rotational position of the clutch ring may be mapped to a particular number of steps (e.g., a number between 1 and 10, between 1 and 20, or the like). In some embodiments, a user may configure the power tool 500 for the method 1500 by selecting a particular action to be taken, such as to slow rotation of the motor 505 or stop rotation of the motor 505, when a progress threshold is reached, such as when approaching a step, when a step occurs, or when a step has just occurred during drilling. The configuration data may be provided to the machine learning controller 540 by one or more user inputs on the power tool 500, such as the aforementioned clutch ring, input buttons, the trigger, or a dial on the power tool 500, or by user input at the external device 107 that is then communicated to the power tool 500. For example, a user may input common hole sizes, corresponding step bit skews, and/or common workpiece materials in a user application (e.g., at the external device 107), and the user application transmits to the power tool 500 the progress threshold based on the user input. In some embodiments, the power tool 500 is configured for execution of the method 1500 at manufacturer (e.g., with default settings).

[00181] Operation of the configured power tool 500 in the step bit mode may begin when a user activates a trigger 510 to drive a step bit (e.g., the step bit 1202 or 1210) into a work material. In block 1502, one or more sensor(s) 530 of the power tool 500 generates sensor data indicative of an operational parameter of the power tool. For example, the sensor data and/or operational parameters may indicate one or more of motor current, voltage, acceleration, temperature, motor rotation velocity, motor rotation acceleration, output torque, the rotating speed of the step bit, and reaction forces (e.g., via gyroscopic sensors 530) that are generated while the step bit is driven by the motor 505. Moreover, example operational parameters may indicate motor position, spindle position, spindle speed, position of the power tool 500, battery pack state of charge, date, time, time since last use, mode, clutch setting(s), direction, battery type, presence of a side handle or other accessory, errors, history of past applications, switching rates, user inputs, external inputs, gear, and the like. (See Table 3, above.)

[00182] In block 1504, the machine learning controller 540 receives the sensor data from the sensors 530. As described above, the sensor data can provide multiple operational parameters related to the operation of the power tool 500.

[00183] In block 1506, the machine learning controller 540 processes the sensor data using a machine learning program (e.g., the machine learning control 585). As described above, various types of machine learning algorithms may be implemented to process the sensor data. The processing of the sensor data is performed in accordance with the type of machine learning algorithm implemented by the machine learning program, as discussed in further detail above. For example, the processing may include classifying the sensor data received as input to the machine learning program in accordance with the trained algorithm of the machine learning program. For example, the machine learning controller 540 may utilize classifier or regressor functions on either time-series data and/or filters thereof to determine a step bit progress condition with a tool such as a drill, pulse tool or impact tool. In some embodiments, various machine learning algorithms may be used to estimate step bit rotation to determine when the progress of the step bit has reached a new step. In embodiments where the power tool 500 is an impulse tool, the machine learning controller 540 may use various machine learning algorithms to interpret torque sensor readings to predict actual step bit torque. Further, in some embodiments, the processing by the machine learning controller 540 causes detection of conditions such as: a likelihood of the step bit reaching a target depth or particular step (e.g., step 1212A); a likelihood an anomaly has occurred (e.g. step bit drills through the entire workpiece (step bit spinning freely), a likelihood of the step bit initially starting partially engaged in a workpiece (e.g. the tool was stopped and restarted), a material split, a broken step bit, lost engagement with a workpiece, and the like); a likelihood that with braking or coasting the tool may advance the step bit to a particular step, diameter, depth, or depth characteristic.

[00184] In block 1508, the machine learning controller 540 generates an output that indicates step bit progress based on the sensor data processed in block 1506. For example, the processing of the sensor data by the machine learning controller 540 generates an output that indicates progress of a step bit that is advancing into a workpiece (e.g., when approaching a step, a step is occurring, a step just occurred, a count of steps reached, etc.). For example, the generated output may indicate: that a next step of the step bit has progressed into the workpiece; that a next step of the step bit is about to progress into the workpiece; an actual step bit torque prediction; a likelihood of the step bit reaching a target depth or particular step (e.g., step 1212A); a likelihood an anomaly has occurred (e.g. step bit drills through the entire workpiece (step bit spinning freely), a material split, a broken step bit, lost engagement with a workpiece, and the like); a likelihood that, with braking or coasting, the tool may advance the step bit to a particular step, diameter, depth, or depth characteristic; and the like.

[00185] In block 1510, the machine learning controller 540 determines whether a progress threshold of the step bit has been reached. In some embodiments, the progress threshold is at least one selected from the group of: a particular step of the step bit has progressed into the workpiece; a next step of the step bit has progressed into the workpiece (i.e., not a particular step but, rather, one incremental step has occurred); a next step of the step bit is about to progress into the workpiece; a step bit torque threshold; a particular depth of the hole drilled by the step bit; a particular width of the hole being drilled; a likelihood of the step bit being partially engaged in the workpiece (e.g. the tool was stopped and restarted), and the like. When the progress threshold has been reached, the machine learning controller 540 advances to block 1512. When the progress threshold has not been reached, the machine learning controller 540 loops back to block 1502. In some embodiments, instead of or in addition to detecting whether a progress threshold has been reached in block 1510, the machine learning controller 540 detects that an anomaly has occurred based on the output of block 1508. In such instances when an anomaly is detected, the machine learning controller 540 may proceed to block 1512.

[00186] In some embodiments, where the progress threshold is a particular step (i.e., an intended step) of the step bit progressing into the workpiece, the machine learning controller 540 detects whether the intended step of the step bit has been detected using the machine learning program. For example, with reference back to block 1506 and 1508, the machine learning program may be trained to process the sensor data and provide an indication of the current step of the step bit that has progressed into the workpiece based on the received sensor data. The machine learning program may loop to continuously process sensor data during the course of a drilling operation, and continuously output an indication of the current step of the step bit that has progressed into the workpiece. In such cases, in block 1510, the machine learning controller 540 compares the current step indicated to an intended step (the progress threshold, in this example). When the current step equates to the progress threshold (i.e., the step bit has reached the intended step), the machine learning controller 540 advances to block 1512. When the current step does not equate to the progress threshold (i.e., the step bit has not reached the intended step), the machine learning controller 540 loops back to block 1502. In some embodiments, rather than the machine learning controller 540 indicating the current step of the step bit, the machine learning controller 540 uses a counter and step threshold, whereby the counter (e.g., implemented in software executing on the controller 540) increments each time the machine learning program outputs (e.g., in block 1508) an indication that the step bit has progressed another step into the workpiece. The machine learning controller 540 then compares, in block 1510, the count to the intended step (the progress threshold). When the counter reaches the progress threshold (i.e., the step bit has reached the intended step), the machine learning controller 540 advances to block 1512.

When the counter has not yet reached the progress threshold (i.e., the step bit has not reached the intended step), the machine learning controller 540 loops back to block 1502. As noted above, the intended step (or, progress threshold) may be received in a configuration step before block 1502 (e.g., via the clutch ring, described above).

[00187] In block 1512, the machine learning controller 540 controls an operation of the power tool 500. For example, in some embodiments, the machine learning controller 540 slows or stops the rotation of the motor 505. For example, the machine learning controller 540 provides a zero percent (0%) duty cycle pulse width modified (PWM) signal to the switching network 517 to stop the motor 505, decrements the duty cycle for the PWM signal to slow the motor 505, or selects a low duty cycle for the PWM signal. In other examples, the machine learning controller 540 reduces the torque of the motor 505 (e.g., by changing clutch values, reducing speed or current to the motor, etc.). In still further embodiments, the machine learning controller 540 causes the tool 500 to pulse (e.g., by repeatedly reversing or interrupting current to the motor 505). In some embodiments, instead or in addition to the motor control, in block 1512, the machine learning controller 540 activates an indicator 535 as an alert to a user (e.g., at each predetermined step, at nearness to completion of one or more of the steps, and/or at reaching a final step). The indicator 535 may provide, for example, a visual or audible alert (e.g., activating, deactivating, or changing an emission quality of an LED 535 or sounding a speaker 535)

[00188] In the following paragraphs, several more particular examples of implementations of the method 1500 on the power tool 500 are provided. For example, in some embodiments, the progress threshold of block 1508 is an intended step and, upon determining that the progress threshold is reached, the machine learning controller 540 stops the motor 505 in block 1512.

[00189] In some embodiments, the progress threshold of block 1508 is an approaching next incremental step of the step bit and, upon determining that the progress threshold is reached (i.e., the step bit is about to progress another step into the workpiece), the machine learning controller 540 slows the motor 505 in block 1512. In some embodiments, the machine learning controller 540 may reduce the speed of the motor 505 substantially prior to detecting a step to allow for more user input to control the power tool 500 (e.g., so that the user may more easily release the trigger concurrently with the next step of the step bit progressing into the workpiece).

[00190] In some embodiments, the progress threshold of block 1508 is a next incremental step of the step bit and, upon determining that the progress threshold is reached (i.e., the step bit has progressed another step into the workpiece), the machine learning controller 540 stops the motor 505 in block 1512.

[00191] In some embodiments, the progress threshold of block 1508 is a next incremental step of the step bit and, upon determining that the progress threshold is reached (i.e., the step bit has progressed another step into the workpiece), the machine learning controller 540 slows the motor 505 in block 1512. In some embodiments, after reducing the speed of the motor in block 1512, the machine learning controller 540 returns to process block 1504 to receive further signals so that the step of controlling the motor 515 of the power tool 500 is executed a plurality of times during a step bit operation. For example, the blocks 1504-1512 may be executed in a loop to progressively slow the motor 505 with each step of the step bit progressing into the workpiece. In some embodiments where the blocks 1504-1512 are executed in a loop to progressively slow the motor 505, an intended step of the step bit is provided as an additional progress threshold and, when the intended step is reached (as determined in block 1510), the machine learning controller 540 stops the motor 505 in block 1512.

[00192] In some embodiments, in addition to or instead of a binary determination of whether a single progress threshold has been reached, the machine learning controller 540 may determine a level of progress toward an intended step (e.g., step 1212A), toward a hole diameter, or toward a hole depth, for example, between a range of values. As an example, the range of values may be 0-10, where 0 indicates that the step bit (e.g., step bit 1210) has not reached an intended step, 1 indicates that the step bit has just begun (e.g., 10% of the way towards and intended step), and so on, and 10 indicating that the step (e.g., step 1212A) has been reached in the drilling of the step bit into the workpiece. In turn, the control operation in block 1512 is based on the level of progress. For example, machine learning controller 540 may progressively slow the rotation speed (or PWM duty ratio) of the motor 505 the nearer the progress level is to 100%, which can aid in preserving a life of the step bit In some embodiments, the amount of slowing is increased proportional to the confidence level associated with the generated output in block 1508. Accordingly, when the machine learning controller 540 outputs an indication that step bit is in the workpiece 90% of the way to the intended step with high confidence, the motor 505 is operated at a slower rotation speed than if the indication is that the step bit is in the workpiece 90% of the way to the intended step with low confidence.

[00193] In some embodiments, the machine learning controller 540 may act as an electronic clutch (“e-clutch”). For example, the machine learning controller 540 may act as an e-clutch where a progress threshold or generated output indicating step bit progress may primarily be based on a torque value. During configuration of the power tool 500, the input setting to the e-clutch may provide a target range of expected torques, give a target range of depth for a particular step, or provide additional sensitivity. Additional sensitivity may be useful to provide an indication of how conservative the machine learning controller 540 should be when the confidence of a specific machine learning algorithm is low.

[00194] In one example operation, the power tool 500 may be configured in a step bit mode. During configuration of the power tool 500, a clutch ring (or other adjustable user input) of the power tool 500 receives user input (e.g., is rotated by a user) and indicates to the machine learning controller 540 a value corresponding to the number of steps to count before stopping advancement of a step bit (e.g., the step bit 1210). The user may activate the power tool 500, for example, using the trigger 510. The machine learning controller 540 may identify each step as the step bit advances into a workpiece (looping through blocks 1502- 1510) and may stop the motor 505 and thus the rotation of step bit (in block 1512) after an intended or last step is reached (e.g., occurring or just occurred) (as determined in block 1510).

[00195] In another example operation, the power tool 500 may be placed in a step bit mode by a user. During configuration of the power tool 500, A user may set a dial or another input mechanism of the power tool 500 to a number corresponding to a degree of output response of the power tool 500. The user may activate the power tool 500, for example, using the trigger 510. The machine learning controller 540 may identify each step as the step bit advances into a workpiece (looping through blocks 1502-1510). Each time a step is identified in block 1520, the machine learning controller 540 advances to block 1512 and briefly pauses or slows the motor 505, and thus the rotation of step bit, before looping back to block 1502.

In this matter, the power tool 500 may provide a user with time to more accurately count the steps as the step bit advances. The duration of the pause or slowing may be based on the user setting of the dial or other user input mechanism entered during configuration of the power tool 500.

[00196] In another example operation, the power tool 500 may be placed in a step bit mode that is associated with a pre-determined number of steps (i.e., progress threshold for block 1510 of the method 1500). The step bit mode may also be associated with a specific type of step bit (e.g., the step bit 1210) and/or a type of workpiece material (e.g., metal, wood, drywall, etc.) to be drilled. For example, a user may select from a plurality of step bit modes (e.g., via a dial or pushbutton selector on the power tool 500), each associated with one or more of a pre-determined number of steps, a type of step bit, an additional number of steps to take, a specific step, one or more features of the step bit, a user use of the step bit and a type of workpiece material. Each step bit mode further is associated with various power tool 500 operation characteristics (e.g., PWM duty ratio or motor speed, and control action for implementing block 1512 of the method 1500). In some embodiments, the number of steps, the type of step bit, and/or the type of workpiece material may be pre-associated with the step bit mode, while, in some embodiments, the power tool 500 may receive user input to select these parameters during configuration of the power tool 500. The user may activate the power tool 500, for example, using the trigger 510. The machine learning controller 540 may identify each step as the step bit advances into the workpiece (by looping through blocks 1502-1510), and when close to (or after) an intended step (as determined in block 1510), the machine learning controller 540 controls the motor 505 to pause, slow, or pulse (block 1512). In some examples, in addition or instead, the machine learning controller 540 may identify each step as the step bit advances into the workpiece, and in response, (in block 1512) activate an indicator 535 as an alert to a user (e.g., at each predetermined step, at nearness to completion of one or more of the steps, and/or at reaching a final step). In some examples, the machine learning controller 540 may control the speed or other output characteristic of the tool in order to augment the signal of each additional step for better identification of each step. The indicator 535 may provide, for example, a visual and/or audible alert (e.g., activating, deactivating, or changing an emission quality of an LED 535 or sounding a speaker 535).

[00197] In another example operation, a user may activate the power tool 500, for example, using the trigger 510. During configuration of the power tool 500, the machine learning controller 540 may recognize a characteristic step bit profile of a step bit (e.g., step bit 1210) coupled to the power tool 500 using machine learning. Over multiple uses, the machine learning controller 540 leams which size(s) of holes and/or how many steps are common user targets. In some embodiments the machine learning controller 540 may identify step bits used by multiple users. In other embodiments, the machine learning controller 540 identifies the number of steps taken during a first operation of the tool, and then repeat that on a subsequent tool use. The machine learning controller 540 may utilize the learned common targets of hole sizes and/or number of steps during configuration as progress thresholds (for use in block 1510) and, in turn, to control the motor 505 (in block 1512) to slow down when approaching atarget(s), briefly pause or slow after each step, and/or fully stop after most common targets, etc. The machine learning controller 540 may also control the motor based on a confirmation or identification that the bit is in fact a step bit and not another bit type. The machine learning controller 540 may also evaluate other parameters of the step bit, such as a condition (e.g. sharpness) of the step bit.

[00198] In another example operation, the power tool 500 may be placed in a step bit mode. A user may activate the power tool 500, for example, using the trigger 510. The machine learning controller 540 may recognize that a step bit (e.g., step bit 1210) has gone through a workpiece and is free spinning, and generate an output in block 1508 indicative of this anomaly and/or stop the power tool. In some embodiments, the method 1500 includes a step of detecting an anomaly (e.g., based on comparing the output generated in block 1508 to an anomaly threshold). In response, the tool 500 (e.g., the electronic processor 550) may cease operation of the motor 505 (in block 1512), at least temporarily.

[00199] In another example operation, during configuration of the power tool 500, a user may select parameters such as hole sizes, corresponding step bit skews, and/or applications for which the power tool 500 is often or commonly used. For example, the selections may be made in a user application on the user device 107 or a server (e.g., the server 110, 210, 310, 410). The user application communicates the selected parameters to the power tool 500 for use as progress threshold(s) in block 1510. A user may activate the power tool 500, for example, using the trigger 510. By looping through the method 1500 using techniques described above, the power tool 500 (e.g., the electronic processor 550) may cease operation of the motor 505, at least briefly, when each target hole size is expected to occur.

[00200] In another example operation, the power tool 500 may be placed in a step bit mode prior to operation. While looping through the method 1500 using techniques as described above, the machine learning controller 540 may detect each step of the step bit progressing into the workpiece, and the machine learning controller 540 may modify a target speed based on each step and/or at specified times to provide a more consistent cut rate of the step bit, an improved clarity of one or more received sensor 530 signals, and an extended accessory (step bit) life.

[00201] In another example operation, the power tool 500 may be placed in a step bit mode. The power tool 500 may be coupled to a step bit such as the step bit 1210. A user may activate the power tool 500 by actuating the trigger 510 and begin drilling into a workpiece. The machine learning controller 540 detects one or more sensor 530 signals and counts a number of steps in the step bit. The machine learning controller 540 may determine a confidence level with respect to the number of steps counted and may transmit a signal to indicate the confidence level to a user via the indicator 535. The number of steps counted may be stored in memory 582. Thereafter, when the tool is in the same step bit mode and performing a drilling operation with a step bit, the machine learning controller 540 counts the number of steps reached in advancing the step bit into a workpiece and stops after a desired number of steps (e.g., as configured by the user).

[00202] In another example operation, instead of or in addition to the method 1500, the machine learning controller 540 detects a sensor 530 providing a signal of low clarity, a reduced confidence of an algorithm, one or more feedback values relating to a current forward feed rate and/or force exceeding a predetermined value, or detects that a coupled step bit is in a worn condition. In response, the power tool 500 may activate an indicator 535, such as illuminating an LED as an alert to a user. The machine learning controller 540 may detect a signal of low clarity by determining a level of noise and comparing the determined level of noise to a noise threshold. When the noise threshold is exceeded by the level of noise, the machine learning controller 540 determines that the sensor 530 has a signal of low clarity. In another example, the machine learning controller 540 may determine a signal of low clarity by analyzing the confidence output of the RNN, DNN, or CNN. For example, RNN, DNN, and CNN algorithms output a confidence that a step is being undertaken at a specific time (e.g., each millisecond). If the output is near to a value of “1” or “0”, then the input signals are determining to be received at a high clarity. However, if the output of the signals tend to peak or hover near a midrange value (e.g. a value of “0.5”), then the signals are determined to not be providing a high degree of confidence and it is then determined that the sensors are not sufficiently counting the steps. In other examples, a secondary RNN, DNN, or CNN algorithm and/or other non-machine learning algorithms over a segment of the data near a suspected step that gives a measure of signal clarity. Signal noise, abnormalities, broken sensors, wear conditions, etc., are all conditions that may be detected by using a secondary algorithm.

[00203] The machine learning controller 540 may determine (e.g., based on processing the sensor data in block 1506) that the step bit is in a worn condition, and generate an output in block 1508 indicative of this anomaly. In some embodiments, the method 1500 includes a step of detecting an anomaly (e.g., based on comparing the output generated in block 1508 to an anomaly threshold). Alternatively, or in addition, the tool 500 (e.g., the electronic processor 550) may transmit a signal via the wireless communication device 525 to the external device 107 to activate an alert on the external device using an application on the external device.

[00204] In another example operation, instead of or in addition to the method 1500, the machine learning controller 540 detects a sensor 530 signal of low clarity that is due to the step bit rotating too fast and/or a user pressing too hard on the power tool while the step bit is advancing into the workpiece. In response, the electronic processor 550 slows the motor output to increase the clarity of the signal at one or more steps. In a further example operation, a responsiveness of a tool, such that the tool may increase the duration of ramp up speeds and ramp down speeds in the case of low signal clarity to reduce inrush and/or other effects that can distort the sensor 530 signal.

[00205] The above methods are described primarily for use with a step bit; however, the herein described methods are also applicable to other bit types and power tools. For example, other bit types may include countersink bits (with or without a pilot bit), a stepped hole saw bit, a bit with a depth hardstop, cone bits with intermediary features, step bits with intermediary features, and/or drill bit tap bits. Examples of other tools can include hydraulic pulse tools, impact tools, powered torque wrenches, powered ratchets, drill presses, and powered screw drivers.

[00206] The above method 1500 is described in terms of the machine learning controller 540 receiving and processing sensor data, generating an output, and determining whether a progress threshold is reached, and controlling the motor 505 for ease of description.

However, one or more of the process blocks of the method 1500 may be executed by the electronic processor 550 (e.g., the block 1510 and 1512), or portions of one or more of these steps may be executed by the electronic processor 550, while other portions are executed by the electronic processor 575 of the machine learning controller 540. In some embodiments, the machine learning controller 540 executes one or more steps by communicating control signals to the electronic processor 550. For example, in response to the progress threshold being reached in block 1510, the machine learning controller 540 of the electronic control assembly 536 may send control signals to the electronic processor 550 of the electronic control assembly 536, the control signals indicating to the electronic processor 550 to operate the motor 505 in a particular manner. The electronic processor 550, in turn, operates the motor 505 according to the control signals. Accordingly, the above method 1500 may also be described as being executed by the electronic control assembly 536, or by one or more electronic processors of the electronic control assembly 536.

[00207] Many machine learning approaches can be used to effect the embodiments described herein (e.g., various embodiments of block 1506). For example, the machine learning controller 540 may utilize RNN identification. A RNN, for example, made up of GRU and/or LSTM layers, receives tool input or sensor data such as current, voltage, trigger, gyroscope, acceleration, etc. Some of the received signals or data may be received at different rates (e.g., an accelerometer may provide output at a higher speed than other sensors) and may be preprocessed independently to merge with the other signals or down-sampled and pooled to match. In one example, the RNN may provide an output characteristic of a number of total steps in a step bit. Alternatively, or in addition, the RNN may provide a short-term classification to indicate if a step is occurring and/or just occurred. The output may go through a filter to reduce false positives. In some embodiments, a basic secondary counting algorithm for peak detection or detecting times above a classification threshold can be used for counting step bit steps. In some examples, the secondary counting algorithm uses a machine learning approach for accounting for peak magnitudes, spacing, and these values relevant to each other.

[00208] Alternatively, or in addition, the RNN may provide a probabilistic output of the number of steps counted in a vector format wherein each element in a vector corresponds to a likelihood that such a step has been reached. The tool may respond with a premature shutdown if the RNN has lost confidence in its counting or if a confidence level exceeds a threshold for a target step. In some embodiments, the power tool 500 alerts a user if a confidence level is too low to be reliable (e.g., via the indicator 535 or by transmitting a signal to the external device 107).

[00209] Alternatively, or in addition, an RNN may detect if a user is starting to drill with a step bit into an existing hole. This condition may be detected by the sensor(s) 530 due to characteristics in the initially loading as well as tool 500 motion. As a result, the machine learning controller 560 may provide an output indicating that the tool operation should change, the user should be alerted via the indicator 535, or the motor 505 should be more responsive in slowing down after each step is detected, etc.

[00210] In some embodiments, a sliding window CNN is used by the machine learning controller 540 where a time series classification is output when a step just occurred or is occurring. A secondary algorithm can then be used (e.g., in combination with filtering the CNN output) to count step(s) of a bit step advancing into a workpiece. A low confidence in identifying a step may cause the machine learning controller 540 to respond in a particular manner (e.g., stopping or slowing the motor 505).

[00211] In some embodiments, DNN may be used by the machine learning controller 540 for step identification. An alternative way to identify a step is to pass tool variables through a variety of filters (e.g., low pass filters) or a sliding window, and feed output into a DNN at some series of time-steps. The DNN may then classify that a step has just occurred or is occurring. A secondary counting algorithm (e.g., after filtering the DNN output) may then count the total steps detected. A low confidence in identifying a step may cause the machine learning controller 540 to respond in a particular manner (e.g., stopping or slowing the motor 505).

[00212] In some embodiments, alternative machine learning methods may be utilized for detecting step bit steps. For example, in a similar manner to the CNN and DNN that may receive a fixed size input (whether sliding window or a set of filtered inputs), other models may be suitable such as decision trees, random forests, SVM, KNN, etc. In some embodiments, hard coded filter sets may be applied for detecting the step bit steps.

[00213] In some embodiments, the machine learning controller 540 can adapt to identify common or repeatedly used step bit ending criteria or stopping criteria. For example, the machine learning controller 540 may identify a commonly used step bit ending criteria by identifying whether a step bit is in use (e.g., via an RNN classifier or by being in a step bit mode). In another example, a historical record may be recorded and stored, step bit ending criteria may be tallied, a probabilistic histogram may be created, or an alternative encoding may be used. The alternative encoding may possess both output criteria (e.g., likely step to stop at) as well as other information (e.g., parameters that encompass derived characteristic loading, clarity of steps, step duration, etc.). In another example, the machine learning controller and/or electronic processor 550 may utilize the historical record information to control the motor 505 to stop or slow the step bit with each drilled hole.

[00214] In some embodiments, the step bit is configured with augmented features that improve the ability of the machine learning controller 540 to sense that a step has or is about to progress into the workpiece. Such augmented features may cause a more distinctive trace or sensor signal (e.g., from the sensor 530) when a step has or is about to progress into the workpiece. Alternatively or additionally, such augmented features enable the machine learning controller 540 to detect that a particular step bit is coupled to the power tool 500. In some embodiments, the power tool 500 is configured to be in the step bit mode (e.g., by a user actuating a mode selector on the power tool 500, and the mode selector providing a signal to a processor of the electronic control assembly 536). The trigger of the power tool 500 is then depressed while the step bit is not engaged with a workpiece such that the motor 505 is driven and the step bit is rotated freely (i.e., the step bit free-spins). While the step bit free-spins, sensor data is generated (similar to block 1502), the machine learning controller 540 receives sensor data (similar to block 1504), the machine learning controller 540 processes the sensor data (similar to block 1506), and the machine learning controller 540 generates an output based on the processing of the sensor data (similar to block 1508). The sensor data for a particular step bit will vary based on its particular inertial characteristics.

For example, each step bit may include one or more of unique characteristic profiles, rake angles, step distances, overall inertias, alternating step sizes and thus loadings, point geometry, and the like, such that it is easier for the machine learning controller 540 to identify such step bit. Accordingly, a trained machine learning control 585 of the machine learning controller 540 is configured to process or classify the sensor data and generate an output that indicates a type of step bit (e.g., step bit 1202 or step bit 1210). For example, in some embodiments, the processing technique applied to identify a type of step bit with respect to block 1070 of FIG. 11 similarly applies here. In some embodiments, the identified step bit may have one or more associated progress threshold, which are then retrieved from memory by the machine learning controller 540 for use by the power tool 500 when implementing the method 1500. In some embodiments, the identified step bit information is provided to the machine learning controller 1500 for use in the processing block 1506 when the power tool 500 is operating in the step bit mode. By knowing the type of step bit at the outset of an operation, the processing of the sensor data by the machine learning controller 540 may be more accurate. In other words, the type of step bit is input to the machine learning controller 540 as an input to the machine learning program that is executed to process the sensor data. This input assists the machine learning algorithm in classifying the sensor data as different step bits may produce different sensor data during operation, and training data particular to the type of step bit may be used by the machine learning algorithm during the processing block 1506.

[00215] In some embodiments, the power tool 500 uses a clutch ring to indicate a desired clutch setting to the electronic control assembly 536 at some points in time, and to indicate a progress threshold (for the method 1500, e.g., block 1510) at other points in time (e.g., when the power tool 500 is in a step bit mode). However, in some embodiments, the power tool 500 has an alternative step bit setting ring. The step bit setting ring may be a rotatable ring having a similar construction as a clutch ring (e.g., clutch ring 501). For example, the step bit setting ring may also be rotatable about a barrel of the power tool 500 (e.g., positioned either frontward or rearward of the clutch ring) , and the step bit setting ring is also configured to provide a signal to the electronic control assembly 536 to indicate a rotational position of the ring. The electronic control assembly 536 is then operable to translate or map the rotational position to a progress threshold for use in the method 1500. Additionally, markings may be provided on the step bit setting ring that are related to step bits. For example, the step bit setting ring may include a listing of hole diameters or an intended step (step count), one at each of a plurality of rotational positions of the step bit setting ring (e.g., every 10, 20 degrees, or 30 degrees) .

[00216] Thus, embodiments described herein provide, among other things, power tools and related systems including a machine learning controller to control a feature or function of the power tool or related system, such as automatically detecting steps in a step bit. Various features and advantages of the embodiments are set forth in the following claims.