Patent Description:
As a conventional technique of a control system for avoiding collision between robots, there is a technique described in Patent Document <NUM>: Japanese Translation of PCT International Application Publication No.<CIT>. According to the technique, by executing a region declaration of a hybrid interference region, a booking for access, presence or the like once before an operation program requiring interlocking, programming that does not consider interlocking (locking/unlocking before and after the operation program) becomes possible. Accordingly, even if (during teaching) control is not performed in real time, interlocking is appropriately and automatically performed, and inconsistency of the entire system does not occur.

Attention is drawn to <CIT> disclosing a robotic system which implements a collision avoidance scheme. The robotic system includes a first robotic manipulator, a first controller configured to control the first robotic manipulator for movement along a first pre-planned actual path, and a second controller configured to control movement of a second robotic manipulator for movement along a second pre-planned intended path and deviating therefrom to move in a dodging path away from the first pre-planned actual path based upon determining a potential collision with the first robotic manipulator without prior knowledge of the first pre-planned actual path.

However, in the conventional technique as described above, it is necessary to create a program for region declaration. The program for region declaration is a robot-specific program determined for each robot according to various conditions such as equipment around an installation position or a positional relationship with any other robot. Hence, the program is created for each robot by a user who uses the robot, which is a burden on the user.

One aspect of the present invention aims to realize a control system in which burden on a user who creates a user program that instructs a robot to perform a motion is reduced by the robot itself avoiding collision with any other robot.

In order to solve the above problems, the invention provides a control system as defined by claim <NUM>. Further embodiments are defined in the dependent claims thereof. The following disclosure serves a better understanding of the invention, and the following aspects are present for illustration purposes. According to one aspect of the disclosure, the control system is a control system in which multiple robots with multiple joints are connected to a same network. The multiple robots include a first robot and a second robot. The second robot includes: a communication control unit, acquiring, via the network, control data to which trajectory identification information for specifying a trajectory from a current position to a target position of a movable part of the first robot and target position information indicating a target position of a movable part of the second robot are added; a determination unit, determining whether the first robot and the second robot collide based on the trajectory of the movable part of the first robot and a trajectory from a current position to the target position of the movable part of the second robot that is specified from a target position of the second robot; and a trajectory calculation unit, correcting the trajectory of the movable part of the second robot so as to avoid the trajectory of the movable part of the first robot in the event of collision between the first robot and the second robot.

In order to solve the above problems, the invention further provides a control method as defined by claim <NUM>. According to one aspect of the disclosure, the control method is a control method of a control system in which multiple robots are connected to a same network. The multiple robots include a first robot and a second robot. In the second robot, the following steps are performed. Control data to which trajectory identification information for specifying a trajectory from a current position to a target position of a movable part of the first robot and target position information indicating a target position of a movable part of the second robot are added is acquired via the network. In a determination step, whether the first robot and the second robot collide is determined based on the trajectory of the movable part of the first robot and a trajectory from a current position to the target position of the movable part of the second robot that is specified from a target position of the second robot. In a trajectory calculation step, the trajectory of the movable part of the second robot is corrected so as to avoid the trajectory of the movable part of the first robot in the event of collision between the first robot and the second robot.

The control system according to each aspect of the disclosure may be realized by a computer. In this case, a control program that realizes the control system on a computer by operating the computer as each part (software element) provided in the control system, and a computer-readable recording medium storing the control program also fall in the scope of the present invention.

According to one aspect of the disclosure, a control system can be obtained in which burden on the user who creates the user program is reduced.

An embodiment (hereinafter also written as "the present embodiment") according to one aspect of the disclosure is hereinafter described. The same or equivalent portions in the drawings are denoted by the same reference numerals, and descriptions thereof will not be repeated.

A control system according to the present embodiment includes a control device controlling an object device such as a machine or apparatus, and an object to be controlled such as a machine or apparatus connected to the control device. The object to be controlled includes multiple robots with multiple joints.

<FIG> is a schematic diagram showing a configuration of main parts of a control system <NUM> according to one embodiment. The control system <NUM> includes a control device <NUM> and multiple robots <NUM> connected via a field network (same network). In the control system <NUM>, the robots <NUM> may also be connected to another device <NUM> (for example, a servo or the like) other than the robots <NUM> via the field network. The robots <NUM> at least include a first robot <NUM> and a second robot <NUM>, and may further include any other robot. As an example, in the control system <NUM>, the control device <NUM>, the first robot <NUM>, the second robot <NUM>, and the another device <NUM> are connected in series via a LAN cable <NUM>.

The field network transmits various data exchanged between the control device <NUM>, the robots <NUM> and the another device <NUM>. Illustrated is a configuration in which EtherCAT® being an industrial Ethernet® is adopted as the field network. However, the present invention is not limited thereto, and a network in which various data are transmitted and received in a fixed cycle can be used. For example, an industrial Ethernet® such as PROFINET®, MECHATROLINK®-III, Powerlink, SERCOS®-III, and CIP Motion can be used as the field network.

The second robot <NUM> receives information about a current position and a target position of the first robot <NUM> and information about a target position of the second robot <NUM> via the field network. The second robot <NUM> knows its own current position. The second robot <NUM> calculates a trajectory of the first robot <NUM> from the current position and the target position of the first robot <NUM>, and calculates a trajectory of the second robot <NUM> from the current position and the target position of the second robot <NUM>. The second robot <NUM> determines, from the trajectory of the first robot <NUM> and the trajectory of the second robot <NUM>, whether the first robot <NUM> and the second robot <NUM> collide. In the event of collision, the second robot <NUM> corrects its own trajectory in order to avoid collision.

Trajectory calculation, collision determination, and trajectory correction for avoidance purposes for each robot are not performed by the control device <NUM> being a master device that indicates the target position, but by the second robot <NUM> itself being a slave device. Accordingly, calculation load can be distributed. In addition, an appropriate trajectory can be more quickly determined. Therefore, a perimeter range (range in which entry of any other robot is prevented) in consideration of operation error can be reduced. As a result, multiple robots can be disposed at reduced intervals, and a production line can be reduced in size. In addition, a user is able to create a user program that operates a robot without considering interference between the second robot and the first robot.

As shown in <FIG>, the control device <NUM> is a programmable logical controller (PLC) controlling an object to be controlled such as a machine and an apparatus, and controls the robots <NUM> and the another device <NUM>. A command value is transmitted from the control device <NUM> to the robots <NUM> via the field network, and each robot <NUM> operates based on the received command value. The command value is also transmitted to the another device <NUM> via the field network, and the another device <NUM> also operates based on the received command value. In transmission of control data via the field network, the control device <NUM> independently manages transmission of the control data.

In the present embodiment, it is assumed that, for each of the robots <NUM>, a priority in avoiding collision with a movable part of any other robot <NUM> is set. Here, as an example, it is assumed that the robot <NUM> on a downstream side (the side far from the control device <NUM>) has a lower priority than the robot <NUM> on an upstream side (the side close to the control device <NUM>) in the field network. That is, the priority of the trajectory of the second robot <NUM> is lower than the priority of the trajectory of the first robot <NUM>, and the second robot <NUM> avoids collision with the first robot <NUM>. Accordingly, a collision between the robots <NUM> when the robots <NUM> both take an avoidance action in the same direction can be prevented. That is, a collision between the robots <NUM> can be more reliably avoided.

The robot <NUM> (here, the first robot <NUM>) to be avoided may be referred to as the robot <NUM> on the master side, and the robot (here, the second robot <NUM>) taking the avoidance action may be referred to as the robot <NUM> on the slave side.

<FIG> is a diagram showing a configuration of a packet of control data <NUM> of one frame transmitted from the control device <NUM> to the robots <NUM> and the another device <NUM>. In EtherCAT®, the robots <NUM> transmit and receive the control data <NUM> (which is a set of control data for each robot <NUM>) via the field network every predetermined cycle. In <FIG>, in the control data <NUM>, at the left end is control data (trajectory identification information) <NUM> for controlling the first robot <NUM>, and next to it is control data (trajectory identification information) <NUM> for controlling the second robot <NUM>. If any other robot is present, the control data for each robot is provided in order next to the control data <NUM>. The control data <NUM>, the control data <NUM>, and so on are contained corresponding to the number of the robots <NUM> connected to the field network and controlled by the control device <NUM>. In <FIG>, in the control data <NUM>, control data <NUM> for the another device <NUM> is provided at the right end.

The control data for each robot includes IN data (input data) and OUT data (output data). That is, the control data <NUM> includes IN data 61a and OUT data 61b, the control data <NUM> includes IN data 62a and OUT data 62b,. , and the control data <NUM> includes IN data 70a and OUT data 70b.

The IN data is information to be transmitted from the control device <NUM> to the robot <NUM> or the another device <NUM>. A command value for operating each robot <NUM> is added to each IN data by the control device <NUM>. Specifically, by the control device <NUM>, in the control data <NUM>, a command value for operating the first robot <NUM> is added to the IN data 61a of the control data <NUM>, a command value for operating the second robot <NUM> is added to the IN data 62a of the control data <NUM>,. , and a command value for operating the another device <NUM> is added to the IN data 70a of the control data <NUM>.

The command value is data determining a movement of the robot <NUM>, and is, for example, information (target position information) indicating a target position (XYZ coordinates) in which the robot <NUM> moves in the present embodiment. The robot <NUM> calculates a trajectory according to the target position, and operates a movable part according to the calculated trajectory.

The OUT data is information to be transmitted from the robot <NUM> or the another device <NUM> to the control device <NUM>. By each robot <NUM>, information indicating a local device's state is added to each OUT data. Specifically, in the control data <NUM>, information indicating a state of the first robot <NUM> is added to the OUT data 61b of the control data <NUM> by the first robot <NUM>, information indicating a state of the second robot <NUM> is added to the OUT data 62b of the control data <NUM> by the second robot <NUM>,. , and information indicating a state of the another device <NUM> is added to the OUT data 70b of the control data <NUM> by the another device <NUM>.

The information indicating a local device's state is, for example, information indicating the current position (XYZ coordinates) of the movable part (for example, a manipulator) of each robot <NUM>. The current position of each robot <NUM> may be the actual current position of each robot <NUM>. Or, a planned position where each robot <NUM> is operating after a predetermined period (during a next frame) may be regarded as the current position.

In the control data <NUM>, the control data <NUM> contains the trajectory identification information for specifying a trajectory from the current position to the target position of the movable part of the first robot <NUM>. The control data <NUM> contains the trajectory identification information for specifying a trajectory from the current position to the target position of the movable part of the second robot <NUM>.

Each robot <NUM> fetches, in the control data <NUM>, at least the control data of a region allocated for the robot <NUM>. For example, the robot <NUM> (first robot <NUM>) on the master side fetches the IN data 61a of the control data <NUM> allocated for the robot <NUM> on the master side. Further, in the present embodiment, as described later, the robot <NUM> (second robot <NUM>) on the slave side fetches, in the control data <NUM>, not only the IN data 62a of the control data <NUM> allocated for the robot <NUM> on the slave side, but also the control data <NUM> allocated for the robot <NUM> (first robot <NUM>) on the master side that is to be avoided, and also grasps the trajectory of the robot <NUM> (first robot <NUM>) on the master side.

A flow of the control data <NUM> in the control system <NUM> is described with reference to <FIG> and <FIG>. The control device <NUM> has an I/O port <NUM>. The I/O port <NUM> includes a transmitter (denoted by "Tx" in <FIG>) <NUM> and a receiver (denoted as "Rx" in <FIG>) <NUM>. The first robot <NUM> has I/O ports 50a and 50b. The I/O ports 50a and 50b each include the transmitter <NUM> and the receiver <NUM>. The second robot <NUM> also has the I/O ports 50a and 50b, and the another device <NUM> also has the I/O ports 50a and 50b. That is, the first robot <NUM>, the second robot <NUM>, and the another device <NUM> each include two I/O ports.

For example, the I/O port <NUM> in the control device <NUM> and the I/O port 50a of the first robot <NUM> are connected by the LAN cable <NUM>. The I/O port 50b of the first robot <NUM> and the I/O port 50a of the second robot <NUM> are connected by the LAN cable <NUM>. The I/O port 50b of the second robot <NUM> and the I/O port 50a of the another device <NUM> are connected by the LAN cable <NUM>. Here, the another device <NUM> is a device at a distal end of the field network.

The control device <NUM> adds information indicating the target position of each robot <NUM> to each IN data of the control data <NUM>, and collectively transmits the control data <NUM> from the transmitter <NUM> to the field network (output processing). The control data <NUM> transmitted from the control device <NUM> to the field network is transmitted to the receiver <NUM> of the I/O port 50a of the first robot <NUM> in the first place, and is transmitted from the transmitter <NUM> of the I/O port 50b provided in the first robot <NUM> to the receiver <NUM> in the I/O port 50a of the second robot <NUM> in the second place. At this time, the first robot <NUM> accesses the region (that is, the control data <NUM>) in the control data <NUM> received from the control device <NUM> that is allocated for the first robot <NUM>, fetches the IN data 61a, and adds information indicating its own current position to the OUT data 61b. The control data <NUM> in which the information indicating the current position is added to the OUT data 61b by the first robot <NUM> is transmitted to the second robot <NUM> in the second place.

Then, like the first robot <NUM>, the second robot <NUM> accesses the region (that is, the control data <NUM>) in the received control data <NUM> allocated for the second robot <NUM>, and fetches the IN data 62a. In addition, the second robot <NUM> also accesses the region (that is, the control data <NUM>) in the control data <NUM> allocated for the first robot <NUM>, and also fetches the IN data 61a and the OUT data 61b of the control data <NUM> allocated for the first robot <NUM>. Then, the second robot <NUM> adds information indicating its own current position to the OUT data 62b in the control data <NUM>. Similar processing is performed sequentially in each robot connected via the field network.

Here, in the another device <NUM> at the distal end, similarly, at the same time as when the IN data 70a is fetched, information indicating the current position of the another device <NUM> is added to the OUT data 70b. The control data <NUM> transmitted from the another device <NUM> at the distal end flows back through the field network, passes through the second robot <NUM> and the first robot <NUM> in this order, and returns to the control device <NUM>.

During a period until the control data <NUM> transmitted from the control device <NUM> finally moves around (reciprocates) through the field network and returns, among all the robots <NUM> connected via the field network, the robot <NUM> on the master side fetches the IN data in the control data allocated for the robot <NUM> on the master side and adds the information indicating its own current position to the OUT data. The robot <NUM> on the slave side fetches the IN data in the control data allocated for the robot <NUM> on the slave side, adds the information indicating its own current position to the OUT data, and fetches the control data allocated for the robot <NUM> closer to the master side than the robot <NUM> on the slave side.

In this way, in the control system <NUM>, the control data <NUM> is made to move around via the field network every predetermined period. The predetermined period is not particularly limited, and may be, for example, about <NUM> msec. A period (predetermined period) for which the control data <NUM> moves around through the field network once may be referred to as a frame.

The second robot <NUM> may be set to calculate not only the trajectory of the first robot <NUM> but also a trajectory of any other robot <NUM> among the robots <NUM> in addition to the first robot <NUM>, so as to take an action to avoid collision with the any other robot <NUM>. In this case, when the control data <NUM> returns from the another device <NUM> at the distal end, the second robot <NUM> may fetch the OUT data added by any other robot <NUM> closer to the slave side than the second robot <NUM>. Hence, the priorities in avoidance can be set regardless of a connection order (order of reception of the control data <NUM>) in a network.

<FIG> is diagram showing a schematic configuration of the robot <NUM> provided in the control system <NUM> according to one embodiment. In <FIG>, the second robot <NUM> is illustrated as an example of the robot provided in the control system <NUM>. However, the same description applies to any other robot <NUM>. The second robot <NUM> includes a robot body 32a, and a robot arm 32b being a movable part connected to the robot body 32a and having multiple joints.

When the second robot <NUM> acquires the control data <NUM> from the first robot <NUM> on the upstream side, the second robot <NUM> acquires, in the control data <NUM>, the target position added to the IN data 62a of the control data <NUM> allocated for the second robot <NUM>, and adds information indicating a current position of the robot arm 32b being the movable part to the OUT data 62b of the control data <NUM> allocated for the second robot <NUM>. Then, the second robot <NUM> transmits the control data <NUM> to the another device <NUM> on the downstream side. The second robot <NUM> calculates a trajectory from the current position of the robot arm 32b being the movable part to the acquired target position. Then, the second robot <NUM> moves the robot arm 32b being the movable part along the calculated trajectory. Accordingly, the current position of the robot arm 32b being the movable part is updated.

Here, the trajectory is a planned position (XYZ coordinates) of the robot arm 32b every predetermined time (every frame) from the current position to the target position. In other words, the trajectory is a set of regions where the robot arm 32b is expected to be present every predetermined time (every frame) during a movement of the robot arm 32b from the current position to the target position. The trajectory is a set of regions where the robot arm 32b is expected to be present in a four-dimensional space that combines time and space.

Here, when the second robot <NUM> and any other robot <NUM> are controlled in consideration of only the set of regions (that is, trajectory) where the robot arm 32b is expected to be present during the movement from the current position to the target position, the second robot <NUM> may collide with the any other robot <NUM> due to various errors. Hence, a predetermined perimeter range R is set in advance which is a wide region including the robot arm 32b and its surroundings, such as a tubular shape centered on the robot arm 32b. When the second robot <NUM> calculates the trajectory of the robot arm 32b, based on the trajectory and the perimeter range R, a perimeter range trajectory being a set of regions where the region every predetermined time is larger than the trajectory is calculated. As described later, based on the calculated perimeter range trajectory of the second robot <NUM> and a perimeter range trajectory of the first robot <NUM> on the master side, an avoidance action to avoid collision with the first robot <NUM> on the master side is taken. That is, when the first robot <NUM> on the master side is present within the perimeter range trajectory, the second robot <NUM> determines that the second robot <NUM> itself should avoid the first robot <NUM>.

In addition, the current position may be the actual current position (the position of the robot arm 32b when the control data <NUM> is acquired) of the robot arm 32b being the movable part of the second robot <NUM>, or may be the planned position of the robot arm 32b during the next frame.

<FIG> is diagram showing functional blocks of the first robot <NUM>. In the present embodiment, the first robot <NUM> is the robot <NUM> to be avoided with which the second robot <NUM> is to avoid collision. That is, the first robot <NUM> is an example of the robot <NUM> on the master side that has a higher priority in collision avoidance than the second robot <NUM>.

The first robot <NUM> includes a robot body 31a and a robot arm (movable part) 31b. The robot body 31a includes a communication control unit <NUM> and a first control unit <NUM> in addition to the I/O ports 50a and 50b.

The communication control unit <NUM> controls communication of the first robot <NUM> via the I/O port 50a and the I/O port 50b. The communication control unit <NUM> receives the control data <NUM> from an external device via the receiver <NUM> of the I/O port 50a or the I/O port 50b. The communication control unit <NUM> fetches the IN data 61a in the control data <NUM> and outputs it to the first control unit <NUM>, and writes the information indicating the current position to the OUT data 61b of the control data <NUM>. The communication control unit <NUM> transmits the control data <NUM> to the external device by outputting the control data <NUM> to the transmitter <NUM> of the I/O port 50a or the I/O port 50b.

The first control unit <NUM> controls driving of the first robot <NUM>. The first control unit <NUM> may control a motion of the first robot <NUM> based on various information added to the control data <NUM>, or may generate various information to be added to the control data <NUM>. The first control unit <NUM> includes a trajectory calculation unit <NUM> and a motion control unit <NUM>. A flow of processing of the first control unit <NUM> is described with reference to <FIG>.

<FIG> is diagram showing the flow of processing of the first control unit <NUM> of the first robot <NUM>. The trajectory calculation unit <NUM> acquires, in the control data <NUM>, a target position of the robot arm 31b (a movable part of a local device) that is added to the IN data 61a in the control data <NUM> allocated for the first robot <NUM> (step S1). Then, the trajectory calculation unit <NUM> calculates, from a current position of the robot arm 31b and the acquired target position, a trajectory of the robot arm 31b to the target position (step S2). Next, based on the trajectory calculated by the trajectory calculation unit <NUM>, the motion control unit <NUM> controls a motion of the robot arm 31b being the movable part of the first robot <NUM> (step S3). Then, from the trajectory calculated in step S2, the trajectory calculation unit <NUM> outputs, as the information indicating the current position, a planned position of the robot arm 31b during a next frame to the communication control unit <NUM> of the first robot <NUM> (step S4). When the communication control unit <NUM> receives the control data <NUM> in the next frame, the communication control unit <NUM> fetches the IN data 61a and outputs it to the first control unit <NUM>, and also writes the information indicating the current position to the OUT data 61b. The communication control unit <NUM> transmits the control data <NUM> to the second robot <NUM> on the downstream side via the transmitter <NUM>.

<FIG> is diagram showing functional blocks of the second robot <NUM>. In the present embodiment, the second robot <NUM> is the robot <NUM> that takes an action to avoid collision with the first robot <NUM>. That is, the second robot <NUM> is an example of the robot <NUM> on the slave side that has a lower priority in collision avoidance than the first robot <NUM>.

The second robot <NUM> includes a robot body 32a and a robot arm (movable part) 32b. The robot body 32a includes the communication control unit <NUM> and a second control unit <NUM> in addition to the I/O ports 50a and 50b.

The communication control unit <NUM> controls communication of the second robot <NUM> via the I/O port 50a and the I/O port 50b. The communication control unit <NUM> receives the control data <NUM> from an external device via the receiver <NUM> of the I/O port 50a or the I/O port 50b. The communication control unit <NUM> fetches the IN data 62a, the IN data 61a, and the OUT data 61b in the control data <NUM> and outputs them to the second control unit <NUM>, and writes the information indicating the current position to the OUT data 62b of the control data <NUM>. The communication control unit <NUM> transmits the control data <NUM> to the external device by outputting the control data <NUM> to the transmitter <NUM> of the I/O port 50a or the I/O port 50b.

The second control unit <NUM> controls driving of the second robot <NUM>. The second control unit <NUM> may control a motion of the second robot <NUM> based on various information added to the control data <NUM>, or may generate various information to be added to the control data <NUM>. The second control unit <NUM> includes a trajectory calculation unit <NUM>, a perimeter range trajectory calculation unit <NUM>, the determination unit <NUM>, and the motion control unit <NUM>. A flow of processing of the second control unit <NUM> is described with reference to <FIG> and <FIG>.

<FIG> is diagram showing the flow of processing of the second control unit <NUM> of the second robot <NUM>. The trajectory calculation unit <NUM> acquires, in the control data <NUM>, a target position of the robot arm 32b (a movable part of a local device) that is added to the IN data 62a in the control data <NUM> allocated for the second robot <NUM>. In addition, the trajectory calculation unit <NUM> acquires, in the control data <NUM>, the target position of the robot arm 31b (a movable part of a robot to be avoided) added to the IN data 61a and the current position of the robot arm 31b added to the OUT data 61b in the control data <NUM> allocated for the first robot <NUM> to be avoided (step S21).

Next, the trajectory calculation unit <NUM> calculates, from the current position of the robot arm 32b (the movable part of the local device) and the acquired target position of the robot arm 32b, a trajectory of the robot arm 32b to the target position (step S22). Further, the trajectory calculation unit <NUM> also calculates, from the current position of the robot arm 31b and the target position of the robot arm 31b, the trajectory of the robot arm 31b to the target position (step S23).

Then, the perimeter range trajectory calculation unit <NUM> calculates, from the trajectory of the robot arm 32b calculated by the trajectory calculation unit <NUM> in step S22 and the perimeter range R of the robot arm 32b stored in advance in the perimeter range trajectory calculation unit <NUM> or any other storage unit, a perimeter range trajectory of the robot arm 32b to the target position (step S24). Further, the perimeter range trajectory calculation unit <NUM> calculates, from the trajectory of the robot arm 31b (the movable part of the robot to be avoided) calculated by the trajectory calculation unit <NUM> in step S23 and the perimeter range R of the robot arm 31b stored in advance in the perimeter range trajectory calculation unit <NUM> or any other storage unit, a perimeter range trajectory of the robot arm 31b to the target position (step S25).

Next, the determination unit <NUM> determines whether the perimeter range trajectory (first perimeter range trajectory) of the robot arm 31b calculated by the perimeter range trajectory calculation unit <NUM> in step S25 is included in the perimeter range trajectory (second perimeter range trajectory) of the robot arm 32b calculated by the perimeter range trajectory calculation unit <NUM> in step S24 (step S26).

In step S26, if the determination unit <NUM> determines that the perimeter range trajectory of the robot arm 31b is included in the perimeter range trajectory of the robot arm 32b (YES in step S26), the trajectory calculation unit <NUM> recalculates (corrects) the trajectory from the current position to the target position of the robot arm 32b so as to avoid the perimeter range trajectory of the robot arm 31b (step S27). For example, the trajectory calculation unit <NUM> corrects the trajectory of the robot arm 32b in a direction away from the perimeter range trajectory of the robot arm 31b. Then, the perimeter range trajectory calculation unit <NUM> recalculates, from the trajectory of the robot arm 32b recalculated by the trajectory calculation unit <NUM> in step S27 and the perimeter range R of the robot arm 32b stored in advance in the perimeter range trajectory calculation unit <NUM> or any other storage unit, the perimeter range trajectory of the robot arm 32b to the target position (step S28). Then, the process returns to step S26.

In step S26, if the determination unit <NUM> determines that the perimeter range trajectory of the robot arm 31b is not included in the perimeter range trajectory of the robot arm 32b (NO in step S26), the motion control unit <NUM> controls a motion of the robot arm 32b being the movable part of the second robot <NUM> based on the trajectory calculated by the trajectory calculation unit <NUM> (step S29). Then, from the trajectory of the robot arm 32b, the trajectory calculation unit <NUM> outputs, as the information indicating the current position, the planned position of the robot arm 32b during the next frame to the communication control unit <NUM> of the second robot <NUM> (step S30). When the communication control unit <NUM> receives the control data <NUM> in the next frame, the communication control unit <NUM> fetches the IN data 62a, the IN data 61a, and the OUT data 61b and outputs them to the second control unit <NUM>, and also writes the information indicating the current position to the OUT data 62b. The communication control unit <NUM> transmits the control data <NUM> to any other robot <NUM> on the downstream side via the transmitter <NUM>.

In step S27, the trajectory calculation unit <NUM> recalculates the trajectory of the robot arm 32b so as to avoid the perimeter range trajectory of the robot arm 31b. As a method for recalculating the trajectory by the trajectory calculation unit <NUM>, a spatial path from the current position to the target position of the robot arm 32b may be changed so as to avoid the perimeter range trajectory of the robot arm 31b, or a moving speed of the robot arm 32b may be changed without changing the spatial path (that is, the planned position of the robot arm 32b every predetermined period may be changed).

In addition, instead of setting the priority for each of the robots <NUM> for causing any other robot <NUM> to take an avoidance action, each of the robots <NUM> may take an avoidance action against each other.

In this way, in the control system <NUM>, the second robot <NUM> on the slave side acquires, via the field network, the IN data 61a and the OUT data 61b in the control data <NUM> for specifying the trajectory from the current position to the target position of the robot arm 31b of the first robot <NUM> on the master side, as well as the IN data 62a to which the information indicating the target position of the robot arm 32b of the second robot <NUM> is added.

In the second robot <NUM>, the determination unit <NUM> determines whether the first robot <NUM> and the second robot <NUM> collide based on the trajectory of the robot arm 31b of the first robot <NUM> and the trajectory from the current position to the target position of the robot arm 32b that is specified from the target position of the second robot <NUM> (S26). In the event of collision between the first robot <NUM> and the second robot <NUM>, the trajectory calculation unit <NUM> recalculates the trajectory of the robot arm 32b of the second robot <NUM> so as to avoid the first robot <NUM> (step S27).

In this way, the second robot <NUM> itself calculates the trajectory so as not to collide with the first robot <NUM>. Hence, the user is able to create a user program that operates a robot without considering interference. As a result, the control system <NUM> can be realized in which burden on the user who creates a user program that instructs the robot <NUM> to perform a motion is reduced by the robot <NUM> itself avoiding collision with any other robot <NUM>.

In the second robot <NUM>, the trajectory calculation unit <NUM> calculates, as the trajectory, the planned position of the robot arm 32b of the second robot <NUM> every predetermined period from the current position of the robot arm 32b of the second robot <NUM> to the target position of the robot arm 32b of the second robot <NUM> (step S22). In this way, by calculating, as the trajectory, multiple planned positions from the current position to the target position of the robot arm 32b of the second robot <NUM> at the second robot <NUM> instead of at the control device <NUM> controlling the second robot <NUM>, the user can be saved the trouble of programming the trajectory of the robot arm 32b of the second robot <NUM> in advance.

Based on the trajectory of the robot arm 32b of the second robot <NUM>, the perimeter range trajectory calculation unit <NUM> of the second robot <NUM> calculates the perimeter range trajectory of the robot arm 32b of the second robot <NUM> (step S24); based on the trajectory of the robot arm 31b of the first robot <NUM>, the perimeter range trajectory calculation unit <NUM> of the second robot <NUM> calculates the perimeter range trajectory of the robot arm 31b of the first robot <NUM> (step S25). Then, specifically, by determining whether the perimeter range trajectory of the robot arm 31b of the first robot <NUM> is included in the perimeter range trajectory of the robot arm 32b of the second robot <NUM> (step S26), the determination unit <NUM> determines whether the first robot <NUM> and the second robot <NUM> collide.

Accordingly, since the perimeter range trajectory of the first robot <NUM> and the perimeter range trajectory of the second robot <NUM> are calculated at the second robot <NUM> instead of at the control device <NUM> controlling the second robot <NUM>, the trajectory of the second robot <NUM> that prevents collision between the two robots can be more quickly determined. Accordingly, a margin (perimeter range) secured so that the first robot <NUM> and the second robot <NUM> do not collide can be reduced. Therefore, the production line can be reduced in size. Compared to the case where the control device <NUM> calculates a load for calculating the perimeter range trajectory of each robot <NUM>, the load can be distributed.

If it is determined by the determination unit <NUM> that the first robot <NUM> and the second robot <NUM> collide (YES in step S26), the trajectory calculation unit <NUM> recalculates the trajectory of the robot arm 32b of the second robot <NUM> so as to avoid the first robot <NUM> (step S27). Then, the trajectory calculation unit <NUM> adds information (planned position information) indicating the planned position of the robot arm 32b of the second robot <NUM> in the recalculated trajectory during the next frame to the OUT data 62b in the control data <NUM>. Accordingly, another device can be notified of the current position of the robot arm 32b of the second robot <NUM>. Therefore, based on the current position and the target position of the robot arm 32b of the second robot <NUM>, the another device is able to take an avoidance action as appropriate so as not to collide with the robot arm 32b of the second robot <NUM>.

Control blocks (especially the trajectory calculation unit <NUM>, the perimeter range trajectory calculation unit <NUM>, the determination unit <NUM>, the motion control unit <NUM>, the communication control unit <NUM>, and the trajectory calculation unit <NUM>) of the first robot <NUM> and the second robot <NUM> may be realized by a logic circuit (hardware) formed in an integrated circuit (IC chip) or the like, or may be realized by software.

In the latter case, the second robot <NUM> includes a computer executing instructions of a program being software that realizes each function. This computer includes, for example, one or more processors, and includes a computer-readable recording medium storing the above program. In the computer, an object of the present invention is achieved by the processor reading the program from the recording medium and executing the program. As the processor, a central processing unit (CPU), for example, can be used. As the recording medium, a "non-transitory tangible medium," for example, in addition to a read only memory (ROM), a tape, a disk, a card, a semiconductor memory, a programmable logic circuit or the like, can be used. In addition, a random access memory (RAM) or the like for developing the program may further be included. In addition, the program may be supplied to the computer via an arbitrary transmission medium (such as a communication network or broadcast wave) capable of transmitting the program. One aspect of the present invention may also be implemented in the form of a data signal embedded in a carrier wave, the data signal being embodied by the program by electronic transmission.

In order to solve the above problems, a control system according to one aspect of the disclosure is a control system in which multiple robots with multiple joints are connected to a same network. The multiple robots include a first robot and a second robot. The second robot includes: a communication control unit, acquiring, via the network, control data to which trajectory identification information for specifying a trajectory from a current position to a target position of a movable part of the first robot and target position information indicating a target position of a movable part of the second robot are added; a determination unit, determining whether the first robot and the second robot collide based on the trajectory of the movable part of the first robot and a trajectory from a current position to the target position of the movable part of the second robot that is specified from a target position of the second robot; and a trajectory calculation unit, correcting the trajectory of the movable part of the second robot so as to avoid the trajectory of the movable part of the first robot in the event of collision between the first robot and the second robot.

According to the configuration, the second robot itself calculates the trajectory so as not to collide with the first robot. Hence, the user is able to create a user program that operates a robot without considering interference between the second robot and the first robot. As a result, a control system can be realized in which burden on the user who creates the user program that instructs a robot to perform a motion is reduced by the robot itself avoiding collision with any other robot.

The multiple robots receive the control data via the network every predetermined period.

The trajectory calculation unit further calculates a planned position of the movable part of the second robot every predetermined period from the current position of the movable part of the second robot to the target position of the movable part of the second robot.

As in the configuration, by calculating multiple planned positions from the current position to the target position of the second robot at the second robot instead of at the control device controlling the second robot, the user can be saved the trouble of programming the trajectory of the second robot in advance.

The second robot further includes a perimeter range trajectory calculation unit calculating a first perimeter range trajectory being a trajectory in a predetermined range including a perimeter of the movable part of the first robot based on the trajectory of the movable part of the first robot, and calculating a second perimeter range trajectory being a trajectory in a predetermined range including a perimeter of the movable part of the second robot based on the trajectory of the movable part of the second robot calculated by the trajectory calculation unit. The determination unit determines whether the first robot and the second robot collide by determining whether the first perimeter range trajectory is included in the second perimeter range trajectory.

According to the configuration, since an avoidance determination range of the first robot and an avoidance determination range of the second robot are calculated at the second robot instead of at the control device controlling the second robot, the trajectory of the second robot that prevents collision between the two robots can be more quickly determined. Accordingly, the avoidance determination range in which the first robot and the second robot may collide can be reduced. Therefore, the production line can be reduced in size. Compared to the case where the control device calculates a load for calculating the avoidance determination range of each robot, the load can be distributed.

In the event it is determined by the determination unit that the first robot and the second robot collide, the trajectory calculation unit corrects the trajectory of the movable part of the second robot so as to avoid the trajectory of the movable part of the first robot, and adds, to the control data, the planned position information indicating the planned position of the second robot in the corrected trajectory after the next predetermined period. The communication control unit outputs, to the network, the control data to which the planned position information is added.

For each of the multiple robots, a priority in avoiding collision with any other robot is set. The priority of the second robot is lower than the priority of the first robot, and the second robot avoids collision with the first robot.

According to the configuration, a collision between the robots when the robots take an avoidance action against each other can be prevented. That is, a collision between the robots can be more reliably avoided. The first robot with a high priority is able to be operated along a trajectory in which work can be more quickly performed.

The second robot calculates a trajectory of any other robot among the multiple robots in addition to the first robot, and avoids collision with the any other robot.

In order to solve the above problems, a control method according to one aspect of thedisclosure is a control method of a control system in which multiple robots are connected to a same network. The multiple robots include a first robot and a second robot. In the second robot, the following steps are performed. Control data to which trajectory identification information for specifying a trajectory from a current position to a target position of a movable part of the first robot and target position information indicating a target position of a movable part of the second robot are added is acquired via the network. In a determination step, whether the first robot and the second robot collide is determined based on the trajectory of the movable part of the first robot and a trajectory from a current position to the target position of the movable part of the second robot that is specified from a target position of the second robot. In a trajectory calculation step, the trajectory of the movable part of the second robot is corrected so as to avoid the trajectory of the movable part of the first robot in the event of collision between the first robot and the second robot.

Claim 1:
A control system (<NUM>) in which a control device (<NUM>) and a plurality of robots (<NUM>, <NUM>, <NUM>) with multiple joints are connected in series to a same network, wherein
the control device (<NUM>) is configured to add information indicating target positions of movable parts (31b, 32b) of the plurality of robots (<NUM>) to control data (<NUM>), and transmit the control data (<NUM>) to the network,
the plurality of robots (<NUM>, <NUM>, <NUM>) comprise a first robot (<NUM>) and a second robot (<NUM>), and
the second robot (<NUM>) comprises:
a communication control unit (<NUM>), configured to acquire, via the network, control data (<NUM>, <NUM>, <NUM>) to which trajectory identification information for specifying a trajectory from a current position to a target position of a movable part (31b) of the first robot (<NUM>) and target position information indicating a target position of a movable part (32b) of the second robot (<NUM>) are added;
a determination unit (<NUM>), configured to determine whether the first robot (<NUM>) and the second robot (<NUM>) collide based on the trajectory of the movable part (31b) of the first robot (<NUM>) and a trajectory from a current position to the target position of the movable part (32b) of the second robot (<NUM>) that is specified from a target position of the second robot (<NUM>); and
a trajectory calculation unit (<NUM>, <NUM>), configured to correct the trajectory of the movable part (32b) of the second robot (<NUM>) so as to avoid the trajectory of the movable part (31b) of the first robot (<NUM>) in the event of collision between the first robot (<NUM>) and the second robot (<NUM>).