Robot planning for concurrent execution of actions
Methods, systems, and apparatus, including computer programs encoded on computer storage media, for robotics planning. One of the methods comprises receiving data defining multiple skills to be performed by one or more robots in an operating environment; invoking a projection function implemented by a skill, wherein the projection function generates a skill footprint representing resources requested for performing the skill and a volume occupied by a corresponding entity used to perform the skill; determining that an initial skill footprint generated by the projection function conflicts with a skill footprint of another skill already being executed; and in response, reinvoking the projection function with data representing the skill footprint of the other skill already being executed.
1 . A method performed by one or more computers, the method comprising:
receiving skill data defining multiple skills to be executed by multiple robots in an operating environment, wherein the skill data is associated with configuration metadata that assigns one or more of the multiple robots to execute each skill;
invoking a projection function implemented by a skill to be executed by one of the multiple robots that is assigned to execute the skill according to the configuration metadata, wherein the projection function generates a skill footprint representing resources requested for executing the skill and a volume occupied by a corresponding entity used to execute the skill;
determining that an initial skill footprint generated by the projection function conflicts with a skill footprint of another skill that is currently being executed by another one of the multiple robots that is assigned to execute the other skill according to the configuration metadata, wherein the determining comprises determining that a same robot is used by both the skill to be executed and the other skill;
in response, reinvoking the projection function with data representing the skill footprint of the other skill that is currently being executed by the other one of the multiple robots to generate an updated skill footprint;
determining that the updated skill footprint generated by reinvoking the projection function does not conflict with the skill footprint of the other skill that is currently being executed by the other one of the multiple robots; and
in response, initiating execution of the skill by the one of the multiple robots that is assigned to execute the skill according to the configuration metadata while the other skill continues to be executed by the other one of the multiple robots that is assigned to execute the other skill according to the configuration metadata.
2 . The method of claim 1 , wherein the updated skill footprint is associated with a different motion plan than the initial skill footprint.
3 . The method of claim 2 , further comprising using robot motion plan online adjustment techniques to generate the different motion plan from an initial motion plan associated with the initial skill footprint.
4 . The method of claim 1 , wherein the updated skill footprint specifies a robot avoiding a volume occupied by the skill that is currently being executed by the other one of the multiple robots.
5 . The method of claim 1 , further comprising:
reinvoking the projection function after the other skill being executed by the other one of the multiple robots has ended;
determining that the initial skill footprint does not conflict with any skills currently being executed; and
in response, initiating execution of the skill by the one of the multiple robots according to the initial footprint instead of the updated footprint.
6 . The method of claim 1 , wherein the received data further defines an initial skill plan for executing the multiple skills.
7 . A system comprising:
one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:
receiving skill data defining multiple skills to be executed by multiple robots in an operating environment, wherein the skill data is associated with configuration metadata that assigns one or more of the multiple robots to execute each skill;
invoking a projection function implemented by a skill to be executed by one of the multiple robots that is assigned to execute the skill according to the configuration metadata, wherein the projection function generates a skill footprint representing resources requested for executing the skill and a volume occupied by a corresponding entity used to execute the skill;
determining that an initial skill footprint generated by the projection function conflicts with a skill footprint of another skill that is currently being executed by another one of the multiple robots that is assigned to execute the other skill according to the configuration metadata, wherein the determining comprises determining that a same robot is used by both the skill to be executed and the other skill;
in response, reinvoking the projection function with data representing the skill footprint of the other skill that is currently being executed by the other one of the multiple robots to generate an updated skill footprint;
determining that the updated skill footprint generated by reinvoking the projection function does not conflict with the skill footprint of the other skill that is currently being executed by the other one of the multiple robots; and
in response, initiating execution of the skill by the one of the multiple robots that is assigned to execute the skill according to the configuration metadata while the other skill continues to be executed by the other one of the multiple robots that is assigned to execute the other skill according to the configuration metadata.
8 . The system of claim 7 , wherein the updated skill footprint is associated with a different motion plan than the initial skill footprint.
9 . The system of claim 8 , wherein the operations further comprise using robot motion plan online adjustment techniques to generate the different motion plan from an initial motion plan associated with the initial skill footprint.
10 . The system of claim 7 , wherein the updated skill footprint specifies a robot avoiding a volume occupied by the skill that is currently being executed by the other one of the multiple robots.
11 . The system of claim 7 , wherein the operations further comprise:
reinvoking the projection function after the other skill being executed by the other one of the multiple robots has ended;
determining that the initial skill footprint does not conflict with any skills currently being executed; and
in response, initiating execution of the skill by the one of the multiple robots according to the initial footprint instead of the updated footprint.
12 . The system of claim 7 , wherein the received data further defines an initial skill plan for executing the multiple skills.
13 . One or more non-transitory computer storage media encoded with computer program instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:
receiving skill data defining multiple skills to be executed by multiple robots in an operating environment, wherein the skill data is associated with configuration metadata that assigns one or more of the multiple robots to execute each skill;
invoking a projection function implemented by a skill to be executed by one of the multiple robots that is assigned to execute the skill according to the configuration metadata, wherein the projection function generates a skill footprint representing resources requested for executing the skill and a volume occupied by a corresponding entity used to execute the skill;
determining that an initial skill footprint generated by the projection function conflicts with a skill footprint of another skill that is currently being executed by another one of the multiple robots that is assigned to execute the other skill according to the configuration metadata, wherein the determining comprises determining that a same robot is used by both the skill to be executed and the other skill;
in response, reinvoking the projection function with data representing the skill footprint of the other skill that is currently being executed by the other one of the multiple robots to generate an updated skill footprint;
determining that the updated skill footprint generated by reinvoking the projection function does not conflict with the skill footprint of the other skill that is currently being executed by the other one of the multiple robots; and
in response, initiating execution of the skill by the one of the multiple robots that is assigned to execute the skill according to the configuration metadata while the other skill continues to be executed by the other one of the multiple robots that is assigned to execute the other skill according to the configuration metadata.
14 . The computer storage media of claim 13 , wherein the updated skill footprint is associated with a different motion plan than the initial skill footprint.
15 . The computer storage media of claim 14 , wherein the operations further comprise using robot motion plan online adjustment techniques to generate the different motion plan from an initial motion plan associated with the initial skill footprint.
16 . The computer storage media of claim 13 , wherein the updated skill footprint specifies a robot avoiding a volume occupied by the skill that is currently being executed by the other one of the multiple robots.
17 . The computer storage media of claim 13 , wherein the operations further comprise:
reinvoking the projection function after the other skill being executed by the other one of the multiple robots has ended;
determining that the initial skill footprint does not conflict with any skills currently being executed; and
in response, initiating execution of the skill by the one of the multiple robots according to the initial footprint instead of the updated footprint.
18 . The method of claim 1 , wherein the configuration metadata specifies, for each skill, a robot model identifier that identifies a robot that will be executing the skill.
19 . The method of claim 1 , wherein the configuration metadata specifies, for each skill, a location in a world coordinate system of a robot that will be executing the skill.
20 . The system of claim 7 , wherein the configuration metadata specifies, for each skill, a robot model identifier that identifies a robot that will be executing the skill.