Method and robot for grasping an object
The system allows robots to autonomously execute predefined workflows using reusable work primitives, trained in a mock environment, addressing the limitations of complex interfaces and wear issues in existing technologies, thereby enhancing their adaptability and efficiency.
Patent Information
- Application Number
- JP2023550281
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-12-30
- Filing Date
- 2022-02-17
- Publication Date
- 2025-02-04
- Estimated Expiration
- 2042-02-17
AI Technical Summary
Existing robot control systems require complex and elaborate interfaces, limiting accessibility and efficiency, and training robots for autonomous work leads to rapid wear and damage.
A method and system for robots that utilize a reusable work primitive library executed by processors to autonomously complete multiple work goals, allowing semi-autonomous operation through a combination of predefined workflows and reusable work primitives, trained in a mock environment to reduce wear and enhance versatility.
Enables robots to efficiently and autonomously complete a wide range of work goals with reduced hardware wear, enhancing their versatility and adaptability across various tasks.
Smart Images

Figure 0007626867000002 
Figure 0007626867000003 
Figure 0007626867000004
Abstract
Description
[Technical field]
[0001] The present systems, apparatus, and methods relate generally to multipurpose robots, and more particularly to robots that can complete multiple different work objectives at least semi-autonomously. [Background technology]
[0002] A robot is a machine that is deployed to perform work. Robots come in a variety of forms, including humanoid. Humanoid robots are operated by a teleoperated system, allowing the robot to emulate the physical actions of a human operator or pilot. However, such teleoperated systems typically require highly sophisticated and complex interfaces consisting of advanced sensors and instruments worn by or pointed at the pilot, requiring the pilot to focus all of their attention on remotely controlling the robot, limiting the overall accessibility of the technology.
[0003] Robots are either trained or programmed to operate semi-autonomously or fully autonomously. Training a robot typically involves having the robot perform physical tasks repeatedly in the real world, which can cause significant wear and tear on the robot's components before the robot is deployed in the field to perform useful work. Summary of the Invention
[0004] A method of operating a robot having at least one processor and a non-transitory storage medium communicatively coupled to the at least one processor, the non-transitory storage medium readable by the processor storing a library of reusable work primitives and instructions executable by the processor that, when executed by the at least one processor, cause the robot to autonomously execute reusable work primitives in the library of reusable work primitives, the method comprising: starting a first work objective; (Received or identified) Steps to do this and the first work Mark Complete For use in First Workflow Execution The method further comprises the steps of: initiating a first workflow, the first workflow including a first set of reusable work primitives selected from a library of reusable work primitives; and executing the first workflow, the first set of reusable work primitives. The method further comprises the steps of initiating a second work goal, the second work goal being different from the first work goal. (Received or identified) Step 2: Mark Complete For use in Second Workflow Execution The method may further include the steps of initiating a second workflow, the second workflow including a second set of reusable work primitives selected from a library of reusable work primitives, the second workflow being different from the first workflow and including at least one common reusable work primitive included in both the first workflow and the second workflow, and executing the second workflow including executing the second set of reusable work primitives. The method may further include initiating at least one additional work objective that is different from both the first work objective and the second work objective. (Received or identified) and at least one additional work item. Mark Complete For use in At least one additional workflow ExecutionThe method may further include a step of initiating the at least one additional workflow, where the at least one additional workflow includes at least one additional set of reusable work primitives selected from a library of reusable work primitives, and the at least one additional workflow is different from both the first workflow and the second workflow, and the at least one common reusable work primitive includes all of the first workflow, the second workflow, and the at least one additional workflow; and a step of executing the at least one additional workflow, where the at least one additional set of reusable work primitives is executed.
[0005] The robot may have a communication interface communicatively coupled to the at least one processor, and initiating the first work objective may include receiving instructions related to the first work objective via the communication interface, and / or initiating a first workflow to complete the first work objective may include receiving the first workflow via the communication interface. Initiating the first work objective may include autonomously identifying, by the robot, the first work objective. Initiating the first workflow to complete the first work objective may include autonomously identifying, by the robot, a first set of reusable work primitives.
[0006] The robot may have at least a first physically actuable component communicatively coupled to the at least one processor, and the library of reusable work primitives may include a set of reusable work primitives executable by the first physically actuable component. Initiating a first workflow to complete a first work objective may include initiating a set of reusable work primitives including at least one reusable work primitive from the set of reusable work primitives executable by the first physically actuable component. Executing the first workflow may include executing, by the first physically actuable component, at least one reusable work primitive from the set of reusable work primitives executable by the first physically actuable component. The first physically actuable component may be operable to grasp an object, and the set of reusable work primitives executable by the first physically actuable component may include a set of reusable grasping primitives executable by the first physically actuable component. Initiating the first set of reusable work primitives including at least one reusable work primitive from a set of reusable work primitives executable by the first physically actuable component may include initiating the first set of reusable work primitives including at least one reusable grasping primitive. Executing at least one reusable work primitive from the set of reusable work primitives executable by the first physically actuable component by the first physically actuable component may include executing the at least one reusable grasping primitive by the first physically actuable component.
[0007] Initiating a first workflow to complete a first work objective may include initiating a first permutation of a first combination of reusable work primitives from a library of reusable work primitives. Executing the first set of reusable work primitives may include executing processor-executable instructions stored on a processor-readable non-transitory storage medium to cause the robot to autonomously execute the first set of reusable work primitives by the at least one processor.
[0008] The robot comprises: a body, at least one physically actuable component mechanically coupled to the body, at least one processor communicatively coupled to the at least one physically actuable component, and at least one non-transitory processor-readable storage medium communicatively coupled to the at least one processor, the at least one non-transitory processor-readable storage medium storing a library of reusable work primitives and processor-executable instructions that, when executed by the at least one processor, cause the robot to: initiate a first work goal, initiate a first workflow to complete the first work goal, the first workflow including a first set of reusable work primitives selected from the library of reusable work primitives, and execute the first workflow, the first workflow including executing the first set of reusable work primitives. The processor executable instructions, when executed by the at least one processor, may further cause the robot to perform the steps of: initiating a second work goal, different from the first work goal; initiating a second workflow to complete the second work goal, the second workflow including a second set of reusable work primitives selected from a library of reusable work primitives, the second workflow being different from the first workflow and including at least one common reusable work primitive in both the first workflow and the second workflow; and executing the second workflow, the second set of reusable work primitives. The robot may further comprise a communications interface communicatively coupled to the at least one processor and configured to receive at least one set of instructions from the group consisting of instructions associated with the first work goal and instructions associated with the first workflow.The processor-readable non-transitory recording medium may further store processor-executable instructions that, when executed by the at least one processor, cause the robot to autonomously identify a first workflow to complete a first work objective.
[0009] The library of reusable work primitives may include a set of reusable work primitives executable by at least one physically actuable component, and the processor-executable instructions, when executed by the at least one processor, may cause the robot to execute a first set of reusable work primitives and the at least one reusable work primitive to be executed by the at least one physically actuable component. The at least one physically actuable component may include an end effector operable to grasp an object, and the set of reusable work primitives executable by the at least one physically actuable component may include a set of reusable grasping primitives executable by the end effector. The processor-executable instructions, when executed by the at least one processor, may cause the at least one physically actuable component to execute the at least one reusable work primitive and the at least one grasping primitive to be executed by the end effector. hand Good too.
[0010] The computer program product comprises a library of reusable work primitives, and processor-executable instructions and / or data that, when stored on a processor-readable non-transitory storage medium of a robotic system and executed by at least one processor of the robotic system, cause the at least one processor communicatively coupled to the processor-readable non-transitory storage medium to cause the robotic system to: initiate a first work objective, initiate a first workflow to complete the first work objective, the first workflow including a first set of reusable work primitives selected from the library of reusable work primitives, and execute the first workflow including executing the first set of reusable work primitives. The computer program product may further include processor-executable instructions and / or data stored on a non-transitory storage medium readable by a processor of a robotic system and that, when executed by at least one processor of the robotic system, causes the robotic system to perform the following steps: initiate a second work goal, different from the first work goal; initiate a second workflow to complete the second work goal, the second workflow including a second set of reusable work primitives selected from a library of reusable work primitives, the second workflow being different from the first workflow and including at least one common reusable work primitive included in both the first workflow and the second workflow; and execute the second workflow, the second set of reusable work primitives.The computer program product may further include processor-executable instructions and / or data that, when stored on a non-transitory storage medium readable by a processor of a robotic system and executed by at least one processor of the robotic system, cause the robotic system to autonomously identify a first workflow to complete a first work objective.
[0011] A method of operating a robot to grasp an object is described. The robot performing the method includes: a robotic hand having a plurality of fingers and an opposable thumb; at least one processor operable to control a movement of the robotic hand; at least one sensor communicatively coupled to the at least one processor; and a non-transitory processor-readable storage medium communicatively coupled to the at least one processor. The non-transitory processor-readable storage medium stores a library of reusable grasping primitives and instructions executable by the processor that, when executed by the at least one processor, cause the robotic hand to autonomously execute reusable grasping primitives of the library of reusable grasping primitives. The method includes: collecting data regarding the object with at least one sensor, analyzing the data with at least one processor to determine a shape of the object, selecting, by the at least one processor, a particular reusable grasping primitive from a library of reusable grasping primitives based at least in part on the shape of the object, and executing, by the robotic hand, the particular reusable grasping primitive to grasp the object. Executing, by the robotic hand, the particular reusable grasping primitive to grasp the object may include executing, by the at least one processor, processor-executable instructions to cause the robotic hand to autonomously execute the particular reusable grasping primitive to grasp the object.
[0012] The at least one sensor may include at least one optical sensor. Collecting data about the object with the at least one sensor may include collecting optical data about the object with the at least one optical sensor. Analyzing the data with the at least one processor to determine a shape of the object may include analyzing the optical data with the at least one processor to determine a shape of the object.
[0013] Selecting, by the at least one processor, a particular reusable grasping primitive from a library of reusable grasping primitives based at least in part on a shape of the object may include selecting, by the at least one processor, a particular reusable grasping primitive that best fits the shape of the object as compared to all other reusable grasping primitives in the library of reusable grasping primitives. Selecting, by the at least one processor, a particular reusable grasping primitive that best fits the shape of the object may include selecting, by the at least one processor, a particular reusable grasping primitive that uses a configuration of multiple fingers and an opposable thumb of a robotic hand that best fits the shape of the object as compared to all other reusable grasping primitives in the library of reusable grasping primitives.
[0014] The step of selecting, by the at least one processor, a particular reusable grasping primitive that best fits the shape of the object may include, by the at least one processor, simulating a robotic hand using each reusable grasping primitive in the library of reusable grasping primitives to grasp the object and determine which particular reusable grasping primitive in the library of reusable grasping primitives best fits the shape of the object compared to all other reusable grasping primitives in the library of reusable grasping primitives.
[0015] The method may further include analyzing, by the at least one processor, additional data related to the object to determine at least one additional parameter of the object. In this case, selecting, by the at least one processor, a particular reusable gripping primitive from the library of reusable gripping primitives based at least in part on the shape of the object may include selecting, by the at least one processor, a particular reusable gripping primitive from the library of reusable gripping primitives based at least in part on both the shape of the object and the at least one additional parameter of the object. The method may further include collecting, by the at least one sensor, additional data related to the object, the additional data related to the object selected from the group consisting of: hardness of the object, stiffness of the object, personality of the object, function of the object, and mass of the object. The robot may further include at least one receiver communicatively coupled to the at least one processor, and the method may further include receiving, by the receiver, the additional data related to the object.
[0016] The processor-readable non-transitory storage medium may further store data of a work target to be performed by the robot, the work target including grasping an object. Selecting, by the at least one processor, a particular reusable grasping primitive from the library of reusable grasping primitives based at least in part on a shape of the object may include selecting, by the at least one processor, a particular reusable grasping primitive from the library of reusable grasping primitives based at least in part on both a shape of the object and data of the work target to be performed by the robot.
[0017] The robot comprises: a robotic hand having a body, a plurality of fingers and an opposable thumb, mechanically coupled to the body; at least one processor operable to control a movement of the robotic hand; at least one sensor communicatively coupled to the at least one processor; and a non-transitory processor-readable storage medium communicatively coupled to the at least one processor, the at least one non-transitory processor-readable storage medium storing a library of reusable work primitives and processor-executable instructions that when executed by the at least one processor cause the robot to collect data regarding an object, analyze the data to determine a shape of the object, select a particular reusable grasping primitive from the library of reusable grasping primitives based, at least in part, on the shape of the object, and execute the particular reusable grasping primitive to grasp the object. The processor executable instructions, when executed by the at least one processor, may cause the robot to perform a particular reusable grasping primitive to grasp the object and may cause the robotic hand to autonomously perform a particular reusable grasping primitive to grasp the object. The at least one sensor may include at least one optical sensor, and the processor executable instructions, when executed by the at least one processor, may cause the robot to collect data regarding the object and may cause the at least one optical sensor to collect optical data regarding the object.
[0018] The processor-executable instructions, when executed by the at least one processor, may cause the robot to select a particular reusable grasping primitive from a library of reusable grasping primitives based at least in part on a shape of the object, and may cause the robot to select a particular reusable grasping primitive that best fits the shape of the object, as compared to all other reusable grasping primitives in the library of reusable grasping primitives. The processor-executable instructions, when executed by the at least one processor, may cause the robot to select a particular reusable grasping primitive that best fits the shape of the object, and may cause the robot to select a particular reusable grasping primitive using a multiple finger and opposable thumb configuration of a robotic hand that best fits the shape of the object, as compared to all other reusable grasping primitives in the library of reusable grasping primitives.
[0019] The processor-executable instructions, when executed by at least one processor, may cause the robot to select a particular reusable grasping primitive from the library of reusable grasping primitives based, at least in part, on the shape of the object, and may cause the robot to simulate a robotic hand grasping the object using each reusable grasping primitive from the library of reusable grasping primitives to determine which particular reusable grasping primitive from the library of reusable grasping primitives best fits the shape of the object compared to all other reusable grasping primitives from the library of reusable grasping primitives.
[0020] The processor-readable non-transitory storage medium may further store processor-executable instructions that, when executed by the at least one processor, cause the robot to analyze the additional data related to the object to determine at least one additional parameter of the object, where the processor-executable instructions, when executed by the at least one processor, cause the robot to select a particular reusable grasping primitive from the library of reusable grasping primitives based at least in part on a shape of the object, and may cause the robot to select a particular reusable grasping primitive from the library of reusable grasping primitives based at least in part on both the shape of the object and the at least one additional parameter of the object. The processor-readable non-transitory storage medium may further store processor-executable instructions that, when executed by the at least one processor, cause the robot to collect additional data related to the object, where the additional data related to the object is selected from the group consisting of: hardness of the object, stiffness of the object, personality of the object, function of the object, and mass of the object. The robot may further include at least one receiver communicatively coupled to the at least one processor, and the processor-readable non-transitory recording medium may further store processor-executable instructions that, when executed by the at least one processor, cause the robot to receive additional data regarding the object.
[0021] The processor-readable non-transitory storage medium may further store data related to a work target to be performed by the robot, the work target including grasping an object, where the processor-executable instructions, when executed by the at least one processor, may cause the robot to select a particular reusable grasping primitive from a library of reusable grasping primitives based at least in part on a shape of the object, and may cause the robot to select a particular reusable grasping primitive from the library of reusable grasping primitives based at least in part on both the shape of the object and the data related to the work target to be performed by the robot.
[0022] A computer-implemented method for initializing a robot to complete a plurality of work objectives includes: defining a library of reusable work primitives, each executable by the robot, where each combination and permutation of reusable work primitives from the library of reusable work primitives is initiated and executed by the robot to complete each work objective; and training the robot to autonomously execute each reusable work primitive of the library of reusable work primitives.
[0023] Training the robot to autonomously execute each reusable work primitive of the library of reusable work primitives may include training the robot to autonomously execute each reusable work primitive of the library of reusable work primitives in a simulated environment. Training the robot to autonomously execute each reusable work primitive of the library of reusable work primitives in the simulated environment may include generating a first simulated instance of the robot in the simulated environment, repeatedly executing processor-executable instructions to cause the first simulated instance of the robot to execute a first reusable work primitive of the library of reusable work primitives, and narrowing down processor-executable instructions to cause the first simulated instance of the robot to execute the first reusable work primitive based on results of at least one of the steps of repeatedly executing processor-executable instructions to cause the first simulated instance of the robot to execute the first reusable work primitive. Training the robot to autonomously execute each reusable work primitive of the library of reusable work primitives in the simulated environment may further include generating at least one additional simulated instance of the robot in the simulated environment; repeatedly executing processor-executable instructions to cause the at least one additional simulated instance of the robot to execute a first reusable work primitive of the library of reusable work primitives; and based on at least one result of the repeatedly executing processor-executable instructions to cause the first simulated instance of the robot and the at least one additional simulated instance of the robot to execute the first reusable work primitive.In one embodiment, the step of training the robot to autonomously execute each reusable work primitive of the library of reusable work primitives in the simulated environment may further include the steps of: repeatedly executing processor-executable instructions to cause the first simulated instance of the robot to execute at least one additional reusable work primitive of the library of reusable work primitives; and narrowing down processor-executable instructions to cause the first simulated instance of the robot to execute at least one additional reusable work primitive based on at least one result of the steps of repeatedly executing processor-executable instructions to cause the first simulated instance of the robot to execute at least one additional reusable work primitive of the library of reusable work primitives.
[0024] Training the robot to autonomously perform each reusable work primitive of the library of reusable work primitives may include receiving teleoperation instructions causing the robot to perform a first reusable work primitive of the library of reusable work primitives, executing the teleoperation instructions causing the robot to perform the first reusable work primitive of the library of reusable work primitives, and generating processor-executable instructions causing the robot to play the teleoperation instructions causing the robot to perform the first reusable work primitive of the library of reusable work primitives. Receiving teleoperation instructions causing the robot to perform the first reusable work primitive of the library of reusable work primitives may include receiving low-level teleoperation instructions causing the robot to emulate actual physical actions performed by an actual teleoperated pilot. Receiving teleoperation instructions causing the robot to perform a first reusable work primitive from a library of reusable work primitives may include receiving high level teleoperation instructions causing the robot to perform an action selected from a graphical user interface.
[0025] Training the robot to autonomously execute each reusable work primitive of the library of reusable work primitives may further include generating a simulated instance of the robot in a simulated environment. In this case, receiving a remote operation instruction to cause the robot to execute a first reusable work primitive from a library of reusable work primitives may include receiving a remote operation instruction to cause a simulated instance of the robot to execute a first reusable work primitive from a simulated environment, executing the remote operation instruction to cause the robot to execute a first reusable work primitive from the library of reusable work primitives may include executing a remote operation instruction to cause a simulated instance of the robot to execute the first reusable work primitive from the simulated environment, and generating instructions executable by a processor to cause the robot to play the remote operation instruction to cause the robot to execute the first reusable work primitive from the library of reusable work primitives may include generating instructions executable by a processor to cause the simulated instance of the robot to play the remote operation instruction to cause the simulated instance of the robot to execute the first reusable work primitive from the simulated environment. Receiving teleoperation instructions causing the simulated instance of the robot to perform a first reusable work primitive of the simulated environment may include receiving low level teleoperation instructions causing the simulated instance of the robot to emulate actual physical actions performed by an actual teleoperated pilot. Receiving teleoperation instructions causing the simulated instance of the robot to perform a first reusable work primitive of the simulated environment may include receiving high level teleoperation instructions causing the simulated instance of the robot to perform actions selected from a graphical user interface.
[0026] In an embodiment, receiving teleoperation instructions causing the robot to execute a first reusable work primitive of a library of reusable work primitives may include receiving a first set of teleoperation instructions causing the robot to execute a first instance of the first reusable work primitive of the library of reusable work primitives and receiving a second set of teleoperation instructions causing the robot to execute a second instance of the first reusable work primitive of the library of reusable work primitives. Executing the teleoperation instructions causing the robot to execute a first reusable work primitive of the library of reusable work primitives may include executing the first set of teleoperation instructions causing the robot to execute the first instance of the first reusable work primitive of the library of reusable work primitives and executing the second set of teleoperation instructions causing the robot to execute the second instance of the first reusable work primitive of the library of reusable work primitives. The step of generating instructions executable by a processor to cause the robot to reproduce teleoperation instructions causing the robot to execute a first reusable work primitive from a library of reusable work primitives may include: evaluating results of each of the steps of executing a first set of teleoperation instructions causing the robot to execute a first instance of the first reusable work primitive from the library of reusable work primitives and executing a second set of teleoperation instructions causing the robot to execute a second instance of the first reusable work primitive from the library of reusable work primitives to determine which of the first set of teleoperation instructions and the second set of teleoperation instructions results in a better result; and generating instructions executable by a processor to cause the robot to reproduce the one of the first set of teleoperation instructions and the second set of teleoperation instructions that results in the better result.The step of generating processor-executable instructions for causing the robot to play teleoperation instructions for causing the robot to execute a first reusable work primitive from a library of reusable work primitives may include a step of combining at least one element of the first set of teleoperation instructions and at least one element of the second set of teleoperation instructions in the processor-executable instructions for causing the robot to play teleoperation instructions for causing the robot to execute a first reusable work primitive from the library of reusable work primitives.
[0027] Training the robot to autonomously execute each reusable work primitive of the library of reusable work primitives may include generating processor-executable instructions that, when executed by at least one processor of the robot, cause the robot to autonomously execute each reusable work primitive of the library of reusable work primitives, the method including sending the processor-executable instructions to a non-transitory storage medium readable by a processor of the robot; may further include:
[0028] The robot comprises: a body, at least one physically actuable component mechanically coupled to the body, at least one processor communicatively coupled to the at least one physically actuable component, and at least one non-transitory processor-readable recording medium communicatively coupled to the at least one processor. At least one non-transitory processor-readable storage medium stores a library of reusable work primitives and processor-executable instructions that, when executed by the at least one processor, cause the robot to selectively and autonomously execute each reusable work primitive from the library of reusable work primitives, the processor-executable instructions being trained by the process of: generating a first simulated instance of the robot in a simulated environment; repeatedly executing the processor-executable instructions to cause the first simulated instance of the robot to execute a first reusable work primitive from the library of reusable work primitives; and based on at least one result of the repeatedly executing the processor-executable instructions to cause the first simulated instance of the robot to execute the first reusable work primitive, the processor-executable instructions being narrowed down to processor-executable instructions for causing the first simulated instance of the robot to execute the first reusable work primitive; and sending the processor-executable instructions to a non-transitory processor-readable storage medium of the robot.The process of training the processor-executable instructions may further include the steps of generating at least one additional simulated instance of the robot in a simulated environment; repeatedly executing the processor-executable instructions to cause the at least one additional simulated instance of the robot to execute a first reusable work primitive from a library of reusable work primitives; and based on at least one result of the steps of repeatedly executing the processor-executable instructions to cause the first reusable work primitive to be executed by the first simulated instance of the robot and the at least one additional simulated instance of the robot, narrowing down the processor-executable instructions to cause the first reusable work primitive to be executed by the first simulated instance of the robot and the at least one additional simulated instance of the robot.
[0029] The computer program product includes a library of reusable work primitives, and processor-executable instructions and / or data that, when stored on a non-transitory processor-readable storage medium of a robotic system and executed by at least one processor of the robotic system, cause the robotic system to selectively and autonomously execute each reusable work primitive in the library of reusable work primitives by the at least one processor communicatively coupled to the processor-readable non-transitory storage medium, the computer program product including steps of generating a first simulated instance of the robot in a simulated environment; The processor-executable instructions trained by the process include: causing a first simulated instance of the robot to execute a first reusable work primitive from a library of reusable work primitives; and narrowing down processor-executable instructions for causing the first simulated instance of the robot to execute the first reusable work primitive based on at least one result of the steps of repeatedly executing the processor-executable instructions to cause the first simulated instance of the robot to execute the first reusable work primitive; and sending the processor-executable instructions to a non-transitory recording medium readable by the processor of the robot.The process of training the processor-executable instructions may further include the steps of generating at least one additional simulated instance of the robot in a simulated environment; repeatedly executing the processor-executable instructions to cause the at least one additional simulated instance of the robot to execute a first reusable work primitive from a library of reusable work primitives; and based on at least one result of the steps of repeatedly executing the processor-executable instructions to cause the first reusable work primitive to be executed by the first simulated instance of the robot and the at least one additional simulated instance of the robot, narrowing down the processor-executable instructions to cause the first reusable work primitive to be executed by the first simulated instance of the robot and the at least one additional simulated instance of the robot. [Brief description of the drawings]
[0030] The various elements and acts shown in the figures are provided for illustrative purposes to support the detailed description. Unless required by a specific context, the sizes, shapes, and relative positions of the illustrated elements and acts are not necessarily shown to scale, and are not necessarily intended to convey information or limitations. Generally, the same reference numbers are used to identify similar elements or acts. [Figure 1] FIG. 1 is a flow diagram illustrating an exemplary method of operation of a robot in accordance with the present systems, devices, and methods. [Diagram 2] FIG. 2 is a flow diagram illustrating another exemplary method of operation of a robot in accordance with the present systems, devices, and methods. [Diagram 3] FIG. 3 is a flow diagram illustrating another exemplary method of operation of a robot in accordance with the present systems, apparatus, and methods. [Figure 4] FIG. 4 is an illustration showing an exemplary set of reusable grasping primitives in accordance with the present systems, apparatus, and methods. [Diagram 5]FIG. 5 is a flow diagram illustrating an exemplary method of operation of a robot to grasp an object in accordance with the present systems, apparatus, and methods. [Figure 6] FIG. 6 is a flow diagram illustrating an exemplary computer-implemented method for initializing a robot to complete multiple work objectives in accordance with the present systems, apparatus, and methods. [Figure 7] FIG. 7 is a flow diagram illustrating another exemplary computer-implemented method for initializing a robot to complete multiple work objectives in accordance with the present systems, apparatus, and methods. [Figure 8] FIG. 8 illustrates an exemplary simulated environment in which a robot is trained through simulation to execute reusable work primitives in accordance with the present systems, methods, and apparatus. [Figure 9] FIG. 9 is a flow chart illustrating another exemplary computer-implemented method for initializing a robot to complete multiple work objectives in accordance with the present systems, apparatus, and methods. [Figure 10] FIG. 10 is an illustrated diagram of an exemplary robotic system that includes various features and components described throughout the present systems, methods, and apparatus. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0031] The following description sets forth specific details to explain and provide an understanding of various implementations and embodiments of the present systems, devices, and methods. Those skilled in the art will understand that some specific details described herein may be omitted or changed in alternative implementations and embodiments, and that the various implementations and embodiments described herein may be combined with each other and / or with other methods, components, materials, etc. to produce further implementations and embodiments.
[0032] In some instances, well-known structures and / or processes related to computer systems and data processing have not been shown or provided in detail to avoid unnecessarily complicating or obscuring the description of the implementations and embodiments.
[0033] Unless the specific context requires otherwise, throughout this specification and the appended claims, terms such as "comprise" and "have," as well as "include" and variations thereof, are used in an open and inclusive sense, meaning "including, but not limited to."
[0034] Throughout this specification and the appended claims, the singular forms "a," "the," and "the" include the plural, unless the specific context requires otherwise. For example, references to "an embodiment" and "the embodiment" include "embodiments" and "the embodiment," respectively, and references to "an implementation" and "the implementation" include "implementations" and "the implementation," respectively. Similarly, the term "or" is generally used in its broadest sense to mean "and / or," unless the specific context clearly dictates otherwise.
[0035] The headings and abstract of this disclosure are provided for convenience only and are not intended to, and should not be construed to, interpret the scope or meaning of the present systems, apparatus, and methods.
[0036] A generic robot can accomplish multiple different work goals. As used throughout this specification and the appended claims, the term "work goal" refers to a specific task, job, assignment, or utilization that has a specific goal and a determinable outcome, often (but not necessarily) to further economically valuable work. Work goals exist in many aspects of business, research and development, commercial activities, and personal activities. Exemplary work goals include, but are not limited to, cleaning a place (e.g., a bathroom) or object (e.g., a bathroom mirror), preparing a meal, loading and unloading a storage container (e.g., a truck), taking an inventory, collecting one or more samples, taking one or more measurements, building or assembling an object, destroying or disassembling an object, sending an item, harvesting objects and / or data, and the like. Various implementations described herein provide systems, devices, and methods for initializing, configuring, training, operating, and / or deploying a robot to complete multiple different work goals at least semi-autonomously.
[0037] In accordance with the present systems, apparatus, and methods, work goals are decomposed or broken down into "workflows" consisting of a set of "work primitives," and successful completion of a work goal involves the execution of each work primitive in the workflow. Depending on the specific implementation, completion of a work goal may be achieved (i.e., a workflow may consist of): 1) sequential or serial execution of a corresponding set of work primitives; 2) execution of a corresponding set of work primitives in parallel; or 3) execution of a work goal and / or a set of work primitives in parallel. completion A robot may execute a corresponding set of work primitives in any combination of serial and parallel (e.g., overlapping and sequential) as appropriate for the robot. Thus, in some implementations, work primitives may be interpreted as lower level activities, steps, or sub-tasks that are executed as a workflow to complete a higher level work goal.
[0038] Advantageously, in accordance with the present systems, apparatus, and methods, a library of "reusable" work primitives may be defined. A work primitive is reusable if it can be commonly invoked, executed, employed, or applied to complete multiple different work goals. For example, a reusable work primitive is one that is common to the workflow of each of multiple different work goals. In some implementations, a reusable work primitive may include at least one variable that is defined at or before the invocation of the work primitive. For example, "Pick up object" is a reusable work primitive, where the "pick up" process is at least semi-autonomously and commonly executed to further multiple different work goals, and the "pick up object" process is defined based on the particular work goal being pursued.
[0039] As previously mentioned, various implementations described herein provide systems, devices, and methods that enable a robot to complete multiple different work objectives at least semi-autonomously. Unless the specific context requires otherwise, the term "autonomously" is used throughout this specification and the appended claims to mean "without control by another party," and the term "semi-autonomously" is used to mean "at least partially autonomously." In other words, throughout this specification and the appended claims, the term "semi-autonomously" means "with limited control by another party," unless the specific context requires otherwise. An example of a semi-autonomous robot is a robot that can independently and / or autonomously perform and control some of its own low-level functions, such as locomotion and grasping functions, but depends on some external control for higher-level instructions on what to do and / or how to do it.
[0040] In accordance with the present systems, apparatus, and methods, a library of reusable work primitives may be defined, identified, developed, or constructed such that any given work objective across multiple different work objectives may be completed by executing a corresponding workflow that includes a particular combination and / or permutation of reusable work primitives selected from the library of reusable work primitives. Once such a library of reusable work primitives is established, one or more robots may be trained to autonomously or automatically execute individual reusable work primitives in the library of reusable work primitives without necessarily including the environment of 1) the particular workflow of which the particular reusable work primitive for which it has been trained is a part, and / or 2) other reusable work primitives that may precede or follow the particular reusable work primitive for which it has been trained in the particular workflow. In this manner, the semi-autonomous robot can autonomously or automatically actuate individual reusable work primitives in a library of reusable work primitives, requiring instructions or guidance from another party (e.g., an operator, user, or pilot) only to determine which reusable work primitive(s) to execute and / or in what order to execute them. In other words, an operator, user, or pilot can provide a workflow comprised of reusable work primitives to the semi-autonomous robot, and the semi-autonomous robot can autonomously or automatically execute the reusable work primitives according to the workflow to complete a work goal. For example, a semi-autonomous humanoid robot can perform actions such as autonomously looking left when commanded to look left or autonomously opening its right end effector when commanded to open its right end effector, without relying on detailed low-level control of such functions by a third party.Such semi-autonomous humanoid robots can complete work objectives autonomously if they are given instructions regarding a workflow detailing which reusable work primitives must be executed and in what order to complete the work objective. Moreover, in accordance with the present systems, apparatus, and methods, a robot can operate fully autonomously if it has been trained or otherwise configured to analyze a work objective and independently define a corresponding workflow by decomposing the work objective into a set of reusable work primitives from a library of reusable work primitives that the robot is operable to execute autonomously.
[0041] In a robotic context, reusable work primitives can correspond to basic low-level functions that a robot can act upon (e.g., autonomously or automatically) and that the robot can invoke or execute to accomplish something. Examples of reusable work primitives for a humanoid robot include, but are not limited to, look up, look down, look left, look right, move right arm, move left arm, close right end effector, open right end effector, close left end effector, open left end effector, move forward, turn left, turn right, move backward, etc., although one of ordinary skill in the art will appreciate that: 1) the foregoing list of exemplary reusable work primitives for a humanoid robot is by no means exhaustive, 2) the present systems, apparatus, and methods are in no way limited to robots having a humanoid form factor, and 3) the complete composition of a library of reusable work primitives depends on the design and capabilities of the particular robot for which the library of reusable work primitives is built.
[0042] A robot can be operated to perform any number of high-level functions based at least in part on its hardware and software configuration. For example, a robot with legs and wheels is operated to move, a robot with a gripper is operated to pick up objects, and a robot with legs and a gripper is operated to move objects. To perform such high-level functions, a robot generally needs to control and perform multiple lower-level functions. For example, a mobile robot needs to control a number of different lower-level functions in order to controllably move, such as controlling movement actuators (e.g., driving the legs and wheels) that control functional parameters such as speed, trajectory, and balance. In accordance with the present systems, apparatus, and methods, the high-level functions at which the robot operates are deconstructed or broken down into a set of basic components or building blocks, referred to throughout this specification and the appended claims as "work primitives." Unless otherwise required by a particular context, work primitives are to be construed as building blocks from which higher-level robot functions are built.
[0043] As will be described in more detail below, in some implementations, training the robot to autonomously execute reusable work primitives can be completed in a simulated environment. Once the robot has been trained to autonomously execute a library of reusable work primitives, remote actuation of the robot by a telepilot can be summarized down to the level of the reusable work primitives. A teleoperator or pilot controlling the robot through a teleoperation system need only instruct the robot which reusable work primitives to execute, and in what order, depending on the implementation, the robot can have sufficient autonomy or automation (e.g., as a result of the training described above) to execute a complete work objective based on such limited control instructions from the pilot.
[0044] As mentioned above, "clean the bathroom mirror" is an example of a work objective that can be decomposed into a set of work primitives to achieve the objective, with a determinable outcome. In this case, the goal is a clean bathroom mirror, and an example set of work primitives (or workflows) to achieve the work objective are:
[0045] [Table 1]
[0046] Those skilled in the art will appreciate that the above exemplary workflow consisting of nine work primitives is used as an illustration of a workflow that may be deployed to complete a work goal of cleaning a bathroom mirror. However, in accordance with the present systems, apparatuses, and methods, the exact definition and configuration of each work primitive, as well as the specific combination and / or permutation of work primitives selected / executed to complete a work goal (i.e., the specific configuration of the workflow) may vary in different implementations. For example, in one implementation, the above work primitives 3, 4, and 5 (i.e., locate the mirror, direct the cleaning fluid to the mirror, and dispense the cleaning fluid onto the mirror) may all be combined into one high-level work primitive of "spray the cleaning fluid onto the mirror," while in other implementations, these same work primitives may be decomposed, for example, into additional low-level work primitives.
[0047] Find a mirror.
[0048] Identify the boundaries of the mirror.
[0049] A cleaning solution is directed to a first location within the perimeter of the mirror.
[0050] Squeeze out the cleaning solution.
[0051] A cleaning solution is applied to a second location within the perimeter of the mirror.
[0052] Squeeze out the cleaning solution.
[0053] etc.
[0054] Based on the above examples and explanations, one skilled in the art will appreciate that the granularity of the work primitives may vary between different implementations of the present systems, apparatus, and methods. Moreover, in accordance with the present systems, apparatus, and methods, the work primitives are advantageously "reusable" in the sense that each work primitive may be employed, invoked, applied, or "reused" in the performance of one or more overall work goals. For example, cleaning a bathroom mirror may include the work primitive "grasp cleaning fluid", but other work goals may also use the work primitive "grasp cleaning fluid", such as "clean toilet", "clean windows", and / or "clean floor". In some implementations, the work primitives may be abstracted to be more generic. For example, "grasp cleaning fluid" may be abstracted to "grasp spray bottle", or "grasp object 1", with the variable "object 1" defined as "object 1 = spray bottle". "Find a mirror" may be summarized as "Find an object that needs to be sprayed" or simply "Find object 2", where "object 2 = mirror". In these cases, the "grasp a spray bottle" work primitive can be used in non-cleaning tasks such as "paint a wall" (here, spray bottle = spray paint), "styling hair" (here, spray bottle = hairspray), or "preparing a stir fry" (here, spray bottle = cooking oil spray).
[0055] FIG. 1 is a flow diagram illustrating an exemplary method 100 of operating a robot in accordance with the present systems, apparatus, and methods. In general, throughout this specification and the appended claims, a method of operating a robot is a method in which at least some, if not all, of the various acts are performed by the robot. For example, certain acts of the method of operating a robot may be performed by at least one processor or processing unit (hereinafter, "processor") of the robot communicatively coupled to a processor-readable non-transitory recording medium of the robot, and in some implementations, certain acts of the method of operating a robot may be performed by peripheral components of the robot, such as one or more physically actuable components (e.g., arms, legs, end effectors, grippers, hands), one or more sensors (e.g., optical sensors, audio sensors, tactile sensors, Body Sensor), locomotion systems (e.g., wheels, legs), communication and networking hardware (e.g., receivers, transmitters, transceivers), etc. The robot's processor-readable non-transitory storage media may store data (e.g., including libraries of reusable work primitives) and / or processor-executable instructions that, when executed by the at least one processor, cause the robot to perform a method and / or cause the at least one processor to perform those acts of the method executed by the at least one processor. The robot can communicate with remote systems and / or remote processor-readable non-transitory storage media via communication and network hardware communicatively coupled to the robot's at least one processor. Thus, unless the particular context requires otherwise, references to the robot's processor-readable non-transitory storage media, as well as data and / or processor-executable instructions stored on the processor-readable non-transitory storage media, are not intended to be limiting with respect to the physical location of the processor-readable non-transitory storage media relative to the robot's at least one processor and other pieces of the robot's hardware. In other words, a non-transitory recording medium readable by a processor of a robot may include a non-transitory recording medium readable by a processor mounted on the robot and / or a non-transitory recording medium readable by a processor located remotely from the robot, unless the particular context requires otherwise.
[0056] 1, method 100 includes three acts 101, 102, and 103, although one of ordinary skill in the art would understand that certain acts may be omitted and / or additional acts may be added in alternative implementations. One of ordinary skill in the art would also understand that the order of the acts shown is for illustrative purposes only and may be altered in alternative implementations.
[0057] At 101, the robot initiates a first work goal. In some implementations, the robot may initiate the first work goal in response to receiving an instruction from another, such as a verbal instruction from a remote or local controller or operator. In some implementations, the robot may include an electrical communication interface communicatively coupled to the at least one processor, and initiating the first work goal by the robot at 101 may include receiving instructions related to the first work goal over the robot's electrical communication interface (e.g., from a remote operator or remote actuation system). Such instructions may include a definition of the first work goal, parameters dictating how / when / where the first work goal should be completed, and / or instructions regarding how to execute the first work goal. In other implementations, initiating the first work goal by the robot at 101 may include the robot autonomously identifying the first work goal itself. In such implementations, the robot's non-transitory processor-readable storage media may store data, models, policies, paradigms, algorithms, frameworks, architectures, and / or processor-executable instructions (collectively, "artificial intelligence") that, when executed by at least one processor of the robot, cause the robot to autonomously identify a first work objective. The artificial intelligence may autonomously identify a first work objective based on various parameters and / or criteria, including, but not limited to, sensor data, environmental factors, internal parameters, observations, and / or communications with other systems, robots, devices, or people.
[0058] At 102, the robot initiates a first workflow for completing the first work objective initiated at 101. Initiating the first workflow by the robot may include identifying or defining a first set or combination of reusable work primitives that, when executed by the robot, completes the first work objective. Initiating the first workflow by the robot further includes arranging the first set or combination of reusable work primitives into a first permutation of the first combination of reusable work primitives. As previously described, in some implementations, the robot's non-transitory processor-readable storage medium may store a library of reusable work primitives, and in such implementations, the first workflow initiated by the robot at 102 may be comprised or comprised of the first set or combination of reusable work primitives selected from the library of reusable work primitives stored on the robot's non-transitory processor-readable storage medium.
[0059] If the robot includes an electrical communication interface communicatively coupled to the at least one processor, initiating the first workflow by the robot at 102 may include receiving the first workflow, or instructions associated therewith, via the robot's electrical communication interface (e.g., from a teleoperator or teleoperation system). Such instructions may include a definition of the first workflow, including, for example, a set or combination of reusable work primitives and, in one option, a permutation of the set or combination of reusable work primitives to complete the first work goal. In other implementations, initiating the first workflow by the robot at 102 may include the robot itself autonomously identifying the first set, combination, and / or permutation of reusable work primitives that make up the first workflow. In such implementations, the robot's processor-readable non-transitory storage medium may store artificial intelligence that, when executed by the robot's at least one processor, causes the robot to autonomously identify the first workflow.
[0060] At 103, the robot executes the first workflow initiated at 102. Generally, in executing the first workflow at 103, the robot executes a first set of reusable work primitives selected from the library of reusable work primitives at the initiation of the first workflow at 102. As previously mentioned, in some implementations, the robot may be trained, configured, or otherwise operable to substantially autonomously or automatically execute each reusable work primitive in the library of reusable work primitives. For example, a processor-readable non-transitory storage medium of the robot may store respective sets of processor-executable instructions that, when executed by at least one processor of the robot, cause the robot to autonomously execute a respective one of the reusable work primitives in the library of work primitives. Thus, when the robot executes the first workflow at 103, the robot may do so substantially autonomously or automatically by executing a set of processor-executable instructions that cause or cause the robot to autonomously execute a particular reusable work primitive in the first set of reusable work primitives corresponding to the first workflow. For purposes of explanation, an example implementation of method 100 will be described.
[0061] As an example, the robot includes or has access to a processor-readable non-transitory storage medium storing: 1) a library of five reusable work primitives A, B, C, D, and E; and 2) five respective sets of processor-executable instructions inst(A), inst(B), inst(C), inst(D), and inst(E) that, when executed by at least one processor of the robot, cause the robot to autonomously execute a respective one of the first reusable work primitives. At 101 of the method 100, the robot initiates (autonomously or upon receiving an instruction as described above) a first work goal. At 102 of the method 100, the robot initiates (autonomously or upon receiving an instruction as described above) a first workflow for completing the first work goal. The first workflow is comprised of a first set of reusable work primitives from the library of reusable work primitives arranged in a first order. In this example, the first workflow is composed of reusable work primitives B, C, and D arranged as follows: (Number 1) C → B → D At 103, the robot autonomously executes the first workflow, i.e., at least one processor of the robot executes processor-executable instructions inst(C) to cause the robot to autonomously execute reusable work primitive C, then at least one processor of the robot executes processor-executable instructions inst(B) to cause the robot to autonomously execute reusable work primitive B, then at least one processor of the robot executes processor-executable instructions inst(D) to cause the robot to autonomously execute reusable work primitive D. In this manner, the robot completes the work goal, either semi-autonomously if the robot relies on receiving instructions to define the first workflow at 102, or fully autonomously if the robot is operable to autonomously define the first workflow at 102.
[0062] Advantageously, the library of reusable work primitives stored or accessed by a robot in accordance with the present systems, apparatus, and methods may consist of, or consist of, all of the generalized activities, steps, or sub-tasks necessary to enable the robot to complete a multitude of different work objectives. In this manner, the present systems, apparatus, and methods may realize, or at least approximate, a generic robot capable of completing a wide variety of different work objectives in a wide variety of different industries.
[0063] Continuing with the above example, an exemplary library of five reusable work primitives might consist, for example, of the following:
[0064] A: Measure environmental data.
[0065] B: Move to position _x.
[0066] C:Pick up object_i.
[0067] D: Place object_j.
[0068] E: Barcode scan object_k.
[0069] Then the first work objective becomes: "Take the green box to the warehouse." Thus, when the robot first executes workflow C, then B, then D, it does the following: execute inst(C), where object_i="green box", which causes the robot to autonomously (i.e., without further control or commands from others) pick up the green box; execute inst(B), where location_x="warehouse", which causes the robot to autonomously take the green box to the warehouse; then execute inst(D), where object_j="green box", which causes the robot to autonomously place the green box in the warehouse. Thus, the robot completes the first work objective by executing workflow C, then B, then D.
[0070] Using the same library of five reusable work primitives A, B, C, D, E, the robot can complete a second work goal. For example, the second work goal may be: "Inventory items in a warehouse." As previously described, the second work goal may be initialized by the robot (by act 101 of method 100) autonomously or in response to receiving instructions related to the second work goal from some form of controller or operator. The controller / operator may include a teleoperator, at least a semi-autonomous teleactuation system, or a control entity (e.g., another robot, or a person) co-located with the robot. The control entity co-located with the robot may verbally provide instructions to the robot that the robot operates to detect and process.
[0071] Once the second work objective is initiated, the robot may initiate a second workflow and complete the second work objective. Like the first workflow, the second workflow is also composed of a set of reusable work primitives from a library of five reusable work primitives A, B, C, D, E. However, the second workflow differs from the first workflow in that the second workflow is composed of a second, different set (e.g., combinations and / or permutations) of reusable work primitives from the library of five reusable work primitives A, B, C, D, and E. As previously described, the second workflow may be initiated by the robot (per act 102 of method 100) either autonomously or in response to receiving instructions defining the second workflow from some form of controller or operator.
[0072] In this example, the second workflow is composed of reusable work primitives B, C, D, and E in the following arrangement: (Number 2) B→Repeat: [C→E→D] In accordance with the present systems, apparatus, and methods, at least one reusable work primitive may be common to multiple workflows. In this embodiment, reusable work primitives B, C, and D are all common to both a first workflow for completing a first work objective and a second workflow for completing a second work objective.
[0073] An exemplary second workflow includes "repeat (C, then E, then D)." Thus, to complete the second work goal, the robot needs to repeat primitive C, then E, then D of the second workflow for all items in the warehouse. Thus, when the robot executes second workflow B, then repeat (C, then E, then D) (per act 103 of method 100), the robot executes inst(B) where location_x="warehouse" which causes the robot to go autonomously (i.e., without further control or instructions from others) to the warehouse and then begins a loop in which the robot executes primitive C, then E, then D for all items in the warehouse. That is, upon arriving at the warehouse, the robot executes inst(C) where object_i="first item" to have the robot autonomously pick up the first item in the warehouse and executes inst(E) where object_k="first item" to have the robot autonomously barcode scan the first item. Then execute inst(D) object_j="first item" to have the robot place the first item. The robot then repeats primitive C, then E, then D, for each item in the warehouse successively (i.e., for the second item, then the third item, etc.) until it has picked up, barcode scanned, and placed every item in the warehouse. In this way, the robot completes the second work objective by executing workflow B, then repeating (C, then E, then D).
[0074] Using the same library of five reusable work primitives A, B, C, D, E, the robot can complete at least one additional work objective. For example, the robot can record environmental parameters at various stations or waypoints (repeat: B, then A) and / or check out a customer's purchases at a retail store (repeat: C, then E, then D). All of these, and many other, work objectives can be completed at least semi-autonomously by the robot by executing corresponding workflows that are comprised of or consist of various combinations and / or permutations of reusable work primitives from the exemplary library of five reusable work primitives A, B, C, D, and E. However, one skilled in the art will appreciate that a library of reusable work primitives may be comprised of any number and form of reusable work primitives, and the library of five reusable work primitives A, B, C, D, and E described herein is used only as an illustrative example. In general, the more reusable work primitives in a library of reusable work primitives, the more different work objectives the robot can act upon to complete semi-autonomously. However, in some implementations, a finite number of reusable work primitives (e.g., on the order of 10, e.g., in increments of 10, 20, 30, 40, 50, 60, 70, 80, 90, etc., or in increments of 100, 200, etc.) may be sufficient to complete a majority (e.g., all) of the work objectives that the robot has as its object.
[0075] An example of the above where a robot uses a fixed library of reusable work primitives to complete multiple different work objectives is shown in Figure 2. Figure 2 is a flow diagram illustrating an exemplary method 200 of operation of a robot in accordance with the present systems, apparatus, and methods. Method 200 includes three sub-methods 100, 210, and 250 and six illustrated acts 101, 102, 103, 201, 202, and 203, although one of ordinary skill in the art would understand that certain acts may be omitted and / or additional acts may be added in alternative implementations. One of ordinary skill in the art would also understand that the order of the illustrated acts is shown for illustrative purposes only and may be altered in alternative implementations.
[0076] Method 200 includes as sub-method 100 the method of operating a robot to complete a first work objective 100 from FIG. 1. That is, method 200 includes acts 101, 102, and 103 from method 100 of FIG. 1, whereby the robot initiates (101) the first work objective, initiates (102) a first workflow for completing the first work objective, and executes (103) the first workflow, all substantially as described for method 100 of FIG. 1. As initially described, the first workflow is or is comprised of a particular combination and / or permutation of reusable work primitives from a library of reusable work primitives stored in or otherwise accessed by the robot. In accordance with method 100, a variety of reusable work primitives in the robot's library of reusable work primitives is sufficient to enable the robot to complete the first work objective. In sub-method 210, various ones of the reusable work primitives in the robot's library of reusable work primitives are used and / or reused by the robot to complete a second work objective via acts 201, 202, and 203 (collectively, sub-method 210), and similarly, various ones of the reusable work primitives in the robot's library of reusable work primitives are used and / or reused by the robot to complete at least one additional work objective in sub-method 250.
[0077] Specifically, at 201 of sub-method 210, the robot initiates a second work objective that is different from the first work objective initiated at 101 of sub-method 100. Similar to what was described for act 101, at 201, the second work objective may be initiated autonomously by the robot or in response to an instruction received from another party (e.g., a controller, pilot, or operator) via any of a variety of different communication means, such as verbally, wirelessly via a telecommunications system, digitally via a tethered communication line, etc.
[0078] At 202 of sub-method 210, the robot initiates a second workflow for completing the second work objective initiated at 201. The second workflow may be different from the first workflow, as the second work objective is different from the first work objective. In a manner similar to that described for act 102, the second workflow initiated by the robot at 202 includes identifying or defining a second set or combination of reusable work primitives that, when executed by the robot, completes the second work objective, and may further include (if applicable) arranging or otherwise arranging the second set or combination of reusable work primitives into a second permutation of the second combination of reusable work primitives. In accordance with the present systems, apparatus, and methods, the second set or combination of reusable work primitives for completing the second work objective are selected at 202 from the same library of reusable work primitives as the first set or combination of reusable work primitives for completing the first work objective were selected at 102. In some implementations, at least one common reusable work primitive may be included in both the first workflow initiated at 102 and the second workflow initiated at 202. In other words, in some implementations, at least one reusable work primitive from the first workflow initiated at 102 is reused in the second workflow initiated at 202.
[0079] Similar to act 102, at 202, the robot may initiate a second workflow, either autonomously or in response to receiving commands from another party (e.g., a controller, pilot, or operator) via any of a variety of different communication means, such as verbally, wirelessly via a telecommunications system, digitally via a tethered communication line, etc.
[0080] In 203 of the sub-method 210, the robot executes the second workflow initiated in 202. In general, in executing the second workflow in 203, the robot executes a second set of reusable work primitives selected from the library of reusable work primitives at the initiation of the second workflow in 202, including at least one common reusable work primitive included in both the first workflow (initiated in 102 and executed in 103) and the second workflow (initiated in 202 and executed in 203), if applicable. As previously mentioned, in some implementations, the robot may be trained, configured, or otherwise operable to substantially autonomously or automatically execute each reusable work primitive in the library of reusable work primitives. Thus, when the robot executes the second workflow in 203, the robot may do so substantially autonomously or automatically by executing processor-executable instructions that cause or enable the robot to autonomously execute a particular reusable work primitive in the set of second reusable work primitives corresponding to the second workflow. In an implementation in which both the first workflow initiated at 102 and the second workflow initiated at 202 include at least one common reusable work primitive, both executing the first workflow at 103 and executing the second workflow at 203 may include executing, by at least one processor of the robot, at least a same portion of processor-executable instructions that cause the robot to perform the at least one common reusable work primitive in both the first workflow and the second workflow.
[0081] In accordance with the present systems, apparatus, and methods, various ones of the reusable work primitives in the robot's library of reusable work primitives may be further used and / or reused by the robot to complete at least one additional work objective. To this end, method 200 includes sub-method 100, in which the robot initiates and executes a first set of reusable work primitives to complete a first work objective, sub-method 210, in which the robot initiates and executes a second set of reusable work primitives to complete a second work objective that is different from the first work objective, and sub-method 250 (not shown in detail to reduce clutter, but generally similar to acts 101, 102, 103 of sub-method 100 and acts 201, 202, 203 of sub-method 210) in which the robot initiates and executes at least one additional set of reusable work primitives to complete at least one additional work objective that is different from both the first and second work objectives. In each of the sub-methods 100, 210, and 250, the same robot is deployed using the same library of reusable work primitives, but the first work objective, the second work objective, and the at least one additional work objective are all different from each other, so that the corresponding workflows (i.e., the first workflow, the second workflow, and the at least one additional workflow, respectively) initiated by the robot to complete the work objectives may all be different from each other. In accordance with the present systems, apparatus, and methods, the work primitives in the robot's library of work primitives are reusable such that any or all of the following are true: 1) at least one work primitive included in the first workflow to complete the first work objective is also included in the second workflow to complete the second work objective (i.e., is common to or "reused" with the second workflow); and 2) at least one work primitive included in the second workflow to complete the second work objective is also included in the at least one additional workflow to complete the at least one additional work objective (i.e., is common to or "reused" with the at least one additional workflow).3) at least one work primitive included in the at least one additional workflow for completing the at least one additional work objective is also included in the first workflow for completing the first work objective (i.e., is common to or reused in the first workflow), and / or 4) at least one work primitive included in the first workflow for completing the first work objective is also included in both the second workflow for completing the second work objective and in the at least one additional workflow for completing the at least one additional work objective (i.e., is common to or reused in). In the latter scenario, at least one reusable work primitive is included in all of the first workflow, the second workflow, and the at least one additional workflow.
[0082] Robots can come in a variety of different forms and can include a variety of different components. The robot can include a housing, a carrier, or otherwise mechanically coupled body or legs that includes at least one processor communicatively coupled to a non-transitory recording medium readable by the at least one processor, as described above. Advantageously, the robot can also include at least one physically actuatable component mechanically coupled to the body and communicatively coupled to the at least one processor, the at least one physically actuatable component being controllably movable and operable to effect changes in, on, or to the robot and / or the robot's environment. Throughout this specification and the appended claims, the term "physically actuatable component" refers to an actual physical part of the robot that is controllably actuatable (e.g., by the robot or by an operator, controller, or pilot of the robot) and changes in some physical way involving motion (including, but not limited to, translation and / or rotation). Non-limiting examples of physically actuatable components include arms, end effectors, grippers, hands, fingers, legs, extendable and / or displaceable support structures such as necks and booms, and wheels.
[0083] In accordance with the present systems, apparatus, and methods, when a robot includes at least a first physically actuable component, a library of reusable work primitives stored (e.g., on a non-transitory recording medium readable by at least one processor of the robot) or otherwise accessed by the robot may include a set of reusable work primitives executable by at least the first physically actuable component. That is, the library of reusable work primitives of the robot may include specific reusable work primitives each executable by at least the first physically actuable component.
[0084] Completion of some work objectives may, for example, advantageously deploy a first physically actuable component of the robot to effect a change to the robot and / or its environment. In this case, when the robot initiates a workflow to complete a work objective per act 102 of method 100 and / or act 202 (of sub-method 210) of method 200, the robot may initiate a first set of reusable work primitives including at least one reusable work primitive from the set of reusable work primitives executable by the first physically actuable component. As the robot executes the workflow, the robot executes at least one reusable work primitive from the set of reusable work primitives executable by the first physically actuable component, such that the first physically actuable component is actuated to effect a change to the robot or the robot's environment in some purposeful manner characterized by the at least one reusable work primitive executable by the first physically actuable component. An example of such an embodiment in which the at least one physically actuatable component is or includes a component actuated to grasp an object, such as a gripper or hand (e.g., an end effector), is shown in FIG.
[0085] 3 is a flow diagram illustrating an exemplary method 300 of operation of a robot in accordance with the present systems, apparatus, and methods. To perform the method 300, the robot includes at least a first physically actuable component operable to grasp an object, and the robot's library of reusable work primitives includes a set of reusable grasping primitives executable by the at least a first physically actuable component operable to grasp an object. The method 300 includes three acts 301, 302, and 303, although one of ordinary skill in the art will understand that in alternative implementations, certain acts may be omitted and / or additional acts may be added. One of ordinary skill in the art will also understand that the order of the illustrated acts is shown for illustrative purposes only and may be altered in alternative implementations.
[0086] Method 300 is substantially similar to method 100, with the added detail that a first work goal completed by the robot specifically includes grasping an object. Thus, at 301 of method 300, the robot initiates a first work goal including grasping an object (in a manner similar to that described for act 101 of method 100). By way of non-limiting example, the first work goal may include picking up an object, displacing an object, pulling an object, twisting or rotating an object, grasping an object (such as a tool or implement), and / or otherwise manipulating an object.
[0087] At 302, the robot initiates a first workflow (in a manner similar to that described for act 102 of method 100) to complete a first work objective. In accordance with the present systems, apparatus, and methods, in an example method 300, the first workflow includes at least one reusable grasping primitive from the robot's library of available reusable work primitives, the at least one reusable grasping primitive being executed by a first physically actuatable component operable to grasp an object. Throughout this specification, the term "grasping primitive" refers to a particular configuration adopted by a physically actuatable component operable to grasp an object to grasp the object in a particular manner. For example, if the physically actuatable component operable to grasp an object is or includes a hand (i.e., an analogue of a human hand) with multiple fingers and a thumb, different grasping primitives may correspond to different arrangements or configurations of the fingers and thumb when grasping the object. Such a hand-like physically actuable component operable to grasp an object may be optimal for grasping different objects in different ways, depending, among other things, on the object's intended use and / or the object's properties (e.g., shape, size, geometry, rigidity, fragility). The particular "different ways" by which grasping may be accomplished may correspond to respective grasping primitives, various non-limiting examples of which are shown in FIG. 4.
[0088] 4 is an illustration of an exemplary set of reusable grasping primitives 400 in accordance with the present systems, apparatus, and methods. In the exemplary set of reusable grasping primitives 400, the physically actuatable component actuated to grasp an object is a robotic hand having four fingers (like a human hand) and an opposable thumb, with the grasping primitives corresponding to different hand configurations each suitable for grasping in a different manner. However, one skilled in the art will appreciate that the teachings herein may be applied in alternative implementations in which the physically actuatable component actuated to grasp an object includes a different number of fingers, such as two fingers, three fingers, five fingers, six fingers, etc.
[0089] In FIG. 4 , the grasping primitives 400 are divided into two high level categories: “strong” grasping primitives and “precise” grasping primitives, with the “strong” grasping primitives providing a strong grasp suitable for, e.g., grasping a strong rigid object or applications where a very secure grasp is desired, and the “precise” grasping primitives providing a gentle grasp suitable for, e.g., grasping a delicate soft object or applications where a very manipulative grasp is desired. The “strong” and “precise” grasping primitives categories are further divided into subcategories based on the shape of the object to be grasped (e.g., cylindrical or circular) and the configuration / arrangement of the fingers and thumb of the hand (e.g., heavy wrapped, light wrapped, disc-shaped, spherical, four fingered, one fingered), respectively. In this manner, the exemplary set of reusable grasping primitives 400 includes eight unique grasping primitives that can be autonomously deployed by a physically actuable component, such as a hand, that is actuated to grasp an object in accordance with the present systems, apparatus, and methods. However, those skilled in the art will appreciate that the exemplary set of eight reusable grasping primitives 400 in FIG. 4 is provided for illustrative purposes only, and that in practice, a set of reusable grasping primitives may be or may be comprised of any number and combination of grasping primitives, depending on the particular implementation: all eight reusable grasping primitives 400 shown in FIG. 4 and at least one additional reusable grasping primitive not shown in FIG. 4; or an entirely different set of reusable grasping primitives that does not include any of the eight reusable grasping primitives 400 shown in FIG. 4. Additionally, in different implementations, the set of reusable grasping primitives may follow a different organizational structure than that shown in FIG. 4, or the set of reusable grasping primitives may not follow an organizational structure at all.
[0090] Returning to method 300 of Figure 3, at 303, the robot executes the first workflow initiated at 302 (in a manner similar to that described for act 103 of method 100). In executing the first workflow at 303, a first physically actuatable component operable to grasp an object executes at least one reusable grasping primitive to grasp the object in a particular manner (e.g., heavy wrap or one finger) appropriate for the object or work objective. Executing the first workflow at 303 completes the first work objective.
[0091] 5 is a flow diagram illustrating an exemplary method 500 of operation of a robot to grasp an object in accordance with the present systems, devices, and methods. To perform the method 500, the robot includes a robotic hand having a plurality of fingers and an opposable thumb, at least one processor operable to control the operation of the robotic hand, at least one sensor communicatively coupled to the at least one processor, and a processor-readable non-transitory storage medium communicatively coupled to the at least one processor. The processor-readable non-transitory storage medium stores a library of reusable grasping primitives and processor-executable instructions that, when executed by the at least one processor, cause the robotic hand to autonomously execute the reusable grasping primitives in the library of reusable grasping primitives. The method 500 includes four actions 501, 502, 503, and 504 and one sub-action 531, although one skilled in the art will appreciate that in alternative implementations, certain actions and / or sub-actions may be omitted and / or additional actions and / or sub-actions may be added. Those skilled in the art will also appreciate that the order of the illustrated acts and / or sub-acts is shown for illustrative purposes only and may be varied in alternative implementations.
[0092] At least one sensor collects data about the object in 501. In some implementations, the at least one sensor may include at least one optical sensor, such as at least one camera, and in 501, the at least one optical sensor may collect optical data, such as at least one image, about the object. In some implementations, the at least one sensor may include at least one force sensor or tactile sensor, and in 501, the at least one force sensor or tactile sensor may collect force data or tactile data about the object. Some sensor systems deployed in 501 may include a signal emitter, such as a LiDAR system or other scanner system, for example based on radio frequency.
[0093] In 502, the data collected by the at least one sensor in 501 is analyzed by at least one processor to determine the shape of the object. Where the at least one sensor employed in 501 includes at least one optical sensor, one skilled in the art will appreciate that the analysis performed in 502 may employ any of a wide range of machine vision and / or digital image processing techniques, including but not limited to stitching, registration, filtering (e.g., morphological filtering), thresholding, pixel counting, segmentation, edge detection, color analysis, blob detection and extraction, neural net / deep learning / machine learning processing, pattern recognition including template matching, and / or metrology / measurement.
[0094] In 503, the at least one processor selects a particular reusable grasping primitive from the library of reusable grasping primitives based, at least in part, on the shape of the object determined in 502. The particular reusable grasping primitive selected by the at least one processor may in some implementations be or include a particular reusable grasping primitive that the processor determines to best fit (or best fit) the shape of the object compared to (or in contrast to) all other reusable grasping primitives in the library of reusable grasping primitives. As an example, a particular reusable grasping primitive that "best fits" the shape of the object may be a particular reusable grasping primitive employing a multiple finger and opposable thumb configuration of a robotic hand that best fits or fits the shape of the object compared to all other reusable grasping primitives in the library of reusable grasping primitives.
[0095] In some implementations, to select a particular reusable grasping primitive in 503, the at least one processor may simulate or model a robotic hand grasping an object (given the shape of the object determined in 502) with each reusable grasping primitive in the library of reusable grasping primitives to determine which particular reusable grasping primitive in the library of reusable grasping primitives best fits the shape of the object compared to other grasping primitives in the library of reusable grasping primitives. The simulation / modeling step may include assigning each reusable grasping primitive in the library of reusable grasping primitives a respective score based on how well the reusable grasping primitive fits, accommodates, or fits the shape of the object and / or how reliably a grasp is or is achieved. In implementations employing such a scoring system, the at least one processor may return or select the reusable grasping primitive with the highest score as the particular reusable grasping primitive that best fits the shape of the object compared to all other reusable grasping primitives in the library of reusable grasping primitives. In some implementations, the at least one processor may first (i.e., prior to modeling or simulating grasping the object with a robotic hand) filter reusable grasping primitives that are unlikely to provide a good match based on characteristics of the object or task that requires grasping the object, such as (for example) whether a strong grip or a prismatic grip is preferred. For example, with reference to FIG. 4, if an object is known to be hard and heavy and the shape of the object is determined (at 502) to be long and cylindrical, the at least one processor may filter the reusable grasping primitives such that only reusable grasping primitives corresponding to "columnar" and "strong" are modeled and / or simulated.
[0096] In some implementations, modeling and / or simulation are not employed, and at least one processor may select a particular reusable grasping primitive at 503 purely based on a process of inference or elimination filtering similar to that described above. That is, returning again to FIG. 4, if an object is known to be light and fragile, and the shape of the object is determined to be spherical (at 502), at least one processor may filter a library of reusable grasping primitives based on these characteristics to select a "precise, then round, then spherical" reusable grasping primitive at 503.
[0097] At 504, the robotic hand executes the particular reusable grasping primitive selected by the at least one processor at 503 to grasp the object. In some implementations, the robotic hand may be controlled by the at least one processor, and at 504, the at least one processor may execute processor-executable instructions that cause the robotic hand to autonomously execute the particular reusable grasping primitive to grasp the object.
[0098] As described in some of the previous examples, in some implementations, the at least one processor may select 503 a particular reusable grasping primitive from a library of reusable grasping primitives based on both the shape of the object determined in 502 and at least one additional parameter of the object (e.g., whether the object is heavy or light, whether the object is strong / durable, fragile / fragile, etc.). Thus, in some implementations of method 500, the at least one processor may analyze additional data about the object to determine at least one additional parameter of the object. Such additional data may be collected by at least one sensor (i.e., using the same sensor that collects data about the object in 501, or using a different sensor of the same sensor type or a different sensor type) or sent / transmitted to the robot from an external source (e.g., a pilot or other operator of the robot). For example, the robot may include at least one receiver communicatively coupled to the at least one processor that may receive, among other things, the additional data about the object. The additional data about the object may be provided in a variety of different forms, depending on the particular implementation. By way of example, the additional data regarding the object may include, alone or in any combination, any of the following: the hardness of the object, the stiffness of the object, the personality of the object, the function of the object, and / or the mass of the object.
[0099] A robot may actuate method 500 (i.e., grasping an object) as part of a workflow. That is, the act or action of grasping an object may correspond to one or more reusable work primitives executed by the robot as part of a workflow to advance a work objective. In accordance with the present systems, apparatus, and methods, the particular reusable work primitive selected by the robot in 503 may, in some implementations, be at least partially dependent on or influenced by what the robot does with the grasped object in advancing the work objective. For example, if the robot needs to swing the object or use it as a tool, the robot may employ a "strong" grasping primitive to ensure a firm grasp of the object. On the other hand, if the robot needs to pick and place the object, the robot may employ a "precise" grasping primitive to ensure precise placement of the object. Thus, in some implementations of method 500, act 503 may include sub-act 531. In 531, the robot (e.g., at least one processor of the robot) selects a particular reusable grasping primitive from a library of reusable grasping primitives based, at least in part, on both the shape of the object determined in 502 and information about the work objective to be performed by the robot. The information about the work objective to be performed by the robot is stored as data in a non-transitory storage medium readable by the processor of the robot and accessed by the at least one processor in selecting the reusable grasping primitive in 503.Data regarding work objectives to be performed by the robot may arrive on the robot's processor-readable non-transitory storage medium through a variety of different means, including, but not limited to, via instructions or commands received from a pilot or operator of the robot (e.g., by at least one receiver on the robot), via instructions or commands received locally from a pilot or operator of the robot (e.g., by a microphone or input terminal on the robot), and / or via autonomous action planning and / or reasoning performed by the robot's artificial intelligence.
[0100] In accordance with the present systems, methods, and apparatus, a robot can autonomously execute each reusable gripping primitive in a library of reusable gripping primitives. More generally, a robot can autonomously execute each reusable work primitive in a library of reusable work primitives. Such autonomy is developed or enabled by a training or learning process that includes having the robot execute reusable gripping / work primitives in repeated iterations. Those skilled in the art will already be familiar with the concept of training a robot to complete a work goal by operating the robot to play a complete set of instructions that accomplish the work goal (i.e., operating the robot to play an entire workflow), but in accordance with the present systems, methods, and apparatus, this conventional approach of operating a robot to play a complete set of instructions corresponding to an entire workflow is undesirably specialized and limiting. A robot trained to autonomously execute an entire workflow is a highly specialized robot that can autonomously complete only the work goal(s) corresponding to that workflow. Even minor changes in conditions, environment, or work goal specifications may prevent such highly specialized robots from completing the work goal autonomously. Conversely, the present systems, methods, and apparatus describe autonomous "general-purpose" robots, where such versatility stems, at least in part, from each robot's ability to autonomously execute individual work primitives (rather than just complete workflows) and "reuse" such work primitives across many different workflows that correspond to a wide range of different work goals. Thus, training a robot to autonomously execute reusable work primitives, as opposed to training a robot to autonomously execute an entire workflow, advantageously provides versatility that enables multipurpose robot applications. In other words, training a robot to autonomously execute reusable work primitives, as opposed to training a robot to autonomously execute a complete workflow, enhances the capabilities of the robot in terms of versatility, generality, and range of usefulness.
[0101] FIG. 6 is a flow diagram illustrating an exemplary computer-implemented method 600 of initializing a robot to complete multiple work objectives in accordance with the present systems, apparatus, and methods. Method 600 includes two primary actions 601 and 602, and action 602 includes two secondary actions 621 and 622, although one of ordinary skill in the art would understand that in alternative embodiments, certain actions / sub-actions may be omitted and / or additional actions / sub-actions may be added. One of ordinary skill in the art would also understand that the order of the illustrated actions / sub-actions is shown for illustrative purposes only and may be altered in alternative embodiments. Method 600 is a computer-implemented method that may be executed by one or more computer system(s) including conventional computing hardware, such as at least one processor communicatively coupled with at least one processor-readable non-transitory storage medium, and various other well-known components, such as a system bus, input / output peripherals, networking hardware, and conventional software and firmware stored on processor-readable non-transitory storage medium, such as a BIOS, various drivers, an operating system, and the like. In accordance with the present systems, methods, and apparatus, the at least one processor-readable non-transitory recording medium may also store data and / or processor-executable instructions (e.g., a computer program product) that, when executed by at least one processor communicatively coupled to the at least one processor-readable non-transitory recording medium, causes the computer system to perform the computer-implemented method 600.
[0102] In 601, a library of reusable work primitives is defined. Each reusable work primitive is executable by a robot, and each combination and permutation of reusable work primitives from the library of reusable work primitives is Each workflow is started by a robot, Different workflows driving different work goals ExecutionTo complete the task, the robot Real It will be carried out.
[0103] At 602, the robot is trained to autonomously perform each reusable work primitive in the library of reusable work primitives. Training the robot to autonomously perform each reusable work primitive in the library of reusable work primitives may include, for each reusable work primitive in the library of reusable work primitives, operating the robot to repeatedly perform the reusable work primitive without considering, allowing for, or adapting to other reusable work primitives that may precede or follow the reusable work primitive in any workflow. In other words, while conventional techniques for training a robot to autonomously reproduce an entire workflow include operating the robot to execute a series of instructions that are each successively dependent on preceding and following instructions to complete a work goal, in the present system, method, and apparatus, the robot is trained to autonomously reproduce each reusable work primitive by executing, for each reusable work primitive, an independent set of instructions that are not dependent on preceding or following instructions and do not complete a work goal by themselves. This process of training the robot in 602 is shown in FIG.
[0104] In 621, training the robot in 602 may include generating processor-executable instructions that, when executed by at least one processor of the robot, cause the robot to selectively and autonomously execute each reusable work primitive in a library of reusable work primitives. Generating the processor-executable instructions may include an iterative process of repeatedly operating the robot to execute and re-execute the reusable work primitive for each reusable work primitive, where those motions and control parameters (e.g., actuation timing, force and torque levels, etc.) that cause the robot to most successfully (e.g., with the fewest errors, in the shortest amount of time, with the greatest accuracy or precision, or other similar measures of success) may be encoded as processor-executable instructions that, when re-executed by the robot, cause the robot to selectively and autonomously re-execute the reusable work primitive.
[0105] At 622, the processor-executable instructions generated at 621 are sent to a non-transitory storage medium readable by a processor of the robot. In other words, at 622, the processor-executable instructions generated at 621 are "loaded" into the robot to be called and played by the robot to cause the robot to autonomously execute reusable work primitives.
[0106] As discussed above, training a robot to autonomously perform reusable work primitives in accordance with the present systems, methods, and apparatus may be completed in a simulated environment. For example, training the robot in 602 may include training the robot to autonomously perform each reusable work primitive in a library of reusable work primitives in the simulated environment, as shown in FIG.
[0107] FIG. 7 is a flow diagram illustrating an exemplary computer-implemented method 700 of initializing a robot to complete multiple work objectives in accordance with the present systems, apparatus, and methods. Method 700 includes two primary acts 701 and 702, with act 702 including three secondary acts 721, 722, and 723, although one of ordinary skill in the art would understand that in alternative embodiments, certain acts / sub-acts may be omitted and / or additional acts / sub-acts may be added. One of ordinary skill in the art would also understand that the order of the illustrated acts / sub-acts is shown for illustrative purposes only and may be altered in alternative embodiments. Method 700 is a computer-implemented method that may be executed by one or more computer system(s) including conventional computing hardware, such as at least one processor communicatively coupled with at least one processor-readable non-transitory storage medium, and various other well-known components, such as a system bus, input / output peripherals, networking hardware, and conventional software and firmware stored on processor-readable non-transitory storage medium, such as a BIOS, various drivers, an operating system, and the like. In accordance with the present systems, methods, and apparatus, the at least one processor-readable non-transitory recording medium may also store data and / or processor-executable instructions (e.g., a computer program product) that, when executed by at least one processor communicatively coupled to the at least one processor-readable non-transitory recording medium, causes the computer system to perform the computer-implemented method 700.
[0108] At 701, a library of reusable work primitives is defined, similar to act 601 of method 600. Each reusable work primitive is executable by a robot.
[0109] At 702, the robot is trained in the simulated environment to autonomously execute each reusable work primitive in the library of reusable work primitives. Throughout this specification and the appended claims, the term "simulated," such as "simulated environment," "simulated instance," and the like, is used to refer to a virtual or digital copy or emulation of a physical counterpart. Thus, a "simulated environment" is a virtual or digital representation of a physical environment encoded with processor-executable instructions and / or data stored on a non-transitory recording medium readable by at least one processor and realized by at least one processor executing such processor-executable instructions and / or data. The processor-executable instructions and / or data can encode dimensions (e.g., spatial parameters), geometry, and other parameters (e.g., physical constants such as acceleration due to gravity, the speed of light, etc.) that characterize the space and, if applicable, any objects contained therein. A simulated environment may or may not represent a known real-world environment. For interfacing with a user, the simulated environment may be displayed on a screen or monitor, although such visual manifestation of the simulated environment is not necessary in all implementations of the present systems, methods, and devices. In some embodiments, training the robot in the simulated environment may include training one or more simulated experiment(s) of the robot in the simulated environment. To this end, act 702 includes subacts 721, 722, 723.
[0110] At 721, which is part of training the robot in the simulated environment at 702, a first simulated instance of the robot is generated in the simulated environment. The simulated instance of the robot may include a virtual or digital representation of the robot encoded with processor-executable instructions and / or data stored on a non-transitory recording medium readable by at least one processor and implemented by at least one processor executing such processor-executable instructions and / or data. The processor-executable instructions and / or data may encode dimensions (e.g., spatial parameters), shape, and other parameters (e.g., degrees of freedom, material properties, mass, etc.) that characterize a real-world physical robot and, if applicable, how it moves. For interface with a user, the simulated instance of the robot may be displayed on a screen or monitor, although such visual display of the simulated instance of the robot is not necessary in all implementations of the present systems, methods, and devices.
[0111] At 722, processor-executable instructions that are part of training the robot in the simulated environment at 702 are repeatedly executed (by at least one processor) to cause a first simulated instance of the robot to execute a first reusable work primitive in a library of reusable work primitives.
[0112] At 723, which is part of training the robot in the simulated environment at 702, the processor-executable instructions repeatedly executed at 722 are refined based on at least one result of repeatedly executing the processor-executable instructions to cause the first simulated instance of the robot to perform a first reusable work primitive at 722. For example, the processor-executable instructions repeatedly executed at 722 may be refined to adjust one or more parameters (e.g., timing or duration of actuations, force or accuracy of actuations, target values or thresholds, sensory triggers, etc.) that govern how the first simulated instance of the robot performs the first reusable work primitive to improve or replicate the result of executing the processor-executable instructions at 723. If a first iteration of executing instructions executable by a processor to cause a first simulated instance of a robot to perform a first reusable work primitive at 722 produces results that are flawed in any way (e.g., the first reusable work primitive is executed too slowly, with insufficient precision or accuracy, too quickly, with too much precision or accuracy, or is inconsistent with the expected results), then the instructions can be refined at 723 and then repeated at 722 (i.e., for a second iteration) to confirm that a more desirable result is achieved.
[0113] In some implementations, method 700 may continue for any number of additional reusable work primitives in the library or reusable work primitives. Sub-acts 722 and 723 may be repeated for each reusable work primitive in the library of reusable work primitives. For example, additional processor-executable instructions may be repeatedly executed (i.e., at 722) to cause the first simulated instance of the robot to execute at least one additional reusable work primitive in the library of reusable work primitives, and the processor-executable instructions to cause the first simulated instance of the robot to execute the at least one additional reusable work primitive may be refined (i.e., at 723) based on at least one result of repeatedly executing the processor-executable instructions to cause the first simulated instance of the robot to execute the at least one additional reusable work primitive.
[0114] Training a robot to autonomously perform reusable work primitives according to the present systems, methods, and apparatus may be performed in the real physical world with a real physical robot, or in a simulated world with a simulated instance of the robot. In either case, instructions executable by the same or substantially similar processors may be used to control or govern the behavior of the real / simulated robot. The advantage of training a simulated instance of a robot in a simulated environment (as opposed to training a real physical robot in a real physical environment) is that doing so does not cause wear and tear on the physical hardware of the real physical robot. As discussed above, the training process requires the robot to repeatedly perform the reusable primitive tasks it is training on, which can cause significant wear and tear on the robot's hardware and shorten the functional life of the robot before it is deployed to complete meaningful work. Furthermore, in the early stages of training, the robot may be very poor at performing the reusable work primitives, and early attempts to perform them may cause damage to the robot itself or its surroundings. For example, the robot may fall over or collide with objects in the surroundings. Training a simulated instance of a robot in a simulated environment can avoid such risks for a real, physical robot.
[0115] A further advantage of training a simulated instance of a robot in a simulated environment is that the training process may be accelerated by parallelization. In some implementations, any number of additional simulated instances of a robot may be generated in the simulated environment and trained in parallel with the first simulated instance of the robot. For example, some implementations of method 700 may further include generating at least one additional simulated instance of the robot in the simulated environment and repeatedly executing processor-executable instructions that cause the at least one additional simulated instance of the robot to execute a first reusable work primitive in a library of reusable work primitives alongside or in parallel (or independently) with the first simulated instance of the robot. The processor-executable instructions that cause both the first simulated instance of the robot and the at least one additional simulated instance of the robot to execute the first reusable work primitive may be refined based on at least one result of repeatedly executing the processor-executable instructions that cause the first simulated instance of the robot and the at least one additional simulated instance of the robot to execute the first reusable work primitive. In some implementations, a single common instance of the processor-executable instructions may be executed by both / all simulated instances of the robot and refined based on results across all simulated instances of the robot (e.g., each simulated instance of the robot may operate to perform the same reusable work primitives, with some controlled variations, such as each grasping a different object). In other implementations, each simulated instance of the robot executes a respective instance of the processor-executable instructions, and each instance of the processor-executable instructions is refined based on results achieved with the corresponding simulated instance of the robot. In this latter scenario, each instance of the processor-executable instructions may be compared after the refinement process, and a globally optimal instance of the processor-executable instructions may be selected.
[0116] Training in a simulation has the added advantage that it can be conducted continuously and uninterrupted (ie, without pauses or rest) for extended periods of time.
[0117] FIG. 8 is an illustrated diagram showing an example simulated environment 800 in which a robot is trained through simulation to execute reusable work primitives in accordance with the present system, method, and apparatus. The simulated environment 800 includes a simple space with a flat ground 801 and is not based on any real-world space. Multiple simulated instances of a real-world robot exist in the simulated environment 800, and only an example first simulated instance 810 is invoked in FIG. 8 to reduce clutter. Each simulated instance of the robot 810 repeatedly executes a particular reusable grasping primitive to grasp a respective object 820 (only one example object 820 is invoked in FIG. 8 to reduce clutter). In accordance with the present systems, methods, and apparatus, the simulated instances of the robot 810 are each trained to autonomously execute reusable work primitives, and parallelizing such training across multiple simulated instances rather than the complete workflow can significantly speed up the training process compared to doing so on real, physical robot hardware, while reducing damage or wear to real-world physical components or objects. Depending on the quality of the simulation, the processor-executable instructions used to control the operation of the simulated instances of the robot 810 and trained to optimize the autonomous performance of the reusable work primitives can be moved from the simulation and loaded onto a real, physical robot. In other words, provided that the simulated instances of the robot 810 and the simulated environment 800 are sufficiently representative of their real-world physical analogs, the same or substantially similar processor-executable instructions developed through training of the simulated instances 810 in the simulated environment 800 can be deployed to a real, physical robot in the real, physical world to enable such real, physical robot to autonomously execute the reusable work primitives.
[0118] The training process described herein employs processor-executable instructions that, when executed, cause a robot, or any number of simulated instances of a robot, to execute reusable work primitives. In accordance with the present systems, methods, and apparatus, such processor-executable instructions may originate from and / or be generated by a teleoperated system.
[0119] 9 is a flow diagram illustrating an exemplary computer-implemented method 900 of initializing a robot to complete multiple work goals in accordance with the present systems, apparatus, and methods. Method 900 includes two main actions 601 and 602, and action 602 includes three sub-actions 921, 922, and 923, although one skilled in the art would understand that in alternative embodiments, certain actions / sub-actions may be omitted and / or additional actions / sub-actions may be added. One skilled in the art would also understand that the order of the illustrated actions / sub-actions is shown for illustrative purposes only and may be altered in alternative embodiments. Actions 601 and 602 of method 900 are substantially similar to actions 602 and 602 of method 600. Method 900 is a computer-implemented method that may be performed by one or more computer system(s) including conventional computing hardware, such as at least one processor communicatively coupled to at least one processor-readable non-transitory storage medium, and various other well-known components, such as a system bus, input / output peripherals, network hardware, and conventional software and firmware stored on a processor-readable non-transitory storage medium, such as a BIOS, various drivers, an operating system, etc. In accordance with the present systems, methods, and apparatus, the at least one processor-readable non-transitory storage medium may also store data and / or processor-executable instructions (e.g., a computer program product) that, when executed by the at least one processor communicatively coupled to the at least one processor-readable non-transitory storage medium, cause the computer system to perform the computer-implemented method 900.
[0120] In 601, a library of reusable work primitives is defined in a manner similar to that detailed in method 600.
[0121] At 602, a robot is trained to autonomously perform each reusable work primitive in a library of reusable work primitives in a manner similar to that detailed in method 600, except that act 602 of method 900 includes sub-acts 921, 922, and 923. In some implementations of method 900, act 602 may be performed using only one or more actual physical robot(s), while in other implementations of method 900, act 602 may be performed using any number of simulated instances of actual physical robots.
[0122] Part of training the robot 602 includes receiving 921 teleoperation instructions to cause (a simulated instance of) the robot to perform a first reusable work primitive in a library of reusable work primitives. The teleoperation instructions may be received from a teleoperation system, further exemplary details of which are described below. If the acts 602 are performed using a real physical robot, the teleoperation instructions may be received by the real physical robot at 921. If the acts 602 are performed using any number of simulated instances of a real physical robot, the teleoperation instructions may be received by a computer system running the simulation at 921.
[0123] As part of training the robot 602, teleoperation instructions are executed at 922, causing (a simulated instance of) the robot to perform a first reusable work primitive. If the acts 602 are performed with a real physical robot, the teleoperation instructions may be executed by the real physical robot at 922. If the acts 602 are performed using any number of simulated instances of a real physical robot, the teleoperation instructions may be executed at 922 by a computer system running the simulation.
[0124] At 923, which is part of training the robot in act 602, processor-executable instructions are generated. The processor-executable instructions cause the (simulated instance of the) robot to play teleoperation instructions that cause the (simulated instance of the) robot to perform a first reusable work primitive. In other words, the processor-executable instructions may represent executable copies of teleoperation instructions that, when executed by the (simulated instance of the) robot, cause the (simulated instance of the) robot to play the teleoperation instructions and autonomously perform the first reusable work primitive without the teleoperation instructions themselves (i.e., without receiving additional teleoperation instructions that provide details of how to perform the first reusable work primitive). If act 602 is performed with an actual physical robot, the processor-executable instructions generated at 923 may be invoked or executed by the robot to autonomously perform the first reusable work primitive, as needed. If act 602 is performed using any number of simulated instances of a real, physical robot, the processor-executable instructions may be delivered to or loaded onto the real, physical robot (e.g., as a computer program product) and executed by the robot to cause the robot to perform the first reusable work primitive when needed.
[0125] In accordance with the present systems, methods, and apparatus, subacts 921, 922, and 923 of act 602 of method 900 may be repeated for each reusable work primitive in the library of reusable work primitives.
[0126] In some implementations, the teleoperation instructions may include a first set of teleoperation instructions that cause the (simulated instance of the) robot to execute a first instance of a first reusable work primitive in a library of reusable work primitives, and a second set of teleoperation instructions that cause the (simulated instance of the) robot to execute a second instance of a first reusable work primitive in the library of reusable work primitives, where the first teleoperation instruction set and the second teleoperation instruction set differ from each other in some respect such that the first instance of the first reusable work primitive and the second instance of the first reusable work primitive also differ in some respect. The difference(s) between the first teleoperation instruction set and the second teleoperation instruction set, and the resulting difference(s) between the first instance of the first reusable work primitive and the second instance of the first reusable work primitive, are compared to identify and further develop advantageous formulations of teleoperation instructions that cause the (simulated instance of the) robot to execute the first reusable work primitive. For example, in some implementations of method 900, results of executing a first teleoperation instruction set to cause a robot to execute a first instance of a first reusable work primitive and executing a second teleoperation instruction set to cause a robot to execute a second instance of the first reusable work primitive may be evaluated (e.g., compared) to determine whether the first teleoperation instruction set or the second teleoperation instruction set produces a better result according to a measure of success. A "better result" may include a result that has fewer errors, is more accurate or precise, uses less power, executes more quickly, executes more aesthetically, and / or is advantageous according to other measures of success.Once a particular teleoperation instruction set that produces better results is identified (i.e., among the first teleoperation instruction set and the second teleoperation instruction set, and / or other teleoperation instruction sets that have been evaluated), the processor-executable instructions generated at 923 may advantageously be designed to cause the (simulated instance of) the robot to reproduce any of the teleoperation instructions that produce the better results.
[0127] In some implementations of method 900, at least one element of the first teleoperation instruction set and at least one element of the second teleoperation instruction set may be combined in the processor-executable instructions generated at 923. That is, the processor-executable instructions generated at 923 may include a combination of advantageous elements of the first teleoperation instruction set and advantageous elements of the second teleoperation instruction set.
[0128] A teleoperation system, and thus the teleoperation instructions received from a teleoperation system, can take a variety of different forms. In some implementations, a teleoperation system can include sensors that detect real physical actions performed by a real physical entity (such as a human user) piloting a (simulated instance of) a robot, and the teleoperation instructions can cause the (simulated instance of the robot) to emulate real physical actions performed by such a real teleoperated pilot. A teleoperation system that causes a (simulated) robot to emulate real physical actions performed by a real teleoperated pilot is referred to herein as a "low-level" teleoperation system, due to the lower level of abstraction between the actions of the pilot and the actions of the (simulated) robot. Thus, teleoperation instructions provided by a low-level teleoperation system are referred to herein as "low-level" teleoperation instructions.
[0129] In some implementations, the teleoperation system may include a graphical user interface (GUI) that presents a set of candidate actions to a user or pilot, and teleoperation instructions may cause the (simulated instance of the robot) to execute the action selected from the GUI. Such GUI-based teleoperation systems provide a higher level of abstraction between the actions of the pilot and the actions of the (simulated instance of the robot) and are referred to herein as "high-level" teleoperation systems. Thus, teleoperation instructions provided by a high-level teleoperation system are referred to herein as "high-level" teleoperation systems.
[0130] In some implementations, initial iterations of the training process (e.g., method 600, method 700, and / or method 900) can be used to generate a first set of low-level teleoperation instructions that cause (the simulated instance of the robot) to execute a first reusable work primitive autonomously, and subsequent iterations of the training process can use higher-level teleoperation instructions to further refine the processor-executable instructions that cause (the simulated instance of the robot) to execute the first reusable work primitive autonomously.
[0131] FIG. 10 is an illustrated diagram of an exemplary robotic system 1000 of various features and components described throughout the present systems, methods and apparatus. The robotic system 1000 comprises a robotic body 1001 having a first physically actuable component 1002a and a second physically actuable component 1002b mechanically coupled to the body 1001. In the illustrated embodiment, the first and second physically actuable components 1002a and 1002b each correspond to a respective robotic hand, although one skilled in the art will appreciate that in alternative embodiments, the physically actuable components may take other forms (such as arms or legs, non-hand-like end effectors such as cutters or suction tubes, or other forms useful for the particular application the robot is intended to perform). The robotic hand 1002a emulates a human hand and includes multiple fingers 1021a, 1022a, 1023a, and 1024a and an opposable thumb 1025a. The robotic hand 1002b resembles a mirror image of the robotic hand 1002a, although corresponding details are not labeled for the robotic hand 1002b to reduce clutter. The robotic hands 1002a and 1002b may be physically actuable by a variety of different means, including electromechanical actuation, cable-driven actuation, magnetorheological fluid-based actuation, and / or hydraulic actuation. Some exemplary details of actuation techniques that may be employed to physically actuate the robotic hands 1002a and 1002b are described in U.S. Provisional Patent Application No. 63 / 191,732, filed May 21, 2021, and entitled "Systems, Devices, And Methods For A Hydraulic Robotic Arm," and in U.S. Patent Application No. 17 / 491,577, both of which are incorporated herein by reference in their entireties.
[0132] The robot body 1001 further comprises at least one sensor 1003 for detecting and / or collecting data about the environment of the robot system 1000 and / or objects within the environment. In the illustrated embodiment, the sensor 1003 corresponds to a sensor system including a camera, a microphone, and an initial measurement unit itself consisting of three orthogonal accelerometers, a magnetometer, and a compass.
[0133] For purposes of illustration, FIG. 10 includes details of certain exemplary components carried by or within a robot body 1001 in accordance with the present systems, methods, and apparatus. Such components include at least one processor 1030 and at least one processor-readable non-transitory storage medium, or “memory” 1040, communicatively coupled to the processor 1030. The memory 1040 stores a library of reusable work primitives 1041 (which may or may not include a library of reusable grasping primitives for either or both of the robot hands 1002a and / or 1002b, depending on the implementation), and processor-executable instructions 1042 that, when executed by the processor 1030, cause the robot body 1001 (including applicable and operable components, such as either or both of the robot hands 1002a and / or 1002b) to selectively and autonomously execute reusable work primitives in the library of reusable work primitives 1041. Depending on the particular implementation, the processor-executable instructions 1042 may further include processor-executable instructions (e.g., a computer program product) that cause the robotic system to perform associated acts of any or all of methods 100, 200, 300, and / or 500, and / or methods 700 and / or 900 described herein.
[0134] The processor 1030 is also communicatively coupled to a wireless transceiver 1050 through which the robot body 1001 transmits and receives wireless communication signals 1060 to and from an exemplary teleoperation system 1070. To this end, the teleoperation system 1070 also includes a wireless transceiver 1071.
[0135] For purposes of illustration, the teleoperation system 1070 includes both a low-level teleoperation interface 1080 and a high-level teleoperation interface 1090. The low-level teleoperation interface 1080 includes a sensor system 1081 that detects actual physical actions performed by a human pilot 1082, and a processing system 1083 that converts such actual physical actions into low-level teleoperation instructions that, when executed by the processor 1030, cause the robot body 1001 (and any applicable and operable components, such as hands 1002a and / or 1002b) to emulate the physical actions performed by the pilot 1082. In some implementations, the sensor system 1081 may include many sensory components typically employed in the field of virtual reality gaming, such as force-sensing gloves, accelerometer-based sensors worn on the body of the pilot 1082, and a VR headset that allows the pilot 1082 to view optical data collected by the sensors 1003 of the robot body 1001. The high-level teleoperation interface 1090, in this exemplary implementation, includes a simple GUI displayed on a tablet computer. The GUI of the high-level teleoperation interface 1090 provides a set of buttons each corresponding to a respective action that can be performed by the robot body 1001 (and any applicable and actuable components, such as hands 1002a and / or 1002b). The action(s) selected by the user / pilot of the high-level teleoperation interface 1090 through the GUI are translated into high-level teleoperation instructions that, when executed by the processor 1030, cause the robot body 1001 (and any applicable and actuable components, such as hands 1002a and / or 1002b) to perform the selected action(s).
[0136] In accordance with the present systems, apparatus, and methods, a multipurpose robot may be trained to autonomously execute a finite number of reusable work primitives to autonomously execute a multitude of work tasks. Such a multipurpose robot may include an on-board processor-readable non-transitory storage medium communicatively coupled to at least one on-board processor. The processor-readable non-transitory storage medium may store data and / or processor-executable instructions and may include a library of reusable primitives that the robot can execute autonomously. In operation, the at least one processor of the robot executes the data and / or processor-executable instructions to cause the robot to analyze a task and identify a particular sequence of work primitives from the stored library of work primitives that, when executed by the robot, results in the completion of an objective of the task.
[0137] The robots described herein, in some embodiments, can employ any of the teachings of U.S. Patent Application No. 16 / 940,566 (U.S. Patent Application Publication No. 2021-0031383), U.S. Patent Application No. 17 / 023,929 (U.S. Patent Application Publication No. 2021-0090201), U.S. Patent Application No. 17 / 061,187 (U.S. Patent Application Publication No. 2021-002 ... 021-0122035), U.S. Patent Application (Application No. 17 / 098,716 (U.S. Patent Application Publication No. 2021-0146553), U.S. Patent Application (Application No. 17 / 111,789 (U.S. Patent Application Publication No. 2021-0170607), U.S. Patent Application (Application No. 17 / 158,244 (U.S. Patent Application Publication No. 2021-0234997), U.S. Provisional Patent Application (Provisional No. 63 / 001,755 (U.S. Patent Application Publication No. 2021-0307170), and / or U.S. Provisional Patent Application (Provisional Application No. 63 / 057,461), and U.S. Provisional Patent Application (Provisional Application No. 63 / 151,044), which are similar to U.S. Provisional Patent Application (Provisional Application No. 63 / 173,670), U.S. Provisional Patent Application (Provisional Application No. 63 / 184,268), U.S. Provisional Patent Application (Provisional Application No. 63 / 213, No. 63 / 293,973, and / or No. 63 / 278,817, each of which is incorporated herein by reference in its entirety.
[0138] Throughout this specification and the appended claims, the term "communicative" in its variations such as "communicatively coupled" and "communicatively coupled" is used generally to refer to any engineering arrangement for transferring and / or exchanging information. For example, a communicative coupling may be achieved via a variety of different media and / or forms of communication paths, including, but not limited to, conductive paths (e.g., conductive wires, conductive traces), magnetic paths (e.g., magnetic media), wireless signal transmission (e.g., radio frequency antennas), and / or optical paths (e.g., optical fibers). Exemplary communication couplings include, but are not limited to, electrical couplings, magnetic couplings, radio frequency couplings, and / or optical couplings.
[0139] Throughout this specification and the appended claims, infinitive verb forms are frequently used. Examples include, but are not limited to, "encode," "provide," "store," etc. Unless otherwise required by a specific context, such infinitive verb forms are used in an open and inclusive sense, such as "at least encode," "at least provide," "at least store," etc.
[0140] This specification, including the drawings and abstract, is not intended to be an exhaustive or limiting description of all implementations and embodiments of the present systems, devices, and methods. Those skilled in the art will appreciate that the various descriptions and drawings provided may be modified without departing from the spirit and scope of the present disclosure. In particular, the teachings herein are not intended to be limited by or to the illustrative computer systems and computing environments provided.
[0141] This specification provides various implementations and embodiments in the form of block diagrams, circuit diagrams, flow charts, and examples. Those skilled in the art will understand that any function and / or operation in such block diagrams, circuit diagrams, flow charts, or examples can be implemented individually and / or collectively by a wide variety of hardware, software, and / or firmware. For example, various embodiments disclosed herein may be equivalently implemented in whole or in part in one or more application specific integrated circuits (i.e., ASICs), standard integrated circuits, computer program(s) executed by any number of computers (e.g., programs executed on any number of computer systems), programs executed by any number of controllers (e.g., microcontrollers), and / or programs executed by any number of processors (e.g., microprocessors, central processing units, graphical processing units), and firmware, and any combination of the above.
[0142] Throughout this specification and the appended claims, "memory" or "recording medium" refers to a processor-readable medium that is an electronic, magnetic, optical, electromagnetic, infrared, semiconductor, or other physical device or means that stores or retains processor data, data objects, logic, instructions, and / or programs. When data, data objects, logic, instructions, and / or programs are implemented as software and stored in a memory or recording medium, such may be stored in any suitable processor-readable medium for use by any suitable processor-related instruction execution system, apparatus, or device, such as a computer-based system, a system including a processor, or other system, that can fetch the data, data objects, logic, instructions, and / or programs from the memory or recording medium and perform various acts or operations (i.e., processing steps) on and / or in response thereto. Thus, a "non-transitory processor-readable recording medium" may be any element that stores data, data objects, logic, instructions, and / or programs for use by or in connection with an instruction execution system, apparatus, and / or device. As specific, non-limiting examples, the processor-readable medium may be a portable computer diskette (magnetic, Compact Flash card, Secure Digital, etc.), Random Access Memory (RAM), Read Only Memory (ROM), Erasable Programmable Read Only Memory (EPROM, EEPROM, Flash memory), portable Compact Disc Read Only Memory (CDROM), digital tape, and / or any other non-transitory medium.
[0143] The claims of the present disclosure are as follows. This disclosure is intended to support, enable, and exemplify the claims, but is not intended to limit the claims to any particular implementation or embodiment. In general, the claims should be construed to include all possible implementations and embodiments, along with the full scope of equivalents to which such claims are entitled.
Claims
1. 1. A method of operating a robot to grasp an object, comprising: The robot comprises: a robotic hand having fingers and an opposable thumb; at least one processor operable to control the movement of the robotic hand; at least one sensor communicatively coupled to the at least one processor; a processor-readable non-transitory storage medium communicatively coupled to the at least one processor; having The non-transitory processor-readable recording medium includes: A library of reusable grasping primitives; instructions executable by the at least one processor that, when executed by the at least one processor, cause the robotic hand to autonomously execute the reusable grasping primitives from the library of reusable grasping primitives; Remember, The method comprises: collecting data about the object with the at least one sensor; analyzing the data with the at least one processor to determine a shape of the object; and simulating, by the at least one processor, the robot hand gripping the object using each reusable gripping primitive of the library of reusable gripping primitives to identify the reusable gripping primitive that best fits the shape of the object compared to all other reusable gripping primitives of the library of reusable gripping primitives. a particular reusable grasping primitive from said library of reusable grasping primitives; determining executing, by the robotic hand, the particular reusable grasping primitive to grasp the object; A method of having.
2. The above, executing, by the robotic hand, the particular reusable grasping primitive to grasp the object; causing the robotic hand to autonomously execute the particular reusable grasping primitive to grasp the object, The method of claim 1.
3. the at least one sensor includes at least one optical sensor; The above, collecting data regarding the object with the at least one sensor; collecting optical data about the object with the at least one optical sensor; The above, analyzing the data with the at least one processor to determine a shape of the object; analyzing the optical data by the at least one processor to determine a shape of the object. The method of claim 1.
4. analyzing, by the at least one processor, additional data relating to the object to determine at least one additional parameter of the object; a second step of selecting, by the at least one processor, a particular reusable grasping primitive from a library of reusable grasping primitives based at least in part on both items 1 and 2; Further comprising: Item 1 includes simulating, by the at least one processor, the robot hand gripping the object with each reusable gripping primitive in the library of reusable gripping primitives to determine the particular reusable gripping primitive in the library of reusable gripping primitives that best fits a shape of the object compared to all other gripping primitives in the library of reusable gripping primitives; Item 2 is at least one additional parameter of the object; The method of claim 1.
5. collecting, by the at least one sensor, the additional data relating to the object; and The additional data about the object is selected from the group consisting of: hardness of the object, stiffness of the object, personality of the object, function of the object, and mass of the object. The method according to claim 4.
6. the robot further comprises at least one receiver communicatively coupled to the at least one processor; The method comprises: receiving, by the receiver, the additional data relating to the object; The method of claim 4 further comprising:
7. The non-transitory storage medium readable by the processor further stores data of a work target to be executed by the robot, the work target including grasping the object; a second step of selecting, by the at least one processor, a particular reusable grasping primitive from a library of reusable grasping primitives based at least in part on both items 1 and 2; Further comprising: Item 1 includes simulating, by the at least one processor, the robot hand gripping the object with each reusable gripping primitive in the library of reusable gripping primitives to determine the particular reusable gripping primitive in the library of reusable gripping primitives that best fits a shape of the object compared to all other gripping primitives in the library of reusable gripping primitives; The item 2 is data of the work target to be executed by the robot; The method of claim 1.
8. The main body, a robotic hand having a plurality of fingers and an opposable thumb, the robotic hand being mechanically coupled to the body; at least one processor operable to control the movement of the robotic hand; at least one sensor communicatively coupled to the at least one processor; a processor-readable non-transitory storage medium communicatively coupled to the at least one processor; Equipped with The at least one processor-readable non-transitory storage medium includes: A library of reusable grasping primitives; Processor-executable instructions that, when executed by the at least one processor, Collecting data about the object; analyzing the data to determine a shape of the object; and simulating, by the at least one processor, the robot hand gripping the object using each reusable gripping primitive of the library of reusable gripping primitives to identify the reusable gripping primitive that best fits the shape of the object compared to all other reusable gripping primitives of the library of reusable gripping primitives. a particular reusable grasping primitive from said library of reusable grasping primitives; determining executing the particular reusable grasp primitive to grasp the object; A command to make the robot perform the following: Remember, robot.
9. The processor-executable instructions, when executed by the at least one processor, cause the robot to execute the particular reusable grasping primitive to grasp the object; and cause the robotic hand to autonomously execute the particular reusable grasping primitive to grasp the object. The robot according to claim 8.
10. the at least one sensor includes at least one optical sensor; The processor-executable instructions, when executed by the at least one processor, cause the robot to collect data regarding the object and cause the at least one optical sensor to collect optical data regarding the object. The robot according to claim 8.
11. The processor-readable non-transitory storage medium further stores processor-executable instructions that, when executed by the at least one processor, The processor executable instructions may include for the robot: analyzing additional data relating to the object to determine at least one additional parameter of the object; selecting the particular reusable grasping primitive from the library of reusable grasping primitives based at least in part on both items 1 and 2; and Let them do so, Item 1 includes simulating a robot hand grasping the object using each reusable grasping primitive in the library of reusable grasping primitives, and determining the particular reusable grasping primitive in the library of reusable grasping primitives that best fits a shape of the object compared to all other grasping primitives in the library of reusable grasping primitives; Item 2 is at least one additional parameter of the object; The robot according to claim 8.
12. The non-transitory processor-readable storage medium further stores processor-executable instructions that, when executed by the at least one processor, cause the robot to collect additional data about the object; The additional data about the object is selected from the group consisting of: hardness of the object, stiffness of the object, personality of the object, function of the object, and mass of the object. The robot according to claim 11.
13. at least one receiver communicatively coupled to the at least one processor; Further equipped with The non-transitory processor-readable storage medium further stores processor-executable instructions that, when executed by the at least one processor, cause the robot to receive additional data related to the object. The robot according to claim 11.
14. The non-transitory processor-readable recording medium includes: data relating to a work objective to be performed by the robot, the work objective including grasping the object; processor-executable instructions that, when executed by at least one processor, cause the robot to select the particular reusable grasping primitive from the library of reusable grasping primitives based at least in part on both items 1 and 2; Further storing Item 1 includes simulating a robot hand grasping the object using each reusable grasping primitive in the library of reusable grasping primitives, and determining the particular reusable grasping primitive in the library of reusable grasping primitives that best fits a shape of the object compared to all other grasping primitives in the library of reusable grasping primitives; Item 2 is at least one additional parameter of the object; The robot according to claim 8.
Citation Information
Patent Citations
Robot hand and control method of robot hand
JP2009184030A
Methods and computer-program products for evaluating grasp pattern, and robot incorporating the same
JP2017080886A