Patent Description:
Autonomous robots perform at least some tasks in an automated manner, without requiring human control or direction. For example, automated robots have been used to perform repetitive and/or otherwise predetermined tasks and sequences of tasks, typically in a controlled environment, such as a factory. More recently, self-driving cars, delivery drones, and other autonomous vehicles have been under development.

Teleoperation in the field of robotics refers to remote operation of a robot by an operator. For example, robots have been used to perform surgery, defuse bombs, and perform other tasks under the control of a skilled human operator.

<CIT> describes system for performing a set of tasks using one or more robotic devices. The robotic device can be configured to perform each task using one or more effector devices, one or more sensor devices, and a hybrid control architecture including a plurality of dynamically changeable levels of autonomy. The levels of autonomy can include: full autonomy of the robotic device, teleoperation of the robotic device by a human user, and at least one level of shared control between the computer system and the human user.

According to an aspect of the present invention, there is provided a system according to claim <NUM>.

According to another aspect of the present invention, there is provided a method according to claim <NUM>.

According to a further aspect of the present invention, there is provided a computer program product according to claim <NUM>.

An autonomous robot with on demand teleoperation is disclosed. In various embodiments, a robot as disclosed herein operates autonomously to perform a task or set of tasks for which the robot has skills and strategies to perform. In various embodiments, a task or set of tasks may be assigned to the robot by a human user or another robot or system. In some embodiments, the assigned task or set of tasks may be defined using one or more primitive commands, objectives, context information and variables, and/or other commands and data provided to the robot. The robot performs initialization processing, e.g., to orient itself relative to its environment and objects on which the robot will operate. In some embodiments, the robot makes a plan to perform the task or set of tasks assigned to and begins to implement the plan. If the robot reaches a state in which the robot cannot determine a next action to perform to advance towards completion of the task or set of tasks, the robot triggers intervention, e.g., by a human operator. In some embodiments, a human or other operator controls the robot, e.g., via teleoperation, to (further) perform the task or set of tasks and/or or restore the robot to a state in which the robot is able to resume autonomous operation.

In various embodiments, a robot as disclosed herein may include one or more physical elements usable to interact with a physical environment; one or more actuators to position and apply force using the physical elements; and one or more processors configured to control movement and application of force by the physical elements via control of the actuators. In various embodiments, the one or more processors may include one or more processors integrated into the robot and/or one or more processors comprising local and/or remote computers configured to control the robot, in autonomous operation, teleoperation, or both.

<FIG> is a block diagram illustrating an embodiment of an autonomous robot with on demand teleoperation. In the example shown, an autonomous robot operating in environment <NUM> includes a plurality of jointed segments comprising a robotic arm <NUM> mounted on a stationary base <NUM>. The robotic arm <NUM> is coupled to a controller <NUM> configured to manipulate the robotic arm <NUM> and a gripper <NUM> mounted on a distal end of robotic arm <NUM>. In some embodiments, controller <NUM> controls the robotic arm <NUM> and gripper <NUM> by providing voltages and/or other signals, inputs, etc. to motors configured at each of the respective joints between rigid elements comprising the robotic arm <NUM> and/or gripper <NUM> to cause the respective motors to apply corresponding torque(s) to cause an element coupled to a rotating element of the motor to move relative to an element to which a non-rotating element of the motor is coupled.

In the example shown in <FIG>, the robotic arm <NUM> is being used to pick up items from a table or other surface <NUM>, including in the example shown differently shaped items <NUM>, <NUM>, and <NUM>, and place them on a conveyor belt <NUM>. As shown, robotic arm <NUM> has previously been used to place item <NUM> on the conveyor belt <NUM>, which is rotating in a direction such that the item <NUM> is about to fall off the conveyor belt <NUM> into a destination <NUM>.

In various embodiments, the "pick and place" operation shown in <FIG> is performed by the robot comprising robotic arm <NUM>, gripper <NUM>, and controller <NUM>, at least in part in an autonomous mode of operation. For example, in some embodiments the controller <NUM> and/or one or more other control devices, such as a computer comprising a processor, a memory, and other components, is/are programmed to perform the pick and place operation illustrated in <FIG>. For example, in some embodiments a programmer or other operator may have programmed or otherwise configured the robot to have an awareness of its environment <NUM> and its position relative to the items on table <NUM> (or, in some embodiments, a set of coordinates or other locations associate with the table <NUM>, on the one hand, and the conveyor belt <NUM>.

In some embodiments, the robot is programmed or otherwise configured to use a library or other repository of strategies to perform the pick and place operation and/or portions thereof. For example, the robot may be configured to use awareness of its current position and the environment <NUM> to position gripper <NUM> at a location above table <NUM>. Computer vision or other techniques may be used to identify and select an item to pick up next, and a strategy to pick up the item may be selected autonomously, e.g., based on one or more of the item's location, shape, orientation, aspect presented, texture, rigidity, etc. For example, in the example shown in <FIG>, the robot may recognize the item <NUM> as presenting substantially parallel flat surfaces on the front and back sides, as shown, and may select as a strategy to pick up item <NUM> positioning the gripper <NUM> above item <NUM>, rotating the gripper <NUM> to align its fingers to positions aligned with the front and rear surfaces of item <NUM>, and grasping the item <NUM> with one finger engaging the front flat surface and the other engaging the back flat surface.

In various embodiments, the robot comprising robotic arm <NUM>, gripper <NUM>, and controller <NUM> automatically prompts intervention by teleoperation. In some embodiments, if in the course of performing the pick and place operation shown in <FIG> the robot reaches a state in which the robot cannot determine a (next) strategy to (further) perform the operation, the robots prompts a remote operator (in this example) to assist via teleoperation.

In the example shown, controller <NUM> is connected via network <NUM> to a teleoperation computer <NUM>. In some embodiments, teleoperation computer <NUM> may be involved in operation of the robot in the autonomous mode, e.g., by communicating high level instructions to controller <NUM> via network <NUM>. In various embodiments, one or both of the controller <NUM> and teleoperation computer <NUM> may prompt an intervention by teleoperation, e.g., if the robot reaches a state in which it does not have a strategy available to perform (complete) a next task or step in the operation.

For example, referring further to <FIG>, if the item <NUM> were dropped and landed on one of its flat sides, in an orientation that presented a triangular aspect to the robot, in some embodiments the robot may not have a strategy available to pick up the item <NUM> and/or may have timed out or exhausted a configured number of attempts to pick up the item <NUM>. In response, the teleoperator <NUM> may be prompted to intervene through teleoperation, and may use the manual input device <NUM> to control operation of the robot. For example, the teleoperator <NUM> may manipulate the robot to pick up the item <NUM> and place the item on the conveyor belt <NUM>. Or, the teleoperator may use the robot to change the orientation of the item <NUM> to one in which the autonomous robot would be expected (or be more likely) to have a strategy available to pick up the item <NUM>.

In the example shown, teleoperation may be performed through manipulation of a manual input device <NUM>, e.g., a haptic input device, by a human operator <NUM>. The human operator <NUM> (sometimes referred to as a teleoperator) may be prompted by information displayed via a display device comprising and/or associated with the teleoperation computer <NUM> to begin teleoperation. Data from one or more sensors <NUM> may be provided to the human operator <NUM> via network <NUM> and teleoperation computer <NUM>. In some embodiments, sensors <NUM> include a camera on the robot or otherwise in the environment <NUM> configured to generate a video feed that is displayed to the teleoperator <NUM> and used to perform and/or complete performance of an operation or portion thereof via teleoperation. In various embodiments, the camera is connected with a low-latency, high throughput connection, including by way of example and without limitation one or more of analog RF based communication, WiFi, Bluetooth, and Sub GHz. In some embodiments, a mix of cameras of different types is used. For example, cameras with different communication rates, bandwidth, and/or other characteristics may be used, such as two RGB visual cameras, four depth cameras, two IR cameras, etc..

In various embodiments, teleoperation may be performed using a variety of different sensors <NUM>. In some embodiments, these may guide the robot in determining whether it is "stuck", and/or may simplify the teleoperation. In some embodiments, sensors help transition the teleoperation modality from direct haptic controls to increasingly abstract executive commands (such as clicking an object to pick with a mouse, or saying "open shelf" to an audio transcription device).

Examples of sensors <NUM> used in various embodiments include digital switches that are configured to detect interactions and specific "stuck" scenarios with the environment, and/or the presence of unknown agents in the vicinity of the robot (or teleoperator). Further examples include force or pressure sensors on the hand or robot that determine success or failure of operations such as grasps. After some series of failures, the robot determines it is "stuck". Another example is one or more sensors, such as position sensors on the robot joints, that may be used by the robot to know whether the planned and/or otherwise expected movement trajectory is being followed precisely. When it is not following the expected trajectory precisely, likely it has made contact with the environment and the robot may be programmed to conclude it has gotten "stuck" and needs to invoke human intervention.

In various embodiments, the robot may pre-process information to make it easier for a human to provide teleoperation via high-level executive commands, such as open bin A or pick up item Y. Examples of pre-processing of information in various embodiments include but are not limited to:.

In some embodiments, data from the robot is augmented with data from sensors <NUM>, contextual information, and/or past-knowledge information. In some embodiments, the robot is configured to provide such additional to a human operator to convey the robot's situation to the human operator more fully, enabling the human operator to better and more quickly provide assistance via teleoperation. Examples include, without limitation:.

In some embodiments, in the on demand teleoperation mode, the autonomous robot continues to monitor the environment <NUM> and the state of the robot. In some embodiments, the autonomous robot is configured to recognize that the robot and/or environment have been restored to a condition in which the robot has a strategy available to continue the operation autonomously. In some embodiments, the autonomous robot may prompt the teleoperator <NUM> to discontinue teleoperation and allow or actively cause autonomous operation to resume. In some embodiments, upon recognizing the availability of a strategy to continue the operation in autonomous mode, the autonomous robot takes over control of the robot on its own initiative and the system ceases to respond to inputs provided by the teleoperator <NUM> via the manual input device <NUM>, and the robot resume autonomous operation.

In some embodiments, the robot is configured to anticipate and preemptively avoid and/or schedule human assistance to resolve situations where it might otherwise get stuck. For example, assume the robot is tasked to pick up three items A, B, and C, and determines it can pick up A, may be able to pick up B, and cannot pick up C. In various embodiments, the robot implements a plan that anticipates the uncertainty over its ability to pick up B and its anticipated inability to pick up C. For example, in one approach, the robot will conclude it will need help with C and possibly B and schedules human assistance at the time it expects to need help, for example after it has had time to pick up A and make the configured number of attempts to pick up B. If when the time scheduled for human help the robot has picked up A and been successful in picking up B, the human is prompted to help with C. If the robot has not picked up B successfully by the time scheduled for human intervention, helped with B and C is requested, for example. In another approach, the robot may pre-emptively trigger a direct request for task-related information to the teleoperator. For example, the robot may ask the teleoperator to indicate how the robot should grasp item C, and in the meanwhile, it picks up A and B. If the human teleoperator provides a strategy by the time the robot gets down to picking up item C, then the robot's motion is seamless. Otherwise, the robot requests help picking up C.

Further examples of a robot configured to anticipatorily and/or preemptively obtain human assistance as disclosed herein include, without limitation:.

In the example shown in <FIG>, the teleoperation computer <NUM>, manual input device <NUM>, and teleoperator <NUM> are shown to be in a location <NUM> remote from the environment <NUM> in which the robot is operating. In various embodiments, the teleoperation-related assets (e.g., <NUM>, <NUM>, <NUM>) may be located anywhere, including in a same (or nearby) physical location as the environment <NUM>.

<FIG> is a block diagram illustrating an embodiment of an autonomous robot with on demand teleoperation. In the example shown, robot <NUM> operates in environment <NUM> to performing a "kitting" operation, in which items are selected from the bins A, B, C, and D, as appropriate, on shelves <NUM> and added to box <NUM>. In this example, robot <NUM> includes a robotic arm mounted on a tractor-style mobile base. The robot <NUM> is operated under control of controller <NUM> via wireless communication. In the state shown, the robot <NUM> has item <NUM> in the gripper at its distal end. For example, the robot <NUM> may have picked the item <NUM> from out of a corresponding one of the bins A, B, C, and D, e.g., by propelling itself to a position adjacent the bin, pulling the bin open, looking in to locate and identify the item <NUM> as a target to pick up, picking up the item <NUM>, pushing the bin closed (e.g., with a portion of its robotic arm not holding the item <NUM>), and propelling itself in the direction of a location adjacent to box <NUM>, e.g., to be able to drop or place the item <NUM> into the box <NUM>.

Similarly to the robot and environment shown in <FIG>, the robot <NUM> in the example shown in <FIG> is configured to invoke on demand teleoperation, to be performed through communications via network <NUM> from a teleoperation computer <NUM>, manual input device <NUM>, and teleoperator <NUM> located in a remote location <NUM>. For example, the robot <NUM> in some embodiments may have strategies to position itself near the bins on shelves <NUM>, to open the bins, identify items to pick up, reach into the bin, grasp the item, propel itself to a position near the box, place the item in the box, close the bin, and repeat until done, for example. If at any point the robot reaches a state in which the robot does not have a strategy to proceed autonomously, in various embodiments the robot generates a request for on demand teleoperation. For example, in the example shown in <FIG>, if a bin will not open, falls to the ground, gets jammed in a skewed or other unrecognized position, etc., or if a bin expected to contain an item is empty or has unrecognized items, or if the items are oriented such that the robot does not have a strategy to reach in and grasp a required item, etc., the robot in various embodiments will prompt the teleoperator <NUM> in this example to intervene.

The pick and place operation of <FIG> and the kitting operation of <FIG> are examples of the unlimited operations an autonomous robot with on demand teleoperation as disclosed herein may be used to perform.

<FIG> is a block diagram illustrating an embodiment of a system to control via teleoperation an autonomous robot with on demand teleoperation. In the example shown, the system <NUM> receives from a human teleoperator <NUM> input provided through manipulation of a manual input device, in this example haptic device <NUM>. In some embodiments, haptic device <NUM> comprises a manually actuated input device that provides force feedback, such as the NOVINT FALCON haptic device provided by NOVINT TECHNOLOGIES. In various embodiments, one or more manual input devices other than and/or in addition to haptic device <NUM> may be used to perform teleoperation, including without limitation a tablet or other touch device, mouse, button/dial panel, phone, accelerometer wand, virtual reality pointing device, 3D magnetic mouse, interpreted hand gestures with a camera, etc..

In some embodiments, a user moves a handle, knob, grip, or other manual interface in three-dimensional space, and the haptic device <NUM> generates output signals representative of the movement of the input manual interface in three-dimensional space. In the example shown, outputs of the haptic device <NUM> are interpreted using a model <NUM> that describes the robot and its available behaviors. For example, the model <NUM> may reflect the physical dimension and configuration of the robot and its component parts, and may define solutions to move a controlled resource of the robot, such as the gripper <NUM> of <FIG> or the gripper of robot <NUM>, in three-dimensional space within an environment in which the robot is operating, in response to input provided via the haptic device <NUM>. For example, for a given current position of a robotic arm and its constituent parts, the model <NUM> may provide one or more solutions to control the robot's actuators (e.g., joint motors) to move the gripper from a current position to a destination position associated with the input received via the haptic device <NUM>.

In the example shown, robot controller inputs generated based on the input provided via haptic device <NUM> as interpreted in light of the model <NUM> are provided to controller <NUM> to drive one or more motors <NUM> to move the robot gripper or other resource to the destination position. Feedback <NUM> is provide to one or both of model <NUM> and a computer associated with haptic device <NUM>. In some embodiments, the feedback indicates a current position of the robot (e.g., a robotic arm) and the location and orientation of its constituent parts, to enable the model to be used to continue to drive the robotic arm gripper or other resource in response to input received via the haptic device <NUM>.

In some embodiments, contextual information may be received and used to provide force feedback via the haptic device <NUM>. For example, reaching or approaching a physical barrier of an environment in which the robot is operating; approaching a furthest extent of robotic arm reach; contacting a physical object in the environment, such as an object the robot has picked up; etc., may result in force feedback being provided to teleoperator <NUM> via haptic device <NUM>.

In various embodiments, using a model such as model <NUM> to interpret and control operation of a robot based on inputs provided via a manual input device, such as haptic device <NUM>, enables teleoperation to be performed in a much more intuitive and straightforward manner, and with more fluid, efficient, and continuous movement, as compared to alternatives such as controlling each joint individually.

<FIG> is a flow chart illustrating an embodiment of process to control an autonomous robot with on demand teleoperation. In various embodiments, the process <NUM> of <FIG> is performed by one or more processor comprising and/or otherwise associated with an autonomous robot, to provide an autonomous robot with on demand teleoperation. In the example shown, upon receiving an instruction or other indication to perform an operation, the robot performing the process <NUM> determines at <NUM> its starting position, state, and context. For example, the robot may use GPS, manual input provided by an operator, etc. to determine its current location, along with the location and orientation of its constituent parts, such as segment and joints comprising its robotic arm, if applicable. Context determined at <NUM> may include the respective location of objects, containers, etc. the robot may be required to manipulate, destination locations (e.g., the conveyor belt <NUM> of <FIG>, the box <NUM> of <FIG>, etc.).

At <NUM>, the robot determines a sequence of tasks to achieve the overall assignment and/or objective. For example, referring to <FIG>, the assignment may be to pick items from table <NUM> and place them one by one on conveyor <NUM>. Or, referring to <FIG>, the assignment may be to file box <NUM> with one item from bin A and two items from bin D. In various embodiments, each task in the sequence (or other set) of tasks determined at <NUM> may include, explicitly or implicitly, use of one or more skills to perform one or more sub-tasks. For example, referring to <FIG>, placing one item from bin A into box <NUM> may include driving to a position near bin A, pulling out bin A, looking in to find an instance of the item, determining a strategy to reach in and pick up the item, grabbing the item, pulling it out of bin A, etc..

At <NUM>, the robot recursively determines and performs (or attempts to perform) a strategy to perform a next task or sub-task to advance from a current state to a next state along a vector toward completion of the overall assignment and/or a component thereof.

If the robot gets stuck (<NUM>), e.g., the robot cannot determine an available strategy to perform a next task or sub-task to move towards completion of the overall assignment, the robot requests and/or waits for intervention by teleoperation (<NUM>). Once the human operator has intervened via teleoperation (<NUM>), the robot may resume performing additional tasks autonomously (<NUM>). Operation as described continues (<NUM>, <NUM>, <NUM>) until the overall assignment has been completed (<NUM>), and the process (<NUM>) ends.

<FIG> is a state diagram illustrating operating states in an embodiment of an autonomous robot with on demand teleoperation. In various embodiments, the state diagram <NUM> of <FIG> is implemented by an autonomous robot with on demand teleoperation, as disclosed herein. In the example shown, an input or other stimulus <NUM> causes the robot to enter an initializing state <NUM>, in which the robot determines its starting position, orientation, and/or other state, environmental and/or other context data, etc..

If initialization is successful, the robot enters a planning state <NUM> via a direct transition <NUM>. Alternatively, if the robot is not able to complete initialization, the robot may enter a human intervention state <NUM>, via transition <NUM>, to prompt a human user to assist in initializing the robot. If further initialization remains to be completed by the robot, the robot transitions back to the initializing state <NUM> via transition <NUM>. Alternatively, the robot may transition from human intervention state <NUM> to planning state <NUM> via transition <NUM>.

In planning state <NUM>, the robot determines an optionally ordered set of high level actions (tasks) to be performed to achieve the overall high level assignment or objective. In the planning state <NUM>, the robot may attempt to determine an efficient set of sub-tasks to perform in a determined order to achieve the objective efficiently, such as by minimizing arm and/or robot movement, minimizing time to completion, ensuring space efficient arrangement of items in the destination, etc. While in the planning state <NUM>, in this example the robot may prompt a human to assist in planning, via a transition <NUM> to the human intervention state <NUM>.

Upon completing planning in the planning state <NUM>, in this example the robot enters an autonomous action state <NUM> via transition <NUM>. In the autonomous action state <NUM>, the robot acts autonomously to achieve the overall assignment and/or objective, e.g., by performing tasks and/or sub-tasks according to and/or in furtherance of the plan determined in the planning state <NUM>. In the example shown, the robot may transition from the autonomous action state <NUM> back to the planning state <NUM>. For example, if an unexpected state or context that is inconsistent with the original (or other current) plan is encountered, the robot may return to the planning state <NUM> to come up with another plan.

In the autonomous action state <NUM>, the robot may invoke on demand teleoperation. For example, in some embodiments, if the robot determines it does not have a strategy available to perform a current or next task or sub-task required to be performed to continue to progress toward completion of the overall assignment or objective, the robot will transition to the human intervention state <NUM> via transition <NUM>. For example, the robot may prompt a human user to intervene and perform an indicated task or sub-task, e.g., via teleoperation.

In some embodiments, upon entering the human intervention state <NUM> from the autonomous state <NUM> via transition <NUM>, the robot waits until an input is received to resume autonomous operation. Upon receiving such an input, the robot returns to the autonomous action state <NUM> via transition <NUM>. In some embodiments, while in the human intervention state <NUM> after a transition from the autonomous state <NUM> via transition <NUM>, the robot continuously and/or periodically processes robot position, orientation, and context data to attempt to determine a strategy that would enable the robot to resume operating in the autonomous action state <NUM>. If a strategy is timely determined, the robot may prompts a return via transition <NUM> to autonomous action state <NUM>. In some embodiments, the robot transitions automatically. In some embodiments, the robot prompts the human teleoperator to stop controlling the robot by teleoperation and instead allow or actively cause the robot to return to the autonomous action state <NUM>. In some embodiments, the degree of human intervention required to transition back to the autonomous action state <NUM> may be configurable and/or may vary depending on the context, the nature and use of the robot, etc..

Once the overall assignment or objective has been completed, the robot transitions to done/ready state <NUM>, via transition <NUM> if the final task was performed autonomously or via transition <NUM> if the final task was performed via teleoperation.

<FIG> is a flow chart illustrating an embodiment of process to control in an autonomous operating state an autonomous robot with on demand teleoperation. In various embodiments, the process <NUM> of <FIG> is implemented by an autonomous robot with on demand teleoperation, such as an autonomous robot operating in the autonomous action state <NUM> of <FIG>. In the example shown, upon entering the autonomous state (<NUM>), the robot determines a next task or sub-task to be performed (<NUM>). The robot attempts to determine a strategy available to the robot to perform the next task or sub-task autonomously (<NUM>). If the robot determines it has no (further) strategy to perform the next (or any next) task or sub-task (<NUM>), the robot transitions to a human intervention state (<NUM>) in which on demand teleoperation is performed. If the robot determines a strategy to proceed (<NUM>, <NUM>), the robot uses the determined strategy to perform the next task or sub-task (<NUM>). If successful (<NUM>), the robot goes on to a next task, and so on, until done (<NUM>). If the determined strategy is attempted but does not result in successful completion of the task or sub-task (<NUM>, <NUM>, <NUM>, <NUM>), the robot attempts to determine another strategy to perform the task or sub-task (<NUM>), and processing proceeds as described above unless/until the task/sub-task has been performed successfully or the robot enters the human intervention operating state.

<FIG> is a flow chart illustrating an embodiment of process to monitor and resume autonomous control of an autonomous robot operating in a teleoperation (human intervention) state. In various embodiments, the process <NUM> of <FIG> is implemented by an autonomous robot with on demand teleoperation, such as an autonomous robot operating in the human intervention state <NUM> of <FIG>. In the example shown, upon entering the human intervention (on demand teleoperation) state (<NUM>), the robot autonomously monitors the progress towards completion of the overall assign or operation; the position, orientation, and state of the robot; and context and/or environment data as the human operator controls the robot via teleoperation (<NUM>). The robot attempts continuously to determine a next task or sub-task to be performed and a strategy, if any, available to the robot to perform the next task or sub-task autonomously (<NUM>). If the robot determines a task or sub-task to be done for which the robot has a strategy to complete the task or sub-task (<NUM>), the robot enters the autonomous action state (<NUM>). In some embodiments, the robot may enter the autonomous action state automatically. In some embodiments, the robot may enter the autonomous action state by prompting the human user to allow or initiate a transition to the autonomous action state.

In various embodiments, techniques disclosed herein may facilitate monitoring and on demand teleoperation of a plurality of robots, e.g., each at a different location, by a same human operator or collocated team of operators.

<FIG> is a block diagram illustrating an embodiment of a system to provide one-to-many control of a plurality of autonomous robots with on demand teleoperation. In the example shown, a controller <NUM> associated with a robot <NUM> operating in a first location <NUM>; a controller <NUM> associated with a robot <NUM> operating in a second location <NUM>; and a controller <NUM> associated with a robot <NUM> operating in a third location <NUM> each is connected via network <NUM> to a teleoperation computer <NUM> at a fourth location. The teleoperation computer <NUM> is configured to control at any given time any one of the robots <NUM>, <NUM>, and <NUM>, based on teleoperation inputs provided via a manual input device <NUM> by a human operator <NUM>. In various embodiments, the teleoperation computer <NUM> is configured to receive via network <NUM> from one or more of controllers <NUM>, <NUM>, and <NUM> an indication that a robot controlled by that controller requires on demand human intervention (teleoperation). In response, the teleoperation computer <NUM> displays to user <NUM> information about the affected robot and its current position, state, context, environment, etc., and the task to be performed. The teleoperation computer <NUM> uses a model for the affected robot to map inputs provided via the manual input device <NUM> to corresponding control signals, commands, instructions, etc. to control operation of the affected robot. Once teleoperation of the affected robot is completed, the teleoperation computer re-enters a monitoring state in which it waits for a next indication to perform teleoperation is received.

While in the example shown in <FIG> one human teleoperator controls many different robots via teleoperation, each operating in a separate, one robot environment, in some embodiments a single human teleoperator may control multiple robots in the same environment at one time. For example, a task may require two or three robots to work together to pick up objects. Or, a task may require three robots to work together to sort objects in a single pile of objects. In some embodiments, multiple robots are tasked to work autonomously in the same space on a shared task, such as by pointing each at the same target (e.g., pile of objects) and destination (e.g., object-specific bins). The robots each work autonomously (or in concert) to perform the assigned tasks. If any (or all) gets stuck, human intervention is requested.

<FIG> is a flow chart illustrating an embodiment of process to provide one-to-many control of a plurality of autonomous robots with on demand teleoperation. In various embodiments, the process <NUM> of <FIG> is performed by a computer, such as teleoperation computer <NUM> of <FIG>. In the example shown, robots at multiple locations each operating in an autonomous state are monitored (<NUM>). Video or other feeds may be provided, e.g., via a display device. If an indication to provide human intervention (e.g., teleoperation) is received with respect to a given robot and/or location (<NUM>), then robot state and context information is displayed to a human user (<NUM>) and inputs provided via a haptic or other manual input device are mapped to corresponding control inputs for the robot to be controlled via teleoperation (<NUM>). Once the human intervention (teleoperation) is completed (<NUM>), the affected robot resumes autonomous operation and the system implementing the process <NUM> resumes monitoring the multiple locations (<NUM>). Monitoring and human intervention (as/if needed) continue as described until all robots have completed or otherwise ended their work (<NUM>), upon which the process <NUM> ends.

In some embodiments, an autonomous robot as disclosed herein attempts to anticipate and preempt situations in which the robot may become stuck and required to request and wait for human assistance to be provided, e.g., via teleoperation. In some embodiments, a robot as disclosed herein attempts to obtain human assistance in advance (e.g., tell me how to pick up an item like item C) and/or to schedule in advance human assistance to be provided at a time when it is expected to be needed.

<FIG> is a flow chart illustrating an embodiment of a process to obtain human assistance preemptively. In various embodiments, an autonomous robot as disclosed herein implements the process of <FIG>, at least with respect to situations the robot is able to anticipate. In some embodiments, all or part of the process <NUM> of <FIG> may be performed during the planning state <NUM> of the example shown in <FIG>. In the example shown, upon receiving an assignment the robot determines its starting position, state, and context (<NUM>). The robot determines a sequence of tasks to achieve the objective (i.e., complete the assignment) (<NUM>), the sequence of tasks implying and/or otherwise having associated therewith a set of states from the starting state to a completion state in which the assignment has been completed. The robot determines recursively in advance for at least a subset of tasks and/or associated states a strategy to advance from that state to a next state along a vector toward completion of the assignment (<NUM>). For any future task/state for which the robot determines it will require human intervention (e.g., teleoperation, identification of an object, selection of an existing strategy, teaching the robot a new strategy, etc.) (<NUM>), the robot to the extent possible requests and obtains human help in advance (<NUM>), including by scheduling human teleoperation and a scheduled interrupt of its own autonomous operation to obtain human assistance before resuming autonomous operation. The robot operates autonomously, as able, and obtains scheduled and/or on demand (e.g., for unanticipated events that cause the robot to become stuck) human assistance, as required, until the assignment is completed (<NUM>).

In various embodiments, techniques disclosed herein may enable more complicated tasks requiring higher degrees of dexterity to be performed autonomously, in some embodiments concurrently at a plurality of remote locations, with human intervention being provided on demand, as, if, and when needed, to ensure all operations are performed to completion.

Claim 1:
A system, comprising:
a processor (<NUM>) configured to:
operate (<NUM>, <NUM>) a robot (<NUM>) in an autonomous mode of operation in which
the robot performs one or more tasks autonomously without human intervention; the system being characterised in that the processor (<NUM>) is configured to:
determine (<NUM>), while the robot is performing a current task, that a first strategy is not available for the robot to perform a later task autonomously; and
while the robot is performing the current task and in response to the determination that the first strategy is not available for the robot to perform the later task autonomously, control the robot to perform the current task and pre-emptively schedule a human intervention mode of operation (<NUM>) for the later task; and
a communication interface coupled to the processor and configured to communicate control values to one or more actuators of the robot,
wherein in the human intervention mode of operation for the later task, the processor is configured to:
monitor (<NUM>) teleoperation of the robot;
determine (<NUM>, <NUM>) based on the monitoring that a second strategy is available for the robot to resume autonomous operation to perform the later task to be performed by the robot; and
in response to the determination that the second strategy is available for the robot to perform the later task, resume (<NUM>) the autonomous mode of operation to control the robot and complete performance of the later task.