Systems, methods, and apparatus for sharing tool manufacturing and design data

The system, which combines sensors and cameras, solves the problem of tool positioning on materials, automates tool guidance and dust removal, and improves the accuracy and efficiency of cutting or drawing.

CN114879598BActive Publication Date: 2025-10-17SHAPING TOOLS CO LTD

Patent Information

Application Number
CN202210543368.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2017-05-21
Filing Date
2017-08-18
Publication Date
2025-10-17
Estimated Expiration
2037-08-18

AI Technical Summary

Technical Problem

In existing technologies, it is difficult for users to manually follow visual guidance to position tools on materials, especially to determine the position of tools on materials, particularly when cutting or drawing planar edges, such as the edges of rectangles or smooth contours.

Method used

A system comprising sensors, cameras, and positioning logic is employed to automatically or semi-automatically move a tool to accurately reach predetermined coordinates by detecting the tool's position on the material, and to measure the material surface using probes and lateral detection techniques to generate a grid cover. A force sensor and a vision camera are combined to determine the position of the tool tip, and a vacuum cleaner is used to remove the dust generated during cutting.

Benefits of technology

It enables accurate positioning and automatic guidance of the tool on the material surface, improving the precision and efficiency of cutting or drawing operations, reducing dust interference, and simplifying user operation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114879598B_ABST
    Figure CN114879598B_ABST
Patent Text Reader

Abstract

The present invention relates to systems, methods, and apparatus for sharing tool manufacturing and design data. A position sensing tool is provided for implementing topographical measurements of a work surface. The tool includes sensors for mapping the tool environment and for locating the tool within the environment. The tool implements tracking of tool activity within the environment. The tool implements design and manufacturing collaboration with other computer systems. The tool uses tool location, user position, and tool environment perception to implement safety of users and the tool environment. Certain embodiments of the tool allow for automated guidance of tasks in the tool environment.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the application patent application entitled "System, Method, and Apparatus for Sharing Tool Manufacturing and Design Data" having an application date of August 18, 2017, application number 201780050641.X.

[0002] Cross Reference to Related Applications

[0003] This application claims priority under 35 U.S.C 119 to U.S. Provisional Patent Application No. 62 / 377,482, filed August 19, 2016, U.S. Provisional Patent Application No. 62 / 509,159, filed May 21, 2017, and U.S. Provisional Patent Application No. 62 / 509,162, filed May 21, 2017, all of which are hereby incorporated by reference in their entirety. BACKGROUND

[0004] Visual guides drawn on a material can be difficult for a user to follow manually. In addition, it can be difficult to determine the location of a tool on a material. SUMMARY

[0005] The apparatuses, systems, and methods of the present disclosure facilitate guiding a tool. In some embodiments, the system includes a drill press or frame having a worktable that can be positioned on the surface of a piece of material, such as wood. The tool can be electrically or mechanically coupled to the frame, and the frame, along with the tool, can be passed over the material. The system can include sensors, cameras, or positioning logic to determine the location of the tool on the material and to accurately move (or provide instructions for a user to move) the frame, worktable, or tool to a desired coordinate on the material.

[0006] Manufacturing or production operations can include working on or with a piece of material having at least one plane, such as cutting a shape out of a piece of plywood. However, it can be challenging for a tool to determine the location of the edge of a plane, which can be rectangular, such as in a piece of plywood, or can be a smooth profile, such as the edge of a 2D template. The system, method, and apparatus of the present solution relate to a system for detecting the shape and / or location of an edge.

[0007] The tool can be configured with one or more techniques to facilitate guiding the working member or drill bit of the tool. For example, the tool can include a probe and be configured with a lateral probing technique that measures the surface of the material or workpiece, or establishes a reference point on or relative to the workpiece. The tool can probe one or more points of the workpiece profile to digitize a template. The tool can probe one or more points of the profile to scan the edge of the working material before and after flipping to align a plan for double-sided processing. The tool can probe one or more points of the profile to generate a grid overlay.

[0008] In some embodiments, the system can include a handheld tool coupled with a digital processor. The handheld tool can include a physical element of known or approximately known geometry, such as a probe. In addition to being used as a probe, such as a drill bit, the probe can be part of the tool used in some other capacity besides probing. Using one or more sensors, the system can determine the 3D position or location of the probe in an arbitrary coordinate system and store the position. The system can determine the position by detecting the position of the tool frame and using an offset from the tool frame to the probe, or the system can directly detect the position.

[0009] In some embodiments, the system can detect the edge of the material by moving the handheld tool to a position where the probe geometry is in contact with the edge. The system can receive an indication that the probe geometry is in contact with the edge of the material. The indication can be via an interface of the tool, such as a button, or the system can automatically detect that the probe is in contact with the edge. The system can store the point of contact in memory. The system or tool can sample one or more points of contact or edges of the material. The handheld tool can also be moved along a 3D path during which the handheld tool is in contact with the edge for some range of times and not in contact with the edge for other ranges of times.

[0010] In some embodiments, the surface of the material can be marked with a location marker that facilitates detecting the location of the tool, working member, or sensor relative to the surface of the material. The location marker can be designed or configured to facilitate simple, fast, and reliable detection by the sensor of the tool. In some embodiments, the location marker can include a binary image or be structured in a way that can be easily converted to a binary image. For example, the location marker can include fiducial markers that can be detected with minimal computational power, such as a black and white image that can represent a domino.

[0011] In some embodiments, the present disclosure relates to a system, method, or apparatus that directs or extracts dust generated when a task is performed on a surface of a material. For example, when a cutting tool is cutting a material, such as wood, sawdust can be generated that can make it difficult for the tool to detect a mark that can be placed on the surface of the material. The tool of the present disclosure includes a cavity in which dust generated by cutting the material can be directed. For example, the cavity can include a void in the frame of the tool, and a fan of the tool can direct the dust toward the cavity. Additionally, a vacuum cleaner can be coupled to the tool such that the dust can be extracted via a channel.

[0012] In some embodiments, the present disclosure relates to a system, method, or apparatus for determining a position of a tool relative to a work surface. The system, method, or apparatus can determine a change in force exerted by a tip of the tool (e.g., a cutting bit) in order to determine when the tip of the cutting tool is contacting or pressing against a surface of a material. For example, the tip of the tool can be in a first position that does not contact the work surface. The tip can be gradually moved to a second position that contacts the surface of the material. When the tip of the tool is moved to the second position, the system, method, or apparatus can determine a change in force, which can indicate that the tip of the tool is contacting the surface of the material. For example, the force exerted on the base of the tool can be less because the tip of the tool is unloading some of the force from the base.

[0013] At least one aspect of the present disclosure relates to a system that calibrates position detection of a tool. The system can include a base coupled to the tool. The base can be in contact with a work surface. The system can include a computing device having one or more processors. The system can include a sensor communicatively coupled to the computing device. The system can include a motor controlled by the computing device. The computing device can identify, via the sensor, a first value of a parameter indicative of an amount of force exerted on the work surface by a portion of the base. The computing device can instruct the motor to extend a work member toward the work surface. While the work member is in contact with the work surface, the computing device can identify, via the sensor, a second value of the parameter. The computing device can compare the first value of the parameter to the second value of the parameter to generate a difference between the first value and the second value. The computing device can determine a z-axis position of the work member relative to the work surface in response to the difference between the first value and the second value being greater than a threshold value.

[0014] At least one aspect of the present disclosure relates to a method of evaluating a position of a working member of a tool. The method can include a sensor communicatively coupled to a computing device comprising one or more processors detecting a first value of a parameter indicative of an amount of force exerted on a working surface by a portion of a base of the tool. The method can include a motor controlled by the one or more processors of the tool extending the working member toward the working surface. The base can be at least partially in contact with the working surface. The method can include the sensor detecting a second value of the parameter when the working member is in contact with the working surface. The second value of the parameter can be less than the first value of the parameter. The method can include the computing device determining a z-axis position of the working member relative to the working surface in response to a difference between the first value and the second value being greater than a threshold value.

[0015] At least one aspect relates to a system for positioning a working member of a tool. The system can include a base coupled to the tool. The system can include a computing device comprising one or more processors. The system can include a sensor communicatively coupled to the computing device. The system can include a motor controlled by the computing device. The system can include the computing device configured to identify, via the sensor, a first value of a parameter indicative of an amount of force exerted by a portion of the base toward a working surface. The computing device can instruct the motor to extend the working member toward the working surface. The computing device can identify, via the sensor, a second value of the parameter with the working member in contact with the working surface. The computing device can compare the first value of the parameter to the second value of the parameter to identify a difference between the first value and the second value. The computing device can determine a z-axis position of the working member relative to the working surface based on the difference between the first value and the second value being greater than a threshold value.

[0016] At least one aspect relates to a method of positioning a working member of a tool. The method can include detecting, by a sensor communicatively coupled to a computing device comprising one or more processors, a first value of a parameter of a first vertical position of a base of the tool. The method can include extending, by a motor controlled by the computing device, the working member toward a working surface. The method can include detecting, via the sensor, a second value of the parameter indicative of a second vertical position of the base of the tool with the working member in contact with the working surface. The method can include comparing, by the computing device, the first value of the parameter to the second value of the parameter to determine a change in the vertical position of the base of the tool. The method can include determining, by the computing device, a z-axis position of the working member relative to the working surface based on the change in the vertical position of the base of the tool.

[0017] At least one aspect is directed to a system for positioning a working member of a tool. The system can include a base coupled to the tool. The system can include a computing device including one or more processors. The system can include one or more sensors communicatively coupled to the computing device. The system can include one or more motors controlled by the computing device. The computing device can determine a z-axis position of the working member via the one or more sensors. The computing device can provide motor control information to control the one or more motors to move the working member from a first location to a second location based at least in part on the z-axis position of the working member, the tool advancing in a direction within an adjustment range (e.g., compensation radius, compensation range) adjacent to a predetermined path of the working member of the tool.

[0018] At least one aspect is directed to a system for positioning a working member of a tool. The system can include a base coupled to the tool. The system can include a computing device including one or more processors. The system can include one or more sensors communicatively coupled to the computing device. The system can include one or more motors controlled by the computing device. The system can include a cavity of the tool to move particles of material removed from a work surface by the working member. The computing device can determine a first location of the working member based on first information received via the one or more sensors. The computing device can compare the first location of the working member to a predetermined path to determine a second location of the working member of the tool corresponding to the path. The computing device can provide motor control information to control the one or more motors to move the working member from the first location to the second location based on the second location, the tool advancing in a direction within an adjustment range adjacent to the predetermined path of the working member of the tool, the cavity configured to move the particles of material in a direction opposite to the direction in which the tool advances.

[0019] Embodiments of the present disclosure include tracking use of a drill having one or more actuators to move an adapter for holding a working member. Systems, methods, and computer-readable media described herein: receive a digital design from a first computer system; determine a desired path of a component of the drill based on the digital design; obtain position information of the component as the working member moves relative to a work surface; send tracking data to a second computer system based on the position information.

[0020] Embodiments of the present disclosure include using a drill to enable collaboration, the drill having one or more actuators to move an adapter for holding a working member. Systems, methods, and computer-readable media described herein: obtain information related to a work surface; send the collected information to a first computer system; receive second information from a second computer system, wherein the second information is based on the first information; and determine a desired path of a component of the drill based at least in part on the second information.

[0021] Embodiments of the present disclosure include determining information related to a work surface using a drill rig. The systems, methods, and computer readable media described herein: obtain first data related to a work surface, obtain second data related to the work surface with a work member in contact with an edge of the work surface; determine a position of a component of the drill rig; and determine a location of the work surface edge.

[0022] Embodiments of the present disclosure include controlling a drill rig having one or more actuators to move an adapter holding a work member. The systems, methods, and computer readable media described herein: collect first data related to a work surface, determine a position of a component of the drill rig; evaluate one or more trigger rules using the position of the component; and trigger one or more actions based on the evaluation.

[0023] Embodiments of the present disclosure include facilitating use of a drill rig having one or more actuators to move an adapter holding a work member. The systems, methods, and computer readable media described herein: capture an image of a film on a work surface; determine a desired path for the adapter based on an edge of the film in the captured image; and provide actuator control information to move the adapter in a first direction when a user moves in a second direction on the right side, wherein the first direction is different than the second direction and the desired path determines movement of the adapter. BRIEF DESCRIPTION OF DRAWINGS

[0024] FIG. 1 is an illustrative example of an embodiment of an apparatus for an automatically guided tool.

[0025] FIG. 2 is an illustrative example of an embodiment of an apparatus for an automatically guided tool following a target path area and performing a task according to a planned design.

[0026] FIG. 3 is an illustrative block diagram of an embodiment of a system for an automatically guided tool.

[0027] FIG. 4 is an illustrative flowchart of an embodiment of a method for an automatically guided tool.

[0028] FIG. 5 is an illustrative flowchart of an embodiment of a method for an automatically guided tool.

[0029] FIG. 6 is a block diagram illustrating the general architecture of a computer system that can be employed to implement various elements of the systems, apparatuses, and methods disclosed herein, according to an embodiment.

[0030] FIGS. 7A-7B is an illustrative diagram of a location marker that can be employed to implement various elements of the systems, apparatuses, and methods disclosed herein, according to an embodiment.

[0031] FIGS. 8A-8B is an illustrative example of a top perspective view of an embodiment of a substrate for directing or extracting swarf particles in accordance with embodiments that can be used to implement various elements of the systems, devices, and methods disclosed herein.

[0032] FIGS. 9A-9B is an illustrative example of a top perspective view of an embodiment of a substrate for directing or extracting swarf particles in accordance with embodiments that can be used to implement various elements of the systems, devices, and methods disclosed herein.

[0033] FIG. 9C is an illustrative example of a bottom perspective view of an embodiment of a substrate for directing or extracting swarf particles in accordance with embodiments that can be used to implement various elements of the systems, devices, and methods disclosed herein.

[0034] FIG. 9D is an illustrative example of a top perspective view of an embodiment of a substrate for directing or extracting swarf particles in accordance with embodiments that can be used to implement various elements of the systems, devices, and methods disclosed herein.

[0035] FIGS. 10A-10B is an illustrative example of an embodiment of a system for determining a location of a tool tip in accordance with embodiments that can be used to implement various elements of the systems, devices, and methods disclosed herein.

[0036] FIGS. 10C-10D is an illustrative example of an embodiment of a force sensor positioned on a device for determining a location of a tool tip in accordance with embodiments that can be used to implement various elements of the systems, devices, and methods disclosed herein.

[0037] FIGS. 11A-11B is an illustrative example of using various elements of the systems, devices, and methods disclosed herein to direct or extract swarf particles in accordance with embodiments.

[0038] FIG. 12 is an illustrative example of a block diagram depicting a method of positioning a working member of a tool in accordance with embodiments.

[0039] FIG. 13 depicts a front view of a tool in accordance with embodiments.

[0040] FIG. 14 depicts a front view of a tool without a working member attached in accordance with embodiments.

[0041] FIG. 15 provides a side view of a tool with a working member attached in accordance with embodiments.

[0042] FIG. 16 provides a side view of a tool without a working member attached in accordance with embodiments.

[0043] FIG. 17 A rear view of a tool with a working member attached according to an embodiment is provided.

[0044] FIG. 18 A rear view of a tool without a working member attached according to an embodiment is provided.

[0045] FIG. 19 A top view of a tool with a working member attached according to an embodiment is provided.

[0046] FIG. 20 A top view of a tool without a working member attached according to an embodiment is provided.

[0047] FIG. 21 A bottom view of an internal worktable and pivot components of a tool according to an embodiment is provided.

[0048] FIG. 22 A system for guiding a tool according to an embodiment is depicted.

[0049] FIG. 23 A flowchart for guiding a tool according to an embodiment is depicted.

[0050] FIG. 24 is a graph illustrating edge detection according to an embodiment.

[0051] FIG. 25 is a graph illustrating edge detection according to an embodiment.

[0052] FIG. 26 is a graph illustrating edge detection according to an embodiment.

[0053] FIG. 27 is a graph illustrating a spiral tool path generated by a system according to an embodiment.

[0054] FIG. 28A is a graph illustrating a tool according to an embodiment.

[0055] FIG. 29 is an exemplary log in an automated guidance system and an exemplary log in a computer system according to an embodiment.

[0056] FIGS. 30A-30D is a series of illustrations showing the use of a thin film to define a template according to an embodiment.

[0057] FIG. 31 is an exemplary network connectivity schematic of 6 computer systems according to an embodiment. DETAILED DESCRIPTION

[0058] The present disclosure generally relates to systems and methods for working on a surface such as woodworking or printing. In some embodiments, the present disclosure relates to determining a location of a tool relative to a surface of a material and using the location to guide, adjust, or automatically correct the tool along a predetermined path or design, such as, for example, a cutting or drawing path. In some embodiments, the reference location can correspond to a design or plan obtained from a remote computer system.

[0059] Manufacturing or production operations can include working on or with a piece of material having at least one plane, such as cutting a shape out of a piece of plywood. However, it can be challenging for a tool to determine the location of the edge of a plane, which can be rectangular, such as in a piece of plywood, or can be a smooth profile, such as the edge of a 2D template. Systems, methods, and apparatuses of the present solution relate to systems for detecting the shape and / or location of an edge.

[0060] The tool can be configured with one or more techniques to facilitate guiding a working member or drill bit of the tool. For example, the tool can include a probe and be configured with a lateral probing technique that measures a surface of a material or workpiece, or establishes a reference point on or relative to the workpiece. The tool can probe one or more points of a workpiece profile to digitize a template. The tool can probe one or more points of a profile to scan an edge of a working material before and after flipping to align a plan for double-sided processing. The tool can probe one or more points of a profile to generate a grid overlay.

[0061] In some embodiments, the system can include a handheld tool coupled with a digital processor. The handheld tool can include a physical element of known or approximately known geometry, such as a probe. In addition to being used as a probe, such as a drill bit, the probe can be part of the tool used in some other capacity in addition to probing. Using one or more sensors, the system can determine a 3D position or location of the probe in an arbitrary coordinate system and store the position. The system can determine the position by detecting a position of a tool frame and using an offset from the tool frame to the probe, or the system can directly detect the position.

[0062] In some cases, the present disclosure can facilitate evaluating a position of a working member of a tool. Evaluating the position of the working member can include, for example, determining a geometry of a cutting tool or determining a geometry of a workpiece (e.g., a working surface).

[0063] Determining the geometry of the tool can include or reference determining the position of the tool tip (e.g., the working member) relative to a reference frame of the tool. Determining the geometry of the tool can include or reference determining the diameter of the cutting tool. The tool geometry information can be used to automatically determine the length of the cutting flute of the working member and the angle of the cutter (e.g., V-bit or helix angle).

[0064] Determining the geometry of the workpiece can include or reference determining or measuring the thickness of the material to be cut, or creating a topography of the surface by repeatedly probing with the tool tip. The tool can determine the location of a feature of interest, such as a hole on the workpiece.

[0065] The present disclosure can use one or more techniques to determine the position of the working member or tool tip relative to a reference frame of the tool (e.g., tool height). For example, the tool can include a tool tip or working member and a base. The base of the tool can rest on and be in contact with the work surface. A technique to determine the position of the tool tip can include extending or lowering the tool tip onto the work surface (or a convenient flat surface such as a table), while measuring the weight on the base of the tool. As additional downward motion occurs with the cutting tool when the tool tip is in contact with the work surface, the weight can be transferred onto the tool tip and away from the base of the device. The tool can detect the reduction in weight on the base through a weight sensor in the base. This technique can provide improved accuracy in determining the position of the tool tip, as the tool tip position can be determined within a small fraction of the tool travel needed to lift the base of the device off the work surface. In some cases, where the tool tip can be very sharp, the tool tip can sink or enter into the work surface (e.g., wood) a distance before generating enough force for the device to lift. However, because the weight sensor can be configured to detect even small reductions in force (e.g., 1%, 2%, 3%, 5%, 0.5%, 0.1%, or 10% of the force exerted by the tool or base on the material before the tool tip contacts the work surface), the tool can detect the change in force when the tool tip contacts the work surface even if the tool tip is at least partially into the work surface.

[0066] Furthermore, the tool can determine the position of the tool tip with this technique without needing to perform an absolute calibration of the weight sensor, as the tool can determine the position based on detecting the change in force. Thus, an inexpensive and uncalibrated force sensor can be used to determine the position of the tool tip. Examples of force sensors can include force sensitive resistors, capacitive force sensors, high-pass sensors, or piezoresistive sensors.

[0067] The tool can detect when the tool tip or working member comes into contact or becomes in contact with the work surface by detecting, noting, determining, or otherwise identifying a lift of the base. The lift of the base can be a relatively small lift (e.g., a 0.1%, 0.5%, 1%, 2%, 5%, 10%, 15%, 20% reduction in force on the force sensor, or some other percentage based on the resolution or granularity of the force sensor). In some cases, the tool can detect the lift based on a tilt of the base (e.g., a 1 degree angle, 2 degrees, 5 degrees, 10 degrees, 15 degrees, 25 degrees, or some other tilt that can be detected). The tool can use a camera, visual information, or an inertial measurement unit (IMU, including one or more accelerometers, gyroscopes, or magnetometers) to detect the tilt. For example, a camera can determine a shift in the captured image that corresponds to the tilt resulting from the lift of the base. The camera can take a first picture or image before the tool brings the tool tip into contact with the work surface, and then take a second image when the tool tip contacts the work surface. The camera can compare the first image to the second image to identify the tilt or change between the two images. An IMU can indicate the tilt in response to the motion or sudden motion caused by the lift of the base. In some embodiments, the tool can include a force sensor in the tool holder to directly measure the force on the cutting tool tip.

[0068] The tool can determine or detect additional information about the tool, including tip or working member position, diameter, or tool geometry. For example, the tool can include a break-beam sensor (e.g., a laser break-beam sensor, an infrared break-beam sensor, a photosensor, or an optical sensor). The working member can fall into the line of action of the sensor, and the tool can detect the position of the working member when the working member breaks the light beam. In some cases, the axis of the light beam can be pre-calibrated with respect to the coordinate system of the tool. However, it can be challenging to accurately detect the tip position using this technique based on the tip geometry (e.g., if the tip shape is not flat).

[0069] The tool can use a capacitive sensor or an electromagnetic sensor to determine the proximity of the tool tip to the work surface. For example, an electromagnetic sensor can sense or detect a change in inductance of a sensing coil near a tool tip or working member that includes metal by sensing eddy currents induced in the metal.

[0070] Another approach is to use a visual camera of the aiming tool to determine the position of the working member or tool tip. The visual camera can be pre-calibrated to the tool coordinate system to detect the tool tip. In some cases, the visual camera can include a linear charge-coupled device (CCD) sensor or other image sensor. The linear CCD sensor can use less processing than a visual camera to detect the tool tip.

[0071] The tool can use one or more of these techniques to measure the tool diameter. In measuring or determining the location of the tool tip, the tool can move the tool tip around. By moving the tool tip, the tool can use a single beam break sensor to detect the tool diameter by passing the tool from left to right across the sensor. The lateral motion of the tool can cause a first break, and then unblock the light to provide a measurement of the tool diameter. Since a mill bit can have a helical flute, the tool can perform multiple measurements along the length of the tool to determine the diameter. The tool can use eddy currents or capacitive sensing with a one-dimensional sensor to determine the diameter to gather multi-dimensional information about the tool geometry by correlating the sensor data with the tool position. The tool can determine additional information about the tool tip, such as the tip angle in the case of a V-shaped cutting bit. Further, the tool can include a vision camera to detect geometric properties of the tool.

[0072] The tool can measure the geometry of a work surface by correlating the tool tip position with the device position on the plane of the work surface. To do so, the tool (e.g., a cylindrical tool with a conical or spherical tip) can first correlate the position of the tool tip with a reference frame of the tool. Once the position of the tool tip is known relative to the reference frame of the tool, the tool can be positioned laterally on a surface of interest (e.g., a work surface) to determine the vertical position of the work surface. The vertical position of the work surface can refer to a recess, cavity, indentation, or concave portion of a piece of wood at a depth of interest. The tool tip can then be inserted, extended, lowered, sunk, or otherwise moved until the tool tip contacts the bottom of the recess. Additional displacement of the tool tip beyond the top portion of the surface that the tool tip first contacts the work surface indicates the depth of the recess. If the surface profile of the recess is of interest, the tool can move around the recess to multiple points. The tool can determine the depth at each of the multiple points. The tool can record the depth and lateral position of the tool (e.g., x, y, and z coordinates, where the x and y coordinates can refer to the lateral position and the z coordinate can refer to the depth). The lateral motion can be done automatically using a built-in positioning stage, or manually by a user, or a combination of both.

[0073] Another potential application can be to find the center position of a hole on a work surface. A tool with a conical tip can be fitted into the device. The tool can then be positioned approximately over the center of the hole (e.g., within 5%, 10%, 15%, 20%, 25%, 30%, 50%, 75%, or 90% of the diameter of the hole) and sunk until the tip contacts the circle of the hole. Because the tool tip can be conical, the tool tip can center the tool on the hole. The tool can then determine the position of the hole using, for example, a vision system to determine the lateral position (e.g., x and y coordinates).

[0074] The tool can determine the thickness of a work surface or other mass of material. Using the determined thickness of the work surface, the tool can automatically set a cutting depth or update a cutting path that can depend on the thickness of the material (e.g., a box joint where the length of the fingers is to correspond to the thickness of the mating material). The tool can determine or measure the thickness of the material, suspend or place the tool or a portion thereof over the edge of the work surface or material, and then extend the tool tip until it contacts the surface supporting the material. The depth to which the tool tip extends beyond the top of the work surface to contact the surface supporting the work surface can be indicative of the thickness of the work surface.

[0075] The tool can use location markers that can include a contour tree, a binary image, fiducial markers, or dominoes to determine the position of the tool or tool tip relative to the surface of the work material. The present disclosure facilitates the directing and extraction of dust from a portion of the tool by generating an airflow that directs dust via one or more channels in a portion of the tool. The present disclosure facilitates the determination of the height of the tip of the tool using a force sensor that detects a reduction in force when the tip of the tool contacts the material.

[0076] With the determined information, the tool can be configured to direct the working member of the tool to perform a task on a target material (e.g., a work surface). In some embodiments, the system can automatically direct the tool to perform a task. For example, in some embodiments, the present disclosure provides a handheld system that is capable of identifying the location of a tool or drill containing a tool relative to a material being worked on. In some embodiments, the device can be non-handheld; for example, the device can be located on a movable platform, such as a remotely controlled platform, a robotic platform, or other type of movable platform that can or can not be controlled. The system can adjust the location of the tool (or provide instructions for adjusting the location of the tool) based on or in response to the current location of the tool and a desired location corresponding to a design. In some embodiments, the system includes a handheld device having a work instrument that can be manipulated by hand, which can make precise adjustments to the work instrument location based on spatial positions to provide an accurate path for the work instrument to travel.

[0077] In some embodiments, the systems and methods disclosed herein can include a location detection system or perform one or more location detection techniques that can accurately, robustly, or with low latency detect the current location or position of the tool on a target material. For example, a video or still image camera coupled to the tool and accompanying control circuitry can be used to scan the surface of the material and process the scan data or scan image data to generate a digital map of the surface of the material prior to performing a task on the material. As the tool is brought near the surface of the material during performance of the task on the material, the camera can take a second image and compare the second image to the digital map to detect the location of the tool relative to the material.

[0078] In some embodiments, various location detection techniques can be used, including, for example, integrated wireless location sensing techniques, such as RF, near field communication, Bluetooth, laser tracking and sensing, or other suitable methods for determining the location of a tool. And facilitating guiding or adjusting the location of a tool to perform a task. In some embodiments, the system can include a hybrid location detection system that employs two or more location detection techniques to determine the location of a tool. For example, each location detection technique can include strengths and weaknesses, but when combined, the location can be detected with high accuracy and low latency. For example, a first location detection technique can be high accuracy but low frequency (e.g., a sensor configured to obtain data once per second that accurately determines the location but has a high latency). The first location detection technique can be combined with a second location detection technique that includes a sensor that provides location information with high frequency and high accuracy but provides limited information (e.g., an optical mouse sensor that provides dead-reckoning including direction and speed of movement but does not provide the location of the tool in a global environment). In an illustrative example, a hybrid location detection system can use a camera to obtain an image to accurately determine the location of a tool on a surface of a material, and then use an optical mouse sensor to track changes in the location until the next frame of the image arrives. In this example, the second location detection technique using the optical mouse sensor cannot provide all of the location tracking because the integrated speed to determine the location can accumulate errors over time, or if the device is picked up and placed in a different location, the device will not be able to determine the location.

[0079] In some embodiments, to generate a map prior to a cutting or drawing operation, a user can scan the surface of a material with a camera until the camera has obtained a full image, a substantially full image, or a portion of an image of the surface of the material or a desired portion thereof. The system can obtain these images and stitch the images together to produce a coherent map. Generating a digital map image and detecting a location can include, for example, one or more image processing techniques, pattern recognition techniques, localization techniques, computer vision techniques. For example, the system can identify that points A and B in a first image correspond to points C and D in a second image, and stitch the two images accordingly. For example, on a surface of wood, the system can identify changes in the image, highlights, color changes, markings, fiducial markers, binary images, or grain, and compare them to a digital map to determine a location. In another example, the system can also use corners, sides, lighting patterns, or other signals that can identify a location.

[0080] The material can be marked to facilitate mapping of the material surface or detecting the location of the tool on or near the material. For example, the surface of a material such as metal or plastic can not contain enough identifying indicia to accurately detect a location. Distinctive indicia or markings can be added to the material to facilitate location detection techniques such as pattern recognition or image processing. The markings can include any type of material, ink, strip, light, laser, engraving, sculpture, temperature gradient, invisible ink (e.g., ink that is only visible under ultraviolet or other wavelength of light) that can facilitate location detection techniques. In some embodiments, the markings include a strip that can be applied to at least a portion of the surface of the target material. For example, the strip can include a symbol such as, for example, a unique barcode, design, pattern, color, sculpture, raised bump, or indentation. In some embodiments, the markings can include random markings by a user on the target material with a pen, pencil, ink, invisible ink, paint, crayon, or any other marking or writing implement.

[0081] In addition to generating a digital image of the surface of the material, in some embodiments, the system can identify a cutting or drawing design on the surface of the material. The design can include any cutting or drawing desired by a user of the system. For example, the design can include a freehand design, a tracing, a picture, an image, a design generated using computer-aided design ("CAD") software, a purchased design, or a purchased electronic design. The design can be a design of an object that the tool can create by performing operations on the material, such as a design of a table that can be cut from at least one piece of wood.

[0082] The system can merge the design with the map image or otherwise relate the design to the map of the surface of the material or overlay the design on the map image. In some embodiments, the design can be drawn on the surface of the material before or after the initial map of the material is generated (e.g., using a special pen whose ink can be detected by the system using ultraviolet or other wavelengths). For example, if the surface of the material includes a design (e.g., a cutting design or a drawing design) at the time of the initial mapping phase, the system can process the image to identify the design and include it in the digital map of the surface of the material. If the design is drawn or otherwise marked on the surface of the material after the initial map is generated, the system can obtain an image of the material with the design by rescanning or taking a new image of the material using the camera. If the design is drawn or otherwise marked on the surface of the material before the initial map is generated, the system can identify the design as a cutting or drawing design, or a user can indicate to the system that the identified design is a cutting or drawing design.

[0083] In some embodiments, a digital design can be added to a digital map of a material surface without physically adding the design to the surface of the material or otherwise marking the actual material with the design. For example, a digital design can be generated on a computer and can include a CAD drawing, a vector drawing (e.g., SVG, DXF), or any other type of drawing (e.g., JPEG, BMP, or GIF). For example, using CAD software, a user can modify a map image by adding a design scheme. Any other suitable software can be used to incorporate a design scheme onto a map image or otherwise relate a design scheme to a map of a material surface (e.g., data indicating locations for design schemes to facilitate performing a task on a material). After registering a design on a digital map or digital map image, the system can provide a tool with corresponding digital map data or digital image data having the design scheme. In some embodiments, the system can display a map image with the design on a display device of the tool to facilitate a user performing a task on a material. In some embodiments, the tool can perform a task according to a design scheme without displaying the design scheme (e.g., the tool can automatically perform aspects of a task, or the tool can not include a display device).

[0084] In some embodiments, a digital design can be specified using a vector drawing (e.g., a scalable vector graphics (SVG) file, a DXF file). In some embodiments, a design feature can be a path or a primitive shape used in SVG format. In some embodiments, a digital design in SVG format can be used to generate a path for a cutting bit, where the path also uses SVG format - in some embodiments including a path or a primitive shape used in SVG format.

[0085] During a cutting or drawing operation, a user can place a tool on or near a material surface. Upon placing the tool on the surface, a camera can rescan or take an image of a portion of the material surface. The image can correspond to a portion of the material at a different location than the cutting or drawing tool. The system can determine a location of the tool relative to the material surface or design scheme by comparing recognized markers in the new image to recognized markers in a map image generated prior to performing a task on the material. The camera can be mounted or otherwise coupled to the tool such that an image capture aspect of the camera (e.g., a lens) points at a surface of the material at a fixed and known vector from the cutting tool (e.g., a drill bit). By focusing the camera away from the cutting tool, the system can obtain an image that is relatively free of debris caused by cutting that can obscure markers used to detect a location.

[0086] The system can compare the new image to the digital map of the surface of the material to determine the precise location of the tool. For example, the portion of the digital map corresponding to the upper right corner can include a set of identifying markers. Upon obtaining the new image, the system can identify those same identifying markers and determine that those markers correspond to the upper right corner of the map image. The system can then determine the precise location of the cutting or drawing tool based on the camera vector offset.

[0087] In some embodiments, the system can display the precise location of the cutting or drawing tool on a display device (e.g., a display device of the tool or a remote display device communicatively coupled to the system or the tool) in real-time. The system can indicate the location on the display by an“X,” a circle, a dot, an icon, or using any other indication to signal the current location of the tool. In some embodiments, the tool can overlay the indication of the current location on the design plan or cutting path (e.g., a predetermined path). In some embodiments, the tool can overlay the indication of the current location on the map image. In some embodiments, the tool can overlay the indication of the current location on the map image including an overlay of the design plan.

[0088] In some embodiments, the system can include a positioning system that adjusts or moves the tool based on the detected location of the tool and the design plan. In some embodiments, the system can use various location detection techniques to detect the location of the tool and various positioning techniques to move or adjust the location of the tool. For example, the system can include a hybrid positioning system that includes two or more positioning systems to position the tool. Upon determining the location of the tool and the desired location of the tool, a first positioning system can be configured to move, adjust, or position the tool over a relatively large range (e.g., to move the tool anywhere on the work area or surface of the material), but with a relatively low accuracy. A second positioning system can be configured to move, adjust, or position the tool over a relatively short range (e.g., within a 5-inch radius of the current location of the tool), but with a high accuracy. In some embodiments, the first (e.g., coarse or rough) positioning system can include a human positioning the tool on the surface of the material, and the second (e.g., fine or precise) positioning system can include positioning the tool using, for example, a servo motor, a stepper motor, an actuation mechanism, or an eccentric. In such embodiments, the tool adjustment range is short range. In some embodiments, the tool adjustment range can be a circular area, an elliptical area, a polygonal shape, or a similar shape. The first positioning system can include a non-human positioning system, such as, for example, a robotic system, a remote control system, or a global positioning system (“GPS”) enabled device.

[0089] For example, the first positioning system can include a remote low-accuracy positioning mechanism configured to move, adjust, or correct the position of the tool based on the design. The second positioning system can include a short-range high-accuracy positioning mechanism that can move, adjust, or correct the position of the tool based on the design with greater accuracy than the first positioning mechanism over a maximum range. In illustrative and non-limiting examples, the first positioning system can include a maximum range of, for example, a range that includes an entire work area (e.g., an area including a surface of a material on which a task is to be performed), and an accuracy of + / - 0.25”. The second positioning system can include, for example, a maximum range of 0.5” with an accuracy of + / - 0.01”. The maximum ranges and accuracies of the first and second positioning systems can include other range and accuracy values that facilitate the systems and methods of hybrid positioning. In various embodiments, the ranges and accuracies can refer to one-dimensional accuracy (e.g., along an X-axis), two-dimensional accuracy (e.g., X-Y axes), or three-dimensional accuracy (e.g., X-Y-Z axes).

[0090] The first positioning system can be less accurate and include a positioning system in which the maximum range is substantially higher than the maximum range of the second positioning system. For example, the first positioning system can move the tool within + / - 0.25 inches of a desired location from anywhere on the surface of the material, while the second positioning system can be configured to move the tool up to 5 inches from a current position, but with an accuracy of 0.01 inches. In some embodiments, a hybrid positioning system can include multiple positioning systems each configured to accurately determine a location and then position the tool within a range of distances such that when the positioning systems are used together, the system can accurately determine a location and position or adjust the tool accordingly. In some embodiments, the maximum range of each subsequent positioning system can be equal to or greater than the accuracy of the previous positioning system. In an illustrative example, a first positioning system can be able to position a tool on a surface of a material, for example, with a maximum range corresponding to the size of the surface of the material, and with an accuracy of + / - 1 inch. A second positioning system can be able to position the tool on the surface of the material within a maximum range of 2 inches with an accuracy of + / - 0.1 inch. A third positioning system can be able to position the tool anywhere within a maximum range of 0.2 inches with an accuracy of + / - 0.01 inches. Thus, in this example, by using all three positioning systems together, the hybrid positioning system can accurately position the tool within a maximum range that includes the entire surface of the material or work area with an accuracy of + / - 0.01 inches.

[0091] In some embodiments, the system can include automatic adjustments, guidance, or error corrections according to the design to facilitate performing the task. The system can use various types of adjustment, guidance, or correction mechanisms, including, for example, eccentric, servo, stepper motor, control loop, feedback loop, actuator, nut and bolt type mechanisms. For example, the system can include an eccentric or servo motor coupled to the frame, and the cutting tool is configured to adjust the position of the cutting tool relative to the frame. After determining the current position of the cutting tool, the system can compare the current position to the desired position. The system can then guide the tool according to the design. In some embodiments, when the system determines that there is a discrepancy between the current position and the desired position, or the current position or trajectory deviates from the design, the system can adjust the cutting tool according to the design. For example, the system can identify the cutting path or vector of the tool and the design and adjust the cutting tool so that the next cut conforms to the design.

[0092] The system can utilize various automatic correction mechanisms. In some embodiments, the system can include an eccentric configured to adjust the position of the cutting tool. For example, using two eccentrics, the system can adjust the position of the cutting tool in two dimensions. An eccentric can include any circular widget that rotates asymmetrically about an axis. For example, an eccentric can include a circle that rotates about a non-central axis. The eccentric can be coupled to the cutting tool and the frame and configured to adjust the position of the cutting tool relative to the frame, which can adjust the position of the cutting tool relative to the surface of the material. In some embodiments, the system can utilize a screw with a nut to change rotational motion to linear displacement to correct or adjust the tool positioning.

[0093] In some embodiments, the system can include directional control based on the type of cutting tool. For example, if the cutting tool is a saber saw that cannot be adjusted vertically, the system can adjust the orientation or angle of the saber saw according to the design. The system can include an actuator configured to adjust the tilt or angle of the saw.

[0094] The system can control the z-axis of the cutting or drawing tool. The system can determine the position of the tip of the cutting tool relative to the work surface. By controlling the z-axis of the cutting or drawing tool (e.g., an axis substantially normal to the surface of the material; a perpendicular axis; an axis parallel to the axis along which the work member is lowered or raised to or from the surface of the work member or cutting tool), the system can start and stop cutting or drawing in accordance with the design. For example, if the cutting tool is outside of a correctable distance of the design (e.g., outside of an automatic compensation radius), the system can stop cutting by adjusting the z-axis position of the cutting tool (e.g., lifting the cutting bit or mill bit away from the wood). When the user brings the cutting tool back within the automatic adjustment radius, the system can automatically adjust the z-axis position of the cutting tool so that cutting starts again (e.g., lowers the bit into the wood). The radius or range of compensation can correspond to the positioning system of the localization system. For example, if the localization system includes a hybrid positioning system including a long-range and short-range positioning system, the radius of compensation can correspond to the short-range positioning system. In some embodiments, controlling the z-axis position of the tool can facilitate 2.5-dimensional design. For example, the design can indicate z-axis information corresponding to the surface of the material. Accordingly, the system can use the determined z-axis position of the work member or cutting tool or tip thereof to control the motor to move the work member to a second location or position (e.g., x, y, or z-axis position).

[0095] The system can control the motor to move the work member to a given (x, y, z) position based on information indicated in the design. In some embodiments, the system can control one or more motors to move the work member to a given (x, y, z) position based on a desired path determined based at least in part on the design. In some embodiments, the system can control one or more motors to move an adapter for holding the work member to a given (x, y, z) position based on a desired path determined based at least in part on the design. In some embodiments, the desired path of the work member and the desired path of the adapter holding the work member can be related by an offset between the adapter and the work member (e.g., a displacement from the tip of the adapter to the tip of the work member). For example, if the system is similar to a conventional mill and the adapter and work member are axially aligned, the desired path of the adapter and the desired path of the work member will be offset in the z (direction normal to the work surface).

[0096] In some embodiments, the system can indicate to the user that the cutting tool is on the desired path (e.g., a predetermined path) or within a range of compensation, such that the system can correct the position of the cutting tool. In some embodiments, the system can indicate to the user that the cut is not on the desired path or within the range of compensation. The system can also indicate to the user the direction in which to correct the position of the cutting tool or move the cutting tool to be on the desired path or within the range of compensation. The system can visually provide one or more of the indications via the display device using light emitting diodes or other light sources, audio signals, beeps, chirps, or vibrations. In some embodiments, an indication that the tool is deviating from the desired path beyond an acceptable range can include automatically shutting down the cutting machine or adjusting the z-axis of the cutting or drawing tool such that it stops performing tasks on the material. In some embodiments, the system can indicate the desired path on the surface material itself by, for example, shining a beam of light indicating where the desired path is and where to go. For example, upon determining an error, the system can shine a beam of light indicating to the user how much the tool should be adjusted in order for the position of the tool to be within the range of automatic compensation or on the desired path.

[0097] In some embodiments, multiple cutting or drawing tools can be used with the system, including, for example, a jigsaw, a curve saw, a router, or a drill bit. The system can be configured such that a user can use various aspects of the present disclosure with a variety of cutting or drawing tools without any or small / temporary adjustments to the tools. For example, the system can include a frame, a camera, a display device, and a computing device. The frame can be configured such that a cutting tool can be placed in the frame. The camera can be coupled to the frame or can be attached to the cutting tool. Upon placing the camera, the system can automatically or manually calibrate such that the system obtains a vector offset between the camera and the cutting or drawing tool (e.g., a cutting drill bit or a router drill bit).

[0098] In some embodiments, the system can include a standalone device configured to perform mapping and pointing functions and indicate to the user the current position of the device. In some embodiments, the standalone device can be attached to a cutting tool or a drawing tool. In some embodiments, the standalone device can not provide automatic correction functionality. In some embodiments, the standalone device can include a display. In some embodiments, the standalone device can include one or more sensors (e.g., one or more cameras for mapping and positioning). In some embodiments, the standalone device can determine a desired path and detect when the tool is off the desired path. The standalone device can indicate the error by, for example, a display, shining a light on the surface of the material, an audio signal, or a spoken narrative.

[0099] Reference FIG. 1 FIG. 1 illustrates an example of an embodiment of an apparatus for guiding a tool to perform a task. In some embodiments, the device includes a frame and a tool (e.g.,FIG. 1 of the example in FIG. 1 1 1 1 ). The frame can be positioned manually by a user. The device can adjust the position of the tool within the frame to guide or adjust the tool according to a design or to correct for errors in the user's rough positioning. The device can also include a display and be configured to map the target material and display the target material on the display. In some embodiments, markings on the target material (e.g., tape) can facilitate generating a map of the target material by providing distinguishing features. The device can obtain a design or plan by downloading from an online store. The device can display a map of the target material with the design indicating the desired cut pattern.

[0100] Referring to FIG. 2 , an illustrative example of an apparatus for an automatically guided tool following a target path area and performing a task according to a planned design is shown. In some embodiments, to follow a complex path, a user of the device can only need to move the frame in a rough approximation of the path. In this example, the dashed line shows the path the tool would take if the tool position were not adjusted; the solid line is its actual path, e.g., the outline of the Southeastern United States. In this example, a user can grasp the frame and guide the tool along the dashed line roughly, and the tool can adjust itself to cut along the solid line. In some embodiments, the device automatically adjusts the drill bit or other cutting tool based on the position of the cutting tool (e.g., one or more of an x-axis position, a y-axis position, or a z-axis position) and the desired position of the cutting tool. The x-axis and y-axis can intersect to form an x-y plane that is substantially parallel (e.g., within 45 degrees) to the surface of the material, while the z-axis is substantially perpendicular (e.g., 45 degrees perpendicular) or orthogonal to the horizontal plane formed by the x-y axes. In some embodiments, a user of the device can move the device along the dashed line 1210 (or path 406 of FIG. 1 1 1 1 ) while the device automatically adjusts the cutting tool (e.g., x, y, or z position) according to a desired design plan, such as design plan 1205 of FIG. 1 1 1 1. For example, the device can utilize the design to identify or detect the current position of the cutting tool relative to the target surface. The device can then compare the current position to the desired position of the design or map and adjust the cutting tool. For example, if it is determined that the working member or cutting tool tip is 1 inch above the surface of the material, the system can determine to lower the cutting member tip to contact the surface of the material. In another example, if the design indicates to drill a 0.5 inch deep hole in the material, the system can determine the z-axis position of the tip and insert the tip 0.5 inches into the material based on the determined z-axis position. For example, the system can instruct a motor to extend the working member or cutting tool 0.5 inches beyond the surface of the material. FIG. 2 FIG. 23 FIG. 2

[0101] Referring to FIG. 3 ​​​FIG. 6B shows an illustrative block diagram showing an embodiment of a system for automatically guiding a tool. In some embodiments, the system 680 includes a smart device 681. The smart device 681 can include at least one central processing unit (“CPU”) or processor 683 and can include software code 685 that performs one or more processes, at least one memory 687, or at least one display 689. The smart device 681 can include a self-contained unit, or the smart device 681 can include non-self-contained or separate components. For example, the display 689 can be tethered to the smart device 681 or integrated into the housing of the smart device 681. In some embodiments, the smart device 681 can be integrated as part of the system 680 such that the system is a self-contained portable unit. In some embodiments, the system 680 can include one or more communication interfaces (not shown) to allow communication with other computer systems via a network (e.g., to send and receive manufacturing data (e.g., information about cuts made on a work surface), to send and receive digital designs or design plans). In some embodiments, the system 680 can include one or more other interfaces (not shown, e.g., input interfaces).

[0102] In some embodiments, a drill can include a motor (e.g., 210, 220), an actuator assembly (e.g., worktable 690, pivot 694), and an adapter (e.g., a clamp, a chuck) for holding a work member. In some embodiments, a computing device without a display or camera can be detachably coupled with components on a drill. The computing device can include one or more memories operably coupled to one or more processors, where one of the one or more memories can have instructions stored thereon that, when executed by one of the processors, cause the system (including the computing device and the drill) to perform one or more of the disclosed embodiments. In some embodiments, a display can be operably coupled to one of the one or more processors in the computing device. In some embodiments, the computing device can include a display. In some embodiments, one or more sensors (e.g., a camera, an ultrasonic sensor) can be operably coupled to one of the one or more processors in the computing device. In some embodiments, the computing device can include one or more sensors (e.g., a camera, an ultrasonic sensor).

[0103] In various embodiments, the system 680 can include one or more sensors to facilitate determining the location of a tool (e.g., IR, laser, ultrasonic ranging, etc.). For example, and in some embodiments, the system 680 can include a camera 682 that can be used in conjunction with the smart device 681 to construct a map 684 of the material on which work is to be performed. The camera 682 can be coupled or attached to any tool 699 to provide localization of that tool 699. In some embodiments, the camera 682 is coupled with the display 689 and the CPU 683. For example, the camera 682 can be part of the computer or the smart device 681 that can be attached or coupled to any tool 699. A software application or code 685 can be installed on the mobile smart phone and can utilize the camera, CPU, memory, and display of the smart phone. In some embodiments, one or more aspects of the software or processing can be performed by a field programmable array device (“FPGA”) or a digital signal processor (“DSP”).

[0104] In some embodiments, the camera 682 can take images with a high frame rate. For example, the camera can scan the surface of a material to obtain scan data or scan image data. In some embodiments, the camera can scan the surface of a material and a processor can process the scan to generate scan data indicative of a map of the surface of the material. This can facilitate the pointing functions or mapping functions disclosed herein. The camera 682 can also take images at a relatively low frame rate and the camera 682 can be coupled with one or more optical sensors (e.g., sensors in an optical computer mouse). The optical sensors can provide low latency dead reckoning information. These optical sensors can be used in conjunction with the camera 682. For example, the camera 682 can provide accurate global position information a few times per second and significant lag, and the optical sensors can be used to provide dead reckoning information that has low lag that fills in the time since the last image was taken. In some embodiments, an IMU can be used for dead reckoning. The system 680 can use multiple cameras to increase the accuracy or range covered when scanning, or to provide depth information.

[0105] In some embodiments, the system 680 is configured to construct, generate, or otherwise receive a map 684. In some embodiments, the map 684 can be constructed using computer vision (“CV”) or sensor technology. For example, CV technology can be used to construct a photo mosaic. Photo mosaic processing can include taking multiple photos of different portions of the same object and stitching at least two photos together to make at least one overall image that covers some or all of the object.

[0106] In some embodiments, the system 680 or processor can be configured to evaluate the scan data using a technique that includes simultaneous localization and mapping (“SLAM”). SLAM can include using sensors and related software 685 communicatively coupled with the processor 683 to construct a map 684 of the material on which it is working (or “target material”) while simultaneously (e.g., concurrently) determining the location of the tool 699 relative to the map 684. For example, after constructing at least a portion of the map, the camera 682 can capture an image of the material being worked on. The image can be fed to and processed by the smart device 681 to determine the location of the tool 699 or drill rig. The system 680 can analyze the captured image based on the map 684 to determine the location of the camera 681 relative to the material. After determining the location of the camera 682, in some embodiments, the system 680 can identify that the location of the drill rig is a known or determinable offset from the position of the camera 682, which can be rigidly attached to the drill rig.

[0107] In some embodiments, to construct a map, one or more processors (e.g., CPU / processor 683) of a system (e.g., system 680) use one or more cameras (e.g., camera 682) to capture one or more images of the work surface. In some embodiments, the one or more processors can analyze each captured image to identify indicia or markers on the work surface. In some embodiments, the indicia can be related to a feature of the workpiece (e.g., a wood grain pattern). In some embodiments, the markers can be placed on the work surface by a user. For example, the user can apply a tape with location markers (e.g., markers with domino patterns, markers with barcodes, markers with 2D codes, markers with binary images, fiducial markers) that have a pattern of known dimensions (e.g., length, width, pattern spacing, pitch) printed along the length of the tape. In some embodiments, each pattern can have an encoded ID that can be decoded by the one or more processors using an image of the pattern and image processing algorithms. The encoded ID of each marker can not be unique. For example, a tape with location markers can contain 100 repeated unique IDs. In this example, if the user uses a long portion of the tape or non-consecutive portions of the tape, the work surface can have two markers with the same encoded ID. In some cases, the encoded ID of a marker can be incorrectly decoded by the one or more processors (e.g., based on debris covering the encoded pattern), which can result in two markers having the same ID.

[0108] In some embodiments, to generate a map using a set of captured images, one or more processors analyze each image to identify indicia / markers. For each image in the set of captured images, data corresponding to the image ID of the image and indicia / marker information, including indicia / marker ID and location information for each indicia / marker in the image, is determined. In some embodiments, the marker ID can be based on the encoding ID of the encoding pattern. In some embodiments, the indicia ID can be based on the characteristics of the indicia (e.g., based on color if the indicia is a wood grain pattern). In some embodiments, the data for all images in the set of captured images (including image ID and image-level indicia / marker information) is analyzed together, which analysis uses feature mapping CV or SLAM techniques to determine indicia / marker locations subject to constraints derived from the images in which the indicia / marker appeared (e.g., related to the location of each indicia / marker in each image). In some embodiments, the resulting indicia / marker locations, along with the corresponding indicia / marker IDs, are used to generate a global list of indicia / markers (e.g., for each indicia / marker, using the ID and location), where“global” is used to indicate that this list of indicia / markers is not specific to any one captured image, this list can contain information for indicia / markers that only appear in some captured images, and no captured image can contain all of the indicia / markers in the list. As used herein,“list” can be any format (e.g., structured, unstructured, combination of structured and unstructured) data related to list elements.

[0109] In some embodiments, the location of each indicia / marker can be expressed using six or fewer degrees of freedom. In some embodiments, the location of each indicia / marker is given as an X-coordinate, a Y-coordinate, and an angle of orientation relative to the X-axis (assuming that the indicia / markers are all located in a 2D plane). In some embodiments, in addition to using the dimensions or spacing of the markers, one or more processors can use one or more measurements of features included in the work surface (e.g., made by a user) to adjust the dimensional scaling of the indicia / marker locations along one or more dimensions if known a priori (e.g., if they are known patterns printed on a tape).

[0110] In some embodiments, the system can use a global list of landmarks / markers as a map. In a subsequent process of using the map to determine the camera's location, the camera can capture a new image of the work surface. The captured image can be analyzed by one or more processors (e.g., CPU / processor 683) to identify landmarks / markers included in the new image. In some embodiments, a new list of landmarks / markers is generated based on the landmarks / markers identified in the new image (e.g., for each landmark / marker, using the landmark / marker ID and information about where the landmark / marker appears in the image). In some embodiments, if location markers are used, a list of sub-features that make up the landmark identified in the new image is generated (e.g., for each sub-feature, using the sub-feature ID and the location of the sub-feature in the new image). For example, if the landmark is such as FIG. 7B , then based on the 10 white patches in the marker, the number of sub-features in the marker will be 10. Suppose the new image includes FIG. 7B , then the sub-feature list will include all white patches across all 55 markers.

[0111] In some embodiments, if location tags are used, one or more processors may identify a candidate list of tags from the global list as matches for the tags in the new list based on a match of one or more tag IDs between the two lists. In some embodiments, if the tag ID of a tag in the new list matches the tag ID of a tag in the global list, the one or more processors may compare the tag IDs of nearby tags. In some embodiments, one or more processors (e.g., CPU / processor 683) for identifying a candidate list of tags from the global list as matches for the tags in the new list may execute instructions stored on one or more memories (e.g., memory 687) that implement mathematical modeling (e.g., RANSAC), pattern search, or graph traversal algorithms. In some embodiments, after the list of tags in the global list is matched with the list of tags in the new list, a global list of subfeatures is generated for the matched list of tags in the global list (e.g., using the subfeature ID and the subfeature's position for each subfeature). In some embodiments, the subfeature ID in the global list of subfeatures is based on the tag ID in the global list of tags. In some embodiments, the subfeature position in the global list of subfeatures is based on the tag ID and the tag position in the global list of tags. In some embodiments, one or more processors may use the subfeature list and the global list of subfeatures along with one or more mapping algorithms (eg, methods to solve the perspective n-point problem) to determine the location of the camera when taking a new image.

[0112] In some embodiments, a photo mosaic or a single image of the display work surface (e.g., taken with a DSLR camera, taken with camera 682 of system 680) can be used as a map. In some embodiments, a new image of the work surface captured by a camera (e.g., camera 682 of system 680) can be compared to the photo mosaic to determine the location of the camera. In some embodiments, a combination of the photo mosaic and a global list of indicia / markers can be used as a map for determining the location of a camera (e.g., camera 682 of system 680) based on an image of the work surface taken with the camera (including one or more indicia / markers). In some embodiments, a new image of the work surface captured by a camera (e.g., camera 682 of system 680) can be compared to the single image to determine the location of the camera. In some embodiments, the single image taken with the camera and a global list of indicia / markers can be used to determine the location of a camera (e.g., camera 682 of system 680). In such embodiments, the global list of indicia / markers is used as a map.

[0113] Various embodiments can use various other pointing and determination techniques, including, for example, integrated wireless location sensing techniques such as RF, near field communication, Bluetooth, laser tracking and sensing, or other suitable methods for determining the location of tool 699 on top of a workpiece. For example, ultrasound, IR ranging, or lasers can be used to detect the location of a tool relative to a work area or surface of a material. Depending on the embodiment, the detected tool location can be provided to any other component of system 680 to facilitate guiding or adjusting the position of the tool.

[0114] In some embodiments, system 680 can be configured to use the current orientation of a motor shaft to calculate the position of tool 699 relative to the drill rig. For example, system 680 can identify the orientation of a motor shaft by homing the motor shaft and then tracking one or more actions taken since the homing process. In some embodiments, system 680 can use an encoder that can be used instead of homing, as the encoder will be able to directly inform the orientation of the shaft. Through offsets and calculations, system 680 can identify the location of tool 699 or the drill rig relative to the material being worked on. Captured images that can be analyzed for map 684 can include, for example, characteristics of the material such as wood grain and distortion, or can include markers placed on the material. Various aspects of mapping and pointing techniques will be described in more detail below.

[0115] In some embodiments, the system 680 can receive a design 686 or template. For example, the smart device 681 can be configured to receive a design 686 or template from a user of the system 680. The smart device 681 can include or have access to various input / output devices configured to receive a design 686. In some embodiments, the system 680 can receive a design 686 via a network. In some embodiments, a user or the system 680 can modify or adjust the design 686 based on the map 684. For example, a user can adjust the dimensions of the design 686 relative to the map 684 of the material in order to generate a desired work path on the material being processed. In some embodiments, the system 680 can automatically adjust or optimize the dimensions of the design based on the dimensions of the material.

[0116] The network can include computer networks such as the Internet, a local area network, a metropolitan area network, or a wide area network, an intranet, and other communication networks such as a mobile phone network. The network can be used to access web pages, online stores, computers or data of a retail store that can be displayed on or used by at least one user device, the system 680, or the system 100, such as, for example, a laptop, a desktop computer, a tablet, a personal digital assistant, a smart phone, or a portable computer.

[0117] The system 680 can be configured to create, capture, or load a design 686 in a variety of ways. In some embodiments, a design can be downloaded or otherwise obtained. For example, a user can generate a design on a computing device and transmit or otherwise communicate the design to the system 680. In another example, the system 680 can receive a design from a third party entity. For example, a user can purchase a design online via a network and upload the design to the smart device or computer 681. In some embodiments, the system 680 can facilitate capturing a map of a surface and a map of a design 686 on that surface. This can be helpful in setting up the system 680 to follow a particular line or to display an image of the material surface underneath a large tool that obstructs the line of sight to the user, or to display a surface with a drawn design in its original state before the surface is covered in debris or the surface with the drawn design is cut away. In some embodiments, a design 686 can be designed, altered, or manipulated from its original form on the device 681 through a menu driven interface that allows a user to input distances, angles, and shapes or to freehand draw on a touch sensitive pad or display.

[0118] In some embodiments, as the user moves the system or rig 680 along the target material, the smart device 681 processes captured images from the camera 682, determines the location of the rig 680, or provides the user with a desired path on the display 689. Once the user places the rig 680 near the desired path, the rig or system 680 can automatically adjust the position of the tool 699 to achieve the desired work path according to the loaded design scheme 686. As described herein, the terms “rig” and “system” can be used interchangeably. In some implementations, a rig includes the physical device and its accessories, and a system includes the physical device, its accessories, and the related technology and software code embedded in or included with some of the physical elements.

[0119] In some embodiments, the system 680 constructs the map 684 based on images captured by the camera along an arbitrary path of the target material until the entire area of interest is covered. For example, the user can sweep the camera 300 in an arbitrary path over the surface of the material until the entire area of interest is covered. In some embodiments, the system 680 can be configured such that the camera 682 can be removed from the rig 680 to sweep or pass over the area of the material. The system 680 can stitch together the images obtained by the camera 682. For example, the system 680 can use image mosaicking software code 685 to form a seamless map 684 of the surface of the material of the area of interest. The system 680 can store the map 684 in the memory 687. Upon receiving images of the mapped material taken by the camera 682, the system 680 can compare the images to the map 684 held in the memory 687 and can also determine the position and orientation. For example, the system 680 can determine the position of the tool, drill bit, system, cutting member, worktable, or rig based on the comparison.

[0120] In some embodiments, the system 680 can allow a user to create and load a design 686 after the map 684 has been assembled. For example, after the map 684 has been assembled on the smart device 681, such as a computer, the user can create the design 686 on the computer by drawing it directly on the generated map 684. For example, the user can mark locations on a block of wood where holes are desired. Techniques and features of the software code 685, including computer aided design and manufacturing, can be employed to create a design with accurate measurements. Then, when the user returns to the material, the location of the camera 682 on the map 684 can be displayed to the user on the screen or display 689 with the design 686 overlaid on the map 684. For example, the system 680 can display a map image on a display device overlaid with indications of locations relative to the surface of the material (e.g., locations of sensors, devices, cutting tools, or drawing tools). In some embodiments, the system 680 can identify the location of the tool relative to the map. For example, the camera 682 can be attached to a drill and used to determine the exact location of the drill relative to a target drill location specified in the design 686, thereby facilitating more precise alignment of the drill by the user.

[0121] In some embodiments, the system 680 is configured to use visual features of the target material to construct the map and track the location of the camera. In some embodiments, the software 685 includes instructions to use visible features of the material, such as grains, blemishes, or markings, to construct the map and track the location of the camera. The target material can be altered to facilitate the mapping and tracking functions. For example, a solid color plastic can be too indistinguishable for the system 680 to effectively map or track. Thus, the user can alter the surface of the material, for example, in a way that adds features that can be tracked. In another example, the system 680 can instruct the user to mark any features that can be tracked. For example, features that can be added can include ink of the material that is normally invisible, but can be seen in the non-visible spectrum or visible spectrum when UV or other light is applied, thereby allowing the camera to track the pattern of the invisible ink, while displaying no visible markings once the work is complete. In some embodiments, the user can apply a sticker with markings that can be removed later. Features can also be projected onto the material, such as using a projector. In some embodiments, the projected features can be patterned using non-visible light (e.g., infrared, UV). In some embodiments, a sensor sensitive to non-visible light (e.g., an infrared camera) can be used to scan the work surface to capture the non-visible light projected features. Alternatively, if the user will later paint over the material or does not care about the appearance of the material for other reasons, the user can simply mark the material with a pencil or marker.

[0122] In some embodiments, the marking tape or strip can include a unique barcode sequence across the length of the tape. In some embodiments, the marking tape can be thin so that the device can pass over the marking tape without getting stuck or otherwise disturbed. In some embodiments, the tape can be designed and constructed so that it will stay down as the device moves over it, but can also be easily removed when the project is complete. The marking tape material can include, for example, vinyl or any other suitable material. In some embodiments, the marking tape (e.g., tape with location markers) can include a pattern that can be detected using a sensor that is sensitive to non-visible light (e.g., an infrared camera). In some embodiments, the marking tape (e.g., tape with location markers) can include a pattern that fluoresces in response to illumination by a certain wavelength of light.

[0123] In cases where the camera cannot track the material, or cannot track the material accurately enough, or the material is not suitable for tracking (e.g., due to an uneven surface), or for any other reason that prevents the camera from tracking the surface directly, the camera can track other markers outside of the material. For example, a user can place a wall with specific features or markings above, below, or around the side of the material being worked on. The features or markings on the surrounding surface can enable the camera to determine its position on or relative to the material. In various embodiments, different types of positioning technology or devices can be used to position the tool 699 or the worktable 690, possibly in conjunction with the camera 682 which is primarily used to record the visual appearance of the material without needing to perform a tracking function. Positioning technology can include, for example, ultrasound, IR ranging, or lasers.

[0124] The system 680 can adjust the precise location of the tool 699 by adjusting the location of the worktable 690 or a movable platform to which the tool 699 is attached. The worktable 690 can be connected to an eccentric coupled to a motor shaft. As the motor shaft moves in a circular path, the eccentric causes the worktable 690 to move in a complex arc and path. A pivot 694 can be connected to the worktable and also to the eccentric, which is coupled to a second or pivot motor shaft. The pivot 694 can be configured to pull or push the worktable 690 to achieve controlled movement of the worktable over a 360 degree range. By controlling the rotation of the eccentric, the system 680 can position the worktable in almost any XY position within the range.

[0125] In some embodiments, the system 680 uses a reference lookup table to facilitate guiding the tool. For example, the reference lookup table can include motor coordinates related to a desired worktable position. In some embodiments, the system 680 can calculate a computation that can be used to adjust the motors that move the worktable 690 and the cutting bit of the tool 699 connected to the worktable 690 to a desired position. In some embodiments, the system 680 can move the tool 699 360 degrees by positioning the worktable 690 and the pivot 694 in a two-dimensional plane. For example, the cutting implement of the tool can be moved anywhere within a 360-degree window of the target range 408.

[0126] In some embodiments, electric motors can move, position, or adjust the worktable 690 and the pivot 694. The worktable motor controller 691 can control the worktable motor 210. The pivot motor controller 695 can control the pivot motor 220. The worktable motor controller 691 and the pivot motor controller 695 can receive information including a desired location or coordinates from the smart device 681. Based on the received information, the worktable motor controller 691 and the pivot motor controller 695 can activate and control their respective motors 210, 220 to place the worktable 690 and the pivot 694 in the correct or desired position, thereby positioning the tool at the desired location.

[0127] In some embodiments, the smart device 681 can communicate with, receive information from, and control the tool 699. For example, the smart device 681 can send instructions to turn on or off a power source or increase or decrease a speed. In some embodiments, the instructions can signal when to engage a target material by, for example, adjusting a depth of the tool 699 when a user is close enough or proximate to a desired path on the material.

[0128] FIG. 4 An illustrative flowchart of embodiments of a method 600 for performing a task on a target material is provided. For example, the method 600 can use a mill-based embodiment to facilitate cutting a work surface. In some embodiments, at act 602, a user can find or create a design that they want to cut out of a material. In some embodiments, the task can include multiple tasks (e.g., a first task and a second task that can be a subset of an entire task). For example, a task to cut a design out of a material can include a first task to cut a first portion of the design and a second task to cut a second portion of the design. In some embodiments, the first and second tasks can be substantially similar (e.g., the same type of cutting or drawing tool), while in other embodiments, the first and second tasks can be different (e.g., different drill bits or drawing tools, different types of cutting tools, different user devices, different material areas, etc.).

[0129] Prior to or after identifying the design, the user can map the surface of the material or sheet of material. If the material has sufficient markings, the user can use the material itself. However, in act 604, if the material has a flat surface or limited markings, the user can place markings on the material. The markings can include, for example, printer-marked stickers or other types of suitable indicia that can be easily identified.

[0130] In some embodiments, at act 606, the sensors can scan the material to obtain scan data. For example, a camera scans the material and various markings to create a map. The CPU can process the images captured by the sensors or camera and generate a map or scan data. The size and shape of the map can be manipulated as appropriate to a preferred configuration. In some embodiments, at act 608, the design is registered or otherwise correlated with the map to create a cutting plan.

[0131] In some embodiments, at act 610, the cutting tool is prepared to perform the task. For example, the user can load, adjust or secure a drill bit, mount it to a drill and turn on a mill. In some embodiments, the system can turn on the mill via a software initiated process in response to one or more parameters including, for example, motion sensing by the user moving the system 680 in a particular direction.

[0132] In some embodiments, at act 612, the system can receive various settings. For example, the user can set the drill bit width of the cutting tool, the range of the desired range correction of the tool (e.g., area), the size of the crosshairs or the speed of the cutting tool. Thereafter, the software can be provided with instructions to begin the task.

[0133] In some embodiments, at act 614, the drill is placed near the desired path so that the system can automatically adjust the position of the tool to the start adjustment range position along the desired path. The user can then follow a constant speed strategy as described herein, for example, with respect to FIG. 6B. FIG. 3 In some embodiments, once the tool has fully advanced around the plan (act 616), the user can remove the equipment and the work product from the material.

[0134] FIG. 5 An illustrative flowchart showing an embodiment of a method 650 for a constant speed strategy is shown. FIG. 3 The process in FIG. 6B assumes that the user has attached a mill to a drill and has mapped its material and loaded its design. In some embodiments, at act 651, the user begins the process of cutting the material. The process can include moving the tool to a point on the material within the planar or path range (act 653). For example, the user can move the tool or can remotely control the tool.

[0135] In some embodiments, the process includes determining whether there is a point on the tool's position determination scheme that is within the rig's adjustment range (act 655). In the case where there is no point within the range, the process can include sending a notification (e.g., via display, audio, vibration, light, or LED) and waiting until the user moves the device within the adjustment range (act 657).

[0136] In some embodiments, if there is a point within the adjustment range, the process includes setting the point on the plane closest to the tool as the target point at act 659. In some embodiments, the process can include moving the tool to the target point and cutting the material (act 661).

[0137] In some embodiments, the process includes creating a second target by determining whether a new target is within the adjustment range (act 663). If there is a second target, the process can include setting the second target point as the new target (act 665). The device can continue to move in the clockwise direction, cutting from the old target point to the new target point. In some embodiments, the process can include identifying the next target point within the adjustment range as the tool or mill cuts from the old target point to the new target point (act 663). For example, the determination of the best or desired second target can be continuous and based on images or various images detected from the camera and processed by the system.

[0138] In some embodiments, if there is no target point within the range, the process includes clearing the target point (act 667) and starting the determination of whether there is a point on the plane within the adjustment range at act 655. In some embodiments, the process continues until the tool has traversed the entire or partial scheme in a particular direction, such as the clockwise direction.

[0139] In some embodiments, if the material size is greater than the design, the mapping phase can be bypassed. For example, the user can determine a starting point that corresponds to an area on the design (i.e., the upper right corner), and the system 800 can begin to trace the image.

[0140] The embodiments discussed thus far have focused on a rig suitable for a tool attached to a worktable, and the worktable is moved or controlled by one or more motors. The linear design depicts a mill moved by a motor, where the mill is connected to a linear worktable. In this case, the mill is attached or installed as a separate unit. However, the system can be designed as one unit, where the worktable, the motor that moves the worktable, the controller, and all of these are within the same housing and within the same power system as the tool's housing and power. By way of example, the mill housing would be enlarged to fit the worktable and motor, and can include a display integrated into the housing. With such an embodiment, the form factor can be improved to look like a single piece tool.

[0141] The embodiments presented herein are not meant to be exhaustive. Other embodiments using the concepts described herein are possible. Additionally, the components in these embodiments can be implemented in a variety of different ways. For example, a linear stage, or a hinged joint, or an electromagnetic sled, or another positioning mechanism can be used to adjust the tool or the stage on which the tool is located in response to its detected position and its intended position.

[0142] For example, the systems and methods described herein can be used with drills, nail guns, and other tools that operate in fixed positions. In such embodiments, the tool and software can be modified so that the plan includes one or more target points instead of a complete design. The user can move the device so that the target position is within the adjustment range. Then, the software can move the tool to the correct target position. The user can then use the tool to drill a hole, nail in a nail, or perform another operation.

[0143] In some embodiments, the tool can facilitate performing a task without providing automatic adjustment. For example, the stage, pivot, motor, and eccentric can be removed. The tool can be attached to the lower stage housing. The software can be modified so that the plan includes one or more target points. The user can move the device so that the tool is directly over the target position. The user can use the position feedback provided on the display to perform the accurate positioning.

[0144] In some embodiments, the present disclosure facilitates guiding or positioning a jigsaw. A jigsaw blade can rotate in the direction of the blade and move but not perpendicular to the blade, or it will get stuck. The present disclosure can include a rotating stage that can be placed on top of a positioning table. A jigsaw can be attached to the rotating stage. The software can be modified to make the jigsaw follow the plan and rotate to the correct orientation and so that it is ensured that the jigsaw does not move perpendicular to the blade. In some embodiments, a saber saw can be used instead of a jigsaw to achieve the same effect. The cutting tool can be manipulated by rotating the rotating stage and moved along the cutting direction by moving the positioning table. In this embodiment, the working motion of the jigsaw blade is a perpendicular cutting motion along the long axis of the jigsaw blade.

[0145] In some embodiments, the system can support rotation but not translation. For example, the system can automatically orient the blade in a rolling jigsaw (e.g., a jigsaw with a blade that can rotate independently of the main body). In this embodiment, the software can manipulate the blade to have it aim at the correct course and the user can be responsible for controlling its position.

[0146] In some embodiments, the system can position a scroll saw. For example, a camera can be coupled to the scroll saw, and the user can move the material. The upper and lower arms of the scroll saw can be mechanized so that they can be moved independently by computer control. The user can then move the material so that the plan is within the adjustment range of the scroll saw, and the software will adjust the scroll saw to follow the plan. In some embodiments, the upper and lower arms can move to the same position, or move independently to form a cut that is not perpendicular to the material.

[0147] In some embodiments, the position correction device can be mounted to a mobile platform. For example, the device can be placed on the material and drive itself around. The device can also be used in alternative embodiments where two mobile platforms stretch a cutting blade or wire between them. For example, each platform can be controlled independently, allowing the cutting wire to move arbitrarily in 3D, for example to cut foam.

[0148] In some embodiments, the system can be coupled or otherwise attached to a vehicle or work equipment, such as a bulldozer where the position correction mechanism is mounted on the vehicle. For example, some embodiments of the hybrid positioning system can include a vehicle that includes a first position correction system accurate to a first range and a second position correction system accurate to a second range more accurate than the first range. The vehicle can drive on a sheet of material, such as a steel plate located on the ground, and a cutting tool, such as a plasma cutter, can be used to cut the material. In some embodiments, the present disclosure can facilitate a plotter or painter device, for example to lay out lines on a football field or mark a construction site. For example, the vehicle can include an industrial vehicle, such as a fork truck type vehicle, configured to include a cutter or other tool, a camera, and control circuitry described herein to determine the location of the vehicle (or tool) on the material, identify where to cut or mark the material, and adjust the tool to cut or mark the material at the appropriate location.

[0149] FIG. 6is a block diagram of a computer system 600 in accordance with an illustrative implementation. The computer system 600 can be used to implement the system 680. The computing system 600 includes a bus 605 or other communication means for communicating information, and a processor 610 or processing circuitry coupled to the bus 605 for processing information. The computing system 600 also can include one or more processors 610 or processing circuitry coupled to the bus for processing information. The computing system 600 further includes a main memory 615, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 605 for storing information and instructions to be executed by the processor 610. The main memory 615 also can be used for storing temporary variables or other intermediate information during execution of instructions by the processor 610. The computing system 600 can also include a read only memory (ROM) 620 or other static storage device coupled to the bus 605 for storing static information and instructions for the processor 610. A storage device 625, such as a solid state device, magnetic disk or optical disk, is coupled to the bus 605 for persistently storing information and instructions. In some embodiments, the system 600 can include one or more communication interfaces (not shown, coupled to the bus 605) to allow communication with other computer systems via a network (e.g., to send and receive manufacturing data (e.g., information about cuts made on a work surface), to send and receive digital designs or design plans).

[0150] The computing system 600 can be coupled via the bus 605 to a display 635, such as a liquid crystal display or active matrix display, for displaying information to a user. An input device 630, such as a keyboard including alphanumeric and other keys, can be coupled to the bus 605 for communicating information and command selections to the processor 610. In another implementation, the input device 630 has a touch screen display 635. The input device 630 can include cursor movement controls, such as a mouse, a trackball, or cursor direction keys, for communicating direction information and command selections to the processor 610 and for

[0151] In accordance with various implementations, the processes described herein can be implemented by the computing system 600 in response to the processor 610 executing an arrangement of instructions contained in main memory 615. Such instructions can be read into the main memory 615 from another computer-readable medium, such as the storage device 625. Execution of the arrangement of instructions contained in the main memory 615 can cause the computing system 600 to implement the illustrative processes described herein. One or more processors in a multi-processing arrangement can also be employed to execute the instructions contained in the main memory 615. In alternative implementations, hard-wired circuitry can be used in place of or in combination with software instructions to implement the illustrative implementations. Thus, implementations are not limited to any specific combination of hardware circuitry and software.

[0152] Although already FIG. 6 An example computing system is described in the specification, but the subject matter and implementation of the functional operations described in this specification may be implemented in other types of digital electronic circuit systems, or in computer software, firmware, or hardware including the structures disclosed in this specification and their structural equivalents, or in a combination of one or more of them.

[0153] The subject matter and implementation of the operations described in this specification can be implemented in digital electronic circuit systems, or in computer software, firmware, or hardware including the structures disclosed in this specification and their structural equivalents, or in a combination of one or more thereof. The subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more circuits of computer program instructions, encoded on one or more computer storage media, executed by a data processing device or controlling the operation of the data processing device. Alternatively or additionally, the program instructions can be encoded on an artificially generated propagated signal, such as a machine-generated electrical, optical, or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver device for execution by the data processing device. A computer storage medium can be or be included in a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more thereof. Furthermore, although a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. A computer storage medium can also be or be included in one or more separate components or media (e.g., multiple CDs, disks, or other storage devices). Therefore, a computer storage medium is both tangible and non-transitory.

[0154] The operations described in this specification may be performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.

[0155] The term "data processing apparatus" or "computing device" includes various apparatuses, devices, and machines for processing data, including, for example, a programmable processor, a computer, a system on a chip, or multiple or combinations of the foregoing. The apparatus may include dedicated logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). In addition to hardware, the apparatus may also include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of these. The apparatus and execution environment may implement a variety of different computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.

[0156] A computer program, which can also be referred to or referred to as a program, software, a software application, an app, or code, can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a circuit, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more circuits, sub programs, or code portions). A computer program can be deployed to be executed on one computer system or on multiple computer systems that are located at one site or distributed across multiple sites and are interconnected by a communication network.

[0157] By way of example, processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0158] To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display), augmented reality head-up display, or virtual reality head-up display monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.

[0159] Referring to FIG. 7A , illustrative examples of embodiments of design and marking material 702 are shown. Placement of marking material 704 can facilitate mapping of the target material. For example, the target material can not contain enough distinct indicia. Adding differentiated indicia (e.g., tape, ink, pencil) to the target material can facilitate the system 680 mapping the target material and tracking the position of the cutting tool during the cutting process. In this example, the design takes the form of a country / region. The marking material can be placed on the surface of the target material to facilitate mapping of the target material and tracking the position and adjusting the position according to the design.

[0160] Referring to FIG. 7B , illustrative examples of embodiments of site markers 706 are shown. Site markers 706 can be included as part of a design or can refer to a type of marking material 702 used to form a design. Site markers 706 can be placed on the target material and used by the system 680 to map the target material and track the position of the cutting tool relative to the surface of the material.

[0161] The location markers 706 can be designed, constructed, or configured such that the system 680 is easy to detect and read (e.g., via the camera or sensor 682) them. For example, the location markers 706 can include dominoes that represent a binary image. A binary image can include an image with two values, such as an image with two colors. In some embodiments, the two colors can be chosen such that a first color of the two colors contrasts with a second color of the two colors. For example, the two colors can include white and black, red and white, orange and blue, green and purple, etc. The domino-based location markers 706 can be easily and quickly read by the system 680. By using the location markers 706 and a predetermined number of features (e.g., patches 710), the location markers 706 can be quickly read from a binary image contour tree. Furthermore, each domino can include a number that aids in tracking multiple dominoes. Moreover, the system 680 can easily determine a sub-pixel accuracy of each circle 710. In some embodiments, a corner circle (e.g., 710) can be present in each of the multiple dominoes 706. The presence of a corner circle 710 in each domino aids in reading the location marker 706 and can allow the system 680 to read the location marker at an increased distance because the features have a uniform size. Having features of a uniform size prevents a subset of the features from disappearing from the binary image before all of the features disappear. For example, if all of the features 710 have the same size, then the system 680 can either detect all of the features or not detect any of the features if the location marker 708 is outside of a detection range.

[0162] In some embodiments, the location markers 706 can include fiducial markers 708. A fiducial marker can refer to a marker that is detectable by the system 680 with minimal computational power. In some embodiments, the system 680 can detect the location markers 700 directly from an input that is a black and white image (possibly a binarization of an image with more data, such as grayscale or full color).

[0163] In some embodiments, the system 680 can use a contour tree of a binary image to detect the location markers 706. A contour tree can refer to a patch tree. A patch can refer to a region of the same color. A contour can refer to or include a boundary of a patch or a region of the same color. A patch can have a shape such as a circle, a square, a triangle, a polygon, an oval, an ellipse, a rectangle, a pentagon, a profile, or other shape that allows the system 680 to detect the location markers.

[0164] In some embodiments, the patches can be organized in a tree such that each node in the tree corresponds to a patch. Further, if a parent patch contains a child patch, the node can be a child of another node. For example, in the image of the capital letter "B," there are four patches: the white background, the black of the letter, and the two white patches inside the interior of B. They are organized in a tree such that the letter is a child patch of the background, and the two interior patches are both child patches of the letter.

[0165] In some embodiments, the place marker can include a domino as shown in FIG. 7B Although a rectangular domino is shown in FIG. 7B other shapes. For example, the marker can be a polygon, a circle, an oval, a square, a triangle, a pentagon, etc., instead of a rectangular marker 708. The patches 710 can be circular or other shapes. One or more markers can be referred to as a scene 706 or a plurality of markers 706 or a plurality of candidate place markers 706. The marker 708 can be a candidate marker because the system 680 can perform initial processing to identify the image and determine whether the image is a place marker based on threshold tests or meeting criteria (e.g., whether the patches are in predetermined locations, whether a pattern is present, or other signatures that indicate that the image corresponds to the place marker 708).

[0166] The place marker can include one or more rows 712 that include one or more markers 708 and one or more columns 714 that include one or more markers 708. In some embodiments, the plurality of place markers 706 or scenes 706 can be symmetrical (e.g., the same number of rows and columns). In some embodiments, the plurality of place markers 706 or scenes 706 can not be symmetrical (e.g., different number of rows and columns).

[0167] Each domino 706 can include an identifiable signature in the contour tree. For example, the domino can include 10 white patches within a black patch. The white patches can have no child patches. The domino configuration can include a contour tree with ten white child patches that are leaves of the black background tree. Thus, if the system 680 detects this configuration (e.g., a black patch with 10 white patches), the system 680 can take the black patch and process it as a reference marker. This additional processing can ultimately reject the domino as a marker, or accept the domino as a place marker. This possibility extends to any identifiable signature in the contour tree, which can involve a variable number of child patches, as long as it is distinctive enough to have a good probability of identifying it as a marker from the contour alone and to expend additional computational resources to investigate it more deeply.

[0168] Accordingly, the system 680 can be configured to perform an initial evaluation of the detected image using an initial image processing technique. During the initial processing technique, the system 680 identifies a contour tree to determine whether the contour tree matches or satisfies an initial screening. For example, if the system 680 detects a black patch and 10 white patches (e.g., as shown by the dominoes 708), the system 680 can determine that the image can include a site marker and forward the image for further processing. By performing the initial evaluation, the system 680 can pre-screen images and select a subset of images for further, more computationally intensive processing. Accordingly, the system 680 can improve efficiency and reduce the amount of computational resources used to determine the location of a tool relative to a work surface.

[0169] In some embodiments, the marker can be detected very quickly by binarizing the input image, computing a contour / patch tree, or looking for known signatures. In some embodiments, binarizing an image can refer to converting the image to black and white colors. In some embodiments, the site marker can encode data into each fiducial marker (e.g., 708) and be easy to detect. For example, the fiducial markers 708 can encode a number, which allows the system 680 to keep track of (manage, maintain, identify, or determine) a number of fiducial markers present in a scene (e.g., the scene can refer to the site marker 706). The number of fiducial markers 708 can be unique in the scene 706 or can not be unique in the scene 706. In some embodiments, the marker such as each domino 708 includes a pattern of white patches that encodes a number in binary.

[0170] In some embodiments, the marker 708 can include patches (e.g., 710) in predetermined locations. The marker 708 can include a patch in each of the four corners, allowing the system 680 to determine not only the presence of the fiducial marker 708 but also its layout (such as the location and orientation of the marker relative to the camera 682). Including patches in predetermined locations can improve the system’s 680 ability to decode the message encoded in the marker itself. For example, if the patches are arranged in a grid, identifying the corners provides the layout of the grid and allows the system 680 to map each grid square as a 1 or 0 to represent the presence or absence of a patch. In some embodiments, the system 680 can use the patches in the predetermined locations of the marker to detect the layout of the domino or marker 708, but then parse some encoded data in another way, which can or can not be encoded in the binarized image / contour tree.

[0171] In some embodiments, the markers 708 can include patches that are shaped and then can be resolved with sub-pixel accuracy by referencing back to the full color (or grayscale) image. For example, the system 680 can identify (or be pre-configured to identify) the patches as circles. The system 680 can determine a bounding box for each patch in the binary image. Then, the system 680 can use the corresponding grayscale pixels in the grayscale image to fit an ellipse (observed as a circle in perspective) to the pixels, giving sub-pixel accuracy. The system 680 can more accurately detect the position and orientation of the fiducial marker 708 relative to the camera by using this sub-pixel accurate detection of the patches. This position and orientation can then be fed forward in the system 680 for further processing, such as pointing the camera in 3D space.

[0172] Referring now to FIGS. 8A-8B Systems, methods, and apparatus for directing and extracting dust are shown. Dust extraction can refer to the evacuation of material particles removed from a bulk workpiece (a surface of material, a work surface) during a machining process such as milling, routing, sanding, etc. In the woodworking field, the dust can be sawdust. Efficiently extracting dust helps maintain a clean work environment, safe and dust-free breathing air, and prevents dust from accumulating near the tool, which otherwise can impede the cutting action of the tool and cause excessive heat to be generated. In addition, the accumulation of wood dust can create an explosion risk. Furthermore, for an automatically guided tool such as the system 680 that utilizes optical methods (e.g., camera 682) for pointing, dust can interfere with the tool’s ability to determine its location relative to the surface of the material. The systems, methods, and apparatus of the present disclosure efficiently evacuate dust from the work area of the tool. In some embodiments, the dust can be milled out of the work area in a controlled direction without a vacuum source.

[0173] FIG. 8A A tool 800 configured to direct and evacuate dust is illustrated in accordance with an embodiment. The tool 800 includes a rotating cutter 1 (or tool tip, or cutting member, or working member) that shears material 2 as the rotating cutter 1 moves axially, laterally, or a combination thereof through the material 2. The tool 800 includes a tool frame 3. The tool frame 3 can include a cavity formed by a void in the tool frame 3. The cavity 3 can be further formed by a space 4 in which portions of the working material 2 have been removed or cut away. The cutting member or router bit or tip of the tool can extend through the cavity 3. The cavity 3 can form one or more channels or a portion of a channel. The channel directs a flow of air 6. The channel can be formed by the tool frame 3 and the rotating cutter 1. The channel can be formed by the tool frame 3 and the rotating cutter 1 and a portion of the material 2 that has been removed or cut away. The channel can be formed by the tool frame 3 and the rotating cutter 1 and a portion of the material 2 that has been removed or cut away and a portion of the material 2 that has not been removed or cut away. FIGS. 9A-9BFurther shown in FIG. 8 is a tool 800 that can be used with the system 100. The tool can include a camera 10 that can include one or more functions of the camera 682. The camera 10 can include or be referred to as a sensor, such as an image sensor, infrared sensor, or laser sensor. In this embodiment, the working motion of the rotary cutter 1 is spinning along the axis of the rotary cutter 1.

[0174] In some embodiments, the rotational power of the rotary cutter 1 can be generated by a mill 5 or spindle 5 (e.g., a wood trim mill, or a metal cutting tool, or a plastic cutting tool, etc.) that includes an integral fan 802. The fan 802 can be a separate fan integrated into the spindle 5, or the fan 802 can refer to the airflow generated as a byproduct of the spindle 5 of the rotary cutting tool 1. In some embodiments, the fan 802 can be external to the tool, such as external to the spindle 5. The fan 802 can include one or more blades or blades arranged to generate airflow when spun. This fan 802 can generate a downward airflow 6 that expels dust and debris out of the collection cavity formed by the tool frame 3 and the space 4 and along channels in the tool bedplate 7. These channels direct the dust and debris toward the front of the tool 8, which holds the dust and debris from accumulating to the rear of the tool 9 that the optical positioning system 10 (e.g., the camera 682) can sight. In some embodiments, the front 8 of the tool 800 can refer to the portion of the tool facing away from the direction the tool is cutting or the portion of the tool closer to the user of the tool. In some embodiments, the rear 9 of the tool 800 can refer to the portion of the tool facing toward the direction the tool is cutting or the portion of the tool farther from the user of the tool. In some embodiments, the rear 9 of the tool refers to the portion of the tool 800 where the camera 10 sights. The tool 800 can include a vacuum port 11 that opens to one of the channels formed by the voids 3 and 4 that receive the airflow 6.

[0175] FIG. 8B An embodiment of a tool 801 that is similar to the tool 800 including a vacuum source 12 attached to the vacuum port 11 is illustrated. The vacuum source 12 deflects the airflow toward the vacuum source 13. This can be drawn through the connecting channels formed by the voids 3 and 4 in the baseplate 7 and into the vacuum source 12. In this configuration, dust and debris can be efficiently removed from the tool without entering the surrounding environment (e.g., the rear of the tool 9).

[0176] The channels formed by the cavities 3 and 4 allow the airflow 6 generated by the fan 802 of the tool spindle 5 and the airflow generated by the vacuum source 12 to act along a common path to remove dust and debris. This provides an efficient dust removal system because the vacuum source 12 does not oppose the airflow generated by the integrated spindle fan 802.

[0177] FIG. 9AA top perspective view of a device 900 for directing and extracting dust is illustrated. The device 900 can be coupled to, can be part of, or be formed by one or more components of the system or device 800 or 801. In some embodiments, the device 900 includes the base plate 7 of the tool 800. The base plate 7 includes channels 904a-b formed by the voids or cavities 3 in the base plate 7. A portion of the base plate 7 faces or rests on or is opposite the material 2. The fan 802 creates an airflow 6 that flows downward toward the material 2. The vacuum source 12 creates an airflow 13 toward the vacuum source 12 and the vacuum port 11. The direction of the airflow 6 toward the material 2 is indicated by X, while the airflow 13 toward the vacuum port 11 is illustrated by the dot in the circle.

[0178] In some embodiments, the channels 904a-b formed in the base plate 7 are V-shaped. In some embodiments, there can be two channels 904a and 904b extending from the cavities 3. In some embodiments, there can be one channel (e.g., only channel 904a). In some embodiments, there can be multiple channels (e.g., two or more channels). One of the multiple channels can include the vacuum port 11 coupled to the vacuum source 12. The channels 904a and 904b can form a U-shape. The channel 804 can include a third channel that extends perpendicular to the channels 904a and 904b via the cavities 3.

[0179] The channels 904a and 904b can form an angle 906. The angle 806 can be in a range of 1 degree to 180 degrees. In some embodiments, the angle 906 can be 90 degrees, 45 degrees, 60 degrees, 120 degrees, etc. The angle 906 can be selected such that dust from the material 2 is effectively directed away from the back 9 of the tool and to the front of the tool 8 via the channels 904a-b and the airflows 6 and 13.

[0180] The channels 904a-b can include a channel depth. The channel depth can be the same for the channel 904a and the channel 904b, or can be different between different channels. The channel depth can be greater than zero. The channel depth can be a value in a range of 0.02 inches to 2 inches. The depth can be smaller or larger based on the type of tool or the type of material being cut. For example, the size of the particles being directed or extracted can determine the channel depth (e.g., shallower channel depth for smaller particles, and deeper channel for larger particles).

[0181] In some embodiments, the first component of the airflow 6 and 13 generated from the fan 802 can be greater than the second component of the airflow 6 and 13 generated from the vacuum source 12. In some embodiments, the first component of the airflow 6 and 13 generated from the fan 802 can be less than or equal to the second component of the airflow 6 and 13 generated from the vacuum source 12.

[0182] In some embodiments, the airflow generated from the vacuum source 12 can be determined such that the airflow holds the tool 800 (or device 900) to the material 2. This can increase the friction between the tool contact material portions, which can increase the stability when cutting or performing a task on the material 2.

[0183] FIG. 9B A device 902 for directing or extracting dust from the back 9 of the tool is illustrated. FIG. 9B A top perspective view of the device 902 or the substrate 7 including channels 904a-b is illustrated. The device 902 can be similar to or include one or more components of the device 900. In some embodiments, the device 902 includes a vacuum port 11, but is not coupled to a vacuum source (e.g., as illustrated in the device 900). Although the device 902 can not be coupled to a vacuum source at the vacuum port 11, the device 902 can still direct and extract dust via the channels 804 and the airflow 6 generated by a fan (e.g., the fan 802).

[0184] The vacuum port 11 can be positioned anywhere along the channel 904a or the channel 904b. In some embodiments, the vacuum port 11 can be positioned closer to an edge or a corner of the substrate 900 relative to the cavity 3. A distance 908 between the vacuum port 11 and an edge of the substrate 902 can be greater than zero. A distance 910 between the vacuum port 11 and the cavity 3 can be greater than zero. The distance 910 can be different than the distance 908. The distance 910 can be greater than the distance 908. The distance 910 can be a multiple of the distance 908. The distances 908 and 910 can be determined such that dust can be effectively and efficiently directed and extracted from the back 9 of the tool.

[0185] FIG. 9C A bottom perspective view of a base plate 910 is illustrated. The base plate 910 can correspond to the base plate 7. The base plate 910 includes channels 912a-b, which can correspond to the channels 904a-b. The base plate 910 includes a cavity 916, which can correspond to the cavity 3. The base plate 910 includes a vacuum port 914 in the channel 912, which can correspond to the vacuum port 11. The vacuum port 914 can or can not be connected to a vacuum source.

[0186] The substrate 910 can be made of any material that facilitates operation of the system 680 or tool 800. The material can be metal, plastic, alloy, or other material that provides sufficient structural support and friction for the tool 800 to allow the tool to slide on a surface while providing some stability.

[0187] FIG. 9D is a top perspective view of a substrate 920, which can correspond to FIG. 9B an embodiment of the substrate 902. The substrate 920 includes a cavity 922 through which a tip of a cutting member or tool can extend. The substrate 920 can include a vacuum port 924.

[0188] The substrate 920 can include a channel on the bottom of the substrate 920 (e.g., the portion or side of the substrate opposite the material on which a task is to be performed). The substrate 920 can include additional openings or cavities or recesses for one or more screws, or a coupling mechanism for coupling the substrate 920 to a tool, such as the tool 800.

[0189] In some embodiments, a portion of the airflow generated by the fan, a portion of the airflow generated by the motor driving the working member, or a portion of the airflow generated by the vacuum can be directed to cool one or more electrical components (e.g., power supply, heat sink) of the tool (e.g., tool 800).

[0190] Referring to FIG. 10A , a system, method, and apparatus for determining a position of a tool tip relative to a work surface or material is shown. The system, method, and apparatus can calibrate the position detection of the tool. In some embodiments, the system 680 can be configured, designed, or constructed to determine a position of a tool tip relative to a work surface. The system 1000 (or tool 1000) can move, position, or control movement of the tool tip 24 in one or more directions (e.g., FIG. 10B is shown contacting a surface of the material 2). The control can be activated manually or automatically. In some embodiments, the tool 1000 can include or be configured with automatic control of the height of the rotating cutter 24 relative to the surface of the workpiece or material 2. The system 1000 can include FIG. 1 one or more functions or components of the system or apparatus of -9 and 11A-11B.

[0191] The system 1000 (or tool 1000) can calibrate the position detection of the tool. The system 1000 can include a base 18 coupled to the tool 1000. The base 18 can be in contact with the work surface 2. In some cases, the base 18 can include a pad 22. For example, the base 18 can include the pad 22 such that the base 18 is in contact with the work surface 2 via the pad 22. Thus, in some embodiments, the base 18 can refer to the base 18 and the pad 22. In some embodiments, the base 18 can not be in contact with the work surface. The base 18 can be in contact with a sensor 23, the sensor 23 is in contact with the pad 22, and the pad 22 can be in contact with the work surface or workpiece or material 2.

[0192] The system 1000 can include one or more computing devices having one or more processors. In some cases, the system 1000 can include one or more computing devices that are remote from the tool. For example, the tool can include a wireless or wired communication interface that can send and receive data or control information from one or more computing devices that are remote from the tool.

[0193] The system 1000 can include one or more sensors 23 communicatively coupled to the computing device. The system 1000 can include a motor 19 controlled by the computing device to extend and retract the tool tip 24 toward and from the work surface 2. The motor 19 can control or include or refer to one or more components of the system 1000 configured to extend or retract the tool tip 24 including, for example, a movable carriage 15.

[0194] The system 1000 can identify, via the one or more sensors 23, a first value of a parameter indicative of an amount of force exerted on the work surface by a portion of the base. For example, the sensor 23 can include a force sensor 23. The system 1000 can determine the first value as a first force value indicative of a default or initial force exerted on the material 2 by the base 23. This can be indicative of the weight of the tool. The force can be measured or determined in units of Newtons or pounds. The sensor 23 can repeatedly detect or measure the value of the parameter based on a time interval (e.g., every 0.1 seconds, 0.5 seconds, 1 second, 2 seconds, 3 seconds, 5 seconds, or some other time interval). The sensor 23 can compare the first value or first measurement to a second or subsequent measurement. The sensor 23 can repeatedly compare the measurement to a subsequent measurement until the sensor detects a change or difference between the measurements (e.g., a 0.5%, 1%, 2%, 3% change or an absolute change such as 1 N, 0.5 N, 0.25 N, 0.1 N, 0.05 N, or 2 N). The difference can refer to a difference from a predetermined threshold. The threshold can be fixed or dynamic. The threshold can be based on the resolution of the sensor 23.

[0195] The system 1000 can instruct the motor 19 to instruct the motor to extend the working member or tip 24 toward the working surface 2. The system 1000 can then identify a second value of the parameter via the sensor 23 when the working member 24 contacts the working surface 2. The second value can be a second force value. The second force value can be less than the first force value determined by the sensor 23 when the tool tip 24 is not in contact with the working surface. In some cases, there can be multiple sensors 23 and each sensor can determine a first force value and a second force value. In some cases, a first sensor can determine a first force value that is different than a first force value detected by a second sensor. The first value can refer to when the tool tip is not in contact with the material 2. The first and second sensors can identify different first values because the center of gravity of the tool is not evenly located between the first and second sensors. Thus, the second force value detected by the first sensor can be different than the second force value detected by the second sensor when the tool tip 24 contacts the material 2. For example, the base 18 of the tool can be tilted at an angle (e.g., 1 degree, 2 degrees, 5 degrees, or 10 degrees) when the tool tip 24 contacts the material 2. The tilt of the base 18 can cause the first sensor 22 to measure a second force value that is less than the first force value measured by the first sensor 22, while the second sensor 22 can measure a second force value that is greater than the first force value measured by the second sensor.

[0196] The system 1000 (or computing device) can identify a first value of the parameter based on a portion of the base 18 of the tool that is in contact with the working surface 2. In response to the motor 19 causing the working member 24 to contact the working surface 2, the system 1000 can identify a second value of the parameter via the sensor 23 based on a portion of the base of the tool that is not in contact with the working surface (e.g., partially in contact or exerts a force on the surface that is less than a force previously exerted). For example, not in contact can refer to or include a smaller force exerted by the portion of the base 18. In some cases, the system 1000 can instruct the motor 19 to contact the working surface 2 to cause at least a portion of the base 18 to tilt. Tilting the base 18 can refer to distributing the force exerted by the base 18 such that a first portion of the base 18 exerts a greater force on the material 2 than a second portion of the base 18. Tilting the base 18 can refer to changing the distribution of the force exerted by the portion of the base 18. The system 1000 can determine the z-axis position of the working member 24 relative to the working surface 2 in response to the working member 24 tilting the base 18 of the tool in response to the working member 24 contacting the working surface 2.

[0197] The system 1000 can compare the first value of the parameter to the second value of the parameter to generate a difference between the first value and the second value. The system 1000 can determine an absolute difference (e.g., a difference in the amount of force), or simply determine that there is a difference because the two values are not equal to each other. The system 1000 can determine that if the first and second values for a particular sensor 22 are not equal, that this is due to the tool tip 24 contacting the material 24 and offsetting or distributing the force applied by the base 18 onto the material 2. The system 1000 can determine the z-axis position in response to the first force value being greater than the second force value due to a smaller force that can be applied by the base 18 onto the material 2.

[0198] In response to detecting the difference, the system 1000 can determine that the tool tip 24 has contacted the material and use this information to determine the z-axis position of the work member relative to the work surface. For example, the system 1000 can determine that this is the baseline or default position of the tool tip 24. The system 1000 can calibrate the position of the tool tip 24 such that this is the zero position. When the system 1000 retracts the tool tip 24 from the material, the system 1000 can monitor or track the distance of the tool tip 24 from the calibrated zero position that corresponds to the surface of the material 2. For example, the system 1000 can control or instruct the motor 19 to retract or move the tool tip 24 a distance (e.g., 1 millimeter, 5 millimeters, 1 centimeter, 5 centimeters, or 10 centimeters) away from the calibrated zero position that can correspond to the surface of the material. In some cases, the system 1000 can instruct or control the motor 19 to insert the tool tip 24 a distance into the material 2. For example, the system 1000 can instruct or control the motor 19 to insert the tool tip 24 one centimeter beyond the calibrated zero position, which can insert the tool tip 24 one centimeter into the material 2. For example, the system 1000 can use the calibrated zero position to form a one centimeter hole in the material.

[0199] The system 1000 can instruct the motor 19 to retract the working member 24 in contact with the work surface 2 away from the work surface 2. The system 1000 (or its sensor 23) can identify when the working member 24 is not in contact with the work surface by measuring a third value of the parameter. The third value of the parameter can be greater than the second value of the parameter because the tool tip 24 is no longer countering the force applied by the base 18 to the material 2 (e.g., via the sensor 23 or pad 22). The third value of the parameter can be equal to (e.g., substantially equal within 1%, 2%, 5%, or 10%) the first value of the parameter when the tool tip 24 is also not in contact with the material 2. The system 1000 can determine the second z-axis position of the working member relative to the work surface in response to a second difference between the first value and the third value being less than a threshold (e.g., the difference is less than a percentage of the first value or the third value, such as 1%, 2%, 3%, 5%, or 10%; or the difference is less than a force value, such as 1 Newton, 0.5 Newton, 0.01 Newton, 2 Newton, 5 Newton, or 10 Newton).

[0200] Accordingly, to facilitate controlling the height of the rotating cutter 24, the tool can determine a reference point or “zero” point so that the tool 1000 (e.g., via the cutting member 24) can be positioned to remove an amount of material 2. For example, the tool 1000 can sink the rotating cutter 24 into the workpiece 2 a specified depth before the rotating cutter 24 is moved laterally to form a groove. The tool can use a method to precisely determine the position of the tool tip relative to the work surface. In some embodiments, the tool 1000 uses a low-cost sensor 23, such as a force sensor, that detects an increase or change in force applied by a portion of the tool 1000 on the material 2. In some cases, the sensor 23 can include a capacitive sensor, a photoelectric sensor, an electromagnetic sensor, a load cell, a strain gauge load cell, a piezoelectric crystal, a hydraulic load cell, or a pneumatic load cell.

[0201] When the tip 24 is moved toward the material 2 and contacts the material 2, the force applied by the base 18 can be reduced because the force is offloaded to the tip of the tool 24. Detecting this change in force can indicate that the tip of the tool is contacting the surface of the material 2 and allow the tool to configure or set or initialize this position as a zero position. This can be useful for handheld power tools that include an automatic guiding tool, and can also be applied to fully automatic machine tools.

[0202] In some embodiments, the tool 1000 includes a router bit 1 mounted in a spindle 14 of a router 5 (e.g., a wood trim router). The router 5 can be fixed in a movable carriage 15 that slides on a rail 16. The rail 16 can be mounted to a structural column 17. The structural column 17 can be fixed to a base 18 of the tool 1000. A motor 19 can be fixed to the base 18 of the tool 1000 to rotate a lead screw 20. The lead screw 20 can pass through a nut 21 on the movable carriage 15. The lead screw 20 can include square threads, trapezoidal threads, or saw tooth threads. When the motor 19 rotates, the movable carriage 15 translates proportionally to the lead of the lead screw 20.

[0203] In some embodiments, the movable carriage 15 can be mounted to a moving table that is constrained in the Z direction by a frame. In some embodiments, the Z column or rail 16 can be mounted to a moving XY table that is constrained in the Z direction by a frame of the apparatus 1000. For example, the tool or apparatus 1000 can include a drill or frame having a table that can be positioned on a surface of a piece of material, such as wood. The tool can be electrically or mechanically coupled to the frame, and the frame, along with the tool, can be passed over the material. The tool can move (or provide instructions for a user to move) the frame, table, or tool to a desired XY or Z coordinate on the material. For example, the tool can include one or more components of the system described in U.S. Patent Application Publication No. 2015 / 0094836 (e.g., a drill, a tool, a table, etc.). U.S. Patent Application Publication No. 2015 / 0094836 is incorporated by reference herein in its entirety.

[0204] In some embodiments, the tool 1000 can use one or more other configurations or techniques to move the tip 24 of the tool 1000 relative to a work surface. Other configurations can include power screws, translation screws, ball screws, roller screws, fluid power, tear trains, worm drives, rack and pinion drives, electromagnetic actuation, piezoelectric actuation, hydraulic lifts, electric lifts, rotary lifts, pneumatic lifts, mechanical lifts, levers, gears, etc.

[0205] The base 18 of the tool (or apparatus) 1000 can be separated from the work surface 2 by a mat 22 on which the apparatus 1000 rests. In some embodiments, one or more force sensors 23 can be positioned between the mat 22 and the base 18 of the apparatus 1000. When the apparatus 1000 rests on the work surface 2, a gravitational force resulting from the weight of the apparatus 1000 is partially or entirely through the one or more force sensors 23.

[0206] To locate the tip 24 of the cutting tool 1000, the system or device 1000 can move the carriage 15 closer to the work surface 2, which moves the tip 24 toward the work surface. As this motion is occurring, the force through the force sensor 23 can be measured (e.g., measured in response to the motion, measured periodically, measured based on a time interval such as every millisecond, 10 milliseconds, 1 second, etc.). Once the tip 24 of the cutting tool contacts the work surface 2, additional motion causes a small portion of the weight of the device 1000 to be transferred through the tool tip 24 to the work surface 2, and the force through the sensor 23 decreases accordingly. The system detects the change in force on one or more sensors 23 and can stop the motion of the carriage. The position of the carriage 15 is recorded, and the position of the carriage 15 can correspond to the point at which the tool tip is located at the surface of the workpiece. Because the tool tip and the work surface can be rigid, the detectable shift in weight occurs over a very small distance, and using a ¼” carbide alloy mill bit on a birch plywood surface, the error of this method can correspond to less than 0.0005”.

[0207] The system 1000 can repeatedly extend the tool tip 24 toward the material 2 or a surface supporting the material 2 (e.g., a table, a gantry, a floor, or other support structure) or retract the tool tip 24 from the material 2 or the surface supporting the material 2. The system 1000 can repeatedly extend and retract the tool tip 24 to generate or create a three-dimensional map of the material 2.

[0208] In some cases, the system 1000 can extend the tool tip 24 adjacent to an edge of the material 2. The system 1000 can extend the tool tip 24 adjacent to an edge of the material 2 until the tool tip 24 contacts a surface supporting the material 2. The system 1000 can determine a thickness of the material by determining a distance the tool tip 24 extends beyond a surface of the material 2 to contact a surface supporting the material 2. The system can use the force sensor 23 to detect when the tool tip 24 contacts the material 2 or a surface supporting the material to determine these positions. For example, the system 1000 (or motor 19) can extend the working member 24 toward a surface of a working surface. A portion of the base 18 of the tool can be in contact with the working surface 2 while a portion of the base 18 of the tool can be away from the material 2. Alternatively, in some cases, the base 18 can be in contact with the material 2 and the material can be shaped or configured such that the tool tip 24 can contact a surface of the supporting material 2 opposite the surface when extended; or the tool tip 24 can extend through a hole in the material 2 to contact a surface of the supporting material 2. The system 1000 (e.g., via the sensor 23) can detect that the working member 24 contacts a surface of a working surface. For example, the system 1000 can detect a third value of a parameter (e.g., force) and determine a thickness of the working surface 2 in response to a second difference between the first value and the third value being greater than a threshold value (e.g., the difference can be greater than 1%, 2%, 5%, 10% of one of the first value or the third value; or the difference can be greater than a force value of, for example, 1 Newton, 0.5 Newton, 0.01 Newton, 2 Newton, 5 Newton, or 10 Newton).

[0209] The system 1000 can determine a plurality of waypoints based on the working member 24 of the tool contacting the working surface. For example, the system 1000 can repeatedly extend and retract the working member 24 to contact the material 2 and move the working member 24 away from the surface. Each time the tool tip 24 contacts (or does not contact) the material 2, the system 1000 can record information. For example, the system 1000 can record or identify a waypoint. Each waypoint can have an x-axis coordinate, a y-axis coordinate, and a z-axis coordinate. The x-y coordinates can be determined using markings on the surface of the material and can be relative to the surface of the material or a location on the surface of the material. The x-y coordinates can be determined using fiducial markers on the surface of the material, imaging techniques, or vision techniques. For example, a second sensor of the tool (e.g., a vision sensor or camera) can use fiducial markers placed on the working surface to determine the x-axis coordinate and the y-axis coordinate of each waypoint. The system can determine the z coordinate (or depth) by extending the tool tip 24 until the tip 24 contacts the surface and measuring the depth relative to a calibrated zero position. The calibrated zero position can be a location on the surface of the material. The system 1000 can generate a three-dimensional map of the working surface 2 using the waypoints.

[0210] The system 1000 can measure the geometry of the work surface 2 by correlating the position of the tool tip 24 to the position of the device (e.g., tool 1000) on the plane of the work surface 2. To do so, the tool tip 24 (e.g., a cylindrical tool with a conical or spherical tip) can first be correlated to the reference frame of the tool 1000 by detecting the position of the tool tip 24. Once the position of the tool tip 24 is known relative to the reference frame of the tool, the tool can be positioned laterally on the surface of interest (e.g., the work surface 2) to determine the vertical position of the work surface. The vertical position of the work surface can refer to the surface of the material of the work surface. In some cases, the vertical position can indicate a recess, cavity, indentation, or depressed portion of interest depth in a piece of wood. In some cases, the vertical position can indicate a raised portion, protrusion, bulge, or convex portion of interest depth in a piece of wood. The tool tip can then be inserted, extended, lowered, plunged, or otherwise moved until the tool tip contacts the surface of the material portion (e.g., the recess or protrusion). Additional displacement of the tool tip beyond the top portion where the tool tip first contacts the surface of the work surface can indicate the depth of the recess. Similarly, a decrease in the displacement of the tool tip above the portion of the surface of the work surface where the tool tip first contacts the surface can indicate the height of the protrusion. If the surface profile of the recess is of interest, the tool can be moved around the recess to a plurality of points. The tool can determine the depth at each of the plurality of points. The tool can record the depth and lateral position of the tool (e.g., x, y, and z coordinates, where the x and y coordinates can refer to the lateral position and the z coordinate can refer to the depth). The lateral motion can be done automatically using a built-in positioning stage, or manually by a user, or a combination of both.

[0211] The system 1000 can identify or determine the center position of a hole on the work surface 2. For example, a tool 1 with a conical tip 24 can be fitted into the system. The tool 1 can then be positioned approximately over the center of the hole (e.g., within 5%, 10%, 15%, 20%, 25%, 30%, 50%, 75%, or 90% of the diameter of the hole), and plunged until the tip 24 contacts the circle of the hole. Because the tool tip 24 can be conical, the tool tip 24 can center the tool on the hole. The tool can then determine the lateral position (e.g., x and y coordinates) using, for example, a vision system with a camera 10 to determine the position of the hole.

[0212] The system 1000 can include or be in communication with a computing device, a processor, or a microprocessor, such as the processor of system 680. The computing device can include one or more processes of the system 680. The system 1000 can use the computing device to control the motion of the positioning motor and can also measure the force through one or more force sensors 23. The sensors 23 can include, for example, force sensitive resistors, piezoelectric sensors, strain gauges, load pins, shear beams, tension links, magnetic level gauges, torque sensors, load cells, hydraulic load cells, pneumatic load cells, elastic devices, magnetoelastic devices, plastic deformation, foil gauges, etc.

[0213] In some embodiments, the tool can detect the tilt using a camera, visual information, or an IMU. The tool can include a camera 10 (also shown in FIG. 8A The camera 10 can include one or more components or functions of the camera 682. The camera 10 can determine a shift in the captured images that corresponds to the tilt resulting from the base lift. The camera 10 can take a first picture or image before the tool brings the tool tip 24 into contact with the work surface 2, and then take a second image when the tool tip contacts the work surface. The camera 10 can repeat taking images based on a time interval (e.g., every 1 second, 2 seconds, 3 seconds, 0.5 seconds, or 5 seconds) and compare the first image to subsequent images to identify the tilt. The camera 10 can take a series of images and then compare the images to each other to detect when the tool tip contacts the surface causing a tilt. In some cases, each image in the series of images can be associated with a timestamp. Each image can also be associated with, labeled with, or otherwise correspond to a location of the tool tip. The system can determine which image in the series of images first indicates a tilt (e.g., when the tool tip contacts the material 2, the objects in the images taken by the camera 10 can appear closer when the tool 1000 is tilted toward the back of the tool). In some cases, the system 1000 can determine a difference or misalignment of pixels between the first image and a subsequent image. In response to detecting the misalignment in the pixels, the system 1000 can determine that the tool tip contacted the material 2 at the timestamp corresponding to the subsequent or second image with the misaligned pixels relative to the first or previous image. The camera can compare the first image to the second image to identify a tilt or change between the two images.

[0214] In some embodiments, the system 1000 can determine when the working member 24 is in contact with a known surface (e.g., the top surface of the base 18). Once the working member 24 is removed from the known surface, the system 1000 can cause the working member 24 to first contact the work surface 2 by extending the working member 24 downward a known offset that is equal to the height between the known surface and the work surface 2. This method of determining contact between the working member and the work surface can be used if the working member can penetrate the work surface and thus obfuscate detection of contact between the working member and the work surface.

[0215] In some embodiments, contact between the working member and the work surface can be determined by detecting the power consumption of an actuator driving motion along the axis (e.g., the motor driving the z-axis). Once the working member contacts the work surface, the power consumption of the actuator increases due to the increased load on the axis as the working member pushes against the work surface. In some embodiments, the power consumption of the axis actuator can be measured using an inline current sensor in the actuator voltage supply. In some embodiments, contact between the working member and the work surface can be determined by measuring the deviation between the actuator step position and the actuator axis encoder reading - once the working member contacts the work surface, this deviation increases.

[0216] In some embodiments, one or more processors in a tool (e.g., the system 1000) can monitor signals from one or more of: a force sensor, a camera, a current sensor powering an actuator, an encoder monitoring motion along an axis, or an IMU that simultaneously detects contact of a working member (e.g., a tool tip) with a surface (e.g., a work surface, a surface in the tool). In some embodiments, the one or more processors can analyze one or more of the monitored signals to determine contact of the working member with the surface. In some embodiments, contact of the working member with the surface can be determined based on the signal that provides the best signal-to-noise ratio. In some embodiments, contact of the working member with the surface can be determined based on two or more signals that confirm that the working member has contacted the surface.

[0217] The sensor 10 can include an image sensor or camera. The parameters can include pixels. The pixels can have a location in the image. The system 1000 can capture (e.g., via the image sensor) a first image including pixels having a first value (e.g., a binary value, a 256-bit value, a red, green blue value, a grayscale value, a luminance value, or a numerical value). The system 1000 can capture a second image including a second value for the pixels. The second value can be for the same pixels as the first value. The pixels can be locations in the image. The system 1000 can compare the first image including the first value to the second image including the second value to identify a difference between the first value and the second value. The system can compare one or more pixels in the first image to one or more pixels in the second image to detect a difference. The system can compare the two captured images to determine that they are misaligned. The images can be misaligned due to the base being tilted at an angle that can cause the camera to capture the second image at a different angle or from a different perspective than the first image. Thus, the system can attribute the misalignment to the tool tip 24 contacting the surface of the working material and tilting the base.

[0218] The tool can use the capacitive sensor 50 or the electromagnetic sensor 60 to determine the proximity of the tool tip 24 to the working surface 2. For example, the electromagnetic sensor 60 can sense or detect the tool tip 24 or a sensing coil near the working member 24 including metal by sensing eddy currents induced in the metal.

[0219] In some cases, the tool 1000 can include an IMU. For example, the sensor 23 or the sensor 10 can include an IMU, such as a 3-axis accelerometer or gyroscope. The IMU can indicate a tilt in response to motion or sudden motion caused by the base lifting. For example, the IMU can determine a first value indicating an acceleration of the base of the tool when the tool tip is not in contact with the surface. For example, the first value can be zero because the base can be resting on the working surface. When the tool tip touches or contacts the surface, the IMU can determine a second value. The second value or second acceleration value can indicate an acceleration, impact, movement, force, or other displacement of the base caused by the tool tip contacting the working surface and moving the base mechanically connected to the tool tip. The computing device can compare the first value to the second value to identify an acceleration of the base of the tool based on the contact of the working member with the working surface. In some cases, the computing device can determine that the first value and the second value are not equal or substantially equal (e.g., within 1%, 2%, or 5%) and determine that the tool tip is in contact with the working surface based on the difference in acceleration.

[0220] The tool can determine or detect additional information about the tool, including tip or working member position, diameter, or tool geometry. Determining the geometry of the tool can include or refer to determining the diameter of the cutting tool. The tool geometry information can be used to automatically determine the length of the cutting flute of the working member and the angle of the cutter (e.g., V-bit or helix angle). For example, the tool can include a camera 10 or a beam break sensor 10 (e.g., laser beam break sensor, infrared beam break sensor, photoelectric sensor, or optical sensor) proximate to the tool tip 24. The working member 24 can fall into the line of action of the sensor 10, and the tool can detect the position of the working member 24 when the working member 24 breaks the beam formed by the sensor 10. In some cases, the axis of the beam can be pre-calibrated with respect to the coordinate system of the tool.

[0221] In some cases, the system can include one or more vision cameras 10 aimed at the tool tip 24 or tool member 1 to determine the position of the working member 1 or tool tip 24. The vision camera 10 can be pre-calibrated to the tool coordinate system to detect the tool tip 24. In some cases, the vision camera can include a linear charge-coupled device (CCD) sensor or other image sensor. The linear CCD sensor can use less processing than a vision camera to detect the tool tip.

[0222] The system 1000 can measure the diameter of the working member 1 or tool tip 24. The tool can displace the tool tip 24 while measuring or determining the position of the tool tip. By displacing the tool tip, the tool can detect the tool diameter using a single beam break sensor 10 by passing the tool from left to right across the sensor 10. The lateral motion of the tool can cause a first break and then not block the beam to provide a measurement of the tool diameter. Since a mill bit can have a helical flute, the tool can perform multiple measurements along the length of the tool to determine the diameter. The tool can determine the diameter using eddy currents or using capacitive sensing of a one-dimensional sensor to gather multi-dimensional information about the tool geometry by correlating the sensor data with the tool position. The tool can determine additional information about the tool tip 24, such as the tip angle in the case of a V-shaped cutting bit. In addition, the tool can include a vision camera 10 to detect the geometric properties of the tool.

[0223] The system 1000 can include or be configured with a hybrid positioning system to position a working member of a tool. For example, the system can include a worktable. The system can include a sliding mat proximate to the worktable to facilitate movement of the worktable. The system can include at least one motor adapted to move the worktable. The system can include at least one motor controller to control the at least one motor. The system can include a computing device or processor in combination with one or more software applications to process data and provide information to the at least one motor controller. The system can include a first sensor configured to capture first information of a surface of a material to construct a map of the surface. The first information can include an image of the surface. The system can include a second sensor communicatively coupled with the processor. The second sensor can capture second information of the surface to determine at least one of a location of a working member and an orientation of the working member relative to the surface. The computing device or processor can construct a map of the surface using the first information captured by the first sensor. The computing device or processor can receive a design corresponding to the map of the surface constructed using the first information. The processor can display the design overlaid on the map via a display screen. The system can receive the second information of the surface via the second sensor. The system can determine at least one of the location of the working member and the orientation of the working member relative to the surface based on the second information of the surface and based on the map. The system can display the location of the working member overlaid on the map via the display screen. The system can determine a desired location of the working member based on the design registered on the map and the at least one of the location and the orientation. The system can provide motor control information to control the at least one motor to move the worktable and the working member to the desired location as the tool advances in a first direction within a selected range substantially adjacent to a contour of the design. The system can automatically realign the tool to a boundary edge of the design in a second direction as the tool advances in the first direction.

[0224] For example, the system 1000 can use the determined z-axis position of the working member to provide motor control information for controlling one or more motors to move the working member from a first location to a second location based at least in part on the z-axis position of the working member. The motor control information can include one or more of x-axis information, y-axis information, or z-axis information. The tool can advance in a direction within a range adjacent to a predetermined path of a working member of the tool.

[0225] In some cases, the system 1000 can receive first information from the first sensor and determine, using the map of the surface, at least one of a first location (e.g., x-y coordinates or x-y-z coordinates) of the working member of the tool and an orientation of the working member relative to the surface based on the first information of the surface of the material. The system can indicate, via a display screen of the tool, the first location of the working member of the tool relative to the map of the surface. The system can retrieve a design corresponding to the map of the surface to identify a path of the working member of the tool. The system can compare the first location of the working member of the tool to the design to determine a second location of the working member of the tool corresponding to the path of the working member of the tool. The system can provide motor control information based on at least one of the second location and the orientation to control at least one motor to move the worktable and the working member to the second location. The tool can advance in a direction within a range adjacent to the path of the working member of the tool.

[0226] The system can perform a constant velocity technique to provide motor control information to control at least one motor to move the worktable and the working member to a plurality of subsequent locations while the tool advances in a corresponding plurality of subsequent directions. The system can automatically realign the tool to a boundary edge of the design in a third direction when the tool advances along a fourth direction. The system can display a target range window that presents an illustration of a reference point of the tool, an intended cut path, and a desired tool movement path. The intended cut path can indicate a location in an x-y coordinate system and a z-axis depth.

[0227] The sensor can receive or capture a real-time feed of image data. The system can receive the real-time feed of image data captured by the sensor and use the real-time feed image data to compare a previous position (e.g., x-y coordinates or x-y-z coordinates) on the design and a next preferred position (e.g., x-y coordinates or x-y-z coordinates) on the design to automatically realign a position of the tool.

[0228] While FIGS. 10A-10B Determining the position of the rotary cutting tool 24 relative to the work surface 2 is illustrated, but the method can be applied to a plotter pen, a vinyl cutting knife, a pipette tip, a vacuum nozzle for a pick-and-place machine, or any other system to determine a zero position of a working member 24 relative to a working material 2.

[0229] FIG. 10C A force sensor 23 adjacent to the pad is illustrated according to an embodiment. The force sensor 23 can be temporarily placed there to perform a calibration procedure to determine a zero position. The force sensor 23 can be removed after the calibration process is completed.

[0230] FIG. 10DA force sensor 23 is illustrated positioned or placed on top of a substrate 920. One or more force sensors 23 can be positioned anywhere on a tool 1000 such that the force sensor 23 can detect a change in force corresponding to the tool tip 24 contacting a surface of the material 2. The change in force can be a decrease in the force detected because some of the force is transmitted to the material via the tool tip 24 instead of through the force sensor 23 to the material.

[0231] FIG. 11A And 11B A tool 1100 is illustrated having a substrate 1105. The tool 1100 can include one or more components of the tool 1000 and the substrate 1105 can correspond to the substrate 910. FIG. 11A Dust or particles are illustrated remaining on the material when dusting and directing techniques are not used, while FIG. 11B The dust directing and extraction techniques described herein can remove dust from the material (e.g., via an air flow generated by a fan and / or by a vacuum source through a channel away from the back of the tool or extracted via a vacuum port). The tool 1100 can move particles of material removed from a work surface by a work member via a cavity or channel of a substrate of the tool. The tool 1100 can extract the particles away from the work member via the cavity by a vacuum.

[0232] FIG. 12 A block diagram of a method of calibrating position detection of a tool is illustrated in accordance with an embodiment. Briefly, the method 1200 includes detecting, at 1205, a first value of a parameter by a tool. At step 1210, the tool extends a work member toward a work surface. At 1210, the tool detects a second value of the parameter. At 1220, the tool determines a position of the work member relative to the work surface. The method 1200 can be performed by one or more components or modules of one or more systems depicted in FIGS. 1-11B

[0233] Still referring to FIG. 12 And in further detail, the tool detects, at 1205, a first value of a parameter. The tool (e.g., via a sensor) can detect the first value of the parameter. The sensor can be communicably coupled to a computing device including one or more processors. The parameter or the first value thereof can be indicative of an amount of force exerted on or toward a work surface by a portion of a base of the tool. The tool can detect the first value of the parameter with the portion of the base of the tool in contact with the work surface. For example, the portion of the base can rest or be placed on the work surface or material. In some cases, the base can include a pad that is in contact with the work surface.

[0234] ​At 1210, the tool detects a second value of the parameter. The tool (e.g., via a sensor) can detect when the working member contacts the work surface by identifying a second value of the parameter that is less than the first value of the parameter. The second value can be less than the first value because the force applied by a portion of the base can be less due to the tool tip distributing the force applied by the base. The force can be distributed such that the tool tip applies some of the force to the material or such that another portion of the base applies a greater force than the first portion of the base. For example, the tool tip can tilt the base such that the first portion of the base applies a smaller force than the second portion of the base. For example, the tool can detect the second value of the parameter without a portion of the base of the tool being in contact with the work surface in response to the motor contacting the working member with the work surface. The tool can determine the z-axis position of the working member relative to the work surface in response to the working member tilting the base in response to the working member contacting the work surface.

[0235] At 1210, the tool detects a second value of the parameter. The tool (e.g., via a sensor) can detect when the working member contacts the work surface by identifying a second value of the parameter that is less than the first value of the parameter. The second value can be less than the first value because the force applied by a portion of the base can be less due to the tool tip distributing the force applied by the base. The force can be distributed such that the tool tip applies some of the force to the material or such that another portion of the base applies a greater force than the first portion of the base. For example, the tool tip can tilt the base such that the first portion of the base applies a smaller force than the second portion of the base. For example, the tool can detect the second value of the parameter without a portion of the base of the tool being in contact with the work surface in response to the motor contacting the working member with the work surface. The tool can determine the z-axis position of the working member relative to the work surface in response to the working member tilting the base in response to the working member contacting the work surface.

[0236] At 1220, the tool determines a position of the working member relative to the work surface. The tool (e.g., via a computing device) can determine a z-axis position or depth of the working member relative to the work surface in response to the difference between the first value and the second value being greater than a threshold. The tool can calibrate a position detection system of the tool based on these detected z-axis positions. For example, the tool can set this position as a zero, initial, or default position. The system can then determine the z-axis coordinates or position of the tool tip relative to the calibrated zero position. In some cases, the tool can not calibrate the detected surface as the zero position, but can record the absolute distance of the spindle. Since the tool tip length can vary based on the type of working member or tool, the tool can determine the position of the tip of the spindle beforehand, as it is not interchangeable.

[0237] At FIGS. 13-21 Forms and structures of embodiments of the present disclosure for use with a cutting tool are provided and depicted in FIGS. 13-21The depicted embodiment provides a system or drill 100 configured for use with a router 500. The system 100 includes two support legs 104 that attach at a lower end to a base housing 130 and terminate at an upper end in a device cradle 122. The device cradle 122 includes left and right monitor clamps 124 to clamp or lock a monitor or smart device 570 into the device cradle 122. The device 570 includes a display screen 572 for a user to view the cutting path for that particular use. The base 130 also has left and right handles or grips 106 attached by gripping support arms 108.

[0238] The lower end of the base 130 has a floor 139 that encloses a worktable 150 and a lower worktable glide 151. The base 130 and the floor 139 are fastened to one another such as by machine screws. As FIG. 20 shown, the floor 139 has a bottom glide 141 attached to the bottom. The bottom glide 141 is used to assist the drill 100 in moving along the surface of the material being worked on. The bottom glide 141 can be made of high density polyethylene, Teflon, or other suitable material that is both durable and suitable for sliding along the material.

[0239] The router 500 is added to the drill 100 by attaching the router base plate 510 to the worktable 150. As FIG. 21 shown, the worktable 150 has several tool attachment points 164 for attaching the router base 510 to the worktable 150. The router base 510 has a plurality of router base support legs 508 that form a cage around the router bit 512. The router 500 also has a power cord 506 and an on-off switch 504. The drill 100 can be implemented as a self-contained portable unit that includes an on-board power source such as a battery power source.

[0240] The smart unit or monitor 570 can have an input cable 574 with a cable termination or receptacle 576. If the device is a smart unit, the CPU, software, and memory will be on the device itself. If the device 570 is merely a monitor, the cable 574 and receptacle 576 will be connected to a CPU unit.

[0241] As FIGS. 14-19 shown, the system 100 can include a worktable motor 210 and a pivot motor 220. The worktable motor 210 is used to control the movement of the worktable 150. The pivot motor 220 is used to control the movement of the pivot arm 156 that pulls or pushes the worktable 150 to convert the rotational motion of the motors 210, 220 into relative linear motion. The worktable motor 210 and the pivot motor 220 each have their own motor covers 212, 222, respectively.

[0242] Motors 210, 220 can be controlled by a worktable motor driver 253 and a pivot motor driver 254 connected to the printed circuit board 250 and the microcontroller board 252. The microcontroller 252 processes low-level instructions from a smart device or CPU unit (i.e., a laptop). The instructions will be instructions to move the motors 210, 220 to set positions (i.e., positions 150, 125) in the correct step commands to drive the motors to those positions. The orientation of the motors is tracked by homing the motors to a zero position once and then tracking all subsequent steps taken. Alternatively, the system can use rotary encoders to track the state of the orientation of the motor shafts. The motors 210, 220 and motor drivers 253, 254 are powered by connecting a power plug receptacle 255 to a power source.

[0243] As shown in FIG. 3, the rear of the drill 100 includes a camera support 190. The camera support 190 can be one or more support members that connect to the upper worktable housing 130 and terminate at the top of the drill 100 where the camera 300 is mounted. The camera 300 and lens 304 are placed in a relatively downward position to capture images of the material being worked on and its surrounding area. FIGS. 15-16

[0244] An eccentric can be used to convert the rotational motion of a motor to linear motion. Eccentrics are discs that rotate around an off-center shaft. As the shafts rotate, they create linear motion in a collar that is wrapped around the eccentric disc. Eccentrics are able to maintain the same low-backlash accuracy of a precision linear worktable while being less expensive. A linear displacement range of 1 / 2" is well within the capabilities of an eccentric. The tool can include two eccentrics mounted on a frame and connected to a worktable that can slide on its base. The eccentrics can be rotated by a stepper motor, and by rotating them, the worktable can be moved within the frame. The size and shape of the various eccentrics can be changed to provide greater or lesser relative movement of the tool 699 with respect to the work space.

[0245] To constrain the worktable, one eccentric can be coupled directly to the worktable through a ball bearing, while the other eccentric is coupled and hinged. This linkage design results in a non-linear relationship between the orientation of the eccentrics and the position of the worktable. Near the center of the range, a modest rotation of the eccentrics results in a modest motion of the worktable. In contrast, near the edges of the range, a much greater rotation is needed to move the worktable a fixed amount. In some examples, the worktable displacement is limited to about 95% of the maximum range to avoid positions with extreme non-linearity. This linkage design also allows for back-driving, as forces acting on the tool can rotate the cam away from its target position. However, the present disclosure utilizes a motor that is sufficiently powered to resist back-driving even in the presence of significant forces. ​

[0246] As shown in FIG. 21 The upper table housing 130 can be a single unit with the spacers 131, 133, 135 machined or formed in the upper table housing 130. The spacers 131, 133, 135 provide the space needed for the table 150 and pivot arm 156 to move. The front spacer 131, side spacers 133, and rear spacer 135 need not be formed as one unit. Rather, the front spacer 131, side spacers 133, and rear spacer 135 can be separate pieces that are attached to the upper table housing 130. The upper table housing 130 also houses several upper table glide pads 137. The upper table glide pads 137 allow the table stabilizing arms 152 to move along the pads 137 with minimal friction.

[0247] The table 150 is desirably made of a lightweight but durable and strong material, such as aluminum or some other alloy. The table 150 is likely machined to include one or more stabilizing arms 152, table eccentric arm members 154, tool attachment points 168, and openings 160 where tools extend through the table 150. Further, the pivot arm 156 is likely machined from the same alloy or material as the table 150.

[0248] In operation, the table motor 210 moves in response to rotation of the table motor shaft 184. The table eccentric cam member 174 is attached to the table motor shaft 184. When the table motor shaft 184 rotates, the table eccentric cam 174 rotates and the cam design causes the table arm members 154, which are connected to and surround the cam 174, to move the table 150. A bearing ring can be used between the cam 174 and the table arm members 154.

[0249] Additionally, when the pivot motor 220 moves, the pivot motor shaft 186 rotates. The pivot eccentric cam member 176 is attached to the pivot motor shaft 186. When the pivot motor shaft 186 rotates, the pivot eccentric cam 176 rotates and the cam design causes the pivot arm members 154, which are connected to and surround the cam 176, to move the pivot arm 156 back and forth, which causes the table 150 to move relative to the pivot arm 156. A bearing ring can be used between the cam 176 and the pivot arm 156.

[0250] As the table 150 and pivot arm 154 move, the table stabilizing arms 152 move along the upper and lower table glide pads 151 (e.g., as in FIG. 13The worktable eccentric 174 and the pivot eccentric 176 can include bosses. The bosses provide some extra material for the eccentric 174, 176 to accommodate a set screw that is clipped onto the worktable motor shaft 184 or the pivot motor shaft 186, thereby securely attaching it to the respective eccentric 174, 176. FIG. 21 The pivot eccentric boss 187 can be seen in the middle. Since the worktable 150 and the pivot arm 156 operate in different planes, the worktable eccentric boss is flipped relative to the pivot boss 187, and thus the worktable eccentric boss is not shown in the figure.

[0251] FIG. 22 Systems for guiding tools are depicted. Manufacturing or production operations can include working on or with a piece of material having at least one plane, such as cutting a shape out of a piece of plywood. However, it can be challenging for a tool to determine the location of the edge of a plane, which can be rectangular, as in plywood, or a smooth profile, such as the edge of a 2D template. The systems, methods, and apparatuses of the present solution relate to systems for detecting the shape and / or location of an edge.

[0252] The system 2200 can be configured with one or more techniques to facilitate guiding a working member or drill bit of a tool. For example, the tool can include a probe and be configured with a lateral probing technique that measures the surface of a material or workpiece, or establishes a reference point on or relative to the workpiece. The tool can probe one or more points of a workpiece profile to digitize a template. The tool can probe one or more points of a profile to scan the edge of a work material before and after flipping to align a scheme for double-sided processing. The tool can probe one or more points of a profile to generate a grid overlay.

[0253] In some embodiments, the system can include a handheld tool coupled with a digital processor. The handheld tool can include a physical element of known or approximately known geometry, such as a probe. In addition to being used as a probe, the probe can also be part of a tool used in some other capacity other than probing, such as a drill bit. Using one or more sensors, the system can determine the 3D position or location of the probe in an arbitrary coordinate system and store the position. The system can determine the position by detecting the position of the tool frame and using an offset from the tool frame to the probe, or the system can directly detect the position.

[0254] System 2200 can include one or more components or functions of system or tool 100, 680, 600, 800, 801, 1000, or 2800. System 2200 can be integrated with or included with one or more components or elements of system or tool 100, 680, 600, 800, 801, 1000, or 2800. System 2200 can include FIG. 1 - one or more functions or components of the systems or devices of 9 and 11A-11B. For example, the system can include tool 1000 and base 18 or pad 22 coupled to tool 1000. System 2200 can include one or more processors (e.g., CPU 683), computing devices (e.g., 600), or memories (e.g., memory 687) designed and configured to facilitate guiding the tool. System 2200 can include interface 2205. Interface 2205 can include a touch interface, buttons, toggle switches, motion interface, or graphical user interface. Interface 2205 can include a dynamic interface 2205 manipulated by one or more processors of system 2200. Interface 2205 can include an input / output interface such as a touchscreen, keyboard, mouse, or buttons.

[0255] System 2200 can receive instructions or indications via interface 2205. The instructions can include instructions to initiate or continue a probing or mapping operation. For example, the instructions can be to map a material or workpiece. A user can input the instructions via interface 2205. Interface 2205 can receive various instructions or indications. For example, the interface can receive an indication that a probe is in contact with an edge of a material. Interface 2205 can receive an indication or instruction to lower or raise a probe. Interface 2205 can receive an indication to initiate, continue, or terminate mapping a material. In response to receiving the instructions, interface 2205 can provide or communicate instructions to motor 19 (e.g., via one or more processors or computing devices). For example, a computing device can receive an indication via interface 2205 and, in response to the indication, can instruct motor 19 to raise or lower a probe (e.g., tool tip 24).

[0256] In some cases, interface 2205 can receive instructions or indications of a default or initial depth or length of a probe. For example, a user can input a length of a probe of 0.25 inches, 0.5 inches, 0.75 inches, 1 inch, or other length in another unit. After probe 2215 is lowered, a user can input an amount by which probe 2215 extends beyond a base or beyond a surface of a material.

[0257] The system 2200 can include a motor 19. The motor 19 can include one or more components or functions of the motor 19 depicted in the system 1000. The motor 19 can control movement of a probe 2215 to raise or lower the probe 2215 (e.g., a working member, drill bit, or other protrusion) along an axis. The motor 19 can include one or more mechanical elements (e.g., gears, springs, coils, magnetic components, chains, pulleys, or levers) to raise and lower the probe 2215. The motor 19 can move the probe along a z-axis that is orthogonal or perpendicular to a plane of a tool base, such as the floor 7 or the table 690.

[0258] The system 2200 can include one or more probes 2215. The probe 2215 can include a protrusion, working member, or tool tip, such as the tool tip 24. The probe 2215 can be formed of any material, such as metal, aluminum, alloy, steel, iron, plastic, fabric, or paper. In some embodiments, the probe 2215 can include a laser or light beam. The probe 2215 can have any shape, geometry, or dimension that facilitates probing a material to generate a profile, map, or determine a position. For example, the probe 2215 can be cylindrical, rectangular, flat, narrow, or wide. The probe 2215 can have a radius or length, such as a 1 / 8, 1 / 4 inch, or 1 / 2 inch radius. Probing information including the shape, radius, length can be stored in the storage device 2235.

[0259] The system 2200 can include one or more sensors 2210. The one or more sensors 2210 can include a camera, such as the camera 682 or other sensor 22 or 23. The sensor 2210 can include a force sensor, proximity sensor, touch sensor, or motion sensor. The sensor 2220 can include an IMU to detect orientation.

[0260] The sensor 2220 can obtain an image of a material or workpiece. The sensor 2220 can obtain the image continuously or in response to an indication or instruction. The sensor 2220 can receive an indication that the probe is in contact with an edge of a material, for example, via the interface 2205. In response to the indication, the sensor 2220 can obtain an image or capture other data about the material or the position of the probe 2215 or tool relative to the material.

[0261] In some embodiments, the sensor 2220 can automatically determine when the probe 2215 contacts an edge of a material. For example, the sensor 2220 can detect a force or impulse in response to the probe pushing against an edge of a material. In response to detecting the force, the one or more sensors or cameras can capture an image or scan a surface of the material.

[0262] The system 2200 can include a map generator component 2225. The map generator component 2225 can include or be executed by a computing device, such as the computing device 600. The map generator component 2225 can determine the location of the probe 2215 relative to the material based on identifying contact of the probe 2215 with the edge of the material.

[0263] In some cases, the system 2200 can obtain or identify three-dimensional (3D) data to determine the location. The three-dimensional location data can include X, Y, and Z coordinates. The system 2200 can determine the X-Y coordinates using, for example, markings on the surface of the material. The system 2200 can obtain Z-axis data using the depth of the probe. The system 2200 can use the accumulated 3D location data and known geometry of the probe 2215 to determine information about the edge of the material.

[0264] The map generator component 2225 can obtain and generate a map or profile as shown in FIG. 24 FIG. 24 is a diagram illustrating edge detection according to an embodiment. For example, the system can identify or determine the geometry of the probe 2215 as cylindrical. The user can move the handheld tool (e.g., the tool 1000 integrated with the system 2200) such that the probe 2215 contacts at points along the edge of the material 2405. For example, the probe 2215 can contact the edge of the material at contact points 2410, 2415, and 2420. The user can repeat moving the handheld tool to contact the edge points 2410, 2415, and 2420. In some cases, the user can move the handheld tool continuously to the edge points 2410, 2415, and 2420 or additional edge contact points. The system 2200 can combine the determined locations 2410, 2415, and 2520 to generate a digital or electronic map or profile of the material and store the electronic map or profile in the storage device 2235.

[0265] The system 2200 can determine where the edge points 2410, 2415, or 2420 are located on the material 2405. The system 2200 can determine that the edge points 2410 and 2415 are located on the edge of the rectangular material 2405. For example, the user can input an indication that the edge points 2410 and 2415 are located on the edge of the material 2405. The user can also input that the point 2420 is located on an adjacent edge of the material 2405.

[0266] ​The system 2205 can also determine an orientation of the tool. For example, the system 2205 can determine or be configured with information indicating that the tool has an orientation relative to a plane (e.g., a substrate, a table, or a frame of the tool) such that a major axis of the probe 2215 cylinder is perpendicular to the plane. The system 2200 can be configured with this information because the handheld tool can have a flat surface on which the handheld tool rests on a flat material plane that enforces this orientation. From this data, the system can determine a 3D plane on which the probed edges 2410, 2415, or 2420 of the rectangle lie. The system can use calculations involving the probe geometry to determine the 3D plane, e.g., by offsetting the probe center at the detection site by the radius of the cylindrical probe.

[0267] The system 2200 can generate a map or profile of the material or template by sliding the probe 2215 along the continuous edge. The system 2200 can generate a map of a material or template that is at least partially curved. The system 2200 can generate a map that includes the entire profile of the template or material probed by the probe 2215.

[0268] FIG. 25 is a diagram illustrating edge detection according to an embodiment. FIG. 25 A material, workpiece, or template 2505 is illustrated. The material 2505 can have an edge 2510. The probe 2215 can contact the edge 2510 of the material at a contact point 2515. When the probe 2215 contacts the edge point 2515, the center of the probe, e.g., of a cylindrical probe, can lie on a path 2520. The probe 2215 can move along the path 2520. The system 2200 can detect or continuously detect the position of the probe 2215 as corresponding to the path 2520 as the probe 2215 moves along the path 2520. The system 2200 can continuously detect the position of the probe 2215 as the probe 2215 moves along the path 2515 adjacent to the edge 2510, e.g., based on a sampling rate of at least 1 Hz, 2 Hz, 5 Hz, 10 Hz, 25 Hz, 50 Hz, or 100 Hz. The path 2520 can be offset from the edge of the material 2510 by the radius of the probe 2215. The system 2200 can correct for this offset to determine the shape of the material 2505 as corresponding to the edge 2510.

[0269] The system 2200 can receive (e.g., via the interface 2205) an indication as to whether the detected edge is an inner hole or an outer profile in the geometry in order to offset the center of the detected probe geometry in the correct direction to determine the probed edge geometry. FIG. 26 is a diagram illustrating edge detection according to an embodiment. FIG. 26A template 2605 is illustrated. The template 2605 can be formed of any material or marking, such as tape, paper, metal, or wood. The template 2605 can include a cutout 2610. The cutout 2610 can be located in the interior of the template 2605. The cutout 2610 can include a continuous edge. The system can determine the position of the probe 2215 to be at point 2620. The probe 2215 can be moved along the cutout 2610, and the system 2200 can determine the position of the probe 2215 to be along the dotted line 2615. If the probe 2215 has a cylindrical shape, the path 2615 can correspond to the center point of the probe offset by the radius of the probe. The system 2200 can continuously (e.g., based on a sampling rate of at least 1 Hz, 2 Hz, 5 Hz, 10 Hz, 25 Hz, 50 Hz, or 100 Hz) detect the position of the probe 2215 as the probe 2215 is moved along the path 2615 adjacent to the edge 2610. Using the detected positions of the probe 2215 along the path 2615, the system 2200 can generate edge data, a map, or a contour of the cutout 2610. The system 2200 can store the edge data, map, or contour in the storage device 2235.

[0270] The system can use the determined properties related to an edge (e.g., 2510, 2520, 2610, or 2615) of a piece of material (e.g., 2605 or 2505) to calculate derived values. The system 2200 can use this edge data to form a grid to determine a Cartesian coordinate system with an origin and X and Y axes that are registered to the surface of the material. The system 2200 can use this grid to align a digital design to the edge of the material, or to“snap” the digital design to a certain orientation, or to“snap” a newly created shape to the grid. The system 2200 can overlay the grid on the surface of the material, or on a digital representation of the material. The system 2200 can snap a shape or a newly created shape or design to the grid. The system 2200 can snap input points to produce a shape, e.g., two opposite corners of a rectangle to be drawn. The grid can be used while creating a shape on the system 2200 or tool 1000. The position of an actively snapped point relative to the established origin can be displayed on the display screen of the tool 1000. The grid spacing or other dimensions can be adjusted.

[0271] A drawing made or captured on the system 2200 or tool 1000 (e.g., via probing) can be stored in a storage device or other memory and later recalled or transmitted (e.g., over a network or wired communication) to other computing devices or servers.

[0272] The creation on the tool 1000 or system 2200 can be used to draw other types of shapes, such as polygons or circles. The system 2200 can run a script to programmatically or vector-based shape generation based on parameter (e.g., number of sides, dimensions, angles, or length) inputs to generate a shape.

[0273] The system 2200 can use edge data to create a new digital design that can later be reproduced or followed by a digital manufacturing device. For example, a user can provide a 2D wooden template, such as the template 2605. The probe 2215 can follow the edges of the template 2605 to generate a digital design. The system 2200 can then use the digital design instead of the physical template 2605 when making an object that contains the shape.

[0274] The system 2200 can determine edge data about a piece of material in multiple contexts and use the relationship between two pieces of material to determine how the piece of material moves. For example, a digital cut can be started on a piece of material that can later move before the digital cut is completed. The system 2200 can then update the digital specifications of the cut to account for the action of completing the cut.

[0275] The system 2200 can capture or obtain edge data from multiple sides of a piece of material. For example, a flat piece of material can be flipped over. The system 2200 can obtain or capture edge data from a first side of the material and a second side of the material to align the second edge capture with the first edge capture. Thus, the system 2200 can align a digital cut to perform double-sided machining. In some cases, the system 2200 can obtain edge data for each side via a cross-probing technique, while in some cases, the system 2200 can obtain at least some edge data from other aspects via other means.

[0276] In some embodiments, the system 2200 can be configured with a visual alignment technique. For example, the system 2200 can create a top-down image of at least a portion of a piece of material. The system 2200 can create the top-down image at the same time as performing position tracking, taking an image, generating a grid, or using another technique. If the material has a marker or other drawing (e.g., if a user draws where they want to cut a piece of material on the piece of material), the drawing will appear in the top-down image, which can be presented on a display or interface (e.g., the display screen 572) of the system 2200 or the tool 1000. The system 2200 can be configured with an on-device shape creation tool or a predetermined template to allow a user to perform a cut at a desired location.

[0277] For example, a user can place an object on the surface of a material. The user can trace or outline the object with a marker, pen, or pencil. The system 2200 can scan the surface of the material with the object removed. The scan can include the trajectory or outline of the object, but not the object itself. The system 2200 can include a pen tool on the device (e.g., an interface 2205 that a user can use to digitally or electronically trace the outline in the scan). Thus, the system 2200 can create a digital equivalent of the same shape, and the system 2220 can then use the digital equivalent to guide a work member to cut from the material.

[0278] The system 2200 can be configured to perform various operations based on a reference to a drawing that appears on the surface of a piece of material. The system 2200 can perform these operations using a top-down image as a reference to create a digital outline or trajectory on the system 2200 or tool 1000 itself.

[0279] In some cases, the system 2200 can automatically detect and digitize a drawing using computer vision. For example, the system 2200 can scan the surface of a material to create a top-down image or scan with the object still on the material. The system 2200 can use computer vision techniques to automatically identify the object. The system 2200 can use computational imaging or vision techniques to automatically generate an outline or trajectory of the object. The system 2200 can present the automatically created trajectory on a display. The system 2200 can receive an indication from a user via the interface 2205 to perform an operation on a portion or all of the outline, such as cutting along one or more lines or paths of the automatically created trajectory or outline of the object.

[0280] FIG. 23 A flowchart for guiding a tool according to an embodiment is depicted. The method 2300 can be performed by one or more components of the system 2200 or tool 1000. The method can include receiving a tool for mapping a material at 2305. The tool can receive instructions from a user or remote device via an interface. The tool can receive additional information about parameters of the tool, the material, or a probe for mapping the material, such as geometry or dimensional information.

[0281] At 2310, the tool can instruct a motor to lower a probe. The tool can lower the probe in response to instructions to generate a map. The tool can lower the probe prior to receiving instructions to generate a map. The tool can lower the probe such that at least a portion of the probe extends beyond a base of the tool. The probe can be lowered such that it extends beyond a surface of a material on which the tool base rests. The probe can be lowered such that it is adjacent to or near an edge of the material to be mapped.

[0282] At 2315, the tool can identify that the probe is in contact with the edge of the material. The tool can include one or more sensors, such as a force sensor or pressure sensor, that detect that the probe is in contact with the edge of the material. The tool can receive an indication via the interface that indicates that the probe is in contact with the edge of the material, or that the probe is otherwise at a certain point.

[0283] At 2320, the tool can determine a position of the probe. The tool can determine the position in response to or based on identifying that the probe is in contact with the edge of the material. The tool can determine the position relative to the surface or edge of the material. The tool can determine the position using an image or scan of the surface of the material in response to the indication that the probe is in contact with the edge of the material. The tool can determine a 3-dimensional position of the probe using position information or orientation of the tool. For example, the sensor can include an IMU.

[0284] The tool can determine the position of the probe relative to the material based on a radius of the probe. The tool can be programmed with the radius of the probe, or the tool can receive the radius or other geometry information of the probe via the interface. The tool can determine multiple positions of the probe to identify multiple points of contact along the edge of the material, and combine the edge data (e.g., two-dimensional or three-dimensional position data) to generate a map or profile of the material.

[0285] The system 2200 can be configured to generate different types of tool paths or cutting paths. The system 2200 can include a spiral path generator component 2230. For example, the cutting path can be a straight cutting path, or refer to movement of the cutting tip or working member of the tool 1000. In some cases, the system 2200 or tool 1000 can automatically generate a spiral tool path generation based on a desired edge shape or cutting shape. The system 2200 or tool 1000 can generate the spiral tool path in real-time, which can refer to while or immediately (e.g., within 0.5 seconds, 1 second, 2 seconds, 5 seconds, 10 seconds, or 30 seconds) the tool 1000 is cutting the material.

[0286] When cutting a hole from a piece of material, the system 2200 can drive the cutting drill in an approximately spiral-shaped tool path. The spiral-shaped tool path, as opposed to, for example, a circle that is repeated at multiple depths, can provide continuous motion without sudden acceleration, which can provide better edge quality and can result in better performance from the drill. The spiral tool path can facilitate cutting a circular hole or other types of shapes in the material.

[0287] The system 2200 or tool 1000 can receive and process a digital design that identifies or defines content to be cut. The digital design can include, for example, a computer-aided design (CAD) file. For example, the digital design can specify a circular hole that is 0.3 inches in diameter to be cut, 0.5 inches deep into the material. The system 2200, tool 1000, or helical path generator component 2230 is configured with computer-aided manufacturing (CAM) technology to generate a tool path from the digital design. By configuring the system 2200 or tool 1000 with CAM technology, the system 2200 or 1000 can generate a helical tool path at the time of cutting.

[0288] The helical path generator component 2230 can generate a helical tool path that starts at an offset from the bit radius to the desired hole circumference and spirals down to the target depth in a single continuous motion. Thus, the digital handheld tool 1000 integrated with the system 2200 can generate and implement a helical tool path on the same device on the fly or in real-time. Real-time can refer to a point in time after the user provides an indication or instruction to start cutting the material. For example, real-time can be in response to the user moving the tool near the target circular hole and then providing a command to start cutting via the interface 2205. In response to receiving the command to start cutting, the helical path generator component 2230 can generate a helix that starts at a point on the target circle closest to the current location of the tool.

[0289] FIG. 27 FIG. 27 is a diagram illustrating a helical tool path generated by the system 2200 according to an embodiment. The system 2200 can cut a hole 2702 with a drill bit 2701. The system 2200 can generate a helical tool path where the drill bit 2701 moves to the nearest portion 2703 of the hole 2702, then drives down to the surface of the material 2700, then drives down into a helix 2704, then moves back to the center of the hole 2702, then retracts 2705. This illustration of the helical tool path is non-limiting, as the system 2200 can generate other types of helical tool paths in real-time or on the fly.

[0290] FIGS. 28A-28D FIG. 28 is a diagram illustrating a tool according to an embodiment. Table 1 lists FIGS. 28A-28D components of the system 2800 shown in FIG. 28. In some embodiments, the system 100, system 680, system 1000, or system 2200 can include FIGS. 28A-28DOne or more components or functions illustrated in FIG. 28A or 28B. The system 2800 can include one or more components or functions of the system 100, the system 680, the system 1000, or the system 2200. In some embodiments, the system 2800 can include one or more communication interfaces to allow communication with other computer systems via a network (e.g., to send and receive manufacturing data (e.g., information about cutting on a work surface), to send and receive digital designs or design plans).

[0291] Reference Description 2801 Base housing 2802 Touch screen display 2803 Structural housing 2804 Electronic bin cover 2805 Motor cover 2806 Finger guard and vacuum cover 2807 Vacuum port 2808 Left handle 2809 Left handle button 2810 Right handle 2811 Right handle button 2812 Elevating handle 2813 USB port 2814 Removable chip tray 2815 Workpiece illumination LED 2816 Camera 2817 Chip cleaning area 2818 Spindle motor 2819 Magnetic latch 2820 Carriage and spindle motor clamp 2821 Tool aperture

[0292] Table 1: FIGS. 28A-28D List of components and reference numerals for tools illustrated in FIGS. 28A and 28B.

[0293] In some embodiments, a linear or torsional spring can be connected to a component of the z-axis positioning stage (e.g., the clamp 2820) to prevent, slow, or reverse the downward motion of the z-axis stage (supporting the weight of the spindle motor 2818) in the event that power to the z-axis motor is turned off. In some embodiments, a torsional spring can be coupled to the z-axis motor shaft to apply a mechanical torque to the motor shaft even when the motor is not powered. In some embodiments, the torsional spring coupled to the z-axis motor shaft can be pre-tensioned to maintain the applied mechanical torque within a fixed range within the range of travel of the z-axis.

[0294] FIG. 28A A milling machine composed of elements including an electromechanical stage that moves a clamp 2820 in the X, Y, and Z directions under automatic control is illustrated. A spindle motor 2818 can be secured to the carriage by a circumferential clamping force in the clamp 2820. This arrangement can allow the clamp to accommodate manufacturing variations in the spindle motor diameter. The milling machine can include a finger guard and dust shield 2806 that can be held by a magnetic latch 2819; handles 2808 and 2810 with control buttons 2809 and 2811 that allow a user to interact with code running on one or more processors; a vacuum port 2807 for interfacing with a dust extraction hose; a touchscreen display 2802 that allows a user to interact with code running on one or more processors; a structure tower 2803 that also houses electronics; an electronics cover 2804; a shroud 2805 for protecting internal components including the motor; and a base housing 2801. The dust shield 2806 and vacuum port 2807 can be shaped to improve the capture of cutting debris and direct cutting debris from the tool bore 2821 of the cutting tool to the vacuum port 2807.

[0295] In some embodiments, one or both of the handles (e.g., 2808, 2810) of the system 2800 can include one or more of the following: control buttons (e.g., 2809, 2811), scroll wheels, multi-stage buttons, indicator LEDs, D-pads, joysticks, touchpads, grip sensors, triggers, biometric (e.g., fingerprint, iris, facial recognition) sensors, or other input devices. For example, the right handle can have two control buttons and three indicator LEDs, and the left handle can have a touchpad and a scroll wheel. In some embodiments, the control buttons can be programmed to perform one or more of the following based on the current state of the system 2800 (e.g., design selection mode, design registration mode, cutting mode): turn on a work action of a work member (e.g., turn on the spindle motor 2818 if the system 2800 is in cutting mode, lower a plotter instrument to contact a work surface if the system 2800 is a plotter tool), turn off a work action of a work member (e.g., turn off the spindle motor 2818), toggle the on and off of a work action of a work member, plunge a work member into a work surface, or retract a work member from a work surface. In some embodiments, the scroll wheels can be programmed to perform one or more of the following based on the current state of the system 2800: change the rate of a work action of a work member (e.g., change the speed of the spindle motor 2818 in the system 2800), change the content displayed on a display connected to the system 2800 (e.g., change the magnification of a view displayed on a touchscreen display 2802 in the system 2800, change the location of display data in an ARD or VRD connected to the system 2800), scroll through menus in a UI displayed on a display connected to the system 2800 (e.g., if the system 2800 is in design selection mode), or change the z-position of a work member. In some embodiments, the indicator LEDs can indicate one or more of the following: the power state of a work member (e.g., red indicates that the spindle motor 2818 is on, and green indicates that the spindle motor 2818 is off), the rate of a work action of a work member (e.g., changes from green to yellow to red to indicate that the spindle motor 2818 speed changes from off to low to high), or the state of a work member (e.g., green indicates retracted from a work surface, and red indicates plunged into a work surface). In some embodiments, the D-pads, joysticks, or touchpads can be programmed to perform one or more of the following based on the current state of the system 2800: navigate through a UI shown on a display connected to the system 2800, move a work member within the adjustment range of the system 2800, or extend or retract a work member from a work surface. In some embodiments, the grip sensors can detect the pattern in which a user grips a handle or the pressure with which a user grips a handle. In some embodiments, the grip sensors can use one or more optical, force, capacitive, resistive, pressure, or any other sensing mechanisms to detect a user’s grip.In some embodiments, a depressible trigger-type input device on the handle can be used to control the rate of working action of the working member (e.g., control spindle motor 2818 motor speed). In some embodiments, a biometric sensor (e.g., on the handle, on the tool body) can limit use or limit functionality available to one or more users (e.g., users registered on the tool, users registered on a computer system that manages user access to the tool).

[0296] In some embodiments, system 2800 can be programmed to confirm that each hand of the user is grasping both of the grip sensors (one on each handle) before enabling functionality of the tool (e.g., before turning on spindle motor 2818). In some embodiments, the handles can be shaped differently for working on different work surfaces (e.g., one handle design when system 2800 is used to work on a horizontal surface, and another, different handle design when system 2800 is used to work on a vertical surface).

[0297] In some embodiments, system 2800 can be designed to allow swapping of handles to allow additional or different functionality. In some embodiments, system 2800 can have electrical (e.g., using connectors on a PCB) and mechanical interfaces designed to connect with different handles. In some embodiments, system 2800 can communicate with the handles using I2C, USB, Bluetooth, or other communication protocols. In some embodiments, the handles can be mechanically attached to the tool using mounting holes in base housing 2801. In some embodiments, the handles can be hot-swappable (e.g., can be connected or disconnected from system 2800 while system 2800 is powered on). In some embodiments, one or more processors can execute instructions stored on one or more memories to cause system 2800 to enable or disable functionality related to one or more input devices on a handle, or to cause system 2800 to enable or disable functionality by detecting capabilities included on a connected handle. In some embodiments, one or more processors on system 2800 can load software onto additional processors located in an interchangeable handle to change or upgrade functionality of the handle.

[0298] In some embodiments, the finger guard and dust cover 2806 can mechanically trigger one or more switches (e.g., Hall effect switches, reed switches) to detect removal or mispositioning of the finger guard and dust cover 2806. In some embodiments, the state of the one or more switches detects the positioning of the finger guard and dust cover 2806. In some embodiments, the state of the one or more switches can be used to enable or disable one or more functions of the system 2800. In some embodiments, the finger guard and dust cover 2806 can trip one or more switches to indicate new functionality (e.g., fan, camera, vent) associated with the finger guard and dust cover 2806.

[0299] FIG. 28B The tool is illustrated with a raised handle 2812; a USB port 2813 for interfacing with one or more processors; a removable chip tray 2814 that enables the user to easily remove any cutting debris that has accumulated behind the moving elements of the motion stage in the chip gap region 2817 (e.g., FIG. 28D ).

[0300] FIG. 28C Additional elements of the tool are shown, including an array of LEDs 2815 for illuminating the workpiece, and a camera 2816 for use in the normal operation of the device. In some embodiments, the array of LEDs 2815 can illuminate the workpiece using visible light (e.g., white light). In some embodiments, the array of LEDs 2815 can illuminate the workpiece using non-visible wavelengths (e.g., UV, IR).

[0301] FIG. 28D The chip gap region 2817 is shown with the chip tray 2814 removed.

[0302] In some embodiments, a triac in the spindle electronics can use phase angle control to control the speed of the spindle motor 2818 (e.g., a brushed AC / DC universal motor). Specifically, in some embodiments, the triac turns on and off the AC power supplied to the spindle windings based on a particular timing. The triac element can “pulse” the AC power in a pattern that is difficult for a human to detect. The use of circuitry to measure the spindle current draw, the pulsed pattern used to spin up the spindle 2818 motor can be detected by one or more processors in the system 2800. In some embodiments, the rotor and stator windings of the spindle motor are configured based on the expected AC voltage supplied to the motor to achieve a desired power rating and speed. In some embodiments, the winding configuration is different for a spindle motor designed to be driven at approximately 120V AC compared to a spindle motor designed to be driven at approximately 230V AC. In some embodiments, the detected pulsed pattern provides an indication of the rotor and stator windings of the spindle motor. In some embodiments, using the indicated winding information and the measured AC wall voltage supplied to the system 2800, one or more processors in the system 2800 can determine whether the motor voltage design specification of the spindle motor 2818 matches the AC wall voltage supplied to the spindle motor 2818 (measured using voltage measurement circuitry). In some embodiments, if the voltage design specification of the spindle motor 2818 does not match the AC wall voltage supplied to the spindle motor 2818, one or more processors in the system 2800 can trigger one or more actions. In some embodiments, triggering an action can include turning off power to the spindle motor 2818, causing a display (e.g., touch screen display 2802) to indicate a notification to a user, or changing the speed of the spindle motor 2818.

[0303] In some embodiments, a system (e.g., system 2800) can display information on an augmented reality display ("ARD," including a transmissive mixed reality display, such as an augmented reality heads-up display (e.g., Google Glass), a mixed reality heads-up display (e.g., Microsoft HoloLens)) or a virtual reality display ("VRD," such as a virtual reality heads-up display (e.g., Vive, Facebook Oculus, Sony PlayStation VR)) coupled to one or more processors in the system. In some embodiments, the ARD can be used to display an overhead view of an area surrounding a work member. In some embodiments, the ARD can indicate a work member adjustment range. In some embodiments, the ARD can indicate a portion of a work member path or a portion of a design. In some embodiments, the ARD can indicate the entire work member path or the entire design. In some embodiments, the ARD can indicate the current position of the work member using an "X," a circle, a dot, an icon, or using any other signaled indication. In some embodiments, the current position of the work member can be indicated relative to the work member adjustment range, the work member path, or the design. In some embodiments, data related to the system (e.g., a working member adjustment range, a portion of a working member path, a portion of a design, an indication of the current position of the working member) can be fixed or "pinned" to a location relative to the position of the system when the wearer of the ARD moves the ARD (e.g., moves his or her head with the head-mounted ARD). In some embodiments, data related to the system can be fixed or "pinned" to the work surface when the wearer of the ARD moves the ARD (e.g., moves his or her head with the head-mounted ARD). In some embodiments, data related to the system can move relative to the position of the system when the wearer of the ARD moves his or her head. In some embodiments, in the above description, a VRD is used instead of an ARD.

[0304] Instead of using a computer to create a design, some users may want to take measurements on a work surface and create a template that defines the design. In some embodiments, the system 680 can use a user-generated template on a work surface to define the design. First, as FIG. 30A As shown in FIG. 30-D, the user can begin by laying down film 3020 on top of a work surface 3010. In some embodiments, the film can have an adhesive backing and can be adhered to the work surface. The user can take measurements on the work surface 3010 and cut in film 3020 to define a template for a design. For example, the user can cut a square shape in film 3020, remove an interior portion of film 3020 to form a square shape 3030 in film 3020, and create a template for a design such as FIG. 30Btemplate for the design. If the user wants to change the template, e.g., if the template should be rectangular instead of square, the user can add additional film at the top and modify the template as shown in FIG. 30C . In this example, the user adds film 3040 to mask a portion of the template 3030 formed in the film 3020. FIG. 30B FIG. 30D The final template 3050 after the user makes additional cuts in the film 3040 to form a rectangular template for the design is shown. In this example, the edges A, B, and C of the film 3020 and the edges D, E, and F of the film 3040 define the shape of the final template 3050. The area where the film (3020 and 3040) has been removed is labeled as area 3060 (shown in white). FIG. 30D

[0305] In some embodiments, a template for a design can be created after a map of the work surface has been created. In some embodiments, if the map is created using indicia or markings on the work surface, the film can be partially transparent to allow the system 680 to utilize the indicia or markings for positioning after the film is applied to the work surface. If a map has been created, one or more cameras are used to capture an image of the work surface including the film and the template. In some embodiments, the captured image is analyzed based on one or more edges of the template (e.g., template 3050 in FIG. 30D ) to identify a desired path. In some embodiments, the captured image is analyzed based on one or more edges of the template (e.g., template 3050 in FIG. 30D ) to identify a design. In some embodiments, a desired path for an adapter holding a workpiece is determined based on the design. In some embodiments, the desired path can be based in part on the physical geometry of the adapter holding the workpiece (e.g., based on the position of the workpiece relative to the adapter). In some embodiments, the desired path can be based in part on the physical dimensions of the workpiece (e.g., the width of a cutting bit). In some embodiments, the desired path can be based in part on input from the user, e.g., input indicating that the user wants the workpiece center to be located on a template edge, or input indicating that the user wants the workpiece edge to be located adjacent to a template edge, where the workpiece is inside the white space 3060 of FIG. 30D . In some embodiments, the desired path is registered or otherwise related to the map.

[0306] ​​In some embodiments, a map of the work surface can be created after the user has created the template. In some embodiments, the user can add indicia or markings (e.g., patterned tape, stickers) to the work surface. In some embodiments, the indicia or markings (e.g., coded patterns) can be printed or included in the film. One or more cameras can be used to capture images of the work surface including the template and any indicia / markings present. The captured images can be used to create a map of the work surface. The captured images can be used to determine a desired path for the adapter that holds the work member. In some embodiments, the desired path is registered or otherwise related to the map.

[0307] In some embodiments, the film has been cut to a shape and size corresponding to the template. For example, a manufacturer of a product (e.g., a recessed light in a ceiling or wall) can provide a pre-cut film (e.g., a cut-out template) for installing its product. In another example, a user installing the same product can typically outsource the task of making a film template to a third party based on the product dimensions. In some embodiments, the reflectivity, color, or pattern of the film can be selected to enhance visibility or contrast relative to the workpiece surface or indicia / markings on the workpiece surface. In some embodiments, the film can include a high-contrast, non-repeating pattern such that the pattern can be used to create a map of the work surface. Then, using an image of a portion of the pattern, the location of the camera when the image was taken can be determined by matching the pattern information in the image to the pattern information in the map. In some embodiments, the film can be made of one or more layers of material (e.g., vinyl, paper) and can include an adhesive backing. In some embodiments, the film can include a grid pattern with a grid spacing (e.g., 1 inch, 0.5 inch, 0.25 inch, 0.125 inch, 0.0625 inch) to allow the user to measure distances using the grid pattern. In some embodiments, the grid pattern can use two or more line thicknesses (e.g., a thick line for 1 inch markings and a thinner line for 0.125 inch markings).

[0308] Some users can want to simply place a printed design on a work surface to indicate that they desire the system (e.g., system 680) to work on that design at that location. In some embodiments, a camera on the system can scan the printed design to generate a design scheme based on the printed design. Alternatively, in some embodiments, a user can place a design marker with a pattern of encoded information (e.g., barcode, 2D code, QR code) on the work surface to indicate to place a design scheme (e.g., using a design ID included in the encoded information) at a location on the work surface (e.g., relative to the location of the design marker included in the encoded information). In some embodiments, the system can also use the design marker as a marker for mapping or localization. In some embodiments, a user can print out a paper with a design marker and a corresponding design to see where the design scheme will be located relative to the design marker, and to see the design scheme referenced in the design marker. In some embodiments, a user can place the printed paper with the design marker and the design scheme on the work surface.

[0309] In some embodiments, a camera in the system (e.g., system 680) can capture an image of the design marker on the work surface. In some embodiments, a processor in the system can analyze the captured image to identify the design marker and decode the design marker pattern to determine a design ID and a corresponding design scheme location based on the location of the design marker on the work surface. In some embodiments, a processor in the system can analyze the captured image to identify the design marker and decode the design marker pattern to determine a design ID and a corresponding design scheme location based on the location of the printed design (if present) relative to the printed design marker. In some embodiments, information encoded in the design marker can include a location (and access information) from which the system can retrieve a design scheme identified by the design ID (e.g., from a memory in the system, from a web server with a given URL, from a server using provided credentials and server address). In some embodiments, a design ID can define a design scheme using a naming format (e.g., design ID “Circle_r8” corresponds to a design scheme of a circle with a radius of 8 inches). In some embodiments, the system can generate a desired path for an adapter to hold a workpiece based on the design ID or the design scheme.

[0310] In some embodiments, design markers can be used to configure the coordinate system used by the system (e.g., system 680) for mapping and localization. In some embodiments, a user can place a design marker with a pattern of encoded information (e.g., bar code, 2D code, QR code) at a given location on the work system to inform the system that the user wants to use the location of the design marker as the origin of the mapping and localization coordinate system. The information encoded in the design marker will indicate that the design marker also specifies the coordinate origin location. In some embodiments, a user can place a design marker with a pattern of encoded information (e.g., bar code, 2D code, QR code) at a given location on the work system to inform the system that the user wants to use a particular orientation of the coordinate axes for mapping and localization. The information encoded in the design marker will indicate that the design marker also specifies the orientation of the coordinate axes.

[0311] The disclosed embodiments allow a user to have the flexibility to work in real space (e.g., with or on a work surface) or design space (e.g., working in a design environment using a design scheme (e.g., using a drawing, CAD, or similar program)). In some embodiments, system 2800 can include software code in memory that, when executed by one or more processors, allows a user to work in a design environment on the system. In some embodiments, one or more processors in system 2800 can store a log tracking system activity, where the log and any reference data are stored in one or more memories in system 2800 or in one or more memories in a computer system other than system 2800. In some embodiments, the log allows a user to make corresponding changes in design space using information generated in real space (e.g., locations of cuts made on a work surface) (e.g., locations of edges corresponding to cuts made on a work surface), and vice versa. As used herein, a “log” can refer to a record of data stored in any format (e.g., structured, unstructured, a combination of structured and unstructured) for processing by a computer system. For example, a log can be a structured record including data corresponding to items (e.g., events, actions) that is stored in a given format and includes information for each item. In another example, a log can be a collection of data corresponding to items stored in a computer system. In some embodiments, a log ID can be used to track log data for a given item.

[0312] In some embodiments, the one or more processors can store data in the log based on the system 2800 opening. In some embodiments, the one or more processors can store data in the log based on scanning the work surface to generate a map. In some embodiments, the data recording the map generation can have additional data associated with it (e.g., a list of markers (e.g., locations and orientations of a global list of markers on the work surface), an image showing the scanned area of the work surface, dimensions of the scanned area). In some embodiments, the associated data can be stored in the log or separately (where the log includes a reference to the stored data). The reference can be a name (e.g., a map name, a design scheme name), a link (e.g., a hyperlink), a path (e.g., a file system location), etc. In some embodiments, the reference can identify a location of the additional information (e.g., in local memory, in a local storage device, in a remote storage device).

[0313] In some embodiments, the one or more processors in the system 2800 can store data in the log based on registering the design scheme to the map, where the data includes a reference to additional information (e.g., the design scheme, location information specifying where the design scheme was placed relative to the map or the work surface). In some embodiments, the one or more processors can store data in the log based on generation of a path based on the design scheme, where the data includes a reference to additional information (e.g., a path ID (if the design scheme includes multiple paths), the design scheme, physical dimensions of the work implement used to generate the path, user input specifying a location of the work implement relative to the design scheme, a location of the path relative to the map, a location of the path relative to the work surface).

[0314] In some embodiments, the one or more processors in the system 2800 can store data in the log based on work completed on the work surface (e.g., cutting, drawing, marking, probing) (e.g., based on a path), where the data includes a reference to additional information (e.g., a path ID (if the design scheme includes multiple paths), the design scheme, a cutting depth of the work implement, an offset between the work implement and the adapter, operational parameters of the work implement or the adapter relative to the drill rig, the map, or the work surface (e.g., rotational speed, kinematic data (e.g., position, velocity, acceleration, or related data)), parameters related to motion of the drill rig (e.g., kinematic data (e.g., position, velocity, acceleration, or related data) relative to the map or the work surface, an orientation of the drill rig relative to the map or the work surface)). In some embodiments, the operational parameters of the work implement or the parameters related to motion of the drill rig are stored according to a time when the work is completed (e.g., when the cutting is completed).

[0315] In some embodiments, one or more processors in system 2800 can use information in the log or data referenced by the log to update the system state (e.g., display an image of the work surface with an indication that the registered design or cut has been completed) or produce a particular UI element available to the user (e.g., enable an option to create a path if the log shows that the design has been registered to the map). In some embodiments, one or more processors in system 2800 can transfer data (e.g., portions of the log or data referenced by the log) to an external computer system (e.g., by transferring the data to a removable storage device, by transferring the data via a communication interface operably coupled to the processors in system 2800). In some embodiments, one or more processors in system 2800 can receive data (e.g., portions of the log or data referenced by the log) from a remote computer system (e.g., another tool).

[0316] FIG. 31 A network connectivity diagram showing 6 computer systems (3 tools Tool1 3110, Tool2 3120, and Tool3 3130 and 3 computer systems ComputerSystem1 3140, ComputerSystem2 3150, and ComputerSystem3 3160) connected to each other via network 3170 is shown. In some embodiments, access to the network 3170 can be restricted based on one or more of user-level, system-level, or other (e.g., business entity-based) credentials (e.g., password-based access, hardware-based authentication). In some embodiments, one or more of the computer systems (e.g., Tool1 3110, Tool2 3120, Tool3 3130, ComputerSystem1 3140, ComputerSystem2 3150, and ComputerSystem3 3160) can be configured to communicate with each other via the network 3170. FIG. 31Tool 1 3110, Tool2 3120, and ComputerSystem2 3150 can all store data on ComputerSystem1 3140. In this embodiment, based on the access policies implemented by ComputerSystem1 3140, Tool1 3110, and Tool2 3120, one can access its own data, data stored by the others, and data stored by ComputerSystem2 3150 on ComputerSystem1 3140. However, ComputerSystem2 3150 can only access its own data and data stored by Tool2 3120 on ComputerSystem1 3140.

[0317] The storage of system activity allows for tracking of design changes made during manufacturing. In particular, changes made during manufacturing (e.g., to accommodate component assembly based on manufacturing samples) can be stored in a log. The stored changes can be processed by one or more processors in system 2800, or by one or more processors in another computer system, to update a design scheme based on the changes made during manufacturing to successfully manufacture an actual part. In some embodiments, one or more processors in system 2800 can store data in the log based on modifications to an original design scheme to create a modified design scheme. In some embodiments, one or more processors in system 2800 can store data in the log based on determining a modified path based on the modified design scheme. In some embodiments, one or more processors in system 2800 can store data in the log based on determining an original path based on the original design scheme. In some embodiments, one or more processors in system 2800 can store data in the log based on creating a modified original path based on modifying the original path. In some embodiments, system 2800 or another computer system can use the stored information from the log to update a local or remote copy of the original design scheme based on the changes recorded to the original design scheme, based on the recorded data of the modified path, or based on the changes recorded to the original path.

[0318] In some instances, if a user wants to change or move the original path, a user of system 2800 can initiate generation of a new path. In some embodiments, data related to the recorded new path or recorded cuts based on the new path can be used by one or more processors in system 2800, or by one or more processors in another computer system, to update a design scheme corresponding to the original path. In some embodiments, the updated design scheme can replace the original design scheme. In some embodiments, the updated design scheme can be stored as a new design scheme. In some embodiments, data related to the recorded new path or recorded cuts based on the new path can be used by one or more processors in system 2800, or by one or more processors in another computer system, to update a corresponding design scheme (e.g., a drawing, CAD, or similar program) in a design environment. In some embodiments, the design environment can output data (e.g., a log or associated data related to changes made in the design environment, design schemes in one or more formats (e.g., different design scheme formats based on tool manufacturer specifications)). In some embodiments, the output data from the design environment can be used by other computer systems. In some embodiments, the design scheme used by system 2800 includes data related to the design environment (e.g., design environment name, design environment version number).

[0319] In some embodiments, if a user makes a manual cut on the work surface (e.g., cuts on the work surface like using a regular (non-automatically guided) handheld tool), one or more processors in the system 2800 can store data describing the manual cut (e.g., cut path shape, cut width, cut path location on the work surface) in one or more memories in the system 2800. In some embodiments, if a user cuts the work surface based on a design scheme registered to the work surface, one or more processors in the system 2800 can store data describing the expected path cut (e.g., design scheme name, expected path shape, expected path cut width, expected path cut location on the work surface) in one or more memories in the system 2800. In some embodiments, if a user drills a series of holes on the work surface based on manual measurements, one or more processors in the system 2800 can store data describing each hole drawn by the user (e.g., hole dimensions, hole location on the work surface). In some embodiments, one or more processors in the system 2800 can store data related to the location of the system 2800 as the system 2800 is moved by the user on the work surface (e.g., capturing location data by tracking a pattern on the work surface). In some embodiments, one or more processors in the system 2800 can store data related to the location of the system 2800 as the system 2800 is moved on the work surface to capture data to generate a map. In some embodiments, the location of system 2800 components (e.g., sensors, cameras, work members, adapters) is tracked using cameras and a map (e.g., using location markers on the work surface, using location markers off the work surface). In some embodiments, the location of system 2800 components (e.g., sensors, cameras, work members, adapters) is tracked using one or more positioning techniques (e.g., mapping location markers using one or more cameras, ranging (e.g., using lasers, using ultrasonic waves)). In some embodiments, the system 2800 can use data stored in one or more memories to generate a log based on the data.

[0320] In some embodiments, a design environment executing on one or more processors in system 2800 can create objects in the design environment using data stored on one or more memories in system 2800. In some embodiments, the objects can be a design scheme. In some embodiments, the stored data can include one or more items in a log, including information referenced in the log. In some embodiments, one or more processors in system 2800 can create objects in the design environment based on a measured material profile, a measured material shape, a measured template on the material, a trajectory generated based on analyzing an object, or a trajectory drawn by a user. In some embodiments, objects created in the design environment can include work surface location information (e.g., locations of one or more markers on the work surface relative to one or more designs described in the design scheme, locations of one or more designs described in the design scheme relative to a map of the work surface). In some embodiments, objects created in the design environment can be exported as a design scheme and stored in one or more memories in system 2800. In some embodiments, objects created in the design environment can be exported in a data format compatible with a commercial design program (e.g., Adobe Illustrator, Autodesk Fusion 360) and stored in one or more memories in system 2800. In some embodiments, output from the design environment (e.g., a design scheme, data specific to a design program) can be transferred to another computer system (e.g., by transferring the design scheme to a removable storage device, by transferring the design scheme via a communication interface operably coupled to one or more processors in system 2800). In some embodiments, the other computer system can use the output from the system 2800 design environment in a design environment. In some embodiments, the other computer can make the output from the system 2800 design environment available to the other computer system.

[0321] To facilitate collaboration, in some embodiments, one or more processors in system 2800 can generate log data describing a work surface of a workpiece based on one or more of a measured profile of the work surface, data collected during mapping of the work surface, or data collected from probing the work surface. In some embodiments, the data describing the work surface of the workpiece can include 3D data collected by probing the work surface using system 2800. In some embodiments, the data describing the work surface of the workpiece can include image data showing a portion of the work surface (e.g., based on a photo mosaic created from images of the work surface).

[0322] In some embodiments, one or more processors in system 2800 or one or more processors in another computer system can use the logged data (e.g., describing the work surface of the workpiece) to generate a model (e.g., based on the data describing the work surface). In some embodiments, the model can be generated in a design environment. In some embodiments, the model can display portions of the work surface based on image data included in the log (e.g., if the work surface is made of wood, display a pattern of grains or knots in the wood, thereby displaying markings on the work surface (if any exist)). In some embodiments, the model can display the shape of the work surface based on measured edges of the work surface. In some embodiments, the model can display the topography of the work surface based on data collected from probing the work surface. In some embodiments, the model includes dimensional data related to the work surface based on the map of system 2800.

[0323] In some embodiments, the model can be presented on a display operatively coupled to one or more processors in system 2800. In some embodiments, the model can be displayed on a display operatively coupled to one or more processors in a computer system other than system 2800 (e.g., a desktop computer). In some embodiments, a user can use the model view to place one or more design schemes at particular locations on the work surface. For example, the user can select to place a design scheme at a location in the model that displays a knot present in the wood that makes up the work surface, cut away a portion of the work surface. In some embodiments, the user can use the dimensions of the model to select one or more design schemes that maximize the use of available work surface. In some embodiments, the user can add features or annotations to the model that can be logged for use on system 2800. In some embodiments, using the model, the user can design real-world information about the work surface in a design environment. Once the user has manipulated the model (e.g., selected or created design schemes and their placement), the user can send the data back to system 2800 or another computer system. In some embodiments, the other computer system can send the data to system 2800. In some embodiments, the data communicated from the design environment to system 2800 can reference the map of the work surface used on system 2800. In some embodiments, the data communicated to system 2800 can include annotations, design schemes, or location information to register the design schemes to the map. In some embodiments, system 2800 can use the data from the design environment to generate a desired path for a work implement or adapter. In some embodiments, system 2800 can work on the work surface based on the generated desired path.

[0324] In some embodiments, a user of system 2800 can work with a user of a remote computer system such that system 2800 receives data from the remote computer system (e.g., data describing placement of the design schemes described above, design schemes, or changes to design schemes made by the user of the remote computer system). In some embodiments, the remote computer system can receive data from system 2800 (e.g., design schemes or changes to design schemes made by the user of system 2800, data describing work done by system 2800 (e.g., cuts or measurements made on a work surface, map data related to a work surface)). In this way, two users can collaborate on design and manufacturing using their respective systems. In some embodiments, the computer system and system 2800 can communicate with each other using a communication interface (e.g., WiFi, Bluetooth, USB). In some embodiments, the computer system and system 2800 can communicate through one or more other computer systems that communicate with the computer system and system 2800.

[0325] In some embodiments, a user of a program on a computer system can make changes to a design scheme recorded on the computer system or stored in a computer system remote from the computer system. The computer system logs the changes made to the design scheme such that the changes can be stored in the original design scheme or the changes can be stored in a new design scheme based on the original design scheme (e.g., as a revision of the original design scheme). In some embodiments, a portion of the log on the computer system is transmitted directly from the computer system to system 2800 or to another computer system before being transmitted to system 2800. In some embodiments, system 2800 can download a portion of the log from the computer system from another computer system. In some embodiments, system 2800 can update a local copy of the design scheme based on the portion of the log from the computer system. In some embodiments, system 2800 can download an updated design scheme from another computer system, where the updated design scheme includes changes made by the other computer system based on the portion of the log from the computer system.

[0326] In some embodiments, a design synchronization application on a computer system (e.g., system 2800) can process one or more portions of logs from one or more computer systems to generate design revision based on log data. In some embodiments, a user tracking application can process one or more portions of logs from one or more computer systems to generate a summary of user activity (e.g., design generation activity, cutting productivity) for one or more users. In some embodiments, a tool tracking application can process one or more portions of logs from one or more tools to generate a tool-based summary (e.g., tracking tool usage (e.g., for tool service, workpiece replacement)). In some embodiments, a build analysis application can process one or more portions of logs from one or more tools to generate a build summary of work completed by one or more tools. For example, a build analysis application can allow an application user to query details of a project completed by a given tool (e.g., drill bit type used, drill bit size used). In another example, a build analysis application can allow an application user to compare as-built details (e.g., cutting path) to intended design details (e.g., dimensions in a digital design) for a project completed by a given tool. In some embodiments, an application can combine one or more functionalities of the above-described applications. Any of the above-described applications can be a standalone application executing on a computer system (e.g., system 2800), or can execute in another application on a computer system (e.g., in a design program).

[0327] In some embodiments, a computer system can receive system activity information (e.g., a portion of a log for each computer system or a portion of data referenced in a log for a computer system) from one or more tools. In some embodiments, one or more tools can use a communication interface (e.g., an 802.11 communication adapter, a cellular communication adapter, a Bluetooth communication adapter) to communicate their system activity information to a computer system. In some embodiments, a computer system can maintain a list of tasks to be completed by one or more tools. In some embodiments, a computer system can track a completion status of one or more tasks based on system activity information received from each tool. In some embodiments, a computer system can track usage of each tool to schedule maintenance and service. In some embodiments, a computer system can track user productivity based on system activity information from a tool for a given user. For example, using a computer system, a foreman can view: a completion status of work site tasks, maintenance and service needs for work site tools, or productivity of individual workers at a work site (based on their tool usage).

[0328] FIG. 29An exemplary tool log 2910 from ToolUnit 123 is shown. Entry 2911 in tool log 2910 contains a log ID, a timestamp, and information about the current user of the tool, design file information indicating that the design file "ElectricalBox-revision2.svg" was received from ServerUnit DEF (sync), tool internet connection information, and a rough location of the tool based on the IP address. Entry 2912 in tool log 2910 contains a log ID, a timestamp, and describes mapping of the work surface and associated information. Entry 2913 in tool log 2910 contains a log ID, a timestamp, and describes correlating the design file "ElectricalBox-revision2.svg" to the map as Instance 1 and associated information. Entry 2914 in tool log 2910 contains a log ID, a timestamp, and describes a change made to Edge 3 in the design file "ElectricalBox-revision2.svg" at Instance 1 and associated information. Entry 2915 in tool log 2910 contains a log ID, a timestamp, and describes selection of a drill bit radius and generation of a desired path for a work implement. Entry 2916 in tool log 2910 contains a log ID, a timestamp, and describes cutting the desired path associated with Edge 3 at Instance 1 and associated information. Entry 2916 describes cutting accuracy based on measurement accuracy of guiding a work implement along the desired path. Accuracy is related to comparing a measured position of the work implement (e.g., based on the map and image data with location markers on the work surface) and the desired path. Entry 2917 in tool log 2910 contains a log ID, a timestamp, and describes the user logging off and sending tool log 2910 to computer system ServerUnit 789 (sync). In some embodiments, the desired path can specify motion of an adapter holding a work implement. In some embodiments, the desired path can specify a position of one or more sensors that capture data used to determine a position using the map. In some embodiments, the change to Edge 3 at Instance 1 can be omitted. In some embodiments, ToolUnit 123 can send tool log 2910 to ServerUnit DEF (sync).

[0329] FIG. 29An exemplary computer log 2920 from Computer Unit 456 is shown. In this example, the computer log 2920 shows activities related to a CAD session (CAD Session ABC). Entry 2911 in the computer log 2920 contains a log ID, a timestamp, and information about the current user, computer system internet connection information, and the approximate location of the computer system based on IP address. Entry 2922 in the computer log 2920 contains a log ID, a timestamp, and describes the creation of a design scheme "ElectricalBox.svg." Entry 2923 in the computer log 2920 contains a log ID, a timestamp, and describes a revision of the design scheme "ElectricalBox.svg" to create a design scheme "ElectricalBox-revision2.svg." Entry 2924 in the computer log 2920 contains a log ID, a timestamp, and describes a revision of the design scheme "ElectricalBox-revision2.svg" to create a design scheme "ElectricalBox-revision3.svg." Entry 2925 in the computer log 2920 contains a log ID, a timestamp, and describes a data synchronization between Computer Unit 456 and Server Unit 789. In some embodiments, as FIG. 29The synchronization is initiated by the user, as shown in entry 2925. In some embodiments, the synchronization of data can occur without any user input. In some embodiments, the synchronization of data can automatically update the data on the computer system being synchronized. In some embodiments, as shown in this example, the user can be prompted to accept the changes based on the updated data. Entry 2925 describes creating a design proposal "ElectricalBox-revision2-revisionA.svg" based on applying the changes from ToolUnit 123's "ElectricalBox-revision2.svg" Instance 1 - Edge 3 (see Tool Log 2910 entry 2916) to the design "ElectricalBox-revision2.svg" created on ComputerUnit 456 (see Computer Log 2920 entry 2923). Entry 2925 also describes creating a design "ElectricalBox-revision3-revisionA.svg" based on applying the changes from ToolUnit 123's "ElectricalBox-revision2.svg" Instance 1 - Edge 3 (see Tool Log 2910 entry 2916) to the updated design "ElectricalBox-revision3.svg" created on ComputerUnit 456 (see Computer Log 2920 entry 2924). Entry 2926 in Computer Log 2920 contains a log ID, a timestamp, and describes the user logging out of CADSession ABC on ComputerUnit 456.

[0330] FIG. 29 The structure of Tool Log 2910 and Computer Log 2920 shown in FIG. 29A is exemplary. In some embodiments, a first computer system (e.g., ComputerUnit 456) can retrieve portions of a log directly from a second computer system (e.g., ToolUnit 123), and vice versa. In some embodiments, an application for synchronizing data can execute on a tool (e.g., ToolUnit 123), where the tool retrieves a log from a computer system (e.g., ComputerUnit 456). In some embodiments, a computer system (e.g., ServerUnit 789) can receive a first log (e.g., Computer Log 2920) from a first computer system (e.g., ComputerUnit 456), receive a second log (e.g., Tool Log 2910) from a second computer system (e.g., ToolUnit 123), and run an application to synchronize data based on the information contained in the first and second logs.

[0331] In some embodiments, one or more computer systems can communicate data (e.g., design schemes) to each other using a peer-to-peer or server-mediated system. For example, in FIG. 29 In some embodiments, a design scheme created in entry 2923 in computer log 2920, "ElectricalBox-revision2.svg," can be synchronized from ComputerUnit456 to computer system (ServerUnit789), and ToolUnit123 can retrieve "ElectricalBox-revision2.svg" from computer system (ServerUnit789), as shown in entry 2911 of tool log 2910. In another example, "ElectricalBox-revision2.svg" created in entry 2923 in computer log 2920 can be synchronized from ComputerUnit456 to ToolUnit123 (e.g., as shown in entry 2911 of tool log 2910). In some embodiments, although not shown in computer log 2920 in FIG. 29 In some embodiments, synchronization of a design scheme can be stored in a log by a computer system (e.g., ComputerUnit456), although not shown in computer log 2920 in

[0332] In some embodiments, system 2800 can use one or more trigger rules to evaluate information, commands, or inputs related to the location of one or more components to trigger one or more actions. In some embodiments, the location of a component can be determined by mapping a work surface using one or more sensors and determining the location of the component based on data from the one or more sensors and the map. In some embodiments, system 2800 can use one or more trigger rules to evaluate information, commands, or inputs related to a user (e.g., user position relative to a tool, user contact with a tool) to trigger one or more actions.

[0333] In some embodiments, one or more processors in system 2800 can analyze one or more of: (1) information about the location of one or more components (e.g., the location of a cutting bit, the location of a sensor (e.g., a camera)), (2) input from one or more sensors (e.g., input from a grip sensor on the handle of the system, input from a microphone (e.g., based on commands or sounds from a user of the system or other individuals near the system), input from a force sensor in the base of the system, input from an IMU in the system, input from a work surface component sensor (e.g., to prevent cutting fiberglass material), input from a switch triggered by removal of a finger guard and dust cover 2806), (3) input from a user (e.g., user interaction on a touchscreen display UI), (4) commands from a remote computer system (e.g., system shutdown triggered by a foreman using a computer system that is remote from system 2800), (5) information about the location of the system (e.g., the position of the system relative to an edge of a workpiece, the geographic location of the system (e.g., a worksite location), the location of the system in a structure (e.g., a gas water heater)), (6) information about the location of a user or a body part of a user (e.g., a face, a hand, an eye) relative to one or more components of the system (e.g., a work member) or relative to the system itself (e.g., using a stereo camera, a time-of-flight camera, an ultrasonic sensor, a capacitive sensor, a light beam interruption sensor, a LIDAR), or (7) information about the user (e.g., detecting whether a user is wearing safety glasses) to trigger one or more actions. In some embodiments, any combination of the above-listed information, commands, or inputs can be analyzed in evaluating one or more trigger rules by one or more processors in the system. In some embodiments, based on the evaluation, one or more processors in the system trigger one or more actions.

[0334] In some embodiments, one or more processors in the system can evaluate a rule based on a change in the relative position between one or more sensors and the work surface. For example, if the one or more processors detect that the height of the camera relative to the work surface indicates that the system base is tilted relative to the work surface or is no longer in contact with the work surface, one or more processors in the system can trigger one or more actions. In some embodiments, one or more processors in the system can evaluate a rule to generate a map based on the position of the system relative to the scanned area (e.g., determined based on the camera position relative to the map). For example, if the system moves outside of the scanned area, one or more processors in the system can trigger one or more actions. In some embodiments, one or more processors in the system can evaluate a rule based on a sensor indicating that at least a portion of the system base is tilted relative to the work surface or is no longer in contact with the work surface. For example, if the sensor measures that the system is tilted more than (e.g., 1 degree angle, 2 degrees, 5 degrees, 10 degrees, 15 degrees, or 25 degrees), one or more processors in the system can trigger one or more actions. In another example, if a force sensor detects a change or difference between measurements (e.g., 0.5%, 1%, 2%, 3%, or an absolute change such as 1 N, 0.5 N, 0.25 N, 0.1 N, 0.05 N, or 2 N), one or more processors in the system can trigger one or more actions.

[0335] In some embodiments, one or more processors in the system can evaluate a rule based on detecting a signal from at least one grip sensor indicating that a user is not touching the grip sensor (e.g., on the handle). For example, if the user is not touching the grip sensor as required, one or more processors in the system can trigger one or more actions. In some embodiments, one or more processors in the system can evaluate a rule based on an audible command or sound detected by a microphone. For example, if the system detects data related to one or more words / phrases (e.g., “stop”) or sounds (e.g., a scream) while processing signals from a microphone in the system (e.g., speech recognition), one or more processors in the system can trigger one or more actions. In some embodiments, one or more processors in the system can evaluate a rule based on a workpiece work action sound detected by a microphone in the system. For example, if one or more processors in the system detect a change in a workpiece work action sound by processing signals from a microphone in the system (e.g., a change in the cutting sound emitted by the system if the workpiece is interrupted), one or more processors in the system can trigger one or more actions.

[0336] In some embodiments, one or more processors in the system can evaluate rules based on a user’s position relative to the system. For example, if one or more processors in the system detect data from one or more sensors indicating that a user is not properly positioned relative to the system (e.g., holding system 2800 handles 2808 and 2810 from the side of camera 2816, rather than from the side of spindle 2818), one or more processors in the system can trigger one or more actions. In some embodiments, one or more processors in the system can evaluate rules based on detecting damage or breakage of a work member. For example, if one or more processors in the system detect that a work member is damaged or broken (e.g., using a beam break sensor), one or more processors in the system can trigger one or more actions. In some embodiments, one or more processors in the system can evaluate rules based on monitoring watchdog functions. For example, if one or more processors in the system detect that (1) data from an internal sensor or processor is not arriving on time, or (2) data from an internal sensor or processor is not in the correct format (e.g., indicating a fault), one or more processors in the system can trigger one or more actions.

[0337] In some embodiments, one or more processors in the system can evaluate rules based on a position relationship between a desired path and a system adjustment range, as described above. For example, if one or more processors detect that a work member cannot reach at least one point on a desired path due to the location of the system and the size of the system adjustment range, one or more processors in the system can trigger one or more actions. In some embodiments, one or more processors in the system can evaluate rules based on one or more processors detecting that a work member position is close to an edge of a system adjustment range. For example, one or more processors in the system can monitor one or more of a work member position, velocity, acceleration, or related parameters (e.g., a derivative of acceleration) relative to an edge of a system adjustment range to predict motion of the work member. If the predicted motion of the work member indicates that the work member will reach the edge of the adjustment range in the time required for the work member to retract from a work surface, one or more processors in the system can trigger one or more actions.

[0338] In some embodiments, as described above, one or more processors in the system can evaluate the rule based on a positional relationship between the desired path and the system adjustment range. For example, if the one or more processors detect that, due to the location of the system, the desired path only overlaps a predetermined portion of the system adjustment range (e.g., within a given area of the system adjustment range from an outer edge of the system adjustment range), one or more processors in the system can trigger one or more actions. In this example, if the system adjustment range is circular, the predetermined portion can be an annular area other than a portion of the center of the system adjustment range area (e.g., 50%, 60%, 70%, 80%, or 90%). In this example, if the desired path only overlaps the predetermined portion, one or more processors in the system can trigger retraction of the work member from the work surface (e.g., into the body of the system). In the above-identified configurations, user movement of the desired path to a system displaced outside of the adjustment range can result in unintended cutting of the work surface.

[0339] In some embodiments, the one or more triggered actions involve setting the system to a safe state (e.g., retracting the work member from the work surface (e.g., into the body of the system), stopping rotation of the cutting drill bit). In some embodiments, the one or more triggered actions involve alerting the user using the system (e.g., alerting the user that the work member in the system is compromised). In some embodiments, the triggered actions can be selected from one or more of: retracting the work member from the work surface, stopping movement of the work member (e.g., cutting power to the spindle 2902 motor rotating the cutting drill bit), slowing movement of the work member (e.g., reducing the cutting drill bit rotation speed), sounding an audible alarm (e.g., using a speaker connected to one or more processors in the system), storing an alert notification (e.g., storing an alert notification in a log in memory located in the system, storing an alert notification in a computer system remote from the system), or triggering a visual indicator (e.g., a flashing light on the system).

[0340] While various actions are described herein according to example methods of the present disclosure, it should be understood that some of the actions described herein can be omitted, and other actions can be added, without departing from the scope of the present disclosure.

[0341] Those skilled in the art will recognize that changes or modifications can be made to the above-described embodiments without departing from the broad concepts of the present disclosure. Elements or features of one or more embodiments can be combined with elements or features of other embodiments without departing from the scope of the present disclosure. Therefore, it should be understood that the present disclosure is not intended to be limited to the particular embodiments described herein, but is to be accorded the full scope that the disclosure is entitled to. Accordingly, the disclosure is not limited to the specific embodiments described herein, but only by the claims that can be presented with respect to this disclosure.

[0342] The systems described herein can provide any one or each of the components described herein, and these components can be provided on a standalone machine, or in some embodiments, on multiple machines in a distributed system. The systems and methods described herein can be implemented using programming or engineering techniques to produce software, firmware, hardware, or any combination thereof. Moreover, the systems and methods described herein can be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture. The term "article of manufacture" as used herein is intended to encompass a code or logic embodied in or on one or more computer-readable devices, firmware, programmable logic, memory devices (e.g., EEPROM, ROM, PROM, RAM, SRAM), hardware (e.g., integrated circuit chips, Field Programmable Gate Arrays (FPGAs), Application Specific Integrated Circuits (ASICs)), electronic devices, a computer readable non-transitory storage medium (e.g., CD-ROM, floppy disks, hard drives), or the like. The article of manufacture can be accessed from a file server, via a network transmission line, wireless transmission medium, over the space program of signals, radio waves, or infrared signals. The article of manufacture can be a flash memory card or a magnetic tape. The article of manufacture includes hardware logic and software or programmable code embedded in computer readable media that is executed by a processor. Generally, a computer readable program can be implemented in any programming language, such as LISP, PERL, C, C++, C#, PROLOG, or the like, or in any byte code language such as JAVA. The software program can be stored on or in one or more articles of manufacture as object code.

[0343] Having described certain embodiments of methods and systems for virtualizing audio hardware for one or more virtual machines, other embodiments utilizing the concepts of the present disclosure will be apparent to those skilled in the art.

[0344] While various embodiments have been described and illustrated herein, those of ordinary skill in the art will readily envision a variety of other means and / or structures for performing the functions and / or obtaining the results and / or one or more of the advantages described herein, and each of such variations and / or modifications is deemed to be within the scope of the embodiments described herein. More generally, those skilled in the art will readily appreciate that all parameters, dimensions, materials, and configurations described herein are meant to be exemplary and that the actual parameters, dimensions, materials, or configurations will depend upon the specific application or applications for which the teachings is / are used. Those skilled in the art will recognize, or be able to ascertain using no more than routine experimentation, equivalents for the specific embodiments described herein. It will be apparent to those skilled in the art that various modifications and variations can be made in the present application without departing from the scope or spirit of the application. Thus, it is intended that the present application cover the modifications and variations of this application provided they come within the scope of the appended claims and their equivalents. It is to be understood that the singular forms "a," "an," and "the" include plural referents unless the context clearly dictates otherwise. It is to be understood that the term "comprising" means "including, but not limited to." It is further to be understood that all references to various structures or components can also refer to factory-assembled versions of such structures or components, or individual components intended to be eventually assembled into a completed product. Also, it is to be understood that where the application is described to have embodiments, the embodiments are not mutually exclusive, and the various embodiments can be combined with each other.

[0345] The embodiments described above can be implemented in any of various ways. For example, the embodiments can be implemented using hardware, software or a combination thereof. When implemented in software, the software code can be executed on any suitable processor or collection of processors, whether provided in a single computer system or distributed among multiple computer systems.

[0346] Additionally, a computer can have one or more input and output devices. These devices can be used, among other things, to present a user interface. Examples of output devices that can be used to provide a user interface include printers or display screens for visual presentation of output and speakers or other sound generating devices for audible presentation of output. Examples of input devices that can be used for a user interface include keyboards, and pointing devices, such as mice, touch pads, and digitizing tablets. As another example, a computer can receive input information through speech recognition or in other audible formats.

[0347] The computers can be interconnected by one or more networks in any suitable form, including a local area network or a wide area network, such as an enterprise network, and intelligent network (IN) or the Internet. Such networks can be based on any suitable technology and can operate according to any suitable protocol and can include wireless, wired, or fiber optic components.

[0348] A computer for implementing at least portions of the functionality described herein can include one or more memories, one or more processing units (also referred to herein simply as “processors”), one or more communication interfaces, one or more display units, and one or more user input devices. The memories can include any computer-readable media, and can store computer instructions (also referred to herein as “processor-executable instructions”) for implementing the various functionality described herein. The processing unit(s) can be used to execute the instructions. The communication interface(s) can be coupled to a wired or wireless network, bus, or other communication means, and thus can allow the computer to send or receive messages to or from other devices. For example, a display unit(s) can be provided to allow a user to view various information related to the execution of the instructions. For example, a user input device(s) can be provided to allow a user to make manual adjustments during execution of the instructions, make selections, input data or various other information, or interact with the processor in any of various ways.

[0349] The various methods or processes outlined herein can be coded as software that is executable on one or more processors that employ any one of a variety of operating systems or platforms. Additionally, such software can be written using any of a number of suitable programming languages or programming or scripting tools, and also can be compiled as executable machine language code or intermediate code that is executed on a framework or virtual machine.

[0350] The concepts described herein can be implemented as a computer-readable storage medium (or multiple computer-readable storage media) (e.g., a computer memory, one or more floppy discs, compact discs, optical discs, magnetic tapes, flash memories, circuit configurations in Field Programmable Gate Arrays or other semiconductor devices, or other non-transitory medium or tangible computer storage medium) encoded with one or more programs that, when executed on one or more computers or other processors, perform methods that implement the various embodiments described herein. The computer-readable medium or media can be transportable, such that the program or programs stored thereon can be loaded onto one or more different computers or other processors to implement various aspects of the present disclosure as described herein.

[0351] As used herein, a “working member” can refer to a drill bit, a carving drill bit, a circular saw blade, a cutting drill bit, a cutting member, a cutting tip, a cutting tool tip, a drill bit, a saw blade (e.g., for a vertical saw, a saber saw, a scroll saw), a probe, a router bit, a tool tip, a V-shaped cutting drill bit, or similar to those components used in conventional hand-held tools. As used herein, a “working member” can refer to a pipette tip, a vacuum suction nozzle for a pick-and-place tool, a vinyl cutting knife, a writing instrument (e.g., a pencil, a pen, a sketching pen), or similar items.

[0352] As used herein, a "work surface" refers to a surface on which an action (e.g., cutting, drawing, probing, contacting) can be performed by a work member. In some embodiments, the material on which the work member acts includes a work surface having a thickness (e.g., a 4' x 8' piece of plywood having a thickness of ½ inch). In some embodiments, a workpiece (e.g., a rectangular box having dimensions of 1' x 2' x 3', a 4' x 8' piece of plywood having a thickness of ½ inch) includes more than one work surface on which a work member can act (e.g., 6 different faces of the rectangular box). In some embodiments, a work surface can include one or more of the following: an exposed portion of a workpiece (e.g., exposed wood in the case of a workpiece made of wood), a marking made on a workpiece (e.g., a pattern made with a writing instrument), a marker placed on a workpiece (e.g., a sticker, a film, a tape, a site marker), paper (e.g., laid or attached to a workpiece), a drawing template, and the like.

[0353] As used herein, an "actuator" can refer to a DC servo motor, an AC motor, a stepper motor, a solenoid, or any position or orientation adjustment mechanism using one or more of hydraulic, pneumatic, electrical, magnetic, thermal, or mechanical transmission.

[0354] As used herein, a "camera" can refer to an image capture system, including a conventional digital camera (using an image sensor and one or more lenses), a light field camera, an imaging array (e.g., a planar Fourier capture array), or similar systems.

[0355] As used herein, a "sensor" can refer to a camera, an ultrasonic sensor, a light sensor (e.g., a laser sensor, an infrared sensor), a time-of-flight sensor, an inertial sensor, a phase sensor, an optical sensor, a hybrid sensor (combining one or more sensors), or any similar sensor (e.g., a position sensor, an ultrasonic ranging sensor, a laser ranging sensor).

[0356] The terms "program" or "software" are used herein in a generic sense to refer to any type of computer code or set of computer-executable instructions that can be employed to program a computer or other processor to implement various aspects of embodiments as described above. Additionally, it should be appreciated that according to one aspect, one or more computer programs that when executed perform methods or operations as described herein need not reside on a single computer or processor, but can be distributed in a modular fashion amongst a number of different computers or processors to implement various aspects of embodiments described herein.

[0357] Computer-executable instructions can be in many forms, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, or data structures that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules can be combined or distributed as desired in various embodiments.

[0358] Data structures can be stored in computer-readable media in any suitable form. For simplicity of illustration, data structures can be shown to have fields that are related through location in the data structure. Such relationships can likewise be achieved by assigning storage for the fields with locations in a computer-readable medium that convey relationship between the fields. Any suitable mechanism can be used to establish a relationship between information in fields of a data structure, including through the use of pointers, tags or other mechanisms that establish relationship between data elements.

[0359] The concepts described herein can be implemented as one or more methods, and examples of methods have been provided. Steps performed as part of the methods can be ordered in any suitable way, unless otherwise indicated, unless otherwise indicated. Thus, embodiments in which steps are performed in different sequences, including simultaneously, can be constructed unless othervise indicated.

[0360] As used herein, the terms "light," "optical," and related terms should not be construed as referring only to electromagnetic radiation in the visible spectrum, but rather generally to electromagnetic radiation in the ultraviolet (about 10 nm to 390 nm), visible light (390 nm to 750 nm), near infrared (750 nm to 1400 nm), mid infrared (1400 nm to 15,000 nm), and far infrared (15,000 nm to about 1 mm) regions of the spectrum.

[0361] The indefinite articles "a" and "an," as used herein in the specification and in the claims, unless clearly indicated to the contrary, should be understood to mean "at least one."

[0362] References to "or" can be construed as inclusive so that any terms described using "or" can indicate any of a single, more than one, and all of the described terms.

[0363] In the claims, as well as in the specification above, all transitional phrases such as "comprising," "including," "carrying," "having," "containing," "involving," "holding," "composed of," and the like are to be understood to be open-ended, i.e., to mean including but not limited to.

Claims

1. A system for determining information related to a work surface using a drill having an adapter for holding a work member, the system comprising: one or more processors; one or more sensors operatively coupled to at least one of the one or more processors; as well as one or more memories operatively coupled to at least one of the one or more processors and having instructions stored thereon that, when executed by at least one of the one or more processors, cause the system to: obtaining first data associated with at least a portion of the work surface using at least a first sensor of the one or more sensors, wherein the first sensor is positioned at a first set of one or more locations to obtain the first data; obtaining second data associated with at least a portion of the work surface with the work member in contact with an edge of the work surface, wherein the first sensor is positioned at a second set of one or more locations to obtain the second data, and the second set of one or more locations is different from the first set of one or more locations; determining at least one position of a component based at least in part on the first data and the second data, wherein the at least one position of the component is related to a position of the working member; as well as A location of the edge of the work surface is determined based at least in part on the at least one position of the component.

2. The system of claim 1 , wherein at least one of the one or more memories operably coupled to at least one of the one or more processors has instructions stored thereon that, when executed by at least one of the one or more processors, cause the system to: Contact of the working member with the edge is identified based at least in part on a signal from one of the one or more sensors.

3. The system according to any one of claims 1 to 2, comprising: one or more interfaces operatively coupled to at least one of the one or more processors, wherein at least one of the one or more memories operatively coupled to at least one of the one or more processors has instructions stored thereon that, when executed by at least one of the one or more processors, cause the system to: Contact of the working member with the edge is identified based at least in part on a signal from one of the one or more interfaces.

4. The system of any one of claims 1-2, wherein the location is based at least in part on a physical size of the working member.

5. The system of any one of claims 1-2, wherein the first position of the component is determined at least in part based on a location marker placed on the work surface.

6. The system of any one of claims 1-2, wherein the component is at least one of the one or more sensors.

7. The system of any one of claims 1-2, wherein the component is the adapter.

8. The system of any one of claims 1-2, wherein the component is the working member.

9. A computer-implemented method of determining information related to a work surface using a drill having an adapter for holding a work member, the method comprising: obtaining first data associated with at least a portion of the work surface using at least a first sensor of the one or more sensors, wherein the first sensor is positioned at a first set of one or more locations to obtain the first data; obtaining second data associated with at least a portion of the work surface with the work member in contact with an edge of the work surface, wherein the first sensor is positioned at a second set of one or more locations to obtain the second data, and the second set of one or more locations is different from the first set of one or more locations; determining at least one position of a component based at least in part on the first data and the second data, wherein the at least one position of the component is related to a position of the working member; as well as A location of the edge of the work surface is determined based at least in part on the at least one position of the component.

10. The computer-implemented method of claim 9, comprising: Contact of the working member with the edge is identified based at least in part on a signal from one of the one or more sensors.

11. The computer-implemented method of any one of claims 9-10, comprising: Contact of the working member with the edge is identified based at least in part on a signal from an interface.

12. The computer-implemented method of any of claims 9-10, wherein the location is based at least in part on a physical size of the work member.

13. The computer-implemented method of any of claims 9-10, wherein the first position of the component is determined at least in part based on a location marker placed on the work surface.

14. The computer-implemented method of any of claims 9-10, wherein the component is at least one of the one or more sensors.

15. The computer-implemented method of any of claims 9-10, wherein the component is the adapter.

16. The computer-implemented method of any one of claims 9-10, wherein the component is the working member.

17. One or more computer-readable media storing instructions for determining information related to a work surface using a drill having an adapter for holding a work member, wherein the instructions, when executed by one or more computing devices, cause at least one of the one or more computing devices to: obtaining first data associated with at least a portion of the work surface using at least a first sensor of the one or more sensors, wherein the first sensor is positioned at a first set of one or more locations to obtain the first data; obtaining second data associated with at least a portion of the work surface with the work member in contact with an edge of the work surface, wherein the first sensor is positioned at a second set of one or more locations to obtain the second data, and the second set of one or more locations is different from the first set of one or more locations; determining at least one position of a component based at least in part on the first data and the second data, wherein the at least one position of the component is related to a position of the working member; as well as A location of the edge of the work surface is determined based at least in part on the at least one position of the component.

18. The computer-readable medium of claim 17, wherein when the instructions are executed by one or more computing devices, at least one of the one or more computing devices is caused to: Contact of the working member with the edge is identified based at least in part on a signal from one of the one or more sensors.

19. The computer-readable medium of any one of claims 17-18, wherein when the instructions are executed by one or more computing devices, at least one of the one or more computing devices: Contact of the working member with the edge is identified based at least in part on a signal from one of the one or more interfaces operatively coupled to the at least one of the one or more computing devices.

20. The computer-readable medium of any of claims 17-18, wherein the location is based at least in part on a physical size of the work member.

21. The computer-readable medium of any one of claims 17-18, wherein the first position of the component is determined at least in part based on a location marker placed on the work surface.

22. The computer-readable medium of any one of claims 17-18, wherein the component is at least one of the one or more sensors.

23. The computer-readable medium of any one of claims 17-18, wherein the component is the adapter.

24. The computer-readable medium of any one of claims 17-18, wherein the component is the working member.

Citation Information

Patent Citations

  • Systems and methods for performing a task on a material, or locating the position of a device relative to the surface of the material

    US20150094836A1

  • Handheld portable optical scanner and method of using

    WO2014172484A1

Cited By

  • Systems, methods, and apparatus for sharing tool manufacturing and design data

    CN122044076A