Method and system for programming an industrial robot

By obtaining the tool model posture data held by the user and generating executable code, the problems of difficult tools to move and security limitations in the prior art are solved, and efficient and secure industrial robot programming is achieved.

CN120380434APending Publication Date: 2025-07-25ABB (SCHWEIZ) AG
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280102509.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-11-21
Publication Date
2025-07-25

AI Technical Summary

Technical Problem

In the prior art, the industrial robot programming method has a heavy and difficult to move due to the tool being installed on the robot, or cannot be touched by the user due to safety reasons, resulting in programming complexity and inefficiency.

Method used

By obtaining the pose data of the tool model held by the user, using the pose tracker to capture and convert it into the robot coordinate system, executable code is generated, and alert instructions are sent in real time to guide the user to avoid exceeding the reach of the robot and improve programming efficiency.

Benefits of technology

Without weakening performance, the efficiency of robot programming is improved, user operations are simplified, the risk of tools exceeding the reach of the robot is avoided, and the safety and efficiency of programming are improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120380434A_ABST
    Figure CN120380434A_ABST
Patent Text Reader

Abstract

The embodiment of the invention relates to a method and system for programming an industrial robot. The method comprises: acquiring pose data (115) of a tool model (110) moved by a user about a workpiece (120) to be machined, the tool model (110) being held by the user without being held by the robot (200); determining reachability of the robot (200) to the attitude data (115); and generating executable code based on the reachable pose data (115) to be executed by the robot (200) to machine the workpiece via a real tool (210) held by the robot (200). By utilizing the method and the system, the robot programming efficiency can be improved under the condition that the performance is not weakened.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present disclosure generally relate to an industrial robot, and a method and system for programming an industrial robot. Background Art

[0002] Industrial robots are widely used in the industrial field. An industrial robot generally includes a robotic arm having a plurality of joints and a controller programmed to control the movement of the robotic arm. Due to the complexity of robot programming, it is difficult for small and medium-sized enterprises to invest in robotics. Developing a programming method that facilitates technicians to convert their skills into industrial robot programs is crucial. A technique called programming by demonstration has been widely regarded as a very convenient way of robot programming. During programming by demonstration, the programmer manually moves a tool or a work object mounted on the robot to positions along the path of the robot to be programmed and records the movement in a memory in the robot controller.

[0003] The problem with this method is that the tool must be mounted on the robot and the robot is further moved by the user. In many cases, both the tool and the robotic arm are heavy and not easy to move. In such cases, it is difficult to use the programming by demonstration method. In some other cases, industrial robots operate in the industrial field and, for safety reasons, prevent users from contacting the industrial robots. In such cases, the programming by demonstration method cannot be used. Therefore, there is a need to improve the method for robot programming. Summary of the Invention

[0004] Example embodiments of the present disclosure provide a method and system for programming an industrial robot, which can simplify robot programming.

[0005] In a first aspect of the present disclosure, a method for programming an industrial robot is provided. The method includes: obtaining attitude data of a tool model moved by a user around a workpiece to be processed, the tool model being held by the user and not by the robot; determining the reachability of the robot to the attitude data; and generating executable code based on the reachable attitude data, the executable code to be executed by the robot to process the workpiece via a real tool held by the robot. According to the present disclosure, during robot programming, since the tool model is moved by the user and not attached to the robotic arm, the programming process is more efficient compared to programming by demonstration of a robot without sacrificing performance. By determining the reachability of the robot to the attitude data, the movement of the user can be guided to avoid the user's movement exceeding the reachable range of the robot.

[0006] In some embodiments, obtaining the pose data of the tool model may include: receiving the pose data of the tool model from a pose tracker configured to capture pose data; obtaining a transformation matrix between the tool model coordinate system and the robot coordinate system; and transforming the pose data from the tool model coordinate system to the robot coordinate system through the transformation matrix. In this way, the pose data captured by the pose tracker can be used for mathematical calculations in combination with the robot.

[0007] In some embodiments, the method may further include: during the movement of the tool model, once it is determined that the robot cannot reach the pose data, a first alarm instruction is sent in real time, and the first alarm instruction includes at least one of a visual alarm instruction, an audible alarm instruction, and a tactile alarm instruction. In this way, once the robot cannot reach the pose data, a warning is issued to the user. The user can be well guided to appropriately control the pose of the tool model.

[0008] In some embodiments, the method may further include: during the movement of the tool, once it is determined that the difference between the captured pose data and the pose data that the robot can reach reaches a predetermined threshold, a second alarm instruction different from the first alarm instruction is sent in real time. In this way, even if the pose data is reachable by the robot, but it is close to the pose data that the robot cannot reach, a warning is issued to the user before the pose becomes a pose that the robot cannot reach, and then the user can adaptively change the strategy of moving the tool model to avoid exceeding the pose that the robot can reach. The user can be well guided to appropriately control the pose of the tool model during robot programming.

[0009] In some embodiments, the visual alarm instruction may be sent to a display and / or a lamp, the audible alarm instruction is sent to a buzzer or a speaker, and the tactile alarm instruction is sent to a tactile actuator. In this way, a warning can be appropriately issued to the user.

[0010] In some embodiments, determining the reachability of the robot to the pose data may include: obtaining the structural characteristics of the robot; based on the structural characteristics of the robot and the pose data of the tool model in the robot coordinates, determining whether the angles of the joints of the robot have solutions by using inverse kinematics; and once it is determined that the angles of the joints of the robot have no solutions, an alarm instruction is sent in real time. In this way, the tool model can move over a large area as long as the robot can reach that area. The user's freedom of movement can be maximized.

[0011] In some embodiments, the method may further include: when it is determined that the angles of the joints of the robot have solutions, determining whether the solutions are singular points; and once it is determined that the solutions are singular points, an alarm instruction is sent in real time. In this way, the singular points of the joints can be avoided.

[0012] In some embodiments, obtaining the structural characteristics of a robot may include: acquiring the D-H parameters of the robot and the limit angles of the joints of the robot.

[0013] In some embodiments, the method may further include: determining boundary values that the robot can reach based on the D-H parameters of the robot and / or the limit angles of the joints, where the boundary values include the farthest distance the robot can reach, the maximum angle and / or the minimum angle that the joints of the robot can achieve; and generating an alarm instruction based on the proximity of the pose data to the boundary values, where the alarm instruction varies in intensity or frequency. In this way, the guidance for guiding the user to move the tool model can be further improved.

[0014] In some embodiments, determining the reachability of the robot to pose data may include: acquiring the D-H parameters of the robot and the limit angles of the joints of the robot; determining the workspace of the robot that the robot can reach based on the D-H parameters and the limit angles of the joints; and sending an alarm instruction once it is determined that the tool model is close to and / or outside the workspace. In this way, the user guidance can be simplified at a reduced cost.

[0015] In some embodiments, the method may further include: sending an alarm instruction based on the proximity of the pose data to the boundary of the workspace, where the alarm instruction varies in intensity or frequency. In this way, the user can be warned in an efficient manner.

[0016] In some embodiments, the pose data includes position data and orientation data.

[0017] In a second aspect of the present disclosure, there is provided a system for programming an industrial robot. The system includes: a pose tracker configured to capture pose data of a tool model moved by a user around a workpiece to be machined; and a processor configured to execute the method according to any one of claims 1 to 12.

[0018] In some embodiments, the system may further include an alarm device connected to the processor and configured to send an alarm in response to an alarm instruction from the processor indicating the reachability of the robot to the pose data, where the alarm device includes at least one of a display, a lamp, a buzzer, a speaker, and a tactile actuator.

[0019] In a third aspect of the present disclosure, there is provided a computer program product tangibly stored on a computer-readable storage medium and including instructions that, when executed on at least one processor, cause the at least one processor to execute the method according to any one of the first aspect. Description of the Drawings

[0020] The above and other objects, features, and advantages of the example embodiments disclosed herein will become more readily understood through the following detailed description with reference to the accompanying drawings, in which several example embodiments disclosed herein will be shown by way of example and not limitation, and in which:

[0021] Figure 1 is a schematic view showing the operation of an industrial robot to be programmed;

[0022] Figure 2 is a schematic view showing a system for programming an industrial robot according to an example embodiment of the present disclosure; Figure 1 an industrial robot

[0023] Figure 3 shows a flowchart of a method for programming an industrial robot according to an example embodiment of the present disclosure;

[0024] Figure 4 is a block diagram of a system for programming an industrial robot according to an example embodiment of the present disclosure;

[0025] Figure 5 shows a flowchart of a method for programming an industrial robot according to another example embodiment of the present disclosure;

[0026] Figure 6 shows a flowchart of a method for programming an industrial robot according to yet another example embodiment of the present disclosure;

[0027] Figure 7 is a schematic view showing the operation of an industrial robot to be programmed;

[0028] Figure 8 is a schematic view showing a system for programming an industrial robot according to another example embodiment of the present disclosure; Figure 7 an industrial robot

[0029] Throughout the drawings, the same or similar reference numerals are used to indicate the same or similar elements. Detailed Description

[0030] The principles of the present disclosure will now be described with reference to several example embodiments shown in the accompanying drawings. Although example embodiments of the present disclosure are shown in the drawings, it should be understood that the described embodiments are only for facilitating better understanding by those skilled in the art and thereby implementing the present disclosure, rather than limiting the scope of the present disclosure in any way.

[0031] The term "comprising" or "including" and its variants shall be understood as open-ended terms meaning "including but not limited to". Unless the context clearly indicates otherwise, the term "or" shall be understood as "and / or". The term "based on" shall be understood as "at least partially based on". The term "operable" means a function, action, movement, or state that can be achieved by an operation caused by a user or an external agency. The terms "one embodiment" and "an embodiment" shall be understood as "at least one embodiment". The term "another embodiment" shall be understood as "at least one other embodiment". The terms "first", "second", etc. may refer to different or the same objects. Other explicit and implicit definitions may be included hereinafter. The definitions of the terms are consistent throughout the present specification unless the context clearly indicates otherwise.

[0032] Unless otherwise stated or limited, the terms "mounted", "connected", "supported", and "coupled" and their variants are used broadly and encompass direct and indirect mounting, connecting, supporting, and coupling. Further, "connected" and "coupled" are not limited to physical or mechanical connection or coupling. In the following description, the same reference numerals and labels are used to describe the same, similar, or corresponding parts in the drawings. Other explicit and implicit definitions may be included hereinafter.

[0033] The guidance for the robot through the programming method does improve the programming efficiency. However, as described above, this method is not available in many application scenarios. Users in the industrial field cannot access industrial robots, for example, due to safety reasons, robot collisions. The present disclosure proposes a new method that eliminates the need for users to access the robotic arm while improving the programming efficiency. The above features and advantages of the exemplary embodiments disclosed herein will become more readily understood through the following detailed description with reference to the accompanying drawings.

[0034] Figure 1 An industrial robot 200 to be programmed is shown, and the industrial robot 200 can be arranged in an industrial field to process workpieces 120, 130. As Figure 1As shown, the robot 200 includes a robotic arm 220 and a real tool 210 attached to the robotic arm 220. Workpieces 120, 130 are placed on the workbench 190. The robot 200 is configured to execute the code in the controller of the robot 200 to control the movement of the robotic arm 220 along a programmed path so that the tool 210 can automatically machine the workpieces. In the example shown, two workpieces 120, 130 are placed on the workbench 190 and are to be machined. To machine the workpiece 120, the tool 210 should assume an attitude suitable for machining the workpiece as required and follow a path indicated by, for example, arrows P1 to P5. Similarly, to machine the workpiece 130, the tool should assume a certain attitude and follow a path indicated by, for example, arrows P6 to P10. It should be understood that the workpiece 130 is shown only for comparison. The path indicated by arrows P6 to P9 is actually inaccessible to the robot 200.

[0035] Figure 2 Shown is a system 100 for programming an industrial robot 200 according to an example embodiment of the present disclosure. As Figure 2 shown, the system for programming the industrial robot 200 includes a tool model 110, an attitude tracker 140 configured to capture the attitude data of the tool model 110, and a processor 150 configured to convert the attitude data into processor-executable code.

[0036] Completely different from guiding through a programming method, in the system of the present disclosure, the tool model 110 is not attached to the robotic arm 220 of the industrial robot 200, but is directly moved by a user (e.g., a technical engineer). The tool model 110 can have various forms. In some examples, the tool model 110 can be a real tool for machining workpieces. In some examples, the tool model can be just a model for programming and can have any suitable shape. During the programming process, the user can grasp the tool model 110 and move the tool model 110 around the workpiece along a path suitable for machining the workpiece 120 to be machined. The path is usually determined by a technical engineer. In the example shown, the tool is directly moved by the user. In some examples, the tool can be moved by a gripper carried by the user. Depending on the type of machining of the workpiece, the tool model can have various types.

[0037] The pose tracker 140 is configured to capture the pose data of the tool model 110 moved by the user. Generally, the pose data may include position data. The position data indicates the position of the tool in the robotic system. Using the position data, a path followed by the tool can be formed. In some examples, the pose data may include orientation data. The orientation data indicates the orientation of the tool. The pose tracker 140 can take various forms as long as the pose tracker 140 can track or obtain the pose data of the tool model 110. In the illustrated example, one or two tracking stations 140 are disposed at appropriate positions on the workbench 190 for capturing the pose data of the tool model 110 when it is moved by the user, e.g., on one side of the workbench 190. In some embodiments, the tracking station 140 alone can capture the pose data of the tool model 110. Alternatively or additionally, position sensors or detectable markers may be provided on / within the tool model 110. In this way, the pose data can be obtained more accurately. It should be understood that this tracking arrangement is merely illustrative. In some other embodiments, for example, the tracking station may be disposed on the tool model 110, and various tracking methods may be used to determine the pose data of the tool model 110 moved by the user.

[0038] The processor 150 is connected to the pose tracker 140. The pose data captured by the pose tracker 140 can be sent to the processor 150 in real time. The processor 150 is configured to convert the pose data of the tool model 110 into computer-executable code that can be loaded into the controller of the industrial robot 200. When the controller of the industrial robot 200 is loaded with the computer-executable instructions, the robot 200 can automatically machine the workpiece by executing the programming code.

[0039] As described above, in the novel robot programming method of the present disclosure, the tool model is freely moved by the user and is not restricted by the robotic system 20. Since the tool model is not attached to the robotic arm, it is very likely that the tool model is moved beyond the reachable area of the robotic system 200. The user does not know whether the robot can reach the path or orientation of the tool model. If the program code includes path points or orientations that the robot cannot reach, these codes cannot be directly used by the robot 200. For example, as Figure 2 shown, when the user moves the tool model to points P6 to P10, the generated program code cannot be executed by the robot, which requires additional manual modification before use. This is undesirable because it increases the programming workload and programming complexity. It is necessary to guide the user's movement so that the user's movement does not exceed the reachability of the robot 200.

[0040] In the present disclosure, the processor 150 is configured to analyze the pose data obtained from the pose tracker 140 and determine the reachability of the robot 200 to the pose data. When the obtained pose data is determined to be reachable by the robot, program code can be loaded into the robot 200 for execution. In this way, the risk that the generated program code cannot be directly used is avoided.

[0041] Figure 3 FIG. 4 shows a flowchart of a method 300 for programming an industrial robot according to an exemplary embodiment of the present disclosure. As Figure 3 shown, method 300 includes the following actions. At block 302, pose data 115 of a tool model 110 moved by a user around a workpiece 120 to be machined is obtained. The tool model 110 is held by the user, not by the robot 200. At block 304, the reachability of the robot 200 to the pose data 115 is determined. At block 306, executable code is generated based on the reachable pose data. The executable code can be executed by a processor to machine the workpiece 120 to be machined via a real tool 210 held by the robot 200.

[0042] In some embodiments, method 300 may further include sending an alert according to the determination result of the pose data. In one embodiment, during the movement of the tool model 110, once it is determined that the robot 200 cannot reach the pose data, a first alert instruction 157 is sent in real time. In this way, according to the first alert instruction, the user holding the tool model 110 can know that the current pose data cannot be reached. The pose should be adjusted by the user. This is particularly advantageous when the user first moves the tool model roughly around the workpiece before carefully moving the tool model. By the rough movement of the tool model, the user can obtain a general outline of the safe area (i.e., the area that the robot 200 can surely reach).

[0043] In another embodiment, during the tool movement, once it is determined that the difference between the captured pose data 115 and the pose data 115 that the robot 200 can reach reaches a predetermined threshold, a second alert instruction different from the first alert instruction 157 is sent in real time. The predetermined threshold can be determined in advance. By using the predetermined threshold, the user holding the tool model 110 can know that although the current pose data may be reachable by the robot, it is close to the pose that the robot cannot reach. The user should change the movement strategy when moving the robot to avoid making poses that the robot cannot reach. This is particularly advantageous when the user moves the tool model finely around the workpiece. By the fine movement of the tool model, program code can be efficiently generated.

[0044] In some embodiments, as Figure 2As shown, an alarm device 114, such as a lighting device, is provided on the tool model 110. The alarm device 114 is configured to generate a warning in response to an alarm instruction from a processor. The alarm can be a visual alarm, an audible alarm, a tactile alarm, or any other suitable form of alarm. In some embodiments, the intensity, frequency, etc. of the alarm device can be changed. For example, the lighting device can change color and / or blink frequency to enhance the warning level to the user. Alternatively or additionally, in some embodiments, a display can be provided on the tool model and configured to display text, graphics, etc. in response to a visual alarm instruction from the processor. Alternatively or additionally, a buzzer or speaker can be provided to give a warning to the user. In some embodiments, a tactile actuator can be provided to generate vibration feedback to the user. It should be understood that the alarm can be in various forms as long as it can warn the user in an efficient manner. In the example shown, these warning devices are provided on the tool model. This is advantageous because the user is close to the tool model and can immediately understand the movement provided by the warning device. It should be understood that the warning device can be provided at any other suitable location.

[0045] In some embodiments, the method may further include coordinate system transformation. As Figure 1 shown, the robot system 200 may include its own coordinate system X2, Y2, Z2, and the robot system 200 operates based on this coordinate system X2, Y2, Z2. On the other hand, the system 100 for programming the robot operates in its own coordinate system X1, Y1, Z1. Therefore, the captured pose data is represented in a coordinate system. In this case, in order to determine the reachability of the robot 200 to the pose data, the pose data should be transformed into the robot coordinate system. In some embodiments, a transformation matrix between the tool model coordinate system and the robot coordinate system is obtained. The pose data 115 from the tool model coordinate system can be transformed into the robot coordinate system through the transformation matrix.

[0046] Figure 4 is a block diagram of a system 400 for programming an industrial robot according to an exemplary embodiment of the present disclosure. As Figure 4As shown, system 100 may include a tool model 110, a memory 170, and a processor 150 communicatively coupled to the tool model 110 and the memory 170. The tool model 110 includes an attitude tracker 112 and an alarm device 114 configured to generate an alarm. The attitude tracker 112 may operate alone or in combination with other devices to track the attitude of the tool model 110. The memory 170 may pre-store the structural characteristics 153 of the robot 200. In some embodiments, these structural characteristics 153 include the D-H parameters of the robot 200. In other embodiments, the structural characteristics 153 include the limit angles of the joints of the robot 200. This is merely illustrative, and the memory 170 may include other parameters derived from the D-H parameters and joint limit angles of the robot, as long as these parameters can depict the reachability of the robot. The processor 150 is configured to obtain the attitude data 115 of the tool model 110 and acquire the structural characteristics 153 of the robot 200. The processor 150 is configured to determine the reachability of the robot 200 to the attitude data 115 based on the structural characteristics 153 of the robot 200. The processor sends an alarm instruction 157 in real time based on the determination result.

[0047] Figure 5 FIG. shows a flowchart of a method 500 for programming an industrial robot according to another exemplary embodiment of the present disclosure. As Figure 5 shown, at block 502, the structural characteristics 153 of the robot 200 are obtained, such as the D-H parameters and joint limit angles of the robot 200. At block 504, based on the structural characteristics 153 of the robot 200 and the attitude data 115 of the tool model 110, it is determined whether there is a solution for the angles of the joints of the robot 200 by using inverse kinematics. At block 506, once it is determined that there is no solution for the angles of the joints of the robot 200, an alarm instruction 157 is sent in real time. Since there is no solution for the angles of the joints of the robot 200, this means that the attitude data shown by the tool model cannot be reached.

[0048] In some embodiments, when it is determined that there is a solution for the angles of the joints of the robot 200, it is determined whether the solution is a singularity. Once it is determined that the solution is a singularity, an alarm instruction 157 is sent in real time. In this way, singularities in the solution can be excluded.

[0049] In some embodiments, the boundary values that the robot 200 can reach can be determined based on the D-H parameters of the robot 200 and / or the limit angles of the joints. The boundary values can include the farthest distance that the robot 200 can reach and the angular range that the joints of the robot 200 can achieve. An alarm instruction 157 can be sent to the alarm device based on the proximity of the pose data 115 to the boundary values. In some embodiments, the alarm signal can be changed in terms of intensity or frequency. In this way, the user can know in real time that the pose is approaching a pose that the robot cannot reach, so that the user can move the tool model in an appropriate manner.

[0050] Figure 6 FIG. shows a flowchart of a method 600 for programming an industrial robot according to another exemplary embodiment of the present disclosure. Figure 7 and Figure 8 shows a schematic diagram showing the operation of an industrial robot to be programmed by the Figure 7 system and a system for programming an industrial robot according to another exemplary embodiment of the present disclosure.

[0051] As Figure 6 shown, method 600 includes the following actions. Method 600 is executed in real time when the tool model 110 moves around the object to be processed. At block 602, the D-H parameters of the robot 200 and the limit angles of the joints of the robot 200 are obtained. At block 604, the workspace of the robot 200 that the robot 200 can reach is determined based on the obtained D-H parameters and the limit angles of the joints. The term "workspace" herein refers to the area that the robot 200 can surely reach. When the tool model is within this area, there is no need to worry about the reachability of the robot. In addition to depending on the structural characteristics of the robot, this workspace is also pre-determined according to various factors (such as collisions within the area). This workspace is generally smaller than the actual area that the robot 200 is designed to reach. At block 606, once it is determined that the tool model 110 is close to, within, and / or beyond the boundary of the workspace, an alarm instruction 157 is sent.

[0052] Using this method, by pre-determining the reachable workspace, an alarm is sent according to the proximity of the pose data 115 to the boundary of the predetermined workspace. In this way, the programming method can also be efficiently implemented.

[0053] In some embodiments, based on the proximity of the pose data 115 to the boundary of the workspace, the alert instruction is variable in terms of intensity and / or frequency. For example, when the pose data 115 of the tool model approaches the boundary of the predetermined workspace to reach a predetermined threshold, an alert instruction with a lower intensity can be sent to the alert device. The user can be informed that the user is approaching a dangerous area. When the pose data 115 of the tool model further approaches the boundary of the predetermined workspace, an alert instruction with an increasing intensity can be sent to the alert device. The user can be informed that the user is approaching a dangerous area and should move the tool model carefully. In some cases, the user should adjust their movement strategy, for example, move the tool model in the opposite direction to prevent the alert device from alarming. In this way, the user can be informed that the current tool model is in an area that the robot cannot reach. When the pose data 115 of the tool model is at the boundary of the predetermined workspace, the alert device operates at maximum intensity. On the other hand, when the user returns to the reachable area, the alert device stops alarming. In this way, the user can be informed that the current tool model has returned to the reachable area again.

[0054] In some embodiments, as Figure 7 shown, the robot 200 includes a robotic arm 220 and a tool 210 fixed to the robotic arm 220. Due to structural limitations, the robotic arm 220 can only move within a limited area. A workspace 180 is shown as an example. The workspace 180 refers to the area that the robotic arm 220 can surely reach. When the tool is within this workspace 180, the pose of the tool can be achieved. The workspace 180 can be predetermined according to the structural characteristics of the robot before programming. The workspace 180 can have any suitable shape. In the example shown, the workspace 180 is in an annular shape and includes an inner boundary 183 and an outer boundary 185. It should be understood that the shape of the workspace 180 is only illustrative, and the shape of the workspace 180 can be any other suitable shape.

[0055] As Figure 8 shown, there are two workpieces 120 and 130 to be processed on the workbench. The user carries the tool model 110. The user moves the tool model 110 around the objects to be processed on the workbench. During the movement of the tool model, the pose tracker 140 captures the pose data of the tool model. The processor 150 converts the captured pose data into machine-executable code.

[0056] In the example shown, the object 120 is designed to be processed along a path from P1 to P5 according to experience, for example. The object 130 is designed to be processed along a path from P6 to P9 according to experience, for example. As Figure 8As shown, the path for machining object 120 is located within the reachable workspace 180, while the path for machining object 130 is located outside the reachable workspace 180. During the programming process, the tool model should move within the reachable workspace 180. Once the tool model approaches or is at the inner boundary 183 and outer boundary 185 of the workspace 180, a notification or warning should be sent to the user, for example, through an alarm device 114 provided on the tool model. On the other hand, when the user returns to the safe area or reachable area, the alarm device stops alarming. In this way, the user can know that the current tool model has returned to the reachable area again. Through the operation of the alarm device 114, the user is prevented from moving the tool model by himself. In this way, the programming efficiency can be improved.

[0057] Generally, various embodiments of the present disclosure can be implemented in hardware or dedicated circuits, software, logic, or any combination thereof. Some aspects can be implemented in hardware, while other aspects can be implemented in firmware or software that can be executed by a controller, microprocessor, or other computing device. Although various aspects of the embodiments of the present disclosure are shown and described as block diagrams, flowcharts, or using some other graphical representation, it should be understood that the blocks, devices, systems, techniques, or methods described herein can be implemented as non-limiting examples in hardware, software, firmware, dedicated circuits or logic, general hardware or controllers or other computing devices, or some combination thereof.

[0058] The present disclosure also provides at least one computer program product tangibly stored on a non-transitory computer-readable storage medium. The computer program product includes computer-executable instructions (such as instructions included in program modules), which are executed in a device on a target real or virtual processor to implement the processes or methods as described above with reference to Figure 3 , Figure 5 and Figure 6 the processes or methods described. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, etc. that perform specific tasks or implement specific abstract data types. In various embodiments, the functions of program modules can be combined or split as needed among program modules. The machine-executable instructions of program modules can be executed within local or distributed devices. In a distributed device, program modules can be located in both local and remote storage media.

[0059] The program code for performing the methods of the present disclosure can be written in any combination of one or more programming languages. These program codes can be provided to a processor or controller of a general-purpose computer, a special-purpose computer, or other programmable data processing devices, such that the program codes implement the functions / operations specified in the flowchart and / or block diagram when executed by the processor or controller. The program codes can be executed entirely on the machine, partially on the machine, executed as a stand-alone software package, partially on the machine and partially on a remote machine, or entirely on a remote machine or server.

[0060] The above program codes can be embodied on a machine-readable medium, which can be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device. The machine-readable medium can be a machine-readable signal medium or a machine-readable storage medium. The machine-readable medium can include, but is not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, devices, or equipment, or any suitable combination of the foregoing. More specific examples of the machine-readable storage medium will include an electrical connection having one or more wires, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

[0061] Further, although the operations are depicted in a particular order, this should not be construed as requiring that the operations be performed in the particular order shown or in sequential order, or that all of the illustrated operations be performed, to achieve the desired result. In some cases, multitasking and parallel processing may be advantageous. Similarly, although several specific implementation details are included in the above discussion, these details should not be construed as limiting the scope of the present disclosure, but rather as descriptions of features that may be specific to a particular embodiment. Certain features described in the context of separate embodiments can also be implemented combinatorially in a single embodiment. On the other hand, the various features described in the context of a single embodiment can also be implemented separately or in any suitable sub-combination in multiple embodiments.

[0062] Although the subject matter has been described in language specific to structural features and / or method acts, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

Claims

1. A method for programming an industrial robot (200), comprising: Obtaining pose data (115) of a tool model (110) moved by a user around a workpiece (120) to be machined, wherein the tool model (110) is held by the user and not by the robot (200); Determining the reachability of the robot (200) to the pose data (115); And Generating executable code based on the reachable pose data (115), the executable code to be executed by the robot (200) to machine the workpiece via a real tool (210) held by the robot (200).

2. The method according to claim 1, wherein Obtaining the pose data (115) of the tool model (110) comprises: Receiving the pose data (115) of the tool model (110) from a pose tracker (140, 112) configured to capture the pose data (115); Obtaining a transformation matrix between the tool model coordinate system and the robot coordinate system; and Converting the pose data (115) from the tool model coordinate system to the robot coordinate system through the transformation matrix.

3. The method according to claim 1, further comprising: During the movement of the tool model (110), once it is determined that the robot (200) cannot reach the pose data (115), sending a first alarm instruction (157) in real time, the first alarm instruction (157) including at least one of a visual alarm instruction, an audible alarm instruction, and a tactile alarm instruction.

4. The method according to claim 3, further comprising: During the movement of the tool, once it is determined that the difference between the captured pose data (115) and the pose data (115) reachable by the robot (200) reaches a predetermined threshold, sending a second alarm instruction (157) different from the first alarm instruction (157) in real time.

5. The method according to claim 3 or 4, wherein The visual alarm instruction is sent to a display and / or a lamp, the audible alarm instruction is sent to a buzzer or a speaker, and the tactile alarm instruction is sent to a tactile actuator.

6. The method according to any one of the preceding claims, wherein, Determining the reachability of the robot (200) to the pose data (115) comprises: Obtaining the structural characteristics (153) of the robot (200); Based on the structural characteristics (153) of the robot (200) and the pose data (115) of the tool model (110) in the robot coordinates, determining whether the angles of the joints of the robot (200) have solutions by using inverse kinematics; and Once it is determined that the angles of the joints of the robot (200) have no solutions, sending an alarm instruction (157) in real time.

7. The method according to claim 6, further comprising: When it is determined that the angles of the joints of the robot (200) have solutions, determining whether the solutions are singular points; And Once it is determined that the solutions are singular points, sending an alarm instruction (157) in real time.

8. The method according to claim 6 or 7, wherein, Obtaining the structural characteristics (153) of the robot (200) comprises: Obtain the D-H parameters of the robot (200) and the limit angles of the joints of the robot (200).

9. The method according to claim 8, further comprising: Based on the D-H parameters of the robot (200) and / or the limit angles of the joints, determine the boundary values that the robot (200) can reach, where the boundary values include the farthest distance that the robot (200) can reach, the maximum angle and / or the minimum angle that the joints of the robot (200) can achieve; And Generate an alarm instruction (157) based on the proximity of the pose data (115) to the boundary values, where the alarm instruction changes in terms of intensity or frequency.

10. The method according to any one of the preceding claims, wherein, Determining the reachability of the robot (200) to the pose data (115) includes: Obtain the D-H parameters of the robot (200) and the limit angles of the joints of the robot (200); Based on the D-H parameters and the limit angles of the joints, determine the workspace of the robot (200) that the robot (200) can reach; and Once it is determined that the tool model (110) is close to and / or exceeds the workspace, send an alarm instruction (157).

11. The method according to claim 10, further comprising: Send an alarm instruction (157) based on the proximity of the pose data (115) to the boundary of the workspace, where the alarm instruction changes in terms of intensity or frequency.

12. The method according to any one of the preceding claims, wherein, The pose data (115) includes position data and orientation data.

13. A system for programming an industrial robot (200), the system comprising: A pose tracker (140, 112) configured to capture pose data (115) of a tool model (110) moved by a user around a workpiece (120) to be machined; And A processor (150) configured to execute the method according to any one of claims 1 to 12.

14. The system according to claim 13, further comprising an alarm device (114) connected to the processor and configured to send an alarm in response to an alarm instruction (157) from the processor indicating the reachability of the robot (200) to the pose data (115), where the alarm device includes at least one of a display, a lamp, a buzzer, a speaker, and a tactile actuator.

15. A computer program product tangibly stored on a computer-readable storage medium and including instructions that, when executed on at least one processor, cause the at least one processor to execute the method according to any one of claims 1 to 12.