System and method for collision avoidance routing through modeled assembly

By identifying and converting the 3D model of the assembly, finding available space electrical lines through the assembly, solving the problem of avoiding collisions and minimizing distances during wiring, and achieving efficient and accurate automatic wiring.

CN119442982APending Publication Date: 2025-02-14DASSAULT SYSTEMES SOLIDWORKS CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411033736.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-07-31
Filing Date
2024-07-30
Publication Date
2025-02-14

AI Technical Summary

Technical Problem

When wiring through the assembly, collision with the electromechanical components of the assembly is difficult to avoid, while minimizing distance between connection points.

Method used

By identifying the termination location of the wire route in the 3D model of the assembly, convert the model into a volume model that distinguishes the occupied space from the available space, looking for the wire route through the available space of the assembly, and displaying an image of the route.

Benefits of technology

It realizes automatic determination of the shortest electrical wiring route through the assembly without colliding with the assembly assembly, improving the efficiency and accuracy of the wiring.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119442982A_ABST
    Figure CN119442982A_ABST
Patent Text Reader

Abstract

An effective electrical route through the assembly that avoids collisions with the plurality of electromechanical assembly components is determined. A first wire line termination position and a second wire line termination position in a received three-dimensional (3D) model of the assembly are identified. The received 3D model is converted into a volumetric model that distinguishes between occupied space and available space. A wire route from a first wire route termination position to a second wire route termination position is found through the assembly available space, and an image of the wire route in the model of the assembly is displayed.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to computer-aided design and manufacturing, and more particularly to determining routing paths through an assembly for manufacturing. Background Art

[0002] Routing wires through assemblies that combine electrical and mechanical components is challenging. Often, it is desirable to minimize the point-to-point distance between wiring connections, however the geometry of the assembly may make it difficult to achieve such connections while avoiding collisions with the electromechanical components of the assembly. Routes often begin at a first connection point on an electrical device (e.g., a battery, motor, and control board) and end at a second connection point, passing through various points or areas in the assembly. Finding a good / clear path through the assembly from a first connection point on a first component to a second connection point on a second component is a time-consuming and error-prone process.

[0003] Computer-aided drafting tools such as SolidWorks Electrical rely on predefined circuit paths. Products that have automatic routing capabilities (e.g., SolidWorks Routing) do not consider collisions with other component geometries during their automatic routing process, so users must manually modify the results to avoid collisions. Therefore, the industry needs to address the above shortcomings. Summary of the invention

[0004] Embodiments of the present invention provide collision avoidance for routing wires through a modeled assembly. In short, the present invention relates to determining an effective wire route through an assembly that avoids collisions with multiple electromechanical assembly components. A first wire route termination location and a second wire route termination location in a received three-dimensional (3D) model of the assembly are identified. The received 3D model is converted into a volume model that distinguishes between occupied space and available space. A wire route from a first wire route termination location to a second wire route termination location that passes through the available space of the assembly is found, and an image of the wire route in a model of the assembly is displayed.

[0005] Other systems, methods and features of the present invention will become more apparent or clear to one of ordinary skill in the art after studying the following drawings and detailed description. All of these additional systems, methods and features are included in this specification, are within the scope of the present invention, and are protected by the appended claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] This application includes accompanying drawings to provide a further understanding of the present invention, and the accompanying drawings are incorporated in and constitute a part of this specification. The components in the accompanying drawings are not necessarily drawn to scale, but are intended to more clearly illustrate the principles of the present invention. The accompanying drawings illustrate embodiments of the present invention and, together with the specification, are used to explain the principles of the present invention.

[0007] Figure 1A is a schematic diagram showing a simple bounding box.

[0008] Figure 1B The image is divided into 5×1×1 voxels. Figure 1A The bounding box of .

[0009] Figure 1C The image is divided into 5×2×3 voxels. Figure 1A The bounding box of .

[0010] Figure 2A A stereogram of free voxels near a triangle component is shown.

[0011] Figure 2B The top view shows Figure 2A of free voxels and components.

[0012] Figure 3A A stereogram of the bounding voxels near a triangle component is shown.

[0013] Figure 3B The top view shows Figure 3A The boundary voxels and components of .

[0014] Figure 4A An isometric view of an exemplary battery housing assembly is shown.

[0015] Figure 4B Shows Figure 4A Side view of an exemplary battery housing assembly.

[0016] Figure 4C Shows Figure 4A A top view of an exemplary battery housing assembly.

[0017] Figure 5A Shows Figure 4A An isometric view of the bounding voxels of an exemplary battery housing assembly.

[0018] Figure 5B Shows Figure 5A Side view of the bounding voxels of an exemplary battery housing assembly.

[0019] Figure 5C Shows Figure 5AA top view of the bounding voxels of an exemplary battery housing assembly.

[0020] Fig. 6A Shows Figure 4A An isometric view of a charging port and battery pack within an exemplary battery housing assembly.

[0021] Figure 6B Shows Fig. 6A 0026] A side view of a charging port and battery pack within an exemplary battery housing assembly.

[0022] Figure 6C Shows Fig. 6A A top view of a charging port and battery pack within an exemplary battery housing assembly.

[0023] Fig. 7A Shows Fig. 6A An isometric cutaway view of free voxels around the charging port and battery pack within an exemplary battery housing assembly.

[0024] Figure 7B Shows Fig. 6A A side cross-sectional view of a free voxel surrounding a charging port and battery pack within an exemplary battery housing assembly.

[0025] Figure 8 is a flow chart of an exemplary method embodiment for voxelization of an assembly.

[0026] Fig. 9 is a schematic diagram showing an exemplary two-dimensional voxel map.

[0027] Fig.10 is a flow chart of an exemplary first method embodiment for routing selection of a voxelized assembly.

[0028] Fig.11 is a flow chart of an exemplary second method embodiment for routing selection of a voxelized assembly.

[0029] Fig.12 yes Fig.11 Detail of a portion of the flowchart.

[0030] Fig.13A Shown for FIG. 6A to FIG. 6C Steps for generating the first circuit path in the battery assembly model.

[0031] Fig. 13B Shown is the method for generating Fig.13A The subsequent steps of the first line path.

[0032] Fig. 13C Shows FIG. 13A to FIG. 13B The final line path.

[0033] Fig.13D A second embodiment method applied to a second circuit is shown.

[0034] Fig.13E A top view of the final result of the first and second wire routes 1320 as a result of applying the method of the second embodiment is shown.

[0035] Fig.14 is a schematic diagram showing an example of a system for performing the functions of the present invention.

[0036] Fig.15 is a schematic block diagram of an exemplary embodiment of a system for manufacturing an electromechanical assembly having efficient routing of wires through the assembly that avoids collisions with multiple electromechanical assembly components. DETAILED DESCRIPTION

[0037] The following definitions are useful for explaining terms applied to features of the embodiments disclosed herein, and are meant only to define elements within the present disclosure.

[0038] As used in this disclosure, "assembly" refers to the combination of components that together form a product. "Assembly footprint" refers to the volume of an assembly having mechanical or electrical components.

[0039] As used in this disclosure, "voxel" refers to one of a set of uniform three-dimensional blocks that can be used to approximate the volume of a three-dimensional modeled object. Although the embodiments described herein generally relate to voxels in the shape of cubes, voxels of different shapes may be used in alternative embodiments. Voxels are similar to three-dimensional pixels and can represent any 3D geometric shape. "Occupied voxel" refers to a voxel that intersects with the space occupied by an assembly. "Available voxel" refers to a voxel that does not intersect with the space occupied by an assembly. "Path voxel" refers to an available voxel that intersects with a proposed or determined wire route within an assembly.

[0040] As used in this disclosure, a "mesh" refers to a mathematical structure of triangles used to model a continuous surface.

[0041] As used in this disclosure, "automatic wire routing" refers to a process that receives a three-dimensional (3D) model of an assembly as input and determines the paths of wires between components of the assembly.

[0042] As used in this disclosure, a “gap distance” between a first object and a second object means that the first object and the second object do not intersect at any point.

[0043] As used in the present disclosure, "cost" refers to a measure of distance, and a "cost function" is the length of a path and is minimized through a path-finding process. Specifically, the cost function measures the length of a path from a first point (herein, the starting voxel) to a second point (herein, the ending voxel). The embodiment described below includes a step of minimizing the cost function to find a path of the shortest length. The distance between two voxels can be measured as the distance between their two center points. If there are no obstacles between the starting voxel and the ending voxel, the shortest path is the line segment between the voxel center points. If there is at least one obstacle, the path includes a line segment passing through the center points of two or more voxels. The cost function may involve a combination of iterative processes for extending multiple paths (ideally all possible paths) that start from the starting voxel and continue through some number of intermediate voxels, for example, three intermediate voxels v1, v2, and v3. For example, some voxels are checked in iterative steps, where the cost function can be calculated by the sum of two parts F(v) = G(v) + H(v), where F(v) is the total cost of passing through the intermediate voxels v between the starting voxel and the ending voxel. G(v) is the total cost from the starting voxel to voxel v. G(v) is determined at each iterative step, while H(v) is an estimate of the cost from voxel v to the ending voxel, which can be heuristically estimated through iterations.

[0044] As used in this disclosure, a "computer numerical control" (CNC) machine refers to a manufacturing device or system configured to receive a design or model of an assembly and to use computer software to direct the operation and / or movement of factory tools and machines to manufacture the assembly. Examples of CNC machines may include a milling machine, a lathe, a grinder, a milling machine, a printed circuit board production machine, a CNC router, a pick and place machine, a laser and / or plasma cutting machine, a wire harness assembler, a wire harness installer, and a 3D printer, or a combination thereof, etc.

[0045] Reference will now be made in detail to the embodiments of the present invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numerals are used in the drawings and the description to refer to the same or like parts.

[0046] An exemplary embodiment of the present invention illustrates a method for automatically routing traces through an electromechanical component of an assembly without colliding with other components and maintaining the shortest trace length possible.

[0047] Electromechanical assemblies often involve electrical and / or optical wiring between assembly components. However, previous assembly design tools have not adequately addressed the issue of wire routing. An exemplary embodiment creates a routing for wiring in a 3D modeled assembly. The wiring begins and ends at various connection points (typically at electrical devices such as batteries, motors, and control boards) and passes through various points or areas in the device. Because wiring is often a time-consuming and / or error-prone process, an exemplary embodiment advantageously identifies an efficient, clear path through the assembly from a first connection point on a first component to a second connection point on a second component. For example, a wiring path may pass through an opening or other control point (e.g., a fixture) between a first component and a second component. The present embodiment provides a system and method for automatic wire routing.

[0048] Generally speaking, the automatic wire routing in the 3D modeled assembly according to the present embodiment has two main steps. The first step is to voxelize the modeled assembly into small volumes (usually cubes) called voxels, and identify available voxels (free voxels) and unavailable voxels (boundary voxels). Among them, free voxels can be used for possible wire routes, while unavailable voxels cannot be used for wire routes (for example, occupied in other ways). The second step is to search the available voxels to find the shortest wire route. The 3D modeled assembly can be received by an automated manufacturing machine (for example, a CNC machine) for manufacturing an assembly with a specific wire route.

[0049] For explanation purposes, in the embodiments, "design space" refers to a bounding box around a 3D modeled assembly in a CAD system. The bounding box encompasses all geometric models within the modeled assembly. The design space is divided into voxels. Figure 1A A simple bounding box 100 is shown. Figure 1B The image is divided into 5×1×1 voxels 110. Figure 1A The bounding box of 100. Figure 1C The image is divided into 5×2×3 voxels 120. Figure 1A The bounding box of 100.

[0050] In a first embodiment, voxels are implemented as small cubes along the x, y, z directions in 3D space. The voxel size may be selectable, with smaller voxels producing more accurate results. Given an arbitrary bounding box shape, the cube-shaped voxels may not always lie within the bounding box surface along each of the directions x, y, z. Thus, some voxels may extend outside the surface of the bounding box. The user may specify the voxel side length "a".

[0051] When voxelizing the bounding box of a modeled assembly, it can be assumed that the lowest point of the model bounding box on the x, y, z grid is (X min ,Ymin ,Z min ), the highest point of the model bounding box is (X max ,Y max ,Z max ). There are a total of (n1,n2,n3) voxels.

[0052] Voxels are indexed (i, j, k) along the x, y, z directions, where 0≤i≤n1-1, 0≤j≤n2-1, 0≤k≤n3-1. The voxel itself is its own bounding box, with two extreme values ​​(X min +ia,Y min +ja,Z min +ka)、(X min +ia+a,Y min +ja+a,Z min +ka+a).

[0053] For any point p = (x, y, z) in the model bounding box, it lies in the voxel with the following index:

[0054] In an exemplary embodiment, voxels are used to identify spaces that can be used for wire routing. If a voxel intersects the 3D geometric model, the voxel is identified as unusable for wire routing.

[0055] For routing purposes, the method may assume a line radius r and may consider leaving additional clearance for wire routes outside the physical line so that the routed line does not collide with the model components. The line radius r may be user-selectable and may be specified to include the above-mentioned additional clearance. It should be noted that although the wire route must be within the specified line clearance within the model bounding box, the radius of the wire route outside the model boundary can exceed the specified line clearance. That is, voxels located outside the gap around the boundary are considered to be available or free for the wire route. Any voxel that intersects with the gap around the model boundary is considered to be a boundary voxel. Equivalently, if the minimum distance between a voxel and the model is less than the gap, then the voxel is a boundary voxel. Other voxels are free voxels that can be used for wire routes.

[0056] Figure 2A A perspective view of a free voxel 210 is shown near a triangular component 215. The triangle 215 is depicted to show a gap distance 216 on both sides. The free voxel 210 is not on the boundary of the component 215. Figure 2B The free voxel 210 and the component 215 are shown from a top view.

[0057] Figure 3AA perspective view of a boundary voxel 220 near a triangle component 215 is shown. The boundary voxel 220 is on the boundary of the component 215. The boundary voxel 220 intersects the triangle 215. Figure 3B Boundary voxels 220 and components 215 are shown from a top view.

[0058] There are many ways to calculate the minimum distance between modeled components. For example, a common practice is to use the triangular mesh of the model to calculate the distance between geometric models. In CAD systems, geometric models usually generate triangular meshes for display and other calculations. Voxels can also be triangulated by splitting each square face into two triangles. A straightforward approach is to use a bounding volume hierarchy (BVH) tree to find the minimum distance between two triangular meshes.

[0059] An approximate and more efficient way to identify boundary voxels is to check the minimum distance between the voxel center and the model triangle mesh. If the minimum distance is less than the sum of half the voxel size a and the clearance value r from the triangle of the model mesh, the method marks the voxel as a boundary voxel. dist≤0.5a+r (Equation 3)

[0060] A more conservative approach is to check the diagonal distance

[0061] For a triangle, since it is not necessary to check all voxels in the space, only free voxels close to the bounding box of the triangle can be identified as boundary voxels. The bounding box of the triangle is defined by two extreme points (a minimum point P min =(x min ,y min ,z min ) and a maximum point P max =(x max ,y max ,z max Given the coordinates of three points P1 = (x1, y1, z1), P2 = (x2, y2, z2), and P3 = (x3, y3, z3),

[0062] Only voxels that touch the bounding box are considered potential boundary voxels. min In voxel (i min ,j min ,k min ) and P max In voxel (i max ,jmax ,k max ), then for the embodiment, check i min ≤i≤i max 、j min ≤j≤j max , k min ≤k≤k max All voxels of suffice.

[0063] FIG. 4A to FIG. 4C Three views of an exemplary assembly, here a battery housing assembly, are shown. FIG. 5A to FIG. 5C Shows FIG. 4A to FIG. 4C Three corresponding views of the bounding voxels of the battery housing assembly. FIG. 5A to FIG. 5C The voxels shown in intersect the model's interior and exterior surfaces. Because modeled assemblies often have closed faces, the voxels also correspond to closed faces. FIG. 5A to FIG. 5C In , only voxels that intersect the outer surface are visible. Usually, the boundary voxels are sufficient to identify voxels that cannot be used for routing. 3D models are closed volumes, so the boundary voxels should be assumed to be closed, such as FIG. 5A to FIG. 5C As shown. Although the BSF algorithm can be used to fill the inner and outer voxels according to the boundary voxels, this is not necessary because the wiring cannot pass through the boundary voxels in the wiring method. In order to increase the speed of the entire method, only the boundary voxels are identified.

[0064] FIG. 6A to FIG. 6C Shows Figure 4A 6 and 7. The charging port 620 and battery pack 610 inside the exemplary battery housing assembly of FIG. FIG. 7A to FIG. 7B Shows Fig. 6A A cross section of a free voxel around the charging port 620 and battery pack 610 within an exemplary battery housing assembly. Only free voxels can be used for wire routing.

[0065] Figure 8 800 is a flowchart of an exemplary method embodiment for voxelization of an assembly. It should be noted that, as will be understood by those skilled in the art, any process description or box in the flowchart should be understood to represent a module, segment, portion of code or step including one or more instructions for implementing specific logical functions in the process, and alternative implementations are included within the scope of the present invention, that is, depending on the functions involved, the functions may be performed in a different order than that shown or discussed (including substantially simultaneously or in reverse order).

[0066] As shown in block 810, an assembly bounding box of an assembly having a plurality of components is determined. As shown in block 820, the assembly is divided into a plurality of voxels (n1, n2, n3) in the x, y, z directions. As shown in block 830, a triangular mesh is determined for each of the plurality of components. As shown in block 840, an extreme point P is located for each mesh triangle of each mesh. min and P max As shown in block 850, for each triangle of each triangular mesh, the min and P max The grid bounding box of the two voxel indices is (i min ,j min ,k min ) and (i max ,j max ,k max ).

[0067] As shown in block 860, for index i min ≤i≤i max ,j min ≤j≤j max ,k min ≤k≤k max Find all voxels that intersect the mesh bounding box. As shown in box 870, calculate the voxel-to-triangle distance from the center of each intersecting voxel (i, j, k) to each triangle. As shown in box 880, mark each voxel whose voxel-to-triangle distance is less than a predetermined gap value as a boundary voxel.

[0068] Free voxels can be considered as islands in space separated by boundary voxels.As described further below, for two connection points, the exemplary method locates the two voxels that contain the connection points.

[0069] Voxels form a natural weighted graph in 3D space, the "voxel graph". Voxels can include neighbors by sharing faces, edges and vertices. For each voxel, there are 6 faces, 12 edges and 8 vertices, resulting in a total of 26 possible neighbors. Voxels can be thought of as nodes in a graph. Neighbors determine the connectivity. The 3D Euclidean distance between the two center points of two adjacent voxels is the weight between the two connected nodes in the graph.

[0070] A variety of known path finding algorithms can be used to find the shortest path between any two nodes in a graph, which are used, for example, in game artificial intelligence (AI) and robot path finding. A* (pronounced "A-star") and its variants are the most popular path finding algorithms due to their simplicity and effectiveness (see polyhedral obstacles, ACM Communications 22.10 (1979): 560-570). These methods start from a starting voxel s and iteratively expand to adjacent voxels by selecting the path with the least cost until the ending voxel e is reached. The path finding algorithm generates a path from the starting voxel s to the ending voxel e.

[0071] The cost of the path finding algorithm is defined based on the distance between two adjacent nodes or voxels. The resulting path is not necessarily the shortest distance in the real 3D space, but can approximate the real shortest distance in 3D space. An embodiment uses a path finding algorithm to find the shortest distance path in the voxel map and as the starting point for the final wire route.

[0072] The A* method can only search through faces, edges, and vertices in a specific direction. There may be many turning points in the path generated by A*. If the generated path does not pass through the boundary voxels, then the embodiment can remove the turning points, thereby generating a shorter path. It is desirable to remove as many intermediate turning points as possible along the path. If the line between two points does not pass through the boundary voxels, then the two points can be directly connected. Checking whether the straight line between two points passes through the boundary voxels is called checking the "line of sight". If there are no boundary voxels between the two points, then the two points meet the line of sight.

[0073] For example, Fig. 9 A voxel map 900 is shown with a voxel path (solid line) between a starting voxel 910 and an ending voxel 917. The shaded voxels are boundary voxels 914. The solid line shows the shortest distance from the map of voxel centers containing voxels 910, 911, 912, and 917. However, the actual shortest Euclidean distance between the starting voxel 910 and the ending voxel 917 is the dashed line. The dashed line passes through voxels 910, 911, 916, and 917. Therein, voxel 912 (the "turning point") and voxel 911 can be removed from the (solid line) path, and the two end points 910 and 917 are directly connected (by the dashed line) to form a shorter path.

[0074] If the A* method is used to find a path of voxels, then the method of an embodiment can use line of sight to remove potential turning points using an iterative process starting from checking the first voxel and the third voxel in the path. If the center point of the first voxel and the center point of the third voxel meet the line of sight condition, then the second voxel can be removed from the path. In subsequent iterations, the method similarly checks whether the third voxel can be removed in the same manner. If the third voxel cannot be removed, then the second voxel cannot be removed either, and the process continues to check the second voxel and the fourth voxel. The method iterates accordingly with line of sight until no voxels can be removed.

[0075] The following is a more detailed description of an embodiment combining the A* and line-of-sight methods.

[0076] The method maintains a "parent map" P(v) to keep track of voxels in the previous step(s) along the path. In the path from the starting voxel s to the current voxel v, the voxel P(v) immediately precedes the voxel v.

[0077] The cost function used in the A* algorithm has two parts F(v)=G(v)+H(v). The cost function G(v) is the total weight or distance of the path from the starting voxel s to the current voxel v. The heuristic cost function H(v) is the heuristic distance from the current voxel v to the ending voxel e. There are many forms of estimates for heuristic functions (see Nash, Alex, Sven Koenig, and Craig Tovey, "Lazy Theta*: Any-angle path planning and path length analysis in 3D", Proceedings of the AAAI Conference on Artificial Intelligence, Vol. 24, No. 1, 2010). For example, a simple center distance v between the current voxel v and the ending voxel e can be used so that h(v)=Dist(v,e). The total cost function is F(v)=G(v)+H(v). A closed set C is used to record all voxels already in the path. Voxels already in set C are not considered candidate voxels for the following iterations.

[0078] An embodiment uses a priority queue Q to keep track of all voxels that are candidates to be expanded in subsequent iterations. Voxels in the priority queue Q are neighbors of some voxels in the set C. The steps of path selection are summarized as follows.

[0079] Fig.101000 is a flow chart of a first exemplary method embodiment (A*) for path selection of a voxelized assembly. As shown in box 1010, the method begins by initializing the cost functions G and F, the parent map, and the priority queue of the path from the starting voxel to the ending voxel. For the starting voxel s, set the G cost and the F cost s, t, G(s) = 0, F(s) = H(s). Set the parent map P(s) = s, and insert the pair (s, F(s)) into the priority queue Q.

[0080] The method checks whether the priority queue Q is empty. If the priority queue is empty, the method determines that no path has been found. Otherwise, the method determines the top element, which is the voxel v in Q with the smallest cost function such that v = argmin (x,F(x))∈Q F(x) (Equation 7) As shown in block 1020 , the method adds v to the closed set C .

[0081] As shown in block 1030, if v is not the end voxel e, then the method searches for a neighboring voxel n of v such that n∈Neighbor(v), Neighbor(v) is not a boundary voxel and is not in the closed set C, such that For each valid neighboring voxel n, the method computes a temporary G cost for voxel n by adding the distance between voxel v and its neighboring voxels to G(v), such that G(n) = G(v) + Dist(v,n) (Equation 8) If the value G(n) is less than the original G cost, an embodiment queries the G cost of voxel n using the new value, updates the F cost by F(n) = G(n) + H(n), and updates the parent map P(n) = v. The new pair (n, F(n)) is inserted into the priority queue Q.

[0082] As shown in block 1040 , the method generates a path from the starting voxel to the ending voxel by iteratively adding parent voxels according to the parent map.

[0083] If no path is found, the method determines that no wire route is available and returns an empty wire route. If a path exists, the method uses line of sight to remove the steering voxels, as shown in block 1050. For the remaining voxels, the method performs spline interpolation of the center points and returns the curve as the resulting wire route, as shown in block 1060.

[0084] An enhancement of the above embodiment is to use line of sight during iterations to free up the search direction. This enhancement is actually an arbitrary angle path finding method. An example of this method is called the Lazy Theta* method (see Nash, Alex, Sven Koenig, and Craig Tovey, "Lazy Theta*: Any-angle path planning and path length analysis in 3D", Proceedings of the AAAI Conference on Artificial Intelligence, Vol. 24, No. 1, 2010). As described above, with respect to Fig.10 In block 1030, in the A* method, the parent voxel of the neighboring voxel n is set by the current voxel v, so that P(n) = v. In contrast, the Lazy Theta* method always uses the parent voxel of voxel v for all neighboring voxels n, so that P(n) = P(v). Therefore, potential turning point voxels are skipped in the path. However, voxel n and P(n) may not satisfy the line of sight condition. The line of sight condition is checked before using the neighboring voxel as the current voxel. If the line of sight between the current voxel v and P(v) is not satisfied, the method searches for a new parent voxel p from the neighboring voxels p in the closed set C, so that p∈C. The method selects the parent voxel p with the minimum cost function F(p) among the neighboring voxels that meet the conditions.

[0085] Fig.11 1100 is a flow chart of a second exemplary method embodiment (lazy theta*) for path selection of a voxelized assembly. As shown in box 1010, the method begins by initializing the cost functions G and F, the parent map, and the priority queue of the path from the starting voxel to the ending voxel. For the starting voxel s, set the G cost and the F cost s, t, G(s) = 0, F(s) = H(s). Set the parent map P(s) = s, and insert the pair (s, F(s)) into the priority queue Q.

[0086] The method checks whether the priority queue Q is empty. If the priority queue is empty, the method determines that no path has been found. Otherwise, the method determines the top element, which is the voxel v in Q with the smallest cost function such that v = argmin (x,F(x))∈Q F(x) (Equation 7) As shown in block 1020 , the method adds v to the closed set C .

[0087] As shown in block 1200, the second embodiment checks whether the voxel v and its parent voxel P(v) satisfy the line of sight (LoS) condition. If not, then P(v) needs to be updated. Fig.12 Box 1200 is expanded in FIG. 1 to detail the subroutine for updating P(v).

[0088] As shown in box 1210, find neighboring voxels of voxel v that are also in the closed set. In this embodiment, find all neighbors n of voxel v, such that n∈Neighbor(v), and Neighbor(v) is also in the closed set C. As shown in box 1220, calculate the temporary cost of each neighboring voxel found, wherein the temporary cost F(n)=G(v)+Dist(v,n) of all neighbors n found according to box 1210. As shown in box 1230, find the replacement parent voxel with the minimum temporary cost. In this, the voxel p with the minimum temporary cost F(p) becomes the new parent voxel of voxel v, such that p=argminn from step 3aGv+a. As shown in box 1240, set the replacement parent voxel of voxel v, such that P(v)=p is the parent voxel of voxel v. As shown in box 1250, update the cost, wherein the updated cost is G(v)=G(p)+a and F(v)=G(v)+H(v).

[0089] Back to Fig.11 , as shown in block 1030, if v is not an end voxel, then the method searches for a neighboring voxel n of v such that n∈Neighbor(v), Neighbor(v) is not a boundary voxel and is not in the closed set C, such that For each valid neighboring voxel n, the method computes a temporary G cost for voxel n by adding the distance between voxel v and its neighboring voxels to G(v), such that G(n) = G(v) + Dist(v,n) (Equation 8) If the value G(n) is less than the original G cost, an embodiment queries the G cost of voxel n using the new value, updates the F cost by F(n) = G(n) + H(n), and updates the parent map P(n) = v. The new pair (n, F(n)) is inserted into the priority queue Q.

[0090] As shown in block 1040 , the method generates a path from the starting voxel to the ending voxel by iteratively adding parent voxels according to the parent map.

[0091] If no path is found, the method determines that no wire route is available and returns an empty wire route. If a path exists, the method uses line of sight to remove the steering voxels, as shown in block 1050. For the remaining voxels, the method performs spline interpolation of the center points and returns the curve as the resulting wire route, as shown in block 1060.

[0092] In the following example, the second embodiment (Lazy Theta*) method is applied to FIG. 6A to FIG. 6C Battery assembly model 600. FIG. 13A to FIG. 13CThe steps for generating the first line path are shown. The first line connection point is located at one end of the battery 610, and the second line connection point is located at one end of the charging port 620. Based on the shape of the battery pack 610 and the shape of the battery assembly housing 650, the second embodiment method finds Fig.13A The s-series voxels (blue) are shown. After spline interpolation, Fig. 13B The wire routes (yellow) are exported from the Fig.13A The final line path 1310 generated by this method is Fig. 13C Shown in green.

[0093] Fig.13D A second embodiment method is shown applied to a second line 1320, with one connection located at the upper left of the battery pack 610 and one connection located at the lower portion of the charging port 620. The routing of the second line 1320 is a straight line between the two connection points, and since nothing is blocking the way, the routing method finds the best available solution. Fig.13E A top view of the final result of the first circuit path 1310 and the second circuit path 1320 as a result of applying the method of the second embodiment is shown.

[0094] The voxel implementation is a simple and fast way to generate 3D mesh cells, and is also convenient for routing algorithms. Although less than ideal, other types of 3D meshes can be used with routing algorithms for automatic routing. Exemplary embodiments can naturally be applied to other 3D meshes. For example, all 3D finite element meshes, such as tetrahedral elements and hexahedral elements, can be used directly. These meshes can build graphs with connectivity defined by vertices, edges, or faces, where two adjacent meshes are connected by vertices, edges, or faces. Since finite element meshes can be interpolated into the original geometry, finite element meshes are more accurate on boundaries than voxels. However, the generation cost of finite element meshes is much higher, and subsequent routing requires more mesh distance and line of sight check calculations.

[0095] In alternative embodiments, other path-finding algorithms may be used to search for the shortest wire route distance. For example, Breadth First Search algorithm (BFS), Depth First Search Algorithm (DFS), and Dijkstra algorithm are all feasible after passing through some adjustments. BFS algorithm and DFS algorithm are considered to be much more expensive than A* or Theta* methods. Even Dijkstra algorithm is more time-consuming because it does not consider the search direction. In order to avoid routing artifacts, the line of sight can preferably remove turns and spline interpolation or fitting before the final routing result.

[0096] As mentioned above, the system for performing the functions described in detail above can be a computer, an example of which is shown in Fig.14 . The system 500 includes a processor 502, a storage device 504, a memory 506 in which software 508 defining the above functions is stored, an input and output (I / O) device 510 (or peripheral device), and a local bus or local interface 512 that enables communication within the system 500. As known in the art, the local interface 512 can be, for example, but not limited to, one or more buses or other wired or wireless connections. The local interface 512 can have additional elements (e.g., controllers, buffers (cache), drivers, repeaters, and receivers) omitted for simplicity to enable communication. In addition, the local interface 512 can include addressing, control, and / or data connections to enable appropriate communication between the aforementioned components.

[0097] Processor 502 is a hardware device for executing software, particularly software stored in memory 506. Processor 502 may be any custom or commercially available single-core or multi-core processor, a central processing unit (CPU), a secondary processor among multiple processors associated with the present system 500, a semiconductor-based microprocessor (in the form of a microchip or chipset), a macroprocessor, or generally any device for executing software instructions.

[0098] The memory 506 may include volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.) and non-volatile memory elements (e.g., ROM, hard drive, tape, CDROM, etc.). In addition, the memory 506 may incorporate electronic, magnetic, optical, and / or other types of storage media. Note that the memory 506 may have a distributed architecture in which various components are remote from each other but can be accessed by the processor 502.

[0099] According to the present invention, software 508 defines the functions performed by system 500. As described below, software 508 in memory 506 may include one or more separate programs, each program containing an ordered listing of executable instructions for implementing the logical functions of system 500. Memory 506 may contain operating system (O / S) 520. The operating system essentially controls the execution of programs within system 500 and provides scheduling, input-output control, file and data management, memory management, and communication control and related services.

[0100] I / O devices 510 may include input devices such as, but not limited to, keyboards, mice, scanners, microphones, etc. In addition, I / O devices 510 may also include output devices such as, but not limited to, printers, displays, etc. Finally, I / O devices 510 may also include devices that communicate via input and output, such as, but not limited to, modulators / demodulators (modems; used to access other devices, systems, or networks), radio frequency (RF) or other transceivers, telephone interfaces, bridges, routers, or other devices.

[0101] As described above, when the system 500 is in operation, the processor 502 is configured to execute software 508 stored in the memory 506 , communicate data to and from the memory 506 , and generally control the operation of the system 500 according to the software 508 .

[0102] When the functionality of the system 500 is in operation, the processor 502 is configured to execute software 508 stored in the memory 506, to transfer data to and from the memory 506, and to generally control the operation of the system 500 according to the software 508. The operating system 520 is read by the processor 502, possibly buffered within the processor 502, and then executed.

[0103] When the system 500 is implemented in software 508, it should be noted that the instructions for implementing the system 500 can be stored on any computer-readable medium for use by or in combination with any computer-related device, system or method. In some embodiments, such computer-readable medium can correspond to either or both of the memory 506 or the storage device 504. In the context of this article, a computer-readable medium is an electronic, magnetic, optical or other physical device or apparatus that can contain or store a computer program for use by or in combination with a computer-related device, system or method. The instructions for implementing the system can be embodied in any computer-readable medium for use by or in combination with a processor or other such instruction execution system, device or device. Although the processor 502 has been mentioned by way of example, in some embodiments, such an instruction execution system, device or device can be any computer-based system, a system containing a processor, or other systems that can obtain instructions from an instruction execution system, device or device and execute instructions. In the context of this document, a "computer readable medium" can be any means that can store, communicate, propagate, or transport the program for use by or in connection with a processor or other such instruction execution system, apparatus, or device.

[0104] Such computer readable media may be, for example, but not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, devices, apparatuses, or propagation media. More specific examples of computer readable media (a non-exhaustive list) may include: an electrical connection having one or more conductors (electronic), a portable computer floppy disk (magnetic), a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM, EEPROM, or flash memory) (electronic), optical fiber (optical), and a portable compact disk read-only memory (CDROM) (optical). Note that the computer readable medium may even be paper or other suitable medium on which the program is printed, since the program may be captured electronically, for example, via optical scanning of paper or other media, and then compiled, interpreted, or otherwise processed in a suitable manner if necessary, and then stored in a computer memory.

[0105] In an optional embodiment, in which the system 500 is implemented in hardware, the system 500 may be implemented using any one or a combination of the following technologies, each of which is well known in the art: (one or more) discrete logic circuits having logic gates for implementing logic functions based on data signals, an application-specific integrated circuit (ASIC) having appropriate combinational logic gates, (one or more) programmable gate arrays (PGA), a field programmable gate array (FPGA), etc.

[0106] The above method can be used to control a manufacturing system to produce an assembly with collision-avoiding wire routing, such as Fig.15 The system 1500 is used to manufacture an electromechanical assembly having efficient wire routing through the assembly that avoids collisions with multiple electromechanical assembly components.

[0107] The computer-aided drafting (CAD) system 1510 includes a processor 1512 and a memory 1514. The processor is configured to execute non-transient instructions received from the memory. When executed by the processor 1512, the CAD system 1510 performs the following steps: receiving a three-dimensional (3D) model of an assembly, identifying a first wire route termination position and a second wire route termination position, converting the received 3D model into a volume model that distinguishes between occupied space and available space, and finding a wire route from the first wire route termination position to the second wire route termination position that passes through the available space of the assembly. The CAD system 1510 displays the wire route on a display device 1515. An automated manufacturing machine (e.g., a computer numerical control (CNC) machine 1520) is configured to receive a 3D wire-wiring assembly model from the CAD system 1510 and manufacture a wire-wiring assembly according to the 3D wire-wiring assembly model received from the CAD system 1510. For example, a wire harness assembly device can receive a wire-wiring assembly model to manufacture a wire harness according to a wire path in the wire-wiring assembly model. Similarly, a wiring machine may be used to install a wire harness in a wire routing assembly based on a received wire routing assembly model.

[0108] The above-described embodiments provide several advantages over previous wire routing techniques. For example, system / method input is simple, allowing the user to provide a geometric model that corresponds to the real environment, tolerances or voxel sizes to obtain accuracy and connection points. Thereafter, the wire routing is completely automatic from the user's perspective. The embodiments determine the shortest path from the starting connection point to the ending connection point. The embodiments search for wire routing only in the available space, avoiding interference with existing geometry and lines. The resulting path is (or close to) the shortest possible path. The embodiments adjust the routing along its route to ensure a valid mathematical result for the underlying path.

[0109] It will be apparent to those skilled in the art that various modifications and variations may be made to the structure of the present invention without departing from the scope or spirit of the present invention. In view of the foregoing, the present invention is intended to cover modifications and variations of the present invention within the scope of the appended claims and their equivalents.

Claims

1. A computer-implemented method for determining an efficient wire route through an assembly to be manufactured while avoiding collisions with a plurality of electromechanical assembly components, the method comprising the steps of: Receiving a three-dimensional 3D model of the assembly; identifying a first wire route termination location and a second wire route termination location; Converting the received 3D model into a volume model that distinguishes between a space occupied by the assembly and a space available for the assembly; finding a wire route from a termination position of the first wire route to a termination position of the second wire route that passes through the available space of the assembly; as well as An image of the wire routing in a model of the assembly is displayed.

2. The method according to claim 1, wherein: A plurality of wire routes are found, and the method further comprises determining a shortest wire route among the plurality of wire routes.

3. The method according to claim 2, wherein: The volume model is a voxelized model comprising a plurality of voxels, and the method further comprises the following steps: classifying each voxel of the plurality of voxels into one of a group of usable voxels and unusable voxels, wherein the usable voxels are capable of supporting a portion of the electrical wire route; and The available voxels are searched to find the wire route through the assembly from the first wire route termination location to the second wire route termination location.

4. The method according to claim 3, further comprising the steps of: determining a bounding box of the 3D modeled assembly; Dividing the assembly into a plurality of voxels (n1, n2, n3) in the x, y, z directions; determining a triangular mesh for each electromechanical assembly component of the plurality of electromechanical assembly components; Locate the extreme point P for each mesh triangle of the triangular mesh of each component min and P max , Determine a mesh bounding box for each mesh triangle, the mesh bounding box containing P min and P max and has two voxel indices (i min ,j min ,k min ) and (i max ,j max ,k max ); For index i min ≤i≤i max ,j min ≤j≤j max ,k min ≤k≤k max Find all voxels that intersect the grid bounding box; Calculate the voxel-to-triangle distance from the center of each intersecting voxel (i,j,k) to each triangle; as well as Voxels whose distance from the voxel to the triangle is less than a predetermined gap value are marked as boundary voxels.

5. The method according to claim 3, further comprising the steps of: Initializing a cost function, a parent map, and a priority queue of paths from a starting voxel including the first wire route termination location to an ending voxel including the wire route termination location; adding a first voxel in the priority queue having a first cost value of a minimum cost function to the closed set of path voxels; selecting a second adjacent non-boundary voxel that is not in the closed set; calculating a second cost value for the second voxel and updating the parent map and the priority queue; generating the path by iteratively adding parent voxels according to the parent map; as well as Spline interpolation of the center points is performed and the resulting curve is returned as the wire route.

6. The method according to claim 5, further comprising the steps of: Use line of sight to remove turning voxels from the path.

7. The method according to claim 5, further comprising the steps of: Find the neighboring voxels of voxel v that are also in the closed set; Calculate the temporary cost of the found neighboring voxels; Finding a replacement parent voxel with minimal temporary cost; and Sets the alternative parent of the voxel v and updates the cost.

8. The method according to claim 7, further comprising the steps of: Determine whether the voxel v and its parent voxel P(v) satisfy the line of sight condition.

9. The method according to claim 2, wherein: The volume model includes a finite element mesh.

10. The method according to claim 2, further comprising the steps of: receiving, by an automated manufacturing machine, the 3D model of the assembly including the wire routing; and A routed assembly is manufactured based on the 3D model of the assembly including the wire routing.

11. A system for manufacturing an electromechanical assembly including efficient routing of wires through the assembly to be manufactured avoiding collisions with a plurality of electromechanical assembly components, the system comprising: A computer-aided drafting (CAD) system includes a processor and a memory, wherein the processor is configured to execute non-transient instructions received from the memory, wherein the non-transient instructions, when executed by the processor, perform the following steps: Receiving a three-dimensional 3D model of the assembly; identifying a first wire route termination location and a second wire route termination location; Converting the received 3D model into a volume model that distinguishes between occupied space and usable space; finding a wire route from a termination position of the first wire route to a termination position of the second wire route that passes through the available space of the assembly; as well as displaying an image of the wire routing in a model of the assembly; as well as Automated manufacturing machines, configured to: receiving the 3D model of a routed assembly from the CAD system; as well as The routed assembly is manufactured based on the 3D model of the routed assembly received from the CAD system.