Method, apparatus, device, medium and product for generating a path for a robot
The 3D reconstruction and collision-free path planner automates robot path generation, addressing the inefficiencies of manual coding by generating paths in unknown environments, enhancing industrial robot usability and productivity.
Patent Information
- Application Number
- PCT/CN2024/073447
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-01-22
- Publication Date
- 2025-07-31
AI Technical Summary
Existing robot path generation methods require manual coding by robotic experts, which is time-consuming and costly, and necessitate frequent adjustments when work objects or cells change.
A code-free solution using 3D reconstruction technology and a collision-free path planner that automatically generates robot paths in unknown environments, eliminating the need for manual coding.
Saves time and labor costs while improving the ease of use and efficiency of industrial robots, allowing for seamless adaptation to changing work environments.
Smart Images

Figure CN2024073447_31072025_PF_FP_ABST
Abstract
Description
METHOD, APPARATUS, DEVICE, MEDIUM AND PRODUCT FOR GENERATING A PATH FOR A ROBOTFIELD
[0001] Embodiments of the present disclosure generally relate to the field of computer technology and in particular, to a method, an apparatus, an electronic device, a computer-readable medium and a computer program product for generating a path for a robot.BACKGROUND
[0002] A robot is an intelligent machine that can work semi-autonomously or fully autonomously. Robots can perform tasks such as operations or movements through programming and automatic control. Robots have basic characteristics such as perception, decision-making, and execution, and can assist or even replace human beings in performing dangerous, heavy, and complex tasks, improving work efficiency and quality, serving human life, and expanding or extending human activities and capabilities.
[0003] Path generation for a robot refers to the process of planning an optimal path for the robot to move from the starting point to the target point based on environmental information and task requirements. This path needs to satisfy geometric and dynamic constraints, as well as consider factors such as time, energy, safety, and stability. Path generation helps the robot complete various complex tasks, such as handling, inspection, exploration, etc.SUMMARY
[0004] In general, various example embodiments of the present disclosure provide a method, an apparatus, an electronic device, a computer-readable storage device, and a computer program product for generating a path for a robot.
[0005] In a first aspect, it is provided a method for generating a path for a robot. The method comprises obtaining a 3D model of a work object for the robot and a first path marked on the work object. The method further comprises determining a plurality of waypoints based on the 3D model and the first path. The method further comprises determining a plurality of orientations for the plurality of waypoints based on the plurality of waypoints. The method further comprises generating a second path for the robot based on the plurality of waypoints and the plurality of orientations.
[0006] In a second aspect, it is provided an apparatus for generating a path for a robot. The apparatus comprises an obtaining module configured to obtain a three dimensional 3D model of a work object for the robot and a first path marked on the work object. The apparatus further comprises a first determining module configured to determine a plurality of waypoints based on the 3D model and the first path. The apparatus further comprises a second determining module configured to determine a plurality of orientations for the plurality of waypoints based on the plurality of waypoints. The apparatus further comprises a generating module configured to generate a second path for the robot based on the plurality of waypoints and the plurality of orientations.
[0007] In a third aspect, it is provided an electronics device. The electronics device comprises a processor; and a memory coupled to the processor, wherein the memory has instructions stored therein, and the instructions, when executed by the processor, cause the device to execute actions of the first aspect.
[0008] In a forth aspect, it is provided a computer-readable medium. The computer-readable medium comprises instructions stored therein, which when executed by a processor, cause the processor to perform methods of the first aspect.
[0009] In a fifth aspect, it is provided a computer program product. The computer program product comprises instructions stored therein, which when executed by a processor, cause the processor to perform methods of the first aspect.
[0010] It is to be understood that the Summary is not intended to identify key or essential features of embodiments of the present disclosure, nor is it intended to be used to limit the scope of the present disclosure. Other features of the present disclosure will become readily comprehensible through the description below.DESCRIPTION OF DRAWINGS
[0011] Through the following detailed descriptions with reference to the accompanying drawings, the above and other objectives, features and advantages of the example embodiments disclosed herein will become more comprehensible. In the drawings, several example embodiments disclosed herein will be illustrated in an example and in a non-limiting manner, wherein:
[0012] FIG. 1 illustrates a schematic diagram of an example environment in which a plurality of embodiments of the present disclosure can be implemented;
[0013] FIG. 2 illustrates an example scenario in which some embodiments of the present disclosure can be implemented;
[0014] FIG. 3 illustrates a flowchart of an example method for generating a path for a robot in accordance with some embodiments of the present disclosure;
[0015] FIGS. 4A-4C illustrate example paths marked a work object in accordance with some embodiments of the present disclosure;
[0016] FIG. 5 illustrates an example workflow of 3D perception module in accordance with some embodiments of the present disclosure;
[0017] FIG. 6 illustrates example extracted point clouds in accordance with some embodiments of the present disclosure;
[0018] FIG. 7 illustrates example determined waypoints in accordance with some embodiments of the present disclosure;
[0019] FIG. 8 illustrates example determined orientations in accordance with some embodiments of the present disclosure;
[0020] FIG. 9 illustrates a process of generating a path for a robot in accordance with some embodiments of the present disclosure;
[0021] FIG. 10 illustrates a block diagram of an example apparatus for generating a path for a robot in accordance with some embodiments of the present disclosure; and
[0022] FIG. 11 illustrates a block diagram illustrating an electronic device in accordance with some embodiments of the present disclosure.
[0023] Throughout all the drawings, the same or similar reference numerals represent the same or similar elements.DETAILED DESCRIPTION OF EMBODIMENTS
[0024] Principles of the present disclosure will now be described with reference to several example embodiments shown in the drawings. Though example embodiments of the present disclosure are illustrated in the drawings, it is to be understood that the embodiments are described only to facilitate those skilled in the art in better understanding and thereby achieving the present disclosure, rather than to limit the scope of the disclosure in any manner.
[0025] The term comprises "or" includes "and" its variants are to be read as open terms that mean "includes, but is not limited to" . The term "or" is to be read as "and / or" unless the context clearly indicates otherwise. The term "based on" is to be read as "based at least in part on" . The term "being operable to" is to mean a function, an action, a motion or a state can be achieved by an operation induced by a user or an external mechanism. The term "one embodiment" and "an embodiment" are to be read as "at least one embodiment" . The term "another embodiment" is to be read as "at least one other embodiment" . The terms "first" , "second" , and the like may refer to different or same objects. Other definitions, explicit and implicit, may be included below. A definition of a term is consistent throughout the description unless the context clearly indicates otherwise.
[0026] The functions or algorithms described herein may be implemented in software in one embodiment. The software may consist of computer executable instructions stored on computer readable media or computer readable storage device such as one or more non-transitory memories or other type of hardware-based storage devices, either local or networked. Further, such functions correspond to modules, which may be software, hardware, firmware or any combination thereof. Multiple functions may be performed in one or more modules as desired, and the embodiments described are merely examples. The software may be executed on a digital signal processor, ASIC, microprocessor, or other type of processor operating on a computer system, such as a personal computer, server or other computer system, turning such computer system into a specifically programmed machine.
[0027] The functionality can be configured to perform an operation using, for instance, software, hardware, firmware, or the like. For example, the phrase "configured to" can refer to a logic circuit structure of a hardware element that is to implement the associated functionality. The phrase "configured to" can also refer to a logic circuit structure of a hardware element that is to implement the coding design of associated functionality of firmware or software. The term "module" refers to a structural element that can be implemented using any suitable hardware (e.g., a processor, among others) , software (e.g., an application, among others) , firmware, or any combination of hardware, software, and firmware. The term "logic" encompasses any functionality for performing a task. For instance, each operation illustrated in the flowcharts corresponds to logic for performing that operation. An operation can be performed using, software, hardware, firmware, or the like. The terms, "component" , "system" , and the like may refer to computer-related entities, hardware, and software in execution, firmware, or combination thereof. A component may be a process running on a processor, an object, an executable, a program, a function, a subroutine, a computer, or a combination of software and hardware. The term, "processor" may refer to a hardware component, such as a processing unit of a computer system.
[0028] The terms "a" or "an" as used herein, are defined as one or more than one. Also, the use of introductory phrases such as "at least one" and "one or more" in the claims should not be construed to imply that the introduction of another claim element by the indefinite articles "a" or "an" limits any particular claim containing such introduced claim element to disclosures containing only one such element, even when the same claim includes the introductory phrases "one or more" or "at least one" and indefinite articles such as "a" or "an" . The same holds true for the use of definite articles.
[0029] Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computing device to implement the disclosed subject matter. Computer-readable storage media can include, but are not limited to, magnetic storage devices, e.g., hard disk, floppy disk, magnetic strips, optical disk, compact disk (CD) , digital versatile disk (DVD) , smart cards, flash memory devices, among others. In contrast, computer-readable media, i.e., not storage media, may additionally include communication media such as transmission media for wireless signals and the like.
[0030] As discussed above, path generation is important for robots. However, it takes much effort because it needs codes of the path which is manually coded by engineers. Manual robot path generation takes up most of the time of industrial robot deployments. Robot path generation is an important yet time-consuming part of robot deployments. The conventional solutions often conduct robot path generation by manual coding, however, it often requires a high level robotic expertise and a significant amount of time, which easily increases the cost of using industrial robots. Even the manual coded robot path works with certain work object and work cell, additional adjustments will be frequently needed when the work object or work cell changed. Overall, the manual coded way to generate robot path is both time and labor consuming, increasing the cost of use industrial robot, and affecting its productivity.
[0031] Therefore, the present disclosure proposed a new solution for generating a path for a robot. The proposed solution is code-free and relates to robots surrounding three dimensional (3D) reconstruction technology and collision free path planner. The proposed solution can automatically generate collision free robot path in any unknown environment, save cost in both time and labor cost. The proposed solution can further benefit both service provider and customers, and improve the ease-of-use capability of industrial robots. Overall, the proposed solution can improve the efficiency and user experience of using industrial robots.
[0032] FIG. 1 illustrates a schematic diagram of an example environment 100 in which a plurality of embodiments of the present disclosure can be implemented. The example environment 100 is only illustrated and is not intended to suggest any limitations as to scope of use or functionality of embodiments of the disclosure described herein.
[0033] As shown, the example environment 100 comprises a robot 102 and a computing device 110. An example of the computing device 110 may be a server or a computer. A tool 104 is mounted on an arm of the robot 102. A sensor 106 is attached to the robot 102. For example, the sensor 106 may be attached near the arm of the robot 102. The sensor 106 may be a depth measuring sensor, such as a laser, a RGBD camera or a stereovision device. The tool 104 may be a welding gun, a suction gripper and so on.
[0034] The example environment 100 may comprise a camera 114. The camera 114 may be used for generating image data of the robot 102 and its surrounding environment, such as a work object 108. It is to be understood that the camera 114 is optional. The image data of the robot 102 and its surrounding environment can be obtained in advance. The camera 114 may also be a part of the sensor 106.
[0035] The computing device 110 may obtain a marked path (also referred to as a first path) on the work object 108. The marked path may have visually distinguishable features against the work object. For example, the color of the marked path is different from the color of the work object 108. The computing device 110 may also obtain 3D model of the work object 108, for example, through the camera 114. The computing device 110 may determine a plurality of waypoints based on the 3D model and the marked path. The computing device 110 may further determine a plurality of orientations for the plurality of waypoints based on the plurality of waypoints. The computing device 110 may further generate a path 112 (also referred to as a second path) for the robot based on the plurality of waypoints and the plurality of orientations. The path 112 can be used for controlling the arm of the robot 102 such that the tool 104 moves along the path 112, and no collision among the robot 102, the work object 104 or other object will occur on the path 112.
[0036] FIG. 2 illustrates an example scenario 200 in which some embodiments of the present disclosure can be implemented. A robot 202 in FIG. 2 may correspond to the robot 102 in FIG. 1. A tool 204 in FIG. 2 may correspond to the tool 104 in FIG. 1. A sensor 206 in FIG. 2 may correspond to the sensor 106 in FIG. 1. A work object 208 in FIG. 2 may correspond to the work object 108 in FIG. 1. The computing device 210 may correspond to the computing device 110 in FIG. 1.
[0037] As shown in FIG. 2, the path 212 may be desired path which is marked by users. This means the tool 204 is expected to move along the path 212. By implementing the proposed solution. The path for controlling the robot can be generated to cause the tool 204 move along the path 212. This process does not require any codes which is written by engineers, and thus can save the cost of time and labor, as well as improve user experience.
[0038] FIG. 3 illustrates a flowchart of an example method 300 for generating a path for a robot in accordance with some embodiments of the present disclosure. For the purposed of better description, FIG. 3 will be described with reference to FIG. 1.
[0039] At block 302, the computing device 110 obtains a 3D model of the work object 108 for the robot 102 and a first path marked on the work object 108. For example, the first path may be marked using a tape or a marker on the work object 108. The camera 114 may obtain image data of the work object 108 and identify the marked portion of the work object 108. The tape or marker may need to be visually distinguishable from its surroundings. As an example without limitation, the color of the tape or the marker may be different from the color of the work object 108. Examples will be shown in FIGS. 4A-4C.
[0040] FIGS. 4A-4C illustrate example paths marked a work object 400A, 400B and 400C in accordance with some embodiments of the present disclosure. In FIG. 4A, the marked path 402 is shown. In FIG. 4B, the marked path 404 with a different shape is shown. In FIG. 4C, the marked paths 406 and 408 are shown. It is to be understood that these are only examples, and how the paths are marked on the work object is not limited.
[0041] Now referring back to FIG. 3, at block 304, the computing device 110 determines a plurality of waypoints based on the 3D model and the first path. For example, the 3D model is determined or predetermined by using the camera 114 and a 3D perception module.
[0042] Generally, the process of constructing the 3D model may be as follows. The camera is assembled to the robot. The hand-eye calibration is performed to get the transformation matrix between the camera and a tool of the robot (referred to as tool0) . The environment / object are scanned using the robot. The robot may be controlled by lead through / jogging or preset path. The 3D-camera may collect RGBD image during the scanning process. The captured RGBD image is transformed based on the hand-eye calibration result and registered by the time-synchronized 6 degree-of-freedom (DOF) pose by robot and generated point clouds of the environment.
[0043] The modeling process may be shown on a screen to tell the worker the progress of the scanning process as well as tell the worker whether there is more place needed to be scanned. The point clouds generated can be directly used by the robot in path planning, collision avoidance, and other applications since the origin of the point clouds is on the base of the robot. There is no need for a second alignment.
[0044] The details of the process to obtain the 3D model will be discussed with reference to FIG. 5. FIG. 5 illustrates an example workflow of 3D perception module 500 in accordance with some embodiments of the present disclosure.
[0045] As shown in FIG. 5, a 3D perception module 500 reconstructs the surrounding model of the robot 102. The 3D perception modular 500 may include a depth measuring sensor (stereovision, RGBD, laser, etc. ) to capture the key information needed, a 3D reconstruction algorithm, and a processing unit to store, process, and display the 3D reconstruction data and results. As shown, the reference numeral 502 represents a function. The reference numeral 504 represents data, and the reference numeral 506 represents a hardware.
[0046] At block 510, the 3D perception module 500 starts. A data request 512 may first be sent to robot 514 and depth sensor 518 from the processing unit. The robot 514 may stream its endpoint six DOF pose to processing unit. The depth sensor will capture depth frame data of the robot surroundings. Then a time synchronization function 522 will be used to synchronize the robot pose 516 and depth sensor, and register the correct robot pose to the depth frame 520 when it is captured. Combined with pre-calibrated robot sensor hand-eye calibration result 526, the captured point cloud can be transformed and merged 528 into a global model 530. The reconstructed global model 530 may be displayed in visualization function and can be used in further steps.
[0047] Examples of the extracted point clouds based on the 3D model and the first path are shown in FIG. 6. FIG. 6 illustrates example extracted point clouds 600 in accordance with some embodiments of the present disclosure. The reference numeral 602 may represent the point clouds of the work object 108 and its surroundings. The path 604 is marked on the work object 108. By comparing the 3D model and the point clouds of the work object, the marked portion can be split and determined as point clouds 606. The point clouds 606 represents the first path. The waypoints are extracted based on the 3D model and the path 604. One of an approach to determine the waypoints may be a KD tree, that is, sorting points into KD Tree for nearest neighbor computation. One of the example waypoints are shown in 702 of FIG. 7. The examples of the waypoint may be an edge of the point clouds 606, a middle line of the point clouds 606, and a perpendicular line of the point clouds 606.
[0048] Now referring back to FIG. 3, at block 306, the computing device 110 determines a plurality of orientations for the plurality of waypoints based on the plurality of waypoints. For example, an arrow 802 in FIG. 8 shows an orientation at a waypoint. An example of the orientation may be a normal direction perpendicular to the work object surface with a certain axis towards the neighboring point. As an example, the computing device 110 may identify a first normal direction of a first waypoint 804 with z axis perpendicular to the surface of work object and y axis towards second waypoint 806 next to the first waypoint as a first orientation at the first waypoint. In a similar manner, the computing device 110 may identify a second normal direction of the second waypoint 806 to a third waypoint 808 next to second waypoint as a second orientation at the second waypoint. This process may be performed iteratively until the last waypoint.
[0049] At block 308, the computing device 110 generates a second path for the robot based on the plurality of waypoints and the plurality of orientations. The second path may be generated such that no collision among the robot, the work object or other object occurs on the second path. For example, the second path can be used for controlling the arm of the robot such that a tool mounted on the arm moves along the second path. In some example embodiments, the computing device obtain one or more parameters indicative of a speed of a motion of the robot or a distance from a tool mounted on an arm of the robot to the work object. The robot may be controlled further based on the one or more parameters.
[0050] By implementing the embodiments of the method 300, a path for the robot can be automatically generated in any unknown environment, and thus the cost in both time and labor can be saved. In some embodiments, it can further benefit both service provider and customers, and improve the ease-of-use capability of industrial robots. The proposed solution can improve the efficiency and user experience of using industrial robots.
[0051] FIG. 9 illustrates a process 900 of generating a path for a robot in accordance with some embodiments of the present disclosure. At 902, a robot that can be programmed, conduct motion task, and have connection with the processing unit. A tool attached to the robot endpoint that performs interactions with the work object. An interaction way for the user / worker uses to mark the desired robot path on the work object. For example, in welding applications, the user or welding engineer can use tape or marker pen to mark the desired welding path on the work object that needs to be welded by robot.
[0052] At 904, an interface on the processing unit for the user to set performance parameters of the desired robot path. For example, the speed of robot, the offset from the marked trace on the work object to a tool of the robot endpoint, etc. At 906, a 3D reconstruction module is used to reconstruct the surroundings model of robots. For example, a depth sensor attached on the robot itself or fixed in the work cell, which can measure the depth frame of robot surroundings and communicate with the processing unit.
[0053] At 908, a modular is used to extract the interested point cloud related to marked trace by users. At 910, a modular is used to extract the key waypoints from the extracted point cloud. The interested point cloud extracted from previous step is often a cluster of points. For easy path planning, key waypoints from such point cluster needs to be extracted. Different criteria (such as edge of the point cluster, the middle line of the cluster, the perpendicular line of the point cluster, and others) may be used to extract the key waypoints. Orientations of each waypoint is also assigned, or calculated based on the certain requirements inputted by users or required by specific applications. These identified key waypoints are the desired positions of the tool center point for a robot task, such as welding.
[0054] At 912, A collision free path planner is used to generate a path for controlling the robot based on the 3D surrounding model reconstructed in 906 and the key waypoints extracted in 910. The path planner may take the reconstructed 3D model of robot surroundings from 906 and the robot targets from 910 as input and output the collision free path to robot. At 914, the planned path is sent to the robot and control the robot for conducting robot motion for the desired task. In this way, the path for the robot can be generated without manually coding by engineers. Thus, the cost of time and labor can be saved, and the user experience can be improved.
[0055] Reference is made to FIG. 10, which illustrates a block diagram of an example apparatus 1000 for generating a path for a robot in accordance with some embodiments of the present disclosure. The apparatus 1000 comprises an obtaining module 1002 configured to obtain a three dimensional 3D model of a work object for the robot and a first path marked on the work object. The apparatus 1000 further comprises a first determining module 1004 configured to determine a plurality of waypoints based on the 3D model and the first path. The apparatus 1000 further comprises a second determining module 1006 configured to determine a plurality of orientations for the plurality of waypoints based on the plurality of waypoints. The apparatus 1000 further comprises a generating module 1008 configured to generate a second path for the robot based on the plurality of waypoints and the plurality of orientations.
[0056] In some example embodiments, the obtaining module 1002 may further comprise a module configured to obtain the first path based on a tape or marker on the work object using a camera of the robot, wherein the tape or the marker may be visually distinguishable from the work object.
[0057] In some example embodiments, the obtaining module 1002 may further comprise a module configured to scan the work object and the environment surrounding the work object using a depth measuring sensor attached or installed on the robot; a module configured to generate a plurality of point clouds of the work object and the environment based on the scanning; and a module configured to determine the 3D model based on the plurality of point clouds.
[0058] In some example embodiments, the module configured to determine the 3D model based on the plurality of point clouds may further comprise a module configured to obtain pose information of the robot, wherein the pose information comprises end-point six DOF poses of the robot; a module configured to obtain depth information of the work object and the environment from the depth measuring sensor, wherein the depth information comprises a plurality of depth frames associated with the work object and the environment; a module configured to align the pose information and the depth information based on a time synchronization; and a module configured to register the pose information to the depth information based on the alignment.
[0059] In some example embodiments, the module configured to determine the 3D model based on the plurality of point clouds may further comprise a module configured to determine a transformation of the plurality of point clouds based on the registration; and a module configured to merge the transformation of the plurality of point clouds to a visual model of the work object captured by a camera to generate the 3D model.
[0060] In some example embodiments, the first determining module 1004 may comprise a module configured to identifying the first path on the plurality of point clouds; a module configured to determine a subset of the plurality of point clouds indicating the first path; and a module configured to extract the plurality of waypoints based on the subset, wherein the plurality of waypoints indicates a trajectory along which a tool mounted on an arm of the robot is planned to be moved.
[0061] In some example embodiments, the module configured to extract the plurality of waypoints based on the subset may comprise a module configured to extract an edge of the subset as the plurality of waypoints; a module configured to extract a middle line of the subset as the plurality of waypoints; and / or a module configured to extract a perpendicular line of the subset as the plurality of waypoints.
[0062] In some example embodiments, the second determining module 1006 may comprise a module configured to identify a first normal direction of a first waypoint to a second waypoint next to the first waypoint as a first orientation at the first waypoint, wherein the first normal direction may be perpendicular to a surface of the work object and with a first certain axis towards the second waypoint; a module configured to identify a second normal direction of the second waypoint to a third waypoint next to second waypoint as a second orientation at the second waypoint, wherein the second normal direction may be perpendicular to the surface of the work object and with a second certain axis towards the third waypoint; and a module configured to determine the plurality of orientations based at least on the first orientation and the second orientation.
[0063] In some example embodiments, the apparatus 1000 may further comprise a module configured to control an arm of the robot based on the second path such that a tool mounted on the arm moves along the second path. In some example embodiments, the apparatus 1000 may further comprise a module configured to obtain one or more parameters indicative of a speed of a motion of the robot or a distance from a tool mounted on an arm of the robot to the work object, and the generating module 1008 may further comprise a module configure to generate the second path for the robot based on the plurality of waypoints, the plurality of orientations and the one or more parameters.
[0064] In some example embodiments, the apparatus 1000 may further comprise a module configured to generate the second path such that no collision among the robot, the work object or other object occurs on the second path. In some example embodiments, the depth measuring sensor may comprise one of a laser, a RGBD camera or a stereovision device.
[0065] In some example embodiments, the apparatus may further comprise means for performing other steps in some example embodiments of the method 300. In some example embodiments, the means comprises at least one processor and at least one memory including computer program code, the at least one memory and computer program code configured to, with the at least one processor, cause the performance of the apparatus.
[0066] By implementing the example embodiments of FIG. 10, a path for the robot can be automatically generated in any unknown environment, and thus the cost in both time and labor can be saved. In some embodiments, it can further benefit both service provider and customers, and improve the ease-of-use capability of industrial robots. The proposed solution can improve the efficiency and user experience of using industrial robots.
[0067] FIG. 11 illustrates a block diagram illustrating an electronic device 1100 in accordance with some embodiments of the present disclosure. As indicated, the device 1100 includes a central processing unit (CPU) 1101, which can execute various appropriate actions and processing based on the computer program instructions stored in a read-only memory (ROM) 1102 or the computer program instructions loaded into a random access memory (RAM) 1103 from a storage unit 1108. The RAM 1103 also stores all kinds of programs and data required by operating the electronic device 1100. CPU 1101, ROM 1102 and RAM 1103 are connected to each other via a bus 1104, to which an input / output (I / O) interface 1105 is also connected.
[0068] A plurality of components in the device 1100 are connected to the I / O interface 1105, comprising: an input unit 1106, such as a keyboard, a mouse and the like; an output unit 1107, such as various types of displays, loudspeakers and the like; a storage unit 1108, such as a storage disk, an optical disk and the like; and a communication unit 1109, such as a network card, a modem, a wireless communication transceiver and the like. The communication unit 1109 allows the device 1100 to exchange information / data with other devices through computer networks such as Internet and / or various telecommunication networks.
[0069] Each procedure and processing described above, such as the method 300, can be executed by a processing unit 1101. For example, in some embodiments, the method 1100 can be implemented as computer software programs, which are tangibly included in a machine-readable medium, such as a storage unit 1108. In some embodiments, the computer program can be partially or completely loaded and / or installed to the device 1100 via the ROM 1102 and / or the communication unit 1109. When the computer program is loaded to the RAM 1103 and executed by the CPU 1101, one or more steps of the above described method 300 are implemented. Alternatively, in other embodiments, the CPU 1101 may also be configured in any proper manner to implement the above process / method.
[0070] The present disclosure may be a method, a device, a system and / or a computer program product. The computer program product can include a computer-readable storage medium loaded with computer-readable program instructions thereon for executing various aspects of the present disclosure.
[0071] The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. More specific examples (anon-exhaustive list) of the computer readable storage medium would include: a portable computer diskette, a hard disk, a random access memory (RAM) , a read-only memory (ROM) , an erasable programmable read-only memory (EPROM or Flash memory) , a static random access memory (SRAM) , a portable compact disc read-only memory (CD-ROM) , a digital versatile disk (DVD) , a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination thereof. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable) , or electrical signals transmitted through a wire.
[0072] Computer readable program instructions described herein can be downloaded to respective computing / processing devices from a computer readable storage medium, or downloaded to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and / or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers. A network adapter card or network interface in each computing / processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing / processing device.
[0073] Computer readable program instructions for carrying out operations of the present disclosure may be assembly instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN) , or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) . In some embodiments, by means of state information of the computer readable program instructions, an electronic circuitry including, for example, programmable logic circuitry (PLC) , field-programmable gate arrays (FPGA) , or programmable logic arrays (PLA) can be personalized to execute the computer readable program instructions, thereby implementing various aspects of the present disclosure.
[0074] Aspects of the present disclosure are described herein with reference to flowchart and / or block diagrams of methods, apparatus (systems) , and computer program products according to embodiments of the present disclosure. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.
[0075] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which are executed via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function / act specified in the flowchart and / or block diagram block or blocks.
[0076] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which are executed on the computer, other programmable apparatus, or other device implement the functions / acts specified in the flowchart and / or block diagram block or blocks.
[0077] The flowchart and block diagrams illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, snippet, or portion of codes, which comprises one or more executable instructions for implementing the specified logical function (s) . In some alternative implementations, the functions noted in the block may be implemented in an order different from those illustrated in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustration, and combinations of blocks in the block diagrams and / or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or by combinations of special purpose hardware and computer instructions.
[0078] Further, while operations are depicted in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Likewise, while several specific implementation details are contained in the above discussions, these should not be construed as limitations on the scope of the present disclosure, but rather as descriptions of features that may be specific to particular embodiments. Certain features that are described in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment may also be implemented in multiple embodiments separately or in any suitable sub-combination.
[0079] A person of ordinary skill in the art may be aware that, in combination with the examples described in the embodiments disclosed in this specification, units and algorithm steps can be implemented by electronic hardware or a combination of computer software and electronic hardware. Whether the functions are performed by hardware or software depends on particular applications and design constraints of the technical solutions. A person skilled in the art may use different methods to implement the described functions for each particular application, but it should not be considered that the implementation goes beyond the scope of this application.
[0080] It may be clearly understood by a person skilled in the art that, for the purpose of convenient and brief description, for a detailed working process of the foregoing system, apparatus, and unit, refer to a corresponding process in the foregoing method embodiment. Details are not described herein again.
[0081] In the several embodiments provided in this application, it should be understood that the disclosed system, apparatus, and method may be implemented in other manners. For example, the described apparatus embodiment is merely an example. For example, the unit division is merely logical function division and may be other division in actual implementation. For example, a plurality of units or components may be combined or integrated into another system, or some features may be ignored or not performed. In addition, the displayed or discussed mutual couplings or direct couplings or communication connections may be implemented through some interfaces. The indirect couplings or communication connections between the apparatuses or units may be implemented in electronic, mechanical, or other forms.
[0082] The units described as separate parts may be or may not be physically separate, and parts displayed as units may be or may not be physical units, may be located in one position, or may be distributed on a plurality of network units. Some or all of the units may be selected based on actual requirements to achieve the objectives of the solutions of the embodiments.
[0083] In addition, functional units in the embodiments of this application may be integrated into one processing unit, or each of the units may exist alone physically, or two or more units are integrated into one unit.
[0084] When the functions are implemented in a form of a software functional unit and sold or used as an independent product, the functions may be stored in a computer readable storage medium. Based on such an understanding, the technical solutions in this application essentially, or the part contributing to the prior art, or some of the technical solutions may be implemented in a form of a software product. The computer software product is stored in a storage medium, and includes several instructions for instructing a computer device (which may be a personal computer, a server, a network device, or the like) to perform all or some of the steps of the methods described in the embodiments of this application. The foregoing storage medium includes: any medium that can store program code, such as a USB flash drive, a removable hard disk, a read-only memory (Read-Only Memory, ROM) , a random access memory (Random Access Memory, RAM) , a magnetic disk, or an optical disc.
[0085] The foregoing descriptions are merely specific implementations of this application, but are not intended to limit the protection scope of this application. Any variation or replacement readily figured out by a person skilled in the art within the technical scope disclosed in this application shall fall within the protection scope of this application. Therefore, the protection scope of this application shall be subject to the protection scope of the claims.
Claims
1.A method for generating a path for a robot, comprising:obtaining a three dimensional (3D) model of a work object for the robot and a first path marked on the work object;determining a plurality of waypoints based on the 3D model and the first path;determining a plurality of orientations for the plurality of waypoints based on the plurality of waypoints; andgenerating a second path for the robot based on the plurality of waypoints and the plurality of orientations.2.The method of claim 1, wherein obtaining the first path marked on the work object for the robot comprises:obtaining the first path based on a tape or marker on the work object using a camera of the robot, wherein the tape or the marker is visually distinguishable from the work object.3.The method of claim 1, wherein obtaining the 3D model of the work object comprises:scanning the work object and the environment surrounding the work object using a depth measuring sensor attached or installed on the robot;generating a plurality of point clouds of the work object and the environment based on the scanning; anddetermining the 3D model based on the plurality of point clouds.4.The method of claim 3, wherein determining the 3D model based on the plurality of point clouds comprises:obtaining pose information of the robot, wherein the pose information comprises end-point six degree-of-freedom (DOF) poses of the robot;obtaining depth information of the work object and the environment from the depth measuring sensor, wherein the depth information comprises a plurality of depth frames associated with the work object and the environment;aligning the pose information and the depth information based on a time synchronization; andregistering the pose information to the depth information based on the alignment.5.The method of claim 4, wherein determining the 3D model based on the plurality of point clouds further comprises:determining a transformation of the plurality of point clouds based on the registration; andmerging the transformation of the plurality of point clouds to a visual model of the work object captured by a camera to generate the 3D model.6.The method of claim 3, wherein determining the plurality of waypoints based on the 3D model and the path comprises:identifying the first path on the plurality of point clouds;determining a subset of the plurality of point clouds indicating the first path; andextracting the plurality of waypoints based on the subset, wherein the plurality of waypoints indicates a trajectory along which a tool mounted on an arm of the robot is planned to be moved.7.The method of claim 6, wherein extracting the plurality of waypoints based on the subset comprises one of the following:extracting an edge of the subset as the plurality of waypoints;extracting a middle line of the subset as the plurality of waypoints; orextracting a perpendicular line of the subset as the plurality of waypoints.8.The method of claim 1, wherein determining the plurality of orientations for the plurality of waypoints based on the plurality of waypoints comprises:identifying a first normal direction of a first waypoint to a second waypoint next to the first waypoint as a first orientation at the first waypoint, wherein the first normal direction is perpendicular to a surface of the work object and with a first certain axis towards the second waypoint;identifying a second normal direction of the second waypoint to a third waypoint next to second waypoint as a second orientation at the second waypoint, wherein the second normal direction is perpendicular to the surface of the work object and with a second certain axis towards the third waypoint; anddetermining the plurality of orientations based at least on the first orientation and the second orientation.9.The method of claim 1, further comprising:controlling an arm of the robot based on the second path such that a tool mounted on the arm moves along the second path.10.The method of claim 1, further comprising:obtaining one or more parameters indicative of a speed of a motion of the robot or a distance from a tool mounted on an arm of the robot to the work object; andwherein generating the second path for the robot is further based on the one or more parameters.11.The method of claim 1, wherein:the second path is generated such that no collision among the robot, the work object or other object occurs on the second path; orthe depth measuring sensor comprises one of a laser, a RGBD camera or a stereovision device.12.An apparatus for generating a path for a robot, comprising:an obtaining module configured to obtain a three dimensional (3D) model of a work object for the robot and a first path marked on the work object;a first determining module configured to determine a plurality of waypoints based on the 3D model and the first path;a second determining module configured to determine a plurality of orientations for the plurality of waypoints based on the plurality of waypoints; anda generating module configured to generate a second path for the robot based on the plurality of waypoints and the plurality of orientations.13.An electronic device, comprising:a processor; anda memory coupled to the processor, wherein the memory has instructions stored therein, and the instructions, when executed by the processor, cause the device to execute actions of any of claims 1-11.14.A computer-readable medium having instructions stored therein, which when executed by a processor, cause the processor to perform a method of any of claims 1-11.15.A computer program product having instructions stored therein, which when executed by a processor, cause the processor to perform a method of any of claims 1-11.
Citation Information
Patent Citations
Systems and methods for identifying and tracking physical objects during a robotic surgical procedure
CN109152615A
Composite navigation method, device and equipment for mobile robot and storage medium
CN114413896A
System and method for saturating robotic motion
CN115802970A
Tracking computer user navigation to generate new navigation paths
CN116225583A
Generating simulated weld paths for a welding robot
US20230123712A1