# Patent

## Title
Teleoperation of machines having at least one actuated mechanism and a fault detection and recovery system

## Abstract

A machine has at least one actuated mechanism is remotely located from a control station. A two way real-time communication link connects the machine location with the control station. A controller at the machine location has program code that is configured to determine from data from one or more sensors at the machine location if an actual fault has occurred in the machine when the machine is performing its predetermined function and to determine for an actual fault one or more types for the fault and transmit the one or more fault types to the control station for analysis. The code in the controller is configured to be a preprogrammed trap routine specific to the machine function that is automatically executed when an error in machine operation is detected at the machine location. The controller also has a default trap routine that is executed when specific routine does not exist.

## Background
FIELD OF THE INVENTION
This invention relates to the teleoperation of one or more robots or other machines with at least one actuated mechanism.
DESCRIPTION OF THE PRIOR ART
Teleoperation of an industrial robot occurs when the operator of the teleoperated industrial robot is located apart from the robot when the industrial robot performs work. An industrial robot is an automatically controlled, reprogrammable, multipurpose manipulator programmable in three or more axes. Examples of industrial robots are robots located at a fixed position that are mobile by themselves or mobile because the robot is mounted on a device that it is itself mobile such as a motorized vehicle or mounted on a track or gantry etc.
By located apart from each other is meant that the operator and teleoperated industrial robot are either within the line of sight of each other or are separated from each other by a barrier through which the operator can see the robot that is controlled by the operator, or are at a distance from each other such that the operator cannot see the robot with his or her eyes. If there is a see through barrier, the barrier separates the operator from work performed by the robot that is hazardous to the health or safety of the operator.
The principal applications for teleoperated industrial robots are machining, handling of hazardous materials, assembling/disassembling, operation in a contaminated environment, inspection and service, or other operations in an unmanned, harsh outdoor environment such as offshore, desert, Arctic, Antarctic, subsea and space.
SUMMARY OF THE INVENTION
A system for teleoperation of a machine has at least one actuated mechanism and a predetermined number of degrees of freedom. The system comprises:
a control station remotely located from a location of the machine, the machine controlled from the control station to perform a predetermined function;
a two way real-time communication link between the machine and the remotely located control station; and
a controller at the machine location having therein program code, the program code configured to determine from data from one or more sensors at the machine location if an actual fault has occurred in the machine when the machine is performing the predetermined function, the program code further configured to determine from the sensor data when an actual fault has occurred one or more types for the fault and transmit the one or more fault types to the control station for analysis at the control station.
A system for teleoperation of a machine has at least one actuated mechanism and a predetermined number of degrees of freedom. The system comprises:
a control station remotely located from a location of the machine, the machine controlled from the control station to perform a predetermined function;
a two way real-time communication link between the machine and the remotely located control station; and
a controller at the machine location having therein program code, the program code configured to be a preprogrammed trap routine which will be automatically executed by the controller to take actions when an error in supervision of the machine by the control station is detected at the machine location.



DESCRIPTION OF THE DRAWING
FIG. 1 shows an embodiment for a system for a teleoperated industrial robot.
FIG. 2 shows an embodiment for the system of FIG. 1 which also shows an obstacle or a distance between the teleoperator and the robot.
FIG. 3 shows a drawing for the safe stop and reduce contact force routine.
FIG. 4a shows a drawing for the safe stop and release contact force routine.
FIG. 4b shows the automatic retraction of the tool along the contact force direction.
FIG. 5 shows a flowchart for the robot fault detection and recovery system process.
FIG. 6 shows a flowchart for the robot fault detection and recovery system process.



DETAILED DESCRIPTION
Referring now to FIG. 1, there is shown a system 10 that has at least one remote robot station 12, at least one operator station 14 and at least one communication link 16 between the robot station 12 and the operator station 14. The physical distance between the remote robot station 12 and the operator station 14 can vary from “next door” to each other to “another continent”.
The robot station 12 includes at least one robot 12a. Robot 12a is for example a six degree of freedom industrial robot available from ABB.
Robot station 12 also includes a robot controller 12b that includes a data interface which accepts motion commands and provides actual motion data, and optionally one or more remote sensor devices 12c that observe the robot station 12 and attached processes, such as cameras, microphones, position sensors, proximity sensors and force sensors. The sensor devices 12c may either be smart sensors, that is, the sensor device 12c includes data processing capability or not smart sensors, that is, the sensor device 12c does not include data processing capability.
If the sensor devices 12c are smart sensors then the output of the sensor devices is connected directly to robot controller 12b. If the sensor devices 12c are not smart sensors, then their output can be connected either to a computation device 17 to process the sensor device output or to the communication link 16 described in more detail below so that the sensor device output is processed in data processing device 14c. 
The robot station 12 can also include as an option one or more actuators and other devices (not shown in FIG. 1 but well known to those of ordinary skill in this art), that are mounted to the robot or next to the robot, such as grippers, fixtures, welding guns, spraying guns, spotlights and conveyors.
The controller 12b has the program which when executed controls the motion of the robot 12a to perform work. As is well known, the robot may hold a tool, not shown, which is used to perform work on a stationary or moving workpiece, not shown, or may hold the workpiece which has work performed on it by an appropriate tool. The remote sensor devices 12c provide input signals to the controller 12b that the controller uses to control the robot 12a in performance of the work.
The operator station 14 has at least one teleoperation input device 14a such as joysticks or stylus-type devices which the operator uses to create continuous motion signals (position or speed signals). When force feedback is added to these devices they become haptic devices. This feedback causes a vibration in the joystick and the operator feels the force feedback in the stylus-type devices.
The signals from these input devices 14a are used by the controller 12b to operate the robot 12a. The device side also has at least one display device 14b and a data processing device 14c which is connected to both the input devices 14a and the display devices 14b. 
The monitoring (display) device 14b shows actual data about the robot motion and attached processes, for example, camera images, acoustic feedback and sensor values. The data processing device 14c processes data in both directions. Device 14c may for example be an industrial PC or a PLC.
The operator station 14 may also include a safety enable device (not shown in FIG. 1) that is separate and distinct from input devices 14a and may for example be a three position switch. The safety enabling device enables and disables power to the robot 12a and attached processes.
The communication link 16 connects the robot controller 12b and the data processing device 14c to each other. The communication link 16 comprises one or more communication links 16-1 to 16-N.
The communication link 16 between the operator station 14 and the robot station 12 may be realized with various technologies (e.g. fiber-optic/radio/cable on different types and layers of data protocols). A major portion or the entire infrastructure of the communication link may already exist and be used for other purposes than teleoperating robots. Typical examples are existing Ethernet installations with LAN and WLAN, Bluetooth, ZigBee and other wireless industrial links, point-to-point radio systems or laser-optical systems, and satellite communication links.
System 10 is operated to maintain a reliable “real-time” communication link 16 between device side 14 and the remotely located robot side 12. The system 10 changes parameters of the communication link 16 and the robot motion, depending on the current available data rate and/or transmission time of the communication link 16.
In system 10, the operator has direct remote control of the motion of robot 12a and attached processes. Thus the term “real-time” as used herein is in the context of teleoperation of the motion of a robot 12a or a machine. The teleoperation is considered to be real-time if:
a maximum delay between operator commands, robot motion, and feedback about robot motion and attached processes at the operator station is not exceeded, and
the maximum delay is dependent on the speed of machine motion, i.e. with slow machine motion a slightly longer delay is acceptable, and
the maximum delay is deterministic, i.e. the delay time does not significantly vary over time.
Exceeding the maximum delay may result in damage to the workpiece or to the robot or other equipment on the robot side. For example, if the teleoperated robotic is used in a grinding application and the communication delay exceeds the maximum delay, this causes the operator to remove more material from the workpiece than desired. This excess removal of material can result in damage to the workpiece. Also for example, if the teleoperated robot is used in a material handling application, the communication delay exceeding the maximum delay causes the collision between the robot 12a and other equipment on robot side.
This understanding of “real-time” is similar to real-time computation, where not only wrong results of logic and arithmetic operations can occur but also not timely results cause errors.
A fault such as a collision, communication failure or a dangerous robot movement may occur during the operation of a teleoperated robot. Traditionally the robot is stopped immediately upon the occurrence of the fault by an emergency stop (E-stop) mechanism. This mechanism stops the robot movement by mechanical braking systems and cuts off power to the robot motors. However, the E-stop makes recovery difficult and inconvenient to the operator of the teleoperated robot as the operator cannot access the teleoperated robot due to the distance between the operator and the robot or the hazardous environment in which the teleoperated robot is used.
FIG. 2 illustrates the robot teleoperation system 10 in a manner similar to that shown in FIG. 1 with the added elements described herein. An element in FIG. 2 that is identical to the same element shown in FIG. 1 has the reference numeral used for that element in FIG. 1. For ease of illustration, the display 14b and the data processing device 14c shown in FIG. 1 are not shown in FIG. 2.
System 10 has a robot 12a that resides in a remotely located robot station 12 with a tool 12d held by robot 12a and sensors 12c that are on and surround the robot 12. A controlling input device 14a in the operator station 14 is connected with the robot 12a through wire or wireless communication such as communication link 16 of FIG. 1. An operator 14d operates the device 14a and looks either at a monitor 14b (see FIG. 1) to observe the robot 12a from a distance or through a barrier 18 that is between the robot 12a and the controlling input device 14a. 
While not shown in FIG. 2, there is a controller such as controller 12b of FIG. 1 that is associated with robot 12a. The controller 12b is a computing device connected to the robot 12a that is programmed to respond to commands from the controlling input device 14a to use the tool 12d to perform a predetermined operation.
The error handling features of system 10 are as follows:
1) When an error occurs, an application specific user programmable trap routine written in robot program language is automatically executed. There is no need for any human intervention. The trap routine can handle application specific requirements such as for example turning off a spindle.
2) The trap routine is invoked automatically when a teleoperation supervision error is generated by the robot controller 12b. For example, the trap routine is automatically invoked when there is a loss of communication or the robot speed limit is exceeded.
3) A default trap routine is provided if an application specific trap routine is not provided by a programmer for the user of the robot 12a. 
4) When a teleoperation error occurs, the robot 12a can take some standard recovery actions in addition to the application specific actions such as reducing the robot position gain so that the robot 12a is soft and can backtrack along the path or contact force direction to reduce contact. These actions can be put in the trap routine. A soft robot has a reduced stiffness and this means that less contact force is needed to cause the robot 12a to move a given distance.
Several examples of a safe stop routine are as follows:
Safe stop and reduce contact force routine: This routine is a controlled stop with power available to the motors to achieve the stop for all contact teleoperation applications. The robot position at stop acts as a reference position and the stiffness parameters A and B, shown in FIG. 3, in the robot controller 12b are decreased, that is, the robot 12a is becoming “soft”. If there is an external contact force (F in FIG. 3) between the robot 12a and the part 30, the robot 12a acts as a spring and moves away from the stop position along the contact force direction. Therefore the contact the force is reduced.
Safe stop and release contact force routine:
This routine releases all the contact pressure after a controlled stop. The robot controller 12b records the robot's recent path (the arrow shown in FIG. 4a) from the nearest free space, that is no contact force, to the current stop position, which is either controlled by the operator 14d through the tele-operated device 14a or the robot program. Then the robot 12a automatically retracts the tool 12d along this path after the safe stop. This small movement releases all the contact pressure.
The robot 12a may also automatically retract the tool 12d along the contact force direction, which is the combination of Fx and Fy shown in FIG. 4b, to the nearest free space.
This safe stop and release contact force can be used in contact teleoperation applications, such as telemachining. For example in the teleoperated grinding application, after the safety stop, the grinding tool needs to be moved away from the part in order to prevent uncontrolled material removal. The robot controller 12b can use the remembered, that is recorded recent, path, which is how the operator 14d moved the grinder from the nearest free space to the current position, to retract the grinder.
5) For loss of communication, the robot 12a is stopped if it is still moving and is then put into the safe stand still supervision mode so that the robot 12a does not move its axes. When the robot 12a is moving, the safe stand still supervision mode energizes the servo and drive system for the motor of each robot axis, but holds the robot axes not to make any movement. This mode allows the robot 12a to quickly resume motion after the communication is recovered. When the robot 12a is not moving, the robot 12a is in a safe stop mode. The servo and drive system is not energized. The mechanical brake is engaged to hold each axis.
Safe Stand-still stop is a controlled stop with power available to the robot motors to achieve the stop. The robot controller 12b supervises that the robot 12a is standing still even if the servo and drive systems are in regulation, that is, if these systems are energized the robot controller prevents robot motion until communication is restored.
This Safe Stand-still stop can be used in remote non-contact teleoperation applications, for example, teleoperated inspection. If the communication between the teleoperation device 14a and robot controller 12b is lost, the robot 12a holds the sensor at the Safe Stand-still stop position and waits for the communication to recover. This stop enables the operator 14d to continue the teleoperation immediately once the communication is restored, saving cycle time and wear on the contactors and the brakes.
6) Robotic measurement devices (sensors) such as an encoder, force sensor and vision camera (see FIG. 1) are used in the fault status detection and recovery process monitoring; and
7) The fault recovery is performed on both sides of the system 10—the teleoperated robot 12a and its controlling device 14a. 
A robot program such as RAPID available from ABB is running in the background in the robot controller 12b to monitor the robot motion through various sensors on and around the robot 12a. When a fault (e.g. a fixture failure) or undesired motion is detected, the robot program receives the fault status information from the sensors, informs the operator 14d at the controlling device 14 and asks for the recovery command. The operator 14d selects a specific fault handling and recovery procedure to be used and issues the recovery command. Upon receipt of the command, the robot 12a follows the predetermined rules that reside in the robot controller 12b and starts the automatic fault recovery procedure.
FIG. 5 shows the flowchart 500 for the robot fault detection and recovery system process. At block 502 data about a possible fault that has been detected is received by the robot program. At decision block 504 the robot program determines from the received data if there is an actual fault. If the answer is no, the program returns back to block 502. If the answer is yes, the program proceeds to block 506 where the information from the sensors is read and the program determines from that information the fault types. The information about the fault types is sent to the operator and at block 508 the operator selects the recovery procedure and issues the recovery command for that procedure.
There are as shown in block 510 stored predefined rules for recovering from a fault. The rules ensure that the recovery from the fault meets the safety requirements for the operation of the robot. At block 512 the recovery process is started using the predefined rules and the issued recovery command.
At decision 514 it is determined if the system has recovered from the fault. If not, the flow returns to block 512. If the system has recovered from the fault, the flow proceeds to block 516 where the recovery is finished and the controlling device is informed that the recovery is completed from the robot side.
During the recovery, the operator 14d on the device side 14 can monitor the progress and status of the recovery using the sensor data obtained from the robot side 12. If the operator 14d determines that the automatic recovery process is not going as expected, that is, the system is not recovering, the operator 14d can interfere to alter the recovery process to a desired recovery. However, once started, the robot recovery process can be performed independently without operator interference.
It should be noted that loss of communication is also a possible fault in which the operator 14d does not have the control over the robot 12a. In this case, the robot 12a has to conduct the recovery by itself based on predefined rules stored in the robot controller 12b. For example, the robot 12a could retreat from its current task and return to home in a safe way or stay at the current position (status) awaiting further commands from the controlling device 14a after the communication is resumed.
When the system is recovered from a fault on the robot side 12, the controlling device 12b is informed and starts its own recovery process. The robot program (RAPID) recovery procedure is also used in the device side fault recovery.
FIG. 6 shows a flowchart 600 for the robot fault detection and recovery system process. At 602, the device side has received the information from the robot side that the recovery has occurred at the robot side. At 604, the recovery at the device side is initiated based on the information from the robot side and the predefined rules 606.
Decision 608 asks if the device side recovery is finished. If not, the flow returns back to block 604. If it has, the flow proceeds to block 610 where the recovery at the device side is synchronized with the recovery at the robot side.
It is to be understood that the description of the foregoing exemplary embodiment(s) is (are) intended to be only illustrative, rather than exhaustive, of the present invention. Those of ordinary skill will be able to make certain additions, deletions, and/or modifications to the embodiment(s) of the disclosed subject matter without departing from the spirit of the invention or its scope, as defined by the appended claims.

## Claims

1. A system for teleoperation of a machine having at least one actuated mechanism and a predetermined number of degrees of freedom, said system comprising:
a control station remotely located from a location of said machine, said machine controlled from said control station to perform a predetermined function;
a two way real-time communication link between said machine and said remotely located control station; and
a controller at said machine location having therein a program code, said program code configured to determine from data from one or more sensors at said machine location when an actual fault has occurred in said machine when said machine is performing said predetermined function, said program code further configured to determine from said sensor data, when the program code determines the occurrence of said actual fault, one or more fault types for said actual fault and transmit said one or more fault types to said control station for analysis at said control station, said controller further configured to receive, from said control station and after transmission of said one or more fault types to said control station, a selection of a recovery procedure for handling said one or more fault types, and wherein upon receipt by said controller of said selection, said controller executes predefined rules stored in said controller to start said recovery procedure.

2. The system of claim 1 where said analysis of said one or more fault types at said control station is performed by an operator at said control station, said operator selecting from said analysis said recovery procedure for said machine from said actual fault and using said two way real-time communication link to transmit said recovery procedure to said machine location.

3. The system of claim 2 wherein said operator can use data from said sensors to monitor said recovery and intercede to change said recovery procedure.

4. The system of claim 2 wherein said program code in said controller is further configured to transmit when said machine has recovered from said fault an indication of said machine fault recovery to said control station.

5. The system of claim 4 wherein a recovery is initiated at said control station using said indication of said machine fault recovery transmitted to said control station and said predefined rules.

6. The system of claim 5 wherein said control station is synchronized with said machine location when said recovery at said control station is completed.

7. A system for teleoperation of a machine having at least one actuated mechanism and a predetermined number of degrees of freedom, said system comprising:
a control station remotely located from a location of said machine, said machine controlled from said control station to perform a predetermined function;
a two way real-time communication link between said machine and said remotely located control station; and
a controller at said machine location having therein a program code, said program code configured to determine from data from one or more sensors at said machine location when an actual fault has occurred in said machine when said machine is performing said predetermined function, said program code further configured to determine from said sensor data, when the program code determines the occurrence of said actual fault, one or more fault types for said actual fault and use, and further wherein said controller is further configured to, when there is a loss of two way real-time communication link with said control station, execute predefined rules for recovering from a machine fault that are stored in said controller at said machine location, said predetermined rules including both application specific rules and default rules.

8. The system of claim 7 wherein said program code in said controller is further configured to transmit, when said machine has recovered from said fault and said two way real-time communication link is restored, an indication of said machine fault recovery to said control station.

9. A system for teleoperation of a machine having at least one actuated mechanism and a predetermined number of degrees of freedom, said system comprising:
a control station remotely located from a location of said machine, said machine controlled from said control station to perform a predetermined function;
a two way real-time communication link between said machine and said remotely located control station, said control station using said communication link to provide supervision of said machine; and
a controller at said machine location having therein a program code, said program code configured to be a preprogrammed trap routine which will be automatically executed by said controller when an error in supervision of said machine by said control station is detected at said machine location, and wherein in response to detection of the error in supervision the machine takes both one or more recovery actions from the preprogrammed trap routine and one or more other default actions.

10. The system of claim 9 wherein said preprogrammed trap routine can be specific to or independent of said predetermined function performed by said machine.

11. The system of claim 10 wherein said preprogrammed trap routine is specific to said predetermined function performed by said machine and does not exist in said controller.

12. The system of claim 9 wherein said one or more recovery actions are preprogrammed actions, and further wherein the one or more recovery actions taken are a safe stop of said machine resulting in said machine stopping all activities and the cessation of electrical power to said machine motors.

13. The system of claim 9 wherein said one or more recovery actions are preprogrammed actions, and further wherein the one or more actions taken are a safe stand still stop of said machine resulting in said machine stopping all activities but still maintaining electrical power to said machine motors, while the machine position is supervised by said controller to prevent movement of said machine.

14. The system of claim 13 wherein said machine is performing said predetermined function on a workpiece and said safe stand still stop reduces any contact force between said machine and said workpiece.

15. The system of claim 12 wherein said machine is performing said predetermined function on a workpiece and said safe stop releases all contact between said machine and said workpiece.

16. The system of claim 13 wherein said safe stand still action is taken when there is a loss of said two way real-time communication link between said machine and said remotely located control station.