Object interference check method
The use of 1D indices from a set of points for collision checking in industrial robots addresses the inefficiencies of existing methods, enabling fast and accurate interference detection for real-time motion planning.
Patent Information
- Application Number
- JP2025006528
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-02-27
- Filing Date
- 2025-01-17
- Publication Date
- 2025-09-08
AI Technical Summary
Existing collision checking techniques for industrial robots are computationally intensive, inaccurate, or require tedious setup processes, making them impractical for real-time motion planning due to the use of primitive shapes or CAD models.
A method using a set of points represented as 1D indices, converting CAD models into 3D points, updating their positions based on motion, and calculating swept volumes through 1D index intersections to check for interference.
Provides fast and accurate interference checking with reduced memory usage, suitable for real-time robot motion planning, avoiding inaccuracies of primitive shapes and computational intensity of CAD models.
Smart Images

Figure 2025130692000001_ABST
Abstract
Description
[Technical Field]
[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This application is a continuation-in-part of U.S. Provisional Application No. 17 / 457,777 (now U.S. Patent No. 11,878,424), filed December 6, 2021, and titled "POINT SET INTERFERENCE CHECK," and U.S. Application No. 18 / 540,175, filed December 14, 2023, and titled "POINT SET INTERFERENCE CHECK METHOD AND SYSTEM." [Background technology]
[0002] The present disclosure relates generally to the field of motion control of industrial machines, and more particularly to a technique for checking interference between objects, which defines multiple objects as a set of points, updates the three-dimensional (3D) point set based on the motion of the objects, converts the 3D points into 3D indices representing occupied spaces, converts the 3D indices into one-dimensional (1D) indices, saves the 1D indices as a set for each object and each motion step, performs an interference check calculation by intersection of the set for a given step, and performs a swept volume computation by union of the sets across multiple steps.
[0003] The use of industrial robots to perform a wide range of manufacturing, assembly, and material transfer operations is well known. In many robot workspace environments, obstacles are present and may be in the path of the robot's motion. Obstacles may be permanent structures, such as machines or fixtures, or temporary or movable. Large workpieces on which a robot is working may themselves be obstacles, as the robot must move through or around the workpiece while performing operations such as welding. In a multi-robot workspace environment, each robot is potentially an obstacle to the other robots. Collisions between any part of the robot and any obstacles must be avoided at all costs.
[0004] It is known to include collision checking algorithms in motion planning routines, including during real-time motion planning. One conventional technique for collision checking involves defining a primitive shape, such as a sphere or a cylinder, around each robot arm and around each obstacle. Primitive shapes are used to reduce the complexity of collision checking calculations to a manageable level so that the collision checking calculations can be performed fast enough for real-time motion planning. However, defining a primitive shape around each obstacle and each robot arm is a tedious and time-consuming process. Furthermore, some objects, such as car bodies being welded or painted by a robot, do not lend themselves to approximation using primitive shapes. Even the robot arms themselves are often not adequately approximated using primitive shapes, and traditional primitive shapes can lead to erroneous determinations of collision conditions.
[0005] Another conventional technique for interference checking uses CAD models of the robot arm and obstacles. Using CAD models in interference check calculations avoids the problem of inaccurate primitive geometry. However, this method requires calculating distances and detecting interferences between every location on one CAD model (e.g., the robot's end effector) and every location on the CAD models of all other potential obstacles in the workspace (including all other robot arm components, machines, fixtures, workpieces, etc.). This calculation is computationally intensive and time-consuming in all but the simplest robot workspace environments. In environments where motion planning calculations must be performed in real time while the robot is operating, the collision avoidance calculations are often too time-consuming to be practical.
[0006] Similar checking techniques for other types of moving objects, such as machine tools, also suffer from the same drawbacks and limitations as those outlined above for robots. Summary of the Invention [Problem to be solved by the invention]
[0007] In light of the above, an improved object interference checking technique is desired that is easy to set up and that quickly and accurately calculates potential object interference regardless of the number and type of objects and obstacles in the workspace. [Means for solving the problem]
[0008] According to the teachings of the present disclosure, a technique for object interference checking using a set of points is disclosed. This technique uses CAD models of multiple objects and converts the CAD models into three-dimensional (3D) points. The positions of the 3D points are updated based on the motion of any object and obstacles. The 3D points are then converted into 3D grid spatial indices that define the space occupied by any point on any object. The 3D grid spatial indices are then converted into one-dimensional (1D) indices, and the 1D indices are saved as a set per object and per motion step. A swept volume of the object is generated by calculating the union of the set of 1D indices across multiple motion steps. Interference checking between multiple objects is performed by calculating the intersection of the set of 1D indices for a given motion step or position. The 1D indices are converted into 3D coordinates, which define the 3D shape of the swept volume and the 3D location of interferences.
[0009] Additional features of the disclosed apparatus and methods will become apparent from the following description and claims, taken in conjunction with the accompanying drawings. [Brief explanation of the drawings]
[0010] [Figure 1A] A diagram of two industrial robots working near an obstacle: a car body workpiece. [Figure 1B] FIG. 1 is a diagram of an industrial robot in a machine tending application where the machine is an obstacle.
[0011] [Figure 2] FIG. 10 is a diagram of steps of a point set method for collision checking, including converting 3D points of an object into 1D indices, according to an embodiment of the present disclosure.
[0012] [Figure 3] 3 is a diagram of a portion of the method shown in FIG. 2, detailing the step of converting 3D points of an object into 1D indices, according to an embodiment of the present disclosure.
[0013] [Figure 4A] The results of an interference check using a conventional CAD model shape are shown. [Figure 4B] The results of interference check using the basic shape approximation are shown. [Figure 4C] 10 shows the results of an interference check using the point set technique of the present disclosure.
[0014] [Figure 5A] 1B is a diagram of the two industrial robots of FIG. 1A in a configuration in which a point set interference checking method has detected interference. [Figure 5B] FIG. 1 is a diagram of the swept volumes of the same two robots, showing the overlapping regions of the swept volumes, according to an embodiment of the present disclosure.
[0015] [Figure 6] FIG. 1 is a flowchart diagram of a method for point set interference checking and swept volume calculation according to an embodiment of the present disclosure.
[0016] [Figure 7] 1 is a diagram of a machine tool cutter and a workpiece used as first and second objects in a point set interference checking method according to an embodiment of the present disclosure. FIG.
[0017] [Figure 8] 8 is a diagram of a swept volume of cutter points of the machine tool of FIG. 7 overlaid on fixed workpiece points calculated using a point set interference checking method according to an embodiment of the present disclosure.
[0018] [Figure 9] 9 illustrates a swept volume of points on the cutter and workpiece of the machine tool of FIG. 8 with a set of highlighted interfering points calculated using a point set interference checking method in accordance with an embodiment of the present disclosure.
[0019] [Figure 10] FIG. 1 is a flowchart diagram of a method for point set interference checking and swept volume calculation for two or more objects according to an embodiment of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0020] The following description of embodiments of the present disclosure directed to collision checking of objects using point sets represented as one-dimensional (1D) indices is merely exemplary in nature and is not intended to limit the disclosed apparatus and techniques or their applications or uses.
[0021] The use of industrial robots for various manufacturing, assembly, and material transfer operations is well known. In many robot workspace environments, obstacles may exist and be in the path of the robot's motion. That is, obstacles may be located between the robot's current location and its destination location. Obstacles may be permanent structures, such as machines or fixtures, or temporary or movable. A large workpiece on which a robot is working may itself be an obstacle, as the robot must move through or around the workpiece while performing an operation, such as welding. One robot within a workspace may potentially be an obstacle to other robots. Techniques have been developed in the art to calculate robot motions so that the tool follows a path that avoids collisions between any part of the robot and obstacles.
[0022] FIG. 1A is a diagram of two industrial robots (100, 110) working near a car body workpiece 120. In the workspace of FIG. 1A, the robots 100 and 110 perform spot welding operations on various locations on the workpiece 120. The spot welding operations include locations inside the car body, where the robots 100 and 110 need to reach the inside of a door opening. In this application, the car body workpiece 120 itself poses an obstacle to the motion of the robots 100 and 110. Additionally, the operating areas of the robots 100 and 110 may overlap, meaning that the robots 100 and 110 may be obstacles to each other. The operation of the robots 100 and 110 requires collision checking calculations to be performed for every planned motion.
[0023] 1B is a diagram of an industrial robot 150 in a machine tending application, where the robot 150 places a raw part into a fixture within a machine 160 and then removes the finished part from the fixture. In this application, the robot 150 needs to reach the interior of the machine 160, which therefore represents a potential obstacle to the robot's operation. Again, operation of the robot 150 requires collision checking calculations to be performed in advance for all planned movements.
[0024] In one conventional technique for collision checking in robot motion planning, basic shapes such as spheres and cylinders are defined around each arm of the robot and around each obstacle. The basic shapes are used to reduce the complexity of collision check calculations to a manageable level by approximating the actual object shape with a simplified shape.
[0025] Next, to calculate the robot motion that avoids interference, the distance from the basic shape of the robot arm to the basic shape of the obstacle is calculated. This is much easier than calculating the distance between the actual detailed shape of the arm and the obstacle. However, defining a basic shape around each obstacle and each robot arm is a tedious and time-consuming process. Furthermore, because actual robot arm parts and actual obstacles usually have irregular shapes, the basic shape is often defined with a significant amount of empty space within its volume. This can result in false collision detection in the collision check calculation.
[0026] Furthermore, some objects do not lend themselves to approximation using primitives. For example, in FIG. 1A , the car body workpiece 120 is not easily modeled in terms of primitives. While it is possible to define a hexahedron ("brick-shaped") primitive around the car body workpiece 120 to prevent collisions by the robot 100 / 110, the hexahedron would contain a large amount of free space around the car body. The free space would prevent the robot 100 / 110 from reaching the interior of the car body workpiece 120. An alternative would be to define a large number of primitives that approximate the shape of the car body workpiece 120 (e.g., a cylindrical shape for the windshield "A" pillar, another cylindrical shape for the door "B" pillar, etc.), but this is a very tedious and time-consuming process and remains overly conservative.
[0027] Other conventional techniques for collision checking in robot motion planning use the actual geometry of the robot arm, workpiece, and other obstacles in the form of CAD models. While this technique avoids the inaccuracies of the geometric primitive method, the computation time for collision checking calculations increases dramatically in all but the simplest scenarios of robot / obstacle workspaces. Collision checking calculations using CAD models are typically too long to be practical in real-time environments where motion planning calculations must be performed continuously and quickly.
[0028] Other techniques for collision checking in robot motion planning exist, including signed distance field and axis-aligned bounding box tree techniques. However, all of the above techniques exhibit some combination of being computationally intensive (and therefore slow), inaccurate due to approximations, or requiring vast amounts of computer memory to store the 3D position information of all parts at every time step of the motion program.
[0029] To overcome the above-mentioned problems, a new robot interference checking technique is disclosed herein that uses point sets represented as 1D indices. The disclosed point set interference checking technique provides fast calculation of interference and swept volumes without the inaccuracies associated with the use of primitive shapes. The disclosed interference checking technique does not require storing 3D geometry or grid data for every position / time step and is fast enough to be included in real-time robot motion planning routines.
[0030] FIG. 2 is a diagram of steps in a point set method for interference checking, including converting 3D points of an object to 1D indices, according to one embodiment of the present disclosure. In step 220, CAD models of the robot 200 parts are provided, along with CAD models of potential obstacles in the workspace and a CAD model of the part to be manipulated. The CAD models are preferably 3D solid models, but can also be surface models as known in the art. In step 230, the CAD models are converted into three-dimensional points (3D points). This is done by defining multiple points on and within each individual part. For example, the robot's base 202 can be represented by hundreds of points, as can the inner arm 204, outer arm 206, wrist 208, and end effector 210. The number of parts on the robot 200 arm can vary, and the number (density) of points per part can be selected to suit the application requirements. Again, 3D points are defined individually for each part so that point coordinates can be updated to account for the movement of the robot 200 (and potentially other robots in the workcell). The same is true for workpiece points, where car body 120 in Figure 1A may be moving on a conveyor, and machine 160 in Figure 1B may have doors that open and close. The 3D points of each part are transformed to new coordinates for each time step of the planned motion. Steps 220 and 230 are performed during an initialization phase, which can be performed "offline" before the actual point set collision checking calculation.
[0031] In step 240, the 3D points of each part are converted to 1D indices. Each 1D indices is a single integer that represents a grid cell in the robot's work cell or workspace. Converting 3D points to 1D indices is a two-step process, in which the 3D point coordinates are first converted to 3D grid space indices (242), and then the 3D indices are converted to 1D indices (244). In step 250, 1D indices indicating grid space occupation are saved for each part and time step. For example, each point on the end effector 210 occupies a 3D grid space indices that are converted to 1D indices, and all of the occupied 1D indices of the end effector part 210 are saved for each time step. The same is true for each part of the robot, all obstacles, and all potential obstacle-like workpieces, where some obstacles and workpieces may be fixed and some may be moving. By storing only the occupied 1D indices, the disclosed method uses very little computer memory compared to prior art techniques, and the subsequent collision checking and swept volume calculations are very efficient. Steps 240 and 250 are described in more detail in the description of Figure 3 below.
[0032] In step 260, the occupied 1D indices for all time steps are combined using a join operation to generate a swept volume. While swept volumes can be calculated for individual parts, in the case of robots, it is more common to calculate the swept volume for the entire robot. For example, the swept volume for the robot 200 can be calculated by combining the occupied indices for the base 202, inner arm 204, outer arm 206, wrist 208, and end effector 210. Step 260 in FIG. 2 shows a simplified example of this. In 262, the occupied 1D indices at time step t=1 are shown, and in 264, the occupied 1D indices at time step t=2 are shown. The occupied 1D indices in 262 and 264 are for the same part or the same robot (not two different robots, and not a robot compared to a workpiece). At time step t=1, the part occupies index numbers (3, 4, 7, 8). At time step t=2, the same part occupies index numbers (7, 8, 11, 12). The union of the occupancy indices from time steps t=1 and t=2 results in a total swept volume represented as (3, 4, 7, 8, 11, 12), as shown at 266. The swept volume represented as 1D indices can be converted back to a swept volume of a 3D shape by reversing steps 230 and 240.
[0033] In step 270, the occupancy 1D indices of two different parts (e.g., two robots, or one robot and a workpiece) are used in an intersection operation to determine if interference exists. For dual-robot systems, it is common to check for interference between one robot as a whole and the other robot as a whole. Step 270 in Figure 2 shows a simplified example of this. At 272, the occupancy 1D indices of robot R1 are shown, and at 274, the occupancy 1D indices of robot R2 are shown. The occupancy 1D indices of 262 and 264 are for the same single time step. The occupancy index numbers of robot R1 are (3,4,7,8,11,12). The occupancy index numbers of robot R2 are (1,2,3,4,5,6). The intersection of the occupancy indices of robots R1 and R2 results in an interference represented by index (3,4), as shown at 276. The interference represented as a 1D indicia can be converted back to a 3D shape of the interference volume by reversing steps 230 and 240.
[0034] The point set interference checking method of FIG. 2 can be used in robot motion planning applications, where the motions of a robot (or multiple robots) relative to workpieces and obstacles are planned and evaluated before the robots perform the task. For example, in FIG. 1A, the motions of robots 100 and 110 required to complete all spot welds on an autobody workpiece 120 can be calculated before robots 100 / 110 actually begin welding. If an interference condition is identified between robots 100 / 110 or between one robot and workpiece 120, the planned motions can be adjusted to prevent the interference, such as by delaying the start of one of the robots' motion sequences. Similarly, swept volumes can be used to determine whether one robot's motion overlaps with another robot's motion throughout a motion sequence. If the resulting overlap volume is undesirable, an alternative motion plan can be calculated.
[0035] It should be understood that all steps of the point set interference checking method shown in FIG. 2 are programmed in an algorithm executed on a computer having a processor and memory. In a preferred embodiment, the computer executing the point set interference checking method is a robot controller that has access to real-time robot configuration (joint position) data and is also responsible for calculating the robot motion plan. However, other system designs are possible, for example, the computer executing the point set interference checking method is a workcell controller that communicates with multiple robot controllers and is also aware of the position of workpieces on a conveyor (example of FIG. 1A) or the status of machining station doors and parts (example of FIG. 1B). In addition to the robot controller and possibly a workcell control computer, the system may include one or more object sensors for identifying obstacles moving within the workcell. In some embodiments, object sensors are not required because the robot controller and / or workcell controller are aware of the position of moving workpieces (e.g., on a conveyor) or the status of the machines being managed (e.g., part loaded / unloaded status, door open / closed status).
[0036] 3 is a diagram of a portion of the point set interference checking method shown in FIG. 2 , detailing the steps of converting the 3D points of an object to 1D indices, according to one embodiment of the present disclosure. In step 240 of FIG. 2 , the 3D points of each part are converted to 1D indices in a two-stage process, where the coordinates of the 3D points are first converted to 3D grid space indices, and then the 3D indices are converted to 1D indices. These are the steps detailed in FIG. 3 .
[0037] In section 310, the robot and other objects that may be obstacles (such as workpieces and fixtures in the workspace) are defined as 3D points. The points of each part of the robot and each other object are translated to a position corresponding to the time step of the motion plan. For example, in a two-robot system, for each time step of the motion plan, the configuration (joint angles) of each robot is calculated and the various parts of the robot are translated to their positions and orientations in workspace coordinates. Each point of each part is translated in the same way. This translation is expressed as [xyz]=R jntp+p jnt where [x y z] are the updated 3D coordinates of point p, and R jnt is the direction of the joint coordinate system, p is the point p in the joint coordinate system, and p jnt is the origin coordinate of the joint coordinates. Points on a part moving on a conveyor can be easily updated using a simple translation transformation based on the conveyor motion. The points on each part of the robot 200 and the points on the portion of the workpiece 300 for a particular time step are shown in section 310 of Figure 3. Two specific points 330 and 332 shown on the inner arm of the robot are described below.
[0038] In section 310, each point of each part is transferred from section 310 to a 3D occupancy grid space. Grid space 350 is defined in a workspace coordinate system with origin {O}:[x0y0z0]. Grid space 350 is divided into individual 3D grid cells 352 with a dimension size u. For example, a robot workspace with dimensions of 1 meter each in the x, y, and z dimensions can be divided into a grid space of dimensions 200x200x200, with each grid having a size of u=5 mm. Grid space 350 is shown in FIG. 3 as a set of y / z two-dimensional grids 360, 362, and 364, each of which is positioned at a different depth in the x direction. Each cell in grid space 350 is assigned a 3D index (a triplet of integers), where each number represents a position in the x, y, or z direction. Examples of 3D cell indices are shown in section 370 below. There are.
[0039] Points 330 and 332 on the robot's inner arm are transferred to corresponding positions in grid space 350 as shown, based on the grid size u. Several other points (not numbered) are also shown in grid space 350. It should be understood that each point on each section is transferred to grid space 350, which is typically thousands of points. For clarity of illustration, only a portion is shown in FIG. 3.
[0040] After the points are transferred to grid space 350, occupied grid cells within 3D grid space 350 are identified. The three grid cells (340, 342, 344) on the right side of section 320 are shaded to indicate that they are occupied by the part at the time step currently being evaluated. Grid cells 340 / 342 / 344 are the cells that contain points, as shown on the left.
[0041] In section 370, occupied 3D grid cell indices are identified (at 380) and then converted (at 390) to 1D indices. At 380, each cell in grid space 350 is identified with a 3D index as described above. Each point in each portion is then assigned to a grid cell. This can be done by the following formula:
number
[0042] For example, the cell 340, which is occupied by a plurality of points as described above, has indices (1,3,2), which represent the first cell in the x-direction (1), the third cell in the y-direction (3), and the second cell in the z-direction (2). Similarly, the indices of occupied cell 342 are (1,3,3), and the indices of occupied cell 344 are (1,4,2). Cells in grid space 350 are numbered in this manner with 3D indices to identify occupied cells. Only the occupied grid cell and some other grid cells have indices as shown in 380.
[0043] At 390, the 3D indices of the cells in grid space 350 are converted to 1D indices. This can be done as follows: simply number the cells consecutively, increment the grid cell in the z direction while keeping x and y constant, then increment y by one cell and repeat the progression in the z direction, until you run out of y, then do the same for the x direction. In the 200x200x200 grid space example above, the 3D indices would range in value from (1,1,1) to (200,200,200), and the 1D indices would range in value from 1 to 8,000,000 (=200). 3 ) range of values. In the example shown in 390, the top visible layer of grid cells is numbered from 1 to 12 by incrementing first in the z direction, then in the y direction. The 1D index of the next layer in the x direction would be 13-24, etc.
[0044] In 390, cells with 1D indices 8, 9, and 11 are shaded to indicate they are occupied. These indices 8, 9, and 11 correspond to cells 340 / 342 / 344, which were shown to be occupied by points 330, 332, and other points in grid space 350 of section 320. The 1D indices of the occupied space (8, 9, 11) are stored as a 1D array that defines the occupancy of a particular portion at a particular time step of the planned motion program. These 1D occupancy index arrays are then used in the swept volume and collision checking calculations (260 and 270, respectively), as described above with respect to FIG. 2.
[0045] 3 are performed for each planned time step of the robot's motion. That is, the point coordinates of each part are first updated in section 310 to reflect each time step of the planned object motion (robot part and workpiece part). Next, for each object at each time step, the point coordinates are transferred to grid space as 3D occupancy indices in section 320. Finally, in section 370, the 3D occupancy indices are converted to 1D indices for each time step for each object.
[0046] As mentioned above, the 1D occupancy index array is used in the swept volume and interference check calculations (260 and 270, respectively, in FIG. 2). If interference is detected, it may be desirable for a human to visualize the interference with the robot or other objects at their respective positions in the workspace. This can be done by converting the 1D index back to 3D geometry using the reverse process of step 240. The resulting interference in 3D space can be superimposed on the robot / part at the timestep where the interference occurred. Similarly, the same technique can be used to convert the swept volume back to 3D geometry for visualization.
[0047] A usage scenario for the disclosed interference checking method using a set of points represented as 1D indices is to automatically perform an interference check for each planned robot motion path before the motion is executed. In other words, the planned motion of the robot (e.g., a welding or spray painting task) is calculated, and before the task is executed, a point set interference check calculation is performed based on the positions and motions of obstacles in the workspace, such as other robots, moving workpieces, and stationary objects. If the point set interference check calculation identifies a collision, the task is not executed, the robot motion is re-planned, and the point set interference check calculation is performed again.
[0048] The above-described method, which features converting 3D points to 1D features, offers speed and accuracy advantages over conventional techniques. In particular, the disclosed point set interference checking method provides faster calculation times and requires less computer memory than interference checking techniques that use CAD models, and the point set interference checking method provides greater accuracy than interference checking techniques that use primitive shapes.
[0049] 4A, 4B, and 4C show interference check results using a conventional CAD model shape, a primitive shape approximation, and the point set technique of the present disclosure, respectively. The simulations shown in FIGS. 4A, 4B, and 4C all use the same robot kinematics and motion. The only difference between the three figures is the representation of the robot arm components used in the interference check. The results of the interference check and their impact on calculation time are discussed below.
[0050] FIG. 4A shows parts of robot 410A in close proximity to parts of robot 420A. Robots 410A and 420A are represented by CAD model geometry. Inset 430 shows details of part 412A (of robot 410A) and part 422A (of robot 420A). It can be seen from inset 430 that there is a small clearance between parts 412A and 422A, meaning there is no interference. The CAD model geometry in FIG. 4A can accurately represent the parts and therefore does not return false positive interference conditions when the parts are close to each other. However, the CAD model geometry in FIG. 4A is very computationally intensive when used for interference check calculations. In fact, interference checks using the CAD model geometry of parts are typically too slow for use in real-time motion planning routines, where planned paths must be collision-checked within approximately 1-2 seconds to allow the robot's motion to continue uninterrupted.
[0051] FIG. 4B shows parts of robot 410B in close proximity to parts of robot 420B. Robots 410B and 420B are represented by primitives, such as cylinders, around the elongated robot arms. Inset 440 shows details of part 412B (of robot 410B) and part 422B (of robot 420B). It can be seen from inset 440 that a small clearance exists between the actual parts 412B and 422B, meaning there is no interference. However, part 412B is represented by primitive 414B, and part 422B is represented by primitive 424B. Primitive 414B interferes with primitive 424B at the time step shown in inset 440. Therefore, interference-checking calculations using primitives will predict interference when, in fact, none exists between the real parts of the robots. Although interference checking using primitives is much faster in computation time than using CAD model geometry, Figure 4B shows how the simplifications inherent in primitives can lead to false-positive interference predictions.
[0052] FIG. 4C shows parts of robot 410C in close proximity to parts of robot 420C. Robots 410C and 420C are represented by point sets according to the disclosed technology. Inset 450 shows details of part 412C (of robot 410C) and part 422C (of robot 420C). It can be seen from inset 450 that there is a small clearance between parts 412C and 422C, meaning there is no interference. Similar to the CAD model geometry of FIG. 4A, the disclosed point set interference checking method is capable of accurately representing parts and therefore does not return false positive interference conditions when parts are close to each other. Furthermore, the point set interference checking method allows for sufficiently fast interference check calculation times to be used in real-time motion planning routines where a planned path must be collision-checked within approximately 1-2 seconds to allow the robot's motion to continue uninterrupted.
[0053] Figures 4A-4C show simulation results, all performed on the same computing hardware in directly comparable tests. The CAD model geometry simulation in Figure 4A required significant computation time to update the robot pose / configuration and perform interference checks on the new configuration, making it too computationally slow to be used for real-time motion planning. The basic geometry simulation in Figure 4B required less computation time to update the robot pose and perform interference checks on the new configuration than the CAD model geometry simulation. While the basic geometry simulation is much faster than using CAD model geometry, it can still return erroneous results, as discussed above. The point set simulation model in Figure 4C requires even less computation time than the basic geometry technique, thereby providing accurate interference check results and fast computations, a combination not possible with conventional techniques.
[0054] FIG. 5A is a diagram of the two industrial robots 100 and 110 of FIG. 1A in a configuration where the point set interference checking method detected a collision. In FIG. 5A, each of the robots 100 and 110 is performing a spot welding task on a car body 120. FIG. 5A shows the robots 100 and 110 during planned motion, with each robot moving on an independent path. The robot 100 follows the tool center point path 102 from a starting point 104 to the configuration of the robot 100 shown. The robot 110 follows its own tool center point path to the currently shown configuration. At this point in these robot motions, the robots 100 / 110 collide near the wrist joints and end effectors, as shown at 502. This interference condition was detected by a non-null intersection of the 1D index sets of the two robots at a particular step in the motion plan. The ability to quickly simulate and predict interference conditions using the point set interference checking method of the present disclosure allows revised motion plans to be calculated and checked before the robot performs the task.
[0055] FIG. 5B is a diagram of the swept volumes of the same two robots 100 and 110, showing the overlapping region of the swept volumes, according to one embodiment of the present disclosure. FIG. 5B shows the robots 100 / 110 from the opposite perspective to FIG. 5A. In FIG. 5B, the robots are shown in their home positions. The swept volumes 108 and 118 are calculated using the techniques of the present disclosure. The swept volume 108 is the volume occupied at a point in the motion program of the robot 100, and the swept volume 118 is the volume occupied at a point in the motion program of the robot 110. The swept volume 108 is calculated by performing a union of the set of 1D indices of the robot 100 at all steps of the motion plan, and similarly for the swept volume 118 of the robot 110. The overlap volume 510 is the space within both the swept volumes 108 and 118. Because robots 100 and 110 may occupy portions of their swept volumes at different times, overlap volume 510 does not necessarily indicate that a collision will occur. However, the existence of overlap volume 510 may be of interest to a human programmer or operator, who may decide to adjust the motion programs of robots 100 and / or 110 to eliminate any overlap in the swept volumes of each robot. Again, the ability to quickly and accurately calculate swept volumes and identify overlaps aids in safe and reliable robot motion planning.
[0056] FIG. 6 is a flowchart 600 of a method for point set interference checking and swept volume calculation according to one embodiment of the present disclosure. In box 602, CAD models of one or more robots and potential obstacles are provided. Individual components of the robot (inner arm, outer arm, end effector, etc.) are provided as separate CAD models, along with their positions and orientations relative to the joints that attach each part to other parts of the robot. Potential obstacles include fixed and / or moving objects, as well as fixed and / or moving workpieces. In box 604, the CAD models are converted into 3D points that define the exterior surfaces and some interior points of each part. Each part or component is typically represented by hundreds or thousands of points. Because the location of each point on each part is known, the movement of the points in the workcell coordinate system can be calculated based on the motion of the robot's joints. Providing the CAD models and converting them to 3D points in boxes 602 and 604 are initialization steps that are performed only once at the beginning of the point set interference checking process.
[0057] In box 606, the coordinates of the 3D points are updated for the robot and part motion. That is, the coordinates of each point on each robot part are updated based on the robot joint motion (each step of the motion plan), and the coordinates of each point on the moving workpiece or obstacle are also updated based on the (planned) motion of those objects. In box 608, all 3D points of the robot parts and obstacles are transferred to 3D grid space indices. This step was described in detail with respect to FIG. 3. In box 610, the 3D indices are converted to 1D indices, also described above with respect to FIG. 3. As a result of this step, each object is represented by a set of 1D occupancy indices for a particular planned motion step or time step. Each of the 1D occupancy indices is a single integer that represents a portion of the volume within the workspace in which the robot will operate.
[0058] In box 612, 1D indices are saved as a set for each object for each time step. As described above with respect to the example shown in Figure 2, a set of 1D indices (each an integer) defines the occupancy of each object at each time step. Using the set of 1D occupancy indices from box 612, collision checking and swept volumes can be calculated.
[0059] In box 614, interference checking is performed by mathematically intersecting 1D indices set on one object with 1D indices set on another object at the same time step. For example, the set of 1D occupancy indices for a robot's end effector can be checked with the set of 1D indices for the machine (as shown in FIG. 1B); if the intersection of the two indices sets is null, there is no interference; if the intersection is not null, there is interference. Similarly, the set of 1D occupancy indices for an entire robot (composed of the indices for all of that robot's arm parts) may intersect with the set of 1D occupancy indices for another robot; the intersection is calculated at each time step of the motion of both robots, and interference at any point of intersection is identified.
[0060] In box 616, the 3D shapes of all interferences identified in box 614 can be calculated by converting the 1D indicators of the interferences back into 3D indicators and 3D point coordinates using the inverse of the process shown in Figures 2 and 3. Converting the set of interference indicators back to a 3D shape (including displaying the resulting 3D shape) may be desirable to allow a programmer or operator to visualize the configuration of the robot when the interference occurs.
[0061] In box 618, the swept volume is calculated by performing a union of the set of 1D occupancy indices of the object (e.g., the entire robot) over all time steps of the motion program. Again, this is a very fast and simple calculation, and is the mathematical union of the sets of 1D indices of multiple time steps, where each set of 1D indices is a group of integers. The swept volumes resulting from this calculation are shown in FIG. 5B, along with swept volume 108 for robot 100 and swept volume 118 for robot 110.
[0062] In box 620, the 3D shape of the swept volume calculated in box 618 can be calculated by converting the 1D occupancy indices of the union back into 3D indices and 3D point coordinates using the inverse of the process shown in Figures 2 and 3. Converting the set of indices of the swept volume back to a 3D shape (including displaying the resulting 3D shape) may be desirable to allow a programmer or operator to visualize the entire motion envelope of a robot while programming its motion, or to visualize whether the motion envelopes of two adjacent robots overlap. In box 622, the 3D shape of all overlapping regions between separate swept volumes is calculated and displayed. For example, overlap volume 510 shown in Figure 5B shows the overlap between the swept volumes of robots 100 and 110. An overlapping region can be calculated between the swept volumes of any two moving objects, whether they are robots or not.
[0063] Again, all steps of the method shown in Figure 6 are programmed in an algorithm executed on a computer having a processor and memory, which may be a robot controller or a workspace controller, as described above with respect to Figure 2. A system for performing the point set interference checking method includes at least one robot and corresponding robot controller, and may optionally include a workcell controller or other computer, and may further optionally include one or more object sensors for detecting the location of obstacles.
[0064] Various computers and controllers have been described or implied throughout the preceding description. It should be understood that the software applications and modules of these computers and controllers are executed on one or more computing devices having a processor and memory modules. In particular, this includes the respective processors of the robot controller and any workcell controllers described above. Specifically, the processors of the robot controller and / or workcell controller are configured to perform point set collision checking techniques using 1D indices and use the resulting collision checking result information in the robot path planning calculations in the manner described throughout the disclosure above.
[0065] As outlined above, the disclosed robot interference checking technique, which uses point sets represented as 1D indices, improves the speed and accuracy of interference checking for robot path planning. The disclosed technique avoids the upfront effort and inherent inaccuracy of modeling obstacles as primitives, enabling rapid computation of robot-to-robot and robot-to-obstacle interference, even in the presence of complex, arbitrarily shaped obstacles.
[0066] The above interference checking techniques have been discussed in the context of an articulated robot operating in a workspace with a variety of potential obstacles. The same basic technique of converting 3D points to 1D occupancy metrics is more generally applicable to any type of object where it is desirable to check for interference prior to planned object movement. The more general case is discussed below in the context of a machine tool example.
[0067] FIG. 7 is an illustration of a machine tool cutter and workpiece used as first and second objects in a point set interference checking method according to one embodiment of the present disclosure. The machine tool spindle and tool holder 710 holds a cutting tool 712, as will be familiar to those with knowledge of machine tools. For example, the spindle and tool holder 710 may be part of a machine tool that programmatically controls the X, Y, and Z motion of the spindle and tool holder 710 so that the cutting tool 712 (and possibly other interchangeable cutting tools) performs predetermined cutting tasks, such as milling and drilling. These types of machine tools are often referred to as "numerically controlled," which in current technology means that the machine tool's operation is controlled by a computer.
[0068] The cutting task is performed on a workpiece 720 that is fixed in place, such as a fixture. In a typical application, a machine controller (computing device) moves the spindle and tool holder 710 by controlling X, Y, and Z servo motors. In this application, the orientation of the spindle and tool holder 710 remains fixed; only the position changes. However, this application is merely an example, and the techniques of this disclosure are applicable to robotic machine tools that can position the cutting tool 712 at any position and spatial orientation. And again, the machine tool cutting application is merely illustrative of the point set interference checking techniques of this disclosure, which are applicable to any two or more objects.
[0069] 7 shows a spindle and tool holder 710, a cutting tool 712, and a workpiece 720 as actual part geometries represented by CAD solid models. To perform interference checking in accordance with the techniques of this disclosure, the geometry of the CAD solid models of the combined parts 710 / 712 is first converted to 3D points. Similarly, the solid model of the workpiece 720 is also converted to 3D points. The conversion of the solid models to 3D points can be performed by any known suitable method. Each of the 3D point sets is preferably a point cloud containing points within and on the surface of the object.
[0070] As previously described with respect to the robot motion embodiment, the objective of the disclosed method is to check for interference between one object and another based on any defined position of the object. This means that at least one of the multiple objects can be moved to at least one position different from its original position. In the example of FIG. 7 (and FIGS. 8-9), the combined parts 710 / 712 move according to a machine tool motion plan while the workpiece 720 remains fixed. It is emphasized that the motion of one or more moving objects does not need to be a time-based, predefined motion plan. The motion of a moving object can simply be thought of as a set of one or more motion steps (step 1, step 2, etc.). For example, as a path plan is created and interference is evaluated, steps can be calculated and interference checked incrementally. Furthermore, a primary advantage of the disclosed technique is the speed of the interference check calculation due to the use of 1D indices. While this calculation speed is extremely advantageous in real-time motion planning with moving objects, the technique is equally applicable to two or more static objects.
[0071] For each motion step, the 3D coordinates of the moving part points are recalculated, and then the 3D point coordinates are converted to 3D grid space occupation indices as previously described. This procedure is illustrated in Figures 2 and 3. Specifically, in step 240 of Figure 2, the 3D point coordinates are converted to 3D grid space indices in step 242. Each grid space has three indices (e.g., X, Y, and Z) and is indicated as either occupied or unoccupied by a 3D point. The 3D grid space indices are then converted to 1D indices by assigning serial numbers while sequencing the X, Y, and Z dimensions. This procedure is also illustrated in Figures 2 and 3 and described above.
[0072] Each 1D marker is designated as either occupied or unoccupied, and a set of occupied 1D markers is stored for each motion step and for each object. The set of occupied 1D markers can then be used to calculate the interference between objects in one or more motion steps, and can also be used to calculate the swept volume of one or more objects in all motion steps. The swept volume and interference determined from the 1D markers can be easily converted back to 3D geometry using reverse procedural steps. All of this has been discussed previously in the context of a robotic system and is now applied more generally to the two objects of FIG. 7.
[0073] FIG. 8 illustrates a swept volume of points for the machine tool cutter of FIG. 7 superimposed on fixed workpiece points, calculated using a point set interference checking method according to one embodiment of the present disclosure. The combined parts 710 / 712 (spindle and tool holder 710 and cutting tool 712) are moved through a set of motion steps using the techniques described above, and the resulting set of 3D points for all of the motion steps is shown as swept volume 810. Swept volume 810 is constructed from points using a small circular point font. Swept volume 810 illustrates the simple case of linear horizontal or lateral motion of the combined parts 710 / 712, while the workpiece 720 is fixed and represented by point cloud 820. Point cloud 820 is constructed from points using a small triangular point font. Of course, any movement of either part may be defined in more than one motion step. The linear motion of the combined parts 710 / 712 is merely illustrative and is used to maintain clarity of the drawing.
[0074] 9 is an illustration of the swept volume 810 of the machine tool cutter points and the workpiece point cloud 820 of FIG. 8 , also highlighting the collision point set calculated using the point set interference checking method, in accordance with one embodiment of the present disclosure. The swept volume 810 and point cloud 820 are not highlighted in FIG. 9 , but the collision point set 930 is highlighted and indicated by the dashed oval. The collision point set 930 is calculated by obtaining the intersection of the 1D indicators for the combined parts 710 / 712 with the indicators for the workpiece 720 at each motion step. The resulting set of collision indicators for all motion steps is then converted to 3D points as described above, which is shown as the collision point set 930 in FIG. 9 .
[0075] FIG. 10 is a flowchart 1000 of a method for point set interference checking and swept volume calculation for two or more objects according to one embodiment of the present disclosure. In an initialization step, box 1002, 3D points defining the objects are provided. This is typically done by converting a CAD solid model into a point cloud for each object at some known initial position. Step 230 of FIG. 2 illustrated providing 3D points defining the objects. In the example of FIG. 7, the combined parts 710 / 712 and workpiece 720 would be converted into a 3D point representation.
[0076] In box 1004, 3D point coordinates are updated for each object according to a motion plan that includes at least one motion step. In the example of FIG. 7, workpiece 720 does not move, so its points do not need to be updated. Meanwhile, points for combined parts 710 / 712 are updated to new coordinates based on multiple steps in the spindle / tool motion plan. If the object environment contains only static objects (no moving objects), the motion step calculation in box 1004 is omitted. In box 1006, the 3D points of each object are converted to 3D grid space indices. As described above, a set of 3D grid space indices for each object is calculated and identified separately. In box 1008, the 3D indices for each object are converted to 1D indices, as described above. As a result of this step, each object is represented by a set of 1D occupancy indices for each of the planned motion steps. Each 1D occupancy indices is a single integer that represents the portion of the volume of the workspace in which the object resides.
[0077] In box 1010, 1D indices are stored as a set per object per motion step. As described in connection with the example shown in Figure 2, a set of multiple 1D indices (each integer number) defines the occupancy of each object at each motion step. The set of 1D occupancy indices from box 1010 can be used to calculate collision checks and swept volumes.
[0078] In box 1012, interference checking is accomplished by determining the mathematical intersection of a set of 1D indices of one object with a set of 1D indices of another object in the same motion step. For example, the set of 1D occupancy indices of the combined parts 710 / 712 can be checked with the set of 1D indices of the workpiece 720. If the intersection of the two indices sets is null, there is no interference; if the intersection is not null, there is interference. If there are no moving objects, the interference check in box 1012 is calculated for the initial positions of the objects. Interference across multiple motion steps can be calculated in the same way. In the example of FIG. 7, this can be done by intersecting the set of 1D occupancy indices of the combined parts 710 / 712 with the set of 1D indices of the workpiece 720 at all motion steps.
[0079] In box 1014, the swept volume is calculated by taking the union of the sets of 1D occupancy indices of the objects (such as combined parts 710 / 712) across all motion steps. This is also a very fast and easy calculation, a simple mathematical combination of the 1D indices sets of multiple steps, where each 1D indices set is a group of integers. In the example of Figure 7, combined parts 710 / 712 define the swept volume as they move, while workpiece 720 does not move and simply occupies its original space. If there are no moving objects, there are no motion steps, no swept volume, and box 1014 is skipped.
[0080] In box 1016, the 3D geometry of the interference and / or swept volume identified in boxes 1012 and 1014 can be calculated using the inverse of the process described above to convert the 1D occupancy indices (of intersections or unions) back into 3D indices and back into 3D point coordinates. For the example of Figure 7, the conversion of the set of interference indices back into 3D geometry is shown as interference point set 930 in Figure 9, while the swept volume 810 occupied by combined parts 710 / 712 over all motion steps is shown in Figure 8.
[0081] As discussed above, the interference checking technique using the method steps of Figure 10 is performed before one or more motion steps are physically performed. If an interference is detected in a future motion step using the point set interference checking method, the machine controller can take appropriate action, such as calculating a different motion or pausing the motion until a moving obstacle is out of the path.
[0082] Again, all of the method steps shown in Figure 10 are programmed in an algorithm that runs on a computer having a processor and memory, which may be any computer for the generalized case of object-to-object interference checking, or a machine controller for the machine tool example of Figure 7. A system that performs the point set interference checking methodology may include a machine controller that controls the movement of objects and recognizes the positions of other objects, and may optionally include one or more sensors for detecting object positions.
[0083] As outlined above, the disclosed technique for object interference checking using point sets represented as 1D indices improves the speed and accuracy of interference checking for arbitrary object environments. The disclosed technique avoids the upfront effort and inherent inaccuracy of modeling objects as geometric primitives, enabling rapid calculation of object-to-object interference, even for complex and arbitrarily shaped objects. The technique is applicable to two or more moving objects, with each object's 3D point coordinates and 1D indices updated at each motion step. The technique is also applicable to a single moving object and one or more fixed obstacles, two or more static objects, or any combination thereof. Most generally, the technique is applicable to any two or more objects, with at least one of the objects being moved in at least one motion step, and it should be understood that more objects and / or more motion steps may be applied in the same manner.
[0084] Evaluation of the disclosed point set interference checking technique has shown that it is accurate and much more computationally efficient than existing techniques such as axis-aligned bounding box tree methods. The computational efficiency comes from the use of 1D metrics for interference checking, which is much faster than computing intersections of 3D grid volumes or computing actual object shapes or interferences between geometry primitives.
[0085] While several exemplary aspects and embodiments of object interference checking techniques using point sets displayed as 1D indices have been described, those skilled in the art will recognize modifications, permutations, additions, and subcombinations thereof. Accordingly, the appended claims and accompanying claims should be construed to include all such modifications, permutations, additions, and subcombinations that are within their true spirit and scope.
Claims
1. 1. A method for checking interference between objects, comprising: generating, on a computing device having a processor and memory, three-dimensional (3D) points defining a space occupied by each of two or more objects; converting the 3D points of the object into one-dimensional (1D) indices that define the occupancy of workspace grid cells; converting the 3D indices of the objects into 1D indices that define, for each of the objects, an occupancy of a workspace grid cell; storing the 1D indices as a set for each of the objects; performing an interference check by calculating on the computing device an intersection of the set of 1D indices of one of the objects with the set of 1D indices of another of the objects; A method comprising:
2. The method of claim 1 , wherein a non-null crossing indicates that an interference condition exists.
3. 3. The method of claim 2, further comprising: calculating a volume of interference when the interference condition exists, the calculating comprising converting 1D indices of a set of intersections to 3D indices; and converting the 3D indices to 3D points of the set of intersections.
4. The method of claim 1 , wherein the 3D points defining the interval occupied by each of the objects are a point cloud including points on the exterior surface and points of the interior volume.
5. The method of claim 1 , wherein converting the 3D points to 1D indices comprises converting the 3D points of each of the objects to 3D indices and converting the 3D indices of each of the objects to 1D indices.
6. 6. The method of claim 5, wherein converting the 3D points to 3D indices comprises: defining a 3D workspace grid space including a plurality of cells having a defined size for each dimension of the grid space; assigning a 3D indices to each of the cells; and determining an occupancy of the workspace grid cell based on a position of one or more 3D points within the cell.
7. The method of claim 6 , wherein assigning a 3D index to each of the cells comprises assigning each value of the 3D index based on the cell's consecutive position in each dimension of grid space.
8. 6. The method of claim 5, wherein converting the 3D points to 1D indices comprises: assigning 1D indices as consecutive integers; completing a count in a first grid spatial dimension while holding second and third grid spatial dimensions constant; and recursively incrementing the second and third grid spatial dimensions until all 3D indices have been assigned 1D indices.
9. The method of claim 1 , further comprising, before converting the 3D points of the objects to 1D indices, updating coordinates of the 3D points based on a movement step in which at least one of the objects moves to a new position.
10. The method of claim 9 , further comprising updating the coordinates of the 3D points and performing interference checks for one or more additional motion steps.
11. 11. The method of claim 10, further comprising: for all of the operational steps, calculating a swept volume by calculating on the computing device a union of at least one set of the 1D indices of the object; converting the 1D indices of the swept volume to 3D indices; and converting the 3D indices of the swept volume to 3D points.
12. 1. A method for checking interference between objects, comprising: generating, on a computing device having a processor and memory, three-dimensional (3D) points defining a space occupied by each of two or more objects; updating the coordinates of the 3D points based on a series of motion steps in which at least one of the objects moves to different positions; converting the 3D points of the objects into one-dimensional (1D) indices that define workspace grid cell occupancy for each of the objects and each of the motion steps; storing the 1D indices as a set for each of the objects and each of the motion steps; performing an interference check by calculating, on the computing device, an intersection of the set of 1D indices of one of the objects with the set of 1D indices of another of the objects for each of the motion steps; wherein a non-null crossing indicates that an interference condition exists.
13. The method of claim 12 , further comprising recalculating the sequence of action steps when the interference condition exists to mitigate the interference condition.
14. 1. A system for checking interference between objects, comprising: two or more objects in a workspace; a computing device having a processor and a memory, generating three-dimensional (3D) points defining a space occupied by each of two or more objects; converting the 3D points of the objects into one-dimensional (1D) indices that define, for each object, an occupancy of a workspace grid cell; storing the 1D indices as a set for each of the objects; performing an interference check by calculating an intersection of the set of 1D indices of one of the objects with the set of 1D indices of another of the objects, wherein a non-null intersection indicates that an interference condition exists.
15. 15. The system of claim 14, further comprising: calculating, by the computing device, a volume of interference when the interference condition exists, the calculating including converting 1D indices of a set of intersections to 3D indices and converting the 3D indices to 3D points of the set of intersections.
16. The system of claim 14 , wherein the 3D points defining the interval occupied by each of the objects are a point cloud including points on an exterior surface and points of an interior volume.
17. 15. The system of claim 14, wherein converting the 3D points to 1D indices comprises converting the 3D points of each of the objects to 3D indices and converting the 3D indices of each of the objects to 1D indices.
18. 20. The system of claim 17, wherein converting the 3D points to 3D indices comprises: defining a 3D workspace grid space including a plurality of cells having a defined size for each dimension of the grid space; assigning a 3D indices to each of the cells; and determining an occupancy of the workspace grid cell based on a position of one or more 3D points within the cell.
19. 20. The system of claim 18, wherein assigning a 3D index to each of the cells comprises assigning each value of the 3D index based on the cell's consecutive position in each dimension of grid space.
20. 18. The system of claim 17, wherein converting the 3D points to 1D indices comprises: assigning 1D indices as consecutive integers; completing a count in a first grid spatial dimension while holding second and third grid spatial dimensions constant; and recursively incrementing the second and third grid spatial dimensions until all 3D indices have been assigned 1D indices.
21. 15. The system of claim 14, further comprising, before converting the 3D points of the objects to 1D indices, updating coordinates of the 3D points based on a planned motion step in which at least one of the objects moves to a new position.
22. 22. The system of claim 21, further comprising recalculating the planned action steps by the computing device when the interference condition exists to mitigate the interference condition.
23. 23. The system of claim 22, further comprising sending, by the computing device, motion commands to a machine to move at least one of the objects according to the planned motion steps.
24. The system of claim 21 , further comprising updating, by the computing device, the coordinates of the 3D points and performing interference checks for one or more additional planned motion steps.
25. 25. The system of claim 24, further comprising: for all of the operational steps, calculating a swept volume by calculating on the computing device a union of at least one set of the 1D indices of the object; converting the 1D indices of the swept volume to 3D indices; and converting the 3D indices of the swept volume to 3D points.
26. The system of claim 14 , further comprising one or more object sensors that provide signals to the computing device defining the position of one or more of the objects within the workspace.