Spline motion control

The method allows industrial robots to follow spline curves with arbitrary point placement, automatic speed control, and flexible trigger points, addressing limitations in existing spline motion programming.

JP2026116786APending Publication Date: 2026-07-13FANUC ROBOTICS NORTH AMERICA INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025180157
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-12-31
Filing Date
2025-10-27
Publication Date
2026-07-13

AI Technical Summary

Technical Problem

Existing spline motion programming techniques for industrial robots impose restrictions on the spacing of teaching points, making it difficult to place them at desired positions and intervals, and lack flexibility in speed control and process equipment triggering.

Method used

A method for programming a robot to follow a spline curve defined by a set of teaching points using a blending algorithm that allows arbitrary placement of points, with automatic speed control and flexible trigger points, enabling precise path definition and operation.

Benefits of technology

Enables robots to accurately follow complex paths without point spacing restrictions, providing flexible speed control and precise process equipment triggering, enhancing operational efficiency and accuracy.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026116786000001_ABST
    Figure 2026116786000001_ABST
Patent Text Reader

Abstract

To implement spline motion control. [Solution] A method is provided for programming a robot continuous path using spline motion control. A set of path points is provided to the robot controller from either CAD data or a teaching device. The motion program is defined by referencing the path points. When three or more spline motion commands appear consecutively, a spline curve is calculated. The spline curve comprises a set of adjacent parabolas or arcs, each passing through three path points, with overlapping areas of adjacent parabolas / arcs being blended. The spline curve passes through all path points, there is no restriction on the spacing between path points, small point intervals may be followed by large point intervals, and vice versa. Automatic speed control is applied to the spline curve based on tool center point motion and joint motion. User-configurable tool poses may also be applied to the spline curve, and time-based and distance-based trigger points can be defined.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This disclosure relates to the field of industrial robots, and more particularly to a method for programming a robot tool center point to follow a spline curve defined by a set of teaching points, wherein the spline curve comprises a set of adjacent quadratic or circular arc functions that are blended in overlapping regions, the spline curve passes through each teaching point, and the teaching points may have arbitrary intervals. [Background technology]

[0002] The use of robots to consistently perform industrial operations, including precise path following, is well known in the art. One example of a path following application is when a robot is used to weld together two components, such as two sheet metal cylinders of different diameters that intersect at an angle, along a complex three-dimensional path. In this type of application, many points are typically defined along the desired path, either from a CAD system or by "teaching" the robot on the actual workpiece, and these teaching points are provided to the robot controller. However, programming a robot to accurately follow a given path has so far been a trial-and-error process, often difficult and time-consuming. This is because some existing robot "spline motion" programming techniques often impose restrictions on the spacing of teaching points, preventing the programming operator from placing teaching points at the desired positions and intervals.

[0003] In addition to the welding applications mentioned above, robots are also used for many other path-following operations such as material distribution, cutting, tracing, and spray painting. In any of these applications, where the tool center point must follow a predetermined path while performing the operation, the ability to define the path precisely and conveniently is crucial. Existing spline motion programming techniques have proven insufficient in terms of the ability to define teaching points at arbitrary positions and intervals, as well as the ability to apply speed control of the tool center point and flexible triggering of process equipment while the tool moves along the spline curve.

[0004] In light of the circumstances described above, it is desirable to provide an improved spline motion calculation technique that can be used to program a robot to perform operations along a continuous path. [Overview of the project]

[0005] The teachings of this disclosure describe a method for programming a robotic continuous path using spline motion control. A set of path points is provided to the robot controller from CAD data or by using a teach pendant or equivalent device with physical workpieces in the robotic work cell. The motion program is defined by robot motion commands that reference the path points. When three or more spline motion commands appear consecutively, a spline curve is calculated. The spline curve consists of a set of adjacent parabolas or arcs, each passing through three path points, and overlapping areas of adjacent parabolas or arcs are blended using a configurable blending algorithm. The spline curve passes through all path points, and there are no restrictions on the placement or spacing of the path points; small point intervals may be followed by large point intervals, and vice versa. Automatic speed control is applied to the spline curve based on tool center point motion and joint motion. User-configurable tool poses may also be applied to the spline curve, and time-based and distance-based trigger points are available for the spline curve.

[0006] Further features of the techniques of the present disclosure will become apparent from the following description and the appended claims in conjunction with the accompanying drawings.

Brief Description of the Drawings

[0007] [Figure 1] FIG. 1 is a diagram of a set of points representing a path used for spline motion control by an industrial robot, as known in the art. [Figure 2] FIG. 2 is a diagram of problems experienced by some existing robot motion control systems when attempting to fit a spline curve to the set of points in FIG. 1. [Figure 3] FIG. 3 is a diagram of the desired spline curve fitting behavior applied to the set of points in FIG. 1 according to an embodiment of the present disclosure. [Figure 4] FIG. 4 is a diagram of a spline curve and corresponding robot motion commands that fit a set of three adjacent path points according to an embodiment of the present disclosure. [Figure 5] FIG. 5 is a diagram of a spline curve that fits a set of four adjacent path points according to an embodiment of the present disclosure, showing how the curve fits to a group of three adjacent points and is combined into a spline curve that passes through all the path points. [Figure 6A] FIG. 6A is a graph of a quadratic function of x with respect to the spline parameter u according to an embodiment of the present disclosure, illustrating the curve fitting calculation through a set of three path points. [Figure 6B] FIG. 6B is a graph of a quadratic function of y with respect to the spline parameter u according to an embodiment of the present disclosure, illustrating the curve fitting calculation through a set of three path points. [Figure 6C] FIG. 6C is a graph of a quadratic function of z with respect to the spline parameter u according to an embodiment of the present disclosure, illustrating the curve fitting calculation through a set of three path points. [Figure 7A] FIG. 7A is a graph of a linear blending function according to an embodiment of the present disclosure, which can be used to calculate the blending curve of the overlapping portions of adjacent parabolas or arcs in a spline curve. [Figure 7B] FIG. 7B is a graph of a cosine blending function according to an embodiment of the present disclosure, and can be used to calculate a blending curve of an overlapping portion of adjacent parabolas or arcs in a spline curve. [Figure 7C] FIG. 7C is a graph of a fifth-degree blending function according to an embodiment of the present disclosure, and can be used to calculate a blending curve of an overlapping portion of adjacent parabolas or arcs in a spline curve. [Figure 8] FIG. 8 is a diagram of a robot tool having attitude control with respect to a fixed reference frame and a robot tool not having attitude control with respect to a fixed reference frame during spline operation according to an embodiment of the present disclosure. [Figure 9] FIG. 9 is a diagram of a system for providing industrial robot spline motion control according to an embodiment of the present disclosure. [Figure 10] FIG. 10 is a flowchart diagram of a method of spline motion control for a robot or other industrial machine according to an embodiment of the present disclosure.

BEST MODE FOR CARRYING OUT THE INVENTION

[0008] The following description of embodiments of the present disclosure regarding a method and system for programming a robot path using spline motion control is essentially exemplary only and is not intended to limit the disclosed apparatus and techniques or their use or application in any way.

[0009] Industrial robots are very good at consistently performing repetitive tasks. In particular, a robot can move to follow almost any path where a tool center point (TCP) can be defined in two or three dimensions. As a result, robots have come to be used for various path following operations such as welding (laser, torch, or arc), cutting, spray painting, and material dispensing. However, defining a path to follow a set of arbitrarily placed points has been problematic in some instances.

[0010] Figure 1 shows a diagram of a set of path points 10 representing paths used for spline motion control by industrial robots, as is known in the art. The set of path points 10 includes individual path points 12–30 (even number). For example, points 12–30 may represent the edges of a first workpiece that are welded to a second workpiece by the robot. Points 12–30 may be defined by computer-aided design (CAD) data or taught using conventional robot point teaching techniques, such as teaching pendant devices, tablet devices, or augmented reality (AR) devices. Points 12–30 may represent arbitrary two-dimensional or three-dimensional path shapes. Because the types of part shapes and robot applications are virtually limitless, points 12–30 often include features such as arbitrary curvature and widely varying point spacings, which have posed problems for some existing robot spline motion control systems.

[0011] Figure 2 illustrates the problems some existing robot motion control systems encounter when attempting to fit a spline curve to the set of points in Figure 1. Figure 2 includes the same set of path points 12–30 as in Figure 1. Using prior art techniques, a spline curve 40 is calculated based on points 12–30. It can be seen that at a position designated as 42, the spline curve 40 fits roughly the first half of the set of path points 10, but then problems arise. Some existing robot motion control systems impose restrictions on the spacing between adjacent points that can be included in a spline curve. In particular, some existing systems require that for each group of adjacent points of three points, the midpoint of the three points lies between 25% and 75% of the distance between the endpoints. In Figure 2, it can be seen that points 24, 26, and 28 are located very close together in a region of high curvature, while adjacent points 22 and 30 are even further apart. As a result, point 24 does not fall within the 25-75% range between points 22 and 26, and therefore, the spline curve 40 cannot use points 22, 24, and 26, as shown in ellipse 44. Similarly, point 28 does not fall within the 25-75% range between points 26 and 30, and therefore, the spline curve 40 cannot use points 26, 28, and 30, as shown in ellipse 46. Consequently, it is not possible to calculate the spline curve 40 to pass through the point sequence 22-24-26-28-30 of set 10 using some existing spline motion control systems.

[0012] Figure 3 illustrates the desired spline curve fitting behavior applied to the set of points 10 in Figure 1 according to an embodiment of the present disclosure. Using the spline curve calculation technique described in detail later, it is possible to calculate a spline curve 50 that faithfully passes through all of points 12-30 in the set 10, including the sequence of points 22-24-26-28-30, which includes widely varying point spacings. The spline curve 50 provides the result expected by the programming operator, avoiding a trial-and-error approach of moving path points in an attempt to make the spline curve follow a desired path, while also eliminating the need for the operator to add extra path points to comply with point spacing limitations.

[0013] Figure 4 shows a spline curve and corresponding robot motion commands that fit a set of three adjacent path points according to an embodiment of the present disclosure. The sequence of robot motion programming commands is shown in window 54, with reference to the points shown on the right side of Figure 4. Path points 60, 62, 64, and 66 are defined from a CAD system or by using a teach pendant or equivalent device. Point 60 is used in a “joint” (J motion type) command that simply moves the robot to a joint in the fastest possible way to define a starting point and position the tool center point at point 60. Then, a sequence of “spline” (S motion type) commands is used, with reference to points 62, 64, and 66, respectively.

[0014] When the first S-motion command is followed by any other type of motion command, the movement from the previous point to the first S-point (62) is linear. When three S-motion commands are consecutive, the robot controller calculates a quadratic function (diametrically a parabola) or, alternatively, a circular arc to pass through the three points called by the three S-motion commands. In Figure 4, the parabola 70 fits the path points 62, 64, and 66 in the manner described later. The motion programming commands shown in window 54 include, in addition to the motion type and point identifier, other parameters including a velocity parameter (defined as absolute velocity or a percentage) and an end type (specifying velocity continuity and other effects at the destination point).

[0015] Figure 4 illustrates a spline curve consisting of a single parabola 70, which is the most basic scenario for spline curve calculation and spline motion control according to this disclosure. More interesting and useful is the scenario in which the spline curve fits a series of path points containing many points. How this is done will be described further later.

[0016] Figure 5 is a diagram of a spline curve that fits a set of four adjacent path points according to an embodiment of the present disclosure, showing how the curve fits a group of three adjacent points and is combined into a spline curve that passes through all the path points. Figure 5 includes the same path points 60-66 as shown in Figure 4, and also includes a fifth path point 68. A sequence of robot motion programming commands is shown in window 56, referring to points 60-68. In this case, path point 68 is also invoked with a spline (S) motion type, thereby resulting in four consecutive S motions.

[0017] Parabola 70 is still visible in Figure 5 and is fitted to path points 62, 64, and 66 as described above. Parabola 72 is calculated to fit to path points 64, 66, and 68. Parabolas 70 and 72 are labeled twice each in Figure 5 for clear identification. Blend curve 74 is calculated for the overlapping portion of parabolas 70 and 72, i.e., the area between point 64 and point 66. Next, the complete spline curve from point 62 to 68 traces parabola 70 from point 62 to point 64, blend curve 74 from point 64 to point 66, and parabola 72 from point 66 to point 68.

[0018] Using the technique of this disclosure, as illustrated in Figure 5, a spline curve can be fitted to a set of path points having the number of points necessary to define a desired path, which may include dozens or more path points. For the purposes described, the path points may be identified as P1-PN. In summary, the technique involves calculating a quadratic function (parabola) to fit the first three path points (P1-P2-P3) of a spline sequence, dropping the first point and including a fourth point to create the next set of three points, and calculating a parabola to fit this next set of three points (P2-P3-P4), and so on, until the last point PN is reached. In other words, a quadratic function or parabola is calculated to fit each unique set of three adjacent path points. A blend curve is then calculated to span the overlapping portion of each adjacent pair of parabolas, so that the entire spline curve follows the first segment of the first parabola (P1 to P2), each subsequent blend curve, and the last segment of the last parabola (PN-1 to PN).

[0019] In an alternative embodiment, the arcs (instead of quadratic functions or parabolas) may be calculated to fit each unique set of three adjacent path points. This will be discussed further later. Blending of the overlapping portions of adjacent arcs is performed in the same manner as described above.

[0020] The technique described above yields a spline curve that directly passes through all path points. Furthermore, the technique imposes no restrictions on the spacing between adjacent path points; the points may be spaced very uniformly, widely varying, or any combination thereof. Thus, the programming operator can place path points wherever they deem necessary to define the desired path, without worrying about points deemed unsuitable by the spline motion calculation program.

[0021] Another feature of the spline curve calculation of this disclosure, which is evident from the above description, is that the spline curve path can be calculated by first identifying only a subset of points in the entire path. For example, consider a case where the first four path points P1-P4 are defined by a conventional method (CAD or teaching), and several later path points, including P5, are specified by a position register, such that the position of the points may change based on external input or other calculations. In this kind of situation, the spline curve can be calculated for the first four points as shown in Figure 5, so that the robot can begin to follow the spline path. Then, the parabola (or arc) of points P3-P4-P5 can be calculated, as long as the position of the fifth point P5 (position register) is identified before the robot tool center point reaches the third point P3, and a blend curve for the overlapping region P3-P4 can also be calculated so that the robot can seamlessly pass through P3 and continue the programmed operation.

[0022] The spline curve calculation described above involves two main parts: the calculation of a quadratic function (parabola) or circular arc that fits each set of three adjacent path points, and the calculation of a blend curve spanning the overlapping portion of each adjacent pair of parabolas or circular arcs. These calculations will be described later.

[0023] Figures 6A, 6B, and 6C are graphs of quadratic functions of x, y, and z, respectively, for a spline parameter u according to the embodiments of this disclosure, illustrating a curve fitting calculation through a set of three path points (designated as P1, P2, and P3). The position of each path point used in the spline curve calculation is defined in Cartesian coordinates (x, y, and z) relative to a fixed base reference frame. The spline parameter u is defined as an independent variable representing the distance along the spline curve. Next, for each set of three adjacent path points, a quadratic function is calculated for each of the x, y, and z coordinates of the three adjacent path points. Figure 6A is graph 610 of curve 612 showing the quadratic function of the x coordinate for u. Figure 6B is graph 620 of curve 622 showing the quadratic function of the y coordinate for u. Figure 6C is graph 630 of curve 632 showing the quadratic function of the z coordinate for u. Figures 6A, 6B, and 6C will be discussed later regarding the fitting of a quadratic function (parabola) to a point, followed by a description of another embodiment in which a circular arc is fitted to a point.

[0024] Curve 612 is calculated to fit the x-coordinates of points P1, P2, and P3 as a quadratic function of the independent spline parameter u. Techniques for calculating a quadratic function (geometrically defining a parabola) to fit a set of three dependent variable values ​​(x-coordinate values) as a function of the independent variable value (spline parameter u) are known in the art.

[0025] Similarly, curve 622 is calculated to fit the y-coordinates of points P1, P2, and P3 as a quadratic function of the independent spline parameter u, and curve 632 is calculated to fit the z-coordinates of points P1, P2, and P3 as a quadratic function of the independent spline parameter u. The entire three-dimensional path of the quadratic function passing through P1-P2-P3 is then determined by solving for the x, y, and z coordinates from curves 612, 622, and 632, respectively, at each incremental position along the spline parameter u. The above approach, shown in Figures 6A, 6B, and 6C, is then repeated for each unique set of three consecutive path points, i.e., P2-P3-P4, P3-P4-P5, and so on.

[0026] Using curves 612, 622, and 632, a parabola or quadratic function passing through P1 - P2 - P3 is determined. Similarly, after a parabola or quadratic function passing through P2 - P3 - P4 is determined, a blend curve must be calculated for the overlapping portion between P2 and P3. Curve 612, which is a curve representing the x - coordinates of the first parabola (passing through P1 - P2 - P3), is designated as C x1 (u). Similarly, curve 622 is designated as C y1 (u), and curve 632 is designated as C z1 (u). Next, for the second parabola (passing through P2 - P3 - P4), three quadratic functions are calculated and can be designated as C x2 (u), C y2 (u), and C z2 (u) respectively.

[0027] The blend curve (blend curve 74 in FIG. 5) between the first parabola and the second parabola is calculated as follows. Curve C x1 (u) is combined with curve C x2 (u) for the portion of the curve from point P2 to point P3 in order to define the x - coordinate of the blend curve as a function of u (mathematical combination techniques described later). Similarly, curve C y1 (u) is combined with curve C y2 (u) for the portion of the curve from point P2 to point P3 in order to define the y - coordinate of the blend curve as a function of u, and curve C z1 (u) is combined with curve C z2 (u) for the portion of the curve from point P2 to point P3 in order to define the z - coordinate of the blend curve as a function of u.

[0028] The foregoing descriptions of FIGS. 6A, 6B, and 6C described curves 612, 622, and 632 as quadratic functions respectively adapted to the x, y, and z coordinates of points P1, P2, and P3. In an alternative embodiment, arcs may be calculated instead of quadratic functions or parabolas to fit the x, y, and z coordinates of points P1, P2, and P3.

[0029] Here, we discuss the use of circular arcs as basis functions instead of quadratic functions. Just as three consecutive points in space define a plane and a parabola can fit three points on the same plane, a circular arc can fit three points. Techniques for calculating a circular arc to fit a set of three dependent variable values ​​(the x, y, or z coordinate values ​​of points P1, P2, and P3) as a function of independent variable values ​​(spline parameters u) are known in the art.

[0030] Overlapping arcs are blended in the same way as described above for parabolas (i.e., the blending function interpolates between the arcs and ensures contact with its nearest point at each segment's endpoint).

[0031] Using circular arcs instead of parabolas as basis functions can be advantageous in some spline motion control applications. For example, a robot can execute circular arcs with extremely high precision in situations where circular motion is required. If the points of the circle are taught perfectly, the circle will be perfect. If the points of the circle are taught imperfectly (e.g., the workpiece is not a perfect circle), the imperfection may be acceptable, and the path will still be very close to a circle.

[0032] On the other hand, quadratic / parabolic basis functions are also preferable in some situations. For example, when a circle is not required, a blended arc has a greater curvature than a quadratic function, which may require a greater deceleration than a quadratic basis function. This is especially true for zigzag paths. Also, a circle is more susceptible to small positional errors in teaching points, especially when two of the points are close together with a third point that is farther away relative to the arc length. Small changes in the teaching points can significantly alter the resulting circular path. Therefore, it is preferable to use arcs as basis functions in some applications and quadratic functions in others.

[0033] For the reasons mentioned above, using a quadratic function (parabola) or a circular arc as the basis for the calculated spline curve is a user-selectable option. The user defines a set of path points and then creates an action program with three or more consecutive spline action commands. The spline action commands can specify the use of either a quadratic or circular basis function. In practice, the user can switch between quadratic and circular basis functions, observe the difference in the resulting spline curves, and select the most desirable result.

[0034] The overall technique, which involves calculating a quadratic basis function or a circular arc basis function for each set of three consecutive points, and then blending the basis functions in the overlapping region, is as described above. According to the technique of this disclosure, curve C x1 (u) and C x2 (u) (and similarly for y and z) can be combined or blended using one of several different function types, including linear functions, trigonometric functions (e.g., cosine functions), and polynomial functions (e.g., quintic functions). The type of blending function is selectable by the programming operator and affects the shape of the blending curve, in particular how closely the blending curve follows the first parabola (or arc) near the first overlap point, and how closely the blending curve follows the second parabola (or arc) near the second overlap point.

[0035] Figures 7A, 7B, and 7C are graphs of linear, cosine, and quintic blending functions, respectively, according to embodiments of the present disclosure, which can be used to calculate the blending curve of the overlapping portion of adjacent parabolas (or arcs) in a spline curve. Figure 7A shows curve C x1 (u) and C x2Graph 710 includes a curve 712 that defines the first-order blending of (u) (and similarly for y and z). Schematically, curve 712 shows the weighting coefficients applied to the first and second parabolas (or arcs) as the blending curve moves from point P2 to point P3. In the case of first-order blending, curve 712 is C 712 =(1-w)C x1 (u)+(w)C x2 It may also be defined as (u), where w is the parameter corresponding to the spline parameter u from P2 to P3, i.e., w=0 at P2 and w=1 at P3. Using linear blending, curve 712 becomes curve C at point P2. x1 (u) has a value equal to curve 712 and curve C at point P3. x2 The curve transitions linearly to have a value equal to (u). In other words, at 10% of the x-coordinate distance from P2 to P3 (w=0.1), curve 712 is C x1 (u) 90%, and C x2 (u) has a weighted value of 10%, etc.

[0036] Figure 7B shows curve C x1 (u) and C x2 Graph 720 includes curve 722 which defines the cosine function blending of (u) (and similarly for y and z). In the case of cosine blending, curve 722 is C 722 =(1 / 2)(1+cos(πw))C x1 (u)+(1 / 2)(1-cos(πw))C x2 (u) may also be defined as w, where w is defined as above. Using cosine blending, the blending curve 722 is curve C at point P2 (w=0). x1 (u) is equal to the curve C at point P3 (w=1). x2 (u) again has a value equal to (u), but compared to the linear curve 712, curve 722 is closer to point P2 than curve C x1 Following (u), curve C is closer to point P3. x2 It follows (u). For example, at 10% of the x-coordinate distance from P2 to P3 (w=0.1), curve 722 is C x1(u) 97.5%, and C x2 (u) has a value weighted by 2.5%.

[0037] Figure 7C shows curve C x1 (u) and C x2 Graph 730 contains curve 732 which defines the polynomial function blending of (u) (and similarly for y and z). One suitable type of polynomial is a quintic function (quintic polynomial). Using quintic blending, curve 732 is C 732 =(1-w) 3 (1+3w+6w 2 )C x1 (u)+(w) 3 (10-15w + 6w 2 )C x2 (u) may also be defined as w, where w is defined as above. Using quintic polynomial blending, the blending curve 732 is curve C at point P2 (w=0). x1 (u) is equal to the curve C at point P3 (w=1). x2 (u) again has a value equal to (u), but compared to the cosine curve 722, curve 732 is closer to point P2 than curve C x1 Following (u), curve C is even closer to point P3. x2 It follows (u). For example, at 10% of the x-coordinate distance from P2 to P3 (w=0.1), curve 732 is C x1 (u) 99%, and C x2 (u) has a value weighted by 1%.

[0038] Referring again to Figure 5, the effects of the different types of blending functions (linear, cosine, and quintic functions) shown in Figures 7A, 7B, and 7C can be schematically interpreted as affecting the shape of the blend curve 74 in the transition from the first parabola 70 to the second parabola 72. The type of blending function most appropriate for a particular application may depend on a variety of factors, including the characteristics of the geometric shape of the path followed by the robot tool center point, the number and spacing of path points, and the type of robot path-following operation (welding, caulking, cutting, etc.). Using the different blending function types described above, the programming operator can select the one that provides the most desirable shape for the entire spline curve.

[0039] The preceding explanation in Figures 4-7 details how a spline curve can be calculated for a set of path points, where any number of path points greater than 3 are used, the spline curve passes through each path point, and the path points can have any point spacing. Many other advantageous features are also provided by the spline motion control program of this disclosure and will be described later.

[0040] Unlike some existing robot motion command types, including existing spline motion programs, the paths calculated using the technique of this disclosure do not deviate from spline curves based on robot joint motion or tool center point velocity. That is, the spline curve path is a function of path points only (as well as the type of basis function and blending curve). As a result, it is possible to display the spline curve path (on a teach pendant, tablet device, or AR device) immediately after the path points are input, and it is not necessary to perform robot motion (inverse kinematics) calculations before displaying the spline curve path.

[0041] Controlling the speed of the tool center point is crucial in any robot path-following operation. Using the techniques of this disclosure, the programming operator has complete flexibility and control over the tool center point speed. The actual tool center point speed in Cartesian coordinates is maintained throughout the spline curve created by the S motion type and does not decelerate at path points when the "termtype" is "CNT100" (meaning to continue at 100%). For example, if each S motion command in a sequence requests a speed of 75 mm / sec and each command has a "termtype" of "CNT100", the tool center point will follow the resulting spline curve at a constant speed of 75 mm / sec. Lower "CNT" values ​​allow deceleration at path points if the operator desires. For example, the operator may want the robot tool to decelerate to half speed near a given path point, in which case the operator would specify that path point as "CNT50". As described above, the spline curve passes directly through path points regardless of speed.

[0042] Automatic speed limiting is a feature of most robot motion control programs. Automatic speed limiting may be applied to spline motion of the present disclosure based on a threshold limit of acceleration or jerk at the tool center point. For example, using the above example of spline motion with a constant speed of 75 mm / sec, if the lateral acceleration becomes very high due to the tool center point speed when the spline follows a very sharp curve, the tool center point speed is automatically reduced in that portion of the spline curve to prevent the lateral acceleration from exceeding a predefined threshold. The threshold may be a value such as 1G or 2G, or a higher or lower value, depending on several factors such as the size and stiffness of the robot and the mass of the tool or other object being carried by the robot.

[0043] Automatic speed limiting may also be applied to the spline motion of this disclosure based on threshold limits for the rotational speed or acceleration of the joints. In this case, each robot's rotary joint has a maximum allowable rotational speed and acceleration. When the robot joint motion following the spline curve is calculated by inverse kinematics, if any of the joints exceed a threshold for rotational speed or acceleration, a joint threshold limit is applied, and as a result, the speed of the tool center point is lower than the value specified by the programming operator.

[0044] The disclosed spline motion control program is capable of predicting deceleration of any type of tool center point, whether due to a decrease in the "CNT" value in the program or due to an automatic speed reduction related to the Cartesian limit of the tool center point or the rotational limit of the joint. Any such deceleration of a tool center point can be communicated to process equipment so that the process equipment can compensate for it (for example, by reducing the coking flow in proportion to the deceleration).

[0045] Tool attitude control is another important feature in robot motion programming. Tool attitude control can be applied to the spline motion of this disclosure using at least two different techniques. One technique is to define the tool attitude by manually configuring the robot and tool using a teach pendant when defining path points, and then blending the attitudes across segments. The other technique is based on three-angle attitude control relative to a fixed "base" reference frame. An example illustrating how the desired attitude control is achieved using the three-angle attitude control technique of this disclosure with respect to the spline curve paths of the types described above will be described later.

[0046] Figure 8 shows robotic tools having attitude control relative to a fixed reference frame during spline operation and robotic tools without attitude control relative to a fixed reference frame according to embodiments of the present disclosure. The workpiece 800 has a top surface 810 (shaded), the top surface 810 having a perimeter 812. The perimeter 812 may be represented by a spline curve as described above in the present disclosure, and the robot is programmed so that the tool 820 follows the spline curve along the perimeter 812. For example, the robot may be fitted with a distribution system, the tool 820 being a distribution tip designed to apply a bead of adhesive material. A fixed reference frame 830 is defined, which may have an origin on the robot base or elsewhere in the work cell on which the robot operates on the workpiece. In this case, the XY plane of the fixed reference frame 830 is coplanar or parallel to the plane of the top surface 810.

[0047] In the application shown in Figure 8, it is considered that there is a requirement that the tool 820 must always be kept perpendicular to the local tangent of the spline curve defining the outer circumference 812. In addition to being perpendicular to the local tangent of the spline curve, the tool 820 must have a downward angle of 45° (angle of intersection with the plane of face 810), and a downward angle of 45° provides optimal application of the adhesive bead. This means that the tool 820 always intersects the XY plane of the fixed reference frame 830 at an angle of 45°, and the projection of the tool 820 always forms a 45° angle with the Z axis (vertical axis) of the fixed reference frame 830. The tool 820 is shown in the appropriate position and orientation at the path point 814 on the left side of the workpiece 800.

[0048] Using the spline calculation technique described above and the attitude control features of this disclosure, the tool attitude can be maintained in accordance with the requirements described above. Specifically, three-angle attitude control with respect to a fixed reference frame is provided. The reference frame 830 can be used as a fixed reference frame for attitude control. Next, the azimuth, elevation, and spin angles of the tool attitude are calculated in addition to the robot joint kinematics. It is possible to calculate the robot joint motion such that a tool elevation angle of 45° above the XY plane of frame 830 is maintained along the entire spline curve along the outer circumference 812, which is shown as tool 820A at the right-hand path point 816 of the workpiece 800.

[0049] Without the elevation control features of this disclosure, tool 820 could be positioned perpendicular to the spline curve at path point 816 but at a completely incorrect elevation angle. This is shown as tool 820B at path point 816. Due to the improper tool orientation, not only will the adhesive bead provided by tool 820B be insufficient, but the small tool elevation angle may cause tool 820B or any part of the robot to actually interfere with the fixture or other objects. This example illustrates the importance of being able to define elevation orientation control relative to a fixed reference frame.

[0050] In addition, many tools have a "dogleg" bend or other axial asymmetry that makes the tool's spin angle important. The spin angle is the angular rotation position around the local Z-axis along the length of the tool. Using the attitude control technique of this disclosure, the spin angle of tool 820 is also appropriately controlled. The desired spin angle of tool 820 is defined and shown at path point 814 and maintained around the workpiece 800 up to path point 816, so that tool 820A has the correct attitude in both elevation and spin angle. In contrast, tool 820B calculated without 3-angle attitude control relative to a fixed reference frame 830 has not only the incorrect elevation angle as described above, but also an incorrect spin angle. This further illustrates the importance of 3-angle attitude control relative to a fixed reference frame when calculating the robot motion of a spline curve.

[0051] There are many other applications where the attitude control techniques described above are important. The spline curve path followed does not need to be planar and may have any three-dimensional shape. The requirements for azimuth and elevation angles may differ from those described above. In any such application, the disclosed three-angle attitude control relative to a fixed reference frame makes it possible to satisfy the requirements.

[0052] In applications where arc basis functions are used, circular attitude control can be used, similar to the control of azimuth, elevation, and spin angles described above, as well as in regular (non-spline) circular motion, except that the three angles are calculated relative to a local circular reference frame rather than a separately defined reference frame.

[0053] Most robotic path-following applications involve several types of process equipment that are moved and controlled by a robot. Examples of process equipment types include welding machines (laser, arc, or torch), cutting machines, material dispensers, and spray painters. In these applications, the robot not only moves the tool tip along a predetermined path at a desired speed and orientation, but the robot controller also provides control signals to the process equipment. In the case of a material dispenser system, the control signals include at least process on (dispensing start), process off (dispensing stop), and a set flow rate (of the material to be dispensed). Trigger points, as defined in the spline motion commands of the type shown in Figures 4 and 5, are known in the art as a means of defining control signals for a defined path. However, existing robotic spline motion control systems do not provide the flexibility and precision required to most effectively define trigger points.

[0054] Trigger points do not need to coincide with path points. While path points define the shape of the path (e.g., a spline curve), trigger points trigger process control commands. In the spline motion control techniques of this disclosure, trigger points can be established in at least four ways with respect to the spline curve and its path points, including a time before the path point, a time after the path point, a distance before the path point, or a distance after the path point. For example, a process-on trigger point may be defined at a time 1.2 seconds before reaching a particular path point, and a process-off trigger point may be defined at a time 0.6 seconds after reaching a different path point. In the case of "pre-time" and "post-time" trigger points, the controller knows the tool center point velocity at all points along the spline curve and the exact distance along the spline curve (represented by the aforementioned spline parameter u), so the robot controller knows exactly where these trigger points are located on the spline curve. Similarly, for example, a process-on trigger point may be defined at a distance 75 mm before reaching a particular path point. Furthermore, in the case of "forward distance" and "backward distance" trigger points, the robot controller knows exactly where the trigger point is located, and "forward distance" or "backward distance" is the true distance along the spline path from the trigger point to the path point, rather than the straight-line distance from the trigger point to the path point.

[0055] In addition to the individually activated trigger points described above, periodic trigger points may be defined. Periodic triggers issue time-based or distance-based sequences of on and off commands to process equipment. For example, periodic triggers may be used in "stitch" sealing, where a type of dashed sealant is applied to a workpiece. The use of periodic triggers in other types of process equipment applications (e.g., laser welding) is readily conceivable. In time-based periodicity, a first trigger point may be used to initiate the sequence, and then a periodic sequence of commands, such as "on for 1.6 seconds" and "off for 1.1 seconds," may be automatically issued until a second trigger point terminates the periodic sequence. In distance-based periodicity, the first trigger point may again be used to initiate the sequence, and then a periodic sequence of commands, such as "on for 55 mm" and "off for 40 mm," may be automatically issued until a second trigger point terminates the periodic sequence. In distance-based periodicity, distance may be defined as Cartesian distance (true 3D distance, or X, Y, or Z coordinate distance), or distance may be defined as the distance traveled along the tool center point path (e.g., along a spline curve).

[0056] By using the true distance along the spline curve and the true time spent moving along the spline curve, the trigger points described above provide the precision required to achieve desired results in process operations such as material distribution, spray painting, welding, and cutting.

[0057] It is well known in the art to manually "step" through a robot motion program during the evaluation / optimization phase using a teach pendant or equivalent device before the program is validated for manufacturing use. However, when spline curves are involved, existing systems do not always provide the desired true spline motion during single-step motion control. These shortcomings of prior art systems are overcome by the spline motion control techniques of this disclosure.

[0058] Using the spline motion control of this disclosure, if the program is paused while in the middle of a spline motion segment, a step-forward command will, if necessary, move the robot tool along the spline curve path to the next path point. Because spline curves are complex, some existing systems cannot follow the spline path after pause and resume operations. Similarly, the spline motion control of this disclosure will make the spline curve follow the previous path point when a step-backward command follows a pause. Furthermore, if the operator pauses or pauses the motion program, then moves the tool away from the spline curve path, and then resumes the program, the tool will first return directly to the spline curve path, and then proceed along the spline path to the next path point.

[0059] Figure 9 is a diagram of a system 900 for robot spline motion control according to an embodiment of the present disclosure. Robot 910 is located and operates within a work cell 920. Robot 910 is shown as a conventional multi-axis articulated industrial robot having arms connected in series by rotary joints, but may be any other type of robot, including but not limited to industrial robots configured for moving parts / materials, welding, painting, or other applications. In fact, although a robot is used for illustrative purposes in Figure 9, the disclosed technique for spline motion may be used with any type of articulated machine that is required to follow a path having any geometric shape.

[0060] The robot 910 communicates with the controller 912, typically via a cable 914. As is known in the art, the controller 912 includes a processor and memory containing instructions for operating the robot 910 according to a program. The controller 912 receives position information from the robot 910's joint encoders and sends commands to the robot 910 that define the joint motor movements. Although only one robot 910 is shown in Figure 9, the system 900 may include two or more robots 910 operating within the work cell 920. When the system 900 includes multiple robots 910, each robot 910 may have its own controller 912, which communicate with each other.

[0061] The robot 910 has a robot base reference frame 916, which is a fixed reference frame whose origin is on the robot base or somewhere within the work cell 920, and the positions of all robot arms are always known relative to the robot base reference frame 916 by kinematic calculations. That is, the kinematics of the robot, in particular the length of each arm from the center of one joint to the center of the next joint, are precisely known. The angular positions of the joints are also always known from the joint position encoders. Starting from a base joint which may have a rotation axis aligned with the axis of the robot base reference frame 916, the position of each arm and the position of the center of the joint at the end of each arm can be calculated in coordinates of the robot base reference frame 916. Inverse kinematic calculations are used to determine the joint motion required to make the tool center point follow a predetermined path, such as a spline curve path according to this disclosure. The robot base reference frame 916 may also be used as a fixed work cell coordinate frame from which all path points are defined and the spline curve is calculated. As will be understood by those skilled in the art, other local coordinate frames may also be defined, such as one coordinate frame fixed to each arm.

[0062] Operator 930 may be inside the work cell 920 during the teaching operation of the robot 910. Operator 930 uses the teaching device 932 to teach path points on an actual workpiece (not shown) placed in the work cell 920. The teaching device 932 may be an AR headset device worn by Operator 930, or a handheld device (e.g., a smartphone, tablet, or teach pendant) held by Operator 930. When the teaching device 932 is a headset, the headset includes a processor, inertial sensors, a camera, and goggles, which superimpose a computer-generated 3D image onto a camera image of the user's field of view or a real-world object. The teaching device 932 may also be a handheld device, in which case the device 932 includes a processor, inertial sensors, a camera, and a display screen, in addition to the required communication system. If path points are defined in another way, such as from a CAD system, the teaching device 932 may not be required.

[0063] The teaching device 932 communicates bidirectionally and wirelessly with the controller 912 so that teaching path points can be transmitted from the teaching device 932 to the controller 912, and spline curves calculated by the controller 912 can be transmitted to the teaching device 932 for display. As will be understood by those skilled in the art, other types of data can also be transmitted between the teaching device 932 and the controller 912. The communication between the teaching device 932 and the controller 912 may be hardwired or wireless. The wireless communication between the teaching device 932 and the controller 912 may be via a wireless local area network (WiFi), Bluetooth®, cellular communication, or any other suitable wireless technology. If the work cell 920 includes multiple robots 910, the teaching device 932 preferably communicates with only one of the controllers 912 (designated as the master).

[0064] Computer 940 may provide CAD data to controller 912. In this case, the CAD data includes multiple path points used for spline curve calculations, such as set 10 of path points in Figure 1. Computer 940 may be any type of computer, server, or storage device that can provide CAD data to controller 912. Although a hardwired (network) connection is shown between computer 940 and controller 912, a wireless connection (such as WiFi) may also be used.

[0065] In system 900, the controller 912 is configured to receive path points, calculate a spline curve as described above, and use the calculated spline curve for controlling the motion of the robot 910. Spline motion control of the robot 910 includes making the tool center point follow a calculated spline curve having a predetermined attitude and speed, and providing trigger commands such as on / off commands to process equipment. The teaching device 932 may also be used to control the robot 910 via the controller 912, for example, by issuing manual motion commands (such as step forward, step backward) from the operator 930.

[0066] Figure 10 is a flowchart 1000 of a method for controlling spline motion for a robot or other industrial machine according to an embodiment of the present disclosure. In box 1002, a plurality of path points are defined and provided to the robot controller 912. The path points may be defined one at a time using a handheld device such as a teach pendant, or the path points may be provided from a CAD system. In box 1004, motion commands are defined by referencing the path points. The motion commands may be entered into a teach pendant and transmitted to the controller 912, or they may be defined in several other ways known in the art. The motion command includes a motion type (e.g., joint, line, or spline), an ID of the target path point, a velocity, an end type, and optionally trigger point parameters. The motion command may also include a selection of a basis function type (quadratic or circular arc function) and a blending curve type (linear, cosine, or quintic function).

[0067] In box 1006, controller 912 calculates a path based on the motion command, which includes calculating a spline curve path segment in which three or more S commands appear consecutively. The spline curve path segment is calculated as described in detail above, which includes calculating a quadratic function (parabola) or arc for each unique set of three adjacent path points, and calculating a blending curve so as to span the overlapping portion of each pair of adjacent parabolas or arcs. In box 1008, the tool center point velocity and tool attitude are calculated for the spline curve path. In order to calculate the tool center point velocity and tool attitude, the joint motion following the spline curve path must also be calculated using inverse kinematics. As described above, the tool center point velocity is maintained at the value defined by the motion command, regardless of the density of path points or other factors, unless automatic velocity limiting is required to prevent excessive acceleration or jerk of the tool center point, or excessive velocity or acceleration of the joints. The tool attitude may be calculated to suit the operator's preference, including the use of three-angle attitude control relative to a fixed reference frame as described above.

[0068] In box 1010, the calculated path, velocity, and orientation, along with the path points, are displayed for the operator to view. The graphics may be displayed on a teach pendant, tablet device, AR device, etc. When an AR device is used, the calculated path may be superimposed on the actual workpiece on the AR display, allowing the operator to visually verify how closely the calculated spline curve follows the contour of the actual workpiece. In an alternative embodiment, the spline curve and path points are displayed immediately after the spline curve is calculated in box 1006, rather than after the joint motion is calculated in box 1008.

[0069] In box 1012, the operator may optionally modify or insert path points or commands as needed to achieve a suitable path. For example, when viewing the display of the calculated spline path in box 1010, the operator may decide to insert one or more additional path points between existing path points to adjust the shape of the spline curve. As mentioned above, there are no such constraints in this spline curve calculation technique, so the operator does not need to worry about artificial point spacing constraints. The operator is also assured that the resulting spline curve path passes through all path points, including any path points newly added or inserted after the first spline curve has been calculated and displayed. The operator may also change the type of basis function or blending curve used in the spline curve calculation. After modifications to the curve type and / or path points have been made in box 1012, the spline curve is recalculated along with the velocity and attitude, and the updated information is displayed for the operator's review. Modifications to path points and / or curve type are repeated as needed until the operator is satisfied with the resulting spline curve.

[0070] In box 1014, the final motion program is authorized or executed for actual manufacturing use by the robot / controller. The verified motion program includes the final set of path points, the calculated spline curve path (and other types of path segments if used), the tool center point velocity, the tool orientation, and the trigger point and trigger command.

[0071] Throughout the above description, various computers and controllers are described and implied. The software applications and modules of these computers and controllers are understood to run on one or more computing devices having a processor and memory modules. In particular, this includes a processor in the computer 940, robot controller 912, and teaching device 932 described above. Specifically, the processor in controller 912 is configured to calculate a spline curve based on path points in the manner described above. Communication between these devices, and between these devices and any other devices (such as a server or factory master controller), may be via a hardwired network or using any suitable wireless technology such as a cellular phone / data network, Wi-Fi, broadband internet, Bluetooth®, etc.

[0072] As described above, the disclosed technique for controlling spline motion of a robotic continuous path offers several advantages over prior art techniques. These advantages include a calculated spline curve that passes through all path points, no restrictions on the placement or spacing of path points, user control of the basis functions and blend curve properties used in the spline curve, tool center point velocity maintained at a user-defined value regardless of the number of path points, automatic velocity control to prevent excessive acceleration of tool center points or joint velocity, improved tool attitude control, and flexible definition of trigger points for path points.

[0073] While several exemplary aspects and embodiments of methods and systems for controlling spline motion of robotic continuous paths have been described above, those skilled in the art will recognize their modifications, rearrangements, additions, and subcombinations. Accordingly, the appended claims and any claims introduced hereafter are to be construed as encompassing all such modifications, rearrangements, additions, and subcombinations within their true spirit and scope.

Claims

1. A method for providing spline motion control for an industrial robot, wherein the method is: The process of defining multiple path points through which the tool center point of the robot passes, A step of calculating a spline curve path passing through the path points in a predetermined order, comprising: a step of calculating basis functions passing through each unique set of three adjacent path points; and a step of calculating a blending curve spanning the overlapping portion of each pair of adjacent basis functions. A step of calculating a robot joint motion that causes the tool center point to follow the spline curve path while satisfying a defined tool center point velocity profile and defined tool attitude requirements, A method comprising the steps of controlling the robot using the calculated robot joint motion, the steps of providing control signals to process equipment during the control of the robot, wherein the control signals are activated based on trigger points having a defined spatial or temporal relationship with one or more of the path points.

2. The method according to claim 1, wherein the basis function is a quadratic function or a circular arc.

3. The method according to claim 1, wherein the spline curve path comprises the first part of the first basis function, each of the blending curves, and the last part of the last basis function.

4. The method according to claim 1, wherein the basis functions for each unique set of three adjacent path points include basis functions for the x-Cartesian coordinates, y-Cartesian coordinates, and z-Cartesian coordinates of the path points, respectively, as functions of independent spline length parameters.

5. The method according to claim 4, wherein the blending curve is calculated for each of the basis functions of the x-Cartesian coordinate, y-Cartesian coordinate, and z-Cartesian coordinate of the path point, and the blending curve includes a linear function, a cosine function, and a quintic function.

6. The method according to claim 1, wherein the plurality of path points are defined using computer-aided design (CAD) data or using a teaching device operated in close proximity to a physical workpiece.

7. The method according to claim 1, wherein the tool center point velocity profile is defined based on a user-defined tool center point velocity for each of the path points, and the velocity profile is automatically modified when it is necessary to prevent the tool center point from exceeding a predetermined maximum acceleration or jerk, or to prevent the robot joint movement from exceeding a predetermined rotational speed or acceleration.

8. The method according to claim 1, wherein the tool attitude requirement is defined by blending manually taught tool attitudes at the path point, or by using three-angle attitude control with respect to a fixed reference frame, the three-angle attitude control includes controlling the azimuth and elevation angles with respect to the fixed reference frame and controlling the spin angle around the axis of the local tool reference frame.

9. The method according to claim 1, wherein the trigger point is defined to occur at a predetermined time before one of the path points, a predetermined time after one of the path points, a predetermined distance before one of the path points, or a predetermined distance after one of the path points.

10. The method according to claim 1, wherein the trigger points are defined to occur periodically, begin at a start trigger point defined in relation to a path point, continue a time-based or distance-based sequence of on and off commands for process equipment, and end at a end trigger point.

11. The method according to claim 1, further comprising the step of displaying the spline curve path and the path points on a display device before calculating the robot joint motion, the step of displaying the spline curve path and the path points on an augmented reality (AR) device superimposed on a camera image of a physical workpiece.

12. The method according to claim 11, further comprising the steps of: after viewing the spline curve path on the display device, the operator defining one or more additional path points or modifying one or more existing path points; and recalculating the spline curve path.

13. The method according to claim 1, wherein the steps of calculating the spline curve path, calculating the robot joint motion, and controlling the robot are performed by a robot controller that communicates with the robot.

14. A method for providing spline motion control for an industrial robot, wherein the method is: The process of providing a robot controller with a plurality of path points through which the tool center point of the robot passes, and a sequence of spline motion commands that specify the path points in a predetermined order. A step of calculating a spline curve path passing through the path points in the predetermined order using the controller, comprising: calculating basis functions passing through each unique set of three adjacent path points; and calculating a blending curve spanning the overlapping portion of each pair of adjacent basis functions, wherein the spline curve path consists of the first part of the first basis function, each of the blending curves, and the last part of the last basis function, and the basis functions are quadratic functions or circular arcs, and The process involves displaying the spline curve path and the path points on a display device, and allowing the operator to modify the path points as necessary. The process involves the controller calculating a robot joint motion that causes the tool center point to follow the spline curve path while satisfying a defined tool center point velocity profile and defined tool attitude requirements, A method comprising the steps of controlling the robot by the controller using the calculated robot joint movements, the steps of providing control signals to process equipment during the control of the robot, wherein the control signals are activated based on trigger points having a defined spatial or temporal relationship with one or more of the path points.

15. The method according to claim 14, wherein the basis functions for each unique set of three adjacent path points include basis functions for each of the x-Cartesian coordinates, y-Cartesian coordinates, and z-Cartesian coordinates of the path points as functions of independent spline length parameters, the blending curve is calculated for each of the basis functions for the x-Cartesian coordinates, y-Cartesian coordinates, and z-Cartesian coordinates of the path points, and the blending curve includes a linear function, a cosine function, and a quintic function.

16. An industrial machine system having spline motion control, wherein the system is Industrial machinery and, A machine controller having a processor and memory, and communicating with the machine, wherein the controller A step of receiving multiple path points that pass through the tool center point of the machine, A step of calculating a spline curve path passing through the path points in a predetermined order, comprising: a step of calculating basis functions passing through each unique set of three adjacent path points; and a step of calculating a blending curve spanning the overlapping portion of each pair of adjacent basis functions. A step of calculating a mechanical joint motion that causes the tool center point to follow the spline curve path while satisfying a defined tool center point velocity profile and defined tool attitude requirements, A step of controlling the machine using the calculated machine joint motion, the step of providing control signals to process equipment during the control of the machine, wherein the control signals are activated based on trigger points having a defined spatial or temporal relationship with one or more of the path points, A controller configured to perform a process including, A system equipped with these features.

17. The system according to claim 16, wherein the basis function for each unique set of three adjacent path points includes a quadratic function or arc for each of the x-Cartesian coordinates, y-Cartesian coordinates, and z-Cartesian coordinates of the path points, as a function of independent spline length parameters.

18. The system according to claim 17, wherein the blending curve is calculated for each of the basis functions of the x-Cartesian coordinate, y-Cartesian coordinate, and z-Cartesian coordinate of the path point, and the blending curve includes a linear function, a cosine function, and a quintic function.

19. The system according to claim 16, wherein the tool center point velocity profile is defined based on a user-defined tool center point velocity for each of the path points, and the velocity profile is automatically modified when it is necessary to prevent the tool center point from exceeding a predetermined maximum acceleration or jerk, or to prevent the mechanical joint operation from exceeding a predetermined maximum velocity or acceleration.

20. The system according to claim 16, wherein the tool attitude requirement is defined by blending manually taught tool attitudes at the path point, or by using three-angle attitude control with respect to a fixed reference frame, the three-angle attitude control includes controlling the azimuth and elevation angles with respect to the fixed reference frame and controlling the spin angle around the axis of the local tool reference frame.

21. The system according to claim 16, further comprising a display device that displays the spline curve path and the path points before the mechanical joint motion is calculated, and which, when the display device includes augmented reality (AR) functionality, displays the spline curve path and the path points superimposed on a camera image of a physical workpiece.

22. The system according to claim 16, wherein the trigger points are individually defined to occur at a predetermined time before one of the path points, a predetermined time after one of the path points, a predetermined distance before one of the path points, or a predetermined distance after one of the path points, or the trigger points are defined to occur periodically, starting at a start trigger point defined with respect to a path point, continuing a time-based or distance-based sequence of on and off commands for process equipment, and ending at an end trigger point.

23. The system according to claim 16, wherein the process equipment is moved by the industrial machine, and the process equipment includes devices selected from a group including a welding machine, a cutting machine, a material dispenser, and a spray painting machine.