Methods for autonomously sanding a workpiece

EP4688347A2Pending Publication Date: 2026-02-11GRAYMATTER ROBOTICS INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
EP2024800414
Authority / Receiving Office
EP · EP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-04-01
Filing Date
2024-04-29
Publication Date
2026-02-11

AI Technical Summary

Technical Problem

Current automated finishing systems lack the capability to autonomously detect and repair defects on workpieces efficiently, leading to inconsistent surface finishes and increased manual intervention.

Method used

An autonomous scanning and sanding system that captures images of a workpiece, compiles them into a virtual model, detects defects, and generates toolpaths for both nominal and repair cycles, allowing the sanding head to navigate and maintain target forces for predictable material removal and consistent finishes.

Benefits of technology

Enables autonomous detection and repair of defects, ensuring consistent surface finishes across the workpiece, reducing manual intervention and improving processing efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 000119
    Figure 000119
  • Figure 000120
    Figure 000120
  • Figure 000121
    Figure 000121
Patent Text Reader

Abstract

A method includes: compiling lower-resolution images, captured during a global scan cycle executed over a workpiece, into a virtual model; defining a nominal toolpath and a nominal target force for the workpiece based on a the virtual model; detecting a defect indicator on the workpiece based on the lower-resolution images; accessing a higher-resolution image captured during a local scan cycle over the defect indicator; characterizing the defect indicator as a defect reparable via material removal based on the higher-resolution image; defining a repair toolpath for the defect based on the virtual model; navigating a sanding head over the workpiece according to the repair toolpath to repair the defect; and, during a processing cycle: navigating the sanding head across the workpiece according to the nominal toolpath and deviating the sanding head from the nominal toolpath to maintain forces of the sanding head on the workpiece proximal the nominal target force.
Need to check novelty before this filing date? Find Prior Art

Description

METHODS FOR AUTONOMOUSLY SANDING A WORKPIECECROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This Application claims priority to U.S. Patent Application No. 18 / 379,130, filed on n-OCT-2023, which is a continuation of U.S. Patent Application No. 18 / 142,480, filed on 02-MAY-2023, each of which is incorporated in its entirety by this reference.

[0002] This Application claims priority to U.S. Patent Application No. 18 / 537,701, filed on 12-DEC-2023, which is a continuation of U.S. Patent Application No. 18 / 232,275, filed on 09-AUG-2023, each of which is incorporated in its entirety by this reference.

[0003] This Application claims priority to U.S. Patent Application No. 18 / 624,027, filed on 01-APR-2024, which is a continuation of U.S. Patent Application No. 18 / 523,712, filed on 29-NOV-2O23, each of which is incorporated in its entirety by this reference.TECHNICAL FIELD

[0004] This invention relates generally to the field of automated finishing and more specifically to a new and useful system and method for autonomously detecting and repairing defects in a workpiece in the field of automated finishing.BRIEF DESCRIPTION OF THE FIGURES

[0005] FIGURE 1 is a flowchart representation of a first method;

[0006] FIGURE 2 is a flowchart representation of one variation of the first method;

[0007] FIGURE 3 is a flowchart representation of one variation of the first method;

[0008] FIGURE 4 is a flowchart representation of one variation of the first method;

[0009] FIGURE 5 is a schematic representation of one variation of first method;

[0010] FIGURE 6 is a flowchart representation of a second method;

[0011] FIGURE 7 is a flowchart representation of one variation of the second method;

[0012] FIGURE 8 is a flowchart representation of one variation of the second method;

[0013] FIGURE 9 is a flowchart representation of one variation of the second method;

[0014] FIGURE 10 is a flowchart representation of one variation of the second method;

[0015] FIGURE 11 is a flowchart representation of a third method;

[0016] FIGURE 12 is a flowchart representation of one variation of the third method;

[0017] FIGURE 13A is a representation of one variation of the third method;

[0018] FIGURE 13B is a representation of one variation of the third method; and

[0019] FIGURE 14 is a flowchart representation of one variation of the third method.DESCRIPTION OF THE EMBODIMENTS

[0020] The following description of embodiments of the invention is not intended to limit the invention to these embodiments but rather to enable a person skilled in the art to make and use this invention. Variations, configurations, implementations, example implementations, and examples described herein are optional and are not exclusive to the variations, configurations, implementations, example implementations, and examples they describe. The invention described herein can include any and all permutations of these variations, configurations, implementations, example implementations, and examples.1.1. _ First Method: Defect Detection and Repair Followed by Processing

[0021] As shown in FIGURES 1, 2, and 3, a first method S100 for autonomously processing a workpiece includes: accessing a first set of images captured by an end effector while traversing a global scan path over a workpiece during a global scan cycle in Block S110; compiling the first set of images into a virtual model of the workpiece in Block S120; generating a first toolpath for the workpiece based on a geometry of the workpiece represented in the virtual model in Block S140; assigning a first target force to the first toolpath in Block S142; based on the first set of images, detecting a first defect indicator in a first workpiece region of the workpiece in Block S160; based on the first defect indicator, accessing a second set of images captured by the end effector while traversing a local scan path over the first workpiece region during a local global scan cycle in Block S162; based on the second set of images, characterizing the first defect indicator as a first defect repairable via material removal from the workpiece in Block S164; and generating a repair toolpath for the first defect based on a first geometry of the first workpiece region represented in the virtual model in Block S166.

[0022] The first method Sioo also includes, during a repair cycle, via a set of actuators coupled to the end effector, navigating a sanding head across the first workpiece region according to the repair toolpath in Block S152, the sanding head coupled to the end effector.

[0023] The first method Sioo further includes, during a processing cycle: accessing a first sequence of force values output by a force sensor coupled to the sanding head in Block S150; via the set of actuators, navigating the sanding head across the workpiece according to the first toolpath in Block S152; and, based on the first sequence of force values, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece proximal the first target force in Block S154.1.1.1 _ Variation: Interleaved Defect Repair and Processing

[0024] One variation of the first method Sioo shown in FIGURES 1, 2, and 3 includes: accessing a first set of images captured by an end effector while traversing a global scan path over a workpiece during a global scan cycle in Block S110, the first set of images characterized by a first resolution; compiling the first set of images into a virtual model of the workpiece in Block S120; based on the first set of images, detecting a first defect indicator in a first workpiece region of the workpiece in Block S160; based on the first defect indicator, accessing a second set of images captured by the end effector while traversing a local scan path over the first workpiece region during a local global scan cycle in Block S162, the second set of images characterized by a second resolution greater than the first resolution; based on the second set of images, characterizing the first defect indicator as a first defect reparable via material removal from the workpiece in Block S164; based on a geometry of the workpiece represented in the virtual model, generating a first toolpath for the first workpiece region in Block S166 and generating a second toolpath for a second workpiece region, adjacent the first workpiece region, of the workpiece in Block S140; assigning a first target force, corresponding to a first material removal depth, to the first toolpath based on the first defect in Block S168; and assigning a second target force, corresponding to a second material removal depth, to the second toolpath in Block S142.

[0025] This variation of the first method Sioo also includes, during a processing cycle accessing a sequence of force values output by a force sensor coupled to the sanding head in Block S150 and, via a set of actuators coupled to the end effector: navigating a sanding head, coupled to the end effector, across the workpiece according to the first toolpath in Block S152; based on the sequence of force values, deviating the sanding headfrom the first toolpath to maintain forces of the sanding head on the first workpiece region proximal the first target force in Block S154; navigating the sanding head across the second workpiece region according to the second toolpath in Block S152; and, based on the sequence of force values, deviating the sanding head from the second toolpath to maintain forces of the sanding head on the second workpiece region proximal the second target force in Block S154.1.1.2 _ Variation: Processing with Interleaved Defect Detection and Repair

[0026] Another variation of the first method S100 shown in FIGURES 1, 2, and 3 includes: accessing a first set of images captured by an end effector while traversing a global scan path over a workpiece during a global scan cycle in Block S110, the first set of images characterized by a first resolution; compiling the first set of images into a virtual model of the workpiece in Block S120; generating a first toolpath for the workpiece based on a geometry of the workpiece represented in the virtual model in Block S140; assigning a first target force to the first toolpath in Block S142; and, based on the first set of images, detecting a first defect indicator in a first workpiece region of the workpiece in Block S160.

[0027] This variation of the first method S100 also includes, during a processing cycle: accessing a sequence of force values output by a force sensor coupled to the sanding head in Block S150; via a set of actuators coupled to the end effector, navigating a sanding head, coupled to the end effector, across the workpiece according to the first toolpath in Block S152 and, based on the sequence of force values, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece proximal the first target force in Block S154. This variation of the first method S100 further includes, during the processing cycle and in response to the sanding head approaching the first workpiece region: pausing navigation of the sanding head along the first toolpath; and navigating the end effector over the first workpiece region to capture a second set of images of the first workpiece region during the local global scan cycle in Block S162. This variation of the first method S100 also includes, during the processing cycle: based on the second set of images, characterizing the first defect indicator as a first defect reparable via material removal from the workpiece in Block S164; generating a repair toolpath for the first defect based on the geometry of the workpiece represented in the virtual model in Block S166; via the set of actuators, navigating the sanding head across the first workpiece region according to the repair toolpath in Block S152; and, in response to the sanding head completing the repair toolpath, resuming navigation of the sanding head along the first toolpath.1.2. Applications

[0028] Generally, an autonomous scanning and sanding system (hereinafter the “system”) can execute Blocks of the first method Sioo: to autonomously capture scan data of a workpiece occupying a work cell during a rapid, contactless global scan cycle; to compile these scan data into a virtual three-dimensional model of the workpiece; to generate a toolpath spanning surfaces represented in the virtual model and defining a sequence of nominal positions and orientations traversable by a sanding head to sand (hereinafter “process”) the workpiece; and to assign a target force for application of the sanding head on the workpiece.

[0029] The system can further execute Blocks of the first method Sioo during a processing cycle: to track forces applied by the sanding head to the workpiece; and to advance and retract the sanding head normal to the workpiece while navigating the sanding head along the toolpath to maintain forces applied by the sanding head to the workpiece at the target force, thereby achieving predictable material removal across the workpiece and a consistent surface finish across the workpiece.

[0030] The system also executes Blocks of the first method Sioo to: extract two- dimensional (e.g., color) features in two-dimensional images (e.g., color photographic images, infrared images) and / or three-dimensional (e.g., edge, depth) features in three- dimensional images (e.g., depth maps) captured during the global scan cycle; interpret these features as a possible defect in a particular region of the workpiece; and autonomously coordinate a higher-resolution, local scan of this particular location on the workpiece, such as before or during the processing cycle. The system can then: confirm presence of this defect on the workpiece based on these higher-resolution scan data; and determine whether the defect is repairable through material removal from the workpiece, such as a scratch, a chip, a paint sag, a paint curtain, a paint bubble, pitting, orange peel, a rough edge, and dry spray.

[0031] The system can further execute Blocks of the first method Sioo to characterize severity of the defect and classify the defect as: low-severity and repairable via a nominal toolpath during a nominal processing cycle; moderate-severity and repairable via a separate repair cycle execute during a separate repair cycle (e.g., to bring a surface profile of the workpiece at the defect to a nominal surface condition in adjacent non-defective regions of the workpiece); or high-severity and requiring manual repair.

[0032] If the system identifies the defect as repairable via material removal and necessitating a separate repair cycle, the system can: define repair parameters (e.g., targetrepair force, feed rate, stepover distance) based on characteristics of the defect; generate a local repair toolpath around the defect based on a geometry of the workpiece defined in the virtual model around the defect and these repair parameters; and then execute a repair cycle based on these repair parameters and the repair toolpath to repair the defect, such as before or during the processing cycle described above. More specifically, the system can autonomously navigate the sanding head along the repair toolpath and implement closed-loop controls to maintain a target repair force applied the sanding head on the workpiece.

[0033] Furthermore, if the defect is too severe or not repairable via material removal, the system can: generate a prompt to repair the defect; annotate the prompt with a detected type, location, and / or severity of the defect; and serve the prompt to an operator. Additionally or alternatively, the system can annotate the virtual model of the workpiece with the type and severity of the defect and serve (e.g., render) this annotated virtual model to the operator.

[0034] Therefore, the system can execute Blocks of the first method Sioo that autonomously detect and repair defects present on a workpiece, such as before or while autonomously processing a larger area of the workpiece.

[0035] Furthermore, the system is described herein as executing Blocks of the first method Sioo to autonomously repair a defect detected on a workpiece by applying a sanding pad to (or “sanding”) the defect and then applying a sanding pad (of the same or lesser abrasiveness) to the entire workpiece to bring the entire workpiece to the same level of sanded finish. Alternatively, the system can execute Blocks of the first method Sioo to autonomously repair a defect detected on a workpiece by applying a polishing pad or a buffing pad to (or “polishing” or “buffing) the defect and then applying the polishing or buffing pad (of the same or lesser abrasiveness) to the entire workpiece to bring the entire workpiece to the same level of polished or buffed finish. Yet alternatively, the system can execute Blocks of the first method Sioo to autonomously repair a defect detected on a workpiece by applying a sanding pad, then a polishing pad, and / or then a buffing pad to the defect. For example, the system can execute Blocks of the first method Sioo to: detect a run in a clearcoat on a workpiece; apply a sanding pad to the defect to remove the run in the clearcoat; then apply a polishing pad to the entire workpiece to polish the clearcoat; and then apply a buffing pad to the entire workpiece to buff the clearcoat. However, the system can execute Blocks of the first method Sioo to autonomously apply a sanding pad, a polishing pad, and / or a buffing pad to detected defects and / or the entire workpiece,such as to rapidly remove these defects and then bring the entire workpiece surface to a consistent surface finish. System

[0036] In one implementation described in U.S. Patent Application No. 18 / 111,470 and shown in FIGURE 1, the system includes: a robotic arm arranged in or adjacent a work zone and that includes a set of articulatable joints interposed between a series of arm segments; an end effector supported on a distal end of the robotic arm; a sanding head arranged on or integrated into the end effector and configured to actuate (e.g., rotate) a sanding disk; an optical sensor (e.g., a set of depth sensors and / or color cameras) arranged on or integrated into the end effector and configured to capture optical images (e.g., depth maps, photographic color images) of a workpiece; a force sensor (e.g., a onedimensional axial force sensor) configured to output a signal representing a force applied by the sanding head to a workpiece normal to the sanding head; a set of position sensors configured to output signals representing (or assemblable into) a three-dimensional position of the end effector; a display configured to render a user interface accessible by an operator; and / or a controller configured to execute Blocks of the first method S100.

[0037] In this implementation, the system can also include a range-extender configured to traverse the robotic arm longitudinally along the work zone, such as to reach and process an elongated part defining a high length-to-width ratio (e.g., a high aspect ratio), such as a boat hull or aircraft wing.

[0038] In another implementation, the system includes a multi-axis (e.g., five-axis) gantry configured to locate and articulate the end effector, sanding head, and optical sensor(s) across the work zone.

[0039] In yet another implementation shown in FIGURE 5, the system includes: a mobile platform, such as including a wheeled or tracked chassis; a robotic arm arranged on the mobile platform; a sanding head (e.g., an end effector) arranged on a distal end of the robotic arm; and a navigation system. For example, the navigation system can include: a set of optical color and / or depth sensors arranged on the mobile platform and configured to capture images of a scene around the system; and a controller configured to autonomously navigate the mobile platform around a workpiece based on objects detected in images captured by these optical color and / or depth sensors.

[0040] However, the system can include or define any other element or structure.1.4. Workpiece Loading and Processing Inputs

[0041] In one variation, the system retrieves processing inputs and / or other parameters for autonomously sanding the workpiece, such as once an operator loads the workpiece into the work zone adjacent the system.

[0042] In particular, in preparation for autonomously processing (e.g., sanding) a workpiece by the system, an operator locates the workpiece in the work zone adjacent the system. For example, the operator may: load the workpiece onto a support rig (e.g., a wheeled table) and install intermittent clamps on the workpiece to retain the workpiece on the support rig; place the support rig and workpiece into the work zone; and lock wheels of the support rig.1.4.1 _ Processing Limits

[0043] The system can then prompt the operator to supply processing limits for the workpiece, such as including: a maximum applied force (i.e., a maximum force applied by the sanding head to any region of the workpiece); a maximum applied pressure (e.g., a maximum force applied by the sanding head to any unit area of the workpiece); and a maximum deformation of the workpiece (e.g., a maximum distance of a point on the workpiece in an unloaded position to a loaded position when the system applies the sanding head to the workpiece). For example, the operator can supply these processing limits based on known strengths and compliance characteristics of the workpiece.

[0044] Additionally or alternatively, the system can retrieve these processing limits from a predefined processing profile. For example, the system can select a predefined processing profile stored in a processing profile database based on: a material of the workpiece (e.g., fiberglass, steel, aluminum) and / or a nominal wall thickness of the workpiece selected by the operator; or a length, aspect ratio, and / or a geometry profile of the workpiece (e.g., concave with high aspect ratio, convex with high aspect ratio, concave with low aspect ratio, convex with low aspect ratio) entered by the operator or derived from a scan of the workpiece completed by the system. The system can then load processing limits extracted from this processing profile.1.4.2 _ Material Removal Targets

[0045] In another implementation, the system prompts the operator to manually input properties of and / or processing targets for the workpiece (e.g., through a set of dropdown menus), such as: material type; coating types (e.g., none, gel coat, epoxy, primer, base coat, clear coat); target, maximum and / or minimum material removal depth (e.g., 0.002” to o.oio”); and / or output surface quality (e.g., sanded to 8o-, 150-, 220-,32O-, or 400-grit; buffed; polished). Alternatively, the system can prompt the operator to select a material removal profile - such as from a set of material removal profiles stored in a processing database - containing these data.

[0046] The system can then select a sanding disk of a sanding grit corresponding to the target output surface quality and implement methods and techniques described below to generate a nominal toolpath and set a nominal target force for processing the workpiece based on: this sanding grit; the target, maximum and / or minimum material removal depth; and / or a maximum applied force or pressure set for the workpiece.

[0047] However, the system can retrieve or load processing limits for the workpiece based on any other data supplied by the operator or collected autonomously by the system during a global scan cycle as described below.1.5. _ Global Workpiece Scan

[0048] Blocks S112, S110, and S120 of the first method S100 recite: navigating an end effector over a workpiece; accessing a set of images captured by an optical sensor arranged on the end effector while traversing the workpiece; and compiling the set of images into a virtual model representing unloaded surfaces of the workpiece. Generally, in Blocks S112, S110, and S120, the system can implement methods and techniques described in U.S. Patent Application No. 18 / 111,470 to: autonomously navigate an optical sensor (e.g., a depth sensor and / or a color camera) over the workpiece; capture optical images (e.g., depth maps, photographic color images) of the workpiece; and assemble these optical images into a virtual three-dimensional model that represents surfaces of the workpiece within a relatively wide dimensional tolerance (e.g., + / - 0.35”) and / or relatively low resolution, as shown in FIGURE 1.

[0049] For example, after the operator loads the workpiece into the work zone and confirms processing limits for the workpiece, the system can initiate a global scan cycle. During the global scan cycle, the system can: navigate the optical sensor - located on the end effector - along the scan path over and offset above the workpiece; monitor a distance between the end effector and the workpiece based on depth data collected by the optical sensor; and implement closed-loop controls to maintain a target offset distance between the optical sensor and the workpiece (e.g., 20”, 50 centimeters). In this example, for a workpiece defining an elongated geometry including a long axis located approximately parallel to a longitudinal axis of the work zone, the system can actuate a conveyor supporting the robotic arm to traverse the robotic arm along the longitudinal axis of the work zone while rastering the end effector and the optical sensor laterally across the workzone to capture a sequence of optical images representing all surfaces of the workpiece accessible by a sanding head on the end effector.

[0050] The system can thus capture scan data - such as color photographic images, stereoscopic images, two-dimensional infrared images, depth maps, and / or LIDAR images - from a set of optical sensors arranged on the end effector while traversing the end effector across (e.g., over and not in contact with) the workpiece. For example, the system can capture depth maps at a rate of 2 Hz while traversing the end effector across the workpiece at a rate of three feet per second at a target offset distance of three feet between the end effector and the workpiece, which corresponds to a nominal sensor field of view of three feet by three feet and thus yields approximately 50% overlap between consecutive depth maps captured by the system during the global scan cycle.

[0051] The system then compiles these optical images into a virtual three- dimensional model of the workpiece as described in U.S. Patent Application No. 18 / 111,470, such as by implementing structure-from-motion techniques or by fusing these optical images into the virtual model based on poses of the robotic arm when these optical images were captured. For example, the system can compile this set of optical images into a three-dimensional mesh within a virtual three-dimensional space.

[0052] However, the system can implement any other methods or techniques to navigate the end effector and optical sensor over the workpiece, to collect optical images of the workpiece, and to generate a virtual three-dimensional model of the workpiece based on these optical images.1.6. _ Nominal Workpiece Segmentation

[0053] In one variation shown in FIGURES 1 and 2, the system segments the workpiece into workpiece regions. For example, the system can segment the virtual model of the workpiece into: approximately-flat regions; concave regions; convex regions; workpiece perimeter regions; regions containing edges; and / or regions containing orifices or apertures. In another example, the system can: define a first workpiece region containing a contiguous convex surface; define a second workpiece region containing a contiguous concave surface; and define a third workpiece region containing a contiguous surface approximating a planar geometry (e.g., defining a large effective radius); etc. In yet another example, the system can: define a first contiguous workpiece region characterized by high detected, predicted, or annotated stiffness; define a second contiguous workpiece region characterized by moderate detected, predicted, or annotated stiffness; and define a third contiguous workpiece region characterized by low detected,predicted, or annotated stiffness; etc. In another example, the system can project a predefined boundary grid onto the virtual model and define workpiece regions according to boundaries defined in this boundary grid.

[0054] In the foregoing examples, the system can also define workpiece regions spanning target widths, lengths, and / or surfaces areas spanning less than maximum widths, lengths, and / or surfaces areas.

[0055] However, the system can segment the workpiece in any other way and according to any other workpiece characteristics.

[0056] The system can then define a toolpath, assign a target force, and set a feed rate of the sanding head for each workpiece region.1.7. _ Target Force Parameters

[0057] Block S142 of the first method S100 recites: assigning a first target force to the first workpiece region. Generally, in Block S142, the system assigns target forces to workpiece regions of the workpiece, such as: based on autonomously-detected, manually- indicated, or derived (e.g., interpolated) maximum compliance (or minimum stiffness) characteristics of these regions; based on geometries (e.g., concave and convex contours, profiles) in these regions of the workpiece; and / or based on a material or part type of the workpiece.

[0058] In one implementation, the system retrieves a single nominal target force from the predefined processing profile described above and assigns this target force to the entire workpiece, as shown in FIGURE 1.

[0059] In another implementation, the system defines boundaries between contiguous regions of the workpiece exhibiting similar contours, such as between contiguous concave, convex, and approximately flat regions of the workpiece spanning more than a minimum surface area (e.g., four square feet). The system then assigns target forces to each region, such as: highest forces in concave regions that may be least susceptible to plastic deformation due to high force application by the sanding head; moderate forces in flat regions that may be more susceptible to plastic deformation due to force application by the sanding head; lowest forces in convex regions that may be most susceptible to plastic deformation due to high force application by the sanding head; and / or force magnitudes within a region proportional to the smallest radius within the region. The system can also annotate these regions and corresponding target forces in the virtual model of the workpiece.

[0060] Additionally or alternatively, the system can retrieve or calculate a target nominal force for each region of the workpiece, such as: proportional to a detected or indicated stiffness in a workpiece region; or proportional to a minimum effective radius of the workpiece region.1.8. _ Nominal Toolpath Generation

[0061] The system can further implement methods and techniques described in U.S. Patent Application No. 18 / 111,470 to define a toolpath within each region of the workpiece.

[0062] In one implementation shown in FIGURE 1, the system sets a nominal target force - for application of the sanding head on the workpiece - less than the maximum applied force and / or based on (e.g., inversely proportional to) an operator- indicated or system-derived stiffness of a region of the workpiece. The system further: retrieves a function that relates contact duration (i.e., a time or rotation count of a sanding disk in contact with a workpiece), applied force (or pressure), sanding disc grit, and material removal depth; selects a sanding disc grit for the workpiece based on an output surface quality selected for the workpiece by the operator; and calculates a nominal contact duration for the workpiece based on the nominal target force, the sanding disc grit, and the target material removal depth.

[0063] The system then sets or calculates a combination of pitch offset between legs of a toolpath (or “stepover distance”) and a feed rate for the toolpath that yields the nominal contact duration. In particular, a higher feed rate may yield less contact time between the sanding head and a unit area of the workpiece; and vice versa. Similarly, a wider stepover distance for the toolpath may yield less contact time between the sanding head and a unit area of the workpiece; and vice versa. For example, the system can set a feed rate and a stepover distance - inversely proportional to feed rate - based on feed rate preferences set by the operator. Alternatively, the system can: set a lower feed rate and wider stepover distance for segments of a toolpath intersecting a region of the workpiece characterized by a large radius in which a large proportion of the sanding disk is in contact with the workpiece; and set a higher feed rate and narrower stepover distance for segments of a toolpath intersecting a region of the workpiece characterized by a small radius in which a smaller proportion of the sanding disk is in contact with the workpiece. The system can therefore set or retrieve a nominal target force, a stepover distance, and a feed rate for each region of the workpiece.

[0064] The system then generates a nominal toolpath for each region of the workpiece. In one implementation, the system: defines a serpentine or boustrophedonic toolpath within a first region of the workpiece according to a stepover distance set for the first workpiece region; and stores this first toolpath as a first set of keypoints, wherein each keypoint represents a vertex or other point on the toolpath, defines a three- dimensional position on the workpiece, includes a vector normal to the workpiece at this three-dimensional position, and is labeled with the target force and the feed rate set for the first region. More specifically, the system can project the first toolpath onto the first region of the workpiece represented in the virtual model. The system can then extract a three-dimensional position and normal vector of each vertex or other point on the first toolpath from the virtual model. Accordingly, the system can store the first toolpath for the first workpiece region as a first ordered sequence of keypoints: located on a first surface of the workpiece stored in (i.e., represented by) the virtual model; and contained within the first workpiece region.

[0065] In one variation, the system can iteratively adjust this first toolpath based on local radii of the workpiece along segments of the first toolpath. Additionally or alternatively, the system can adjust target forces assigned to segments of the first toolpath: proportional to local radii of convex subregions of the workpiece adjacent these toolpath segments; and inversely proportional to radii of concave subregions of the workpiece adjacent these toolpath segments. Accordingly, the system can set a force greater than the nominal target force within a concave subregion of the workpiece and a target force less than the nominal target force within a convex subregion of the workpiece.

[0066] The system can repeat this process for each other region of the workpiece.

[0067] Alternatively, the system can implement the foregoing methods and techniques to generate a single continuous toolpath spanning the entire workpiece or spanning another partial or complete surface of the workpiece selected for autonomous processing by the system.I.Q. _ Nominal Processing Cycle

[0001] Block S150 of the first method S100 recites accessing a first sequence of force values output by a force sensor coupled to a sanding head arranged on the end effector. Blocks S152 and S154 of the first method S100 recite, via a set of actuators coupled to the end effector: navigating the sanding head across the first workpiece region according to the first toolpath; and, based on the first sequence of force values, deviatingthe sanding head from the first toolpath to maintain forces of the sanding head on the first workpiece region proximal the first target force.

[0068] Generally, in Blocks S150, S152, and S154, the system can implement methods and techniques described in U.S. Patent Application No. 18 / 111,470 to autonomously navigate the sanding head along a toolpath (e.g., a sequence of keypoints) defined within a region of the workpiece and to maintain a target normal force between the sanding head and the workpiece by selectively moving the sanding head into and away from the workpiece normal to the surface of the workpiece represented in the virtual model, as shown in FIGURE 3.

[0069] The system also implements closed-loop controls to maintain a target force between the sanding head and the workpiece within each workpiece region - based on force values read from the force sensor integrated into the sanding head - by driving the sanding head toward and away from the workpiece along vectors normal to the workpiece, such as represented in keypoints of these toolpaths or extracted from the virtual model during the processing cycle. For example, for a first keypoint in the first ordered sequence of keypoints, the system can drive the set of actuators to: locate the sanding head at a first three-dimensional position intersecting the first keypoint; align an axis of the sanding head to a first vector contained in the first keypoint; and drive the sanding head, coaxial with the first vector, toward the workpiece to match force values, in a sequence of force values read from the force sensor in the sanding head, to a first target force assigned to a first toolpath containing the first keypoint. The system can then drive the set of actuators to interpolate a three-dimensional path and sanding head orientation from the first keypoint to the second keypoint while implementing closed-loop controls to apply the sanding head to the workpiece with the first target force. The system can repeat this process for each other keypoint defined along the first toolpath and then along subsequent toolpaths defined for other regions of the workpiece.

[0070] In a similar implementation, in Block S140, the system defines a first ordered sequence of keypoints located on the virtual model. For each keypoint in the first ordered sequence of keypoints, the system: calculates a vector normal to the virtual model at a location of the keypoint on the virtual model; and stores the vector in the keypoint. The system then stores the first ordered sequence of keypoints as the first toolpath. Then, for a first keypoint in the first ordered sequence of keypoints, the system: locates the sanding head at a first position intersecting the first keypoint in Block S152; aligns an axis of the sanding head to a first vector contained in the first keypoint; and drives the sandinghead, coaxial with the first vector, toward the workpiece to match force values, in the first sequence of force values read from the force sensor, to the first target force in Block S154. i.io. Possible Defect Detection in Scan Data

[0071] Block S160 of the first method Sioo recites, based on the first set of images, detecting a first defect indicator in a first workpiece region of the workpiece. Generally, in Block S160, the system detects features represented in images captured during the global scan cycle and / or features in the virtual model of the workpiece - generated from images captured during the global scan cycle - that indicate possible defects in the workpiece, such as: scratches; chips; gouges; cracks; flaking; rust or substrate bleed- through; incomplete paint coverage; paint sags; paint curtains; paint bubbles; pitting; orange peel; rough edges; and / or dry spray; etc., as shown in FIGURES 1 and 4.

[0072] More specifically, the system can capture relatively low-resolution optical data- such as 2D photographic images, stereoscopic color images, depth maps, or LIDAR images, etc. - while navigating the end effector (e.g., including the sanding head) over the workpiece during the global scan cycle in Block S110. The system can then implement edge detection, template matching, object recognition, or other computer vision or artificial intelligence techniques: to detect two-dimensional color features in these two- dimensional photographic images that may indicate a defect in the workpiece; to detect three-dimensional (e.g., edge) features in these three-dimensional images that may indicate a defect in the workpiece; and / or to detect two- or three-dimensional features in the virtual model that may indicate a defect in the workpiece.1.10.1 Two-dimensional Feature as Possible Defect

[0073] Generally, scratches, orange peel, pitting, incomplete paint coverage, rust or substrate bleed-through, and dry spray may present on a workpiece as two- dimensional features (or “2.5D” features) projected onto a surface of the workpiece. Accordingly, in Block S160, the system can detect these defects as edges or color discontinuities in two-dimensional images (e.g., two-dimensional color photographic images) of the workpiece captured in Block S110, as shown in FIGURE 4.

[0074] In one implementation, in Block S110, the system accesses: a first set of depth maps captured by a depth sensor arranged on the end effector while traversing the global scan path during the global scan cycle; and a first set of photographic images - of a first resolution - captured by a two-dimensional color camera arranged on the end effector while traversing the global scan path during this global scan cycle. The systemthen: compiles these depth maps into the virtual model in Block S120; detects a two- dimensional discontinuity (e.g., a color break, an edge) in a photographic image - in the first set of photographic images - depicting a first region of the workpiece; and stores this two-dimensional discontinuity as a defect indicator (i.e., a “possible defect”) present in the first region of the workpiece.

[0075] As described below, the system can then: flag this first region of the workpiece containing this defect indicator for a local scan to capture higher-resolution data in Block S162; and verify presence, type, and repair mode of the defect on the workpiece based on these higher-resolution data in Block S164. For example and as described below, the system can characterize this defect indicator as a scratch, orange peel, or dry spray defect type based on two-dimensional features extracted from these higher-resolution data depicting the first region of the workpiece.1.10.2 _ Three-dimensional Feature as Possible Defect

[0076] Similarly, chips, gouges, cracks, flaking, paint sags, paint curtains, and paint bubbles may present on a workpiece as three-dimensional features extending above or below a nominal surface of the workpiece. Accordingly, in Block S160, the system can detect these defects as three-dimensional surface discontinuities in three-dimensional images (e.g., depth maps, stereoscopic color images, LIDAR images) of the workpiece captured in Block S110, as shown in FIGURE 4.

[0077] In one implementation, the system accesses: a first set of depth maps captured by a depth sensor arranged on the end effector while traversing the global scan path during the global scan cycle in Block S110; compiles these depth maps into the virtual model in Block S120; detects a nominal, continuous surface across the workpiece in a particular depth map depicting a first region of the workpiece; detects a three- dimensional discontinuity (e.g., an edge, a small feature) extending above or below the nominal, continuous surface represented in the depth map; and stores this two- dimensional discontinuity as a defect indicator (i.e., a “possible defect”) present in the first region of the workpiece. Additionally or alternatively, the system can: interpret a nominal, continuous surface across the workpiece in the virtual model; detect a three- dimensional surface discontinuity extending above or below the nominal, continuous surface represented in a first region of the virtual model; and store this two-dimensional discontinuity as a defect indicator (i.e., a “possible defect”) present in a corresponding first region of the workpiece.

[0078] As described below, the system can then: flag this first region of the workpiece containing this defect indicator for a local scan to capture higher-resolution data in Block S162; and verify presence, type, and repair mode of the defect on the workpiece based on these higher-resolution data in Block S164. For example and as described below, the system can characterize this defect indicator as a chip, gouge, crack, flaking, paint sag, paint curtain, or paint bubble based on three-dimensional features extracted from these higher-resolution data depicting the first region of the workpiece.

[0079] Conversely, the system can implement methods and techniques described above to detect possible presence of these defect types in two-dimensional images (e.g., color photographic images) captured during the global scan cycle.

[0080] However, the system can implement any other method or technique to detect two-dimensional and / or three-dimensional features - in raw two- or three- dimensional images captured in Block S110 or in the virtual model of the workpiece generated in Block S120 - that may indicate presence of local defects in the workpiece. The system can then flag locations of the possible defects on the workpiece for higher- resolution two-dimensional and / or three-dimensional scans.1.11. _ Local Scan Cycle

[0081] Block S162 of the first method S100 recites, based on the first defect indicator, accessing a second set of images captured by the end effector while traversing a local scan path over the first workpiece region during a local global scan cycle. Generally, in Block S162, the system can: autonomously navigate the end effector - including two- and / or three-dimensional optical sensors - over each region of the workpiece containing a defect indicator (i.e., a possible defect) detected in Block S160 based on lower-resolution data captured during the global scan cycle; and capture higher resolution two- and / or three-dimensional images of these regions of the workpiece, as shown in FIGURE 2.

[0082] In one implementation, during the global scan cycle, the system: captures depth maps via a depth sensor or LIDAR sensor and color photographic images via a color camera arranged in the end effector in Block S110; detects the workpiece in the depth maps and calculates shortest distances between the end effector and the workpiece; autonomously navigates the end effector over the workpiece at a global feed rate (e.g., one meter per second) while maintaining a target global minimum distance (e.g., one meter) between the end effector and the workpiece; implements image stitching, structure from motion, and / or other techniques to assemble these depth maps and / or photographic images into the virtual model in real-time; characterizes resolution of the virtual modelbased on mesh density of the virtual model; and ceases the global scan cycle once the virtual model depicts a complete, continuous perimeter of the workpiece and once the resolution of each region of the virtual model exceeds a global minimum resolution.

[0083] For example, in this implementation, in response to detecting a defect indicator in these lower-resolution global scan data, the system can: define a local scan region around this defect indicator, such as a region (e.g., a circular region) radiating 30 centimeters outwardly from the defect indicator; define a spiral, serpentine, or boustrophedonic local scan path over this local scan region; set a target local minimum distance (e.g., 30 centimeters) less than the target global minimum distance; and set a local feed rate (e.g., 0.3 meters per second) less than the global feed rate. Then, during a local scan cycle for the defect indicator, the system: captures depth maps and / or color photographic images in Block S160; autonomously navigates the end effector along the local scan path (or otherwise navigates the end effector over the workpiece) at the local feed rate while maintaining the target local minimum distance between the end effector and the workpiece; and implements image stitching, structure from motion, and / or other techniques to assemble these depth maps and / or photographic images into a higher- resolution two- or three-dimensional representation of the local scan region.

[0084] Alternatively, rather than preemptively calculate the local scan path for the local scan region, the system can: navigate the end effector to the defect indicator on the workpiece; capture depth maps and / or color photographic images in Block S160; calculate shortest distances between the end effector and the workpiece; autonomously navigate the end effector over the workpiece - and around the defect indicator - at the local feed rate while maintaining the target local minimum distance between the end effector and the workpiece; implement image stitching, structure from motion, and / or other techniques to assemble these depth maps and / or photographic images into a two- or three-dimensional representation of the local scan region; characterize resolution of the defect indicator in this representation of the local scan region based on its mesh density; and cease the local scan cycle once this representation of the local scan region depicts the defect indicator at a resolution greater than a local minimum resolution greater than the global minimum resolution.

[0085] The system can repeat this process for each defect indicator detected in Block S160 in order to capture high-resolution two- and / or three-dimensional data depicting small, discrete regions of the workpiece that contain each defect indicator. Furthermore, the system can execute this process in Block S160 after completing theglobal scan cycle and before initiating the processing cycle to process the entire workpiece (or particular regions of the workpiece selected by the operator and / or excluding defects).

[0086] Alternatively, as described below, the system can: initiate the processing cycle to autonomously sand the workpiece after completing the global scan cycle; intermittently pause the processing cycle in response to approaching a local region of the workpiece containing a defect indicator; complete a local scan cycle and / or a local repair cycle over this local region of the workpiece; resume the processing cycle after completing this local scan cycle and / or local repair cycle; and repeat the process for each other defect indicator detected on the workpiece.1.12. _ Defect Confirmation

[0087] Block S164 of the first method S100 recites, based on the second set of images, characterizing the first defect indicator as a first defect reparable via material removal from the workpiece. Generally, in Block S164, the system can verify presence of a defect, identify a type of the defect, characterize a severity of the defect, and / or select a repair mode for the defect based on higher-resolution two- and / or three-dimensional data captured by the system during a local scan cycle, as shown in FIGURE 2.

[0088] In particular, in Block S164, the system can implement template matching, object recognition, and / or other computer vision or artificial intelligence techniques to validate and characterize a defect indicator based on higher-resolution two- and / or three- dimensional data - of a region of the workpiece containing the defect individual - captured by the system in Block S162.1.12.1 _ Defect Type

[0089] In one implementation shown in FIGURE 2, the system can: implement computer vision techniques to detect a two- or three-dimensional edge or discontinuity in two- or three-dimensional image data captured during a local scan cycle; extract a set of features around and representing this discontinuity from these two- or three- dimensional image data; and implement template matching techniques to identify this discontinuity as one of a scratch, a chip, a paint sag, a paint sag, a paint curtain, a paint bubble, pitting, orange peel, a rough edge, and dry spray.

[0090] For example, the system can: retrieve a set of photographic images captured by the system during a local scan cycle around a first detect indicator; and detect and extract a first set of features, from this set of higher-resolution photographic images, cospatial with the first defect indicator. The system can further retrieve a set of defecttemplates from a template database, wherein each defect template includes a photographic image or a set of image features depicting a representative defect and labeled with a known defect type, defect severity, and defect repair mode (e.g., inherent repair via material removal during processing cycle, repair via material removal during separate, manual repair). In this example, the system can then implement artificial intelligence techniques to calculate similarity between the first set of features - extracted from the higher-resolution photographic images - and each template image in the template database. The system can then select a first template image corresponding to a highest similarity (e.g., a first similarity score) to the first set of features. If this similarity (or first similarity score) exceeds a threshold score, the system can: retrieve a first defect type, a first defect severity, and / or a first defect repair mode associated with the first template image; and characterize the first defect indicator as a defect of the first defect type, of the first defect severity, and / or repairable via the first defect repair mode in Block S164.

[0091] In another implementation, the system can access a defect model: trained on a corpus of images depicting and labeled with known defect types, defect severities, defect repair modes, and / or repair cycle parameters (e.g., target force, repair toolpath pattern, repair toolpath stepover distance, material removal depth); configured to ingest an image region or a first set of features depicting a region of a workpiece depicting a defect indicator; and to return a confidence score for presence, type, severity, and / or repair mode for a defect. Accordingly, the system can: retrieve a set of photographic images captured by the system during a local scan cycle around a first defect indicator; detect and extract a first set of features, from this set of higher-resolution photographic images, cospatial with the first defect indicator; and insert the first set of features (or a segment of these photographic images depicting the first defect indicator) into the defect model. Then, if the model returns a confidence score for presence of a defect greater than a threshold score, the system can: confirm presence of a defect in this region of the workpiece; and label this defect with a type, severity, repair mode, and / or repair cycle parameters returned by the model.

[0092] The system can repeat the foregoing process for each defect indicator detected in Block S160 and re-scanned in Block S162. However, the system can implement any other method or technique to confirm presence of and / or characterize a defect in Block S164.1.12.2 Defect Repair Mode + Parameters

[0093] As shown in FIGURE 2, the system can then characterize or identify each defect as: repairable via material removal by the system during a nominal processing cycle (e.g., for light scratches, orange peel); repairable via material removal by the system during a separate repair cycle (e.g., for heavier scratches, paint sags, paint runs); or not repairable by the system (e.g., cracks, voids, flaking paint, paint curtains, dry paint, incomplete paint application).

[0094] More specifically, a first subset of defect types and severities may be repairable via nominal processing parameters during the processing cycle without a separate repair cycle, such as light scratches and orange peel. A second subset of defect types and severities may be repairable via modified processing parameters during the processing cycle without a separate repair cycle, such as moderate scratches and heavier orange peel repaired via higher target forces, slower feed rates, and / or narrower stepover distances in the segments of the nominal toolpath intersecting these defects. A third subset of defect types and severities maybe repairable via a separate repair cycle, such as heavy scratches, paint runs, paint sags, and light gouges. A fourth subset of defect types and severities may not be repairable via material removal by the system or may otherwise require manual repair, such as paint curtains, heavy gouges, cracks, and voids. The system can therefore classify types and severities of defects detected in Blocks S160 and S164 and assign repair modes for these defects accordingly.

[0095] For example, a paint curtain (e.g., an area of multiple contiguous and adjacent paint runs or sags) may contain subsurface paint that is not cured. Autonomous processing of the paint curtain by the system may spoil a sanding disk on the sanding head, tear paint from the workpiece, and / or render a void or other surface discontinuity at the location of the paint curtain. Therefore, the system can: flag a paint curtain detected on the workpiece for manual repair; generate a notification including a prompt for repair, a type of the defect, and a location of the defect on the workpiece; and serve this notification to an operator.1.12.2.1 _ Defect Repair Mode + Repair Parameters by Defect Model

[0096] In one implementation described above and shown in FIGURES 2 and 4, the system: retrieves a defect model trained on images of defects labeled with defect type, defect severity, repair mode, and / or repair cycle parameters; inserts image regions and / or image features representing a defect indicator into the defect model; and tags the defect indicator with a defect type, defect severity, repair mode, and / or repair cycle parameters returned by the defect model.1.12.2.2 _ Defect Repair Mode and Output by Lookup Table or Model

[0097] In another implementation, the system: implements computer vision and / or artificial intelligence techniques to classify a type and severity of a defect as described above; retrieves a stored lookup table or repair model defining associations between defect types, defect severities, repair modes, and / or repair cycle parameters; and then selects a repair mode and / or repair cycle parameters specified in the lookup table or repair model for the type and severity of the defect.1.12.2. ,2 _ Defect Repair Mode + Parameters by Defect Severity

[0098] In yet another implementation, the system implements methods and techniques described above to classify a type of a defect. The system then characterizes a severity of the defect based on two- and / or three-dimensional features of the defect extracted from images captured during the corresponding local scan cycle. For example, the system can: retrieve a depth map captured during the local scan cycle and depicting a workpiece region containing the defect indicator (or the confirmed defect); detect or calculate a nominal surface of the workpiece region, such as by calculating a smoothed surface through three-dimensional points in the depth map; detect a defect surface (e.g., a cluster of points) cospatial with the defect indicator in the depth map; calculate an offset distance between the defect surface and the nominal surface; and calculate a severity score for the defect proportional to this offset distance. (In this example, the system can also identify this defect as a scratch or gouge if the defect surface is located below the nominal surface and identify this defect as a paint sag, run, or bubble if the defect surface is located above the nominal surface.) Additionally or alternatively, the system can: extract a maximum length or surface area of the defect from the data packet and / or from a photographic image of the workpiece region; and calculate a severity score for the defect proportional to this maximum length or surface area.

[0099] Therefore, the system can: calculate a high severity score for a deep gouge and for a wide paint curtain, which may not be repairable by the system; calculate a moderate severity score for a small chip, long narrow scratch, or large area of orange peel, which may be repairable via separate repair cycles; or calculate a low severity score for light scratches or small areas of orange peel, which may be repairable during a nominal or modified processing cycle.

[0100] For example, in response to the severity score of the defect falling below a target severity score range, the system can: withhold or discard a separate repair toolpathfor the defect; instead predict repair of the defect via the nominal toolpath generated for the workpiece; and generate the nominal toolpath that spans the workpiece region containing this defect. Alternatively, in response to the severity score of the defect falling within the target severity score range, the system can: schedule a separate repair cycle; generate a repair toolpath and define repair parameters for the defect; and execute the repair cycle before or during the nominal toolpath to repair the defect. Yet alternatively, in response to the severity score of the defect exceeding the target severity score range, the system can: withhold or discard a repair toolpath for the defect; flag the defect for manual repair; and generate the nominal toolpath that avoids the workpiece region containing this defect.1.1 . _ Repair Cycle Parameters

[0101] As described above and shown in FIGURE 2, the system can implement a defect model and artificial intelligence techniques to identify a type, severity, and repair mode of the defect and to directly select repair cycle parameters (e.g., including a repair toolpath pattern, a target repair force, and a repair cycle feed rate) for repairing the defect. Alternatively, as described above, the system can read predefined repair mode and repair cycle parameters from a lookup table or other repair model based on characteristics of the defect.

[0102] Yet alternatively, the system can: calculate a material removal depth to repair a defect based on a severity and / or other characteristics of the defect; and then implement methods and techniques described above to generate a repair toolpath, calculate a target repair force, and calculate a repair cycle feed rate based on this material removal depth and characteristics of the workpiece.

[0103] In one implementation, in response to the severity score of the defect exceeding a maximum severity score, the system can flag the defect for manual repair. However, in response to the severity score of the defect falling below the maximum severity score, the system can: flag the defect for autonomous repair; implement methods and techniques described above to calculate an offset distance between the defect and a nominal surface of the workpiece adjacent the defect; and calculate a material removal depth to repair the defect based on (e.g., proportional) this offset distance.

[0104] In one example, the system is configured to: autonomously navigate the sanding head over a region of the workpiece containing a defect during a repair cycle to remove material on or around the defect; and then autonomously navigate the sanding head over the entire workpiece during a processing cycle to remove material from theentire workpiece, thereby blending material removal between defective and non-defective regions of the workpiece. In this example, the system can: implement methods and techniques described above to calculate a nominal material removal depth from the workpiece based on the output surface quality selected for the workpiece by the operator; and subtract this nominal material removal depth from the depth of the defect to calculate a target repair removal depth.

[0105] In another example, the system is configured to: autonomously navigate the sanding head over a region of the workpiece containing a defect during a repair cycle to remove material on and around the defect to repair and finish this region of the workpiece; and separately autonomously navigate the sanding head over the workpiece outside of the defective region(s) during a processing cycle to remove material from the remainder of the workpiece. In this example, the system can: implement methods and techniques described above to calculate a nominal material removal depth from the workpiece based on the output surface quality selected for the workpiece by the operator; and add this nominal material removal depth to the depth of the defect to calculate a target repair removal depth.

[0106] Additionally or alternatively, in the foregoing examples, the system can set the target repair removal depth equal to: 8o% of the depth of the defect in order to prevent excess material removal from the workpiece (e.g., for defects below the nominal surface of the workpiece, such as scratches, chips, or gouges); ioo% of the depth of the defect (e.g., for 2.5D defects, such as orange peel; for low- and moderate- defects above the nominal surface of the workpiece); or 120% of the depth of the defect (e.g., for heavy paint sags or runs).

[0107] The system can then implement methods and techniques described above to set parameters for the repair cycle based on this target repair removal depth. More specifically, the system can: retrieve a function that relates contact duration (i.e., a time or rotation count of a sanding disk in contact with a workpiece), applied force (or pressure), sanding disc grit, and material removal depth; and calculates a repair contact duration for the defect based on a nominal target force selected for the workpiece (or other target repair force set for the defect), the sanding disc grit selected for the workpiece, and the target repair removal depth. The system then sets or calculates a combination of pitch offset between legs of a repair toolpath (or “repair stepover distance”) and a repair feed rate for the repair toolpath that yields the repair contact duration. For example, the system can set a repair feed rate and a repair stepover distance - inversely proportional to feed rate - based on feed rate preferences set by the operator.Alternatively, the system can: set a lower repair feed rate and wider repair stepover distance for segments of a repair toolpath within a region of the workpiece characterized by a large radius in which a large proportion of the sanding disk is in contact with the workpiece; and set a higher repair feed rate and narrower repair stepover distance for segments of a repair toolpath intersecting a region of the workpiece characterized by a small radius in which a smaller proportion of the sanding disk is in contact with the workpiece.

[0108] In one variation, the system can set a dynamic feed rate for a repair cycle of a defect in order to achieve greater material removal specifically over the defect and less material removal in adjacent regions of the workpiece. For example, the system can specify a slowest feed rate directly over the defect and a feed rate that increases (e.g., linearly) the distance of the sanding head from the defect (e.g., from a centroid of the defect, from a point on the defect characterize by greatest offset from an adjacent nominal surface of the workpiece). Therefore, during a repair cycle for this defect, the system can: navigate the sanding head along the repair toolpath for the defect: at a minimum repair feed rates in segments of the repair toolpath that fall directly over the defect in order to achieve maximum material removal directly over the defect; and at greater repair feed rates in segments of the repair toolpath that are laterally offset from the defect in order to achieve both minimum material removal at greater distances from the defect and smoothing surface finish blending around the defect.

[0109] The system can therefore set or retrieve a target repair force, a repair stepover distance, and a repair feed rate for the defect.

[0110] In the foregoing implementation, the system can also assign a target repair force - to the defect - that differs from the nominal target force set for the workpiece. For example, the system can: assign a repair force equal to the nominal force for the workpiece to a defect that extends below the nominal surface of the workpiece; and assign a repair force greater than the nominal force for the workpiece to a defect that extends above the nominal surface of the workpiece, such as 1% greater than the nominal force per o.i millimeter that the defect extends above the nominal surface of the workpiece.[01 1 1 ] Therefore, the system can: calculate a target repair force - greater than the nominal target force - for the defect; assign this target repair force to a repair toolpath generated by the system to repair the defect (or to a region of the nominal toolpath extending over the defect); and thus achieve faster material removal from the workpiece around the defect than a nominal surface on the workpiece. Similarly, the system can calculate a repair feed rate - less than a nominal feed rate - for the defect; assign thisrepair feed rate to the repair toolpath generated by the system to repair the defect (or to a region of the nominal toolpath extending over the defect); and thus achieve greater material removal from the workpiece around the defect than the nominal surface on the workpiece.

[0112] However, the system can implement any other method or technique to define repair material removal depth, repair force, repair first device, and / or repair stepover distance, etc. to the defect.1.14. _ Repair Toolpath Generation

[0113] The system then generates a repair toolpath for the region of the workpiece containing the defect. In one implementation, the system: defines a serpentine or boustrophedonic toolpath within this region of the workpiece according to the repair stepover distance set for this workpiece region; and stores this repair toolpath as a set of keypoints, wherein each keypoint represents a vertex or other point on the toolpath, defines a three-dimensional position on the workpiece, includes a vector normal to the workpiece at this three-dimensional position, and is labeled with the target repair force and the repair feed rate set for the defect, as shown in FIGURE 2.

[0114] In one example in which the system is configured to execute separate repair and processing cycles over regions of the workpiece with limited overlap, the system: characterizes a defect indicator - detected in Block S160 - as a scratch repairable via material removal from the workpiece in Block S164 based on image data captured in Block S162; and then generates a repair toolpath defining a boustrophedonic geometry - contained within the corresponding workpiece region and characterized by the repair stepover distance selected for the defect - in Block S166; and assigns a target repair force to the repair toolpath to achieve a target repair removal depth from the workpiece region around the defect. Furthermore, in this example, the system generates a nominal toolpath defining a boustrophedonic geometry contained within a second region of the workpiece - outside of the defect - and characterized by a nominal stepover distance greater than the repair stepover distances; and assigns the nominal target force, similar to (or “approximating”) or less than the repair force, to the nominal toolpath to achieve a nominal material removal depth, greater than target repair removal depth, from the second workpiece region.

[0115] In another example in which the system is configured to execute a repair cycle over a region of the workpiece containing a defect and before or while executing a processing cycle over the entire workpiece, the system can implement similar methodsand techniques: to generate a nominal toolpath (e.g., defining a boustrophedonic geometry) over the entire workpiece, as described above; and to generate a repair toolpath (e.g., defining a similar boustrophedonic geometry with narrower stepover distance) over the region of the workpiece containing the defect.1.15. _ Multiple Defects

[0116] The system can therefore: detect a defect indicator in data captured during the global scan cycle; execute a local scan cycle to capture higher-resolution data depicting the defect indicator in a local scan cycle; verify presence of a defect and derive characteristics of the defect from these higher-resolution scan data; define repair parameters (e.g., repair force, repair stepover distance, repair feed rate, target repair removal depth) based on these characteristics of the defect; and generate a repair toolpath for the defect based on these repair parameters and a local geometry (or “contour”) of the workpiece represented in the virtual model.

[0117] The system can also repeat this process to generate repair parameters and repair toolpaths for other defects on the workpiece, as shown in FIGURES 1 and 2,1.16. _ Repair Cycle

[0118] Block S152 of the first method S100 recites, during a repair cycle, via a set of actuators coupled to the end effector, navigating a sanding head across the first workpiece region according to the repair toolpath in Block S152. Generally, in Block S152, the system can execute methods and techniques described above to: autonomously navigate the sanding head across a region of the workpiece - containing a defect - according to a corresponding repair toolpath; track forces applied by the sanding head to the workpiece; and implement closed-loop controls to maintain this applied force at a target repair force assigned to the repair toolpath by deviating the sanding head from the repair toolpath along vectors normal to the workpiece, as shown in FIGURES 2 and 3.1.16.1 _ Local Scan + Repair Before Nominal Processing

[0119] In one implementation, the system: executes the global scan cycle; detects a set of defect indicators in data captured during the global scan cycle; executes a local scan cycle around each defect indicator; verifies defects in these locations based on higher-resolution scan data captured during these local scan cycles; generates repair parameters and a repair toolpath for each defect identified as repairable via material bythe system; and generates nominal parameters and a nominal toolpath for the entire workpiece.

[0120] In this implementation, the system can also define an order for repair cycles for the defects, such as: in order from shortest distance to greatest distance of corresponding defects to the origin of the system; and according to an order than yields a minimum traversal distance by the system to complete these repair cycles. The system then: autonomously executes a repair cycle for each of these defects, including navigating the sanding head over each defect according to its corresponding repair toolpath; and then executes the processing cycle, including navigating the sanding head over the entire workpiece (i.e., for repair cycles that repair defects to the nominal surface condition of the workpiece before processing) or over regions of the workpiece not processed during the preceding repair cycles (i.e., for repair cycles that repair defects to the target output surface quality specified for the workpiece).1.16.2 _ Local Scan Before Interleaved Repair + Nominal Processing

[0121] In another implementation, the system: executes the global scan cycle; detects a set of defect indicators in data captured during the global scan cycle; executes a local scan cycle around each defect indicator; verifies defects in these locations based on higher-resolution scan data captured during these local scan cycles; generates repair parameters and a repair toolpath for each defect identified as repairable via material by the system; and generates nominal parameters and a nominal toolpath for the entire workpiece.

[0122] The system then initiates the processing cycle according to these nominal processing parameters and the nominal toolpath. Upon approaching a location of a verified defect with assigned repair parameters and repair toolpath, the system: pauses the processing cycle; executes a repair cycle around the defect according to its assigned repair parameters and repair toolpath; and then resumes the processing cycle upon completing the repair cycle.1.16. ,2 _ Nominal Processing with Interleaved Local Scan and Repair

[0123] In another implementation, the system: executes the global scan cycle; detects a set of defect indicators in data captured during the global scan cycle; compiles these global scan data into a virtual model of the workpiece; generates nominal processing parameters and the nominal toolpath spanning the entire workpiece based ona geometry of the workpiece represented in the virtual model; and initiates the processing cycle according to these nominal processing parameters and the nominal toolpath.

[0124] In this implementation, upon approaching a location of a defect indicator while executing the processing cycle, the system: pauses the processing cycle; executes a local scan cycle around the defect indicator; verifies presence and characteristics of the defect based on higher-resolution scan data captured during this local scan cycle; generates repair parameters and a repair toolpath for the defect; executes a repair cycle over the defect according to these repair parameters and the repair toolpath; and then resumes the processing cycle upon completing the repair cycle (or upon verifying absence of a defect in this location based on higher-resolution scan data captured during the local repair cycle).

[0125] For example, the system can: access a first set of images - characterized by a first resolution - captured by the end effector while traversing the global scan path over the workpiece during the global scan cycle in Block Sno; compile the set of images into a virtual model of the workpiece in Block S120; detect a first defect indicator in a first workpiece region of the workpiece based on the first set of images in Block S160; generate a nominal toolpath for the entire workpiece based on a geometry of the workpiece represented in the virtual model in Block S140; and assign a nominal target force to the nominal toolpath in Block S142. Then, during a processing cycle, the system can: access a sequence of force values output by a force sensor coupled to the sanding head in Block S150; navigate the sanding head, coupled to the end effector, across the workpiece according to the nominal toolpath in Block S152; and deviate the sanding head from the nominal toolpath to maintain forces of the sanding head on the workpiece proximal the nominal target force, based on the sequence of force values, in Block S154. Then, in response to the sanding head approaching the first workpiece region containing the first defect indicator, the system can: pause navigation of the sanding head along the nominal toolpath; and navigate the end effector over the first workpiece region to capture a second set of (higher-resolution) images of the first workpiece region during a local scan cycle in Block S162. The system can then: characterize the first defect indicator as a first defect repairable via material removal from the workpiece based on the second set of images in Block S164; generate a repair toolpath for the first defect based on the geometry of the workpiece represented in the virtual model in Block S166; and navigate the sanding head across the first workpiece region according to the repair toolpath to repair the defect down to a nominal-preprocessing condition in Block S152. In response to the sanding head completing the repair toolpath, the system then resumes navigation of the sanding headalong the nominal toolpath - including over the first workpiece region containing the repaired defect - in Block S152.

[0126] In another example, the system can: access a first set of images - characterized by a first resolution - captured by the end effector while traversing the global scan path over the workpiece during the global scan cycle in Block S110; compile the set of images into a virtual model of the workpiece in Block S120; detect a first defect indicator in a first workpiece region of the workpiece based on the first set of images in Block S160; generate a nominal toolpath for the entire workpiece based on a geometry of the workpiece represented in the virtual model in Block S140; assign a nominal target force to the nominal toolpath in Block S142; and initiate and execute a processing cycle according to the nominal toolpath and the nominal target force in Blocks S152 and S154. Then, in response to the sanding head approaching the first workpiece region containing the first defect indicator, the system can: pause navigation of the sanding head along the nominal toolpath; and navigate the end effector over the first workpiece region to capture a second set of (higher-resolution) images of the first workpiece region during a local scan cycle in Block S162. The system can then: characterize the first defect indicator as a first defect reparable via material removal from the workpiece based on the second set of images in Block S164; define repair parameters for the defect; and revise the nominal toolpath and the nominal target force proximal the defect for repair of the defect, blending the repair with the first workpiece region, and finishing the first workpiece region to the target output surface quality selected for the workpiece. For example, the system can: define a material removal depth gradient for the workpiece based on a target material removal depth set for the workpiece and a target repair removal depth set for the defect; define nominal processing parameter (e.g., nominal target force, nominal stepover distance, nominal feed rate) gradients according to the material removal depth gradient; and adjust the nominal toolpath to achieve this material removal depth gradient. The system can then resume the nominal toolpath and nominal parameters - now revised according to the confirmed defect - to repair the defect, finish the first workpiece region to the target output surface quality, and process remaining regions of the workpiece. The system can repeat this in response to approaching each additional defect indicator detected in Block S160.1.17. _ Notification: Manual Defect Repair

[0127] As described above and shown in FIGURE 2, in response to verifying presence of a defect and characterizing the defect as either not repairable via materialremoval (e.g., a crack, a void) or too severe for autonomous repair by the system (e.g., a paint curtain), the system can: generate a notification to manually repair the defect; populate the notification with characteristics of the defect (e.g., defect type, location on the workpiece, severity, photographic images of the defect); and serve the notification to the operator. The system can also: annotate the virtual model to indicate the location of the defect; and present this annotated virtual model to the operator, such as by rendering the annotated virtual model on a display adjacent the system.

[0128] In this implementation, the system can also revise the nominal toolpath to avoid the workpiece region containing this defect.1.18. _ Repair Record

[0129] In a similar implementation shown in FIGURE 2, the system can generate a record of verified defects, characteristics of these defects (defect types, locations on the workpiece, severities, photographic images of defects), and actions executed by the system to repair these detects (e.g., target and actual repair parameters, target and actual repair toolpaths).

[0130] For example, the system can annotate the virtual model with a type and location of a defect verified in Block S164, repair parameters and repair toolpaths defined in Block S166, and actual force and sanding head path executed by the system in Block S152 to repair the defect. The system can repeat this process for each verified defect and store this annotated virtual model as a record of defect repairs completed on the workpiece by the system.

[0131] However, the system can implement any other method or technique to record characteristics of defect repairs autonomously executed by the system when processing the workpiece.2.1. _ Second Method

[0132] As shown in FIGURES 6, 7 and 8, a second method S200 for autonomously processing a workpiece includes, during a processing cycle: navigating a sanding head across a first workpiece region of a workpiece according to a first toolpath in Block S252; and, based on a first sequence of force values output by a force sensor coupled to the sanding head, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece region proximal a first target force in Block S254. The second method S200 also includes: detecting a first sequence of positions of the sanding head traversing the workpiece region in Block S260; interpreting a first surface contourof the first workpiece region based on the first sequence of positions in Block S270; detecting a first difference between the first surface contour and a first target surface, corresponding to the first workpiece region, defined in a target model of the workpiece in Block S272; generating a second toolpath for the first workpiece region based on the difference in Block S240; and, during a correction cycle, navigating the sanding head across the first workpiece region according to the second toolpath to reduce the difference in Block S252.

[0133] One variation of the second method S200 includes: accessing a target model representing target dimensions of surfaces of a workpiece in Block S202; generating a first toolpath for a first workpiece region of the workpiece based on a geometry of the workpiece in Block S240; and assigning a first target force to the first toolpath in Block S242. This variation of the second method S200 also includes, during a first processing cycle: accessing a first sequence of force values output by a force sensor coupled to a sanding head arranged on an end effector in Block S250; via a set of actuators coupled to the end effector, a) navigating the sanding head across the first workpiece region according to the first toolpath in Block S252 and b) based on the first sequence of force values, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the first workpiece region proximal the first target force in Block S254; and detecting a first sequence of positions of the sanding head traversing the first workpiece region in Block S260. This variation of the second method S200 further includes: interpreting a first surface contour in the first workpiece region based on the first sequence of positions in Block S270; detecting a first difference between the first surface contour and a first target surface, corresponding to the first surface contour, defined in the target model in Block S272; generating a second toolpath for the first workpiece region based on the first difference in Block S240; and, during a correction cycle, navigating the sanding head across the first workpiece region according to the second toolpath via the set of actuators in Block S252.2.1.1 _ Variation: Correction Preceding Finishing

[0134] One variation of the second method S200 shown in FIGURE 9 includes: accessing a target model representing target dimensions of surfaces of a workpiece in Block S202; defining a set of probe locations on the workpiece in Block S290; via a set of actuators, navigating an end effector to locate a reference point in contact with the set of probe locations on the workpiece in Block S292; detecting a first sequence of positions of the reference point in contact with the workpiece at the set of probe locations in BlockS260; interpreting a first surface contour of the workpiece within a first workpiece region of the workpiece based on the first sequence of positions in Block S270; and detecting a first difference between the first surface contour and a first target surface, corresponding to the first surface contour, defined in the target model in Block S272.

[0135] This variation of the second method S200 also includes, in response to the first difference exceeding a threshold difference: generating a first toolpath spanning the first workpiece region in Block S240; and, during a correction cycle, navigating a sanding head, arranged on the end effector, across the first workpiece region according to the first toolpath to reduce the first difference by removing material from the first workpiece region via the set of actuators in Block S252.

[0136] This variation of the second method S200 further includes: generating a second toolpath spanning the first workpiece region and a second workpiece region in Block S240; and assigning a target force to the second toolpath in Block S242. This variation of the second method S200 also includes, during a processing cycle: accessing a sequence of force values output by a force sensor coupled to the sanding head in Block S250; via the set of actuators, a) navigating the sanding head across the first workpiece region and the second workpiece region according to the second toolpath in Block S252; and, based on the sequence of force values, deviating the sanding head from the second toolpath to maintain forces of the sanding head on the workpiece proximal the first target force and to finish the first workpiece region and the second workpiece region to a target surface finish in Block S254.2.2. _ Applications

[0002] Generally, an autonomous scanning and sanding system (hereinafter the “system”) can execute Blocks of the second method S200: to access a high-resolution representation of target final dimensions and contours of a workpiece (or a “target model”), such as a computer-aided-drafting model of the workpiece annotated with geometric and dimensional tolerances of individual surface contours and between surfaces contours of the workpiece; to traverse a sanding head across the workpiece during a nominal processing and finishing operation; to interpret an actual surface contour of the workpiece based on positions of the sanding head during this nominal processing and finishing operation; to detect differences between this actual surface contour of the workpiece and a corresponding target surface defined in the target model (i.e., excess material on the actual surface contour versus the geometry and dimensions defined on the corresponding target surface in the target model); and to selectivelytraverse the sanding head across the workpiece during a secondary material removal operation to remove material from this surface contour and reduce this difference, such as to less than a dimensional tolerance assigned to the corresponding target surface in the target model.

[0003] More specifically, the system can execute Blocks of the second method S200 to traverse a sanding head across the workpiece to both: grind, sand, cut, buff, or polish, etc. surfaces on a workpiece to a common surface finish; and remove material from select regions on the workpiece to increase geometric and dimensional accuracy of the workpiece, such as defined in a computer-aided-drafting model of the workpiece.

[0004] The second method S200 is described herein as executed by the system to both: grind, sand, cut, buff, or polish, etc. large (e.g., complete) surface of a workpiece in order to bring this large surface to a common, consistent surface finish; and to selectively remove additional material from smaller or discrete regions on the workpiece in order to bring the regions of the workpiece into dimensional and / or geometric conformity. Additionally or alternatively, the system can execute Blocks of the second method S200 solely to remove material from discrete regions on the workpiece in order to bring the regions of the workpiece into dimensional and / or geometric conformity.2.2.1 _ Workpiece Scan

[0005] In one implementation, the system can execute Blocks of the second method S200: to autonomously capture scan data of a workpiece occupying a work cell during a (rapid) contactless scan cycle; to compile these scan data into a virtual three-dimensional model exhibiting relatively low spatial or dimensional accuracy; to generate a toolpath spanning surfaces represented in the virtual model and defining a sequence of nominal positions and orientations traversable by a sanding head to sand (hereinafter “process”) the workpiece; and to assign a target force for application of the sanding head on the workpiece.

[0006] The system further executes Blocks of the second method S200: to track forces applied by the sanding head to the workpiece; to advance and retract the sanding head normal to the workpiece while navigating the sanding head along the toolpath to maintain forces applied by the sanding head to the workpiece at the target force during a nominal processing and finishing cycle; and to capture a series of coordinate measurements (e.g., three-dimensional positions) of a reference point (or a set of reference points, a surface, an area) on the sanding head in contact with the workpiece during this nominal processing and finishing cycle.

[0007] These coordinate measurements may thus represent true three- dimensional positions of points on real surfaces of the workpiece with greater dimensional accuracy than the initial virtual model of the workpiece generated from noncontact scan data. Accordingly, the system then: transforms (or “deforms”) the virtual model of the workpiece into alignment with this sequence of coordinate measurements, thereby reducing increasing geometric and dimensional accuracy of the virtual model.

[0008] The system further: accesses a target model defining target final dimensions and contours of the workpiece (e.g., a CAD or other virtual model); aligns the target and virtual models; characterizes geometric or dimensional differences between corresponding surface contours represented in the target and virtual models; extracts corresponding geometric and / or dimensional tolerances for these surface contours from the target model; identifies select surface contours on the workpiece that contain excess material relative to geometries and / or dimensions defined in the target model and that are thus repairable via material removal; and generates secondary toolpaths that, when executed by the sanding head, remove excess material from these select surface contours to improve geometric and dimensional accuracy of the workpiece, such as bringing the workpiece into conformity with geometric and dimensional tolerances defined in the target model.

[0009] The system can then implement methods and techniques described above to: autonomously execute these secondary toolpaths during a correction cycle; capture additional coordinate measurements of the reference point on the sanding head in contact with the workpiece during this correction cycle; again refine the virtual model of the workpiece based on these additional coordinate measurements; and store this modified virtual model as a digital three-dimensional record (or “digital twin”) of the workpiece.2.2.1.1 _ Sparse Data Fusion into High-accuracy Digital Twin

[0137] Generally, the system can: rapidly scan the workpiece during the scan cycle to capture non-contact optical scan data representing the workpiece; transform these non-contact scan data into an initial virtual model representing the workpiece in a virtual three-dimensional space; and generate toolpaths - for traversing the sanding head across the workpiece - based on a surface geometry represented in this initial virtual model. The system can then: autonomously navigate the sanding head across the workpiece according to these toolpaths; implement closed-loop controls to maintain force applied by the sanding head to the workpiece at a target force by deviating the sanding head from the toolpath normal to the adjacent surface represented in this initial virtual model; andtrack three-dimensional positions of contact between the sanding head and the workpiece while traversing the sanding head across the workpiece. The system can then: project these three-dimensional positions of contact between the sanding pad and the workpiece into the virtual three-dimensional space; and deform (or “transform”) the virtual model into alignment with these three-dimensional positions of contact, thereby refining the virtual model to reflect contact-based coordinate measurements captured by the system while processing (or “sanding”) the workpiece.

[0138] More specifically, the system can refine the virtual model based on physical contact between the sanding head and the workpiece collected while autonomously processing (e.g., sanding) the workpiece during the processing cycle.

[0139] For example, the system can compile scan data collected during the scan cycle into a three-dimensional mesh. For each contact point - in a sequence of contact points between the sanding head and the workpiece - captured by the system during the subsequent processing cycle, the system can: select a target vertex in the mesh nearest the contact point; shift the target vertex - normal to the mesh at the vertex - to a new position nearest the contact point; and shift nearby vertices in the mesh to minimize changes in tangents on the surface and / or local radii at the target vertex. In a similar example, for each contact point in the sequence of contact points between the sanding head and the workpiece thus captured by the system, the system can: isolate a location on the toolpath - defined along the surface of the virtual model - corresponding to this contact point; insert a new vertex intersecting a surface defined by the mesh at this toolpath location; shift the new vertex to align with the contact point; and shift nearby vertices in the mesh to minimize changes in tangents on the surface and / or local radii at the new vertex.

[0140] In another example, the system can: generate a virtual model characterized by an initial dimensional accuracy (e.g., characterized by a tolerance of + / - 0.35”) but representing the entire workpiece based on non-contact optical data captured by the system during a scan cycle; generate a nominal toolpath for the workpiece based on the virtual model; navigate the sanding head across the workpiece according to a real toolpath that may approximate the nominal toolpath but that maintains a target force between the sanding head and the workpiece, thus maintaining consistent material removal and surface finish across the workpiece; and capture sparse three-dimensional positions of a reference point on the sanding head in contact with the workpiece while autonomously sanding the workpiece. The system can then fuse the virtual model and these sparse three- dimensional positions of the reference point in contact with the workpiece to generate adigital three-dimensional record that represents the workpiece with greater dimensional accuracy (e.g., within a tolerance of + / - 0.025”).

[0141] The system can further: leverage this refined virtual model to detect geometric and dimensional differences between the actual surface contours on the workpiece and corresponding target surfaces represented in a target model of the workpiece; and generate secondary toolpaths executable by the sanding head to selectively remove additional material from the workpiece to reduce these differences and increase geometric and dimensional accuracy of the workpiece.

[0142] The system can further repeat this foregoing process: to execute these secondary toolpaths during a correction cycle; to collect additional coordinate measurement data during the correction cycle; to further refine the virtual model of the workpiece based on these additional coordinate measurement data; and to store this refined virtual model as a digital twin of the workpiece upon completion of the nominal processing and finishing operation and correction cycle.2.2.2.2 _ Contactless High-accuracy Digital Twin

[0143] Additionally or alternatively, the system can: traverse an optical scanner (e.g., a two- or three-dimensional depth sensor) across the workpiece to capture high- resolution depth images depicting the workpiece during the scan cycle; track three- dimensional positions of an optical fiducial on the optical scanner - such as via a constellation of (e.g., four) time-of-flight optical sensors arranged about the system - while traversing the optical sensor across the workpiece during the scan cycle; and stitch these depth images into a high-resolution three-dimensional virtual model of the workpiece based on three-dimensional positions of the optical scanner when these depth images were captured.

[0144] (During a subsequent processing cycle, the system can implement similar methods and techniques to: traverse a sanding head across the workpiece to sand, buff, polish, or otherwise remove material from the workpiece; track three-dimensional positions of an optical fiducial on the sanding head - such as via the constellation of time- of-flight optical sensors arranged about the system - while traversing the sanding head across the workpiece during the processing cycle; track three-dimensional positions of the reference point on a sanding pad on the sanding head based on a known offset between the reference point and the optical fiducial on the sanding head.)2.2.2..2 Probe Locations

[0145] In another implementation, the system: defines a set of probe locations across the workpiece, such as over the entire workpiece at uniform density or preferentially or exclusively in target surfaces annotated with geometric and / or dimensional tolerances in the target model of the workpiece; drives the sanding head (e.g., a reference point on a sanding pad on the sanding head or a separate touch probe arranged on the sanding head or other end effector) into contact with the workpiece at these probe locations; records coordinate measurements in response to contact between the sanding head and the workpiece at these probe locations; and interpolates actual surface contours of the workpiece based on these coordinate measurements. (Alternatively, the system can refine the virtual model described above based on these coordinate measurements.)

[0146] The system can then implement methods and techniques described above to: detect geometric and dimensional differences between actual surface contours on the workpiece and corresponding target surfaces represented in the target model of the workpiece; generate secondary toolpaths executable by the sanding head to selectively remove additional material from the workpiece to reduce these differences and increase geometric and dimensional accuracy of the workpiece; and execute these secondary toolpaths during a correction cycle to selectively remove material from the workpiece and reduce these differences.2. . _ System

[0147] In one implementation described in U.S. Patent Application No. 18 / 111,470 and shown in FIGURE 6, the system includes: a robotic arm arranged in or adjacent a work zone and that includes a set of articulatable joints interposed between a series of arm segments; an end effector supported on a distal end of the robotic arm; a sanding head arranged on or integrated into the end effector and configured to actuate (e.g., rotate) a sanding pad; an optical sensor (e.g., a set of depth sensors and / or color cameras) arranged on or integrated into the end effector and configured to capture optical images (e.g., depth maps, photographic color images) of a workpiece; a force sensor (e.g., a onedimensional axial force sensor) configured to output a signal representing a force applied by the sanding head to a workpiece normal to the sanding head; a set of position sensors configured to output signals representing (or assemblable into) a three-dimensional position of the end effector; a display configured to render a user interface accessible by an operator; and / or a controller configured to execute Blocks of the second method S200.

[0148] In this implementation, the system can also include a conveyor configured to traverse the robotic arm longitudinally along the work zone, such as to reach and process an elongated part defining a high length-to-width ratio (e.g., a high aspect ratio), such as a boat hull or aircraft wing.

[0149] In another implementation, the system includes a multi-axis (e.g., five-axis) gantry configured to locate and articulate the end effector, sanding head, and optical sensor(s) across the work zone.

[0150] In yet another implementation shown in FIGURE io, the system includes: a mobile platform, such as including a wheeled or tracked chassis; a robotic arm arranged on the mobile platform; a sanding head (e.g., an end effector) arranged on a distal end of the robotic arm; and a navigation system. For example, the navigation system can include: a set of optical color and / or depth sensors arranged on the mobile platform and configured to capture images of a scene around the system; and a controller configured to autonomously navigate the mobile platform around a workpiece based on objects detected in images captured by these optical color and / or depth sensors.

[0151] However, the system can include or define any other element or structure.2. ,2.1 _ Three-dimensional Reference Point Tracking

[0152] In one variation shown in FIGURE io, the system includes an optical positioning system, such as including a set of fixed positions sensors arranged above the robotic arm and configured to output signals corresponding to positions of the robotic arm relative to the sensors. Accordingly, the system (e.g., the controller) can calculate (e.g., trilaterate) and track three-dimensional positions of the robotic arm, the sanding head, and / or the reference point on the sanding head during a processing cycle based on signals received from these fixed position sensors.

[0153] In one implementation, the system further includes: a set of optical fiducials arranged on the robotic arm (e.g., a constellation of optical reflectors arranged on orthogonal planes on the sanding head); a set of optical emitters (e.g., laser diodes) arranged at fixed locations about and facing the robotic arm and configured to project light (e.g., columnated infrared light) toward the robotic arm; and a set of (e.g., four or more) optical detectors arranged at fixed locations about and facing the robotic arm (e.g., each paired with an optical emitter) and configured to detect characteristics (e.g., time of flight, phase) of light reflected by the optical fiducials arranged on the robotic arm. Accordingly, the system can: collect times of flight and phases of concurrent light signalsrecorded by these optical detectors; derive distances from the optical detectors to each optical fiducial on the sanding head at this time based on these times of flight and phases and known offsets between the optical emitters and detectors; trilaterate the three- dimensional position of the sanding head relative to the fixed positions of the optical detectors (e.g., within a coordinate system defined relative to these optical detectors) at this time based on these distances; and derive the position of the reference point on the sanding head at this time based on a known offset between the optical fiducials on the sanding head and the reference point on the sanding head. The system can repeat the process during a processing cycle, such as at a rate of 20Hz.

[0154] Therefore, in this implementation, the system can detect and track positions of the robotic arm, the sanding head, and / or a reference point on the sanding head by: accessing a first series of one-dimensional distances (or time of flight and / or phase representations thereof) from a first optical detector, located at a first fixed position facing the robotic arm, to an optical fiducial located on the sanding head; accessing a second series of one-dimensional distances (or time of flight and / or phase representations thereof) from a second optical detector, located at a second fixed position facing the robotic arm, to the optical fiducial located on the sanding head; and deriving a sequence of three-dimensional locations and orientations of the sanding head based on a) the first series of one-dimensional distances, b) the second series of one-dimensional distances, c) the first fixed position of the first optical detector, and d) the second fixed position of the second optical detector.

[0155] In this implementation, the system can similarly include a set of optical fiducials arranged on the workpiece. Accordingly, the system can implement similar methods and techniques to detect and track the position of the workpiece relative to the optical detectors - and thus track the position of the workpiece relative to the robotic arm - such as to detect and accommodate for changes in position of the workpiece during a processing cycle.

[0156] However, in this variation, the system: can include any other type or arrangement of external one-dimensional position or distance sensor; can track positions of the robotic arm, sanding head, or reference point on the sanding head relative to these individual external sensors based on any other type of data output by these sensors; and can implement any other method or technique to combine distances from these sensors into three-dimensional positions of the robotic arm, sanding head, and / or reference point relative to these sensors.

[0157] Additionally or alternatively, in this variation, the system: can include a constellation of one-, two-, or three-dimensional LIDAR sensors, (laser) time-of-flight distance sensors, stereoscopic cameras, depth sensors, and / or color cameras, etc. facing the robotic arm; can access one-dimensional distances or two- or three-dimensional images output by these sensors; and can derive and track three-dimensional positions of the robotic arm, the sanding head, and / or a reference point on the sanding head or sanding pad based on these distances or images. For example, the system can implement trilateration techniques to fuse one-, two-, or three-dimensional distance or depth image data into a high-resolution three-dimensional position of: a first reference point on an optical sensor arranged on the robotic arm during a scan cycle; and a second reference point on a sanding head arranged on the robotic arm during a processing cycle.

[0158] However, the system can implement any other method or technique to track three-dimensional positions of the robotic arm, sanding head, and / or reference point during a processing cycle.2. ,2.2 _ Second Robotic System

[0159] In one variation shown in FIGURE io, the system includes a second robotic system (e.g., a second robotic arm, a robotic gantry) - including an optical scanner - configured to capture images (e.g., depth images) of the workpiece during a scan cycle. In particular, in this implementation, the second robotic system can autonomously capture images of the workpiece, and the optical positioning system can capture positions of the second robotic system (e.g., an optical fiducial arranged on the optical sensor on the second robotic system) during a scan cycle, as described above. The system can the implement methods and techniques described herein to assemble these images into a virtual model of the workpiece and to define a toolpath and processing parameters for the workpiece based on this virtual model. The (first) robotic system described herein can then autonomously traverse this toolpath according to these processing parameters during a processing cycle, as described herein.

[0160] However, the system can include any other type, quantity or arrangement of robotic systems and can manipulate these robotic systems in any other way to autonomously execute scan, processing, and correction cycles at a workpiece.2.4. _ Workpiece Loading and Processing Limits

[0161] In one variation, the system retrieves processing limits and / or other parameters for autonomously sanding the workpiece.

[0162] In particular, in preparation for autonomously processing (e.g., sanding) a workpiece by the system, an operator locates the workpiece in the work zone adjacent the system. For example, the operator may: load the workpiece onto a support rig (e.g., a wheeled table) and install intermittent clamps on the workpiece to retain the workpiece on the support rig; place the support rig and workpiece into the work zone; and lock wheels of the support rig.

[0163] The system can then prompt the operator to supply processing limits for the workpiece, such as including: a maximum applied force (i.e., a maximum force applied by the sanding head to any region of the workpiece); and / or a maximum applied pressure (e.g., a maximum force applied by the sanding head to any unit area of the workpiece). For example, the operator can supply these processing limits based on known strengths and rigidity characteristics of the workpiece.

[0164] Additionally or alternatively, the system can retrieve these processing limits from a predefined processing profile. For example, the system can select a predefined processing profile stored in a processing profile database based on: a material of the workpiece (e.g., fiberglass, steel, aluminum) and / or a nominal wall thickness of the workpiece selected by the operator; or a length, aspect ratio, and / or a geometry profile of the workpiece (e.g., concave with high aspect ratio, convex with high aspect ratio, concave with low aspect ratio, convex with low aspect ratio) entered by the operator or derived from a scan of the workpiece completed by the system. The system can then load processing limits extracted from this processing profile.

[0165] However, the system can retrieve or load processing limits for the workpiece based on any other data supplied by the operator or collected autonomously by the system during a scan cycle as described below.2.5. _ Target Model

[0166] Block S202 of the second method S200 recites accessing a target model representing target dimensions of surfaces of a workpiece.

[0167] Generally, in Block S202, the system accesses (or “ingests,” loads) a target model containing a three-dimensional representation of the workpiece and containing or annotated with dimensions, geometric callouts, and / or dimensional tolerances specified for individual surface, edges, and / or vertices on the workpiece upon completion of a processing cycle on the workpiece. More specifically, the system can access a target model containing geometric and dimensional specifications for the workpiece followingcompletion of an upcoming processing cycle. The system then executes subsequent Blocks of the second method S200 to traverse the sanding head across select regions of the workpiece to remove material and to bring the workpiece in conformity with these geometric and dimensional specifications for the workpiece defined in the target model.

[0168] In one implementation, the system accesses a target model containing a three-dimensional computer-aided drafting model representing target dimensions of surfaces of the workpiece. For example, the target model can include: a solid model defining a volume between virtual internal and external surfaces of the workpiece; or a mesh defining target interior and / or exterior surfaces of the workpiece. In this example, target model can also include geometric and dimensional callouts, such as tagged to or annotated on individual surfaces, edges, and / or vertices directly within the target model.

[0169] In one implementation, an operator can upload the toolpath to the system manually in preparation for processing the workpiece. Alternatively, the system can automatically retrieve the target model, such as by: detecting an identifier on the workpiece during a scan cycle executed by the system once the workpiece is loaded into a work zone adjacent the robotic arm; locating the target model, associated with this identifier, in the database; and then loading a local copy of this target model from the database.

[0170] However, the system can access a virtual model and geometric and dimensional specifications for the workpiece in any other format, at any other time, and responsive to any other trigger or input in Block S202.2.6. _ Scan Cycle

[0171] One variation of the second method S200 includes Blocks S212, S210, and S220, which recite: navigating an end effector over a workpiece; accessing a set of images captured by an optical sensor arranged on the end effector while traversing the workpiece; and compiling the set of images into a virtual model representing unloaded surfaces of the workpiece. Generally, in Blocks S212, S210, and S220, the system can implement methods and techniques described in U.S. Patent Application No. 18 / 111,470 to: autonomously navigate an optical sensor (e.g., a depth sensor and / or a color camera) over the workpiece; capture optical images (e.g., depth maps, photographic color images) of the workpiece; and assemble these optical images into a virtual three-dimensional model that represents surfaces of the workpiece within a wide dimensional accuracy (e.g., + / - 0.15”), as shown in FIGURES 6 and 9.

[0172] For example, after the operator loads the workpiece into the work zone and confirms processing limits for the workpiece, the system can initiate a scan cycle. During the scan cycle, the system can: navigate the optical sensor - located on the end effector - along the scan path over and offset above the workpiece; monitor a distance between the end effector and the workpiece based on depth data collected by the optical sensor; and implement closed-loop controls to maintain a target offset distance between the optical sensor and the workpiece (e.g., 20”, 50 centimeters). In this example, for a workpiece defining an elongated geometry including a long axis located approximately parallel to a longitudinal axis of the work zone, the system can actuate a conveyor supporting the robotic arm to traverse the robotic arm along the longitudinal axis of the work zone while rastering the end effector and the optical sensor laterally across the work zone to capture a sequence of optical images representing all surfaces of the workpiece accessible by a sanding head on the end effector.

[0173] The system can thus capture scan data - such as color photographic images, stereoscopic images, depth maps, and / or LIDAR images - from a set of optical sensors arranged on the end effector while traversing the end effector across (e.g., over and not in contact with) the workpiece. For example, the system can capture depth maps at a rate of 2 Hz while traversing the end effector across the workpiece at a rate of three feet per second at a target offset distance of three feet between the end effector and the workpiece, which corresponds to a nominal sensor field of view of three feet by three feet and thus yields approximately 50% overlap between consecutive depth maps captured by the system during the scan cycle.

[0174] The system then compiles these optical images into a virtual three- dimensional model of the workpiece as described in U.S. Patent Application No. 18 / 111,470, such as by implementing structure-from-motion techniques or by fusing these optical images into the virtual model based on poses of the robotic arm when these optical images were captured. For example, the system can compile this set of optical images into a three-dimensional mesh within a virtual three-dimensional space.

[0175] However, the system can implement any other methods or techniques to navigate the end effector and optical sensor over the workpiece, to collect optical images of the workpiece, and to generate a virtual three-dimensional model of the workpiece based on these optical images.2 A Target Force Parameters

[0176] Block S242 of the second method S200 recites: assigning a first target force to the first workpiece region. Generally, in Block S242, the system assigns target forces to workpiece regions of the workpiece, such as: based on geometries (e.g., concave and convex contours, profiles) in these regions of the workpiece; and / or based on a material or part type of the workpiece.

[0177] In one implementation, the system retrieves a single target force from the predefined processing profile described above and assigns this target force to the entire workpiece, as shown in FIGURE 6.

[0178] In another implementation, the system defines boundaries between contiguous regions of the workpiece exhibiting similar contours, such as between contiguous concave, convex, and approximately flat regions of the workpiece spanning more than a minimum surface area (e.g., four square feet). The system then assigns target forces to each region, such as: highest forces in concave regions that may be least susceptible to plastic deformation due to high force application by the sanding head; moderate forces in flat regions that may more susceptible to plastic deformation due to force application by the sanding head; lowest forces in convex regions that may be most susceptible to plastic deformation due to high force application by the sanding head; and / or force magnitudes within a region proportional to the smallest radius within the region. The system can also annotate these regions and corresponding target forces in the virtual model of the workpiece.

[0179] Additionally or alternatively, the system can: access or retrieve a compliance characteristic of a compliant backing arranged on the sanding head and supporting a sanding pad; and calculate (or adjust) a target force for a region of the workpiece proportional to this compliance characteristic. Thus, because a sanding head configured with a more compliant (i.e., less stiff) backing may distribute an applied force over a wider area of the workpiece in contact with the sanding pad, the system can assign a higher target force to each region of the workpiece.2.7.1 _ Workpiece Segmentation

[0180] In one variation, the system segments the workpiece into workpiece regions, such as based on: geometries of the workpiece represented in the virtual model; dimensional tolerance width; and / or geometry specification or tolerance width. In another implementation, the system segments the workpiece by discrete surface contour, such as defined by edges or by geometric or dimensional callouts in the target model. The system can then define a toolpath and assign a target force within each workpiece region.

[0181] For example, the system can: define a first workpiece region containing a contiguous convex surface; define a second workpiece region containing a contiguous concave surface; and define a third workpiece region containing a contiguous surface approximating a planar geometry (e.g., defining a large effective radius); etc. In another example, the system can: define a first contiguous workpiece region characterized by high detected, predicted, or annotated stiffness; define a second contiguous workpiece region characterized by moderate detected, predicted, or annotated stiffness; and define a third contiguous workpiece region characterized by low detected, predicted, or annotated stiffness; etc.

[0182] However, the system can segment the workpiece in any other way and according to any other workpiece characteristics.2.8. _ Tool Path Generation

[0183] The system can further implement methods and techniques described in U.S. Patent Application No. 18 / 111,470 to define a toolpath within each region of the workpiece.

[0184] In one implementation shown in FIGURE 6, the system sets a first feed rate for the first region proportional to the target force assigned to the first region. The system also sets a first stepover distance between segments of a first toolpath for a first region of the workpiece: based on (e.g., proportional to) the target force assigned to this region of the workpiece; and / or proportional to a minimum radius within the first region of the workpiece. The system then: defines a serpentine or boustrophedonic toolpath within the first region of the workpiece according to the nominal stepover distance; and stores this first toolpath as a first set of keypoints, wherein each keypoint represents a vertex or other point on the toolpath, defines a three-dimensional position on the workpiece, includes a vector normal to the workpiece at this three-dimensional position, and is labeled with the target force and the feed rate set for the first region. More specifically, the system can project the first toolpath onto the first region of the workpiece represented in the virtual model, which represents the workpiece in unloaded form. The system can then extract a three-dimensional position and normal vector of each vertex or other point on the first toolpath from the virtual model. Accordingly, the system can store the first toolpath as a first ordered sequence of keypoints: located on a first unloaded surface of the workpiece stored in (i.e., represented by) the virtual model; and contained within the first workpiece region.

[0185] In one variation, the system can iteratively adjust this first toolpath based on local radii of the workpiece along segments of the first toolpath. Additionally or alternatively, the system can adjust target forces assigned to segments of the first toolpath: proportional to local radii of convex subregions of the workpiece adjacent these toolpath segments; and inversely proportional to radii of concave subregions of the workpiece adjacent these toolpath segments. Accordingly, the system can set a force greater than the nominal target force within a concave subregion of the workpiece and a target force less than the nominal target force within a convex subregion of the workpiece.

[0186] The system can repeat this process for each other region of the workpiece.

[0187] Alternatively, the system can implement the foregoing methods and techniques to generate a single continuous toolpath spanning the entire workpiece (or an entire surface of the workpiece selected for autonomous processing by the system).2.Q. _ Processing Cycle

[0010] Block S250 of the second method S200 recites accessing a first sequence of force values output by a force sensor coupled to a sanding head arranged on the end effector. Blocks S252 and S254 of the second method S200 recite, via a set of actuators coupled to the end effector: navigating the sanding head across the first workpiece region according to the first toolpath; and, based on the first sequence of force values, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the first workpiece region proximal the first target force.

[0188] Generally, Blocks S250, S252, and S254 of the system can implement methods and techniques described in U.S. Patent Application No. 18 / 111,470 to autonomously navigate the sanding head along a toolpath (e.g., a sequence of keypoints) defined within a region of the workpiece and to maintain a target normal force between the sanding head and the workpiece by selectively moving the sanding head into and away from the workpiece normal to the surface of the workpiece represented in the virtual model.

[0189] The system also implements closed-loop controls to maintain a target force between the sanding head and the workpiece within each workpiece region - based on force values read from the force sensor integrated into the sanding head - by driving the sanding head toward and away from the workpiece along vectors normal to the workpiece, such as represented in keypoints of these toolpaths or extracted from the virtual model during the processing cycle. For example, for a first keypoint in the first ordered sequenceof keypoints, the system can drive the set of actuators to: locate the sanding head at a first three-dimensional position intersecting the first keypoint; align an axis of the sanding head to a first vector contained in the first keypoint; and drive the sanding head, coaxial with the first vector, toward the workpiece to match force values, in a sequence of force values read from the force sensor in the sanding head, to a first target force assigned to a first toolpath containing the first keypoint. The system can then drive the set of actuators to interpolate a three-dimensional path and sanding head orientation from the first keypoint to the second keypoint while implementing closed-loop controls to apply the sanding head to the workpiece with the first target force. The system can repeat this process for each other keypoint defined along the first toolpath and then along subsequent toolpaths defined for other regions of the workpiece.

[0190] In a similar implementation, in Block S240, the system defines a first ordered sequence of keypoints located on the virtual model. For each keypoint in the first ordered sequence of keypoints, the system: calculates a vector normal to the virtual model at a location of the keypoint on the virtual model; and stores the vector in the keypoint. The system then stores the first ordered sequence of keypoints as the first toolpath. Then, for a first keypoint in the first ordered sequence of keypoints, the system: locates the sanding head at a first position intersecting the first keypoint in Block S252; aligns an axis of the sanding head to a first vector contained in the first keypoint; and drives the sanding head, coaxial with the first vector, toward the workpiece to match force values, in the first sequence of force values read from the force sensor, to the first target force in Block S254.2.Q.1 _ Contact Position Derivation

[0191] Block S260 of the second method S200 recites tracking a first sequence of positions of a reference point on the sanding head traversing the first workpiece region. Generally, in Block S260, the system tracks three-dimensional positions of a reference point on the sanding head in contact with the workpiece in real space (hereinafter a “contact point”).

[0192] In one implementation, the system derives a three-dimensional position of the end effector - while occupying a keypoint in the toolpath - based on: positions of each joint or actuator in the robotic arm; the position of the conveyor supporting the robotic arm; and a fixed or derived offset between the end effector and a reference point on a sanding pad supported on the sanding head.

[0193] In another implementation, the system includes an optical positioning system - such as including a constellation of optical emitters and detectors facing therobotic arm as described above - and tracks the position of the robotic arm, the sanding head, and / or the reference position on the sanding head in particular during the processing cycle via the optical positioning system. For example, the system can derive a three-dimensional position of the end effector - while occupying a keypoint in the toolpath - by: accessing a one-dimensional distance (or time of flight and / or phase representation thereof) from a first optical detector, located at a first fixed position facing the robotic arm, to an optical fiducial located on the sanding head; accessing a onedimensional distance (or time of flight and / or phase representation thereof) from a second optical detector, located at a second fixed position facing the robotic arm, to the optical fiducial located on the sanding head; accessing a one-dimensional distance (or time of flight and / or phase representation thereof) from a third optical detector, located at a third fixed position facing the robotic arm, to the optical fiducial located on the sanding head; accessing a one-dimensional distance (or time of flight and / or phase representation thereof) from a fourth optical detector, located at a fourth fixed position facing the robotic arm, to the optical fiducial located on the sanding head; and deriving a three-dimensional location and orientation of the sanding head based on the first, second, third, and fourth one-dimensional distances and the first, second, third, and fourth fixed positions of these sensors.

[0194] In one implementation shown in FIGURE 7, the system generates the toolpath containing a sequence of keypoints, each keypoint defining a vector normal to the surface represented in the virtual model at the location of the keypoint. During the processing cycle, the system traverses the sanding head along the toolpath by: interpolating normal vectors between keypoints; and maintaining the axis of the sanding head (e.g., the rotational axis of the sanding head) coaxial with normal vectors defined at and interpolated between keypoints along the toolpath. Accordingly, the system can maintain a point (or a relatively small area) on the sanding pad - proximal the axis of the sanding head - in contact with the workpiece, such as: for all convex surfaces; for all planar surfaces; and for all concave surfaces characterized by radii greater than a minimum radius controlled by compliance of a compliant backing supporting the sanding pad on the sanding head. Therefore, in this implementation, the system can record a sequence of coordinate measurements on the workpiece based on a reference point on the sanding head coincident the rotational axis of the sanding head.

[0195] In one variation, during the processing cycle, the system: defines a target axis parallel and offset from the axis of the sanding head by a target offset distance; and implements methods and techniques described above to maintain the target axis coaxialnormal vectors defined at and interpolated between keypoints along the toolpath. Accordingly, the system can maintain a reference point on the sanding pad - offset from the axis of the sanding head - in contact with the workpiece. Therefore, in this implementation, the system can record a sequence of coordinate measurements on the workpiece based on a reference point on the sanding head offset from the rotational axis of the sanding head based on the target offset distance. In this variation, the system can also set a fixed target offset distance, such as 50% of the radius of the sanding pad.

[0196] Alternatively, in this variation, the system can set this target offset distance for a region of the workpiece based on a geometry of the workpiece, such as inversely proportional to an effective radius of the workpiece region such that this target offset: is approximately null for planar workpiece regions; 90% of the radius of the sanding pad for convex workpiece regions characterize by small radii; and 100% of the radius of the sanding pad for concave workpiece regions characterized by radii less than the radius of the sanding pad. Additionally or alternatively, in this variation, the system can dynamically adjust this target offset distance, such as maintaining consistent wear across the sanding pad during the processing cycle.

[0197] Accordingly, the system can: define a target axis parallel to the rotational axis of the sanding head; maintain the target axis normal to workpiece - as represented in the virtual model - while traversing the sanding head across the workpiece; and track and record real three-dimensional positions (or “coordinate measurements”) of a reference point on the sanding pad coincident this target axis. For example, the system can record and store three-dimensional positions of the reference point at a pitch distance of 0.10” along the toolpath.2.9.1.1 _ Contact Point by Workpiece Surface Profile

[0198] In one example of the foregoing variation, the system: isolates a first workpiece region defining a convex surface profile in the virtual model; generates a first toolpath defining a first continuous path across this first workpiece region of the workpiece in Block S240; sets a first target offset distance of null (i.e., 0.0”) for the first workpiece region; and defines a first reference point located on a sanding pad mounted to the sanding head and coaxial with an axis of rotation of the sanding head based on the first target offset distance. While traversing the sanding head across first workpiece region, the system thus records a first sequence of positions of the first reference point in contact with the workpiece while traversing the sanding head along the first toolpath to sand the workpiece.

[0199] In this example, the system also: isolates a second workpiece region defining a concave surface profile in the virtual model; generates a second toolpath defining a second continuous path across this second workpiece region of the workpiece in Block S240; sets a second target offset distance (e.g., 50% of the radius of the sanding pad) - greater than the first target offset distance - for the second workpiece region; and defines a second reference point located on the sanding pad and offset from the axis of rotation of the sanding head according to the second target offset distance. While traversing the sanding head across this second concave workpiece region, the system thus records a second sequence of positions of the second reference point.

[0200] As described below, the system then deforms the virtual model into alignment with both the first sequence of positions of the first reference point and the second sequence of positions of the second reference point.2.10. _ Virtual Model Correction

[0201] Block S270 of the second method S200 recites interpreting a first surface contour in the first workpiece region based on the first sequence of positions. Similarly, Block S270 of the second method S200 can recite deforming the virtual model into alignment with the first sequence of positions of the reference point. Generally, in Block S270, the system can adjust (or “transform”) the virtual model to reflect coordinate measurements captured by the system while traversing the sanding head across the workpiece, thereby fusing the low-resolution, lower-accuracy virtual model with sparse intra-processing contact data to form a higher-resolution, higher-accuracy representation of the workpiece, as shown in FIGURE 7.

[0202] In particular, the system can: navigate an optical sensor - arranged on the end effector on the robotic arm - along the scan path over and offset above the workpiece during a scan cycle in Block S212; access a set of depth maps captured by the optical sensor during the scan cycle in Block S210; compile the set of depth maps into a virtual model characterized by an initial dimensional tolerance relative to a physical geometry of the workpiece in Block S220; and generate a toolpath for the workpiece based on surface contours of the workpiece represented in the virtual model in Block S240. During a subsequent scan cycle, the system: records a sequence of positions of a reference point - on the sanding head - in contact with the workpiece and representing true three- dimensional points on the first workpiece region in Block S260; and then transform the virtual model according to this sequence of positions to narrow (i.e., reduce) the initialdimensional tolerance of the virtual model and thus improve dimensional accuracy of the virtual model.

[0203] In one implementation described above, the system compiles images of the workpiece into a three-dimensional mesh within a virtual three-dimensional space in Block S220. Accordingly, in Block S270, the system: projects a set of positions - of the reference point on the sanding head recorded during the processing cycle - into the virtual three-dimensional space; selects a set of vertices in the three-dimensional mesh that correspond to this set of positions of the reference point; and snaps (i.e., moves) this set of vertices in the three-dimensional mesh onto the set of positions of the reference point within the virtual three-dimensional space.

[0204] For example, for each contact point - in the sequence of contact points between the sanding head and the workpiece - recorded by the system during the processing cycle, the system can: project a coordinate of the contact point from real space into the virtual three-dimensional space; select a target vertex in the mesh nearest this coordinate; shift the target vertex - normal to the mesh at the vertex - to a new position minimally offset from the coordinate; and shift nearby vertices in the mesh to minimize changes in tangents on the local surface of the mesh and / or to reduce changes in local radii around the target vertex.

[0205] In another implementation, the system compiles images of the workpiece into a three-dimensional surface within a virtual three-dimensional space in Block S220. Then, for each contact point in the sequence of contact points between the sanding head and the workpiece thus captured by the system, the system: isolates a location on the toolpath - defined along the surface of the virtual model in Block S240 - corresponding to this contact point; inserts a vertex on the surface of the virtual model at this toolpath location; projects a coordinate of the contact point from real space into the virtual three- dimensional space; and deforms the surface of the virtual model to locate the vertex on the coordinate while minimizing changes in contours on the surface near the vertex.

[0206] Therefore, the system can fuse the virtual model, characterized by lower dimensional accuracy, with coordinate measurements captured by the system while processing (i.e., sanding) the workpiece to generate a more dimensionally accurate representation of the workpiece.

[0207] However, the system can implement any other method or technique to modify the virtual model according to coordinate measurements captured in real-time by the system while processing the workpiece.2.10.1 _ Surface Contour Interpolation from Processing Cycle Data

[0208] In one variation, rather than deform the virtual model - generated from scan data captured during the prior scan cycle - into alignment with positions of the sanding head (or “coordinate measurements”) recorded during execution of the processing cycle, the system can implement similar methods and techniques to interpolate actual surface contours on the workpiece directly from these positions of the sanding head. For example, the system can: project positions of the sanding head recorded during execution of the processing cycle into a virtual three-dimensional environment; and then construct target surfaces (or a “mesh”) intersecting these positions within the virtual three-dimensional environment. The system can then implement methods and techniques described below to: align the target model with these surface contours represented in the virtual three-dimensional environment; and detect geometric or dimensional differences between target surfaces in the target model and surface contours represented in the virtual model.2.10.2 _ Surface Contour Interpolation from Probe Cycle

[0209] Another variation of the second method S200 shown in FIGURE 9 includes Blocks S290 and S292, which recite: defining a set of probe locations on the workpiece; and, via a set of actuators, navigating an end effector to locate a reference point in contact with the set of probe locations on the workpiece. Generally, in Blocks S290 and S292, the system implements methods and techniques described above to: define a constellation of probe locations across the workpiece; drive the sanding head or a separate contact (or “touch”) probe on the robotic arm into contact with the workpiece at these probe locations; and to record three-dimensional contact positions of the sanding head or probe - such as within a three-dimensional coordinate system of the system - upon contact with the workpiece. The system can then implement methods and techniques described above: to deform the virtual model of the workpiece - generated during a preceding scan cycle - into alignment with these three-dimensional contact positions; and / or to interpolate surface contours of the workpiece directly from these three-dimensional contact positions.

[0210] In one implementation, the system defines a uniform distribution of probe locations across the workpiece (e.g., one probe location per discrete unit area) and defines these probe locations on the target model or on the virtual model of the workpiece generated from data captured during a preceding scan cycle. Alternatively, the system: can define probe locations solely (or predominantly, preferentially) on surfaces assignedgeometric or dimensional specifications in the target model; and can define higher densities of probe locations on surfaces assigned narrower (or “tighter”) geometric or dimensional tolerances in the target model than surfaces assigned wider (or “looser”) geometric or dimensional tolerances in the target model.

[0211] Additionally or alternatively, the system can define higher densities of probe locations near edges, vertices, or smaller features of the workpiece and then leverage three-dimensional contact positions collected during a subsequent probe cycle: to align the target model to the coordinate system of the system based on positions of corresponding edges, vertices, and smaller features represented in the target model; and / or to correct the geometry of the virtual model around the edges, vertices, and smaller features before aligning these features in the virtual model to corresponding features in the target model.2.10.2.1 _ Probe Location Selection

[0212] Generally, in this variation, the system can: autonomously navigate the end effector over a first region of the workpiece; capture a first sequence of optical images of the first region of the workpiece; compile these images into a first segment of the virtual model representing the workpiece; define a set of (i.e., one or more) test locations in the first region of the workpiece; define an approach vector at each test location based on a geometry of the virtual model at corresponding locations; autonomously navigate the sanding head along these approach vectors and into contact with the workpiece at these locations; track forces applied by the sanding head to the workpiece; positions of the sanding head upon making contact with the workpiece at these test locations; interpret three-dimensional positions of point on the workpiece at these test locations based on these three-dimensional sanding head positions; and repeat this process for each subsequent region of the workpiece traversed by the end effector during the scan cycle. The system can therefore collect sparse empirical three-dimensional surface data of the workpiece in real-time while scanning the workpiece during the scan cycle.

[0213] In one implementation, the system can construct a partial virtual model of the workpiece and define a set of test locations on the workpiece based on local characteristics of the workpiece - defined in the virtual model - near the present location of the end effector in real-time during a scan cycle. Upon defining a test location, the system can: pause the scan cycle; calculate a vector normal to the virtual model at the test location; and navigate the end effector and thus the sanding head (or a discrete forcedisplacement probe arranged on the end effector) along the vector toward the testlocation. Once the force on the end effector outputs a signal indicating application of a force greater than a minimum threshold force, the system can: detect contact between the sanding head (or the force-displacement probe) on the workpiece; record a three- dimensional position of a point on the workpiece at this test location; withdraw the end effector from this test location on the workpiece; and repeats this process for each subsequent test location.

[0214] In one implementation, the system projects a grid defining test locations onto the workpiece, such as on fixed lateral and longitudinal pitch distances proportional to the width and length of the workpiece, respectively.

[0215] In another implementation, the system defines densities of test locations on a region of the workpiece inversely proportional to width of dimensional tolerance assigned to this region.

[0216] Then, after defining a test location in the virtual model, the system can: calculate a test axis (e.g., a vector in system coordinates) normal to the test location in the virtual model; extract a three-dimensional position of this test location in system coordinates; navigate the end effector above this three-dimensional position of this test location in system coordinates; orient the end effector to align a test axis of the end effector (e.g., a test axis of the sanding head on the end effector) to the test axis in system coordinates; and then articulate the robotic arm along (or otherwise parallel to) the test axis to move the end effector toward the three-dimensional position of this test location in the system. Concurrently, the system can access an initial sequence of force values from the force sensor in the end effector while driving the end effector along this test axis vector toward the first test location on the workpiece. Then, in response to a force value - in this initial sequence of force values - exceeding a low threshold contact force, the system can: detect initial contact between the sanding head; record a true unloaded three- dimensional position of the test location in system coordinates at the time of this initial contact; withdraw the end effector (e.g., the sanding head) from the workpiece; and then move to a next test location defined on the workpiece or resume the scan cycle.

[0217] However, the system can select another quantity or distribution of probe locations on the workpiece based on any other parameter of the target model or characteristic of the workpiece and can implement any other method or technique to refine the virtual model or directly interpolate individual contour surfaces on the workpiece based on three-dimensional contact positions recorded by the system at these probe locations.2.11. Contact Position Correction

[0218] In one variation shown in FIGURE 7, the system corrects contact positions of a reference point recorded in Block S260 based on forces with which the system applied the sanding head to the workpiece during the processing cycle, thereby correcting these contact positions for compression of a compliant backing supporting the sanding pad on the sanding head. The system then corrects (e.g., transforms) the virtual model according to these corrected contact positions.2.11.1 _ Compliant Backing

[0219] In one implementation shown in FIGURE 7, the system: accesses a compliance characteristic of a compliant backing supporting a sanding pad on the sanding head. Then, for a first contact position in the first sequence of contact positions recorded in Block S260, the system: records a first force applied by the sanding head on the workpiece when the reference point contacts the workpiece at the first contact position; calculates a correction offset based on (e.g., proportional to) the compliance characteristic of the compliant backing and the first force; and shifts the first contact position by the correction offset in a direction normal to a surface defined in the virtual model at the first position. The system then repeats this process for each other contact point recorded during the processing cycle in Block S260 to correct the three-dimensional positions of these contact points for compression of the compliant backing against the workpiece.2.11.2 _ Sparse Coordinate Measurement Correction

[0220] In a similar variation shown in FIGURE 8, the system can: directly probe sparse locations on the workpiece prior to the processing cycle (e.g., during the scan cycle) to record ground truth three-dimensional positions of these locations on the workpiece; correct contact points recorded in Block S260 based on these ground truth three- dimensional positions; and then deform the virtual model according to these corrected contact points in Block S270, as described above.

[0221] In one implementation, during the scan cycle, the system: defines a first probe location in a first workpiece region of the workpiece, such as based on a contour (e.g., convex or concave surface) represented in the virtual model; calculates a first vector normal to the first probe location in the first workpiece region based on the virtual model; accesses a sequence of force values from the force sensor while driving the end effector along the first vector toward the first probe location on the workpiece; records a firstprobe position of a reference point on the sanding head upon contact with the workpiece proximal the first probe location based on an increase in force values (e.g., from a null or tare force value) in this sequence of force values; repeats this process for other probe locations on the workpiece; and stores these probe positions as ground truth three- dimensional positions of a sparse distribution of points on the workpiece.

[0222] In this implementation, following the processing cycle, the system: identifies a first contact point - from the first sequence of contact points recorded in Block S260 - proximal the first probe position recorded during the scan cycle; calculates a correction offset for the first contact point (and nearby contact points in the sequence of contact points) based on a difference between the first probe position and the first contact point; and shifts the first contact point (and nearby contact points) according to the correction offset. The system repeats this process for other contact points and probe positions recorded by the system during the scan cycle and / or the processing cycle to correct the sequence of the contact points. The system then deforms the virtual model into alignment with these corrected contact points in Block S270, as described above.2.12. Interwoven Scanning + Processing + Model Correction

[0223] In another variation, the system implements methods and techniques described above to: scan a first region of the workpiece while capturing a first set of images of the workpiece; generate a virtual model representing the first region of the workpiece based on these images; generate a first toolpath spanning the first region of the workpiece based on a surface represented in the virtual model; assign a first target force to the first toolpath; autonomously navigate the sanding head across the first region of the workpiece while maintaining the first target force against the workpiece and recording a first sequence of three-dimensional of positions of a reference point on the sanding head in contact with the workpiece; and correct the virtual model according to this first sequence of positions.

[0224] In this variation, the system repeats this process for each subsequent region of the workpiece, such as including: scanning a second region of the workpiece while capturing a second set of images of the workpiece; expanding (e.g., updating) the virtual model to represent the second region of the workpiece based on these images; generating a second toolpath spanning the second region of the workpiece based on the expanded surface represented in the virtual model; assigning a second target force to the second toolpath; autonomously navigating the sanding head across the second region of the workpiece while maintaining the second target force against the workpiece and recordinga second sequence of three-dimensional of positions of the reference point on the sanding head in contact with the workpiece; and correcting the virtual model according to this second sequence of positions.

[0225] For example, the system can execute the foregoing process to interleave scan and processing cycles for an elongate workpiece exhibiting a high length-to-width ratio in order to avoid multiple traversals of the elongate workpiece.

[0226] However, the system can selectively execute the scan cycle and pause the scan cycle to interleave segments of the processing cycle to process (e.g., sand) the workpiece according to any other schema.2.1 . _ Target Model Deviation Detection

[0227] Block S272 of the second method S200 recites detecting a first difference between the first surface contour and a first target surface, corresponding to the first surface contour, defined in the target model. Generally, in Block S272, the system can: detect differences between surface contours represented in the virtual model (or in discrete surface contours generated by the system) and target surfaces specified and defined in the target model; characterize these differences, such as magnitudes of dimensional differences or qualities or geometric differences; and flag each surface contour in the virtual model that deviates from its corresponding target surface in the target model by more than a geometric or dimensional tolerance specified in the target model for this correspond target surface, as shown in FIGURE 7.2.13.1 _ Target Model + Virtual Model Alignment

[0228] In one variation, the system virtually aligns the target model and the virtual model of the workpiece within the three-dimensional virtual environment described above.

[0229] In one implementation, the system: projects the target model into a first position within the three-dimensional virtual environment containing the virtual model; calculates a first percentage of the target model, located in the first position, that is contained within (i.e., intersects) the virtual model (and / or a first percentage of the virtual model contained in the target model); moves the target model to a second position; calculates a second percentage of the target model, located in the second position, that is contained within the virtual model (and / or a second percentage of the virtual model contained in the target model); and iteratively repeats this process to move the target model to a final position that maximizes the percentage of the target model containedwithin the virtual model and / or the percentage of the virtual model contained within the target model. In this implementation, the system can then store a transform that maps the target model onto this final position in the three-dimensional virtual environment or otherwise store this final position of the target model relative to the virtual model.

[0230] In one variation, the system can further adjust a position of the target model relative to the virtual model within the three-dimensional virtual environment in order to minimize differences between a constellation of target surfaces in the target model - annotated with geometric and dimensional callouts - and corresponding surface contours represented in the virtual model. More specifically, the system can adjust the position of the target model relative to the virtual model within the three-dimensional virtual environment in order to minimize differences (e.g., errors, offsets) between specific target surfaces - containing geometric and dimensional callouts - and corresponding surface contours in the virtual model in order to minimize material removal by the system needed to bring the workpiece into compliance with these geometric and dimensional callouts.

[0231] For example, the system can: isolate a first target surface in the target model containing a first geometric or dimensional callout; isolate a corresponding (e.g., nearest) first surface contour in the virtual model; calculate a first offset volume between the first target surface and the corresponding first surface contour; (weight this offset volume inversely proportional to a width of a first tolerance assigned to the first target surface;) repeat this process for each other target surface in the target model containing a geometric or dimensional callout; and calculate a first total error for this position of the target model based on a combination (e.g., sum) of these offset (weighted) volumes. The system can then: shift the position of the target model relative to the virtual model; repeat the foregoing process to calculate a second total error; and iteratively repeat this process to move the target model to a final position that minimizes the total error (i.e., combined volume) between target surfaces in the target model and corresponding surface contours in the virtual model.

[0232] Alternatively, in this example, the system can iteratively repeat this process to move the target model to a final position - within the three-dimensional virtual environment - that locates target surfaces in the target model within offset distances of corresponding surface contours in the virtual model sufficient to fulfill a maximum quantity of target surfaces in the target model. Accordingly, the system can limit a quantity of surface contours on the workpiece flagged in Block S272 for further material removal and thus decrease processing time to complete correction of the workpiece.

[0233] In another example, the system: identifies corresponding edges and vertices in the target model and the virtual model; and implements similar methods and techniques to calculate a position of the target model - within the three-dimensional virtual environment - that minimizes offset distances (or “error”) between these corresponding edges and vertices.

[0234] However, the system can implement any other method or technique to align the target model and the virtual model within the three-dimensional virtual environment.2.1,2.2 _ Difference

[0235] The system can then characterize a difference between each target surface - annotated with a geometric or dimensional callout in the target model - and a corresponding surface contour represented in the target model.

[0236] In one implementation, the system: selects a first target surface containing a first dimensional tolerance callout and a corresponding first surface contour in the three-dimensional virtual environment; extracts the first dimensional tolerance (or “distance threshold”) assigned to the first target surface in the target model; defines a first tolerance surface outwardly offset from the first target surface by a maximum error distance (or “threshold distance”) represented by the first dimensional tolerance; isolates a first segment of the first surface contour that extends above this first tolerance surface; flags the first segment of the first contour surface for correction; and stores a first volume bounded between the first segment first contour surface and the first tolerance surface for removal. The system then repeats this process for each other target surface containing a dimensional tolerance callout.

[0237] In a similar implementation, the system: selects a first target surface containing a first geometric tolerance callout and a corresponding first surface contour in the three-dimensional virtual environment; extracts the first geometric callout assigned to the first target surface in the target model; generates a first geometric limit surface offset from the first target surface based on a geometry and dimension of the first target surface and the first geometric tolerance callout (e.g., a planar geometric limit surface for planarity callout; a cylindrical geometric limit surface for a cylindricity callout); isolates a first segment of the first surface contour that extends above this first tolerance surface; flags the first segment of the first contour surface for correction; and stores a first volume bounded between the first segment first contour surface and the first tolerance surface for removal. The system then repeats this process for each other target surface containing a geometric tolerance callout.

[0238] In another implementation, the system: selects a first target surface containing a first dimensional tolerance callout and a corresponding first surface contour in the three-dimensional virtual environment; extracts the first dimensional tolerance (or “distance threshold”) assigned to the first target surface in the target model; calculates a maximum distance between the first target surface and the first surface contour; and flags the first surface contour for correction if this maximum distance exceeds the first dimensional tolerance and extends above the first target surface.

[0239] For example, the system can access a target model that includes a three- dimensional computer-aided drafting model representing target dimensions of surfaces of the workpiece in Block S202. During a scan cycle prior to the first processing cycle, the system can: traverse the end effector along a scan path offset from the workpiece; access a set of scan images captured by an optical sensor arranged on the end effector; and assemble the set of scan images into a three-dimensional mesh representing the workpiece within a virtual three-dimensional space. Following the subsequent processing cycle, the system can project the first sequence of positions into the virtual three- dimensional space; and snap a first set of vertices in the three-dimensional mesh to the first sequence of positions projected into the virtual three-dimensional space. The system can then detect a first difference between a first surface contour in the virtual model and a first target surface defined in the target model by characterizing a maximum distance between: the first surface contour represented in the three-dimensional mesh; and the first target surface defined in the target model. The system then repeats this process for each other target surface containing a dimensional tolerance callout in the target model.

[0240] In a similar example, the system accesses a target model representing a first dimensional tolerance of a first target dimension of a first surface within the first workpiece region. During a scan cycle prior to the first processing cycle, the system: traverses the end effector along a scan path offset from the workpiece; and accesses a set of depth maps captured by a depth sensor arranged on the end effector. The system then assembles the set of scan images into a virtual model: within a virtual three-dimensional space; and characterized by a dimensional accuracy, relative to the workpiece, less than the first dimensional tolerance. The system further: executes the processing cycle as described above; and records a first sequence of positions of a reference point - on the sanding head - in contact with the first workpiece region during the processing cycle and representing actual three-dimensional points on the first workpiece region; projects the first sequence of positions into the virtual three-dimensional space; and deforms the virtual model into alignment with the first sequence of positions projected into the virtualthree-dimensional space to increase the dimensional accuracy of the virtual model, relative to the first workpiece region, to greater than the first dimensional tolerance. The system then detects a first difference between the first surface contour and the first target surface defined in the target model by characterizing a maximum distance between: the first surface contour represented in the virtual model; and the first target surface defined in the target model. The system then repeats this process for each other target surface containing a dimensional tolerance callout in the target model.

[0241] However, the system can implement any other method or technique: to detect a whole or partial segment of a contour surface on the workpiece - represented in the virtual model - that extends outwardly from a corresponding target surface defined in the target model by more than an assigned geometric or dimensional tolerance (hereinafter an “oversized surface contour”); and to derive a one-dimensional (e.g., normal distance, depth) and / or volumetric representation of this oversized surface contour based on this local difference between the virtual model and the target model.2.14. _ Correction Toolpath

[0242] The system can then generate a second toolpath to correct a set of (i.e., one or more) flagged surface contours on the first workpiece region (i.e., to reduce these geometric or dimensional difference from corresponding target surfaces defined in the target model) in Block S240. In particular, the system can: implement methods and techniques described above to access or retrieve a first dimensional tolerance assigned to the first target surface defined in the target model; and generate a second toolpath for a particular workpiece region in response to a difference between a surface contour in the workpiece region and a corresponding target surface in the target model exceeding a dimensional tolerance specified for the corresponding target surface in the target model.2.14.1 _ Correct Strategies

[0243] The system can then: extract a one-dimensional material removal depth or a three-dimensional material removal volume for an oversized surface contour based on a difference between a target surface in the target model and a corresponding contour surface in the virtual model; and implement methods and techniques described above to generate a correction toolpath and define correction parameters (e.g., target correction force, correction cycle feed rate) based on this material removal depth or volume and characteristics of the workpiece.

[0244] In one implementation, the system is configured to: autonomously navigate the sanding head over the entire workpiece during a processing cycle to remove material from the entire workpiece and achieve a nominal, consistent surface finish across the entire workpiece; then autonomously navigate the sanding head over a region of the workpiece containing an oversized surface contour during a correction cycle to remove material and correct the oversized surface contour; and then autonomously navigate the sanding head over a large region of the workpiece around and including the corrected surface contour during a second processing cycle to blend surface finishes across oversized and non-oversized regions of the workpiece.

[0245] In another implementation, the system is configured to: detect an oversized surface contour in a region of the workpiece prior to a processing cycle, such as by selectively probing the regions of the workpiece; autonomously navigate the sanding head over this region of the workpiece containing the oversized surface contour during a correction cycle to partially correct the oversized surface contour; and then autonomously navigate the sanding head over the entire workpiece during a subsequent processing cycle to remove material from the entire workpiece, complete correction of the oversized surface contour, and achieve a nominal, consistent surface finish across the entire workpiece. In this implementation, the system can: implement methods and techniques described above to calculate a nominal material removal depth from the workpiece during the processing cycle based on the output surface quality selected for the workpiece by the operator; and subtract this nominal material removal depth from the depth of the oversized surface contour to calculate a target material removal depth for partial correction of the oversized surface contour during the preceding correction cycle.2.14.2 _ Correction Cycle Parameters

[0246] The system can then implement methods and techniques described above to set parameters for the correction cycle based on this target material removal depth or volume.

[0247] In one implementation, the system: retrieves a function that relates contact duration (i.e., a time or rotation count of a sanding disk in contact with a workpiece), applied force (or pressure), sanding disc grit, and material removal depth; segments the oversized surface contour into an array of subregions (e.g., pixels, one-inch-square areas); converts a minimum, average, or maximum depth of the three-dimensional material removal volume into a one-dimensional target material removal depth within each subregion; and calculates a target correction contact duration for each subregion basedon a) the nominal target force selected for the workpiece in Block S242 described above, b) the sanding disc grit selected for the workpiece, and c) the corresponding target material removal depths of these subregions.

[0248] In this implementation, the system then sets or calculates a combination of pitch offset between legs of a correction toolpath (or “correction stepover distance”) and a correction feed rate for the correction toolpath that yields target correction contact durations within each subregion of the oversized surface contour.

[0249] Therefore, the system can set a dynamic feed rate for the correction cycle for the oversized surface contour in order to achieve: greater material removal specifically over subregions the surface contour that exhibit greater deviation from the corresponding target surface defined in the target model; and less material removal in adjacent regions of the workpiece. For example, the system can specify a slowest feed rate directly over the volumetric centroid of the oversized surface contour and a feed rate that increases (e.g., linearly) as the sanding head approaches the perimeter of the oversized surface contour.

[0250] In the foregoing implementation, the system can also assign a target correction force - to the oversized surface contour - that differs from the nominal target force set for the processing cycle in Block S242 described above. For example, the system can set or calculate a target correction force - greater than the nominal target force set for the processing cycle as described above - for the oversized surface contour in order to achieve more rapid material removal from this oversized surface contour. Similarly, the system can calculate a correction feed rate - less than a nominal feed rate set for the processing cycle as described above - for the oversized surface contour in order to achieve greater material removal from the workpiece around the oversized surface contour than other non-oversized surface contours on the workpiece.

[0251] However, the system can implement any other method or technique to set or calculate processing parameters for the correction cycle for the oversized surface contour.2.14..2 _ Correction Processing Parameter Examples

[0252] In one example shown in FIGURE 7, the system: defines a pitch distance inversely proportional to a one-dimensional difference (e.g., maximum depth) or three- dimensional difference (e.g., volume) between an oversized surface contour and the corresponding target surface in the target model; and generates a correction toolpath defining a serpentine path formed by a series of interconnected toolpath legs offset by the pitch distance. During the subsequent correction cycle, the system navigates the sandinghead across this oversized surface contour according to the correction toolpath to reduce this difference between the oversized surface contour and the corresponding target surface in the target model.

[0253] Additionally or alternatively, the system can define a target correction force proportional to the one-dimensional difference (e.g., maximum depth) or three- dimensional difference (e.g., volume) between the oversized surface contour and the corresponding target surface in the target model. Then, during the subsequent correction cycle, the system can: access a second sequence of force values output by the force sensor; and, based on the second sequence of force values, deviate the sanding head from the second toolpath to maintain forces of the sanding head on the oversized surface contour proximal the second target force.2.14.4 _ Multiple Oversized Surface Contours

[0254] The system can also repeat this process to set correction parameters and generate a correction toolpath for each other oversized surface contour on the workpiece.2. i . _ Correction Cycle

[0255] Block S252 of the second method S200 recites, during a correction cycle, via a set of actuators coupled to the end effector, navigating a sanding head across the first workpiece region according to the correction toolpath in Block S252. Generally, in Block S252, the system can execute methods and techniques described above to: autonomously navigate the sanding head across a region of the workpiece - containing an oversized surface contour - according to a corresponding correction toolpath; track forces applied by the sanding head to the workpiece; and implement closed-loop controls to maintain this applied force at a target fixed or dynamic correction force assigned to the correction toolpath by deviating the sanding head from the correction toolpath along vectors normal to the workpiece, as shown in FIGURES 7 and 8.2.16. _ Iterative Correction

[0256] In one variation, the system repeats the foregoing process: to collect a second sequence of positions of the sanding head in contact with an oversized surface contour during the correction cycle; to update the virtual model to reflect material removed from this oversized surface contour during the correction cycle based on this second sequence of positions; to recalculate a one- or three-dimensional difference between the oversized surface contour and the corresponding target surface in the targetmodel based on this revised virtual model; to selectively generate a third toolpath and correction parameters for an additional correction cycle on the oversized surface contour if this difference still exceeds the tolerance assigned to the corresponding target surface; and to execute this additional correction cycle accordingly.

[0257] In one implementation, the system can: set a first target correction depth of 80% of a first difference between a first target surface in the target model and a first oversized surface contour on the workpiece; execute the foregoing processes to generate and execute a first toolpath to remove material from the first oversized surface contour during a first correction cycle; execute the foregoing processes to update the virtual model based on positions occupied by the sanding head occupied during the first correction cycle; recalculate a new, second difference between the first target surface in the target model and the first oversized surface contour represented in the updated virtual model; set a second target correction depth of 90% of this second difference between the first target surface in the target model and the first oversized surface contour represented in the virtual model; execute the foregoing processes to generate and execute a second toolpath to remove material from the first oversized surface contour during a second correction cycle; execute the foregoing processes to again update the virtual model based on positions occupied by the sanding head during the second correction cycle; recalculate a new, third difference between the first target surface in the target model and the first oversized surface contour represented in the updated virtual model; and confirm correction of the first oversized surface contour if this third difference is less than a dimensional tolerance assigned to the first target surface in the target model or further repeat this process if the third difference exceeds this dimensional tolerance.

[0258] For example, the system can implement methods and techniques described above: to execute a processing cycle to remove material from a large region of the workpiece; to generate or update a virtual model of the workpiece based on positions of the sanding head during the processing cycle; and to generate and execute a correction toolpath on an oversized surface contour on the workpiece during a first repeat cycle based on a difference between the oversized surface contour represented in the virtual model and a corresponding target surface represented in the target model. The system can further: access a first dimensional tolerance assigned to the first target surface defined in the target model; detect a second sequence of positions of the sanding head traversing the oversized surface contour during the first repeat cycle; interpret a revised surface contour - for the oversized surface contour - in the virtual model based on the second sequence of positions; and detect a second difference between the revised surfacecontour and the corresponding target surface defined in the target model. Then, in response to the second difference falling below the first dimensional tolerance, the system can confirm correction of the first workpiece region of the workpiece.

[0259] The system can therefore update the virtual model of the workpiece to reflect geometries and dimensions of the workpiece revised by the system during correction cycles.

[0260] Therefore, the system can represent a first surface contour - corrected via one or more correction toolpaths during one or more correction cycles due to deviation from the target model - in the virtual model based on a last set of sanding head positions recorded during the last correction cycle executed on this first surface contour. The system can also represent a second surface contour - not corrected during a correction cycle due to absence of a tolerance on the corresponding target surface in the target model or due to achievement of this tolerance during the prior processing cycle - in the virtual model based on sanding head positions recorded during the initial processing cycle executed by the system.2.17. _ Digital Twin Record + Database

[0261] In one variation shown in FIGURE 8, the system: stores the revised (or “corrected”) virtual model as a “digital twin” of the workpiece; associates the corrected virtual model with the workpiece; annotates the corrected virtual model with processing data from the processing cycle; and / or stores the corrected virtual model in a database for later access, such as to verify dimensions, dimensional accuracy, and / or processing history of the workpiece.

[0262] In one implementation shown in FIGURE 7, the system searches scan data - captured by the system during the scan cycle in Block S212 - for an optical identifier (e.g., a barcode, a quick-response code, a serial number) uniquely identifying the workpiece. Upon detecting an optical identifier in these scan data, such as on the workpiece or on a tag adjacent the workpiece, the system can extract a unique identifier from this optical identifier. The system then: initializes a digital file linked to the unique identifier; writes the corrected virtual model (e.g., a digital three-dimensional record, a digital twin of the workpiece) to the digital file; and uploads the digital file to a workpiece database. The system can therefore: store a digital three-dimensional record - defining a digital twin of the workpiece - in the workpiece database; and link this digital three- dimensional record to the unique identifier detected on or adjacent the workpiece.

[0263] Additionally or alternatively, the system can: project the toolpath(s) generated in Block S240 onto the corrected virtual model; project the sequence of contact positions captured in Block S260 during the processing and / or correction cycle(s) onto the corrected virtual model; project the sequence of force values captured in Block S250 during the processing cycle on the corrected virtual model with forces; and / or project actual sanding head feed rates and speed rates implemented by the system onto corresponding regions of the corrected virtual model. However, the system can annotate the corrected virtual model with any other data collected by the system during the processing cycle in order to generate a more comprehensive processing record for the workpiece.,2. ,2.1. _ Third Method

[0001] As shown in FIGURES 11 and 12, a third method S300 for autonomously processing a workpiece includes: accessing a virtual model defining a geometry of a workpiece in Block S105; by a set of actuators, navigating an optical sensor about the workpiece in Block S110; accessing an image of the workpiece in Block S115; detecting a marker, on the workpiece, depicted in the image in Block S120; defining a first workpiece region of the workpiece bounded by the marker in Block S125; defining a toolpath within the first workpiece region based on a geometry of the first workpiece region represented in the virtual model in Block S130; and assigning a first target force to the first toolpath in Block S135.

[0002] The third method S300 further includes, during a processing cycle: accessing a first sequence of force values output by a force sensor coupled to the sanding head in Block S140; and, via the set of actuators, navigating the sanding head across the first workpiece region according to the first toolpath and, based on the first sequence of force values, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece proximal the first target force in Block S145.3.1.1 _ Variation

[0003] In one variation, the third method S300 includes: accessing an image of the workpiece in Block S115; detecting a marker, on the workpiece, depicted in the image in Block S120; defining a first workpiece region of the workpiece bounded by the marker in Block S125; defining a toolpath within the first workpiece region based on a geometry of the first workpiece region in Block S130; and assigning a first target force to the first toolpath in Block S135.

[0004] This variation of the third method S300 further includes, during a processing cycle: accessing a first sequence of force values output by a force sensor coupled to the sanding head in Block S140; and, via a set of actuators, navigating the sanding head across the first workpiece region according to the first toolpath and deviating the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece proximal the first target force in Block S145 based on the first sequence of force values.3.2. _ Applications

[0005] Generally, as shown in FIGURES 11, 12, 13A, 13B, and 14, the autonomous scanning and processing system (hereinafter the “system”) can execute Blocks of the third method S300: to capture optical data (e.g., images, depth data) of a workpiece; to detect a marker, located on the workpiece, represented in the optical data; to identify a region of the workpiece for processing (e.g., sanding, buffing, polishing) based on the marker; to generate a toolpath for processing the region of the workpiece; and to autonomously execute a processing cycle within the region of the workpiece according to the toolpath.

[0006] More specifically, the system is configured to autonomously execute Blocks of the third method S300: to access a two-dimensional image of the workpiece; to identify a region of the workpiece (e.g., the region of the workpiece bounded by a marker) for processing based on features detected in the two-dimensional image of the workpiece; to navigate an optical sensor (e.g., a laser line scanner) about the region of the workpiece to capture scan data of the region; to assemble the scan data into a virtual model representing a geometry of the region; to detect the marker and / or an edge of the workpiece in the virtual model; and to generate a toolpath spanning the region - bounded by the marker and / or the edge - of the workpiece. For example, the system can execute Blocks of the third method S300 to: rapidly capture lower-resolution color images depicting the workpiece via a color camera; identify markers arranged on the workpiece in these color images; isolate a particular region of the workpiece for higher-resolution scanning via a higher-resolution optical sensor (e.g., a laser line scanner); and selectively scan this region of the workpiece with the higher-resolution optical sensor. The system can then: assemble a high-resolution representation of the workpiece from these higher- resolution scan data; accurately detect (or “locate”) an edge of the marker in the virtual model; and refine a boundary of this region of the workpiece for autonomous processing (e.g., sanding, polishing, grinding) by the system. Therefore, the system can selectivelyscan and process a region of the workpiece containing or bounded by a visual marker in order to: decrease scan time of the workpiece, reduce computational complexity, reduce latency from scanning to workpiece processing, and reduce human input or guidance to process the workpiece by isolating scan time.

[0007] In one implementation, the system executes Blocks of the third method S300 to selectively scan and process a region of a workpiece containing a defect denoted by tape (e.g., a “marker”) temporarily applied to the workpiece. In one example, an operator locates multiple (e.g., four) lengths of tape around a region of a workpiece recently re-coated (or “re-sprayed”) with a paint or primer following repair of a defect (e.g., a crack, a scratch, a dent) in this region. In another example, the operator locates multiple lengths of tape around a region of the workpiece exhibiting excess orange peel or paint runs. Accordingly, in these examples, the system: navigates a color camera over the workpiece; captures a series of two-dimensional images of the workpiece via the color camera; detects each length of tape in these series of two-dimensional images; defines a target region of the workpiece contained within (i.e., bounded by), including, and extending past these lengths of tape; navigates a second, higher-resolution the optical sensor (e.g., a laser line scanner) about the target region of the workpiece; captures higher-resolution scan data representing the target region via the higher-resolution the optical sensor; assembles these scan data into a virtual model representing this region the workpiece (or a “partial virtual model”); detects these lengths of tape in the virtual model (e.g., based on absence of laser line data or “holes” in the virtual model); and refines a boundary encompassing the target region of the workpiece within the virtual model based on locations of these lengths of tape.

[0008] The system can then: generate a toolpath executable by the system to process (e.g., sand, grind, polish) the target region of the workpiece up to (e.g., within one millimeter of) the edges of these lengths of tape, thus defining the target region; and process the region of the workpiece according to the toolpath in order to autonomously process (e.g., repair) the target region of the workpiece. Therefore, in these examples, rather than scanning the entire workpiece via the higher-resolution optical sensor, the system can execute Blocks of the third method S300: to roughly (or “coarsely”) identify the target region on the workpiece based on tape markers detected in lower-resolution two-dimensional color images of the workpiece; to selectively scan only this target region of the workpiece with the high-resolution optical sensor; and to derive an accurate three- dimensional geometry and boundary of the target region of the workpiece based on high- resolution three-dimensional optical data selectively captured within the roughly-definedtarget region of the workpiece, thereby decreasing total scanning and processing durations to repair the workpiece. Target Region Boundary

[0009] Further, the system can detect and / or define a boundary of the region of the workpiece denoted by the marker. For example, the system can: detect an absence of data within the virtual model; detect the absence of data as a marker by matching the geometry of the absence of data to a known marker geometry (e.g., a width of .25”, 1”, or 1.5” etc.); detect a contiguous boundary of the marker completely bounding a region of the workpiece; and define the target region of the workpiece as the region of the workpiece completely bounded by the marker.

[0010] The system can additionally detect the boundary of the target region based on the workpiece edge. For example, the system can: detect a first absence of data within the virtual model; detect the first absence of data as a marker by matching the geometry of the absence of data to a known marker geometry width ( e.g., .25”, 1”, or 1.5” ); detect a non-contiguous boundary of the marker partially bounding a region of the workpiece; detect a second absence of data within the virtual model; define the second absence of data as a workpiece edge by detecting a geometry of the second absence of data defining a width greater than the known marker geometry width; and define the workpiece edge as the boundary of the region to complete the non-contiguous boundary of the region corresponding to the marker.

[0011] Therefore, the system can detect and / or define a boundary of the target region of the workpiece for a marker that fully or partially bounds the target region.3.2.2 Keep-Out Zones

[0012] In one implementation, the system can detect a “keep-out zone” indicating a region of the workpiece to avoid processing (e.g., buffing, polishing, sanding) based on the geometry of the marker. The system can: access a set of “keep-out zone” marker geometries; access a virtual model of a workpiece including a marker; detect a hole (e.g., an absence of data) in the virtual model; define a geometry of the hole; and, in response to the geometry of the hole approximating a geometry of the set of “keep-out zone” geometries, generate a toolpath rule to actuate the end effector at least a threshold distance away (e.g., imm, 5mm, icm) from a keep-out region defined by the marker.

[0013] Further, the system can execute the process described above to detect a “keep-out zone” indicating a region of the workpiece to avoid scanning. For example, the system can: access a set of “keep-out zone” marker geometries; access a virtual model of a workpiece including a marker; detect a hole (e.g., an absence of data) in the virtual model; define a geometry of the hole; and, in response to the geometry of the hole approximating a geometry of the set of “keep-out zone” geometries, identify the hole as a maker.

[0014] In one implementation, a single linear mark approximating a forward-slash or back-slash ( / or \) lacking a contiguous or complete boundary around the marker can indicate a region of the workpiece to avoid scanning and / or processing. In another implementation, two intersecting lengths of tape (e.g., approximating an “X”) lacking a contiguous or complete boundary around the marker can indicate a region of the workpiece to avoid scanning and / or processing.3.2.3 _ Toolpath Characteristics

[0015] Further, the system can define segments of the toolpath based on a proximity to the boundary. For example, the system can segment the toolpath into a first segment beyond a threshold distance from the boundary(e.g., distal the boundary of the marker by one to six inches) and a second segment within the threshold distance of the boundary of the marker. The system can define the first segment of the toolpath to include: a first actuation velocity of the sanding head; a first target force between the sanding head and the workpiece; and a first sanding head orientation normal to the surface of the workpiece. The system can define the second segment of the toolpath to include a second actuation velocity less than the first actuation velocity; a second target force less than the first target force; and a second sanding head orientation non-normal to the surface of the workpiece. Therefore, based on the proximity of the sanding head to a boundary of the region (e.g., the boundary of the marker), the system changes the toolpath to increase an accuracy of processing about the boundary.

[0016] Then, the system can execute a processing cycle of the workpiece according to the defined toolpath segments. For example, the system can actuate a sanding head along a segment of the toolpath to sand the target region of the workpiece defined by the marker. The system can alternatively or additionally execute a processing cycle to buff, polish, or grind the target region of the workpiece.3.3. _ System

[0017] In one implementation, shown in FIGURE 11, the system includes: a robotic arm arranged in or adjacent a work zone and including a set of articulatable joints interposed between a series of arm segments; an end effector supported on a distal end of the robotic arm; an optical sensor (e.g., a laser scanner) arranged on or integrated into the end effector and configured to capture optical images (e.g., depth maps, photographic color images) of a workpiece; a position sensor configured to output signals representing (or assemblable into) a three-dimensional position of the optical sensor; a display configured to render a user interface accessible by an operator; and / or a controller configured to execute Blocks of the third method S300.

[0018] In this implementation, the system can also include a gantry or mobile platform configured to traverse the robotic arm longitudinally along the work zone, such as to reach and process an elongated part defining a high length-to-width ratio (e.g., a high aspect ratio), such as a boat hull or aircraft wing.

[0019] In one implementation, the optical sensor defines a laser line scanning sensor configured to: project a laser (e.g., a spot, line, array of points) onto the workpiece; capture scan data of the laser projection on the surface of the workpiece; and derive a surface contour of the workpiece based on distortions of the laser projection on the surface of the workpiece.

[0020] The system includes a position sensor configured to detect a position of the optical sensor. For example, the system: includes a one-, two-, or three-dimensional LIDAR sensor, a time-of-flight distance sensor, a stereoscopic camera, a depth sensor, and / or color camera arranged facing the robotic arm to detect a position of the optical sensor. The system can access one-dimensional distances or two- or three-dimensional images output by these sensors; and can derive and track three-dimensional positions of the optical sensor along the track.

[0021] In another implementation, the gantry or mobile platform and the joints of the robotic arm can include positional encoders (e.g., magnetic encoders) configured to output a signal corresponding to a position of the robotic arm on the conveyor or the angular position of the joint of the robotic arm. The system can compile the set of encoder signals to derive a position of the end effector and therefore the optical sensor. However, the system can implement any other method or technique to track three-dimensional positions of the robotic arm, optical sensor, and / or a reference point during a scanning or processing cycle.

[0022] In one implementation, the system can locate and articulate an end effector (e.g., a sanding head) according to the method described in U.S. Patent Application No. 18 / 232,275, filed on 09-AUG-2023.

[0023] The controller: triggers the actuators of the system to traverse the optical sensor proximal the workpiece; and triggers the optical sensor to capture scan data to complete a scan. A scan can define a single “pass” of the optical sensor about a scan path, while scan data includes the scan data captured by the optical sensor along that scan path according to a set of scan parameters. A scan cycle defines a set of scans and a set of corresponding scan data captured during the set of scans. The system can compile the scan data into a virtual model of the workpiece defining a target resolution (e.g., exhibiting an error and hole size within a threshold error or hole size).

[0024] For example, the system can execute a baseline scan cycle to generate a baseline model defining a maximal resolution. The baseline scan cycle includes dozens or hundreds of scans characterized by dozens or hundreds of permutations of scan paths and sets of scan parameters. The system can then: compile the scan data from the set of scans included in the baseline scan cycle; and assemble a baseline virtual model of the workpiece defining the maximal resolution. The system can also execute a scan cycle to generate a virtual model defining a resolution less than the maximal resolution of the baseline virtual model. For example, the system can execute a scan protocol to capture a set of data to generate a virtual model representing the workpiece defining a minimal resolution.3.4. _ Optical Sensors

[0025] Generally, the system can include a set of optical sensors configured to capture two-dimensional and / or three-dimensional scan data representing the workpiece.3.4.1 _ Low-resolution Optical Sensor

[0026] In one implementation, the system includes a low-resolution optical sensor, such as a two-dimensional color camera configured to capture two-dimensional color images of the workpiece. In this implementation, the system: navigates the camera, via the robotic arm, to an image location wherein the workpiece is within the field of view of the camera; and triggers the camera to capture an image of the workpiece. Based on the image of the workpiece, the system detects markers on the workpiece..4.2 _ High-resolution Optical Sensor

[0027] The system can include a high-resolution optical sensor, such as a laser line scanner configured to: emit light (e.g., a laser) toward the workpiece; and capture light (e.g., emitted light reflected back to the optical sensor) via a light receptor. Based on an elapsed time between emission and capture of the light (e.g., a time of flight), the system can derive a distance between the optical sensor and the workpiece. Therefore, by emitting and capturing light while traversing the optical sensor across a surface of the workpiece during a scan, the system can derive a surface contour of the workpiece.3.5. _ Marker

[0028] In one implementation, the marker includes a material different from the material of the workpiece attached or adhered to the workpiece. For example, the marker can include tape applied to the surface by an operator of the system in an arrangement configured to bound a region of the workpiece for selective processing. In another example, the marker can include an ink stamped or drawn onto the workpiece wherein the ink exhibits a different reflectivity than the workpiece.

[0029] In one implementation, the workpiece is characterized by a first reflectivity and the marker is characterized by a second reflectivity different from the first reflectivity. In this implementation, the marker will reflect a different proportion of the light emitted by the optical sensor to the optical sensor than the workpiece. For example, for a mirror- finished workpiece and a matte marker, the workpiece may reflect 90% of the light emitted by the optical sensor to the optical sensor for capture while the marker may reflect 5% of the light emitted by the optical sensor to the optical sensor. The optical sensor thereby captures less light from the marked region of the workpiece (e.g., the region covered by tape) than from the non-marked region of the workpiece. Therefore, a virtual model generated from the scan data of the optical sensor for this workpiece will include a low density or absence of data proximal the marked region.

[0030] In one implementation, the marker can include light projected onto the surface of the workpiece. During scanning of the workpiece, the optical sensor will collect scan data including areas of high light intensity corresponding to marked regions of the workpiece. Therefore, the system can detect the marker on the workpiece corresponding to the high light intensity regions of scan data.3.6. Coarse Resolution Workpiece Scan

[0031] Generally, the system can execute Blocks of the third method S300 to: scan a workpiece; and detect a workpiece region denoted by a marker on the workpiece.

[0032] The third method S300 includes coarsely scanning the workpiece by: navigating an end effector over the workpiece; accessing a set of images captured by a low-resolution optical sensor arranged on the end effector while traversing the workpiece; and compiling the set of images into a virtual model representing unloaded surfaces of the workpiece. Generally, the system can implement methods and techniques described in U.S. Patent Application No. 18 / 111,470 to: autonomously navigate a low-resolution optical sensor (e.g., a color camera) over the workpiece; capture optical images (e.g., photographic color images) of the workpiece; and assemble these optical images into a coarse virtual three-dimensional model that represents surfaces of the workpiece within a wide dimensional tolerance.

[0033] For example, after the operator loads the workpiece into the work zone and confirms processing limits for the workpiece, the system can initiate a scan cycle. During the scan cycle, the system can: navigate the optical sensor - located on the end effector - along the scan path over and offset above the workpiece; monitor a distance between the end effector and the workpiece based on scan data collected by the optical sensor; and implement closed-loop controls to maintain a target offset distance between the optical sensor and the workpiece (e.g., 20”, 50 centimeters). In this example, for a workpiece defining an elongated geometry including a long axis located approximately parallel a longitudinal axis of the work zone, the system can actuate a conveyor supporting the robotic arm to traverse the robotic arm along the longitudinal axis of the work zone while traversing the end effector and the optical sensor laterally across the work zone to capture a sequence of optical images representing all surfaces of the workpiece accessible by a sanding head on the end effector.

[0034] The system can thus capture coarse scan data - such as color photographic images - from a set of optical sensors arranged on the end effector while traversing the end effector across (e.g., over, and not in contact with) the workpiece.

[0035] The system can then compile these images into a coarse (e.g., low- resolution, low data density) virtual three-dimensional model of the workpiece as described in U.S. Patent Application No. 18 / 111,470.

[0036] However, the system can implement any other methods or techniques to navigate the end effector and optical sensor over the workpiece, to collect optical images of the workpiece, and to generate a virtual three-dimensional model of the workpiece based on these optical images.

[0037] The system can therefore execute Blocks of the third method S300 to: autonomously capture images of a workpiece occupying a work zone during a contactless coarse scan of the workpiece; and compile these scan data into a coarse virtual three- dimensional model.3.6.1 _ Marker Detection: Template Matching

[0038] In one implementation, the system detects the marker within an image or coarse virtual model of the workpiece via template matching. For example, the system can: detect an absence of data within the virtual model; derive a geometry of the absence of data within the virtual model; access a set of marker templates; and match the geometry of the absence of data to a marker template of the set of marker templates. Therefore, the system can detect the marker based on a database of marker templates. Further, in response to detecting the marker, the system defines the toolpath based on the marker template (e.g., generates a toolpath instruction according to the dimensions of the marker template).

[0039] In this implementation, the system can generate marker templates such as by: executing a scan cycle of a set of markers on a workpiece; assembling the images from the coarse scan into a coarse virtual model including the set of markers; characterize the geometry of each marker; and store a representation of the geometry of the marker within a template database.

[0040] In one implementation, the system can detect the marker within an image or virtual model of the workpiece based on parameters of the marker. For example, the system can: detect an absence of data within the virtual model; derive a length parameter of the absence of data within the virtual model and a width parameter of the absence of data within the virtual model; access a set of parameter dimensions; identify a first parameter dimension of the set of parameter dimensions approximating the length parameter; and identify a second parameter dimension of the set of parameter dimensions approximating the width parameter. Therefore, similar to the process of template matching, the system detects the feature in the image or virtual model as a marker based on matching parameters (e.g., dimensions, colors, textures, patterns) of the marker within the image or virtual model to a set of stored parameters. In response to the marker matching one or more stored marker parameters, the system defines the toolpath based on the stored marker parameters (e.g., defines a length of the toolpath corresponding to the stored length parameters).

[0041] In one implementation, the system can detect a marker in an image or coarse virtual model of the workpiece based on a color of the marker. In this implementation, the system can: access a target color of the marker (e.g., a target color selected by an operator matching the color of the marker); access the image of the workpiece; detect a set of pixels within the image characterized by the target color; and, in response to the set of pixels defining a target geometry (e.g., a target width, a target variance indicating parallel edges, etc.) identify the set of pixels within the image as a marker.

[0042] However, the system can execute any other method for detecting the marker on the workpiece based on a coarse virtual model or image of the workpiece.,2.7. _ Fine Resolution Workpiece Scan

[0043] In one implementation, the system can additionally or alternatively execute a fine scanning cycle (e.g., high-resolution scan) of the whole workpiece or a region of the workpiece to derive a high-accuracy location of the boundary of the target region (e.g., the marker)

[0044] Generally, the system can execute Blocks of the third method S300 to detect a workpiece region and selectively process (e.g., sand, buff, polish) the workpiece region. In particular, the system executes the third method S300 by: accessing a virtual model defining a geometry of a workpiece; by a set of actuators, navigating an optical sensor about the workpiece; accessing an image of the workpiece; detecting a marker, on the workpiece, depicted in the image; defining a first workpiece region of the workpiece bounded by the marker; defining a toolpath within the first workpiece region based on a geometry of the first workpiece region represented in the virtual model; assigning a first target force to the first toolpath; and executing a processing cycle on the workpiece according to the toolpath and the first target force.

[0045] The system executes the third method S300 to selectively process a target region of the workpiece. In one example, the system selectively sands a region of the workpiece exhibiting a defect (e.g., a scratch, an uneven surface finish) to remove the defect and blend the region with a remaining area of the workpiece beyond the target region. In another example, the system selectively buffs a target region of the workpiece including a different color paint than another region of the workpiece to prevent smudging of the paint into other regions of the workpiece. Therefore, the system can: detect a region for selective processing; and execute a processing cycle of the region to achieve a target surface finish of the region..7.1 _ Marker Detection

[0046] As described above, in one implementation, the system traverses the high- resolution optical sensor (e.g., a laser line scanner) across the workpiece or a region of the workpiece to capture high-accuracy depth data defining a surface contour of the workpiece or the region of the workpiece.

[0047] In one implementation, the high-resolution optical sensor captures low- density data or no data for regions of the workpiece covered by the marker. In this implementation, when the scan data from the optical sensor is assembled into a virtual model, the system detects the marker as a “hole” (e.g., absence of data) in the model. The system can: assemble a high-resolution virtual model from the scan data exhibiting a low data density region or hole corresponding to the marker; execute an edge detection algorithm about the low data density region to interpolate a first edge of the marker and a second edge of the marker opposite and parallel the first edge; and, in response to the edge detection algorithm identifying two parallel edges (e.g., exhibiting a variance of + / - .5mm per 200 mm) offset by a threshold distance (e.g., a stored marker width, 15mm, 1 inch) the system identifies the hole as a marker.

[0048] In response to identifying the hole in the virtual model as a marker, the system can generate a toolpath rule indicating that an actuator of the system not actuate a sanding head of the system past a boundary of the marker. However, if the system detects parallel edges offset by a distance greater than the threshold distance or nonparallel edges, the system identifies the hole as an error and triggers the set of actuators to traverse the optical sensor over the workpiece again to capture new scan data. Therefore, the system is configured to detect markers and distinguish markers from other edges and / or holes of the workpiece and the virtual model.

[0049] In one implementation, the system can execute a template matching algorithm, as described above, to detect the marker by matching a geometry of the marker to a known marker geometry of a set of known marker geometries.3.7.2 _ Hole Detection

[0050] In one implementation, the system evaluates a series of scan data by assembling the scan data into a virtual model and detecting areas exhibiting an absence of data (e.g., a hole).

[0051] In one implementation, the system: detects an area of low-density data or an area exhibiting an absence of data within the virtual model; characterizes the geometryof the area; in response to the geometry of the area defining a width greater than a maximum width (e.g., above all known marker widths by more than 25%) generates a new set of scan parameters for the optical sensor to capture additional scan data of the area of the workpiece including the hole. The system can iteratively identify a geometry of holes within a virtual model and generate new scans until the geometry of the holes define a width approximating a known width of a set of known marker widths (e.g., .5”, 1”, 2”, 3”).

[0052] In one implementation, the system extracts a length and width of the hole (e.g., the area exhibiting low density data or an absence of data). The system can detect the hole as a marker in response to: the ratio of the width to the length exceeding a nominal tape ratio (e.g., 1:5); the variance of widths along the edges of the hole defining a variance less than a nominal variance (e.g., + / -5%); and the location of the area including the hole corresponding to a location of a marker detected within an image of the workpiece captured by the low resolution image sensor.3.7.3 _ Marker Edge Smoothing

[0053] In one implementation, the marker can exhibit a non-constant geometry. For example, during marking of the workpiece via tape, an operator may apply the tape in a twisted or folded configuration resulting in non-linear or otherwise abnormal (e.g., jagged, discontinuous) boundaries of the tape. Therefore, the system can interpolate a smooth boundary corresponding to the boundary of the marker.

[0054] For example, during edge detection of the marker, the system can fit a function (e.g., a line or a curve) to the boundary of the tape at a location where the scan data defines a lowest density.

[0055] In one implementation, the system can: identify a degree of abnormality of the marker boundary (e.g., a variance from the fitted function); in response to a high degree of abnormality (e.g., a marker boundary defining jagged edges), generate a toolpath including actuating the sanding head a first offset distance (e.g., 5mm) from the marker boundary; and, in response to a low degree of abnormality (e.g., a smooth or well- fitted marker boundary), generate a toolpath including actuating the sanding head a second offset distance less than the first offset distance (e.g., imm) from the marker boundary. Therefore, the system navigates the sanding head proximal the boundary of the marker based on an initial condition of the marker to generate a smooth boundary of the processed region.3-7-4 Marker Symbols

[0056] In one implementation, as shown in FIGURE 12, the workpiece marker of the workpiece can define a symbol indicating a region to process or avoid processing.,2.7.4.1 _ Keep-out Region

[0057] For example, as shown in FIGURE 12, a region can include a marker boundary and an “X” symbol within the boundary. In this example, the “X” denotes a keep-out region indicating a region of the workpiece to avoid processing. Other examples of symbols denoting a keep-out region can include: markers that do not form a continuous enclosed area; markers defining a geometry approximating a forward slash (“ / ”) or a black slash (“\”). However, the system can be programmed to detect any other symbol or shape of marker as a keep-out zone indication.,2.7.4.2 _ Multiple Markers

[0058] In one implementation, the system can process a region of the workpiece based on the position of multiple markers. For example, the system can detect a first marker including: a first side; a second side opposite the first side; and a first geometry. The system can further detect a second marker: arranged proximal the first side of the first marker; and defining a second geometry different from the first geometry (e.g., defining an “X” symbol). The system, therefore, defines the region for processing as the region bounded by the second side of the marker based on the second marker arranged proximal the first side of the marker. As shown in FIGURE 12, the second marker (e.g., the “X” marker) is arranged within the boundary of the first marker such that the second marker is proximal the first side of the first marker. Therefore, the system generates a toolpath to process the region proximal the second side of the marker (e.g., outside of the first marker).

[0059] Conversely, for a workpiece including a second marker outside of a region bounded by the first marker, the system can generate a toolpath to process only the region within a boundary defined by the first marker.

[0060] Additionally, a marker can define any geometry, color, pattern, or other feature and, based on the feature of the marker, the system can identify a region to process.3-7-5 Workpiece Edge Detection

[0061] In one implementation, the system is configured to: detect edges of the workpiece; and detect target regions based on the locations of the workpiece edge and the maker.

[0062] For example, the system can: detect a first absence of data within the virtual model; detect the first absence of data as a marker by matching the geometry of the absence of data to a known marker geometry width ( e.g., .25”, 1”, or 1.5” ); detect a noncontiguous boundary of the marker partially bounding a region of the workpiece; detect a second absence of data within the virtual model; define the second absence of data as a workpiece edge by detecting a geometry of the second absence of data defining a width greater than the known marker geometry width; and define the workpiece edge as the boundary of the region to complete the non-contiguous boundary of the region corresponding to the marker.

[0063] In one implementation, the system can detect a corner of the workpiece as the target region based on detecting multiple edges of the workpiece and a single marker proximal multiple edges of the workpiece segmenting the workpiece into the corner region and the non-corner region. Similarly, the system can detect a region of the workpiece including an edge of the workpiece as the target region based on detecting an edge of the workpiece and multiple markers framing the edge of the workpiece. Additionally, the system can detect a region inset from the edges of the workpiece based on a marker or a set of markers defining a contiguous or nearly contiguous boundary around a region.3.8. _ Processing Multiple Regions

[0064] In one implementation, the system can process multiple regions of the workpiece based on the marker. For example, for a workpiece including a sharp convex edge and a region on each side of a convex edge, the system can detect a marker along the convex edge and separately process the regions on either side of the marker. Therefore, the system avoids sanding over the convex edge while achieving a consistent finish on each side of the edge up to the edge.

[0065] In one implementation, the system can detect the marker on the workpiece based on the image by: detecting a first side of the marker; and detecting a second side of the marker, opposite the first side. Then, the system can define the first workpiece region bounded by the first side of the marker. During the processing cycle, the system navigates the sanding head across the first workpiece region according to the first toolpath by:navigating the sanding head according to the first target force to generate a first surface finish of the first workpiece region.

[0066] The system can additionally: define a second workpiece region bounded by the second side of the marker; define a second toolpath within the second workpiece region; assign a second target force different from the first target force to the second tool path; and, during a second processing cycle, navigate the sanding head according to the second toolpath and the second target force to generate a second surface finish of the second workpiece region different from the first surface finish of the first workpiece region.

[0067] Therefore, the system can execute Blocks of the third method S300 to: define two separate regions on opposite sides of the marker; define two toolpaths; and process each region according to the corresponding toolpath.3.9. _ Process Example

[0068] Generally, the system can identify a region for selective processing and process the region by: accessing a virtual model defining a geometry of a workpiece; by a set of actuators, navigating an optical sensor about the workpiece; accessing an image of the workpiece; detecting a marker, on the workpiece, depicted in the image; defining a first workpiece region of the workpiece bounded by the marker; defining a toolpath within the first workpiece region based on a geometry of the first workpiece region represented in the virtual model; and assigning a first target force to the first toolpath. Then, during a processing cycle the system can: access a first sequence of force values output by a force sensor coupled to the sanding head; via the set of actuators, navigate the sanding head across the first workpiece region according to the first toolpath; and, based on the first sequence of force values, deviate the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece proximal the first target force.

[0069] In particular, as shown in FIGURE 14, the system can: navigate a camera to an image capture location; and trigger the camera, occupying the image capture location, to capture an image of the workpiece. The camera: captures a two-dimensional black- and-white or color image of the workpiece; and transmits the image to the computer system. The computer system (e.g., the system) can: access the image; extract features from the image including a pixel value (e.g., light intensity and / or color) for each pixel of the image; and, based on the pixel values, detect a marker on the workpiece. For example, the system can detect the marker by: accessing a database of marker features including marker colors and geometries; and identifying a set of pixels in the image matching amarker feature (e.g., identifying a grouping of blue colored pixels in the image approximating a target marker color and target marker geometry within the database of marker features). Therefore, the system can detect the marker on the workpiece based on the two-dimensional image of the workpiece.

[0070] The system can, based on the marker in the image, define an approximate location of the marker relative to the workpiece to generate a target region for the optical sensor to scan. In one implementation, the system can derive a location of the marker relative to edges of the workpiece. For example, the system can: access the capture location of the image; detect edges of the workpiece within the image; detect the marker within the image; derive a relative distance between the marker and the workpiece; and characterize the location of the marker based on distances between the marker and the workpiece (e.g., the marker is located in a lower right quadrant of the workpiece or the marker is located between 1 / 3 and 2 / 3 of the length of the workpiece and ¥4 and ¥2 of the height of the workpiece). The system can then define the approximate location of the marker as a target region of the workpiece. In one implementation, the system adds a buffer distance (e.g., 1-10 inches past each edge of the maker) around the approximate location of the marker to ensure that the marker is within the target region. Therefore, based on the image, the system can define a region of the workpiece as the target region.

[0071] The system can continue the scanning process by navigating the optical sensor (e.g., a laser scanner) about the target region to capture scan data. Via the set of actuators, the system can traverse the optical sensor about the target region to generate scan data defining a surface contour of the marked region. In one implementation, the system can traverse the optical sensor about the target region according to a previously derived scan protocol. For example, if a scan protocol is available for the workpiece, the system can identify a region of the scan protocol corresponding to the target region; and navigate the optical sensor about the target region according to the region scan protocol. However, if no scan protocol is available, the system can navigate the optical sensor about the target region according to a different set of scan parameters.

[0072] The system can: assemble the scan data of the target region (including a surface contour of the marked region) into a three-dimensional virtual model of the marked region of the workpiece; and, based on the virtual model, identify an accurate location of marker edges (e.g., boundaries) via edge detection as described above. The system can then generate a toolpath to selectively process the marked region.

[0073] In the foregoing implementation, the system can decrease the surface area scanned by the optical sensor by restricting the navigation of the optical sensor to withinthe target region. Therefore, by decreasing the area of the workpiece “scanned” by the optical sensor, the system can decrease the computational complexity of the third method S300 and decrease a latency of the process while defining a high-accuracy location of the marker and processing the workpiece within according to that high-accuracy location.3.Q.1 _ Process Variation: No Optical Sensor, Camera Only

[0074] As described above, the system can: detect the marker based on an image of the workpiece; and derive an approximate location of the marker relative to the features (boundaries, edges) of the workpiece. In one implementation, the system can then: access an existing virtual model (e.g., a computer-aided-design model, baseline model, etc.) of the workpiece; project the marker onto the virtual model; and derive a location of the marked region based on the projection of the marker onto the virtual model.

[0075] For example, the system can: access a virtual model (e.g., computer-aided- design model or baseline model) defining a three-dimensional representation of the geometry of the workpiece; navigate a color camera about the workpiece to capture an image of the workpiece; access the image captured by the color camera; access a target marker color and a target marker geometry; detect a set of pixels within the image defining the target marker color and the target marker geometry within the image; project the marker onto the computer-aided-design model based on the image; derive a coordinate location bounded by the marker of a first virtual region corresponding to the first workpiece region of the computer-aided-design model; calculate boundaries of the workpiece region based on the coordinate location bounded by the marker of the first virtual region; define a set of toolpath coordinates within the boundaries of the workpiece region; and navigate the sanding head to the set of toolpath coordinates within the boundaries of the workpiece region.3.Q.2 _ Process Variation: No Camera, Optical Sensor Only

[0076] In another implementation, the system can detect the marker via the optical sensor. For example, a workpiece may be marked before a scan protocol cycle of the workpiece. Therefore, during execution of the scan protocol cycle, the optical sensor captures scan data including the marker (e.g., including holes corresponding to the marker) and the system can detect the marker without capturing an image of the workpiece.

[0077] For example the system can: navigate the optical sensor (e.g., a laser scanner) about the entire workpiece to capture a set of scan data representing a surfacecontour of the workpiece; access the set of scan data representing the surface contour of the workpiece; assemble the set of depth data into a virtual model representing the surface contour of the workpiece; access a target marker geometry; detect the marker in the virtual model approximating the target marker geometry; derive a coordinate location bounded by the marker of a first virtual region; calculate boundaries of the workpiece region based on the coordinate location bounded by the marker of the first virtual region; define a set of toolpath coordinates within the boundaries of the workpiece region; and, during a processing cycle, navigate the sanding head to the set of toolpath coordinates within the boundaries of the workpiece region. .10. _ Tool Path Generation

[0078] The system can further implement methods and techniques described in U.S. Patent Application No. 18 / 111,470 to define a toolpath within each region of the workpiece.

[0079] In one implementation, the system can set a first feed rate for the first region proportional to the target force assigned to the first region. The system can also set a first stepover distance between segments of a first toolpath for a first region of the workpiece: based on (e.g., proportional to) the target force assigned to this region of the workpiece; and / or proportional to a minimum radius within the first region of the workpiece. The system can then: define a serpentine or boustrophedonic toolpath within the first region of the workpiece according to the nominal stepover distance; and store this first toolpath as a first set of keypoints, wherein each keypoint represents a vertex or other point on the toolpath, defines a three-dimensional position on the workpiece, includes a vector normal to the workpiece at this three-dimensional position, and is labeled with the target force and the feed rate set for the first region. More specifically, the system can project the first toolpath onto the first region of the workpiece represented in the virtual model. The system can then extract a three-dimensional position and normal vector of each vertex or other point on the first toolpath from the virtual model. Accordingly, the system can store the first toolpath as a first ordered sequence of keypoints: located on a first unloaded surface of the workpiece stored in (i.e., represented by) the virtual model; and contained within the first workpiece region.

[0080] In one variation, the system can iteratively adjust this first toolpath based on local radii of the workpiece along segments of the first toolpath. Additionally or alternatively, the system can adjust target forces assigned to segments of the first toolpath: proportional to local radii of convex subregions of the workpiece adjacent thesetoolpath segments; and inversely proportional to radii of concave subregions of the workpiece adjacent these toolpath segments. Accordingly, the system can set a force greater than the nominal target force within a concave subregion of the workpiece and a target force less than the nominal target force within a convex subregion of the workpiece. The system can repeat this process for each other region of the workpiece.

[0081] Alternatively, the system can implement the foregoing methods and techniques to generate a single continuous toolpath spanning the entire workpiece (or an entire surface of the workpiece selected for autonomous processing by the system).

[0082] In one implementation, the system can generate the first toolpath by: defining the first toolpath including a first ordered sequence of keypoints located on the third virtual model; and, for each keypoint in the first ordered sequence of keypoints, calculating a vector normal to the third virtual model at a location of the keypoint on the third virtual model and storing the vector in the keypoint. The system navigates the sanding head across the first workpiece region according to the first toolpath and deviates the sanding head from the first toolpath by: for a first keypoint in the first ordered sequence of keypoints, via the set of actuators, locating the sanding head at a first position intersecting the first keypoint and aligning an axis of the sanding head to a first vector contained in the first keypoint; and driving the sanding head, coaxial with the first vector, toward the workpiece to match force values, in the first sequence of force values read from the force sensor to the nominal target force.

[0083] In another implementation, the system can generate the toolpath by: identifying the first workpiece region, defining a convex surface profile, in the geometry of the workpiece; and generating the first toolpath defining a first continuous path across the first workpiece region of the workpiece. Then, during the processing cycle, the system can detect a first sequence of positions of the sanding head traversing the first workpiece region by detecting the first sequence of positions of a reference point while the sanding head traverses the first workpiece region, the reference point located on a sanding pad mounted to the sanding head and coaxial an axis of rotation of the sanding head.3.10.1 _ Toolpath Modifications Based on MarkerGenerally, the system can define and modify the toolpath based on the marker on the workpiece to generate an accurate surface finish along an edge of the marker.

[0084] In another implementation, the system can define the toolpath to generate a blended edge (e.g., an edge along the marker boundary exhibiting a finish blended with the workpiece beyond the marker boundary). For example, the system is configured todefine an edge toolpath along a boundary of the marker, the edge toolpath including: maintaining the sanding disc of the sanding head normal to a surface of the workpiece outside of a threshold radius of the boundary of the marker; and deflecting the sanding head to a non-normal orientation within the threshold radius (e.g., 2mm) of the boundary of the marker to generate a blended edge finish along the boundary of the marker, as shown in FIGURE 13B.3.10.2 _ Hard Sanding Edge

[0085] In one variation, the system can: receive a selection of a “hard” edge finish (e.g., an edge that is not blended with the workpiece outside of the target region); and define a toolpath to generate a “hard” edge.

[0086] In this variation, the system can: divide the target region of the workpiece into an inner target region inset from the boundary of the marker and an outer target region interposed between the inner target region and the boundary (e.g., proximal the boundary); generate a first toolpath instruction to set an axis of the sanding head normal to the surface of the workpiece within the inner target region; and generate a second toolpath instruction to deviate the axis of the sanding head from normal (e.g., tilt the sanding head) within the outer target region. For example, within the outer target region, the system can: traverse the edge of the sanding pad along and slightly inset from (e.g., by one millimeter) the boundary of the target region; and prioritize material removal along the boundary of the target region. In one example, the system can: generate a toolpath instruction to tilt the sanding head 50from normal toward the marker and execute the processing cycle according to the toolpath instruction.3.1Q.3 _ Smooth Sanding Transition

[0087] In one variation, the system can: receive selection of a “smooth” edge finish (e.g., an edge of the target region that is blended with the workpiece outside of the target region); and define a toolpath to generate the “smooth” edge.

[0088] In this variation, the system can: divide the target region of the workpiece into an inner target region inset from the boundary of the marker and an outer target region interposed between the inner target region and the boundary (e.g., proximal the boundary); assign a nominal target force of the handing head against the workpiece to the inner target region; and assign a variable target force to the outer target region. For example, the variable target force can include a force that reduces from the nominal forceto a null force as the sanding head approaches the target region boundary (e.g., the marker).3.11. Processing Cycle

[0089] In one implementation, the third method S300 includes accessing a first sequence of force values output by a force sensor coupled to a sanding head arranged on the end effector during a processing cycle. Via the set of actuators coupled to the end effector, the system can: navigate the sanding head across the first workpiece region according to the first toolpath; and, based on a first sequence of force values, deviate the sanding head from the first toolpath to maintain forces of the sanding head on the first workpiece region proximal the first target force.

[0090] Generally, the system can implement methods and techniques described in U.S. Patent Application No. 18 / 111,470 to autonomously navigate the sanding head along a toolpath (e.g., a sequence of keypoints) defined within a region of the workpiece and to maintain a target normal force between the sanding head and the workpiece by selectively moving the sanding head toward and away from the workpiece normal to the surface of the workpiece represented in the virtual model.

[0091] The system can also implement closed-loop controls to maintain a target force between the sanding head and the workpiece within each workpiece region - based on force values read from the force sensor integrated into the sanding head - by driving the sanding head toward and away from the workpiece along vectors normal to the workpiece, such as represented in keypoints of these toolpaths or extracted from the virtual model during the processing cycle. For example, for a first keypoint in the first ordered sequence of keypoints, the system can drive the set of actuators to: locate the sanding head at a first three-dimensional position intersecting the first keypoint; align an axis of the sanding head to a first vector contained in the first keypoint; and drive the sanding head, coaxial with the first vector, toward the workpiece to match force values, in a sequence of force values read from the force sensor in the sanding head, to a first target force assigned to a first toolpath containing the first keypoint. The system can then drive the set of actuators to interpolate a three-dimensional path and sanding head orientation from the first keypoint to the second keypoint while implementing closed- loop controls to apply the sanding head to the workpiece with the first target force. The system can repeat this process for each other keypoint defined along the first toolpath and then along subsequent toolpaths defined for other regions of the workpiece.

[0092] In another implementation, the system can define a first ordered sequence of keypoints located on the virtual model. For each keypoint in the first ordered sequence of keypoints, the system can: calculate a vector normal to the virtual model at a location of the keypoint on the virtual model; and store the vector in the keypoint. The system can then store the first ordered sequence of keypoints as the first toolpath. Then, for a first keypoint in the first ordered sequence of keypoints, the system can: locate the sanding head at a first position intersecting the first keypoint; align an axis of the sanding head to a first vector contained in the first keypoint; and drive the sanding head, coaxial the first vector, toward the workpiece to match force values, in the first sequence of force values read from the force sensor, to the first target force.

[0093] In one implementation, during the processing cycle, the system can: access a first sequence of force values output by a force sensor coupled to a sanding head arranged on an end effector; via a set of actuators coupled to the end effector, navigate the sanding head across the first workpiece region according to the first toolpath; based on the first sequence of force values, deviate the sanding head from the first toolpath to maintain forces of the sanding head on the first workpiece region proximal the first target force; and detect a first sequence of positions of the sanding head traversing the first workpiece region. The system can then: interpret a first surface contour in the first workpiece region based on the first sequence of positions; access a first dimensional tolerance assigned to the first target surface defined in the target model; detect a first difference between the first surface contour and a first target surface, corresponding to the first surface contour, defined in the target model; and, in response to the first difference exceeding the first dimensional tolerance, generate a second toolpath for the first workpiece region. During a second processing cycle, via the set of actuators, the system can navigate the sanding head across the first workpiece region according to the second toolpath.

[0094] In one implementation, navigating the sanding head across the first workpiece region includes navigating the sanding head across the first workpiece region via the set of actuators including the robotic arm supporting the end effector and a sanding head, the sanding head including an orbital sander. The system can access the first sequence of force values by accessing the first sequence of force values output by the force sensor arranged between the end effector and the sanding head.3.11.1 Decrease Force

[0095] In one implementation, the system is configured to decrease a force between the toolhead (e.g., the sanding head) and the workpiece when the toolhead is proximal the marker.

[0096] In this implementation, the system can define a toolpath within the marked region by: generating a first toolpath segment proximal a center of the first workpiece region; and generating a second toolpath segment proximal a boundary of the marker. The system can then: assign a first target force to the first toolpath segment; and assign a second target force less than the first target force to the second toolpath segment. During the process cycle, the system can: navigate the sanding head along the first toolpath segment within a center of the first workpiece region; deviate the sanding head from the first toolpath segment to maintain forces of the sanding head on the workpiece proximal the first target force; navigate the sanding head along the second toolpath segment along the boundary of the marker; and deviate the sanding head from the second toolpath segment to maintain forces of the sanding head on the workpiece proximal the second target force.

[0097] Therefore, the system is configured to reduce force on the toolhead proximal the marker to create a blended surface finish proximal the marker.3.11.2 _ Wear Modeling

[0098] In one implementation, the system is additionally configured to generate a wear model indicating an abrasive degradation of the sanding head. Generally, the system can modify processing parameters for the workpiece - such as target force, feed rate, toolpath stepover distance, and / or sanding head orientation relative to the workpiece - in real-time during the processing cycle based on abrasive degradation across the sanding pad according to the method described in U.S. Patent Application No. 18 / 136,241.

[0264] The systems and methods described herein can be embodied and / or implemented at least in part as a machine configured to receive a computer-readable medium storing computer-readable instructions. The instructions can be executed by computer-executable components integrated with the application, applet, host, server, network, website, communication service, communication interface, hardware / firmware / software elements of a user computer or mobile device, wristband, smartphone, or any suitable combination thereof. Other systems and methods of the embodiment can be embodied and / or implemented at least in part as a machine configured to receive a computer-readable medium storing computer-readable instructions. The instructions can be executed by computer-executable componentsintegrated by computer-executable components integrated with apparatuses and networks of the type described above. The computer-readable medium can be stored on any suitable computer readable media such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or any suitable device. The computer-executable component can be a processor but any suitable dedicated hardware device can (alternatively or additionally) execute the instructions.

[0265] As a person skilled in the art will recognize from the previous detailed description and from the figures and claims, modifications and changes can be made to the embodiments of the invention without departing from the scope of this invention as defined in the following claims.

Claims

CLAIMSI claim:

1. A method comprising:• accessing a virtual model of a workpiece;• accessing a nominal toolpath for the workpiece;• accessing a nominal target force assigned to the nominal toolpath;• accessing a first set of images depicting the workpiece;• based on the first set of images, detecting a first defect in a first workpiece region of the workpiece;• in response to characterizing the first defect as repairable via material removal from the workpiece, generating a repair toolpath for the first workpiece region based on a first geometry of the first workpiece region represented in the virtual model;• during a repair cycle, via a set of actuators coupled to a sanding head, navigating the sanding head across the first workpiece region according to the repair toolpath; and• during a processing cycle: o accessing a first sequence of force values output by a force sensor coupled to the sanding head; and o via the set of actuators:■ navigating the sanding head across the workpiece according to the nominal toolpath; and■ based on the first sequence of force values, deviating the sanding head from the nominal toolpath to maintain forces, applied by the sanding head to the workpiece, proximal the nominal target force.

2. The method of Claim 1, further comprising:• based on the first defect, assigning a target repair force, greater than the nominal target force, to the repair toolpath; and• during the repair cycle: o accessing a second sequence of force values output by the force sensor; and o via the set of actuators:■ based on the second sequence of force values, deviating the sanding head from the repair toolpath to maintain forces, applied by the sanding head to the workpiece, proximal the target repair force.

3. The method of Claim 2:• wherein navigating the sanding head across the first workpiece region according to the repair toolpath during the repair cycle comprises navigating the sanding head across the first workpiece region according to the repair toolpath during a first time period; and• wherein navigating the sanding head across the workpiece according to the nominal toolpath during the processing cycle comprises navigating the sanding head across the workpiece according to the nominal toolpath during a second time period succeeding the first time period.

4. The method of Claim 1:• wherein navigating the sanding head across the workpiece during the processing cycle comprises: o navigating the sanding head within a second workpiece region of the workpiece and toward the first workpiece region according to the nominal toolpath during a first time period; and• wherein accessing the first set of images comprises: o in response to the sanding head reaching the first workpiece region during the first time period:■ pausing the processing cycle; and■ navigating an end effector, supporting the sanding head and an optical sensor, over the first workpiece region to capture the first set of images via the optical sensor; and• further comprising: o in response to pausing the processing cycle:■ initiating the repair cycle within the first workpiece region during a second time period succeeding the first time period; and o in response to completion of the repair cycle within the first workpiece region during the second time period:■ resuming the processing cycle during a third time period succeeding the second time period.

5. The method of Claim 1:• wherein generating the repair toolpath comprises generating the repair toolpath defining a boustrophedonic geometry contained within the first workpiece region and spanning the first defect;• wherein navigating the sanding head across the first workpiece region during the repair cycle comprises navigating the sanding head within the first workpiece region;• wherein accessing the nominal toolpath for the workpiece comprises accessing the nominal toolpath for the workpiece spanning the first workpiece region and a second workpiece region of the workpiece; and• wherein navigating the sanding head across the workpiece during the processing cycle comprises navigating the sanding head across the first workpiece region and the second workpiece region.

6. The method of Claim 1:• further comprising: o accessing a nominal feed rate assigned to the nominal toolpath; and o accessing a repair feed rate, less than nominal feed rate, specified for defects;• wherein navigating the sanding head across the first workpiece region during the repair cycle comprises: o navigating the sanding head along the repair toolpath at the nominal feed rate; and o in response to the sanding head approaching the first defect, navigating the sanding head along the repair toolpath at the repair feed rate; and• wherein navigating the sanding head across the workpiece during the processing cycle comprises navigating the sanding head across the workpiece at the nominal feed rate.

7. The method of Claim 1:• further comprising navigating an optical sensor over and offset from the workpiece during a global scan cycle;• wherein accessing the first set of images depicting the workpiece comprises accessing the first set of images, characterized by a first resolution, captured by the optical sensor during the global scan cycle;• wherein accessing the virtual model of the workpiece comprises generating the virtual model of the workpiece based on the first set of images;• wherein accessing the nominal toolpath for the workpiece comprises generating the nominal toolpath based on a geometry of the workpiece represented in the virtual model; and• further comprising: o in response to detecting the first defect in the first workpiece region of the workpiece based on the first set of images, navigating the optical sensor over and offset from the first workpiece region of the workpiece during a local scan cycle; o accessing a second set of images, characterized by a second resolution greater than the first resolution, captured by the optical sensor during the local scan cycle; and o based on the second set of images, characterizing the first defect as repairable via material removal from the workpiece.

8. The method of Claim 7:• further comprising: o based on the first set of images, detecting a second defect indicator in a second workpiece region of the workpiece; o in response to detecting the second defect in the second workpiece region of the workpiece, navigating the optical sensor over and offset from the second workpiece region of the workpiece during a second local scan cycle; o accessing a third set of images, characterized by the second resolution, captured by the optical sensor during the second local scan cycle; and o based on the third set of images, characterizing the second defect as irreparable via material removal from the workpiece; and o in response to characterizing the second defect as irreparable via material removal from the workpiece:■ generating a notification to manually repair the second defect in the second workpiece region; and■ serving the notification to an operator; and• wherein generating the nominal toolpath comprises generating the nominal toolpath excluding the second workpiece region.

9. The method of Claim 7, further comprising, in response to characterizing the second defect as irreparable via material removal from the workpiece:annotating the virtual model with a location of the second defect on the workpiece; and rendering the virtual model on a display. io. The method of Claim 8:• wherein characterizing the first defect as repairable via material removal from the workpiece comprises: o extracting a first set of features from a first image, in the second set of images, depicting the first workpiece region of the workpiece; and o characterizing the first defect as a paint sag based on the first set of features; and• wherein characterizing the second defect as irreparable via material removal from the workpiece comprises: o extracting a second set of features from a second image, in the third set of images, depicting the second workpiece region of the workpiece; and o characterizing the second defect as a gouge based on the second set of features. n. The method of Claim 1:• wherein accessing the first set of images comprises accessing the first set of images comprising depth maps captured by a depth sensor navigated over the workpiece; and• wherein detecting the first defect comprises detecting the first defect based on a three- dimensional surface discontinuity, present in the first workpiece region of the workpiece, based on the first set of images.

12. The method of Claim 1:• wherein accessing the first set of images comprises accessing the first set of images comprising photographic images captured by a color camera sensor navigated over the workpiece; and• wherein detecting the first defect comprises detecting the first defect based on a two- dimensional color discontinuity detected in a first photographic image, in the first set of images, depicting the first workpiece region of the workpiece.

13. The method of Claim 1, further comprising:• characterizing the first defect indicator as the first defect of a first defect type based on features detected in the second set of images;• annotating the virtual model with: o the first defect type at a location of the first defect; and o characteristics of the repair toolpath.• further comprising navigating an optical sensor over and offset from the workpiece during a scan cycle;• wherein accessing the first set of images depicting the workpiece comprises accessing the first set of images comprising photographic images captured by the optical sensor during the global scan cycle;• wherein detecting the first defect in the first workpiece region of the workpiece based on the first set of images comprises: o extracting a first set of features depicting the first workpiece region of the workpiece from the first set of images; o detecting the first defect based on the first set of features; o characterizing a first size of the first defect based on the first set of features; and o characterizing a first severity of the first defect proportional to the first size;• further comprising: o extracting a second set of features depicting a second workpiece region of the workpiece from the first set of images; o detecting a second defect in the second workpiece region of the workpiece based on the second set of features; and o characterizing a second size, less than the first size, of the second defect based on the second set of features; and o characterizing a second severity, less than the first severity, of the second defect proportional to the second size;• wherein generating the repair toolpath for the first workpiece region comprises generating the repair toolpath for the first workpiece region further in response to the first severity exceeding a threshold severity; and• wherein accessing the nominal toolpath for the workpiece comprises, in response to the second severity score falling below the threshold severity, generating the nominal toolpath, spanning the second workpiece region and a third workpiece region of the workpiece, based on a geometry of the workpiece represented in the virtual model.

14. A method comprising:• accessing a virtual model of a workpiece;• accessing a first image depicting a first workpiece region of the workpiece;• based on the first image, detecting a first defect in the first workpiece region of the workpiece;• in response to characterizing the first defect as repairable via material removal from the workpiece, generating a first toolpath for the first workpiece region based on a first geometry of the first workpiece region represented in the virtual model;• accessing a second toolpath for a second workpiece region of the workpiece;• accessing a nominal target force assigned to the workpiece;• during a repair cycle, via a set of actuators coupled to a sanding head, navigating the sanding head across the first workpiece region according to the repair toolpath; and• during a processing cycle: o accessing a sequence of force values output by a force sensor coupled to the sanding head; and o via the set of actuators:■ navigating the sanding head across the second workpiece region of the workpiece according to the second toolpath; and■ based on the sequence of force values, deviating the sanding head from the second toolpath to maintain forces, applied by the sanding head to the second workpiece region of the workpiece, proximal the nominal target force.

15. The method of Claim 14, further comprising:• based on the first defect, assigning a target repair force, greater than the nominal target force, to the repair toolpath; and• during the repair cycle: o accessing a second sequence of force values output by the force sensor; and o via the set of actuators:■ based on the second sequence of force values, deviating the sanding head from the repair toolpath to maintain forces, applied by the sanding head to the workpiece, proximal the target repair force.

16. The method of Claim 14:• wherein navigating the sanding head across the second workpiece region during the processing cycle comprises:o navigating the sanding head within the second workpiece region of the workpiece and toward the first workpiece region according to the nominal toolpath during a first time period;• wherein accessing the first set of images comprises: o in response to the sanding head reaching the first workpiece region during the first time period:■ pausing the processing cycle; and■ navigating an end effector, supporting the sanding head and an optical sensor, over the first workpiece region to capture the first set of images via the optical sensor; and• further comprising: o in response to pausing the processing cycle:■ initiating the repair cycle within the first workpiece region during a second time period succeeding the first time period; and o in response to completion of the repair cycle within the first workpiece region during the second time period:■ resuming the processing cycle during a third time period succeeding the second time period.

17. The method of Claim 14:• further comprising navigating an optical sensor over and offset from the workpiece during a global scan cycle;• wherein accessing the first set of images depicting the workpiece comprises accessing the first set of images, characterized by a first resolution, captured by the optical sensor during the global scan cycle;• wherein accessing the virtual model of the workpiece comprises generating the virtual model of the workpiece based on the first set of images;• wherein accessing the nominal toolpath for the workpiece comprises generating the nominal toolpath based on a geometry of the workpiece represented in the virtual model; and• further comprising: o in response to detecting the first defect in the first workpiece region of the workpiece based on the first set of images, navigating the optical sensor over and offset from the first workpiece region of the workpiece during a local scan cycle;o accessing a second set of images, characterized by a second resolution greater than the first resolution, captured by the optical sensor during the local scan cycle; and o based on the second set of images, characterizing the first defect as repairable via material removal from the workpiece.

18. A method comprising:• accessing a virtual model of a workpiece;• accessing a first image depicting a first workpiece region of the workpiece;• based on the first image, detecting a first defect in the first workpiece region of the workpiece;• in response to characterizing the first defect as repairable via material removal from the workpiece: o generating a first toolpath for the first workpiece region based on a first geometry of the first workpiece region represented in the virtual model; and o assigning a target repair force to the first toolpath;• accessing a second toolpath for a second workpiece region of the workpiece; and• during a processing cycle: o accessing a sequence of force values output by a force sensor coupled to a sanding head; and o via a set of actuators coupled to the sanding head:■ navigating the sanding head across the first workpiece region of the workpiece according to the first toolpath; and■ based on the sequence of force values, deviating the sanding head from the first toolpath to maintain forces, applied by the sanding head to the first workpiece region of the workpiece, proximal the target repair force; and o via the set of actuators, navigating the sanding head across the second workpiece region according to the second toolpath.

19. The method of Claim 18:• further comprising navigating an optical sensor over and offset from the workpiece during a global scan cycle;• wherein accessing the first set of images depicting the workpiece comprises accessing the first set of images, characterized by a first resolution, captured by the optical sensor during the global scan cycle; and• wherein accessing the virtual model of the workpiece comprises generating the virtual model of the workpiece based on the first set of images.

20. The method of Claim 18, wherein accessing the sequence of force values comprises accessing the sequence of force values, output by the force sensor, representing forces applied by the sanding head to the workpiece parallel to an axis of rotation of the sanding head.

41. A method comprising:• accessing a target model representing a workpiece;• navigating a probe into contact with the workpiece at a set of probe locations on the workpiece;• detecting a first set of positions of the probe in contact with the workpiece at the set of probe locations;• interpreting a first surface contour of the workpiece based on the first set of positions;• detecting a first difference between the first surface contour and a first target contour, corresponding to the first surface contour, defined in the target model; and• in response to the first difference exceeding a threshold difference: o generating a first toolpath spanning the first surface contour; and o during a processing cycle:■ accessing a first sequence of force values output by a force sensor coupled to an abrasive head;■ navigating the abrasive head across the first surface contour on the workpiece according to the first toolpath to remove material from the first surface contour and to reduce the first difference; and■ based on the first sequence of force values, deviating the abrasive head from the first toolpath to maintain forces of the abrasive head on the workpiece proximal a first target force.

42. The method of Claim 41, further comprising:• generating a second toolpath spanning the first surface contour and a second surface contour on the workpiece; and• during a second processing cycle: o accessing a second sequence of force values output by the force sensor; and o via a set of actuators;■ navigating the abrasive head across the first surface contour and the second surface contour according to the second toolpath; and■ based on the second sequence of force values, deviating the abrasive head from the second toolpath to maintain forces of the abrasive head on the workpiece proximal a second target force and to abrade the first surface contour and the second surface contour to a target surface finish.

43. The method of Claim 42, further comprising:• assigning the first target force to the first toolpath; and• assigning the second target force, less than the first target force, to the second toolpath.

44. The method of Claim 42:• further comprising retrieving a dimensional tolerance of the first surface contour;• wherein generating the first toolpath comprises generating the first toolpath in response to the first difference exceeding the dimensional tolerance by greater than a nominal depth of material removed by the abrasive head when traversing the second toolpath and applied to the workpiece at the second target force; and• wherein navigating the abrasive head across the first surface contour and the second surface contour according to the second toolpath during the second processing cycle comprises: o navigating the abrasive head across the first surface contour and the second surface contour to remove material at the nominal material removal depth from the first surface contour and the second surface contour during the second processing cycle.

45. The method of Claim 41:• wherein navigating the probe into contact with the workpiece at the set of probe locations on the workpiece comprises: o during a second processing cycle preceding the processing cycle, navigating the abrasive head across the workpiece according to a second toolpath spanning the first surface contour and the second surface contour; and• wherein detecting the first set of positions of the probe in contact with the workpiece at the set of probe locations comprises: o recording the first set of positions of the probe, defining a contact area on the abrasive head, in contact with the workpiece during the second processing cycle.

46. The method of Claim 41:• further comprising retrieving a dimensional tolerance of the first surface contour;• wherein generating the first toolpath comprises generating the first toolpath in response to the first difference exceeding the dimensional tolerance; and• further comprising calculating the first target force proportional to the first difference.

47. The method of Claim 41:• wherein generating the first toolpath comprises: o defining the first toolpath comprising an ordered sequence of keypoints located on the first target surface, corresponding to the first surface contour, defined in the target model of the workpiece; and o for each keypoint in the ordered sequence of keypoints:■ calculating a vector normal to the target model at a location of the keypoint on the target model; and■ storing the vector in the keypoint; and• wherein navigating the abrasive head across the workpiece according to the first toolpath during the first processing cycle comprises, during the first processing cycle: o for a first keypoint in the ordered sequence of keypoints:■ locating the abrasive head at a first position intersecting the first keypoint;■ aligning an axis of the abrasive head to a first vector contained in the first keypoint; and■ driving the abrasive head, coaxial with the first vector, toward the workpiece to match force values, in the first sequence of force values read from the force sensor, to the first target force.

48. The method of Claim 41, wherein navigating the abrasive head across the workpiece according to the second toolpath during the second processing cycle comprises, during the processing cycle:navigating the abrasive head, comprising an orbital sanding head loaded with a sanding disk, across the workpiece according to the second toolpath.49- The method of Claim 41:• wherein navigating the abrasive head across the first surface contour during the first processing cycle comprises navigating the abrasive head across the first surface contour via a robotic arm: o comprising a set of actuators; and o supporting the abrasive head, the abrasive head comprising an orbital sander; and• wherein accessing the first sequence of force values comprises accessing the first sequence of force values output by the force sensor arranged between the end effector and the abrasive head.

50. A method comprising:• during a first processing cycle, navigating an abrasive head across a workpiece according to a first toolpath;• detecting a first set of positions of the abrasive head traversing the workpiece;• interpreting a first surface contour of the workpiece based on the first set of positions;• detecting a first difference between the first surface contour and a first target surface, corresponding to the first surface contour, defined in a target model of the workpiece;• generating a second toolpath for the workpiece based on the difference; and• during a second processing cycle: o navigating the abrasive head across the first surface contour of the workpiece according to the second toolpath to reduce the difference; and o based on a sequence of force values output by a force sensor coupled to the abrasive head, deviating the abrasive head from the second toolpath to maintain forces of the abrasive head on the workpiece proximal a target force.

51. The method of Claim 50:• further comprising accessing a first dimensional tolerance assigned to the first target surface defined in the target model; andwherein generating the second toolpath for the first surface contour comprises generating the second toolpath for the first surface contour in response to the first difference exceeding the first dimensional tolerance.

52. The method of Claim 50, further comprising:• accessing a first dimensional tolerance assigned to the first target surface defined in the target model;• during the second processing cycle, detecting a second set of positions of the abrasive head traversing the first surface contour of the workpiece;• interpreting a revised surface contour, corresponding to the first target surface, of the workpiece based on the second set of positions;• detecting a second difference between the revised surface contour and the first target surface defined in the target model; and• in response to the second difference falling below the first dimensional tolerance, confirming correction of the workpiece.

53. The method of Claim 52, further comprising:• during the second processing cycle, detecting a second set of positions of the abrasive head traversing the first surface contour of the workpiece;• based on the first set of positions, interpreting a revised surface contour of the workpiece corresponding to the first target surface defined in the target model; and• in response to the second difference falling below the first dimensional tolerance: o updating the first target surface, defined in the target model of the workpiece, according to the revised surface contour.

54. The method of Claim 50, further comprising:• during a scan cycle prior to the first processing cycle, traversing the optical sensor along a scan path offset from the workpiece;• accessing a set of scan images captured by the optical sensor while traversing the workpiece during the scan cycle;• assembling the set of scan images into a virtual model representing the workpiece;• during the second processing cycle, detecting a second set of positions of the abrasive head traversing the first surface contour of the workpiece;transforming the virtual model into alignment with the first set of positions and the second set of positions; and storing the virtual model as a digital twin of the workpiece.

55. The method of Claim 50:• wherein generating the second toolpath for the first surface contour comprises: o calculating a pitch distance inversely proportional to the difference; and o generating the second toolpath defining a serpentine path comprising a series of interconnected toolpath legs offset by the pitch distance; and• further comprising calculating the second target force inversely proportional to an abrasiveness of the abrasive head.

56. The method of Claim 50:• further comprising o generating the first toolpath based on a geometry of the workpiece represented in the target model; and• wherein navigating the abrasive head across the workpiece during the first processing cycle comprises, during the first processing cycle: o accessing a first sequence of force values output by the force sensor; and o via a set of actuators coupled to the abrasive head:■ navigating the abrasive head across the workpiece according to the first toolpath; and■ based on the first sequence of force values, deviating the abrasive head from the first toolpath to maintain forces of the abrasive head on the workpiece proximal a first target force.

57. The method of Claim 50:• further comprising: o generating the first toolpath comprising a first ordered sequence of keypoints located on the target model; and o for each keypoint in the first ordered sequence of keypoints:■ calculating a vector normal to the target model at a location of the keypoint on the target model; and■ storing the vector in the keypoint; and• wherein navigating the abrasive head across the workpiece according to the first toolpath during the first processing cycle comprises, during the first processing cycle: o for a first keypoint in the first ordered sequence of keypoints:■ locating the abrasive head at a first position intersecting the first keypoint;■ aligning an axis of the abrasive head to a first vector contained in the first keypoint; and■ driving the abrasive head, coaxial with the first vector, toward the workpiece to match force values, in a first sequence of force values read from the force sensor, to a first target force.

58. The method of Claim 50:• wherein generating the second toolpath comprises: o defining the second toolpath comprising an ordered sequence of keypoints located on the first target surface defined in the target model of the workpiece; and o for each keypoint in the ordered sequence of keypoints:■ calculating a vector normal to the target model at a location of the keypoint on the target model; and■ storing the vector in the keypoint; and• wherein navigating the abrasive head across the first surface contour of the workpiece according to the second toolpath during the second processing cycle comprises, during the second processing cycle: o for a first keypoint in the ordered sequence of keypoints:■ locating the abrasive head at a first position intersecting the first keypoint;■ aligning an axis of the abrasive head to a first vector contained in the first keypoint; and■ driving the abrasive head, coaxial with the first vector, toward the workpiece to match force values, in the sequence of force values read from the force sensor, to the target force.

59. The method of Claim 50, wherein navigating the abrasive head across the first surface contour of the workpiece according to the second toolpath during the second processing cycle comprises, during the second processing cycle:navigating the abrasive head, comprising an orbital sanding head loaded with a sanding disk, across the workpiece according to the second toolpath.60.A method comprising:• accessing a target model representing a workpiece;• accessing a first set of positions of a probe in contact with the workpiece at a set of probe locations;• interpreting a first surface contour of the workpiece based on the first set of positions;• detecting a first difference between the first surface contour and a first target contour, corresponding to the first surface contour, defined in the target model; and• based on the first difference: o generating a first toolpath spanning the first surface contour; and o during a processing cycle:■ accessing a first sequence of force values output by a force sensor coupled to an abrasive head;■ navigating the abrasive head across the first surface contour on the workpiece according to the first toolpath to remove material from the first surface contour and to reduce the first difference; and■ based on the first sequence of force values, deviating the abrasive head from the first toolpath to maintain forces of the abrasive head on the workpiece proximal a first target force.

61. A method comprising:• during a processing cycle: o navigating a sanding head across a first workpiece region of a workpiece according to a first toolpath; and o based on a first sequence of force values output by a force sensor coupled to the sanding head, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece region proximal a first target force;• detecting a first sequence of positions of the sanding head traversing the workpiece region;• interpreting a first surface contour of the first workpiece region based on the first sequence of positions;• detecting a first difference between the first surface contour and a first target surface, corresponding to the first workpiece region, defined in a target model of the workpiece;• generating a second toolpath for the first workpiece region based on the difference; and• during a correction cycle: o navigating the sanding head across the first workpiece region according to the second toolpath to reduce the difference.

81. A method comprising:• accessing a virtual model representing a workpiece;• accessing an image of the workpiece;• detecting a marker on the workpiece depicted in the image;• defining a first workpiece region of the workpiece based on the marker;• defining a toolpath within the first workpiece region based on a geometry of the first workpiece region;• accessing a target force assigned to the first toolpath; and• during a processing cycle: o accessing a first sequence of force values output by a force sensor coupled to a sanding head; and o via a set of actuators:■ navigating the sanding head across the first workpiece region according to the first toolpath; and■ based on the first sequence of force values, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece proximal the target force.

82. The method of Claim 81:• wherein accessing the virtual model comprises accessing the virtual model comprising a computer-aided-design model representing a three-dimensional representation of the workpiece;• wherein accessing the image of the workpiece comprises accessing the image comprising a color photographic image captured by a color camera;• wherein detecting the marker on the workpiece depicted in the image comprises: o accessing a target marker color;o detecting a group of pixels, within the image, approximating the target marker color; and o associating the group of pixels with the marker; and• wherein defining the first workpiece region of the workpiece based on the marker comprises: o projecting a first position of the group of pixels, detected in the image, onto the computer-aided-design model; and o defining the first workpiece region proximal the first position.

83. The method of Claim 81:• wherein detecting the marker on the workpiece depicted in the image comprises: o accessing a target marker geometry; o detecting a group of pixels, within the image, approximating the target marker geometry; and o associating the group of pixels with the marker; and• wherein defining the first workpiece region of the workpiece based on the marker comprises: o projecting a first position of the group of pixels, detected in the image, onto the virtual model; and o defining the first workpiece region proximal the first position.

84. The method of Claim 81, wherein accessing the image of the workpiece comprises:• by the set of actuators, navigating an optical sensor about the workpiece during a scan cycle preceding the processing cycle; and• accessing the image captured by the optical camera during the scan cycle.

85. The method of Claim 81, wherein accessing the virtual model representing the geometry of the workpiece comprises:• by the set of actuators, navigating an optical sensor about the workpiece during a scan cycle preceding the processing cycle;• capturing a set of depth maps via the optical sensor; and• assembling the set of depth maps into the virtual model comprising a three- dimensional mesh model.

86. The method of Claim 81:Ill• wherein defining the toolpath within the first workpiece region comprises: o generating a first toolpath segment proximal a center of the first workpiece region; and o generating a second toolpath segment distal the center of the first workpiece region proximal a boundary of the marker; and• wherein assigning the first target force to the first toolpath comprises: o assigning the first target force to the first toolpath segment; and o further comprising assigning a second target force different from the first target force to the second toolpath segment.

87. The method of Claim 86, wherein navigating the sanding head across the first workpiece region during the processing cycle comprises:• navigating the sanding head along the first toolpath segment proximal the center of the first workpiece region;• deviating the sanding head from the first toolpath segment: o to maintain forces of the sanding head on the workpiece proximal the first target force; and o maintaining an axis of rotation of the sanding head normal to the workpiece;• navigating the sanding head along the second toolpath segment proximal the boundary of the marker; and• deviating the sanding head from the second toolpath segment: o to maintain forces of the sanding head on the workpiece proximal the second target force; and o maintaining the axis of rotation of the sanding head normal to the workpiece.88.The method of Claim 81, wherein navigating the sanding head across the first workpiece region during the processing cycle comprises:• navigating the sanding head across the workpiece region according to the first toolpath;• maintaining an axis of rotation of the sanding head normal to the workpiece proximal a center of the workpiece region; and• in response to the sanding head approaching the marker, deviating the axis of rotation of the sanding head from normal to the workpiece.

89. The method of Claim 88, wherein deviating the axis of rotation of the sanding head from normal to the workpiece comprises:• tilting the sanding head toward the marker to preferentially apply a sanding pad, arranged on the sanding head, to the first workpiece region adjacent and offset from the marker.

90. The method of Claim 81, further comprising:• accessing a first set of processing parameters assigned to the first workpiece region, the first set of processing parameters comprising a first target force and a first feed rate;• accessing a wear model representing abrasive degradation of a sanding pad arranged on the sanding head; and• during the processing cycle: o accessing a first sequence of contact characteristics representing contact between a first abrasive area on the sanding pad and the workpiece; o estimating a first abrasive degradation of the first abrasive area based on the wear model and the first sequence of contact characteristics; and o modifying the first set of processing parameters based on the first abrasive degradation.

91. A method comprising:• accessing an image of a workpiece;• detecting a marker, on the workpiece, depicted in the image;• defining a keep-out region of the workpiece based on the marker;• defining a first workpiece region of the workpiece distinct from the keep-out region;• defining a toolpath within the first workpiece region based on a geometry of the first workpiece region;• accessing a target force assigned to the first toolpath; and• during a processing cycle: o accessing a first sequence of force values output by a force sensor coupled to a sanding head; and o via a set of actuators:■ navigating the sanding head across the first workpiece region according to the first toolpath; and■ based on the first sequence of force values, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece proximal the target force.

92. The method of Claim 91, wherein defining the keep-out region of the workpiece based on the marker comprises:• projecting the marker onto a computer-aided-design model based on the image;• deriving a coordinate location based on the marker;• defining an area encircling the marker defining a keep-out region of the computer- aided-design model; and• correlating the keep-out region of the computer-aided-design model to the keep-out region of the workpiece.

93. The method of Claim 91:• wherein detecting the marker, on the workpiece, depicted in the image comprises: o detecting a pair of intersecting segments of tape arranged on the workpiece; and• wherein defining the keep-out region of the workpiece comprises: o interpreting the pair of intersecting segments of tape as a keep-out indicator; and o defining the keep-out region encircling the keep-out indicator.

94. The method of Claim 91:• wherein detecting the marker depicted in the image comprises: o detecting the marker dividing the workpiece into:■ a first segment arranged on a first side of the marker; and■ a second segment arranged on a second side of the marker opposite the first side of the marker;• wherein defining the keep-out region of the workpiece comprises identifying the first segment of the workpiece as the keep-out region based on the marker; and• wherein defining the first workpiece region of the workpiece comprises defining the second segment of the workpiece, opposite and distinct from the marker in the first segment of the workpiece, as the first workpiece region.

95. The method of Claim 91, further comprising:• accessing a set of processing parameters assigned to the first workpiece region, the first set of processing parameters comprising a first target force and a first feed rate;• accessing a wear model representing abrasive degradation of a sanding pad arranged on the sanding head; and• during the processing cycle: accessing a first sequence of contact characteristics representing contact between a first abrasive area on the sanding pad and the workpiece; estimating a first abrasive degradation of the first abrasive area based on the wear model and the first sequence of contact characteristics; and modifying the set of processing parameters based on the first abrasive degradation.

96. A method comprising:• accessing a virtual model representing a geometry of a workpiece;• accessing an image of the workpiece;• detecting a marker, on the workpiece, depicted in the image;• defining a first workpiece region of the workpiece proximal the marker;• defining a toolpath within the first workpiece region based on a geometry of the first workpiece region;• accessing a first target force assigned to the first toolpath; and• during a processing cycle: o accessing a first sequence of force values output by a force sensor coupled to a sanding head; and o via a set of actuators:■ navigating the sanding head across the first workpiece region according to the first toolpath; and■ based on the first sequence of force values, deviating the sanding head from the first toolpath to maintain forces of the sanding head on the workpiece proximal the target force.

97. The method of Claim 96:• wherein accessing the virtual model comprises: o accessing the virtual model comprising a computer-aided-design model representing a three-dimensional representation of the workpiece;• wherein accessing the image of the workpiece comprises:o accessing the image comprising a color photographic image of the workpiece captured by a color camera;• wherein detecting the marker on the workpiece depicted in the image comprises: o accessing a target marker color; o detecting a group of pixels, within the image, approximating the target marker color; and o associating the group of pixels with the marker; and• wherein defining the first workpiece region of the workpiece based on the marker comprises: o projecting a first position of the group of pixels, detecting in the image, onto the computer-aided-design model; and o defining the first workpiece region proximal the first position.

98. The method of Claim 96:• wherein assigning the first target force to the first toolpath comprises: o assigning the first target force to a first toolpath segment of the toolpath; and o assigning a second target force, different from the first target force, to a second toolpath segment of the toolpath; and• wherein navigating the sanding head across the first workpiece region during the processing cycle comprises: o navigating the sanding head along the first toolpath segment proximal a center of the first workpiece region; o deviating the sanding head from the first toolpath segment to maintain forces of the sanding head on the workpiece proximal the first target force; o navigating the sanding head along the second toolpath segment proximal the marker; and o deviating the sanding head from the second toolpath segment to maintain forces of the sanding head on the workpiece proximal the second target force.

99. The method of Claim 96:• wherein accessing the virtual model comprises: o accessing the virtual model comprising a computer-aided-design model representing a three-dimensional representation of the workpiece;• wherein detecting the marker on the workpiece depicted in the image comprises: o accessing a target marker geometry;o detecting a group of pixels, within the image, approximating the target marker geometry; and o associating the group of pixels with the marker; and• wherein defining the first workpiece region of the workpiece based on the marker comprises: o projecting a first position of the group of pixels, detected in the image, onto the computer-aided-design model; and o defining the first workpiece region proximal the first position.

100. The method of Claim 96, wherein defining the first workpiece region of the workpiece based on the marker comprises:• scanning a segment of the image, proximal the marker, for a defect; and• in response to detecting the defect in the image, defining the first workpiece region, spanning the defect, in the virtual model.