Multi-agent motion control
Patent Information
- Application Number
- EP2024809129
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-11-01
- Filing Date
- 2024-11-01
- Publication Date
- 2026-09-09
AI Technical Summary
Conventional robotic wire arc additive manufacturing (WAAM) systems face challenges in increasing deposition rates and reducing production times while avoiding single points of failure and potential collisions among multiple robots.
The implementation of a multi-agent motion control system that dynamically assigns deposition toolpaths to available robots, utilizing machine intelligence and feedback from sensors to optimize the collaborative manufacturing process.
This approach enhances productivity, reliability, and system scalability by allowing for real-time adaptation to changes in robot availability and reducing the likelihood of collisions, thereby improving the efficiency and quality of large-scale metal additive manufacturing.
Smart Images

Figure US2024054090_08052025_PF_FP_ABST
Abstract
Description
MULTI-AGENT MOTION CONTROLSTATEMENT REGARDING FEDERALLY SPONSORED RESEARCH AND DEVELOPMENT
[0001] The technologies described herein were developed with government support under Contract No. DE-AC05-00OR22725 awarded by the U.S. Department of Energy. The government has certain rights in the described technologies.CROSS-REFERENCE TO RELATED APPLICATION(S)
[0002] The present application claims priority to and the benefit of U.S. Provisional Patent Application Serial No. 63 / 595,210 which was filed on November 1, 2023. The content of this Provisional Patent Application is incorporated by reference in its entirety.BACKGROUNDDescription of the Related Art
[0003] Robotic wire arc additive manufacturing (WAAM) is a directed energy deposition (DED) technology that has shown significant growth in recent years. This method is capable of manufacturing at high deposition rates, large-scale metal parts on the order of multiple meters in weights of many hundreds of kilograms. This process can print parts with complex geometries, including those with significant overhangs, without the use of support material. This manufacturing technology also allows for in-process control of the material properties through online monitoring and control of thermal conditions and other process attributes. Larger build volumes can be achieved by increasing the size of the robotic arm or gantry system or by moving the part itself. However, this approach expands the print volume without increasing the deposition rate of the system, leading to much longer production times. In addition, any singlerobot deposition system contains a single point of failure.SUMMARY
[0004] The present disclosure concerns implementing systems and methods for controlling a plurality of robots. The methods comprise: obtaining, by the processor, deposition toolpaths along which beads are to be deposited for additively manufacturing the object; assigning, by the processor, subsets of the deposition toolpaths to available robots of the plurality of robots; instructing, by the processor, each of the available robots to deposit beads corresponding to the deposition toolpaths of a respective one of the subsets of deposition toolpaths assigned thereto; and / or performing operations by the processor when a number of available robots changes while manufacturing of the object. The operations comprise: defining new deposition toolpaths for printing beads; assigning a respective subset of the new deposition toolpaths to each one of the available robots; and instructing each one of the available robots to deposit beads corresponding to the new deposition toolpaths of the respective subset.
[0005] The present disclosure also concerns a non-transitory computer-readable medium that stores instructions that is configured to, when executed by at least one computing device, cause at least one computing device to perform operations comprising: obtaining deposition toolpaths along which beads are to be deposited for additively manufacturing the object; assigning subsets of the deposition toolpaths to available robots of the plurality of robots; instructing each of the available robots to deposit beads corresponding to the deposition toolpaths of a respective one of the subsets of deposition toolpaths assigned thereto; defining new deposition toolpaths for printing beads when a number of available robots changes while manufacturing the object; assigning a respective subset of the new deposition toolpaths to each one of the available robots; and / or instructing each one of the available robots to deposit beads corresponding to the new deposition toolpaths of the respective subset.
[0006] The present disclosure also concerns implementing systems and methods for controlling motion of a plurality of robots in a coordinated manner. In one example, the methods comprise: determining, by a processor for each robot of the plurality of robots, a distance between a center of the workpiece positioner and a robotic tool located at a distal free end of said robot; using, by the processor, each of the distances as a radius to compute an angular velocity ofthe workpiece positioner; determining, by the processor for each said robot, a relative tool velocity based on a desired tool traversal velocity and the computed angular velocity of the workpiece positioner; adjusting, by the processor, a trajectory for at least one said robotic tool based on the relative tool velocity; and / or controlling, by the processor, movement of said robot to cause the at least one said robotic tool to follow the trajectory which was adjusted.
[0007] The disclosure also concerns implementing systems and methods for controlling a plurality of robots. In another example, the methods comprise: instructing, by a processor, each robot of the plurality of robots to additively manufacture an object by depositing beads corresponding to deposition toolpaths assigned thereto; and controlling the coordinated motion of a plurality of robots while the object is being additively manufactured, by: obtaining angular velocities for a workpiece positioner using distances between a center of the workpiece positioner and robotic tools at distal free ends of said robots; determining, for each said robot, a relative tool velocity based on a desired tool traversal velocity and the computed angular velocity of the workpiece positioner; adjusting a trajectory for at least one of said robotic tools based on the relative tool velocity; and / or controlling movement of said robot to cause the at least one of said robotic tools to follow the trajectory which was adjusted.
[0008] In another example, the disclosure also concerns a system, comprising: a processor; and a non-transitory computer-readable medium that stores instructions that are configured to, when executed by the processor, cause the processor to perform operations comprising: determining, for each robot of the plurality of robots, a distance between a center of the workpiece positioner and a robotic tool located at a distal free end of said robot; using each of the distances as a radius to compute an angular velocity of the workpiece positioner; determining, for each said robot, a relative tool velocity based on a desired tool traversal velocity and the computed angular velocity of the workpiece positioner; adjusting, by the processor, a trajectory for at least one said robotic tool based on the relative tool velocity; and / or controlling movement of said robot to cause the at least one said robotic tool to follow the trajectory which was adjusted.BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The present solution will be described with reference to the following drawing figures, in which like numerals represent like items throughout the figures.
[0010] FIG. 1 provides an illustration of an example toolpath that is configured to run line- by-line in accordance with a generated g-code.
[0011] FIG. 2 provides an example flowchart that is useful for understanding a first portion of a toolpath assignment strategy for a multi-robot coordinated-motion deposition system.
[0012] FIG. 3 provides an example flow diagram that is useful for understanding a high-level framework of the dynamic toolpath assignment to be used in a multi-robot coordinated motion deposition system.
[0013] FIGS. 4A-4B (collectively referred to herein as “FIG. 4) provide illustrations showing an example robotic system implementing the present solution.
[0014] FIG. 5 provides illustrations showing a workspace of a three-robot coordinated- motion deposition system where the shapes represent the workspace of the robots, and the bounding box represents a caged cell. The illustration on the left of FIG. 5 provides a top view of the workspace, while the illustration on the right of FIG. 5 provides a perspective view of the workspace.
[0015] FIG. 6 provides an illustration of an example hardware and software architecture for the system shown in FIG. 4.
[0016] FIG. 7 provides an illustration showing an example machine intelligence algorithm configured to assign deposition toolpaths.
[0017] FIG. 8 provides an example illustration showing a visual distinction between global and local toolpath geometries.
[0018] FIG. 9 provides an example illustration showing a build that was prepared to test the asynchronous coordinated motion capabilities and machine intelligence of the system.
[0019] FIG. 10 provides an example illustration showing a build that was prepared to analyze the system’s productivity, e.g., deposition rate, and investigate the reliability of the hardware and software while running for extended periods of time. This build was designed to approach the maximum height of build envelope. The system’s geometric accuracy was tested as seen in FIG. 10.
[0020] FIGS. 11 A-l 1C (collectively referred to as “FIG. 11”) provides a flow diagram of an illustrative method for controlling robots to perform additive manufacturing to produce an object.
[0021] FIG. 12 provides a flow diagram of an illustrative method for controlling robots to perform additive manufacturing to produce an object.
[0022] FIG. 13 provides an illustration showing an example of two agents using coordinated motion that was preplanned using computer aided manufacturing.
[0023] FIG. 14 provides an illustration that is useful for understanding how an average angular velocity is computed for multiple robots.
[0024] FIG. 15 provides a flow diagram of an illustrative method for controlling motion of robots in a coordinated manner during an additive manufacturing process.
[0025] FIG. 16 provides a block diagram of an illustrative architecture for a computing device.DETAILED DESCRIPTION
[0026] Conventional methods of assigning toolpaths for a CNC machine or 3D printer requires the use of computer-aided manufacturing (CAM) or a slicer to create predefined toolpaths and then execute each path line-by-line, as shown in FIG. 1. This does not consider any boundary conditions that the machine or printer and manufactured part encounters during a manufacturing process, thus potentially reducing quality and lowering productivity. Preplanning the toolpaths is a conventional method for resolving these issues. However, this may require high confidence in a model simulation to predict the exact state of the machine or printer and thepart during offline execution of the manufacturing process to ensure no defects occur.Additionally, there is no effective method for assigning toolpaths for a multi-agent system, in which the multi-agents collaborate to manufacture the same part.
[0027] The present solution concerns implementing systems and methods for adaptively and dynamically assigning toolpaths for a multi-agent system composed of agents with dynamic behaviors with offline strategies. The agents can include, but are not limited to, articulated robots or robots with articulated arms. The present solution implements machine intelligence to dynamically handle toolpath assignments to each agent during a manufacturing process. This utilizes full feedback from each individual agent and the produced part by incorporating sensors (e g., thermal cameras, 3D scanners, force sensors, etc.) into the CAM system. Furthermore, preprocessed toolpath generation can still be incorporated to assist in the toolpath assignment. The disclosed dynamic toolpath assignment can use a cost function to rank each individual toolpath.
[0028] FIG. 2 provides a flow diagram of a method 200 illustrating the first portion of the disclosed toolpath assignment strategy for a multi-robot coordinated-motion deposition system. Method 200 involves the operations of blocks 202-216. These operations generally involve: starting bead logic for producing an object via a multi-layer build using CAM; grabbing or identifying all beads in a current layer of the multi-layer build; checking bead types in the current layer; determining whether there are global beads (e g., beads that can be performed by multiple available robots) in the current layer; scoring the global beads based on a closest start point and a largest area from a robot and / or scoring local beads (e.g., beads that can be performed only by one robot) in the current layer based on a closest start point and a largest area from the robot; indexing the beads in the current layer based on a highest score; and returning to the first operation to repeat the assignment process on subsequent layers.
[0029] Afterwards, the assigned toolpaths are sent to the available and best matched agents or robots. FIG. 3 provides a flow diagram of method 300 illustrating a second portion of the disclosed toolpath assignment to be used in a multi-robot coordinated-motion deposition system, for instance. Method 300 involves operations of blocks 302-328. These operations involve:assigning a bead to a robot; determining a robot’s status; and performing operations based on the robot’s status. For example, if the robot is currently printing a bead, then the process returns to block 302 where the bead is (re)assigned to another robot. If the robot has nearly collided with another robot while printing the bead as shown by block 306, then the system determines whether the bead has been fully or partially printed in block 308. If the bead has been fully printed [308:YES], then the system returns to block 302 so that the next bead can be assigned to a robot. In contrast, if the bead has been partially printed [308:NO], then the system places the bead back in the available bead list so that it can be reassigned in the next iteration of the process. If the robot is not in the print group of robots as shown by block 312, then the system returns to 302 so that the bead can be assigned to another robot in the print group. If the robot is being serviced, then the system waits until the robot is finished being serviced and / or maintenance of the robot is completed as shown by block 314. In some embodiments, the system may assign the bead to another robot if the robot is being serviced and / or maintained. If the robot is available to print, then the system determines whether other robots are near this robot’s workspace or print space. If so [316:YES], then the robot remains available but method 300 returns to 302 so that assignment of the bead to a robot can start over or otherwise be reperformed. If not [316:NO], then the bead is assigned to the robot. The robot either prints the bead or waits to print the bead until the system is ready for printing, as shown by blocks 324 and 326. Thereafter, method 300 is repeated for the assignment of the next bead.
[0030] The present solution simplifies the task allocation process for each agent compared to a preprocessed solution, as the disclosed techniques adapt to the main system’s environment in real-time. This also reduces the time wasted in running rigorous simulations to ensure each agent does not interfere with other agents during the manufacturing process. The present solution enables increased productivity, increased system deposition rate (i.e., the total amount of weld metal deposited by the system over a period of time), increased reliability, and system scaling. The present solution can be used generally in fields such as manufacturing. More specifically, the present solution can be used for large scale manufacturing and / or additive manufacturing.
[0031] The present solution is configured to improve (i) the printing process’ efficiency and reliability, and (ii) build volume of single-robot large-scale metal additive systems through the development of the disclosed multi-robot and machine intelligence technologies. Expanding the build volume while reducing production time necessitates higher system deposition rates which can be achieved by increasing the number of deposition agents. This also avoids single point of failure inherent in single-robot systems, making it more reliable. Using two or more agents leads to additional uncertainties due to individual agents potentially encountering faults or being preoccupied with other tasks. Synchronizing these agents requires full availability, which results in an extended production time. Moreover, an increased number of agents raises the likelihood of collisions. Pre-processed motion planning becomes impractical as it would need to account for collisions and indeterministic faults of an agent. This necessitates the capability of dynamically creating and assigning atomic asynchronous deposition subtasks to each deposition agent. To ensure that the task assignment is efficient, and build quality is maintained, these tasks should be executed by any of the deposition heads in an order that optimizes the productivity, reliability, thermal management, or other specified functions. The present system can be configured such that each build could be executed by any combination of agents, and deposition tasks should be able to be reassigned on the fly. These criteria require motion control techniques that can manage the collaborative build process for a multi-robot system.
[0032] FIGS. 4A-4B provides illustrations showing a non-limiting example of a system 400 implementing the present solution. System 400 is generally configured to perform bead deposition additive manufacturing processes to make products by depositing material from machine heads onto substrates. The deposited material may be in the form of beads. The deposited material can include, but is not limited to, metal materials.
[0033] System 400 comprises a multi-robot coordinated-motion deposition system. Three articulated robots 402, 404, 406 are shown in FIG. 4A. The present solution is not limited in this regard. Any number of robots can be provided in accordance with a given application. Each of the articulated robots 402, 404, 406 can include, but is not limited to, an ABB IRB 4600 robot comprising an articulated arm. The number of robots and their kinematic arrangement may bechosen, for example, with technologies including machine intelligence required for dynamic print-path assignment and control. The disclosed architecture is modular and extensible to any number of robots in any kinematic arrangement by utilizing a decentralized controller 414, 416 or 418 for each robot and a main controller 410 to manage task assignment and motion planning of the articulated robots.
[0034] Each articulated robot 402, 404, 406 has multiple degrees of freedom, for example, six-degrees of freedom. In the embodiment shown, the articulated robots 402, 404, 406 are spaced around a workpiece positioner 408. It should be appreciated that the various inventions disclosed herein may apply to other arrangements, e.g., robots placed adjacent to each other along an assembly line, robots positioned on opposing sides of an assembly line, etc. In this example, as shown in FIG. 5, each robot has a workspace 500, 502, 504 associated therewith which defines a 3D area in which it can print beads in a layer-by-layer manner during an additive manufacturing process. The articulated robots are arranged such that their workspaces 500, 502, 504 at least partially overlap to define a common workspace 506. The robots 402-408 are controlled by controller(s) 414, 416, 418. The robot controller(s) 414, 416, 418 can include, but is(are) not limited to, an industrial robot controller having a product number of ABB IRC5.
[0035] The workpiece positioner robot 408 may include a circular welding platen 456 with its motion driven by movement component(s) 420 such as motor(s) and / or gear(s). The motor(s) can include, for example, a motor unit or gear unit package (e.g., ABB MID 1000). The circular welding platen 456 may, for example, measure 2.25 meters in diameter. The cylindrical build envelope of the system may total to 7.95 m3. However, a larger volume shown in FIG 5 is attainable should a build extend past the cylindrical envelope of the workpiece positioner 408.
[0036] A laser tracker 430 may be provided to record robot paths and capture the geometry of the workpiece positioner 408. The laser tracker 430 may include, but is not limited to, a Leica AT960 absolute laser tracker with Verisurf metrology software. The laser tracker 430 may also be used to calibrate the coordinate frame locations of each articulated robot 402-406. In some scenarios, the final positional error between each articulated robot’s end effector may be less than 0.07 mm for points in system’s global coordinate frame.
[0037] Each articulated robot 402, 404, 406 may be equipped with bead printing elements at its distal end. The bead printing elements can include, but are not limited to, heating element(s) 440 and / or wire feeder(s) 442. The heating elements 440 can include, but are not limited to, welding torch(es). The welding torch(es) may include, but is(are) not limited to, metal inert gas (MIG) welding torch(es). The welding torch(es) may be powered by a power source 444. Each power source 444 can include, but is not limited to, CV or CC / CV power sources (e.g., Lincoln Electric Power Wave R450s with Power Wave STT modules). The wire feeder(s) 442 may include, but are not limited to, four roll wire feeders (e.g., a Lincoln Electric AutoDrive 4R220 wire feeder).
[0038] Shielding gas is supplied to each welding torch via a gas manifold 446 designed to control gas mixtures and regulate pressure and flow rate. To minimize system downtime due to spatter buildup on the nozzles and contact tips of the gas manifold 446, a cleaning station 450, 452, 454 is provided to periodically trim the welding wire and clean the nozzle of the welding torch(es). Each cleaning station 450, 452, 454 can include, but is not limited to, any suitable known torch cleaning station for MIG welding torches.
[0039] Each articulated robot 402, 404, 406 is also equipped with a service window 460, 462, 464 that enables an operator 490 to perform periodic maintenance procedures from outside of the workspace without affecting the build process for the other articulated robots.
[0040] The system may be enclosed with a caged cell 492. The caged cell 492 may be covered with welding curtains and may feature a retractable ceiling to allow crane access for removing large parts. The caged cell 492 may be equipped with a filtration system 494 to expel weld fumes, and entrances to the caged cell 492 may be protected with safety sensors 496. The filtration system 494 can include, but is not limited to, a welding fume extraction unit with a fixed mechanical filter. The safety sensors 496 can include, but are not limited to, non-contact safety sensors.
[0041] A computing device 486 may be provided to allow the operator 490 to monitor the robotic process, view analytics, view sensor data, and / or perform user-software interactions for controlling one or more components of system 400. The sensor data can include, but is notlimited to, images captured by cameras. Cameras 498 may be mounted on the ceiling of the caged cell 492. The cameras 498 can include, but are not limited to, three pan-tilt zoom network cameras (e.g., Axis M5525-E PTZ network cameras). Cameras 488 may also be mounted on each deposition arm to monitor the process during operation. These cameras 488 can include, but are not limited to, Gigabit Ethernet cameras (e.g., Basler acA800-200gc cameras).
[0042] In some scenarios, the controller(s) 410, 414, 416, and 418 may comprise centralized or distributed controller circuitry. The controller circuitry may be configured to communicate with robots. The robots may be positioned adjacent to one another such that their workspaces overlap to define a common workspace. The robots may be configured to additively manufacture, within the common workspace, an object on a-layer-by-layer basis by depositing, for each layer of the object, beads along paths associated with the layer. The controller circuitry may also be configured to: obtain paths along which beads are to be deposited for additively manufacturing the object; monitor which of the robots are available for depositing the beads; assign respective subsets of the paths to the available robots to optimize collaboration among the available robots as they additively manufacture the object within the common workspace; instruct each available robot to deposit beads corresponding to paths of its assigned subset; detect that a different number of robots is currently available for depositing the beads while there are remaining paths along which to deposit beads for completing the additive manufacture of the object; assign respective new subsets of the remaining paths to the currently available robots to optimize collaboration among the currently available robots as they continue to additively manufacture the object within the common workspace; and instruct each available robot to deposit beads corresponding to paths of its assigned new subset.
[0043] The controller circuitry may also be configured to: receive, from the robots, respective state information indicative of a robot being one of idle, active, in service, or off; monitor each robots availability; detect changes in each robots availability based at least in part on the robot’s state information; communicate with one or more sensors arranged to collect process information relating to the object being additively manufactured within the common workspace; produce respective aggregate scores of the paths based at least in part on the processinformation; and assign to each available robot a subset of paths based on their corresponding aggregate scores.
[0044] The controller circuitry may be further configured to: determine whether a path is global or local; and produce an aggregate score for the path further based on the path being global or local. The aggregate score of the path may be computed as described in relation to FIG. 2.
[0045] The controller circuitry may also be configured to: instruct each available robot to deposit beads corresponding to paths of its assigned subset by transmitting an associated task queue to the available robot; assign to each available robot a subset of paths as described in relation to FIG. 3; communicate with a data store that stores the paths along which beads are to be deposited for additively manufacturing the object; and obtain the paths by accessing the data store.
[0046] FIG. 6 provides an illustration of a hardware and software architecture for system 400. The main controller 410 is configured to schedule robot tasks 602 and communicate control signals to a real time target 650 for controlling the robots to perform their respective tasks, communicate control signal to the welding torch(es) 440 for controlling operations thereof, and / or receiving information from the welding torch(es) 440. The welding torch(es) 440 may include robot-to-weld interface(s) 606 to facilitate communications with the real-time target 650. The real-time target 650 may be configured with print control module(s) 630, a bead logic module 634, an interface module 636, a data processor 638, an executor module 640, and a welder control module 642. Print control module(s) 630 comprise(s) motion control 632 (tracking and / or adaptive) and positioner control 644. The real-time target 650 may comprise controller 414, 416 418 and / or 450 of FIG. 4.
[0047] External motion control begins when an articulated robot 402, 404, 406 is assigned a deposition task. The external motion control modules 632 continue to control the asynchronous coordinated motion of each robot until a deposition task is complete. Through arc seam tracking (TAST) and adaptive height control modules process the motion and welder feedback data and alter the original toolpaths to adjust for process disturbances. The bead logic and print controlmodules 634 continue to assign and control deposition tasks in parallel for each robot until the build is complete.
[0048] System 400 requires coordinated motion for each articulated robot 402, 404, 406 to follow deposition toolpath coordinates specified in the workpiece positioner’s moving reference frame. The coordinated motion must also be asynchronous to allow each articulated robot 402, 404, 406 to enter and exit coordination with the workpiece positioner 408 at any given time. An externally guided motion (EGM) interface (e.g., ABB RobotWare option) may be used to provide an interface by which the real-time target 650 of the main controller 410 can bypass the motion planning of the robot controlled s) 414, 416, 418 and perform the necessary controls to achieve asynchronous coordinated motion. The external motion control and communication for each articulated robot 402, 404, 406 and the workpiece positioner 408 is performed in the print control module 630 of the real-time target 650. EGM uses protocol buffers to serialize motion control messages. Communication is performed via a plurality of user datagram protocol (UDP) streams between the real-time target 650 and the robot controller(s) 414, 416, 418. The robot motion control module(s) 632 use(s) the workpiece positioner’s angle to transform toolpath coordinates and adjust the robot’s cartesian velocity to follow the deposition trajectory in the workpiece positioner’s moving reference frame. The cartesian velocity may be defined by the following mathematical equation (1).is the commanded Cartesian velocity vector for the tool of a robot, Enis the tangential velocity vector of the robot tool caused by the rotation of the workpiece positioner,is the tool traversal velocity required for deposition, andis the error correction velocity vector. Each vector is expressed in a stationary reference frame in which Cartesian velocities can be commanded via EGM. The workpiece positioner’s tangential velocityis negative to correctfor the relative velocity in the positioner frame. The deposition velocityis the nominal deposition velocity with correction from the adaptive height control. The error correction velocity uses proportional control to maintain the trajectory by using the error between distance of the planned trajectory and the current position of the robot. The gain is tuned by running multiple toolpaths for each robot.
[0049] The positioner motion control module 644 utilizes current robot positions and deposition velocity vectors to adjust the angular velocity of the workpiece positioner 408. The angular velocity may be defined by the following mathematical equation (2).where ? is the angular velocity, ?’ is the radius vector, and r is the scalar radius. The radius is the Euclidean distance of the distal end of the robot with respect to the center of the workpiece positioner 408. When multiple robots are coordinating with the workpiece positioner 408, the average angular velocity may be used.
[0050] In some implementations, the control software may be written in, for example, a graphical programming environment (e.g., Lab VIEW programming language). The control software may be deployed on a real-time target running, for example, a National Instruments Linux-based real-time operating system (RTOS). The current development target may include, but is not limited to, an HP EliteDesk 800 G1 SFF desktop with a quad-core Hyper- Threaded Intel Core i7 vPro. The real-time system may communicate with the controller via four 250 Hz user datagram protocol (UDP) communication streams and a single 10 Hz transmission control protocol (TCP) stream. A user interface (UI) may run on a desktop host computer that communicates to the real-time target via a 10 Hz TCP stream. Each welder may communicate with the real-time target at 100 Hz through a digital communication system (e.g., the ArcLink XT protocol) and to the controller via a network protocol (e.g., DeviceNet). The present solution is not limited to the particulars of these implementations.
[0051] To fabricate a metal additive part, a CAD model of that part may be exported as an STL file. The CAD model may be sliced into a plurality of layers and processed into a G-Code file with offline toolpath-generation software. The G-Code file may be loaded into a robot programming software (e.g., ABB RobotStudio add-in) that parses the toolpath coordinates into a database file (e.g., JavaScript Object Notation (JSON) ) and assigns properties to each layer, bead, and bead segment. The database file format avoids syntactic dissimilarities between different supported G-Code flavors and provides a neutral language by which a computing device or processor can understand instructions from any toolpath generation software.
[0052] From the user interface 620 of the computing device 486, the operator 490 may choose build parameters and transfer a database file to the real-time target 650. Parallel modules running on the real-time target 650 establish the necessary communications with their designated hardware. The interface module 636 connects with computing device 486. The executor module 640 connects to the main controller 410. Each welder control module 642 begins communicating with a respective welding torch 440. When all necessary communication streams have been established, the bead logic module 634 loads layers from the database file in memory and distributes atomic deposition tasks among the available articulated robots 402, 404, 406
[0053] The print control module 630 manages the states of a respective articulated robot 402, 404 or 406 via the executor module 640. The executor module 640 communicates with the main controller 410 to send the articulated robots 402, 404, 406 to the service station and / or windows 460, 462, 464 when necessary and opens the external motion control interfaces between the realtime target 650 and the robot controllers 414, 416, 418. The bead logic module 634 and print control modules 630 continue to assign and control deposition tasks in parallel for each articulated robot 402, 404, 406 until the build is complete.
[0054] System 400 may employ a machine intelligence algorithm 700 to assign deposition toolpaths. One illustrative machine intelligence algorithm is shown in FIG. 7. The machine intelligence algorithm 700 uses a scoring system to intelligently rank each deposition toolpath in a layer. The properties assigned to layers, beads, and bead segments when creating the databasefile (e.g., a JSON database file) are used by the bead logic module 634 to determine the remaining deposition toolpaths and provide attributes to the scoring system by which the beads can be scored and / or ranked. The scoring system uses the database properties, real-time system feedback, and the current system states to fill a queue for each printing robot 402, 404, 406 with atomic deposition toolpaths that best satisfy a series of weighted qualifications. The modularity of the bead scoring system allows for a limitless combination of parameters and weights that can be adjusted to reflect the relative criticality of the production criteria for the system or specific build. In some embodiments, the disclosed bead scoring system relies on the distance between the deposition toolpath (e.g., a centroid) and a reference point, for example, the center of the workspace positioner 804 and / or the distance between the deposition or print head (e.g., a torch) to the deposition toolpath (e.g., a starting point or ending point thereof). Shorter distances between the deposition or print head of an articulated robot and the toolpath start point are scored higher. This prevents overextending the articulated arm of a robot across regions of the build volume that could increase the chance of collisions between the articulated robots. The chosen parameters are suitable for geometries with a small cross-section aspect ratio. These geometries generate contour toolpaths that are centered to the positioner, allowing the workpiece positioner 408 to rotate at a consistent velocity. This outcome prioritizes positioner movement and demonstrates the coordinated motion between the articulated robots 402, 404, 406 and the workpiece positioner 408. Although it should be understood that the bead scoring system may be take on other forms. For instance, in one embodiment, a score may be determined based on a position or distance between print heads (e.g., welding torches) of respective robots and a deposition toolpath.
[0055] Based on the disclosed bead scoring system, each deposition toolpath may be assigned a property that defines whether the bead(s) is(are) global or local. In some example, if the distance between the deposition toolpath’s centroid and the center of the workspace positioner 804 falls under a certain threshold, the bead(s) is(are) defined or classified as global bead(s). Otherwise, the bead(s) is(are) defined or classified as local bead(s). The threshold may be dependent on or selected based on the geometry of the bead and the size of the bead path. Bead path size is dependent on the size of the deposition head to prevent robot-to-robotcollisions. A visual distinction between global and local toolpath geometries is shown in FIG. 8. In some embodiments, a global bead may be defined based on other attributes, for example, a threshold distance between a deposition tool path (e.g., a starting point or ending point thereof), and another reference point (e.g., a robot arm, or distal end of a torch thereof).
[0056] In some embodiments, global beads span across the workspaces 500, 502, 504 of the articulated robots 402, 404, 406 and require full rotations from the workpiece positioner 408 for the robots 402-406 to access every segment of the path. In the example of FIG. 8, local beads 800 are in the workspace (e.g., workspace 504 of FIG. 5) of a single articulated robot (e.g., articulated robot 402 of FIG. 4) and necessitate restricted positioner rotation, within a half rotation, to enable the articulated robot to traverse the entire path. The print state alternates between printing global beads 802 and printing local beads 800. Every available articulated robot can be assigned either all local type beads or all global type beads during these respective states. This ensures that every articulated robot that is printing will require either large or small positioner rotations at the same time. This strategy decreases the downtime of any articulated robot waiting on a valid task and reduces the chances of collisions between articulated robots while printing beads.
[0057] Demonstration Builds
[0058] Two builds were prepared to test the asynchronous coordinated motion capabilities and machine intelligence of the system. The first build, shown in FIG. 9, was manufactured with Lincoln L59 (AWS ER70S6) mild steel wire using previously developed process parameters.
[0059] The shielding gas used was 95% Ar. 5% CO2. The final part measured 184 mm in height (Z) and 978.66 mm in X and Y. Since this was the first use of asynchronous coordinated motion to collaboratively manufacture a component, the part was specifically designed to extend across a significant portion of the positioner to test the general functionality of the system and the motion control module.
[0060] The number of print-paths per layer was chosen to be an uneven multiple of the number of deposition heads to demonstrate the basic functionality of the bead scoring system.The build had 80 layers and featured eight beads (four global beads and four local beads) per layer. The bead logic module successfully distributed the groups of global and local deposition paths shown in FIG. 8.
[0061] During the build, the welding torch jammed in the automated torch-cleaning station several times. During those times, the bead logic system successfully reassigned beads to the other two robots until an operator could enter the caged cell and remedy the torch-cleaning station failure.
[0062] Simulation using ABB RobotStudio was performed on the first build to analyze the print allocation and efficiency of the multi-robot system. A comparison was made between a single robot and the multi-robot configuration. The deposition velocity for an individual robot remained constant to avoid variations in the production time. In the following TABLE 1, the print allocation percentage is the ratio of the assigned print-path length to the entire print-path length. TABLE 1 shows the simulated results of the first build using a multi-robot configuration. In this example, the ideal allocation percentage is 33.3%.TABLE 1Print allocation percentage Total print-path length (mm)Robot- 1 28.6 5956Robot-2 39.1 8144Robot-3 32.3 6739
[0063] In the following TABLE 2, the print uptime percentage is the ratio of the time during which deposition occurs to the total production time. TABLE 2 shows a simulated comparison between a single robot and multi-robot configuration. Bold indicates better outcome.Configuration Production time (s) Print uptime percentageOne robot 1433 85.2Three robots 599 90.2
[0064] TABLE 1 shows that a similar distribution of print tasks was assigned to the robots. The difference of the print allocations was caused by the uneven multiple number of print-paths. Robot-2 and Robot-3 were assigned an additional print-path and differed from each other due to their assigned print-path length. The multi-robot configuration had a 6% increase in print uptime percentage compared to using one robot, and the production time was cut by 58%, as shown in TABLE 2
[0065] The second test was designed to analyze the system’s productivity, e.g., deposition rate, and investigate the reliability of the hardware and software while running for extended periods of time. The second build, shown in FIG. 10, was designed to approach the maximum height of build envelope.
[0066] The desired final dimensions of the part were 1800 mm in height, 510 mm diameter at the base, and 152.4 mm diameter at the top. The sliced part contained 945 layers with three beads per layer and had a wall thickness of 12.9 mm. The small diameter near the top of the part was used to observe the effects of heat input by multiple deposition heads on shorter toolpaths and to test the asynchronous coordinated motion capabilities when the deposition heads are close together. The part was built with Lincoln Electric MIG 410 stainless steel wire (AWS ER410) using established parameters, and tri-mix (90% He, 7.5% Ar, 2.5% CO2) was used as the shielding gas.
[0067] The final part weighed 255 kg, and the nominal production rate was 14.7 kg / h. The limiting factor for the production rate of this build was the instability of the weld beads as temperatures approached 1000°C near the top of the part. As the diameter of the part neared 300 mm at a build height of 1500 mm tall, one of the robots was unassigned print tasks to decrease the total power input. An additional robot was removed for assignment when the diameter reached 205 mm at a build height of 1705 mm tall, allocating all print tasks to a single robot for the remainder of the build. During this process, an available robot was switched with the original printing robot when it executed a service task. This decreased the overall service time required because of the ability to switch robots when the build was limited to less than three arms. Illustration 1008 of FIG. 10 shows the error between the CAD model and a 3D scan of themanufactured component. The average error was 0.46 mm with a standard deviation of 1.38 mm, which matches the 1 mm resolution seen in WAAM.
[0068] Simulation tests were also conducted for the second build with the addition of alternating robots to evaluate the performance of switching the active print robot while it is undergoing a service task. Since the second build only consisted of three print-paths per layer, an even distribution of print tasks was assigned for each robot with a slight variance due to the print-path lengths and is seen in the following TABLE 3. TABLE 3 shows simulated results of the second build using a multi-robot configuration. In this example, the ideal allocation percentage is 33.3%.TABLE 3Print allocation percentage Total print-path length (mm)Robot-1 33.3 919Robot-2 32.4 893Robot-3 34.4 946
[0069] The following TABLE 4 shows that alternating the robots was more effective than operating a single robot system, as it had a 19% and 17% improvement in production time and uptime percentage, respectively. Table 4 shows a simulated comparison between a single-, multi-, and single-alternating-robot configuration. Bold indicates better outcome.TABLE 4Production time (s) Print uptime percentageOne robot 251 67.8Three robots 81 80.7Single-alternating robots 204 79.6TABLE 4 also shows that running all three robots resulted in the best performance when ignoring thermal conditions.
[0070] As evident from the above discussion, the present solution concerns a multi-robot intelligent deposition system configured to address the productivity and reliability limitations of conventional single-robot large-scale additive manufacturing systems. An extensible real-time print-path assignment strategy was developed whereby a toolpath database is loaded into a bead logic module and atomic deposition tasks are distributed using a bead scoring system. If a robot is temporarily out of service, then the bead logic redistributes the assigned print-paths to the remaining robots. Dynamic assignments lead to uninterrupted deposition and increased productivity. Asynchronous coordinated motion was successfully demonstrated for three robot arms and a one degree of freedom workpiece positioner.
[0071] FIGS. 11 A-l 1C provides a flow diagram of an example method 1100 for controlling robots (e.g., articulated robot(s) 402, 404, 406 of FIG. 4) to perform additive manufacturing to produce an object (e.g., object 806 of FIG. 8, 900 of FIG. 9, and / or 1000 of FIG. 10). The operations of blocks 1104-1168 may be performed in the same or different order than that shown. At least some of the operations of method 1110 may be performed by controller(s) 410, 414, 416, 418, 450 of FIG. 4, articulated robot(s) 402, 404, 406 of FIG. 4, and / or sensor(s) 496, 498 of FIG. 4.
[0072] Method 1100 begins with 1102 and continues to 1104 where a controller (e.g., controller(s) 410, 414, 416, 418, 450 of FIG. 4) establishes communications with the robots (e.g., articulated robot(s) 402, 404, 406 of FIG. 4). The robots are positioned adjacent to each other such that their workspaces (e.g., workspaces 500, 502, 504 of FIG. 5) at least partially overlap to define a common workspace (e.g., common workspace 506 of FIG. 5) for additive manufacturing of the object. Next in 1106, the controller obtains deposition toolpaths from a datastore (e.g., datastore(s) 452, 454 of FIG. 4). Any technique for accessing a datastore and retrieving information therefrom may be used here. The deposition toolpaths define paths along which beads are to be deposited or otherwise printed for additively manufacturing the object in a layer-by-layer basis or manner. The layer-by-layer basis or manner involves depositing, for each layer of the object, beads along paths associated with the layer. Operations of the robots aremonitored by the controller in block 1108. This monitoring may be achieved using sensor data received from sensors of the system (e g., sensor(s) 430, 488, 496, 498 of FIG. 4).
[0073] In block 1110, the controller identifies which of the robots is available for depositing or printing beads. This identification may be based on, for example, whether communication has been established with a robot, whether a robot is experiencing a fault or malfunction, whether a robot is currently performing a task, and / or operational state information for the robots. For example, the processor may: receive, from the robots, respective state information indicative of a robot being one of idle, active, in service, or off; monitor each robot’s availability; and detect changes in each robot’s availability based at least in part on the robot’s state information. If there are no available robots for depositing or printing beads [1112:NO], then method 1200 returns to 1108 where the controller continues to monitor operations of the robots.
[0074] If one or more of the robots are available for depositing or printing beads [1112:YES], then the controller assigns a respective subset of the deposition toolpaths to each available robot in block 1114. The operations of block 1114 may include those of the blocks in FIGS. 1 IB and 11C. This initial deposition toolpath assignment may be made using a cost function and / or based on certain criteria. The criteria can include, but is not limited to, thermal properties T of the object to be manufactured, simulation results .s of object deformations, sensor data S indicating temperatures and other thermal-related states of the object and / or portions of the object being manufactured, user defined toolpaths p that need to printed in a given sequence for multi-material layers, expected toolpath completion time(s) tc, and / or geometric features g of object to be manufactured. The cost function may be defined as shown by the following mathematical equation (3).F = (w T) + (W2'») + (wS) + (w ) + ( Tc) + (w6 g) (3) where F represents a cost function result, wi represents a weight assigned to thermal properties of the object to be manufactured, W2 represents a weight assigned to simulation results of object deformations, wj represents a weight assigned to sensor data indicating temperatures and other therm al -related states of the object and / or portions of the object being manufactured, represents a weight assigned to user defined toolpaths that need to printed in a given sequencefor multi-material layers, and ws represents a weight assigned to expected toolpath completion time(s), and W6 represents a weight assigned to geometric features g of object to be manufactured. Each of the weights wj - wo may be any decimal or integer number selected in accordance with a given application.
[0075] In block 1116, the controller instructs each available robot to deposit or print beads along deposition toolpaths in the respective subset of deposition toolpaths. Any known or to be known technique for instructing robots to perform tasks can be used here. Motion control of the robots is coordinated in block 1118 as they deposit or print beads along the deposition toolpaths. The manner in which this coordinated motion control is achieved will become evident as the discussion progresses. Still, it should be understood that the controller is configured to cause the robots to optimally collaborate as they additively manufacture the object within the common workspace. An optimal collaboration may be a function of bead deposition speed, bead deposition placement accuracy, and / or a total number of predicted robot collisions. The robots may be considered as optimally collaborating when the bead deposition speed exceeds a threshold value, a bead deposition placement accuracy exceeds a threshold, and / or there are none or a relatively low number (e.g., < 2, 5, 10, etc.) of predicted robot collisions.
[0076] In block 1120, the controller monitors operations of the robots as the beads are being deposited or printed. This monitoring may be achieved in the same or similar manner as the monitoring performed in block 1108.
[0077] In decision block 1122, the controller determines whether there are any remaining deposition toolpaths remaining or have not been completed. If not [1122:NO], then method 1100 returns to 1106 as shown by block 1124. Otherwise [1122:YES], method 1100 continues to decision block 1126 to determine whether the number of available robots has changed. This determination may be made based on one or more factors. The factors can include, but are not limited to, robot fault, robot malfunction, non-compliance of pre-defined rules specifying possible robot collision due to particular toolpaths being followed by robot(s), robot completion of respective toolpath(s), occurrence of a user-defined anomaly of robot performance, a welding torch malfunction, and / or a welding torch fault. Robot faults and malfunctions are well known.Welding torch malfunctions and faults are well known. The pre-defined rules can include, for example, a rule stating that if a first robot follows a first deposition toolpath and a second robot follows a second deposition toolpath conclude that a possible robot collision will occur. A user- defined anomaly of robot performance can include, but is not limited to, an inability of the robot to articulate or otherwise move its free end to a given area in a workspace due to system configuration and / or implementation. If the number of available robots has not changed [1126:NO], the controller returns to block 1120 and continues to monitor the robots as the beads are being deposited or printed. Otherwise [1126: YES], method 1100 continues to block 1128 of FIG. 1 IB.
[0078] As shown in FIG. 1 IB, block 1128 involves receiving, by the controller, sensed information relating to the object being additively manufactured at least partially within the common workspace. The sensed information may be received from one or more sensors of the system (e.g., sensor(s) 430, 488, 496, 498 of FIG. 4). In some example, the controller then determines, for each remaining deposition toolpath, a first difference between a centroid (e.g., centroid 810 of FIG. 8) of the remaining deposition toolpath (e.g., deposition toolpath 808 of FIG. 8) and a center (e.g., center 804 of FIG. 8) of the workspace positioner (e.g., workspace positioner 408 of FIG. 4). The controller may optionally select a threshold in block 1132 based on, for example, bead geometry and / or bead path size. If the first distance is less than the threshold [1134:YES], then method 1100 continues to block 1136 where the controller classifies the bead(s) as global bead(s). A global bead comprises a bead which may be deposited by two or more of the robots. The threshold may be selected, for example, to comprise a distance from one side of the common workspace to an opposing side of the common workspace. The common workspace may have a center that is set to center of the workspace positioner. If the first distance is equal to or greater than the threshold [1134:NO], then the controller classifies the bead(s) as local bead(s) in block 1138. A local global bead comprises a bead which may be deposited by only one of the robots. In some embodiments, the controller may determine that a bead is a global bead if the distance between the workpiece (e.g., between a start point or end point of a bead path) and each of two or more robots is below a threshold value such that the twoor more robots may deposit the bead. For instance, the controller may utilize a measurement between a distal end of a torch or robot arm and the bead.
[0079] Once the beads have been classified as global or local beads, method 1100 continues to block 1140 where the controller determines, for each bead, a second distance from (i) an expected location of a deposition or print head of each remaining robot when depositing or printing the bead to (ii) a starting point of the remaining deposition toolpath. The controller also determines a length or a size of each bead, as shown by block 1142.For each bead, the controller computes a score in block 1144 using a cost function based on the second distance D and / or the length / size of the bead Bs. The cost function may be that defined by the above-provided mathematical equation (3).
[0080] Next in block 1146, the controller defines deposition toolpaths for printing the global beads. The deposition toolpaths may be defined based on the score computed in block 1144. For example, scores may be used to prioritize the beads relative to each other. For example, a bead with a higher score is considered as having a higher priority than a bead with a lower score, and vice versa. Deposition toolpath(s) is(are) then defined for depositing the beads in each given layer in accordance with an order defined by their relative scores and / or priorities.
[0081] The control performs operations in block 1148 to assign a respective subset of the defined deposition toolpaths to each available robot. The controller instructs each available robot to deposit or print global beads along the deposition toolpaths in the respective subset, as shown by block 1150. Thereafter, method 1100 continues to block 1152 of FIG. 11C.
[0082] As shown in FIG. 11C, block 1152 involves coordinating motion control of robots to deposit or print global beads. The manner in which this coordinated motion control is achieved will become evident as the discussion progresses.
[0083] Next in block 1154, the controller determines whether there are local beads that need to be printed. If not [1158:NO], method 1100 continues to block 1160 where it ends or other operations are performed (e.g., return to block 1102).
[0084] If there are local beads that need to be printed [1158: YES], method 1100 continues with the operations of blocks 1162-1168. These operations involve: defining deposition toolpaths for printing local beads; assigning a respective subset of the defined deposition toolpaths to each available robot; instructing each available robot to deposit or print local beads along deposition toolpaths in the respective subset; and / or coordinating motion control of robots to deposit or print global beads. Subsequently, method 1100 continues to block 1170 where it ends or other operations are performed (e.g., return to 1102).
[0085] FIG. 12 provides a flow diagram of another example method 1200 for controlling a plurality of robots (e.g., articulated robot(s) 402, 404, 406 of FIG. 4). The robots may be disposed adjacent to one another such that workspaces thereof overlap to define a common workspace. Each robot may be configured to additively manufacture an object within the common workspace, and / or configured to additively manufacture an object in a-layer-by-layer manner by following deposition toolpaths in an order defined by a plurality of layers of the object.
[0086] Method 1200 begins with 1202 and continues with 1204 where a processor (e.g., controller(s) 410, 414, 416, 418, 450 of FIG. 4) obtains deposition toolpaths along which beads are to be deposited for additively manufacturing the object. The processor then assigns subsets of the deposition toolpaths to available robots, as shown by block 1206. In 1208, the processor instructs each of the available robots to deposit beads corresponding to the deposition toolpaths of a respective one of the subsets of deposition toolpaths assigned thereto.
[0087] When a number of available robots changes while manufacturing of the object, the processor performs the operations of following block 1210. These operations involve: (1212) defining new deposition toolpaths for printing beads; (1214) assigning a respective subset of the new deposition toolpaths to each one of the available robots; and (1216) instructing each one of the available robots to deposit beads corresponding to the new deposition toolpaths of the respective subset.
[0088] Block 1212 may involve: determining, for each remaining deposition toolpath, a first difference or distance between a centroid of the remaining deposition toolpath and a center of aworkspace positioner; classifying beads based on a comparison of the first distance to a threshold; determining, for each bead, a second distance from (i) an expected location of a deposition or print head of each remaining one of the available robots when depositing the bead to (ii) a starting point of the remaining deposition toolpath; and computing, for each bead, a score using the second distance and a bead size. At least one of the beads may be classified as a global bead when the first difference is less than the threshold. The global bead may comprise a bead which may be deposited by two or more of the plurality of robots. At least one of the beads may be classified as a local bead when the first difference is greater than the threshold. The local bead may comprise a bead which may be deposited by only one of the plurality of robots. The score may comprise a weighted combination of the second distance and bead size. First, new deposition toolpaths for depositing global beads may be defined in block 1212 based on the scores associated with the beads classified as global beads. Second, new deposition toolpaths for depositing local beads may be defined in block 1212 based on the scores associated with the beads classified as local beads.
[0089] In next block 1218, the robots perform operations to deposit the global and local beads. The global beads may be deposited prior to any of the local beads being deposited. Subsequently, method 1200 continues to block 1220 where it ends, or other operations are performed.
[0090] As noted above, the present solution implements coordinated motion control for the articulated robots (e.g., articulated robot(s) 402, 404, 406 of FIG. 4). Existing methods of coordinated motion control require pre-processed toolpaths to control each individual agent. This method is acceptable for coupled systems such as a 5-axis computer numerical control (CNC) milling machine or a six degree of freedom (6-DOF) robotic arm paired with a one to two degree of freedom (1-2 DOF) robot positioner. FIG. 13 shows an example of two agents (6-DOF robotic arm and a 2 DOF positioner) using coordinated motion that was preplanned using computer aided manufacturing (CAM). Difficulties arise when introducing more agents to the system. The CAM software would need to consider potential collisions with each agent and must pre-plan the full coordination for all agents in the system. This would increase overalllabor time as the user must meticulously check for each planned path with each agent to ensure they are in the correct position at the desired time.
[0091] The proposed solution involves kinematically chaining the agents based on prioritizing a main agent that drives the main motion while the other agents respond to the main agent and adaptively change their trajectory. Velocity based motion control is used to coordinate the motion with the desired toolpaths. This removes the need to rely on the generated deposition toolpaths to have commands for specific joints to coordinate the motion thus simplifying the deposition toolpath generation. The proposed solution uses a one degree of freedom (1-DOF) workpiece positioner table to drive the main motion of the articulated robots (e.g., 6-DOF robotic arms) equipped with tools to enable an additive manufacturing process. The rotational motion of the workpiece positioner is driven using the above-provided mathematical equation (2) for angular velocity. This computation is depicted in FIG. 14. In FIG. 14, ? is the angular velocity. r is a scalar radius of the circle 1400.is the velocity vector of the robot tool relative to the workpiece positioner 408. The robot tool can include, but is not limited to, the heating elements (e.g., welding torches) 440 of FIG. 4 that are disposed at a distal free end of an articulating robotic arm.
[0092] *s aprovided input. The scalar radius r is determined by the distance between an origin point 1402 and the robot tool. When multiple robots are coordinating with the workpiece positioner 408, each angular velocity is determined. An average angular velocity for the multiple robots is then computed. The average angular velocity is used for controlling motion of the workpiece positioner 408.
[0093] A robot tool’s velocity can be obtained using the following mathematical equation (5).is a velocity vector of the robot, Fg is the tangential velocity vector of the workpiece positioner, is a vector for a tool center point velocity which may be referred to as a linearmovement velocity vector of a robotic tool, and I is an error correction velocity vector.is negative to correct the relative velocity in relation to the positioner.uses the velocity input ofLastly, is used to ensure that the robot does not deviate from the deposition toolpath and uses closed loop control to maintain the trajectory. This is addressed above. The errorcorrection velocity uses proportional control to maintain the trajectory by using the error between distance of the planned trajectory and the current position of the robot. The gain is tuned by running multiple toolpaths for each robot. An example equation is Ve = Kp*e(t), where Kp is the proportional gain and E(t) is the error between the distance of the planned trajectory and current position of the robot. It should be noted that other forms of the closed-loop controller can be used for obtaining the correction velocity.
[0094] The motion control technique described herein enables sharing a workspace by multiple robots, optimizes robot allocation, improves system productivity, and increases quality of the printed part. The motion control technique can be used generally in fields such as manufacturing. More specifically, the disclosed technologies can be used for multi-robot coordination on-the-fly, on-demand, and / or in real time.
[0095] FIG. 15 provides a flow diagram of an illustrative method 1500 for controlling motion of robots (e.g., articulated robot(s) 402, 404, 406 of FIG. 4) in a coordinated manner during an additive manufacturing process. The robots may be positioned adjacent to one another such that workspaces thereof overlap to define a common workspace. Each robot may be configured to facilitate additively manufacturing an object within the common workspace, and / or configured to facilitate additively manufacturing an object in a-layer-by-layer manner by following deposition toolpaths in an order defined by a plurality of layers of the object.
[0096] The operations of method 1500 may be performed in the same or different order than that shown. Method 1500 may also be combined with the above-described methods. For example, method 1500 may be performed in blocks 1118, 1152, 1168 of FIG. 11, and / or blocks 1208, 1216, 1218 of FIG. 12
[0097] Method 1500 begins with 1502 and continues with 1504 where a workpiece positioner is considered by a processor (e.g., controller(s) 410, 414, 416, 418, 450 of FIG. 4) as a primary agent for driving robotic motion of a system (e.g., system 400 of FIG. 4). A tool center point velocity is obtained in block 1508 for each robot. The tool center point velocity may be pre-defined, pre-specified, previously provided, and / or stored in a local or remote datastore (e.g., datastore 454 of FIG. 4).
[0098] Next in block 1510, the processor determines a distance between a center of the workpiece positioner and a robotic tool located at a distal free end of a respective robot. This distance is used as a radius in block 1512 to compute an angular velocity of the workpiece positioner. These operations of blocks 1510, 1512 are repeated for each of the other robots. An average angular velocity is computed in block 1516 by averaging the angular velocities computed for the robots in blocks 1510-1514.
[0099] In block 1518, the processor determines, for each robot, a relative tool velocity based on the tool center point velocity and the average angular velocity of the workpiece positioner. The relative tool velocity may be determined using above-provided mathematical equation (5).
[0100] A trajectory for at least one robot is adjusted in block 1520 based on the respective relative tool velocity. The trajectory may define a deposition toolpath along which beads are to be deposited for additively manufacturing the object. For example, the tool velocity specified for the trajectory may be replaced with the respective relative tool velocity. The present solution is not limited in this regard. Other adjustments to the trajectory may be made in view of the respective relative tool velocity. The change of the trajectory occurs when the positioner moves since the original path has been relocated by the rotation of the positioner. Limits in the angular velocity can be controlled by the user and movement of positioner can be disabled if needed (e.g., a geometry not suitable with using the positioner).
[0101] In block 1522, the rotational motion of the workpiece positioner is controlled based on the average angular velocity computed in block 1516. Any known or to be known technique for controlling rotation motion of a workpiece positioner may be used here. For example, theprocessor may control actuation of gear(s) and / or motor(s) to increase or decrease the rotational velocity of the workpiece position in accordance the average angular velocity.
[0102] The robot(s) is(are) controlled in block 1524 to follow the adjusted trajectory(ies). Any known or to be known technique for controlling robots to follow a trajectory can be used here. For example, the processor may control actuation of joints of an articulating arm so that the tool at the distal free end thereof moves along a path in accordance with the trajectory.
[0103] The operations of blocks 1508-1524 may optionally be repeated one or more times until a robotic mission, goal or task is completed. A robotic mission may include, but is not limited to, additively manufacturing one or more objects. A robotic goal may include, but is not limited to, additively manufacturing one or more objects with no or a minimal number of robot collisions. A robotic task may include, but is not limited to, disposing beads in one or more layers. Subsequently, method 1500 continues to block 1528 where it ends or other operations are performed.
[0104] Referring now to FIG. 16, there is shown an illustrative architecture for a computing device 1600. The controller(s) 410, 414, 416, 418, 450 of FIG. 4 and / or computing device 486 of FIG. 4 is / are the same as or similar to computing device 1600. As such, the discussion of computing device 1600 is sufficient for understanding the components 410, 414, 416, 418, 450, 486 of FIG. 4.
[0105] Computing device 1600 may include more or less components than those shown in FIG. 16. However, the components shown are sufficient to disclose an illustrative solution implementing the present solution. The hardware architecture of FIG. 16 represents one implementation of a representative computing device configured to receive information, process the receive information, transmit information and / or control operations of one or more robots, as described herein. As such, the computing device 1600 of FIG. 16 implements at least a portion of the method(s) described herein.
[0106] Some or all components of the computing device 1600 can be implemented as hardware, software and / or a combination of hardware and software. The hardware includes, butis not limited to, one or more electronic circuits. The electronic circuits can include, but are not limited to, passive components (e.g., resistors and capacitors) and / or active components (e.g., amplifiers and / or microprocessors). The passive and / or active components can be adapted to, arranged to and / or programmed to perform one or more of the methodologies, procedures, or functions described herein.
[0107] As shown in FIG. 16, the computing device 1600 comprises a user interface 1602, a Central Processing Unit (CPU) 1606, a system bus 1610, a memory 1612 connected to and accessible by other portions of computing device 1600 through system bus 1610, a system interface 1660, and hardware entities 1614 connected to system bus 1610. The user interface can include input devices and output devices, which facilitate user-software interactions for controlling operations of the computing device 1600. The input devices include, but are not limited to, a physical and / or touch keyboard 1650. The input devices can be connected to the computing device 1600 via a wired or wireless connection (e.g., a Bluetooth® connection). The output devices include, but are not limited to, a speaker 1652, a display 1654, and / or light emitting diodes 1656. System interface 1660 is configured to facilitate wired or wireless communications to and from external devices (e.g., network nodes such as access points, etc.).
[0108] At least some of the hardware entities 1614 perform actions involving access to and use of memory 1612, which can be a Random Access Memory (RAM), a disk drive, flash memory, a universal serial bus (USB) drive and / or another hardware device that is capable of storing instructions and data. Hardware entities 1614 can include a disk drive unit 1616 comprising a computer-readable storage medium 1618 on which is stored one or more sets of instructions 1620 (e.g., software code) configured to implement one or more of the methodologies, procedures, or functions described herein. The instructions 1620 can also reside, completely or at least partially, within the memory 1612 and / or within the CPU 1606 during execution thereof by the computing device 1600. The memory 1612 and the CPU 1606 also can constitute machine-readable media. The term "machine-readable media", as used here, refers to a single medium or multiple media (e.g., a centralized or distributed database, and / or associated caches and servers) that store the one or more sets of instructions 1620. The term "machine-readable media", as used here, also refers to any medium that is capable of storing, encoding or carrying a set of instructions 1620 for execution by the computing device 1600 and that cause the computing device 1600 to perform any one or more of the methodologies of the present disclosure.
[0109] In view of the forgoing, the present solution concerns implementing systems and methods for controlling a plurality of robots. The methods comprise: obtaining, by a processor, deposition toolpaths along which beads are to be deposited for additively manufacturing the object; assigning, by the processor, subsets of the deposition toolpaths to available robots of the plurality of robots; instructing, by the processor, each of the available robots to deposit beads corresponding to the deposition toolpaths of a respective one of the subsets of deposition toolpaths assigned thereto; and performing the following operations by the processor when a number of available robots changes while manufacturing of the object: defining new deposition toolpaths for printing beads; assigning a respective subset of the new deposition toolpaths to each one of the available robots; and instructing each one of the available robots to deposit beads corresponding to the new deposition toolpaths of the respective subset. The robots may be disposed adjacent to one another such that workspaces thereof overlap to define a common workspace. Each robot may be configured to additively manufacture an object within the common workspace, and / or additively manufacture an object in a-layer-by-layer manner by following deposition toolpaths in an order defined by a plurality of layers of the object.
[0110] The methods may also comprise: determining, for each remaining deposition toolpath, a first difference between a centroid of the remaining deposition toolpath and a center of a workspace positioner; and classifying beads based on a comparison of the first difference to a threshold. The classifying beads may comprise: classifying at least one of the beads as a global bead when the first difference is less than the threshold (the global bead comprising a bead which may be deposited by two or more of the plurality of robots); and / or classifying at least one of the beads as a local bead when the first difference is greater than the threshold (e.g., the local bead comprising a bead which may be deposited by only one of the plurality of robots).
[0111] Additionally or alternatively, the methods comprising: determining, for each bead, a second distance from (i) an expected location of a deposition or print head of each remaining one of the available robots when depositing the bead to (ii) a starting point of the remaining deposition toolpath; and computing, for each bead, a score using the second distance and a bead size. The score may comprise a weighted combination of the second distance and bead size. First ones of the new deposition toolpaths for depositing global beads may be defined based on the scores associated with the beads classified as global beads, and second ones of the new deposition toolpaths for depositing local beads may be defined based on the scores associated with the beads classified as local beads. The global beads may be deposited prior to any of the local beads being deposited.
[0112] The present solution also concerns a non-transitory computer-readable medium that stores instructions that are configured to, when executed by at least one computing device, cause the at least one computing device to perform operations comprising: obtaining deposition toolpaths along which beads are to be deposited for additively manufacturing the object; assigning subsets of the deposition toolpaths to available robots of the plurality of robots; instructing each of the available robots to deposit beads corresponding to the deposition toolpaths of a respective one of the subsets of deposition toolpaths assigned thereto; defining new deposition toolpaths for printing beads when a number of available robots changes while manufacturing the object; assigning a respective subset of the new deposition toolpaths to each one of the available robots; and instructing each one of the available robots to deposit beads corresponding to the new deposition toolpaths of the respective subset. The robots may be positioned adjacent to one another such that workspaces thereof overlap to define a common workspace. Each robot may be configured to additively manufacture an object within the common workspace, and / or additively manufacture an object in a-layer-by-layer manner by following deposition toolpaths in an order defined by a plurality of layers of the object.
[0113] The computing device may be further caused to: determine, for each remaining deposition toolpath, a first difference between a centroid of the remaining deposition toolpath and a center of a workspace positioner; and classify beads based on a comparison of the firstdifference to a threshold. The classifying beads may comprise: classifying at least one of the beads as a global bead when the first difference is less than the threshold (the global bead comprising a bead which may be deposited by two or more of the plurality of robots); and classifying at least one of the beads as a local bead when the first difference is greater than the threshold (the local bead comprising a bead which may be deposited by only one of the plurality of robots).
[0114] Additionally or alternatively, the computing device may also be caused to: determine, for each bead, a second distance from (i) an expected location of a deposition or print head of each remaining one of the available robots when depositing the bead to (ii) a starting point of the remaining deposition toolpath; and compute, for each bead, a score using the second distance and a bead size. The score may comprise a weighted combination of the second distance and bead size. First ones of the new deposition toolpaths for depositing global beads may be defined based on the scores associated with the beads classified as global beads, and second ones of the new deposition toolpaths for depositing local beads may be defined based on the scores associated with the beads classified as local beads. The global beads may be deposited prior to any of the local beads being deposited.
[0115] The present solution also concerns implementing systems and methods for controlling motion of a plurality of robots in a coordinated manner. The methods comprise: determining, by a processor for each robot of the plurality of robots, a distance between a center of the workpiece positioner and a robotic tool located at a distal free end of said robot; using, by the processor, each of the distances as a radius to compute an angular velocity of the workpiece positioner; determining, by the processor for each said robot, a relative tool velocity based on a known tool center point velocity and an average of the angular velocities; adjusting, by the processor, a trajectory for at least one said robotic tool based on the relative tool velocity; controlling, by the processor, movement of said robot to cause the at least one said robotic tool to follow the trajectory which was adjusted; controlling, by the processor, rotational motion of the workpiece positioner based on the average of the angular velocities; and / or periodically repeating some or all of the previous operations until a robotic mission, goal or task is completed.
[0116] The workpiece positioner may be considered by the processor as a primary agent for driving robotic motion. The robots may be considered by the processor as secondary agents for driving robotic motion. The robots may be positioned adjacent to one another such that workspaces thereof overlap to define a common workspace. Each robot may be configured to facilitate an additive manufacture of an object within the common workspace. The relative tool velocity may be determined in accordance with mathematical equation (5) provided above. The robotic mission, goal or task comprises additively manufacturing an object or at least a portion of the object. The trajectory may define a deposition toolpath along which beads are to be deposited for additively manufacturing the object.
[0117] The present solution also concerns implementing systems and methods for controlling a plurality of robots. The methods comprise: instructing, by a processor, each robot of the plurality of robots to additively manufacturing an object by depositing beads corresponding to deposition toolpaths assigned thereto; and controlling motion of a plurality of robots in a coordinated manner while the object is being additively manufactured, by: obtaining angular velocities for a workpiece positioner using distances between a center of the workpiece positioner and robotic tools at distal free ends of said robots; determining, for each said robot, a relative tool velocity based on a known tool center point velocity and an average of the angular velocities; adjusting a trajectory for at least one of said robotic tools based on the relative tool velocity; and controlling movement of said robot to cause the at least one of said robotic tools to follow the trajectory which was adjusted.
[0118] The methods may also involve performing the following operations by the processor when the number of available robots changes while additively manufacturing of the object: defining new deposition toolpaths for printing beads; assigning a respective subset of the new deposition toolpaths to each of said available robots; and instructing each of said available robots to deposit beads corresponding to the new deposition toolpaths of the respective subset.
[0119] The present solution also concerns a system comprising: a processor; and a non- transitory computer-readable medium that stores instructions that are configured to, when executed by the processor, cause the processor to perform operations comprising: determining,for each robot of the plurality of robots, a distance between a center of the workpiece positioner and a robotic tool located at a distal free end of said robot; using each of the distances as a radius to compute an angular velocity of the workpiece positioner; determining, for each said robot, a relative tool velocity based on a known tool center point velocity and an average of the angular velocities; adjusting, by the processor, a trajectory for at least one said robotic tool based on the relative tool velocity; controlling movement of said robot to cause the at least one said robotic tool to follow the trajectory which was adjusted; controlling rotational motion of the workpiece positioner based on the average of the angular velocities; and / or periodically repeating some or all of the previous operations until a robotic mission, goal or task is completed.
[0120] The terms “processor” and “processing device” refer to a hardware component of an electronic device that is configured to execute programming instructions. Except where specifically stated otherwise, the singular terms “processor” and “processing device” are intended to include both single-processing device embodiments and embodiments in which multiple processing devices together or collectively perform a process.
[0121] The terms “memory,” “memory device,” “computer-readable medium,” “data store,” “data storage facility” and the like each refer to a non-transitory device on which computer- readable data, programming instructions or both are stored. Except where specifically stated otherwise, the terms “memory,” “memory device,” “computer-readable medium,” “data store,” “data storage facility” and the like are intended to include single device embodiments, embodiments in which multiple memory devices together or collectively store a set of data or instructions, as well as individual sectors within such devices. A computer program product is a memory device with programming instructions stored on it.
[0122] As used in this document, the singular form “a”, “an”, and “the” include plural references unless the context clearly dictates otherwise. Unless defined otherwise, all technical and scientific terms used herein have the same meanings as commonly understood by one of ordinary skill in the art. As used in this document, the term “comprising” means “including, but not limited to”.
[0123] The described features, advantages and characteristics disclosed herein may be combined in any suitable manner. One skilled in the relevant art will recognize, in light of the description herein, that the disclosed systems and / or methods can be practiced without one or more of the specific features. In other instances, additional features and advantages may be recognized in certain scenarios that may not be present in all instances.
[0124] Although the systems and methods have been illustrated and described with respect to one or more implementations, equivalent alterations and modifications will occur to others skilled in the art upon the reading and understanding of this specification and the annexed drawings. In addition, while a particular feature may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application. Thus, the breadth and scope of the disclosure herein should not be limited by any of the above descriptions. Rather, the scope of the invention should be defined in accordance with the following claims and their equivalents.
Claims
CLAIMSWhat is claimed is:
1. A method for controlling motion of a plurality of robots in a coordinated manner, comprising: determining, by a processor for each robot of the plurality of robots, a distance between a workpiece positioner and a tool located at a distal end of said robot; using, by the processor, each of the distances as a radius to compute an angular velocity of the workpiece positioner; determining, by the processor for each said robot, a relative tool velocity based on a known tool center point velocity and an average of the computed angular velocities; adjusting, by the processor, a trajectory for at least one said robotic tool based on the relative tool velocity; and controlling, by the processor, movement of said robot to cause the at least one said robotic tool to follow the trajectory.
2. The method according to claim 1, further comprising controlling, by the processor, rotational motion of the workpiece positioner based on the average of the angular velocities.
3. The method according to claim 1, wherein the workpiece positioner is considered by the processor as a primary agent for driving robotic motion and the robots are considered by the processor as secondary agents for driving robotic motion.
4. The method according to claim 1, wherein the robots are disposed adjacent to one another such that workspaces thereof overlap to define a common workspace.
5. The method according to claim 4, wherein each said robot is configured to facilitate an additive manufacture of an object within the common workspace.
6. The method according to claim 1, wherein the relative tool velocity is determined in accordance with mathematical equationis a velocity vector of the robot, g is a tangential velocity vector of the workpiece positioner, is a linear movement velocity vector of a robotic tool,is an error correction velocity vector.
7. The method according to claim 1, further comprising periodically repeating the steps of claim 1 until a robotic task is completed, wherein the robotic task comprises additively manufacturing an object or at least a portion of an object.
8. The method according to claim 7, wherein the robotic task comprises disposing beads in one or more layers.
9. The method according to claim 1, wherein the trajectory defines a deposition toolpath along which beads are to be deposited for additively manufacturing the object.
10. A method for controlling a plurality of robots, comprising: instructing, by a processor, each robot of the plurality of robots to additively manufacture an object by depositing beads corresponding to deposition toolpaths assigned thereto; and controlling motion of a plurality of robots in a coordinated manner while the object is being additively manufactured, by: obtaining angular velocities for a workpiece positioner using distances between the workpiece positioner and tools at distal ends of said robots; determining, for each said robot, a relative tool velocity based on a known tool center point velocity and an average of the angular velocities; adjusting a trajectory for at least one of said robotic tools based on the relative tool velocity; and controlling movement of said robot to cause the at least one of said robotic tools to follow the trajectory which was adjusted.
11. The method according to claim 10, further comprising performing the following operations by the processor when a number of available robots changes while additively manufacturing of the object: defining new deposition toolpaths for printing beads; assigning a respective subset of the new deposition toolpaths to each of said available robots; and instructing each of said available robots to deposit beads corresponding to the new deposition toolpaths of the respective subset.
12. A system, comprising: a processor; and a non-transitory computer-readable medium that stores instructions that are configured to, when executed by the processor, cause the processor to perform operations comprising: determining, for each robot of the plurality of robots, a distance between the workpiece positioner and a tool located at a distal end of said robot; using each of the distances as a radius to compute an angular velocity of the workpiece positioner; determining, for each said robot, a relative tool velocity based on a known tool center point velocity and an average of the angular velocities; adjusting, by the processor, a trajectory for at least one said robotic tool based on the relative tool velocity; and controlling movement of said robot to cause the at least one said robotic tool to follow the trajectory which was adjusted.
13. The system according to claim 12, wherein the processor is further configured to control rotational motion of the workpiece positioner based on the average of the angular velocities.
14. The system according to claim 12, wherein the workpiece positioner is considered by the processor as a primary agent for driving robotic motion and the robots are considered by the processor as secondary agents for driving robotic motion.
15. The system according to claim 12, wherein the robots are disposed adjacent to one another such that workspaces thereof overlap to define a common workspace.
16. The system according to claim 15, wherein each said robot is configured to facilitate an additive manufacture of an object within the common workspace.
17. The system according to claim 12, wherein the relative tool velocity is determined in accordance with mathematical equationis a velocity vector of the robot, is a tangential velocity vector of the workpiece positioner, I is a linear movement velocity vector of a robotic tool,is an error correction velocity vector.
18. The system according to claim 12, further comprising periodically repeating the steps of claim 1 until a robotic task is completed, wherein the robotic task comprises additively manufacturing an object or at least a portion of the object.
19. The system according to claim 18, wherein the robotic task comprises disposing beads in one or more layers.
20. The system according to claim 12, wherein the trajectory defines a deposition toolpath along which beads are to be deposited for additively manufacturing the object.