This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2012-233181, filed on Oct. 22, 2012, the entire contents of which are incorporated herein by reference.
The embodiment discussed herein is directed to a robot controller and a robot system.
There are conventionally known robot controllers, each of which is connected to a plurality of robots in a mutually communicable manner and individually controls operations of each of the robots (refer, for example, to Japanese Patent Application Laid-open No. H3-182908).
Such a robot controller has, for example, first-in first-out buffers, each assigned to each of the robots, and can operate the robots in parallel by sequentially reading instructions directed to each of the robots stored in each of the buffers and by executing the instructions.
The robot controller can include, as controlled objects thereof, peripheral devices or the like of the robots, in addition to the robots themselves. In such cases, the robot controller treats each of the robots and the peripheral devices thereof as one controlled unit (hereinafter mentioned as “controlled group”), and controls operations of each of such controlled groups.
However, conventional robot controllers and robot systems provided therewith have insufficient synchronization accuracy between controlled groups, and therefore, are yet to be further improved in making the controlled groups perform coordinated operations in synchronization with each other.
A robot controller according to an aspect of an embodiment includes queues, a storage unit, and an execution control unit. The queues are provided for respective controlled groups serving as controlled units each including at least one axis of movement involved in an operation of robots. The storage unit stores therein instructions directed to the respective controlled groups, one at a time, from a bottom end of each of the queues. When having accepted a predetermined operation request, the execution control unit simultaneously fetches the instructions directed to the controlled groups, one for each of the controlled groups at a time, from tops of the queues, and makes all of the controlled groups simultaneously start the operations based on such instructions. If there is any controlled group to which no corresponding instruction exists at the time of storing the instructions, the storage unit stores therein a no-operation instruction as an instruction directed to the controlled group. If the fetched instruction is the no-operation instruction, the execution control unit keeps the controlled group corresponding to the no-operation instruction from operating until an instruction is fetched next time.
A more complete appreciation of the invention and many of the attendant advantages thereof will be readily obtained as the same becomes better understood by reference to the following detailed description when considered in connection with the accompanying drawings, wherein:
An embodiment of a robot controller and a robot system disclosed herein will be described below in detail with reference to the accompanying drawings. Note that the embodiment is not limited to the embodiment illustrated below.
In the description below, each of a plurality of components of the same type is assigned with a symbol attached with a suffix in the form of a hyphen followed by a number. However, when the components are explained as a whole, they may be, in some cases, explained by using only the symbol without using such a suffix in the form of a hyphen followed by a number.
First, an example of an overall configuration of a robot system 1 will be described using
As illustrated in
In
The host computer H generates instructions directed to the controlled groups #1 and #2, and sends the instructions to the robot controller 10.
For example, the host computer H may be composed of a personal computer (PC), and may generate the instructions directed to the controlled groups #1 and #2 based on a description in C language. Alternatively, for example, the host computer H may be composed of a programmable logic controller (PLC), and may generate the instructions directed to the controlled groups #1 and #2 based on a description in a ladder language.
The controlled groups #1 and #2 are controlled units each having at least one axis of movement. In
The robot controller 10 receives the instructions sent out from the host computer H to the controlled groups #1 and #2, and stores each of the instructions in a predetermined storage area provided in advance for each of the controlled groups. Note that each of the instructions may be attached with information for identifying to which of the controlled groups the instruction is directed, and may be stored in a common storage area. When sending out the instructions, the host computer H sends out a “no-operation instruction” to a controlled group to which no instruction to be executed is to be issued. Hereinafter, such a “no-operation instruction” may be mentioned as “NOP”. The robot controller 10 also sequentially fetches the stored instructions, and performs execution control so that the controlled groups #1 and #2 perform coordinated operations while being accurately synchronized.
Next, a configuration of the robot controller 10 will be described using
Also, in the description using
As illustrated in
The communication interface 10a is a communication device for the robot controller 10 to communicate with the host computer H. The common AP interface 10b is a software-implemented component for interpreting the instructions received from the host computer H via the communication interface 10a on a common platform.
When having received an instruction from the host computer H via the common AP interface 10b, the storage unit 10c holds the instruction until accepting an “issue” request for the instruction. Then, upon accepting the “issue” request, the storage unit 10c stores the instruction in the buffer 10d. The storage unit 10c may be notified of the issue request, for example, by turning on of an issue request flag separately provided in a temporary storage unit or the like.
Note that, for ease of explanation below, such storage of the instruction into the buffer 10d is assumed to be executed simultaneously for all of the controlled groups (here, #1 and #2). However, the time of storing the instruction may slightly differ between the controlled groups within the range of not affecting the coordinated operations. The storage unit 10c also stores therein, without any change, the “NOP” sent out from the host computer H to the controlled group that is not given a corresponding instruction stored at such storage time.
The buffer 10d is a storage area that temporarily stores therein, as the temporary storage unit, the instructions directed to the controlled groups #1 and #2. A data structure and so forth of the buffer 10d will be described in detail using
When having accepted a predetermined operation request, the execution control unit 10e simultaneously fetches the instructions to the controlled groups #1 and #2 stored in the buffer 10d, one for each of the controlled groups at a time, and, based on the fetched instructions, makes the controlled groups #1 and #2 perform coordinated operations in synchronization with each other. Such an operation of the execution control unit 10e will be described in detail using
Note that the predetermined operation request accepted by the execution control unit 10e may be given thereto, for example, by turning on an operation request flag separately provided in the temporary storage unit or the like. In this case, the execution control unit 10e sequentially fetches the instructions from the buffer 10d and makes the controlled groups #1 and #2 execute the instructions while the operation request flag is turned on.
The display control unit 10f displays contents of the buffer 10d on the display device 20. The contents of the buffer 10d displayed by the display control unit 10f will be described in detail by giving specific examples in
Next, details of a configuration of the buffer 10d will be described using
As illustrated in
In the present embodiment, as illustrated in
The above-described storage unit 10c simultaneously stores therein the instructions C to the controlled groups #1 and #2, one for each at a time, from the bottoms of the queues 10da-1 and 10da-2, respectively.
Here, as already described, the storage unit 10c stores therein the “NOP” as the instruction C to the controlled group that is not given the corresponding instruction C stored at such storage time. Accordingly, the instructions C (including the “NOP”) stored at the same storage time are obviously given the same execution order illustrated in
Then, the above-described execution control unit 10e simultaneously fetches the instructions C to the controlled groups #1 and #2, one for each at a time, from the tops of the queues 10da-1 and 10da-2, respectively. In other words, the execution control unit 10e simultaneously fetches the instructions C (including the “NOP”) that are stored at the same storage time and that are given the same execution order.
Then, the execution control unit 10e uses the instructions C that are simultaneously fetched and are given the same execution order to perform control (hereinafter mentioned as “execution control”) to make the controlled groups #1 and #2 perform coordinated operations in synchronization with each other. Such operations of the execution control unit 10e will be described using subsequent
Note also that the number “0” illustrated at the instruction C in
First, as illustrated in
In such a case, the instructions C1 and C2 are stored in the queues 10da-1 and 10da-2 in the state of being aligned in the execution order (1). Note that, as illustrated in
Here, the instructions C1 and C2 are assumed to be simultaneously fetched by the execution control unit 10e. The execution control unit 10e performs control so that all of the controlled groups simultaneously start the operations based on the simultaneously fetched instructions. The execution control unit 10e also performs control so that the controlled groups corresponding to the instructions having the same task number simultaneously stop the operations based on such instructions.
Specifically, as illustrated in
Also, as illustrated in
This means that both of the controlled groups operate in the same period of time even if one of them normally finishes the operation in a shorter time than the other. With this control, for example, in the case of intending to make two robots touch an object at exactly the same time, such as in the case in which the robot R1 and the robot R2 hold the object in a sandwiching manner from both side faces, an accurate coordinated operation can be performed.
Next,
As illustrated in
In such a case, the instructions C3 and C4 are stored in the queues 10da-1 and 10da-2 in the state of being aligned in the execution order (2). As illustrated in
Here, it is assumed that the instructions C3 and C4 are shifted to the tops of the queues 10da-1 and 10da-2, respectively, and are simultaneously fetched by the execution control unit 10e. If either of the fetched instructions is a “NOP”, the execution control unit 10e performs control to keep the controlled group corresponding to the “NOP” from operating until the next instruction is fetched.
Specifically, as illustrated in
In addition, as illustrated in
With this control, the controlled groups can wait for each other to perform the operations. Therefore, the controlled groups can be synchronized and can accurately perform coordinated operations.
Next,
As illustrated in
In such a case, the instructions C5 and C6 are stored in the queues 10da-1 and 10da-2 in the state of being aligned in the execution order (3). As illustrated in
Here, description will be made, using
First, as illustrated in
The instruction directed to the controlled group #2 is a “NOP” and thus cannot be “to be executed”. Therefore, the indication of “to be executed” directed to the controlled group #2 is further moved to the instruction C6 in the next execution order (3), as illustrated in
As illustrated in
Here, the queuing process will be described in detail using
For the controlled group #2, the indication of “to be executed” indicates the execution order (2). The instruction (C5) other than a “NOP” exists in the execution order (2) for the controlled group #1, and the indication of “to be executed” for the controlled group #1 indicates the execution order (1). Accordingly, the instruction C6 for the controlled group #2 is not executed until the instruction C5 for the controlled group #1 becomes “to be executed”, and thus, the execution control unit 10e waits until the instruction C5 becomes “to be executed”. The flow chart of
Specifically, as illustrated in
Then, the controlled group #i is compared with another controlled group #j than the controlled group #i in a loop process on (j) (Step S103). In the loop process on (j), it is first determined whether j is equal to i (Step S104), and, if equal (Yes at Step S104), the controlled group #j is excluded as the controlled group #i. Specifically, the value of j is incremented by 1, and the process returns to a loop start of the loop process on (j).
If j is not equal to i (No at Step S104), it is determined whether the instruction of instNoi for the controlled group #j is a “NOP” (Step S105). If the instruction of “instNoi” for the controlled group #j is a “NOP” (Yes at Step S105), the condition for waiting cannot be met; therefore, the value of j is incremented by 1, and the process returns to a loop start of the loop process on (j).
Alternatively, if the instruction of “instNoi” for the controlled group #j is not a “NOP” (No at Step S105), a number “instNoj” of the execution order of an instruction indicated by the indication of “to be executed” for the controlled group #j is obtained (Step S106).
Then, the number “instNoj” is compared with the number “instNoi”, and thus, it is determined whether the execution order of the controlled group #j is more advanced than that of the controlled group #i (Step S107).
If the determination condition of Step S107 is satisfied for all of the controlled groups #j (Yes at Step S107), the controlled group #i starts to be executed (Step S108).
Alternatively, if any one of the controlled groups #j does not satisfy the determination condition of Step S107 (No at Step S107), that is, if an instruction exists for the controlled group #j and the execution order thereof is earlier than that of the controlled group #i, an action of waiting for an instruction is performed for the controlled group #i.
Now, return to the explanation of
Then, as illustrated in
At this time, the execution control unit 10e does not perform control to stop operations based on the instructions having mutually different task numbers at the same time among the controlled groups corresponding to such instructions.
Specifically, as illustrated in
This means that, if one of the operations is finished in a shorter time than the other, one of the operations is independently stopped without spending the same time for both of the operations. With this control, the controlled groups can be operated in parallel without giving an unnecessary load to the system in situations in which operations need not be synchronized between the controlled groups, such as in the case in which the robot R1 and the robot R2 perform different operations from each other without a risk of interfering with each other.
Return to the explanation of
Thus, the robot controller 10 according to the present embodiment can make the controlled groups perform the coordinated operations in accurate synchronization with each other by combining the execution control operations performed by the execution control unit 10e that have been described above using
A specific example of such a combination is illustrated in
Note that the specific example illustrated in
For example, as illustrated in
In a similar manner, assume that the controlled group #2 is intended to perform an operation in which a control point follows a path from a current position thereof via (a)′, (b)′, and (c)′ to (d)′.
Also, in a similar manner, assume that the controlled group #3 is intended to perform an operation in which a control point follows a path from a current position thereof to (d)″.
In addition, as indicated by outline arrows in
Here, a specific example of the operations is as follows. First, while the robot R1 (controlled group #1) operates from the current position thereof to (b), the robot R2 (controlled group #2) operates from the current position thereof to (b)′ independently from the robot R1. Thereafter, the robot R1 and the robot R2 hold both ends of the same object with the hands of both robots, and carry the object in a coordinated manner. Then, from halfway through the carrying, a robot R3 of the controlled group #3 applies processing to the object in synchronization with the movement of the object being carried.
In such a case, instructions only need to be stored in the queues 10da for the controlled groups #1 to #3 like the specific example illustrated in
Further, instructions having the same task number (here, “0”) between the controlled groups #1 and #2 only need to be stored in each of the execution orders (3) and (4) so that the execution control unit 10e performs control in a synchronous manner.
Furthermore, for the controlled group #3, a “NOP” as an instruction only needs to be stored in the execution orders (1) to (3) so as to prevent the controlled group #3 from performing waiting operation with the controlled groups #1 and #2. In addition, an instruction having the same task number of “0” as those of the controlled groups #1 and #2 only needs to be stored in the execution order (4).
Although
As illustrated in
Because a “NOP” is stored in each of the execution orders (1) and (2) for the controlled group #3 in
In this manner, according to the present embodiment, in order to determine which controlled groups are to be synchronized with each other, it is only necessary to check whether the instructions in the same execution order in the queues 10da have the same task number. In other words, it is not necessary to make a search for task numbers of instructions stored in each of the queues 10da from the top of the queue 10da, but it is sufficient to compare task numbers between instructions having the same execution order. Therefore, even if the number of the controlled groups is increased, the synchronous control can easily be performed without complicating the processing.
Next, description will be made, using
As illustrated in
The contents of the buffer 10d changing with time may also be displayed, for example, instead of as a still image, as a moving image such as an animation format image.
Alternatively, as illustrated in
As a result, visibility can be improved for viewing current instruction execution states of the controlled groups and operations yet to be executed by them. Specifically, it is possible to find potential problems underlying in the robot system 1 at an early time and to debug the program. Thus, it is possible to improve reliability of the program and to perform more accurate synchronization and coordinated control.
As has been described above, the robot controller according to the embodiment is provided with the queues, the storage unit, and the execution control unit. Each of the queues is provided for each of the controlled groups serving as controlled units each including at least one axis of movement involved in the operation of the robot. The storage unit simultaneously stores therein the instructions directed to the controlled groups, one for each at a time, from the bottom ends of the queues therefor. When having accepted the predetermined operation request, the execution control unit simultaneously fetches the instructions directed to the controlled groups, one for each of the controlled groups at a time, from the tops of the queues therefor, and, makes all of the controlled groups simultaneously start the operations based on the instructions.
If there is any of the controlled groups to which no corresponding instruction exists at the time of storing the instructions, the storage unit stores therein a no-operation instruction as an instruction directed to such a controlled group. If the fetched instruction is the no-operation instruction, the execution control unit keeps the controlled group corresponding to the no-operation instruction from operating until an instruction is fetched next time. Therefore, with the robot controller according to the embodiment, the controlled groups can perform the coordinated operations in accurate synchronization with each other.
The above-described embodiment has illustrated, as an example, the case in which the robots included in the controlled groups are of the same type (all single-arm type), for example, as illustrated in
The above-described embodiment has also illustrated, as an example, the robot system having one host computer. However, the robot system may be configured, as a modification, to be provided with a plurality of host computers. Here, constitutional examples of such a case are illustrated in
As illustrated in
The host computers H-1 and H-2 generate instructions directed to the controlled groups #1 and #2, and send out the instructions to the robot controller 10A. At this time, the host computers H-1 and H-2 can send out instructions to either of the controlled groups #1 and #2. In other words, the relationships between the host computers and the controlled groups are not limited to one-to-one relationships.
The host computers H-1 and H-2 can be configured on different platforms from each other. For example, the host computer H-1 may be composed of a PC, and the host computer H-2 may be composed of a PLC.
As illustrated in
The above-described embodiment has also illustrated the example in which the queues are aligned vertically and horizontally in a two-dimensional array-like manner, for example, as illustrated in
The above-described embodiment has further illustrated, as an example, the case in which the number of elements of each the queues is four, for example, as illustrated in
Additional advantages and modifications will readily occur to those skilled in the art. Therefore, the invention in its broader aspects is not limited to the specific details and representative embodiments shown and described herein. Accordingly, various modifications may be made without departing from the spirit or scope of the general inventive concept as defined by the appended claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
2012-233181 | Oct 2012 | JP | national |
Number | Name | Date | Kind |
---|---|---|---|
5204942 | Otera et al. | Apr 1993 | A |
5429682 | Harlow et al. | Jul 1995 | A |
5519814 | Rodriguez et al. | May 1996 | A |
5645884 | Harlow et al. | Jul 1997 | A |
7525274 | Kazi et al. | Apr 2009 | B2 |
7558646 | Matsumoto et al. | Jul 2009 | B2 |
7860609 | Yanagita et al. | Dec 2010 | B2 |
8315736 | Kalbavi et al. | Nov 2012 | B2 |
20060287769 | Yanagita et al. | Dec 2006 | A1 |
20090271034 | Kalbavi et al. | Oct 2009 | A1 |
20140142754 | Dai et al. | May 2014 | A1 |
Number | Date | Country |
---|---|---|
03-182908 | Aug 1991 | JP |
2011-233071 | Nov 2011 | JP |
2012-183640 | Sep 2012 | JP |
Entry |
---|
Japanese Office Action for corresponding JP Application No. 2012-233181, Jan. 21, 2014. |
Number | Date | Country | |
---|---|---|---|
20140114476 A1 | Apr 2014 | US |