Patent Description:
Robots perform a variety of tasks upon parts in a fabrication environment. These tasks may include drilling, installing fasteners, welding, etc. When fabricating large parts, it is not uncommon for multiple robots to work collaboratively at the same time. When a group of robots perform work together on a part, it remains important that the robots do not collide with each other or the part. Collisions may damage the robots or the part, which may result in costly or time-consuming repairs.

In order to prevent collisions between robots working on the same part, all robots working on the part halt whenever one robot encounters a malfunction. This strategy successfully prevents collisions, but also increases overall downtime. That is, when robots are working collaboratively, if one breaks down then its collaborator robots will not be able to continue working. When a larger number of robots work collaboratively on a part, the amount of downtime at the group dramatically increases. This is because the likelihood of a single robot within the group encountering a malfunction increases as the number of robots in the group increases. There is also a desire to transition robots away from multifunction end effectors that go offline when one function of the robot encounters an error.

<CIT>, per its abstract, states paint booths for applying paint to an object, as well as methods for degrading coating operations associated with a paint booth, are disclosed. Paint booth may generally include one or more robot rails positioned parallel to the path of the conveyor, and one or more robots positioned on at least one of the rails. Robots may be configured to simultaneously apply a first paint layer to the interior and exterior surfaces of the object. Paint booths may further include one or more additional robots positioned on at least one of the rails and configured to simultaneously apply a second paint layer to the interior and exterior surfaces of the object.

Embodiments described herein provide enhanced techniques for controlling robots in a manner that prevents collisions, while also allowing robots to continue working on a part after one robot has encountered a malfunction or otherwise become unable to conform its operations with a predefined schedule. The malfunctioning robot is removed in order to prevent collisions, and remaining robots continue to work on the part in accordance with their original schedule for performing work. When a functioning robot replaces the malfunctioning robot, the functioning robot is placed where the malfunctioning robot is currently scheduled to be. Because the functioning robot is placed in an already scheduled location that has been determined to be collision-free, it may continue work intended for the malfunctioning robot without issue.

One embodiment is a method for coordinating operations of robots performing work on a part according to claim <NUM>.

Another embodiment is a system for coordinating operations of robots performing work on a part according to claim <NUM>.

Some further possible embodiments are defined in the dependent claims.

Other illustrative embodiments (e.g., methods and systems relating to the foregoing embodiments) may be described below. The features, functions, and advantages that have been discussed can be achieved independently in various embodiments or may be combined in yet other embodiments further details of which can be seen with reference to the following description and drawings.

The figures and the following description provide specific illustrative embodiments of the disclosure. It will thus be appreciated that those skilled in the art will be able to devise various arrangements that, although not explicitly described or shown herein, embody the principles of the disclosure and are included within the scope of the disclosure. Furthermore, any examples described herein are intended to aid in understanding the principles of the disclosure, and are to be construed as being without limitation to such specifically recited examples and conditions. As a result, the disclosure is not limited to the specific embodiments or examples described below, but by the claims.

The systems described herein allow labor that would be performed by a robot with a multi-function end effector to be distributed across robots with single function end effectors. This division of labor to single function end effectors significantly increases the number of robots in use, resulting in a desire for synchronized control of the robots in order to avoid collisions. Using single-function end effectors provides a technical benefit because it overcomes problems related to multifunction end effectors breaking down when one function of a robot breaks down. The use of single-function end effectors also enables easier replacement of robots.

<FIG> illustrates a fabrication system <NUM> for a part <NUM> in an illustrative embodiment. Fabrication system <NUM> comprises any combination of systems, components, or devices that are operable to utilize robots in order to perform work on part <NUM> (e.g., a metal part, fiber reinforced composite part, etc.). Fabrication system <NUM> has been enhanced to coordinate these robots so that work continues uninterrupted on part <NUM>, even when one or more of the robots have malfunctioned or otherwise become unable to continue performing work at the part <NUM>.

In this embodiment, fabrication system <NUM> includes a group <NUM> of robots <NUM>, <NUM>, <NUM>, and <NUM>. These robots perform work upon regions <NUM>, <NUM>, <NUM>, and <NUM>, respectively, of part <NUM> in accordance with directions from robot coordination system <NUM>. The work performed by robots <NUM>-<NUM> in regions <NUM>-<NUM> may comprise drilling, installing fasteners, welding, gluing, inspecting, or other operations. Robots perform actions by controlling their kinematic chains, such as a kinematic chain <NUM> of robot <NUM>.

Robot coordination system <NUM> directs the operations of robots <NUM>-<NUM> in order to direct work at part <NUM> in a timely manner, and also to prevent robots <NUM>-<NUM> from colliding with each other or with part <NUM>. In this embodiment, robot coordination system <NUM> includes interface <NUM>, which provides instructions and receives updates from robots <NUM>-<NUM> indicating their progress. Interface <NUM> may comprise a wired communication interface such as an Ethernet interface or Universal Serial Bus (USB) interface, a wireless interface compliant with Wi-Fi or Bluetooth standards, etc..

Controller <NUM> reviews instructions stored in memory <NUM> in order to direct the operations of robots <NUM>-<NUM>. In embodiments where robots <NUM>-<NUM> include their own internal controllers for repositioning and performing work at part <NUM>, controller <NUM> may receive error messages or other notifications from robots <NUM>-<NUM>. Controller <NUM> also generates schedules for operating robots <NUM>-<NUM> in tandem. Controller <NUM> checks and/or revises those schedules to prevent robots <NUM>-<NUM> from colliding during operation. In one embodiment, controller <NUM> additionally engages in real-time collision checking when directing work, based on updates from robots <NUM>-<NUM>. Controller <NUM> may be implemented, for example, as custom circuitry, as a hardware processor executing programmed instructions, or some combination thereof. Memory <NUM> may be implemented as a solid state storage device, hard disk, etc..

Controller <NUM> has been enhanced to continue directing robots to perform work on part <NUM> even in circumstances where a robot has become unable to continue performing work. That is, if a robot encounters a malfunction or otherwise becomes unable to perform work in accordance with a schedule, controller <NUM> continues to direct remaining robots to perform work on part <NUM>. When a functioning robot is acquired, the functioning robot initiates work at a location where the malfunctioning robot would currently be if it had continued operating normally. The robots then continue operating in accordance with their original schedule. Since the original schedule has already been checked to ensure that no collisions are present, the rest of the schedule may be run without any concern of collisions.

Illustrative details of the operation of fabrication system <NUM> will be discussed with regard to <FIG>. Assume, for this embodiment, that part <NUM> has been placed among robots <NUM>-<NUM> and awaits the performance of work in order for fabrication to be completed.

<FIG> is a flowchart illustrating a method <NUM> for coordinating operations of robots in a fabrication system in an illustrative embodiment. The steps of method <NUM> are described with reference to fabrication system <NUM> of <FIG>, but those skilled in the art will appreciate that method <NUM> may be performed in other systems. The steps of the flowcharts described herein are not all inclusive and may include other steps not shown. The steps described herein may also be performed in an alternative order.

With part <NUM> in place, controller <NUM> subdivides the part <NUM> into regions <NUM>-<NUM> in step <NUM>, and generates a schedule indicating where and when robots <NUM>-<NUM> will perform work on part <NUM> in step <NUM>. Regions <NUM>-<NUM> are defined by controller <NUM> as contiguous portions of part <NUM>, and may comprise regions of the same size, regions expected to take the same amount of time for work to be completed by a robot, etc. In one embodiment, the schedule generated by controller <NUM> comprises one or more Numerical Control (NC) programs for robots <NUM>-<NUM>. Controller <NUM> confirms that running the schedule will not result in any predicted potential collisions, and proceeds to step <NUM>.

In step <NUM>, controller <NUM> assigns a group <NUM> of robots <NUM>-<NUM> to part <NUM>. In one embodiment, this includes assigning each of robots <NUM>-<NUM> to one of regions <NUM>-<NUM> of part <NUM>. For example, controller <NUM> may provide a different NC program to each robot, based on the region in which that robot is located.

In step <NUM>, controller <NUM> initiates work on the part <NUM> via the group <NUM> of robots. For example, controller <NUM> may initiate operations at each of robots <NUM>-<NUM> in accordance with a predefined schedule that synchronizes movements of the robots in order to assure collision avoidance. In some embodiments, controller <NUM> awaits further updates from the robots indicating their progress. In further embodiments, controller <NUM> selectively pauses, delays, or speeds up work at certain robots depending on their progress, in order to ensure that the robots continue operating in synchrony as dictated by the schedule. For example, if one robot has completed an operation faster than expected, controller <NUM> may briefly pause that robot in order to ensure that the robot continues to conform with the schedule, which is known to be collision free.

Progress continues on the part <NUM> as robots <NUM>-<NUM> continue to perform work. At some point in time, one of the robots encounters a condition that prevents it from being able to continue performing work on the part <NUM> in accordance with the schedule. For example, a robot may detect that it has broken or worn-down tooling that requires replacement, a robot may move to an unexpected position and halt, a robot may fail to perform work owing to a positioning error, the robot may encounter a runtime error, a robot may be in need of maintenance, etc. In any circumstance, this condition causes the robot to either halt work or to continue working at an undesirably reduced rate.

Because the robots <NUM>-<NUM> are each expected to perform their tasks on schedule along a predefined path that has already been crafted to prevent collisions, the malfunctioning robot presents a problem. If the robot can return to performing work in accordance with the schedule, then this problem may be corrected and work may continue. However, if the robot cannot return to performing work in accordance with the schedule, continued operation of the robot results in an unknown risk of collision with other robots. To this end, it is desirable to remove the robot before a collision occurs. After the robot has been removed, the remaining robots may continue in accordance with the schedule without risk of collision. The robot may then be replaced at a later time.

In step <NUM>, controller <NUM> determines that a robot is unable to continue performing work at a first location in one of the regions of the part. As used herein, a robot may be considered to be "malfunctioning" if it cannot continue to perform work in accordance with its schedule (i.e., if it cannot continue to conform with its schedule of work). This may be caused due to an error at an end effector of the robot, an error at an actuator that moves the robot, an error at a controller of the robot, etc. This determination may be based on an update received from the robot indicating a positioning or other error, may be based on the robot not reporting a confirmation to controller <NUM>, due to a notification from a technician, etc. For example, in <FIG>, robot <NUM> may encounter a malfunction at first location <NUM> after work <NUM> has been performed on part <NUM>.

Upon detection of the robot that is unable to continue performing work in accordance with the schedule, the robot is removed from the group (e.g., physically and functionally) in step <NUM> while other robots of the group continue performing the work. For example, the robot may be physically removed from part <NUM>. The robot may then be repaired to become a functioning robot, or may be replaced with a functioning robot.

After a functioning robot has become available, in step <NUM> the functioning robot is added to the group at a second location in the region that the malfunctioning robot is scheduled to occupy. The second location is the location that the malfunctioning robot would currently occupy if the malfunctioning robot had been able to continue performing work on the part. For example, as shown in <FIG>, a functioning robot <NUM> is placed at second location <NUM>. Second location <NUM> is distinct from first location <NUM>, and one or more instances of work <NUM> between first location <NUM> and second location <NUM> have not yet been completed. However, because the functioning robot <NUM> is placed at the location that is expected by the schedule, no collision checking or alteration of the schedule is required. That is, the functioning robot takes up collaboration spacing with the other robots where the malfunctioning robot would have been if it had not dropped out/been removed.

In step <NUM>, the group <NUM> of robots continue work on regions <NUM>-<NUM> of part <NUM>. This may proceed until the schedule determined by controller <NUM> has been completed. For example, as shown in <FIG>, each robot may continue performing work across the part <NUM>. Method <NUM> may be repeated to perform additional work on the part <NUM>, or even to perform different kinds of work on the part <NUM>.

Method <NUM> provides a technical benefit over prior techniques, because it enables robots to continue operating according to a predetermined schedule when they are working on a part. This reduces downtime when operating on the part, and reduces the amount of processing resources needed for collision avoidance checking.

The following FIGS. provide additional details of scheduling and collision avoidance in illustrative embodiments. <FIG> is a diagram illustrating coordinated movements between robots in different regions of a part <NUM> in an illustrative embodiment. Robot <NUM> performs work within region <NUM> along path <NUM>, followed by path <NUM>, path <NUM>, and path <NUM>. Meanwhile, robot <NUM> performs work within region <NUM> along path <NUM>, followed by path <NUM>, path <NUM>, and path <NUM>. This means that robot <NUM> and robot <NUM> remain on opposite sides of their respective regions during work. It also means that robot <NUM> and robot <NUM> do not perform work at a shared edge <NUM> of region <NUM> and region <NUM> (which are adjacent) at the same time.

<FIG> is a diagram illustrating regions of a part <NUM> that have been divided into sections in an illustrative embodiment. In this embodiment, part <NUM> includes region <NUM> and region <NUM>. Region <NUM> is worked upon by robot <NUM>, while region <NUM> is worked upon by robot <NUM>. Region <NUM> is subdivided into section <NUM> and section <NUM>. Region <NUM> is subdivided into section <NUM> and section <NUM>. Robot <NUM> performs work starting in section <NUM>, and then section <NUM>. Meanwhile, robot <NUM> performs work starting in section <NUM>, and then in section <NUM>. According to this scheduling technique, robots continue to work in sections that are not adjacent, which reduces a likelihood of collision during fabrication. Controller <NUM> may therefore coordinate movement of the robots along the sections in a manner that prevents the robots from operating at the same time in sections that are directly adjacent.

<FIG> is a block diagram of a schedule <NUM> in an illustrative embodiment. In this embodiment, schedule <NUM> is provided in the form of instructions for an NC program that is operated by controller <NUM>. The instructions are for operations performed by each of multiple robots. Upon transmitting instructions for a set of operations (e.g., set <NUM>, set <NUM>, set <NUM>) controller <NUM> pauses until the robots have confirmed completion of the operations. Upon receiving a confirmation from each robot, the controller <NUM> proceeds to provide a next set of instructions from the schedule <NUM>. In further embodiments, schedules may be distributed across the robots for independent operation, may be performed without pausing, or may be implemented in any other suitable fashion. Controller <NUM> therefore independently determines what functions are to be performed by each robot, and where those functions will be performed. Controller <NUM> also determines a path for each robot that avoids collisions by performing the work at known timings. In further embodiments, Controller <NUM> periodically samples the progress of each of the robots to ensure that the schedule is being maintained.

<FIG> is a diagram illustrating a collision avoidance model for robots in a fabrication system in an illustrative embodiment. According to <FIG>, each robot is modeled as a volume, such as volume <NUM> or volume <NUM>. The path <NUM> of volume <NUM> and path <NUM> of volume <NUM> across part <NUM> is also modeled. When checking a schedule for potential collisions, Controller <NUM> determines volumes occupied by the robots during the work based on the schedule. Controller <NUM> then compares volumes occupied by different robots over time to detect potential collisions, and reports any potential collisions that were detected. If any potential collisions are detected, controller <NUM> may also flag the schedule as unacceptable.

In further embodiments, controller <NUM> detects potential collisions between the robots based on current positions, speeds, and tasks of the robots, and reports any potential collisions that were detected. For example, one robot may drill the holes in a region while another robot inspects drilled holes in another region, while another robot installs pins into drilled and inspected holes in yet another region, all the while avoiding collisions due to scheduling and real-time control. This form of real-time collision checking may be implemented as a supplement to the schedule-based collision checking discussed above. The real-time collision checking provides a technical benefit by preventing collisions that would otherwise occur when a robot is not positioned where a schedule expects the robot to be.

In the following examples, additional processes, systems, and methods are described in the context of a fabrication system for a part.

<FIG> is a flowchart illustrating a method <NUM> for coordinating operations of robots in a fabrication system in an illustrative embodiment. Method <NUM> includes controller <NUM> determining tasks to be performed by each of multiple robots in step <NUM>. This may include determining what tasks are to be by robots on a part (e.g., drilling, inspecting, etc.) and where those tasks are to be accomplished. In step <NUM>, controller <NUM> generates a schedule indicating where and when a group of robots will perform work on the part. The schedule includes paths for robots that avoid collisions when timed with other robots. Thus, controller <NUM> confirms that when operating in accordance with the schedule, movements of robots within the group are coordinated to prevent collision. In step <NUM>, controller <NUM> assigns the group of robots to the part. For example, if the part is subdivided into regions, controller <NUM> may assign a different robot in the group to each of the regions. In step <NUM>, controller <NUM> initiates work on the part via the group of robots according to the schedule. For example, controller <NUM> may provide instructions to the robots in a timed manner in order to ensure compliance with the schedule. In step <NUM>, controller <NUM> samples a progress of the robots as the group of robots performs work on the part. For example, this may include receiving input from each robot indicating its current status and/or location. In step <NUM>, controller <NUM> adjusts a speed of one or more of the robots in the group based on the determined progress. For example, if some robots are proceeding more slowly than expected, controller <NUM> may either speed up these robots or slow down other robots in the group in order to ensure that the schedule is adhered to.

<FIG> is a block diagram of a fabrication system <NUM> in an illustrative embodiment. Fabrication system <NUM> operates on part <NUM>, which is divided into regions <NUM> and sections <NUM>. In this embodiment, fabrication system <NUM> includes robots <NUM>-<NUM> through <NUM>-<NUM>, which include rigid bodies <NUM>-<NUM> through <NUM>-<NUM> that are repositioned by actuators <NUM>-<NUM> through <NUM>-<NUM> within kinematic chains <NUM>-<NUM> through <NUM>-<NUM>. End effectors <NUM>-<NUM> through <NUM>-<NUM> perform work at robots <NUM>-<NUM> through <NUM>-<NUM>, such as drilling or installing fasteners. Fabrication system <NUM> also includes robot coordination system <NUM>. Robot coordination system <NUM> includes an interface <NUM> that is coupled for communication with robots <NUM>. Controller <NUM> manages the operations of robots <NUM> based on input from interface <NUM>, and accesses memory <NUM> to store schedules and collision avoidance logic.

Referring more particularly to the drawings, embodiments of the disclosure may be described in the context of aircraft manufacturing and service in method <NUM> as shown in <FIG> and an aircraft <NUM> as shown in <FIG>. During pre-production, method <NUM> may include specification and design <NUM> of the aircraft <NUM> and material procurement <NUM>. During production, component and subassembly manufacturing <NUM> and system integration <NUM> of the aircraft <NUM> takes place. Thereafter, the aircraft <NUM> may go through certification and delivery <NUM> in order to be placed in service <NUM>. While in service by a customer, the aircraft <NUM> is scheduled for routine work in maintenance and service <NUM> (which may also include modification, reconfiguration, refurbishment, and so on). Apparatus and methods embodied herein may be employed during any one or more suitable stages of the production and service described in method <NUM> (e.g., specification and design <NUM>, material procurement <NUM>, component and subassembly manufacturing <NUM>, system integration <NUM>, certification and delivery <NUM>, service <NUM>, maintenance and service <NUM>) and/or any suitable component of aircraft <NUM> (e.g., airframe <NUM>, systems <NUM>, interior <NUM>, propulsion system <NUM>, electrical system <NUM>, hydraulic system <NUM>, environmental <NUM>).

As shown in <FIG>, the aircraft <NUM> produced by method <NUM> may include an airframe <NUM> with a plurality of systems <NUM> and an interior <NUM>. Examples of systems <NUM> include one or more of a propulsion system <NUM>, an electrical system <NUM>, a hydraulic system <NUM>, and an environmental system <NUM>. Any number of other systems may be included. Although an aerospace example is shown, the principles of the invention may be applied to other industries, such as the automotive industry.

As already mentioned above, apparatus and methods embodied herein may be employed during any one or more of the stages of the production and service described in method <NUM>. For example, components or subassemblies corresponding to component and subassembly manufacturing <NUM> may be fabricated or manufactured in a manner similar to components or subassemblies produced while the aircraft <NUM> is in service. Also, one or more apparatus embodiments, method embodiments, or a combination thereof may be utilized during the subassembly manufacturing <NUM> and system integration <NUM>, for example, by substantially expediting assembly of or reducing the cost of an aircraft <NUM>. Similarly, one or more of apparatus embodiments, method embodiments, or a combination thereof may be utilized while the aircraft <NUM> is in service, for example and without limitation during the maintenance and service <NUM>. For example, the techniques and systems described herein may be used for material procurement <NUM>, component and subassembly manufacturing <NUM>, system integration <NUM>, service <NUM>, and/or maintenance and service <NUM>, and/or may be used for airframe <NUM> and/or interior <NUM>. These techniques and systems may even be utilized for systems <NUM>, including, for example, propulsion system <NUM>, electrical system <NUM>, hydraulic <NUM>, and/or environmental system <NUM>.

Claim 1:
A method for coordinating operations of robots performing work on a part, the method comprising:
- subdividing, by a controller (<NUM>), the part into regions (<NUM>-<NUM>);
- subdividing each region into multiple sections;
- generating a schedule indicating where and when a group of robots will perform work on the part, wherein the schedule including paths for robots that avoid collisions when timed with other robots and the movement of the group of robots is coordinated along the sections in a manner that prevents the robots from operating at the same time in sections that are directly adjacent;
- assigning (<NUM>), by the controller (<NUM>), the group of robots to the part, wherein each robot in the group is assigned to a different region of the part;
- initiating (<NUM>), by the controller (<NUM>), work on the part via the group of robots (<NUM>) in accordance with the schedule;
- determining (<NUM>), by the controller (<NUM>) that a malfunctioning robot within the group is unable to continue performing work at a first location of the part in accordance with the schedule;
- removing (<NUM>) the malfunctioning robot from the group while other robots of the group continue performing the work in accordance with the schedule:
- adding (<NUM>) a functioning robot to the group at a second location of the part that the malfunctioning robot would occupy if the malfunctioning robot had been able to continue working on the part;
- continuing (<NUM>) work on the part via the group of robots in accordance with the schedule.