Abstract:
Systems and methods for automatically organizing and achieving a pre-given task by means of plurality of robots, each robot having a robot specific set of functionalities, are described. In an example implementation, a method can include the following steps: providing and exposing, for each robot, a semantic description of the robot&#39;s robot specific functionalities by respective semantic web services; providing a semantic description of the pre-given task; matching the semantically described task with the semantic web services describing the robot specific functionalities; and combining automatically a coordinated set of the plurality of robots according to the matching result, such that the task is achieved when the robots are sequentially working upon invocation.

Description:
CROSS-REFERENCE TO RELATED APPLICATION  
       [0001]     This application claims priority under 35 U.S.C. § 119 to European Patent Application EP 05292602.9, filed Dec. 7, 2005, entitled “A METHOD AND A SYSTEM FOR AUTOMATICALLY ORGANIZING AND ACHIEVING A PRE-GIVEN TASK BY MEANS OF ROBOT FUNCTIONALITIES,” which is incorporated herein by reference in its entirety.  
       TECHNICAL FIELD  
       [0002]     This description relates to a method and a system for automatically organizing and achieving a pre-given task by means of robot functionalities, particularly by means of a plurality of robots, each robot having a robot specific set of functionalities.  
       BACKGROUND  
       [0003]     Currently, many robots exist that can fulfill tasks based on their available functionalities. Robots are taking on more importance in industries as technology evolves. The robot industry is progressively being adopted in companies in order to accomplish complex tasks, and robots are becoming more autonomous and complex in their functionalities. For example, robots can find their own way from one point to another, or pick up goods and transport them. However, one single robot is generally restricted to a certain set of functionalities, thus, reducing the scope of the task it can achieve. A robot specialized in moving heavy goods may not be equipped with a mechanical arm, preventing it from being able to pick up goods from a shelf. That means that robots still remain specialized and can only accomplish a defined set of tasks. Combining robots in order to achieve more complex tasks is sometimes done in automotive industries, for example, where assembly robots are sequentially followed by painting robots, in order to help building cars. Still, this robot assembly is achieved manually, and requires programmatic efforts. In order to achieve tasks that a single robot cannot accomplish alone there are no tools at the moment that allow for the automatic composition of functionalities of different robots. Thus, either a task is not fulfilled, or a new robot is built, or the composition of a plurality of robots is done manually by human beings. No solution exists yet that proposes to assemble robot functionalities automatically, apart for engineers that sit around a table and spend time designing and programming new applications in order to combine robots. Yet, this approach is not flexible, and it is restricted to the robots it has been designed for.  
         [0004]     In the meantime, research in the area of web service composition has progressed. Research prototypes are now able to compose services automatically in order to accomplish a desired task such as answering a certain request. Provided that a developer semantically describes the preconditions and the goal of a task, and provided that web services available are also semantically described, a computer can automatically set up a composite service that can fulfill the task. A so-called expert system can be based on such an automatic service composition.  
       SUMMARY  
       [0005]     Example implementations allow for intelligent robots assembly which allows for fulfilling a pre-given task by automatically combining robot functionalities and robots, respectively, based on their respective robot functionalities.  
         [0006]     Example implementations include a method for automatically organizing and achieving a pre-given task by means of a plurality of robots and a method for automatically organizing and achieving a pre-given task by means of a plurality of robot functionalities.  
         [0007]     For example, a method for automatically organizing and achieving a pre-given task by means of a plurality of robots can be provided, in which each robot has a robot specific set of functionalities. The method can include the steps of: providing and exposing, for each robot, a semantic description of the robot&#39;s robot specific functionalities by respective semantic web services; providing a semantic description of the pre-given task; matching the semantically described task with the semantic web services describing the robot specific functionalities; and combining automatically a coordinated set of the plurality of robots according to the matching result, such that the task is achieved when the robots are sequentially working upon invocation.  
         [0008]     According to an implementation, it is possible that the step of combining the set of robots further includes a step of deriving a workflow from the matching result and of generating the coordinated set of robots according to that workflow. Such a workflow can clearly reflect the working steps that must be sequentially performed in order to achieve the pre-given task. Thus, the workflow also can reflect the order according to which the different robots of the coordinated set of robots have to be employed.  
         [0009]     According to another implementation of this method, the step of combining the set of robots can further include a step of providing at least one coordination service that allows a handoff from one robot to another of the coordinated set of robots and of inserting that coordination service whenever such a handoff is to be performed so that the robots are enabled to work sequentially and seamlessly together upon invocation. It is possible that the at least one coordination service is specifically composed depending on the handoff to be performed.  
         [0010]     The robots within the coordinated set of robots can communicate with each other such that a coordinated cooperation among the robots of the coordinated set of robots can be realized. It is possible that the robots of the coordinated set of robots are connected via wireless connection and communication means.  
         [0011]     According to a further implementation of this method, the semantic web services describing the respective robot specific functionalities each can be accessible via a specific URL (Uniform Resource Locator).  
         [0012]     Furthermore, it is possible that the semantic web services describing the robot functionalities are each provided with an appropriate linkage, linking them to at least one of the corresponding robots of the plurality of robots, respectively. That means that a robot can be automatically invoked upon a web service call of the semantic web service linked to that robot describing its robot specific functionalities. By means of this method the idea of automatic web services composition can be adapted to the robotic world. With the help of this method it is possible to combine automatically robot specific functionalities of different robots in order to achieve tasks that a single robot could not have achieved by itself.  
         [0013]     This method can be applied to any type of robot for any type of tasks. For a better understanding, the method will be explained in the following by an example that is restricted to a set of two robots with a pre-given task. In the example, in a warehouse that possesses two robots with limited robot functionalities, the following task may need to be accomplished: picking up an asset on a specific shelf located at location X and bringing it to an exit E of the warehouse. Both robots are assumed to be connected by a wireless connection and communication system. For both robots, their respective robot specific functionalities can be semantically described and exposed by semantic web services. Each of those web services describing the respective robot specific functionalities can be accessible via a specific URL. The pre-given task relating to a handling of goods may be analyzed to derive therefrom a semantic description of the pre-given task. By means of the semantic description of the pre-given task it is possible to match the semantic description of the pre-given task with the semantic web-services describing the respective robot specific functionalities. The pre-given task can be semantically described by an appropriate succession of semantic web services. In the above-mentioned case, the following succession of semantic web services that can fulfill the pre-given task, can be described as follows: moving to a shelf located at a location, X; picking up the asset located on the shelf located at location X; and transporting the asset autonomously from the location X to an Exit, E.  
         [0014]     Although each of the mentioned semantic web services is bound to a corresponding robot, the cooperation of the robots can be achieved by combining the robots into a coordinated set of robots with respect to their robot specific functionalities. First, each of the above-mentioned semantic web services can be provided with an appropriate linkage, linking them to one of the corresponding robots, respectively. That means, that each service can include in a descriptor a description to which robot it belongs. Second, if a semantic web service follows a previous one, but if the two semantic web services both belong to a different robot or are assigned to a different robot, a further service, namely, an already-mentioned coordination service, can be added or inserted which makes both robots get in touch in order to pass one to the other the asset to be moved. The proposed coordination service can allow a robot to hand over the asset to a next robot. This can be achieved, for example, by combining a first service that moves robots next to each other with a second service that hands over the asset from one robot to the other. In the present example, it is possible that for this coordination service, each robot declares an attribute that is a so-called “PickUpZone,” that is a location where a robot can handle an asset. In the case of a robot with a robot arm, the so-called PickUpZone can be anywhere within the range of the mechanical robot arm. In the case of a robot without handling capabilities, the PickUpZone can correspond to a place the asset has to be dropped in order for that robot to be able to carry it.  
         [0015]     Generally, it is possible for the coordination service to be configured to allow a first robot of the coordinated set of robots to handover an asset to be transported to a second robot of the coordinated set of robots, with the second robot sequentially following the first robot within the coordinated set of robots.  
         [0016]     It is possible that the coordination service is a combination of a first service allowing robots to move next to each other and a second service allowing a handover of an asset from one robot to another robot.  
         [0017]     According to another implementation of this method, the robots can be automatically invoked by calling the semantic web services describing the respective robot specific functionalities. Pre-given tasks semantically described can be first matched with available semantic web services that in turn each describe robot specific functionalities of respective robots. The matching result can be exposed in the form of a succession of some of those semantic web services. Furthermore, it is possible that the semantic web services are each provided with a direct linkage, linking them to the corresponding robots, respectively. Therefore, in order to achieve the pre-given task, the semantic web services that match with the semantic description of the pre-given task can be sequentially called, and the calling can invoke automatically the respective robots linked to the called semantic web services. It is possible that the succession of semantic web services is called at once via one single service call. Thus, a combination of web services compositions and the robotic world can be provided.  
         [0018]     As described above services can be composed automatically to accomplish a desired task. Provided that a developer semantically describes the preconditions and the goal of the task, and provided that the web services available are also semantically described, a computer can automatically setup a composite service that can fulfill the task. With the techniques described herein such a service composition can be linked to a coordinated set of robots whose specific robot functionalities are semantically described by and linked to respective semantic web services. Thus, specific robot functionalities can be combined automatically to achieve a pre-given task that a single robot could not have achieved by itself.  
         [0019]     Implementations further relate to methods for automatically organizing and achieving a pre-given task by means of a plurality of robot functionalities. For example, a method can include the steps of: providing and exposing a semantic description of the robot specific functionalities by respective semantic web services; providing a semantic description of the pre-given task; matching the semantic described task with the semantic web services describing the robot specific functionalities; and combining hence automatically a coordinated set of the plurality of robot functionalities according to the matching result, such that the task is achieved when the robot functionalities are sequentially employed upon invocation.  
         [0020]     In some implementations, the plurality of robot functionalities can be incorporated within one single robot.  
         [0021]     Implementations also provide a system for automatically organizing and achieving a pre-given task by means of a number of robots. For example, a system can include the number of robots, where each robot has a robot specific set of functionalities, an access to a repository of semantic web services, at least one component configured to provide and expose for each robot a semantic description of its robot specific functionalities by respective semantic web services of that repository, at least one component configured to provide a semantic description of the pre-given task input via an input unit, matching logic to match the semantically described task with the semantic web services describing the robot specific functionalities, combining logic to automatically combine hence a coordinated set of robot functionalities of the number of robots according to a matching result provided by the matching logic, such that the task can be achieved when the robot functionalities are sequentially employed upon invocation and controlling means configured to control the number of robots.  
         [0022]     In one implementation, the system further includes a component configured to derive a workflow from a matching result, where robot functionalities are combined to a coordinated set of robot functionalities according to the workflow.  
         [0023]     The coordinated set of robot functionalities can be assigned to a coordinated set of robots. Thus, the task can be achieved when the robots of the coordinated set of robots are sequentially working upon invocation.  
         [0024]     In a further implementation, the system can include a coordinating component configured to provide at least one coordination service that allows a handoff from one robot to another robot of the coordinated set of robots and to insert that coordination service whenever such a handoff is to be performed so that the robots are enabled to work sequentially and seamlessly together upon invocation.  
         [0025]     It is possible that the system further comprises coupling logic configured to link the semantic web services of the repository describing the robot specific functionalities to the corresponding robots via appropriate linkages.  
         [0026]     The robots also can communicate with each other via a wireless connection and communication system.  
         [0027]     Furthermore, the coordinated set of robots can be invoked via respective service calling. Thus, the robots can be automatically invoked via calling the respective semantic web services of the repository describing the robot specific functionalities using appropriate provided linkages.  
         [0028]     Therefore, a task that can be described by a succession of semantic web services of the repository can be fulfilled when calling that succession of semantic web services. It is possible to call that succession of semantic web services simultaneously.  
         [0029]     The present invention also refers to a computer program product having a computer-readable medium and a computer program and/or program code stored on the computer-readable medium with a program code which is suitable for carrying out one or more of the techniques described herein when the computer program is run on a computer.  
         [0030]     It will be understood that the features mentioned above and those described hereinafter can be used not only in the combination specified but also in other combinations or on their own.  
         [0031]     The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0032]      FIG. 1  is a schematic block diagram of a system for automatically organizing and achieving a pre-given task with a robot functionalities.  
         [0033]      FIG. 2  shows a flow chart a method for automatically organizing and achieving a pre-given task with a robot functionalities. 
     
    
     DETAILED DESCRIPTION  
       [0034]      FIG. 1  shows a system  1  that includes a robot A and a robot B. Robot A and robot B both have robot specific functionalities that can be employed within a warehouse.  FIG. 1  further shows a set of shelves, namely shelf  10 , shelf  11 , shelf  12 , and shelf  13 , as part of the warehouse. In such a warehouse one of the plurality of tasks that can be accomplished by the two robots, robot A and robot B, can be exemplarily formulated as follows:  
         [0035]     Pick up an asset on shelf  12 , and  
         [0036]     Bring the asset to an exit E of the warehouse.  
         [0037]     Both robots, robot A and robot B, can be connected via a wireless connection and communication system, indicated by the cloud  20 . Robot A has a set of robot specific functionalities specific for robot A, and robot B has a set of robot functionalities specific for robot B. The set of robot specific functionalities of robot A as well as the set of robot specific functionalities of robot B both can be semantically described by appropriate semantic web services. The set of robot functionalities specific for robot A and the set of robot functionalities specific for robot B both can be exposed by the corresponding semantic web services. Those semantic web services can be accessible, for example, via a specific URL on the World Wide Web that is schematically illustrated as cloud  30 . The semantic web services describing the robot specific functionalities of robot A can be provided with a linkage that links those semantic web services to robot A. The semantic web services describing the robot specific functionalities of robot B can be provided with an appropriate linkage that links those semantic web services to robot B. Thus, a web service call of one of the semantic web services describing robot specific functionalities of robot A automatically invokes robot A due to the linkage included by the respective semantic web services. This also applies to the semantic web services describing the robot specific functionalities of robot B.  
         [0038]     To achieve the above-mentioned task, namely to pick up an asset on shelf  12  and to bring it to the exit E of the warehouse, robot A and robot B have to cooperate with respect to their corresponding robot specific functionalities. The system can provide an access to a repository of semantic web services useable to describe the robot specific functionalities of robot A and robot B, respectively. This access can be realized via a computer  2 . Robot A is able to transport an asset autonomously from a first place to a second place. This robot functionality can be described by a corresponding semantic web service, namely by a service to transport an asset autonomously from a first place to a second place. Robot B is able to move to a shelf of a certain number located at a certain location and to pick up an asset located on that certain shelf. The number of the shelf can be pre-given by the user. This functionality is also describable by an appropriate semantic web service. Second, a succession of semantic web services can be found that can fulfill the above-mentioned task. A succession of semantic web services fulfilling the above mentioned task can be described as follows:  
         [0039]     Move to shelf number  12  at position X(x,y,z);  
         [0040]     Pick-up an asset located on shelf at position X(x,y,z); and  
         [0041]     Transport the asset autonomously from X(x,y,z) to Exit E(x′,y′,z′).  
         [0042]     That means that the shelf number  12  from which an asset should be picked-up and transported to the exit E of the warehouse can be described by a vector X with the coordinates (x,y,z). The exit E of the warehouse to which the asset is to be transported can be described by a vector E with the coordinates (x′,y′,z′). This succession of semantic web services can be matched with the semantic web services describing the robot specific functionalities of robot A and robot B. The semantic web services describing the robot specific functionalities of robot A and robot B can be described as follows. The robot functionality of robot A can be described as follows:  
         [0043]     Transport asset autonomously from Y(x″,y″,z″) to W(x′″,y′″,z′″):  
         [0044]     hasPrecondition: coord asset=coord robot,  
         [0045]     hasInput: coord asset=Y(x″,y″,z″),  
         [0046]     hasOutput: coord asset=W(x′″,y′″,z′″),  
         [0047]     hasResult: asset moved to W  
         [0048]     URL: http://&lt;serviceURL&gt; 
         [0049]     Executing_robot: A  
         [0050]     This semantic web service clearly describes the robot functionality of robot A and includes a linkage linking the semantic web service to robot A. The service linked to robot A describes the possibility to transport an asset autonomously from a freely choosable place Y(x″,y″,z″) to a choosable place W(x′″,y′″,z′″). The places Y and W can be located within a limited area, for example, within the area of the above mentioned warehouse. The transport service can only be executed by robot A when the coordinates of the asset to be transported are equal to the coordinates of robot A, which is formulated as a precondition of the transport service. For executing the transport service, the coordinates of the asset to be transported (e.g., Y(x″,y″,z″)) should be pre-given as input. The output is given by the coordinates of the place to which the asset is to be transported, namely W(x′″,y′″,z′″).  
         [0051]     The result of the transport service is the movement of the asset from its origin, namely Y(x″,y″,z″), to a destination location, namely W(x′″,y′″,z′″). The service can be called via an appropriate URL. The transport service can be executed by robot A.  
         [0052]     Robot B can have two robot specific functionalities, namely to move to a shelf of a certain number at a location X(x,y,z) and to pick up an asset located on that shelf. Both robot functionalities can be described by an appropriate semantic service, respectively.  
         [0053]     The semantic web service to move to a shelf of a certain number at the location X(x,y,z) can be described as follows:  
         [0054]     Move to shelf number X(x,y,z):  
         [0055]     hasInput: X(x,y,z),  
         [0056]     hasOutput: coord robot=X(x,y,z)  
         [0057]     URL:http://&lt;serviceURL&gt; 
         [0058]     executing_robot:B  
         [0059]     The second robot functionality can be described by a further semantic web service, namely by a pick up service which can be described as follows:  
         [0060]     Pick up asset located on shelf number X(x,y,z):  
         [0061]     hasInput:asset identifier+X(x,y,z),  
         [0062]     hasOutput: coord asset=coord robot,  
         [0063]     hasResult: asset picked by robot  
         [0064]     URL:http://&lt;serviceURL&gt; 
         [0065]     executing_Robot:B  
         [0066]     The move service can have as an input value a vector X with coordinates (x,y,z) describing the location where the robot executing this service has to move. The move service can have as an output value that the coordinates of the executing robot are equal to the coordinates of the desired shelf number. The move service also has a linkage linking that service to an executing robot, namely to robot B.  
         [0067]     The pick up service has as an input value an asset identifier and the location of the shelf number where the asset is located. The output value of the pick up service is that the coordinates of the asset to be picked up are equal to the coordinates of the executing robot. The result of the pick up service is described by picking up the asset by the executing robot. The pick up service is also linked to the executing robot, namely to robot B.  
         [0068]     The above described semantic web services describing the robot specific functionalities of robot A and robot B, respectively, are at first independent from each other. In order to achieve a pre-given task those semantic web services can be combined such that the robots able to execute the respective semantic web services can cooperate sequentially. To realize the coordination and the cooperation of robot A and robot B a supplement service can be added, which makes both robots, robot A and robot B, get in touch with each other such that the asset to be moved is passed from one robot to the other.  
         [0069]     When matching the above mentioned succession of semantic web services that can fulfill the pre-given task, namely to move to shelf number X(x,y,z), to pick up an asset located on shelf number X(x,y,z) and to transport that asset autonomously from X(x,y,z) to Exit E (x′,y′,z′), with the described semantic web services describing the robot specific functionalities of robot A and robot B, respectively, the semantic web services and the corresponding robots have to be identified. Furthermore, a service, namely a coordination service, that makes robot A and robot B get in touch can be inserted. In the present case, namely in handling goods, the coordination service can allow robot A to hand over the asset to robot B. This can be achieved, for example, by combining a service that moves robot A and robot B next to each other with a further service that hands over the asset from robot A to robot B. For this coordination service, each robot, namely robot A and robot B, can declare an attribute which is a so-called PickUpZone. The PickUpZone is a location where a robot can handle an asset. In the case of robot B, this can be anywhere within the range of its mechanical arm. In the case of robot A, which does not possess handling capabilities, the PickUpZone P-A can correspond to a place the asset has to be dropped so that robot A is enabled to carry it. In the illustrated case, the PickUpZone P-A of robot A would be the carriage zone. The order of the semantic web services, including the additional coordination service can therefore be described as follows: 
        move to shelf number X(x,y,z), which is performed by robot B,     pick up an asset located on a shelf number X(x,y,z), which is also performed by robot B     move autonomously to X(x,y,z),which is performed by robot A,     drop asset on the PickUpZone P-A of robot A, which can be described by J(x+α, Y+β, z+γ), which is performed by robot B,     transport asset autonomously from X(x,y,z) to Exit E (x′,y′,z′), which is performed by robot A.        
 
         [0075]     Based on the semantic description of the respective robot specific functionalities of robot A and robot B, a succession of semantic web services matching with the semantic description of the pre-given task can allow an automatic composition of the robots fulfilling the pre-given task that could not be achieved by a single robot.  
         [0076]      FIG. 2  shows schematically a generic flow chart of a process that combines robot specific functionalities to fulfill a pre-given task. In step  202  a new task that is to be accomplished is pre-given. With respect to that pre-given task a list of available semantic web services is read in step  204 . In step  206  it is analyzed whether a composition of semantic web services fulfilling the pre-given task already exists. In case that such a composition of semantic web services exists the single semantic web services of that composition are identified. For each of those services the respective linkage of the service to one or more robots is identified in step  208 . That means that a coordinated set of robots can be combined by means of which the succession of the semantic web services can be executed. To coordinate the cooperation of the robots, one or more appropriate coordination services can be inserted. In the case described with respect to  FIG. 1 , namely in handling goods, such a coordination service can be composed by two services, namely by a first service for approaching the robots and a second service for transferring an asset between the respective robots. After those appropriate coordination services have been inserted in step  210  and  212 , the composition of the semantic web services can now be executed in step  214  by means of the coordinated set of robots, thus fulfilling the pre-given task. The execution of the composition of the semantic web services can be triggered automatically via an appropriate web service call.  
         [0077]     Each semantic web service can be linked to an appropriate robot whose robot specific functionalities are adapted to execute that semantic web service. When calling such a semantic web service via a web service call, for example via an appropriate URL, the corresponding robot linked to that service can be activated automatically. The cooperation of different robots can be realized by inserting the above-mentioned coordination services coordinating the respective robot functionalities of the different robots.  
         [0078]     In step  216  the user can be asked to enter a new task. If no composition of available semantic web services exists in step  206 , the user can also be asked to enter another task.