Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
TOOLPATH GENERATION FOR SURFACES OF COMPUTER-AIDED DESIGN (CAD) OBJECTS
Document Type and Number:
WIPO Patent Application WO/2024/039374
Kind Code:
A1
Abstract:
A computing system (100) may include a surface identification engine (108) configured to identify a surface of a 3D computer-aided design (CAD) object (202, 302) and a toolpath generation engine (110) configured to generate a toolpath to perform an operation on the surface (210, 310, 410). The toolpath generation engine (110) may generate the toolpath by constructing a path based on a medial axis of the surface, a convex hull of the surface, or a medial axis of a convex hull of the surface, performing a curve-smoothing process on the path, adjusting the path to account for a collision point detected in the path, and outputting the path as the generated toolpath. The toolpath generation engine (110) may further be configured to provide the toolpath for performing the operation on a physical surface modeled by the 3D CAD object (202, 302).

Inventors:
JOSHI ASHISH (US)
DAVYDOV VLADIMIR (US)
LI ZHENQUN (US)
LAN JUN (US)
HAYES THOMAS (US)
LAYCOCK DAVID (GB)
Application Number:
PCT/US2022/040745
Publication Date:
February 22, 2024
Filing Date:
August 18, 2022
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SIEMENS IND SOFTWARE INC (US)
International Classes:
G05B19/19; G05B19/4093; G05B19/4097; G06F30/10
Foreign References:
US20140018953A12014-01-16
US20210397142A12021-12-23
Attorney, Agent or Firm:
CHEN, Lawrence M. (US)
Download PDF:
Claims:
CLAIMS

1 . A method comprising: by a computing system (100, 800): identifying a surface (210, 310, 410) of a 3-dimensional (3D) computer-aided design (CAD) object (202, 302); generating a toolpath for a tool to perform an operation on the surface (210, 310, 410) of the 3D CAD object (202, 302), including by: constructing a path based on a medial axis of the surface, a convex hull of the surface, or a medial axis of a convex hull of the surface; adjusting the path to account for a collision point detected in the path; and outputting the path as the toolpath generated to perform the operation on the surface (210, 310, 410) of the 3D CAD object (202, 302); and providing the toolpath for performing the operation on a physical surface modeled by the 3D CAD object (202, 302).

2. The method of claim 1 , wherein constructing the path based on the medial axis of the surface comprises constructing a surface medial axis path (440) by: determining the medial axis (420) of the surface; determining a longest path of the medial axis (420); and generating the surface medial axis path (440) by removing any branches (430) in the longest path of the medial axis (420) with a branch length that is less than a tool radius of the tool to perform the operation on the surface.

3. The method of claim 1 , wherein constructing the path based on the convex hull of the surface comprises constructing a surface convex hull path (230) by: determining the convex hull of the surface; and constructing the surface convex hull path (230) along the determined convex hull of the surface.

4. The method of claim 1 , wherein constructing the path based on the medial axis of the convex hull of the surface comprises constructing a convex hull medial axis path (330) by: determining the medial axis of the convex hull of the surface; and constructing the convex hull medial axis path (330) along the determined medial axis of the convex hull of the surface.

5. The method of any of claims 1-4, comprising constructing the path according to a user selection indicative of the medial axis of the surface, the convex hull of the surface, or the medial axis of the convex hull of the surface.

6. The method of any of claims 1-5, wherein the collision point comprises an endpoint of a given toolpath segment in the path, and wherein adjusting the path to account for a collision point detected in the path comprises: moving the endpoint of the given toolpath segment to a non-collision point (540) such that a collision no longer occurs in the path at the endpoint of the given toolpath segment; and reconfiguring one or more toolpath segments of the path responsive to determination that moving the endpoint of given toolpath segment causes a toolpath segment violation that includes a toolpath segment loop or a toolpath segment crossover.

7. The method of any of claims 1-5, wherein the collision point comprises a non-endpoint location along a particular toolpath segment of the path, and wherein adjusting the path to account for a collision point detected in the path comprises: performing a binary-subdivision process to add additional noncollision points (640) in the path to replace the particular toolpath segment in the path.

8. A system (100) comprising: a surface identification engine (108) configured to identify a surface of a 3-dimensional (3D) computer-aided design (CAD) object (202, 302); and a toolpath generation engine (110) configured to: generate a toolpath for a tool to perform an operation on the surface (210, 310, 410) of the 3D CAD object (202, 302), including by: constructing a path based on a medial axis of the surface, a convex hull of the surface, or a medial axis of a convex hull of the surface; adjusting the path to account for a collision point detected in the path; and outputting the path as the toolpath generated to perform the operation on the surface (210, 310, 410) of the 3D CAD object (202, 302); and provide the toolpath for performing the operation on a physical surface modeled by the 3D CAD object (202, 302).

9. The system of claim 8, wherein the toolpath generation is configured to construct the path based on the medial axis of the surface by constructing a surface medial axis path (440) by: determining the medial axis (420) of the surface; determining a longest path of the medial axis (420); and generating the surface medial axis path (440) by removing any branches (430) in the longest path of the medial axis (420) with a branch length that is less than a tool radius of the tool to perform the operation on the surface.

10. The system of claim 8, wherein the toolpath generation is configured to construct the path based on the convex hull of the surface by constructing a surface convex hull path (230) by: determining the convex hull of the surface; and constructing the surface convex hull path (230) along the determined convex hull of the surface.

11 . The system of claim 8, wherein the toolpath generation is configured to construct the path based on the medial axis of convex hull of the surface by constructing a convex hull medial axis path (330) by: determining the medial axis of the convex hull of the surface; and constructing the convex hull medial axis path (330) along the determined medial axis of the convex hull of the surface.

12. The system of any of claims 8-11 , wherein the toolpath generation engine (110) is configured to construct the path according to a user selection indicative of the medial axis of the surface, the convex hull of the surface, or the medial axis of the convex hull of the surface.

13. The system of any of claims 8-12, wherein the collision point comprises an endpoint of a given toolpath segment in the path, and wherein the toolpath generation engine is configured to adjust the path to account for a collision point detected in the path by: moving the endpoint of the given toolpath segment to a non-collision point (540) such that a collision no longer occurs in the path at the endpoint of the given toolpath segment; and reconfiguring one or more toolpath segments of the path responsive to determination that moving the endpoint of given toolpath segment causes a toolpath segment violation that includes a toolpath segment loop or a toolpath segment crossover.

14. The system of any of claims 8-12, wherein the collision point comprises a non-endpoint location along a particular toolpath segment of the path, and wherein the toolpath generation engine is configured to adjust the path to account for a collision point detected in the path by: performing a binary-subdivision process to add additional noncollision points (640) in the path to replace the particular toolpath segment in the path.

15. A non-transitory machine-readable medium (820) comprising instructions (822, 824) that, when executed by a processor (810), causes a computing system (800) to perform a method according to any of claims 1-7.

Description:
TOOLPATH GENERATION FOR SURFACES OF COMPUTER-AIDED DESIGN (CAD) OBJECTS

BACKGROUND

[0001] Computer systems can be used to create, use, and manage data for products, items, and other objects. Examples of computer systems include computer-aided design (CAD) systems (which may include computer-aided engineering (CAE) systems and computer-aided manufacturing (CAM) systems), visualization and manufacturing systems, product data management (PDM) systems, product lifecycle management (PLM) systems, and more. These systems may include components that facilitate the design, visualization, and simulated testing of product structures and product manufacture.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Certain examples are described in the following detailed description and in reference to the drawings.

[0003] Figure 1 shows an example of a computing system that supports toolpath generation for surfaces of CAD objects.

[0004] Figure 2 shows an example generation of a toolpath as a surface convex hull path according to the present disclosure.

[0005] Figure 3 shows an example generation of a toolpath as a convex hull medial axis path according to the present disclosure.

[0006] Figure 4 shows an example generation of a toolpath as a surface medial axis path according to the present disclosure. [0007] Figure 5 shows an example adjustment of a path to address detected collision points according to the present disclosure.

[0008] Figure 6 shows an example adjustment of a path to address detected collision segments according to the present disclosure.

[0009] Figure 7 shows an example of logic that a system may implement to support toolpath generation for surfaces of CAD objects.

[0010] Figure 8 shows an example of a computing system that supports toolpath generation for surfaces of CAD objects.

DETAILED DESCRIPTION

[0011] With continuing advances in technology, modern manufacturing processes often involve machines, robots, and other tools performing operations to support product construction. The increasing complexity of modem products can require precise programming to operate tools properly. For example, milling or other machining operations can be robotically performed on product surfaces that are planar and freeform, such as surfaces for gear boxes, engines, oil pump casings, and others for automotive parts. Nearly any type of industry, area of business, or product type can utilize tools to support part manufacture, increasingly so as manufacturing and tool capabilities continue to evolve. Example operations on such products including face milling operations, machining procedures, additive manufacturing processes, and many more.

[0012] Construction of toolpaths for performing operations on part surfaces can be complex and time-consuming. For milling operations, conventional processes may require the sketching of linear or arc segments on a specified surface through a CAD application with CAM features. Tool positions and orientations may need to be expressly specified, in some cases for each discrete location in a toolpath. Sketching processes can take hours, depending on the complexity of a part surface and often times require further validation and toolpath reworking to address detected collisions or other forms of safety or positioning violations. Moreover, manually designed toolpaths can be sub-optimal, traversing a surface in an inefficient or indirect manner that increase tool operation times, draining manufacturing resources and increasing production times.

[0013] The disclosure herein may provide systems, methods, devices, and logic for toolpath generations for surfaces of 3D CAD objects. The toolpath generation technology described herein may provide intelligent and efficient capabilities to construct toolpaths for performing operations on part surfaces as modeled by 3D CAD objects. As some examples, the toolpath generation technology of the present disclosure may support automated generation of toolpaths based on a medial axis of an identified surface of a CAD object, a convex hull of the surface, or a medial axis of the convex hull of the surface. These various toolpath generation capabilities may provide mechanisms to automatically generate toolpaths with increased efficiency and intelligence by leveraging geometric and topological properties of object surfaces.

[0014] Additionally or alternatively, the toolpath generation features of the present disclosure may provide capabilities to smooth toolpaths, adjust toolpaths to address detected collision points, or both. Through such features, toolpath generation according to the present disclosure may be performed with increased efficiency, accuracy, and viability as compared to conventional techniques that can be plagued by user errors and manual geometry specifications. These and various other features of the toolpath generation technology and technical benefits of the present disclosure are described in greater detail herein.

[0015] Figure 1 shows an example of a computing system 100 that supports toolpath generation for surfaces of CAD objects. The computing system 100 may take the form of a single or multiple computing devices such as application servers, compute nodes, desktop or laptop computers, smart phones or other mobile devices, tablet devices, embedded controllers, and more. In some implementations, the computing system 100 hosts, supports, executes, or implements an application that supports the design, modification, and verification of toolpaths for performing operations on part surfaces.

[0016] As an example implementation to support any combination of the toolpath generation features described herein, the computing system 100 shown in Figure 1 includes a surface identification engine 108 and a toolpath generation engine 110. The computing system 100 may implement the engines 108 and 110 (including components thereof) in various ways, for example as hardware and programming. The programming for the engines 108 and 110 may take the form of processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines 108 and 110 may include a processor to execute those instructions. A processor may take the form of single processor or multiprocessor systems, and in some examples, the computing system 100 implements multiple engines using the same computing system features or hardware components (e.g., a common processor or a common storage medium).

[0017] In operation, the surface identification engine 108 may identify a surface of a 3D CAD object. In operation, the toolpath generation engine 110 may generate a toolpath for a tool to perform an operation on the surface of the 3D CAD object, including by constructing a path based on a medial axis of the surface, a convex hull of the surface, or a medial axis of a convex hull of the surface, adjusting the path to account for a collision point detected in the path, and outputting the path as the toolpath generated to perform the operation on the surface of the 3D CAD object. In operation, the toolpath generation engine 110 may also provide the toolpath for performing the operation on a physical surface modeled by the 3D CAD object.

[0018] These and other toolpath generation features and technical benefits according to the present disclosure are described in greater detail next. Figures 2-4 describe various example features for generating toolpaths based on a convex hull of a surface, a medial axis of a convex hull of a surface, and a medial axis of the surface.

[0019] Figure 2 shows an example generation of a toolpath as a surface convex hull path according to the present disclosure. In the example of Figure 2, the surface identification engine 108 identifies a surface of a CAD object 202. The identified surface may specify a particular surface for which to generate a toolpath in order to perform an operation on the particular surface, such as a milling operation. The surface identification engine 108 may identify a given surface of a CAD object in various ways, for example through a user selection, through processing of the CAD object to determine exterior or relevant surfaces, or in any other suitable manner. In Figure 2, the surface identification engine 108 identifies a surface of the CAD object 202 labeled as the surface 210.

[0020] The toolpath generation engine 110 may generate a toolpath for the surface 210 of the CAD object 202 for a tool to perform an operation on the surface 210, such as the tool 220 shown in Figure 2. As noted herein, the toolpath engine 110 may have the capability to generate multiple different types of paths for an identified surface, including constructing a path based on a medial axis of the surface, a convex hull of the surface, or a medial axis of a convex hull of the surface. The toolpath generation engine 110 may construct a path according to a user selection indicative of the medial axis of the surface, the convex hull of the surface, or the medial axis of the convex hull of the surface. As such, the toolpath generation engine 110 may flexibly allow user selection of a particular type of path to construct for an identified surface. Different types of paths can be selected based on the specific geometry of an identified surface, allowing the toolpath generation engine 110 to provide increasingly suitable path types for a particular surface shape.

[0021] In the example of Figure 2, the toolpath generation engine 110 generates a toolpath based on the convex hull of the surface 210, doing so by constructing a surface convex hull path 230. A surface convex hull path may refer to a toolpath generated along or based on a convex hull of a surface. In Figure 2, the toolpath generation engine 110 may construct the path based on the convex hull of the surface 210 by determining a convex hull of the surface, doing so through any suitable geometric analysis of the surface 210 or viable computation technique to determine the convex hull. Then, the toolpath generation engine 110 may construct the surface convex hull path 230 along the determined convex hull of the surface 210. The indices of points that form the convex hull of the surface 210 may be set by the toolpath generation engine 110 as toolpath locations in the constructed surface convex hull path 230. The start and end of the surface convex hull path 230 may be determined by the toolpath generation engine 110 in any suitable manner, e.g., a randomly selected starting point, through user specification, etc.

[0022] In some implementations, the toolpath generation engine 110 may identify local convexities in the boundary (e.g., outer perimeter) of the surface 210 and adjust the surface convex hull path 230 to cover portions of the local convexities. A local convexity may refer to any convex portion of a boundary of the surface 210 (e.g., bounded by concave portions of the boundary), and the toolpath generation engine 110 may identify convex portions of a boundary of the surface 210 in any suitable manner. Then, the toolpath generation engine 110 may determine whether to adjust the surface convex hull path 230 based on a distance threshold between the identified local convexity and the convex hull of the surface 210. For instance, the toolpath generation engine 110 may determine a distance between a closest point of the identified local convexity and the convex hull and determine to adjust the surface convex hull path 230 when the determined distanced exceeds a predetermined threshold. The toolpath generation engine 110 may adjust or construct the surface convex hull path 230 to snap to or otherwise include one or more points of the identified local convexity in the path, thus deviating from the convex hull of the surface 210 but more closely aligning to the actual boundary of the surface 210.

[0023] Through the surface convex hull path 230, the toolpath generation engine 110 may construct a toolpath that can be particularly suitable for specific types of CAD part surfaces. For instance, the toolpath generation engine 110 may construct surface convex hull paths that wrap around the outer boundary of a specified surface. When the tool width (e.g., radius) of the tool 220 is as large as the surface width of the specified surface and the out boundary of the surface generally follows the surface shape, a surface convex hull path may be particularly suited for a generated toolpath for the specified surface.

[0024] Accordingly, the toolpath generation engine 110 may generate a toolpath for a surface of a CAD object in the form of a surface convex hull path. As another example, the toolpath generation engine 110 may generate a path for a CAD object surface based on a medial axis of the convex hull of the surface. Example features of such path construction are described next with reference to Figure 3.

[0025] Figure 3 shows an example generation of a toolpath as a convex hull medial axis path according to the present disclosure. In the example of Figure 3, the surface identification engine 108 identifies the surface 310 of a CAD object 302 and the toolpath generation engine 110 generates a toolpath for a tool 320 to perform on the surface 310. In particular, the toolpath generation engine 110 generates a toolpath based on a medial axis of a convex hull of the surface 310 shown in Figure 3 as the convex hull medial axis path 330. A convex hull medial axis path may refer to a toolpath generated along or based on the medial axis of a convex hull of a surface.

[0026] To generate the convex hull medial axis path 330, the toolpath generation engine 110 may determine a convex hull of the surface 310 and then determine a medial axis of the determined convex hull. Such geometric computations may be performed by the toolpath generation engine 110 in any suitable manner to determine the convex hull, and then the medial axis of the convex hull. Then, the toolpath generation engine 110 may construct the convex hull medial axis path 330 along the determined medial axis of the convex hull of the surface 310. The various points that form the medial axis of the convex hull may be set by the toolpath generation engine 110 as toolpath locations for the convex hull medial axis path 330.

[0027] Through the convex hull medial axis path 330, the toolpath generation engine 110 may construct a toolpath that may be specifically suitable for particular types of CAD part surfaces. For instance, the shape of the convex hull medial axis path 330 may be particularly useful when an operation requirement is to machine with a single profile across a specified surface, allowing the toolpath to ignore holes, cavities, or other empty portions of the surface 310. An example of such a surface shape is shown through the CAD object 302 of Figure 3 in which the specified surface 310 requires a single operation/machining profile across the surface 310. In such cases, the toolpath generation engine 110 may construct the convex hull medial axis path 330 to perform the operation on the surface 310.

[0028] Accordingly, the toolpath generation engine 110 may generate a toolpath for a surface of a CAD object in the form of a convex hull medial axis path. As yet another example feature of the toolpath generation technology of the present disclosure, the toolpath generation engine 110 may generate a path for a CAD object surface based on a medial axis of the surface. Example features of such path construction are described next with reference to Figure 4.

[0029] Figure 4 shows an example generation of a toolpath as a surface medial axis path according to the present disclosure. In the example of a Figure 4, a surface 410 is shown that the surface identification engine 108 may identify (e.g., via user selection. The toolpath generation engine 110 may generate a toolpath for the surface 410 based on the medial axis of the surface. Such a toolpath with toolpath locations along or based on the medial axis of a surface may be referred to herein as a surface medial axis path.

[0030] To generate a surface medial axis path for the surface 410, the toolpath generation engine 110 may determine a medial axis of the surface 410, doing so via any suitable geometric computation, transformation, or other medial axis determination process. In Figure 4, the toolpath generation engine 110 determines the medial axis 420 of the surface 410 and the medial axis 420 includes various branches in which the medial axis 420 splits in different directions at various branch points. Some of the branches of the medial axis 420 are labeled as the branches 430 in Figure 4.

[0031] From the medial axis 420 of the surface 410, the toolpath generation engine 110 may construct a surface medial axis path 440. To do so, the toolpath generation engine 110 may determine a longest path of the medial axis 420, which may refer to a traversal sequence of the medial axis 420 that traverses the entirety of the medial axis 420. Thus, a longest path of the medial axis 420 will traverse each of the branches 430 of the medial axis 420. As an implementation example to determine the longest path of the medial axis, the toolpath generation engine 110 may represent the medial axis 420 as a medial axis graph in which nodes of the medial axis 420 represent points of the medial axis 420 and edges of the medial axis graph represent segments between interconnected points of the medial axis 420. The toolpath generation engine 110 may then determine a longest path of the medial axis 420 through an exhaustive traversal of the medial axis graph such that each node and each edge is traversed.

[0032] While the longest path of the medial axis 420 for the surface 410 may provide a possible toolpath for a tool to traverse the surface 410 to perform an operation, the toolpath generation engine 110 may further process the longest path of the medial axis 420 to improve efficiency and performance. For instance, the toolpath generation engine 110 may prune some portions (e.g., branches) of the longest path of the medial axis 420 based on one or more tool parameters. In some implementations, the toolpath generation engine 110 may generate the surface medial axis path 440 by removing any branches 430 in the longest path of the medial axis 420 with a branch length that is less than a tool radius of the tool (or any other suitable tool parameter) to perform the operation on the surface 410.

[0033] When the tool radius or width exceeds the branch length along the medial axis 420, the tool need not traverse the branch to perform the operation on branch. This may be the case as a traversal of the medial axis 420 ignoring the branch may already cover the branch due to the tool width extending across the branch along the surface 410. As such, the toolpath generation engine 110 may remove any such branch portions of a longest path of the medial axis 420. In the example of Figure 4, the toolpath generation engine 110 constructs the surface medial axis path 440 for the surface 410 in which various branches are pruned (e.g., removed) from a longest path traversal of the medial axis 420 to form the surface medial axis path 440. The pruned branches are also shown in the surface medial axis path 440 of Figure 4 with the “X” marks along the path.

[0034] Accordingly, the toolpath generation engine 110 may construct surface medial axis paths for CAD object surfaces in any of the ways described herein. As also described herein, the toolpath generation engine 110 may construct other paths for surfaces based on convex hulls or medial axes of convex hulls, allowing the toolpath generation engine 110 to flexibly and intelligently construct paths for a given surface as potential toolpaths for a tool to operate on such surfaces.

[0035] As another feature of the present disclosure, the toolpath generation engine 110 may perform smoothing operations on constructed paths. Doing so may allow the toolpath generation engine 110 may improve robotic movement and tool pathing in order to reduce jerkiness and provide natural kinematic motions for tooling operations. The smoothing process applied by the toolpath generation engine 110 may include any suitable process in which a path for a tool is smoothed to reduce sudden or jerky robotic movements. For instance, the smoothing may reduce a number of locations along the path, fit the locations according to a smoother flow, reduce or remove bumps in the path, etc.

[0036] As one example, the toolpath generation engine 110 may smooth a path by arc-fitting the path. In doing so, the toolpath generation engine 110 may remove toolpath locations in the path, such as when the toolpath location density across a selected portion of the path exceeds a threshold density criteria. Additionally or alternatively, the toolpath generation engine 110 may generate arc-fitted segments between toolpath locations (e.g., as opposed to linear segments) to smooth robotic motion. The toolpath generation engine 110 may perform such smoothing techniques through curvilinear filtering and arc-fitting processes.

[0037] As another example, the toolpath generation engine 110 may smooth a path through bump removal. Detection of bumps in a path may be set according to any heuristic or configurable criteria, such as when a deviation of toolpath locations along a straight or curved toolpath portion exceeds a threshold height. Such bumps can typically occur at branch locations of surface medial axis paths, and the toolpath generation engine 110 may detect and smooth such bumps to support toolpaths of increasing uniformity and smoothness. [0038] Through smoothing, the toolpath generation engine 110 may improve the quality of a generated path for machining a given object surface. Another challenge that can arise in toolpath generation is tool collisions with environment elements (including other portions of a manufactured product). The toolpath generation technology of the present disclosure can address detected collision points in various ways, and various example features of addressing collisions in a toolpath are presented next with reference to Figures 5 and 6.

[0039] Figure 5 shows an example adjustment of a path to address detected collision points according to the present disclosure. For paths generated for a surface (e.g., surface medial axis paths, surface convex hull paths, convex hull medial axis paths, smoothed paths, etc.), the toolpath generation engine 110 may adjust the path to account for detected collision points. The toolpath generation engine 110 may detect collision points in paths according to any type of collision criteria, such as when a tool performing an operation along the generated path collides with another physical object. Such collisions can occur between the tool and other parts of a part being manufactured or with environment elements (e.g., factory walls, other tools, etc.). Nearly any type of toolpath violation can be encompassed with collision points that the toolpath generation engine 110 can detect.

[0040] To detect collision points in a generated path, the toolpath generation engine 110 may perform a validation check on a generated path. The validation check may evaluate the tool dimensions and orientation (e.g., 90° normal to the machined surface) at each toolpath location in the evaluated path. For any locations in the path for which the tool is determined to collide with another physical element, a collision point can be detected by the toolpath generation engine 110. Any suitable validation check for detecting toolpath violations may be employed by the toolpath generation engine 110 to detect collision points in generated paths.

[0041] As an illustrative example, the toolpath generation engine 110 may detect collision points for a path 510 generated by the toolpath generation engine 110 (e.g., a smoothed surface medial axis path). In the particular example of Figure 5, the toolpath generation engine 110 detects the collision points 520 shown in Figure 5, which may comprise toolpath locations in the sequence of locations traversed by the path 510 in which a tool collides with a side wall of the environment. Note that the collision points 520 detected in Figure 5 may be toolpath segment endpoints in that the toolpath locations act as endpoints of toolpath segments that together form the path 510.

[0042] The toolpath generation engine 110 may adjust the path 510 to account for the detected collision points 520. In the example of Figure 5, the toolpath generation engine 110 constructs the adjusted path 530 by moving the collision points 520 to corresponding non-collision points 540 on the surface to perform the operation. That is, the toolpath generation engine 110 may move endpoints of given toolpath segments to respective non-collision points 540 such that a collision no longer occurs in the path 510 at the endpoint of the given toolpath segments.

[0043] To move a given collision point to a non-collision point, the toolpath generation engine 110 may alter the location of the given collision point by a minimum (or other threshold) distance such that a collision no longer occurs. The toolpath generation engine 110 may determine such adjustment distances to move collision points 520 based on tool dimensions and environment element positions, e.g., by moving a given collision point such that it is at least a distance away from an environment side wall as the width of the tool used to machine a part surface. As another example, the toolpath generation engine 110 may move each of the collision points 420 in a consistent manner (e.g., each by consistent distance along a vector normal to the environment element causing the collision). Doing so may provide a uniform adjustment to the path 530 to address the detected collisions. Various other forms of collision point adjustments are possible as well, and any suitable mechanism to move collision points 520 to be collision free are contemplated herein. In any such a manner, the toolpath generation engine 110 may determine a respectful collision free location for each of the detected collision points 520, and such collision free locations may comprise the non- collision points 540 of the adjusted path 530. [0044] In adjusting the position of the collision points 520 to be collision free, unwarranted adjustments to a toolpath can occur. As environment elements may be non-uniform in shape, moving of the collision points 520 to collision free locations may cause toolpath segments to crisscross or form loops. In such cases, the traversal sequence of the toolpath locations (including among the collision points 520) may cause the loops and crossovers due to the movement to collision-free locations on the surface. The toolpath generation engine 110 may identify any unwanted consequences of toolpath adjustments based as toolpath segment violations, which may include toolpath segment loops or toolpath segment crossovers. A toolpath segment loop may occur when toolpath segments form an enclosed shape (e.g., triangle, rectangle, etc.). A toolpath segment crossover may occur when two toolpath segments of a path cross over one another.

[0045] Responsive to a determination that moving of the collision points to the non-collision points 520 causes a toolpath segment violation, the toolpath generation engine 110 may reconfigure one or more toolpath segments of the adjusted path 530. The toolpath generation engine 110 may do so by adjusting the traversal sequence of toolpath locations in the adjusted path 530 (including the non-collision points 540) such that no toolpath segment loops and no toolpath segment crossovers occur. Accordingly, the toolpath generation engine 110 may address any undesired or unintended toolpath segment violations that can occur when moving collision points of a generated toolpath to non-collision points.

[0046] After accounting for collision points detected among toolpath locations of a generated path, the toolpath generation engine 110 may further process the path to determine if any toolpath segment collisions occur. Toolpath segment collisions may occur between a tool and environment elements along a toolpath segment (e.g., collision points that occur at nonendpoint portions of the toolpath segments that form a generated toolpath). The toolpath segments for which a collision is detected when traversing the toolpath segments may be referred to as collision segments, and example features for addressing collision segments are described next with reference to Figure 6.

[0047] Figure 6 shows an example adjustment of a path to address detected collision segments according to the present disclosure. In the example of Figure 6, the toolpath generation engine 110 adjusts a path 610 to account for detected collision segments. The path 610 may be an adjusted path that the toolpath generation engine 110 constructs to address collision points in toolpath locations of a path that form endpoints of toolpath segments, and the toolpath generation engine 110 may process the path 610 to determine any collisions that occur along toolpath segments (e.g., collision points detected at non-end point locations along toolpath segments of the path 610).

[0048] To identify collision segments in a path, the toolpath generation engine 110 may perform any suitable validation check or path processing. In that regard, the toolpath generation may implement or access any CAM capabilities to detect collision segments in a toolpath. In Figure 6, the toolpath generation engine 110 identifies two collision segments in the path 610 shown as the collision segments 620. The collision segments 620 are each individual toolpath segments, and each collision segment comprise collision points at non-endpoint locations along the individual collision segments identified in the path 610.

[0049] Responsive to identification of collision segments in the path 610, the toolpath generation engine 110 may adjust the path 610 to account for the detect collision segments (and underlying non-endpoint collision points). As one example, the toolpath generation engine 110 may replace the collision segments 620 with non-collision segments formed by the insertion of additional non-collision points that do not cause or result in collision segments. The inserted additional non-collision points may form new toolpath segments in the path 610 that replace the identified collision segments 620. In the example of Figure 6, the toolpath generation engine constructs an adjusted path 630 in which the collision segments 620 are replaced by toolpath segments formed by additional non-collision points 640 inserted to form the adjusted path 630. [0050] In some implementations, the toolpath generation engine 110 inserts additional non-collision point to replace collision segments through performance of a binary-subdivision process. For a given collision segment, the toolpath generation engine 110 may determine a non-collision point at a center (e.g., midpoint) of the given collision segment. The toolpath generation engine 110 may determine this non-collision point any manner as described herein, e.g., through moving the midpoint of the given collision segment a minimum distance to a collision-free location. The non-collision point may be inserted into the adjusted path as an additional non-collision point, thus splitting the given collision segment into two new toolpath segments. The toolpath generation engine 110 may then determine whether these newly formed toolpath segments through insertion of the first non-collision point are collision segments or not. If neither of the newly inserted toolpath segments are determined as collision segments, then the path has been adjusted such that the given collision segment has been replaced with two non-collision segments, thus accounting for the given collision segment.

[0051] In the case where one or both of the newly inserted toolpath segments is determined to be a collision segment, the toolpath generation engine 110 may then again subdivide the detected collision segment in two through insertion of an additional non-collision point at the center of the detected collision segment. In such a manner, the toolpath generation engine 110 may continue to sub-divide detected collision segments, insert additional non-collision points, and form newly inserted toolpath segments until collision segments remain in adjusting the path for the given collision segment. And in a similar manner, the toolpath generation engine 110 may adjust a path for each other detected collision segment. Thus, the toolpath generation engine 110 may modify paths to address for collision segments.

[0052] In any of the ways described herein, the toolpath generation technology of the present disclosure may support the generating of paths based on surface geometry (e.g., based on medial axes, convex hulls, and medial axes of convex hulls), smoothing of paths to improve robotic motions, and adjusting of paths to account for detected collision points, whether at toolpath segment endpoint or non-endpoint locations. Thus, toolpaths can be generated according to the present disclosure that account for relevant surface geometries, that are smoothed based on any number of smoothing criteria, and are adjusted to account for collisions with environment elements (including other parts of a part itself).

[0053] The toolpath generation engine 110 may provide a generated toolpath for performing an operation on a physical surface modeled by the 3D CAD object. Generated toolpaths may be loaded into the relevant robot or industrial machinery to perform the operation according to the generated toolpath. In other examples, the toolpath generation engine 110 may transmit the generated toolpath to a relevant manufacturing system or store the generated toolpath for subsequent retrieval to perform the operation on a physical surface. In any such ways, the toolpath generation engine 110 may support use of the generated toolpath for performing an operation on a physical surface that is digitally represented by the surfaces of 3D CAD objects.

[0054] Various features of the toolpath generation technology of the present disclosure are described herein. The surface identification engine 108, toolpath generation engine 110, or a combination thereof may implement any combination of any of the features described herein.

[0055] Figure 7 shows an example of logic 700 that a system may implement to support toolpath generation for surfaces of CAD objects. For example, the computing system 100 may implement the logic 700 as hardware, executable instructions stored on a machine-readable medium, or as a combination of both. The computing system 100 may implement the logic 700 via the toolpath generation engine 110, through which the computing system 100 may perform or execute the logic 700 as a method to provide any combination of the toolpath generation features presented herein. The following description of the logic 700 is provided using the toolpath generation engine 110 as an example. However, various other implementation options by computing systems are possible. [0056] In implementing the logic 700, the surface identification engine 108 may identify a surface of a 3D CAD object (702). In implementing the logic 700, the toolpath generation engine 110 may generate a toolpath for a tool to perform an operation on the surface of the 3D CAD object (704), including by constructing a path based on a medial axis of the surface, a convex hull of the surface, or a medial axis of a convex hull of the surface (706), performing a curve-smoothing process on the path (708), adjusting the path to account for a collision point detected in the path (710), and outputting the path as the toolpath generated to perform the operation on the surface of the 3D CAD object (712). In implementing the logic 700, the toolpath generation engine 110 may also provide the toolpath for performing the operation on a physical surface modeled by the 3D CAD object (714).

[0057] The logic 700 shown in Figure 7 provides an illustrative example by which a computing system 100 may support toolpath generations according to the present disclosure. Additional or alternative steps in the logic 700 are contemplated herein, including according to any of the various features described herein for the surface identification engine 108, the toolpath generation engine 110, and any combination thereof.

[0058] Figure 8 shows an example of a computing system 800 that supports toolpath generation for surfaces of CAD objects. The computing system 800 may include a processor 810, which may take the form of a single or multiple processors. The processor(s) 810 may include a central processing unit (CPU), microprocessor, or any hardware device suitable for executing instructions stored on a machine-readable medium. The computing system

800 may include a machine-readable medium 820. The machine-readable medium 820 may take the form of any non-transitory electronic, magnetic, optical, or other physical storage device that stores executable instructions, such as the surface identification instructions 822 and the toolpath generation instructions 824 shown in Figure 8. As such, the machine-readable medium 820 may be, for example, Random Access Memory (RAM) such as a dynamic RAM (DRAM), flash memory, spin-transfer torque memory, an Electrically- Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disk, and the like.

[0059] The computing system 800 may execute instructions stored on the machine-readable medium 820 through the processor 810. Executing the instructions (e.g., the surface identification instructions 822 and the toolpath generation instructions 824) may cause the computing system 800 to perform any aspect of the toolpath generation technology described herein, including according to any of the features of the surface identification engine 108, the toolpath generation engine 110, or a combination thereof.

[0060] For example, execution of the surface identification instructions 822 by the processor 810 may cause the computing system 800 to identify a surface of a 3D CAD object. Execution of the toolpath generation instructions 824 by the processor 810 may cause the computing system 800 to generate a toolpath for a tool to perform an operation on the surface of the 3D CAD object, including by constructing a path based on a medial axis of the surface, a convex hull of the surface, or a medial axis of a convex hull of the surface, adjusting the path to account for a collision point detected in the path, and outputting the path as the toolpath generated to perform the operation on the surface of the 3D CAD object. Execution of the toolpath generation instructions 824 may further cause the computing system 800 to provide the toolpath for performing the operation on a physical surface modeled by the 3D CAD object.

[0061] Any additional or alternative features of the toolpath generation technology as described herein may be implemented via the surface identification instructions 822, toolpath generation instructions 824, or a combination thereof.

[0062] The systems, methods, devices, and logic described above, including the surface identification engine 108 and the toolpath generation engine 110, may be implemented in many different ways in many different combinations of hardware, logic, circuitry, and executable instructions stored on a machine- readable medium. For example, the toolpath generation engine 110 may include or other implement circuitry in a controller, a microprocessor, or an application specific integrated circuit (ASIC), or may be implemented with discrete logic or components, or a combination of other types of analog or digital circuitry, combined on a single integrated circuit or distributed among multiple integrated circuits. A product, such as a computer program product, may include a storage medium and machine-readable instructions stored on the medium, which when executed in an endpoint, computer system, or other device, cause the device to perform operations according to any of the description above, including according to any features of the surface identification engine 108, the toolpath generation engine 110, or any combination thereof.

[0063] The processing capability of the systems, devices, and engines described herein, including the surface identification engine 108 and the toolpath generation engine 110, may be distributed among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems or cloud/network elements. Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may be implemented in many ways, including data structures such as linked lists, hash tables, or implicit storage mechanisms. Programs may be parts (e.g., subroutines) of a single program, separate programs, distributed across several memories and processors, or implemented in many different ways, such as in a library (e.g., a shared library).

[0064] While various examples have been described above, many more implementations are possible.