Patent Description:
Robots have been developed for multiple purposes over the last few decades. The most successful robotic applications are fixed-base units, which are programmed to perform single, clearly delineated, relatively simple tasks (such as welding a particular portion of a car body in an assembly line). Recently, some mobile robots have seen commercial success, such as the Roomba - an automated vacuum cleaner suitable for household cleaning.

However, a number of other applications that could potentially make use of robotic devices or unmanned vehicles require operation in much more demanding settings. For example, the military is using a number of unmanned vehicles on land, sea, or in the air. Other industries, such as the railroad industry, also have a number of tasks which are commonly performed and potentially simple enough to expect a machine to be able to achieve routinely. A significant challenge to developing fully automated machines for these settings is that simple tasks often can present difficulties. However, the setting may require achieving perfection or near perfection, e.g., these tasks may need to be performed effectively one hundred percent of the time (e.g., one failure out of millions of operations).

In many current-art approaches, robots are capable of recognizing gross failures or situations in which the robot simply does not recognize any key elements of its environment. At that point, the robot requires a human being to completely take over. Additionally, the robot may have caused other problems (e.g., a railroad robotic vehicle, having gotten badly turned around, could cross over an active track and be hit by or even cause a derailment of moving rail vehicles). Because of this, current robotic systems are either completely remote-controlled, or controlled by relatively "fragile" autonomy, which is cut off whenever the robot encounters a situation that does not meet its operational parameters.

Previous approaches have sought to improve one or more aspects of robotic operation and interaction between robotic devices and users. One approach proposes a multi-robot control interface, which allows a user to control multiple robotic devices using a single user interface. Another approach seeks to provide power saving features in a robot via a peripheral device including a controller having an active mode and a hibernation mode. Still another approach seeks to use a graphical interface and a control intermediary to analyze and determine a task-oriented autonomy level for a robot.

Patent Publication Number <CIT> discloses systems, methods, and user interfaces which are used for controlling a robot. An environment map and a robot designator are presented to a user. The user may place, move, and modify task designators on the environment map. The task designators indicate a position in the environment map and indicate a task for the robot to achieve. A control intermediary links task designators with robot instructions issued to the robot. The control intermediary analyses a relative position between the task designators and the robot. The control intermediary uses the analysis to determine a task-oriented autonomy level for the robot and communicates target achievement information to the robot. The target achievement information may include instructions for directly guiding the robot if the autonomy level indicates low robot initiative and may include instructions for directing the robot to determine a robot plan for achieving the task if the autonomy level indicates high robot initiative.

A Publication entitled "A supervisory system for the URMAD robotic unit" authored by <NPL>) discloses work related to the design and development of the URMAD system, which is a mobile robotic unit purposely devised to assist the severely disabled in a household environment. A supervisory system based on distributed decision making and functional distribution, implemented on a VME/OS9 architecture, is disclosed. This system is capable of executing typical domestic tasks expressed in a synthetic command language extracted from everyday vocabulary. The user's requests can be easily specified by using a Windows-like graphical user interface and are translated into the command language by an interpreter running on a personal computer.

Patent Publication Number <CIT> discloses a robotic vehicle configured for autonomous or semi-autonomous operation in a rail environment. The vehicle can process image data to move about the rail environment and perform one or more actions in the rail environment. The actions can include one or more actions related to decoupling and/or attaching rail vehicles, and can be implemented by performing three-dimensional image processing. The vehicle can be configured to move with any movement of a rail vehicle on which one or more actions are being performed.

A Publication entitled "Cooperative assistance for remote robot supervision" authored by <NPL>) discloses work on a cooperative tele-assistance system for semi-autonomous control of mobile robots. The disclosed system combines a robotic architecture for limited autonomous perceptual and motor control with a knowledge-based operator assistant which provides strategic selection and enhancement of relevant data. It extends recent developments in artificial intelligence in modelling the role of visual interactions in problem solving for application to an interface permitting the human and remote to cooperate in cognitively demanding tasks such as recovering from execution failures, mission planning, and learning.

A publication by <NPL>), explores issues involved in adapting Sliding Autonomy concepts to coordinated multiagent teams. Sliding, or Adjustable, Autonomy is a mode of operation bridging the gap between explicit teleoperation and complete robot autonomy. In their approach, remote human operators have the ability to join, or leave, the team at will to assist the autonomous agents with their tasks (or aspects of their tasks) while not disrupting the team's coordination. One of the main challenges is allowing the robots to ask for help, since the human is not always guaranteed to be paying attention to each robot at any given time. The authors make this possible by incorporating user models into the system that allow the robotic agents to make informed and reasonable decisions about when to request the operator's assistance.

In view of the prior art, the inventors have identified various challenges and limitations of current approaches for implementing production-worthy robotics-based manufacturing and maintenance work. For example, the inventors have noted that current approaches do not provide capabilities for a robotic device to determine when to request assistance from a human user. Additionally, current approaches do not establish a methodology for training a robotic device with a set of skills required to diminish cognitive load on the human user. Furthermore, current approaches do not allow the robotic device to shift seamlessly between levels of autonomy. These deficiencies reduce the efficiency and adversely affect productivity of current robotic devices.

Embodiments provide a solution including improved human-robot interaction, and particularly human augmentation of robotic work. For example, an embodiment can improve aspects of cooperation between a human user and a robotic device. In an illustrative embodiment, an autonomous robotic device can determine when to seek assistance of a human user to perform a task. Furthermore, an embodiment provides a robotic device capable of reducing a cognitive load on a human advisor while performing a set of tasks.

Aspects of the invention provide a solution 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.

A first aspect of the invention provides a mobile robotic device comprising: a set of effector devices; a set of sensor devices; and a computer system including at least one computing device, wherein the computer system implements a machine cognition engine configured to perform a set of railroad maintenance tasks using the set of effector devices, the set of sensor devices, and a hybrid control architecture including a plurality of dynamically changeable levels of autonomy, wherein the plurality of levels of autonomy 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.

A second aspect of the invention provides a method of performing a task using a robotic device, the method comprising: the robotic device initially attempting to complete an action of the task using a full autonomy level of autonomy; in response to the robotic device encountering a problem completing the action using the full autonomy level of autonomy, the robotic device: determining a criticality of the action; adjusting a level of autonomy in response to the action being a critical action, wherein the adjusted level of autonomy includes at least some human assistance for the robotic device; and bypassing the action in response to the action being a non-critical action.

A third aspect of the invention provides a system comprising: a robotic device including: a set of effector devices; a set of sensor devices; and a first computer system including at least one computing device, wherein the first computer system implements a machine cognition engine configured to perform a task using the set of effector devices, the set of sensor devices, and a hybrid control architecture including a plurality of dynamically changeable levels of autonomy, wherein the plurality of levels of autonomy 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.

Other aspects of the invention provide methods, systems, program products, and methods of using and generating each, which include and/or implement some or all of the actions described herein. The illustrative aspects of the invention are designed to solve one or more of the problems herein described and/or one or more other problems not discussed.

These and other features of the disclosure will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings that depict various aspects of the invention.

It is noted that the drawings may not be to scale. The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention.

As indicated above, aspects of the invention provide a solution 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. As used herein, unless otherwise noted, the term "set" means one or more (i.e., at least one) and the phrase "any solution" means any now known or later developed solution. Furthermore, a "task" means a set of atomic actions performed to accomplish a goal. The goal can be any type of objective suitable for being performed using a robotic device, e.g., inspection of one or more objects, manipulation/relocation of one or more objects, assembly/disassembly of objects, and/or the like.

Aspects of the invention seek to achieve an improved efficiency with which a robotic device can be utilized to perform a task. The inventors recognize various limitations in current robotic decision-making and operation approaches. For example, no current-art systems exist which allow robotic devices to track their task progression in a manner that allows the need and scope for human intervention to be properly evaluated and prioritized. The inventors recognize that in order to perform many tasks in a shop or field environment at close to one hundred percent efficiency, human intervention may be required when the robotic device cannot complete the task on its own. However, such human intervention can make the robotic system less effective at reducing the cognitive load of the human user. To this extent, the inventors propose a solution in which: the human user is asked only to assist on certain actions in the task; the robotic device learns from such assistance; the robotic device provides assistance to the human; and/or the robotic device affirmatively re-takes control from the human user.

An embodiment provides a robotic device, which combines autonomous task completion with diagnostic interaction while reducing a need for human interaction and increasing a completion rate for the tasks. In an embodiment, the robotic device and human can operate as effective partners, in which the human provides assistance unique to human capabilities while allowing the robotic device to both perform operations and make judgments, which are better performed by robotic means. Illustrative features of the invention show and describe attributes of collaboration between humans and robotic devices specifically in conjunction with human intervention triggers, anomaly detection algorithms, and alert systems. However, it is understood that the invention can be applied to other attributes of collaboration between humans and robotic devices.

Turning to the drawings, <FIG> shows an illustrative environment <NUM> for performing a task using a robotic device <NUM> according to an embodiment. To this extent, the environment <NUM> includes a human user <NUM> and a robotic device <NUM> that can perform a process described herein in order to complete the task. In particular, the human user <NUM> can augment operation of the robotic device <NUM> in performing the task by, for example, assisting the robotic device <NUM> in completing one or more actions as part of the task. In this manner, the human user <NUM> and robotic device <NUM> can cooperate to achieve a higher completion rate for the task than that provided by prior art solutions.

In general, the robotic device <NUM> includes a computer system <NUM>, which is configured to operate various components of the robotic device <NUM> in order to perform a task within its environment. The computer system <NUM> can include one or more computing devices. For example, the computer system <NUM> is shown including a processing component <NUM> (e.g., one or more processors), a storage component <NUM> (e.g., a storage hierarchy), an input/output (I/O) component <NUM> (e.g., one or more I/O interfaces and/or devices), and a communications pathway <NUM>. In this case, the computer system <NUM> can include an automation program <NUM>, which makes the robotic device <NUM> operable to perform one or more tasks by performing a process described herein.

In the illustrative embodiment of a computer system <NUM>, the processing component <NUM> executes program code, such as the automation program <NUM>, which is at least partially fixed in the storage component <NUM>. While executing the program code, the processing component <NUM> can process data, such as task data <NUM>, which can result in reading and/or writing transformed data from/to the storage component <NUM> and/or the I/O component <NUM> for further processing. The pathway <NUM> provides a communications link between each of the components in the computer system <NUM>. The I/O component <NUM> can comprise one or more human I/O devices, which enable a human user <NUM> to directly interact with the robotic device <NUM> and/or one or more communications devices to enable another computer system <NUM> to communicate with the robotic device <NUM> using any type of communications link. In the latter case, the human user <NUM> can interact with the robotic device <NUM> via the computer system <NUM>. Regardless, the automation program <NUM> can manage a set of interfaces (e.g., graphical user interface(s), application program interface, and/or the like) that enable human users <NUM> and/or other computer systems <NUM> to interact with the automation program <NUM>. Furthermore, the automation program <NUM> can manage (e.g., store, retrieve, create, manipulate, organize, present, etc.) the data, such as task data <NUM>, using any solution.

In an embodiment, the robotic device <NUM> includes a computer system <NUM> formed of one or more general purpose computing articles of manufacture (e.g., computing devices) capable of executing program code, such as the automation program <NUM>, installed thereon. As used herein, it is understood that "program code" means any collection of instructions, in any language, code or notation, that cause a computing device having an information processing capability to perform a particular action either directly or after any combination of the following: (a) conversion to another language, code or notation; (b) reproduction in a different material form; and/or (c) decompression. To this extent, the automation program <NUM> can be embodied as any combination of system software and/or application software.

Furthermore, the automation program <NUM> can be implemented using a set of modules <NUM>. In this case, a module <NUM> can enable the robotic device <NUM> to perform a set of tasks used by the automation program <NUM>, and can be separately developed and/or implemented apart from other portions of the automation program <NUM>. As used herein, the term "component" means any configuration of hardware, with or without software, which implements the functionality described in conjunction therewith using any solution, while the term "module" means program code that enables a computer system <NUM> to implement the actions described in conjunction therewith using any solution. When fixed in a storage component <NUM> of a computer system <NUM> that includes a processing component <NUM>, a module <NUM> is a substantial portion of a component that implements the actions. Regardless, it is understood that two or more components, modules, and/or systems may share some/all of their respective hardware and/or software. Furthermore, it is understood that some of the functionality discussed herein may not be implemented or additional functionality may be included as part of the computer system <NUM>.

When the computer system <NUM> comprises multiple computing devices, each computing device can have only a portion of the automation program <NUM> fixed thereon (e.g., one or more modules <NUM>). However, it is understood that the computer system <NUM> and the automation program <NUM> are only representative of various possible equivalent computer systems that may perform a process described herein. To this extent, in other embodiments, the functionality provided by the computer system <NUM> and the automation program <NUM> can be at least partially implemented by one or more computing devices that include any combination of general and/or specific purpose hardware with or without program code. In each embodiment, the hardware and program code, if included, can be created using standard engineering and programming techniques, respectively.

While the computer system <NUM> is shown implemented entirely on the robotic device <NUM>, it is understood that the computer system <NUM> can include one or more computing devices physically located apart from the robotic device <NUM>. Regardless, when the computer system <NUM> includes multiple computing devices, the computing devices can communicate over any type of communications link. Furthermore, while performing a process described herein, the computer system <NUM> can communicate with one or more other computer systems <NUM> using any type of communications link. In either case, the communications link can comprise any combination of various types of optical fiber, wired, and/or wireless links; comprise any combination of one or more types of networks; and/or utilize any combination of various types of transmission techniques and protocols. Illustrative computer systems <NUM> include: a laptop computer located (e.g., mounted) within the robotic device <NUM>, a rack-mounted computing device, an embedded computing device, and/or the like. Furthermore, a computer system <NUM> can include any combination of multiple computing devices, such as a rack-mounted computing device for controlling navigation and one or more embedded computing devices located in an arm for implementing finer dedicated control of a manipulator.

As discussed herein, the robotic device <NUM> can be configured to perform a set of tasks in a fully automated manner and/or in a manner augmented by a human user <NUM>. To this extent, the robotic device <NUM> is shown including a sensor component <NUM> and an effector component <NUM>, each of which is in communication with the computer system <NUM>, e.g., via the I/O component <NUM>. The computer system <NUM> provides the robotic device <NUM> with a capability for machine cognition. It is understood that the robotic device <NUM> can be of any type of fixed location and/or mobile device capable of operating in any environment, including on land, in water, in air, in space, and/or the like.

In general, the sensor component <NUM> includes one or more sensor devices which enable the robotic device <NUM> to receive data corresponding to one or more attributes of the robotic device <NUM> and/or its operating environment. Illustrative sensor devices include an imaging device (e.g., visible light, infrared, still, video, and/or the like), a rangefinder (laser, acoustic, etc.), radar, a microphone, a positioning device (e.g., a global positioning system (GPS) device), an inertial measurement device, a chemical sensor, an impact or vibration sensor, and/or the like. The effector component <NUM> includes one or more devices which enable the robotic device <NUM> to perform an action. Illustrative effector devices include an engine, a transmission, a set of wheels/tracks, an arm, a gripper, a radio frequency identification (RFID) reader, a vacuum attachment, a blower attachment, armament, and/or the like. It is understood that the particular combination of devices included in the sensor component <NUM> and effector component <NUM> can vary widely depending on the particular application (e.g., set of tasks expected to be performed by the robotic device <NUM>), attributes of the robotic device <NUM> (e.g., whether it is stationary or mobile), and the operating environment. An appropriate combination of devices for the sensor component <NUM> and the effector component <NUM> can be selected and implemented using any solution.

In an embodiment, the computer system <NUM> enables the robotic device <NUM> to operate using a hybrid control architecture, which permits dynamic switching between various modes of operation in order to perform a task and/or an action. These modes of operation can include: teleoperation of the robotic device <NUM> where the human user <NUM> manually controls the robotic device <NUM>; assisted control where manual control is combined with an ability of the robotic device <NUM> to cause the human user <NUM> to surrender control at need; and full autonomic operation by the robotic device <NUM>.

<FIG> shows an illustrative process for performing a task using a robotic device, which can be implemented using the environment <NUM> (<FIG>), according to an embodiment. Referring to <FIG> and <FIG>, in action <NUM>, the computer system <NUM> can obtain the next action to complete as part of the task using any solution. For example, the computer system <NUM> can store a series of actions as task data <NUM> for the task. Furthermore, the computer system <NUM> can automatically determine the next action, e.g., using machine cognition, based on the environment and the goal for the task. Still further, the human user <NUM> or computer system <NUM> can provide the next action for processing by the computer system <NUM>.

In action <NUM>, the robotic device <NUM> attempts to perform the action autonomously. In particular, the computer system <NUM> can receive data from the sensor component <NUM>, process the data, and generate instructions to be implemented by the effector component <NUM> in order to perform the action. In action <NUM>, the computer system <NUM> can determine whether the robotic device <NUM> was able to successfully complete the action. If so, the process returns to action <NUM> where the computer system <NUM> obtains the next action for the task.

When the robotic device <NUM> cannot complete the action, in action <NUM>, the computer system <NUM> determines whether the action is a critical action for completing the task using any solution. The computer system <NUM> determines whether the robotic device <NUM> can perform an alternative action, whether subsequent actions require completion of the action, and optionally the like. When the computer system <NUM> determines that the action is not a critical action, in action <NUM>, the computer system <NUM> can store data corresponding to the error (e.g., as task data <NUM>), and return to action <NUM> to obtain the next action.

When the computer system <NUM> determines that the unsuccessful action is a critical action, in action <NUM>, the computer system <NUM> can obtain assistance from the human user <NUM> using any solution. For example, the computer system <NUM> can transmit a message to a computer system <NUM> being utilized by the human user <NUM>, which can provide a notification for presentation to the user <NUM>. In response, the human user <NUM> can take over complete or partial control of the robotic device <NUM>, provide information to enable the robotic device <NUM> to continue to perform the action independently (e.g., identify an item in a region of interest), indicate that the action cannot be performed, and/or the like. When the human user <NUM> takes partial or complete control of the robotic device <NUM>, the human user <NUM> can teleoperate one or more components of the robotic device <NUM> using any solution. For example, the human user <NUM> can utilize a computer system <NUM> to transmit instructions for processing by the computer system <NUM> for the robotic device <NUM>. In response, the computer system <NUM> can process the commands to move one or more devices in the effector component <NUM> and/or sensor component <NUM> according to the instructions to perform the action. During teleoperation by the human user <NUM>, the computer system <NUM> can monitor the actions performed by the human user <NUM> to: learn how to address a similar situation in the future; preempt actions that will result in an unsafe condition; identify a point at which the human user <NUM> has provided sufficient assistance to allow the computer system <NUM> to retake control of the robotic device <NUM>; and/or the like.

In action <NUM>, the computer system <NUM> can determine whether the action was successfully performed with the human assistance using any solution. For example, the human user <NUM> can notify the computer system <NUM> that the action is complete, the computer system <NUM> can automatically determine that the action was completed by monitoring the human user's <NUM> actions, and/or the like. If the action was successful, the process can return to action <NUM>, to obtain the next action to complete for the task. If not, in action <NUM>, the computer system <NUM> can store data corresponding to the error (e.g., as task data <NUM>). When the task has been successfully completed or a critical action was unable to be completed, the computer system <NUM> can proceed to the next task or wait to receive instructions for a next task. In the event the robotic device <NUM> has no subsequent task to perform immediately, the computer system <NUM> can ensure that any devices in the sensor component <NUM> and effector component <NUM> are stored safely, shut down or partially shut down various devices, relocate to a safe location, and/or the like.

<FIG> shows illustrative principles relating to human augmentation of robotic work according to an embodiment. As illustrated, the robotic device <NUM> includes various sensors, effectors, and processors, which collectively enable the robotic device <NUM> to perform various tasks. Operation of the robotic device <NUM> is controlled by a machine cognition engine <NUM> (e.g., implemented by the processor(s) and program code) using a hybrid control architecture <NUM>, which includes various levels of autonomy. To this extent, the hybrid control architecture <NUM> permits dynamic changes between various modes of operation, one or more of which includes some amount of human control <NUM>, for the robotic device <NUM> during performance of a task. Illustrative modes of operation can include: teleoperation 42A by the human user <NUM>, in which the robotic device <NUM> is being operated by the human user <NUM>; assisted control 42B, which combines manual control with an ability of the robotic device <NUM> to cause the human user <NUM> to surrender control; and full autonomy 42C, in which the robotic device <NUM> is operating without assistance from the human user <NUM>. Actions performed by the robotic device <NUM> under any of the modes of operation can be controlled and directed by the interaction of various algorithms 44A-44C. Illustrative algorithms include navigation and basic operation algorithms 44A, reconfigurable proximity algorithms 44B, anomaly/urgency evaluation algorithms 44C, and/or the like.

In addition to controlling operation of the robotic device <NUM>, the human user <NUM> can mediate <NUM> the actions of the robotic device <NUM>, e.g., by changing or otherwise affecting operation of one or more of the algorithms 44A-44C. Such changes can be implemented through updating the algorithms 44A-44C directly (e.g., updating software used to implement the algorithms), training the robotic device <NUM> to perform various tasks using any solution, identifying a particular situation or element of a situation which may require intervention by the human user <NUM> and/or the robotic device <NUM> under the hybrid architecture <NUM>, and/or the like.

The human user <NUM> also can assign tasks to be performed by the robotic device <NUM> using a tasking methodology <NUM>. The tasking methodology <NUM> can be implemented using any solution. For example, the tasking methodology can comprise a simple graphical user interface, which enables the human user <NUM> to select from a menu of tasks for which the robotic device <NUM> is capable of performing. The tasking methodology <NUM> also can be implemented using a more complex solution, such as describing through an interface a complex series of actions to be performed by the robotic device <NUM>. Additionally, an embodiment of the tasking methodology <NUM> enables the robotic device <NUM> to add/propose tasks, e.g., based on one or more aspects of the operating environment. For example, the robotic device <NUM> may identify debris in an unsafe location (e.g., an obstruction on a track) and request permission from the human user <NUM> to perform the task prior to completing a previously assigned task.

Each of the algorithms 44A-44C can cause the robotic device <NUM> to continually check for completion of an assigned task or its corresponding action(s) using a cyclic process. Additionally, the robotic device <NUM> can monitor the performance of assigned task(s) using a set of completion metrics <NUM>. If a task is not completed, the algorithm 44A-44C can cause the robotic device <NUM> to evaluate whether a difficulty in completing the task has been encountered. If so, the robotic device <NUM> can evaluate whether the amount of autonomy should be changed (e.g., whether human assistance is required), whether the robotic device <NUM> can complete the task using an alternative approach, whether the problem (and possible incompletion of the action) can be noted and performance of the task continue without human assistance, and/or the like. In the event the robotic device <NUM> determines that human assistance is required, the robotic device <NUM> can notify the human user <NUM> and adjust the current operating state 42A-42C in the hybrid control architecture <NUM>.

In an embodiment, while the human user <NUM> is performing some level of control, the robotic device <NUM> can monitor progress of the action to learn how to subsequently perform the action autonomously based on the human user's <NUM> actions. Furthermore, the robotic device <NUM> can automatically identify when the human user <NUM> has performed sufficient acts to enable the robotic device <NUM> to continue with the task without further human assistance. Subsequently, the robotic device <NUM> can adjust the current operating state 42A-42C in the hybrid control architecture <NUM> and commence autonomous operations. Similarly, the human user <NUM> can monitor progress being made by the robotic device <NUM> using the set of completion metrics <NUM> and interrupt the operations of the robotic device <NUM> in response to determining that the robotic device <NUM> requires assistance. In response, the robotic device <NUM> can adjust the current operating state 42A-42C in the hybrid control architecture <NUM> to allow the human user <NUM> to perform the action(s). The human user <NUM> can manually perform the action(s) and can return control to the robotic device <NUM> once the action(s) have been completed. In this manner, both the robotic device <NUM> and the human user <NUM> can evaluate information regarding the current and desired states of task(s) being performed by the robotic device <NUM> to dynamically determine actions for both parties.

Additional aspects of the invention are described herein in conjunction with a ground-based robotic device <NUM> configured for use in a railroad setting, such as a railroad maintenance yard. To this extent, the robotic device <NUM> can be configured to perform one or more railroad maintenance operations. For example, the robotic device <NUM> can be configured to perform a brake bleeding task on a series of rail vehicles in a consist, such as a freight train. Brake bleeding is an important service performed in rail yards, for which it is highly desirable to successfully perform the task as close to one hundred percent of the time as possible. In particular, leaving a rail vehicle's brakes on can cause rail vehicles to fail to couple, requiring additional work to force the couplings. Additionally, if left on during travel, the brakes can cause damage to the wheel and/or brakes, drastically reduce an efficiency of the train, and/or the like.

<FIG> shows an illustrative rail yard robotic device <NUM> according to an embodiment. The robotic device <NUM> is shown including a box-shaped main body <NUM> to which are attached driving wheels <NUM> and impact-sensitive protective bumpers <NUM>. The robotic device <NUM> further includes a mechanical arm <NUM>, which can have several degrees of freedom. For example, the mechanical arm <NUM> can be mounted to the main body <NUM> using a swivel mount 166A and include one or more extendible sections and arm gearing 166B-166D. An effector device, such as a grasping manipulator <NUM>, can be located on an end of the mechanical arm <NUM>. The grasping manipulator <NUM> can be configured to grasp and pull brake rods on rail vehicles.

To permit navigation of the robotic device <NUM> and performance of a set of maintenance operations, including brake bleeding, the robotic device <NUM> further includes a combined camera and laser rangefinder device 170A located on the main body <NUM>, and a second combined camera and laser rangefinder device 170B located on a section 166D of the arm <NUM>. Furthermore, the robotic device <NUM> can include one or more devices for transmitting and/or acquiring data using a wireless solution. For example, the robotic device <NUM> can include an RFID (e.g., AEI) tag reader <NUM>, which can be configured to acquire identifying data for the rail vehicles on which the robotic device <NUM> operates. Furthermore, the robotic device <NUM> can include one or more computing devices of a computer system <NUM> (<FIG>), a GPS device for use in tracking the location of the robotic device <NUM>, and/or the like, mounted inside the main body <NUM>, each of which can acquire and/or transmit data from/to an external computer system <NUM> (<FIG>) using a corresponding wireless communication solution <NUM>. In a more particular illustrative embodiment, the computing device comprises a rack-mounted computing device executing a Unix-based operating system and custom software, which is configured to communicate with a local or remote human user <NUM> (<FIG>), operate the various input/output devices described in conjunction with the robotic device <NUM>, and provide machine cognition as described herein.

<FIG> shows an illustrative process for bleeding brakes on a train using a rail yard robotic device, such as the rail yard robotic device <NUM> (<FIG>), according to an embodiment. Referring to <FIG> and <FIG>, in action <NUM>, the robotic device <NUM> can initialize the various components of the robotic device <NUM> for bleeding brakes on a train. The initialization can include any combination of various actions, which can be dependent on a previous state of the robotic device <NUM>, the components of the robotic device <NUM>, and/or the like. Illustrative actions can include restarting the robotic device <NUM> from a previous shut down, clearing any work previously performed by the robotic device <NUM>, determining a next task to perform after a process was aborted due to a failure, and/or the like. Furthermore, the initialization can include the robotic device <NUM> receiving information relating to the assigned task, such as a map of the rail yard in which the robotic device <NUM> will be operating, identification of a particular track and train on which to perform the brake bleeding operation, a location of markers, such as spring boxes, on the target rail vehicles, and/or the like.

In action <NUM>, the robotic device <NUM> can follow a target track until reaching the designated train. After reaching the designated train, in action <NUM>, the robotic device <NUM> commenced following the train. If the robotic device <NUM> encounters a problem in action <NUM> or <NUM>, in action <NUM>, the robotic device <NUM> can obtain human assistance. For example, the robotic device <NUM> may not be able to navigate an obstacle, may lose tracks buried in snow, and/or the like. In action <NUM>, a human user <NUM> (<FIG>) will operate the robotic device <NUM> in an attempt to resolve the problem. When the problem is successfully resolved by the human user <NUM>, the robotic device <NUM> can resume independent operation and return to the corresponding action <NUM> or <NUM>. When the human user <NUM> cannot successfully resolve the error, in action <NUM>, the robotic device <NUM> can abort the task, record data corresponding to the failure, and return to action <NUM> to wait to receive another task. In this case, the robotic device <NUM> can stow any movable attachments, shut down/partially shut down unnecessary components, move to a safe location, and/or the like.

While following a train, the robotic device <NUM> can read an AEI tag of an adjacent rail vehicle using the AEI tag reader <NUM>. The AEI tag can be used to identify the corresponding rail vehicle for possible future reference and/or identify a rail vehicle/rail vehicle type, which may require special processing. Regardless, in an embodiment, the AEI tag data has a low priority. As a result, when the robotic device <NUM> fails to read the AEI tag, in action <NUM>, the robotic device <NUM> can store data corresponding to the failure (e.g., relative position of the rail vehicle in the train), identify the rail vehicle using an alternative identification solution, and return to the brake bleeding process. In this manner, the robotic device <NUM> does not interrupt the human user <NUM> by requesting assistance in response to the failure. Rather, the robotic device <NUM> can store the relevant information for later use.

In action <NUM>, the robotic device <NUM> can locate a marker, such as a spring box, on a rail vehicle. The spring box can provide a good navigation landmark on a rail vehicle due to a standardized design of spring boxes for various types of rail vehicles. However, it is understood that a spring box is only illustrative of various possible markers. Regardless, in action <NUM>, the robotic device <NUM> can use the spring box location and other navigation data to move to a likely location of the brake rod on the rail vehicle. When the robotic device <NUM> encounters a problem in action <NUM> or <NUM>, in action <NUM>, the robotic device <NUM> can obtain assistance from the human user <NUM>. For example, the robotic device <NUM> may fail to locate a spring box, identify an extra spring box on a rail vehicle, be unable to navigate to the likely location of the brake rod, and/or the like. In action <NUM>, the human user <NUM> can control the robotic device <NUM> to address the error and/or provide data for use by the robotic device <NUM> to enable the robotic device <NUM> to independently address the error. For example, the human user <NUM> may identify the spring box, indicate that an object is not a spring box, identify the likely location of the brake rod without using the marker, navigate an obstacle, and/or the like. In response, the robotic device <NUM> can use the information provided by the human user <NUM> to train itself to address a similar situation in the future (e.g., more accurately identify spring boxes). In the event the human user <NUM> cannot resolve the error, in action <NUM>, the robotic device <NUM> can abort the task, record data corresponding to the failure, and return to action <NUM> to wait to receive another task.

Once the robotic device has moved to a likely location for the brake rod, in action <NUM>, the robotic device <NUM> can locate the brake rod on the rail vehicle. For example, the robotic device <NUM> can use machine vision processes to process data received from the onboard camera and laser rangefinder devices 170A, 170B to locate the brake rod. When the robotic device <NUM> is unable to locate the brake rod in the expected location, in action <NUM>, the robotic device <NUM> can obtain assistance from the human user <NUM>. The human user <NUM> can identify the brake rod in image data acquired by the camera and laser rangefinder devices 170A, 170B, change a field of view of one or both of the devices 170A, 170B, and/or the like. When the human user <NUM> resolves the error, the robotic device <NUM> can continue with the automated brake bleeding process. Additionally, the robotic device <NUM> can use data corresponding to the human user's <NUM> resolution of the error to learn from the human user <NUM> for future attempts at automatically identifying a brake rod. Furthermore, the robotic device <NUM> can restart the automated process in response to one or more actions taken by the human user <NUM>. For example, after changing the field of view of a device 170A, 170B, the robotic device <NUM> may identify the brake rod within the new field of view and continue with the brake bleeding operation. In the event the human user <NUM> cannot resolve the error, in action <NUM>, the robotic device <NUM> can abort the task, record data corresponding to the failure, and return to action <NUM> to wait to receive another task.

After locating the brake rod, in action <NUM>, the robotic device <NUM> can position the arm <NUM> and grasping manipulator <NUM> to enable the grasping manipulator <NUM> to properly approach the brake rod for grasping. When attempting to position the arm <NUM>, the robotic device <NUM> may encounter one or more problems. For example, the robotic device <NUM> may recognize that the current position and/or angle of the main body <NUM> are not optimal for grasping the brake rod. In this case, in action <NUM>, the robotic device <NUM> can reposition itself to a location anticipated to provide a better grasping configuration. If the robotic device <NUM> remains unable to grasp the brake rod, in action <NUM>, the robotic device <NUM> can obtain assistance from the human user <NUM>. The human user <NUM> can adjust the location of the main body <NUM>, operate the arm <NUM>, and/or the like, to properly locate the grasping manipulator <NUM>. While the human user <NUM> has control, the robotic device <NUM> can learn from the human's actions how to address a similar problem in the future. When the human user <NUM> resolves the error, the robotic device <NUM> can continue with the automated brake bleeding process. In the event the human user <NUM> cannot resolve the error, in action <NUM>, the robotic device <NUM> can abort the task, record data corresponding to the failure, and return to action <NUM> to wait to receive another task.

Once the arm <NUM> and grasping manipulator <NUM> have been properly positioned, in action <NUM>, the robotic device <NUM> can operate the grasping manipulator <NUM> to approach the brake rod. In action <NUM>, the robotic device <NUM> can operate the grasping manipulator <NUM> to grip and bleed the brake. Once bleeding is complete, in action <NUM>, the robotic device <NUM> can open the grasping manipulator <NUM> to release the brake rod, stow or partially stow the arm <NUM>, move away from the rail vehicle, and/or the like. In action <NUM>, the robotic device <NUM> can determine whether all of the assigned rail vehicles have been processed for the train. If not, the process can return to action <NUM>, and the robotic device <NUM> can recommence the train following to process the next rail vehicle. If the train processing is complete, in action <NUM>, the robotic device <NUM> can provide train processing data for use by the human user <NUM> and/or another computer system <NUM>. For example, the train processing data can include data corresponding to: any minor failures, such as any failed AEI tag read operations; any incomplete actions, such as an inability to bleed the brakes of a rail vehicle; data corresponding to successful actions, such as a number of rail vehicles processed, their AEI tag data, etc.; and/or the like. Subsequently, the robotic device <NUM> can return to action <NUM> to commence another task. In an embodiment, the human user <NUM> can review the reported results and request that the robotic device <NUM> repeat one or more actions.

It is understood that the process of <FIG> is only illustrative and has been simplified to enable key aspects of the invention to be clearly described. For example, it is understood that the robotic device <NUM> can encounter various challenges and potential failure points in actions <NUM>, <NUM>, and <NUM>, any one of which may require assistance and/or intervention from the human user <NUM>. Furthermore, the various problems described herein are only illustrative of numerous problems that can be encountered by the robotic device <NUM>. Additionally, while the process is shown as terminating when a human user <NUM> cannot complete an action, the human user <NUM> can provide further instructions, which enable the robotic device <NUM> to continue the process. For example, the human user <NUM> can instruct the robotic device <NUM> to skip a particular action or rail vehicle, and continue with further actions. When certain errors are encountered, the robotic device <NUM> can terminate the operation without requesting assistance from the human user <NUM>. For example, one or more components of the robotic device <NUM> may fail to operate. In such a situation, the robotic device <NUM> can report the failure to the human user <NUM> and move to a location for servicing, if possible.

Within each of the actions described herein, it is understood that the robotic device <NUM> and the human user <NUM> can engage in a more complex, cooperative behavior. For example, while the human user <NUM> is assisting in operating the arm <NUM> to position the grasping manipulator <NUM>, the robotic device <NUM> can monitor the actions requested by the human user <NUM> and model a result of such actions. The robotic device <NUM> can ensure that the requested action will not inadvertently cause damage to the robotic device <NUM>, a rail vehicle, or other object in the vicinity, such as by overextending the arm <NUM>, causing the robotic device <NUM> to collide with a rail vehicle, and/or the like. When the model predicts a potential problem, the robotic device <NUM> can intervene and prevent and/or adjust one or more aspects of the requested action, such as by reducing a speed of motion, diverting a direction of the movement, limiting the movement, and/or the like. The robotic device <NUM> can provide feedback to the human user <NUM> indicating why the requested action was modified, which can enable the human user <NUM> to evaluate the feedback and make appropriate adjustments.

The robotic device <NUM> can include one or more features, which further prevent the human user <NUM> from making a mistake while teleoperating components of the robotic device <NUM>. For example, in order to accommodate use of a relatively slow wireless communication solution <NUM>, the robotic device <NUM> can communicate image data using a progressive image compression and transmission solution, which allows the human user <NUM> to view the imaged scene in near real time while more details are transmitted later, e.g., through a slower speed communication link. Human commanded movement of one or more components of the robotic device <NUM> (e.g., the arm <NUM>) can be implemented using a locking mechanism between discrete steps, which reduces a possibility of the human user <NUM> jumping ahead of the motion of the component due to a slow remote communication link <NUM>. In an embodiment, the robotic device <NUM> can allow different execution speed between locked steps depending on a distance of the component from other objects in the work area. For example, the human user <NUM> can be allowed to move the arm <NUM> faster when it is some distance from the region of interest, but reduce the speed as it approaches objects located in the work area. The robotic device <NUM> also can determine whether performance of a requested operation can be postponed, for example, to reduce cognitive load on the human user <NUM> or a performance load on the robotic device <NUM>.

It is understood that the robotic device <NUM> can utilize data and/or computing resources that are distributed throughout an environment. For example, referring to <FIG> and <FIG>, the computer system <NUM> for the robotic device <NUM> can include a first computing device located in the main body <NUM> and a second computing device located on the arm <NUM>. During operation, the first computing device can implement a process for navigating the robotic device <NUM>, e.g., from one rail vehicle to the next, while the second computing device can implement a process for recognizing the brake rod, moving the arm <NUM>, and operating the grasping manipulator <NUM> to perform the brake bleeding operation described herein.

Additionally, one or more operations described herein as being performed by the robotic device <NUM> can be performed by a computer system <NUM> located external from the physical structure of the robotic device <NUM>. For example, the computer system <NUM> can serve as a decision making/data collection source. In this case, the computer system <NUM> can be located in a fixed location and include one or more sensing devices, which enable the computer system <NUM> to acquire data on a passing train. The computer system <NUM> can process the data, and communicate the data and/or corresponding instructions to the robotic device <NUM> and/or human user <NUM>. In this manner, the computer system <NUM> can schedule operations for one or more robotic devices.

<NUM> in a dynamic manner while reducing the workload for the human user <NUM>. Additionally, the computer system <NUM> can acquire data for use by the robotic device <NUM> and/or human user <NUM>. For example, the computer system <NUM> can include an imaging device, which acquires image data of the train that is processed by the computer system <NUM> to identify the location of a spring box and/or brake rod on each rail vehicle. The identified location(s) can subsequently be provided for use by the robotic device <NUM> as a precise location in a limited coordinate system. Should the computer system <NUM> fail to identify either the spring box or brake rod, the computer system <NUM> can inform the human user <NUM>, who can attempt to identify the component(s), e.g., when the robotic device <NUM> is at the rail vehicle, alter instructions for the robotic device <NUM>, and/or the like. To this extent, the human user <NUM> and computer system <NUM> can act as a single entity (e.g., as a hierarchal or star architecture) to provide instructions to and assist in the operation of the robotic device <NUM>.

Similarly, task data <NUM> can be stored local to each computing device in the computer system <NUM> and/or stored external from the physical structure of the robotic device <NUM>. For example, the robotic device <NUM> can use a wireless communication solution <NUM> to provide and/or obtain task data <NUM> to/from the computer system <NUM>, which includes a central database that stores task data <NUM> for multiple robotic devices <NUM>. By sharing task data <NUM>, multiple robotic devices <NUM> can work in conjunction with one another to dynamically adjust workloads, learn from the actions of other robotic devices <NUM> and/or the human assistance provided to other robotic devices <NUM>, etc..

In an embodiment, the robotic device <NUM> can be configured to provide task data <NUM> for storage in the central database after each instance of receiving human assistance. The task data <NUM> can include information corresponding to how the human user <NUM> resolved a problem or attempted to resolve a problem but failed. Periodically, each robotic device <NUM> can acquire new task data <NUM> from the central database, which can be used to improve its own autonomic operation, thereby reducing a number of instances that human user(s) <NUM> is (are) required to resolve same or similar problems encountered by the robotic devices <NUM>. Furthermore, the task data <NUM> can enable a robotic device <NUM> to be able to identify when a problem will not be able to be resolved with human assistance, thereby allowing the robotic device <NUM> to automatically abort a task or take another appropriate action.

In an embodiment, multiple robotic devices <NUM> operate as a team to perform a task. For example, an environment <NUM> can include multiple robotic devices <NUM> positioned with respect to a product line. The robotic devices <NUM> can include a subset of primary robotic devices <NUM> assigned to perform a task or a series of actions of a task, and a subset of secondary robotic devices <NUM>, which perform any actions/tasks not performed by the subset of primary robotic devices <NUM>. For example, a primary robotic device <NUM> may require assistance from a human user <NUM> to complete an action, which may result in one or more other actions not being completed. The primary robotic device <NUM> can communicate this to the secondary robotic device <NUM> which completes the action(s). Using the robotic device <NUM> as another example, two robotic devices <NUM> can be located on opposing sides of the train and communicate with one another to complete the brake bleeding operations. For example, a robotic device <NUM> may not be able to pull a brake bleed lever from its side of the train (e.g., due to an obstruction or the like). In this case, the robotic device <NUM> can request that the robotic device <NUM> on the opposing side attempt to bleed the brakes.

It is understood that management of a set of robotic devices <NUM>, <NUM> can be integrated into an existing process management system for an environment <NUM>. For example, a facility may have an existing scheduling system with information regarding upcoming work, locations of the work, and/or the like. To this extent, a rail yard may include a computer system <NUM> with a schedule of train arrivals and departures, tracks to be utilized for trains and consists, known maintenance work to be performed, and/or the like. A robotic device <NUM>, <NUM> can receive data corresponding to the schedule and its assigned tasks and pre-locate itself in an appropriate position, provide the computer system <NUM> with updated information regarding the operating condition of a rail vehicle, and/or the like.

As described herein, aspects of the invention can provide one or more advantages over prior art approaches. These advantages include: providing a graceful transition in both directions between full autonomy of the robotic device and full control by a human user; enabling the robotic device to assess an amount and urgency of the required assistance and to prioritize these requests for presentation to the human user; enabling the human and robotic device to work cooperatively in a seamless manner by passing instructions and data back and forth; dynamic learning from the human user by the robotic device to reduce future requests; active assistance of the human user by the robotic device to reduce errors; and/or the like.

While shown and described herein as a method and system for augmenting robotic work with human input and assistance, it is understood that aspects of the invention further provide various alternative embodiments. For example, in one embodiment, the invention provides a computer program fixed in at least one computer-readable medium, which when executed, enables a robotic device and human user to jointly perform a task as described herein. To this extent, the computer-readable medium includes program code, such as the automation program <NUM> (<FIG>), which enables a robotic device to implement some or all of a process described herein. It is understood that the term "computer-readable medium" comprises one or more of any type of tangible medium of expression, now known or later developed, from which a copy of the program code can be perceived, reproduced, or otherwise communicated by a computing device. For example, the computer-readable medium can comprise: one or more portable storage articles of manufacture; one or more memory/storage components of a computing device; paper; and/or the like.

In another embodiment, the invention provides a method of providing a copy of program code, such as the automation program <NUM> (<FIG>), which enables a robotic device to implement some or all of a process described herein. In this case, a computer system can process a copy of the program code to generate and transmit, for reception at a second, distinct location, a set of data signals that has one or more of its characteristics set and/or changed in such a manner as to encode a copy of the program code in the set of data signals. Similarly, an embodiment of the invention provides a method of acquiring a copy of the program code, which includes a computer system receiving the set of data signals described herein, and translating the set of data signals into a copy of the computer program fixed in at least one computer-readable medium. In either case, the set of data signals can be transmitted/received using any type of communications link.

In still another embodiment, the invention provides a method of generating a system for performing a task using a robotic device augmented by a human user. In this case, the generating can include configuring a computer system, such as the computer system <NUM> (<FIG>), to implement a method of performing a task as described herein. The configuring can include obtaining (e.g., creating, maintaining, purchasing, modifying, using, making available, etc.) one or more hardware components, with or without one or more software modules, and setting up the components and/or modules to implement a process described herein. To this extent, the configuring can include deploying one or more components to the computer system, which can comprise one or more of: (<NUM>) installing program code on a computing device; (<NUM>) adding one or more computing and/or I/O devices to the computer system; (<NUM>) incorporating and/or modifying the computer system to enable it to perform a process described herein; and/or the like.

Claim 1:
A system comprising:
a robotic device (<NUM>) including:
a set of effector devices (<NUM>);
a set of sensor devices (<NUM>); and
a first computer system (<NUM>) including at least one computing device, wherein the first computer system (<NUM>) implements a machine cognition engine (<NUM>) configured to perform a task using the set of effector devices (<NUM>), the set of sensor devices (<NUM>), and a hybrid control architecture (<NUM>) including a plurality of levels of autonomy dynamically changeable by the robotic device (<NUM>), wherein the plurality of levels of autonomy include: full autonomy of the robotic device (<NUM>) while performing the task and teleoperation (42A) of the robotic device (<NUM>) by a human user (<NUM>) to perform at least one action of the task, wherein the robotic device (<NUM>) is configured to initially attempt to complete the task using the full autonomy level of autonomy (42C), and wherein the robotic device (<NUM>) is configured to automatically reduce a current level of autonomy in response to determining an ability to perform a current action of the task requires more human assistance for the robotic device (<NUM>), and the robotic device (<NUM>) is configured to automatically increase a current level of autonomy in response to automatically identifying that the human user (<NUM>) has performed sufficient acts to enable the robotic device (<NUM>) to continue with the task without further human assistance,
wherein the task includes a plurality of actions, and wherein the first computer system (<NUM>) is configured to first attempt to perform each of the plurality of actions using the full autonomy level of autonomy (42C), characterised in that,
in response to encountering a problem completing an action in the plurality of actions using the full autonomy level of autonomy (42C), the first computer system (<NUM>) is configured to determine a criticality of the action, wherein the action is critical when an alternative action is not available and completion of the action is necessary for at least one subsequent action of the task, and perform one of: decrease the level of autonomy (42A-42C) in response to the action being a critical action or bypass the action and/or attempt to perform an alternative action using the full autonomy level of autonomy (42C) in response to the action being a non-critical action.