Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ROBOT SYSTEM, METHOD FOR PROGRAMMING A ROBOT MANIPULATOR AND CONTROL SYSTEM
Document Type and Number:
WIPO Patent Application WO/2018/153474
Kind Code:
A1
Abstract:
Robot system (10) comprising a master robot manipulator (14) movable about a plurality of axes (18); a slave robot manipulator (16) movable about a plurality of axes (18); and a control system (26) for controlling movements of the master robot manipulator (14) and the slave robot manipulator (16); wherein the control system (26) is configured to support manual programming of the slave robot manipulator (16) by means of lead through of the master robot manipulator (14) by an operator while obtaining movements of the master robot manipulator (14), transferring the movements of the master robot manipulator (14) to corresponding movements of the slave robot manipulator (16) and recording positions and torques of each axis (18) of the slave robot manipulator (16). A method and a control system (26) are also provided.

Inventors:
LUNDBERG, Ivan (Blåklockevägen 91, Västerås, 722 46, SE)
BLOM, Jonatan (Prästgårdsgatan 19, Sundbyberg, 17232, SE)
Application Number:
EP2017/054327
Publication Date:
August 30, 2018
Filing Date:
February 24, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ABB SCHWEIZ AG (Brown Boveri Strasse 6, 5400 Baden, 5400, CH)
International Classes:
B25J9/16; B25J9/00; G05B19/423; G05B19/427
Foreign References:
US20140350726A12014-11-27
JPH0890461A1996-04-09
US20090132088A12009-05-21
Other References:
None
Attorney, Agent or Firm:
SAVELA, Reino (ABB AB, Intellectual PropertyForskargränd 7, Västerås, 721 78, SE)
Download PDF:
Claims:
CLAIMS

Robot system (10) comprising:

- a master robot manipulator (14) movable about a plurality of axes (18);

- a slave robot manipulator (16) movable about a plurality of axes (18); and

- a control system (26) for controlling movements of the master robot manipulator (14) and the slave robot manipulator (16);

wherein the control system (26) is configured to support manual programming of the slave robot manipulator (16) by means of lead through of the master robot manipulator (14) by an operator while obtaining movements of the master robot manipulator (14), transferring the movements of the master robot manipulator (14) to corresponding movements of the slave robot manipulator (16) and recording positions and torques of each axis (18) of the slave robot manipulator (16). 2. The robot system (10) according to claim 1, wherein the control system (26) is further configured to:

- obtain an external torque on each axis (18) of the slave robot manipulator (16);

- calculate an external force and/or an external torque acting on a tool flange of the slave robot manipulator (16); and

- transfer the external force and/or the external torque acting on the tool flange of the slave robot manipulator (16) to a corresponding force and/or torque acting on a tool flange of the master robot manipulator

(14). 3· The robot system (10) according to claim 1 or 2, wherein the control system (26) is further configured to:

- obtain an external torque on each axis (18) of the slave robot manipulator (16); and

- transfer the external torque on each axis (18) of the slave robot manipulator (16) to a corresponding axis (18) of the master robot manipulator (14) as an addition to a gravity compensation torque on each axis (18) of the master robot manipulator (14).

The robot system (10) according to any of the preceding claims, wherein the control system (26) is configured to trigger an external torque notification to the operator when the slave robot manipulator (16) experiences an external torque.

The robot system (10) according to claim 4, wherein the external torque notification is a vibration of the master robot manipulator (14).

The robot system (10) according to any of the preceding claims, wherein the master robot manipulator (14) is configured identic or substantially identic to the slave robot manipulator (16).

The robot system (10) according to any of the preceding claims, wherein the control system (26) is configured to transfer the movements of the master robot manipulator (14) to movements of the slave robot manipulator (16) via a scaling factor.

The robot system (10) according to any of the preceding claims, wherein the control system (26) is configured to constrain the slave robot manipulator (16) to move along or around at least one virtual axis.

The robot system (10) according to any of the preceding claims, wherein the robot system (10) comprises a robot (12), such as a dual arm robot (12), comprising the master robot manipulator (14) and the slave robot manipulator (16).

The robot system (10) according to any of claims 1 to 8, wherein the robot system (10) comprises a first robot (12a) comprising the master robot manipulator (14) and a second robot (12b) comprising the slave robot manipulator (16).

11. The robot system (10) according to claim 10, wherein the second robot (12b) is an industrial robot. Method for programming a slave robot manipulator (16) of a robot system (10) by means of lead through of a master robot manipulator (14) by an operator, the robot system (10) comprising the master robot manipulator (14) movable about a plurality of axes (18), the slave robot manipulator (16) movable about a plurality of axes (18), and a control system (26) for controlling movements of the master robot manipulator (14) and the slave robot manipulator (16), the method comprising repeating the steps of:

- obtaining movements of the master robot manipulator (14);

- transferring the movements of the master robot manipulator (14) to corresponding movements of the slave robot manipulator (16); and

- recording positions and torques of each axis (18) of the slave robot manipulator (16).

The method according to claim 12, further comprising repeating the steps of:

- obtaining an external torque on each axis (18) of the slave robot manipulator (16);

- calculating an external force and/or an external torque acting on a tool flange of the slave robot manipulator (16); and

- transferring the external force and/or the external torque acting on the tool flange of the slave robot manipulator (16) to a corresponding force and/or torque acting on a tool flange of the master robot manipulator (14).

The method according to claim 12 or 13, further comprising repeating the steps of:

- obtaining an external torque on each axis (18) of the slave robot manipulator (16); and

- transferring the external torque on each axis (18) of the slave robot manipulator (16) to a corresponding axis (18) of the master robot manipulator (14) as an addition to a gravity compensation torque on each axis (18) of the master robot manipulator (14). A control system (26) for controlling a master robot manipulator (14) movable about a plurality of axes (18) and a slave robot manipulator (16) movable about a plurality of axes (18), the control system (26) comprising a data processing device (28) and a memory (30) having a computer program stored thereon, the computer program comprising program code which, when executed by the data processing device (28), causes the data processing device (28) to repeatedly perform the steps of:

- obtaining movements of the master robot manipulator (14);

- transferring the movements of the master robot manipulator (14) to corresponding movements of the slave robot manipulator (16); and

- recording positions and torques of each axis (18) of the slave robot manipulator (16).

Description:
ROBOT SYSTEM, METHOD FOR PROGRAMMING A ROBOT MANIPULATOR AND CONTROL SYSTEM

Technical Field The present disclosure generally relates to a robot system and a method for programming a robot manipulator. In particular, a robot system comprising a master robot manipulator, a slave robot manipulator and a control system for lead through programming, a method for programming a robot manipulator, and a control system, are provided. Background

A robot controller of an industrial robot is typically provided with servo controllers for controlling the positions of motors driving the robot manipulator. Each servo controller is configured to calculate control signals to a motor arranged to drive an axis of the robot manipulator in at least one direction in accordance with a pre-stored program. The servo controller is configured to continuously calculate the control signals based on a position error, which is determined as a difference between an actual value

representing a measured position of the axis and a reference or set-point value as given by the pre-stored program. During normal operation, the gain of the servo controller is set to a high value such that the robot is stiff, preferably in all directions and orientations.

WO 2010088959 Ai discloses a method for lead through programming of an industrial robot comprising a robot manipulator movable about a plurality of axes and a robot controller for controlling the movements of the robot manipulator. The robot controller is further configured to switch between a position control mode and a floating control mode in which the robot manipulator has a reduced stiffness. When operating in the position control mode, the operation of the robot manipulator is controlled in accordance with the pre-stored program. When switched to the floating control mode, the robot manipulator has reduced stiffness and the programming of the robot by means of lead through of the robot is enabled or facilitated. The lead through programming involves manually leading the robot manipulator to a sequence of desired positions and recording the axis positions of the robot manipulator at each desired manipulator position and finally creating a robot program based on the sequence of recorded axis positions of the robot manipulator.

Conventional lead through technology and its implementation have limitations and some scenarios require other means to be able to actuate the robot as intended, e.g. a joystick on a teach pendant unit (TPU) or a tablet having teach pendant software. With conventional lead through

programming, it is difficult to teach a guided robot manipulator to exert forces or torques on an object in an accurate manner.

For example, if an assembly requires a spring to be compressed, the operator moves the robot manipulator to a position where the spring is properly compressed. However, as long as the operator holds the robot manipulator in this position, the robot controller cannot register the currently applied force. As soon as the operator releases the robot manipulator, the spring will move the manipulator to a position where the spring is relaxed, or less compressed. One possible solution to this problem may be to provide a force sensor close to the end effector of the robot manipulator. An operator manoeuvring the robot manipulator during the lead through programming may then grip a handle on the manipulator such that the force sensor is between the handle and the end effector. However, this manoeuvring of the robot manipulator will cause deflections of the manipulator during the lead through programming. Once the program is executed by the robot manipulator, the deflections of the manipulator will differ from the deflections during the lead through teaching. Therefore, this solution will not provide an accurate position/force pairing of the robot manipulator. Besides, adding a force sensor and a handle to the robot manipulator just for this purpose adds costs and complexity to the robot.

A further problem with conventional lead through programming is that the operator cannot feel what the robot manipulator "feels". The operator may have to observe deflections of the robot manipulator with his or her eyes, listen to the servos and/or studying sample values of motor torques and speeds in order to determine why the robot manipulator may have a problem with a certain assembly operation.

Moreover, when programming a tricky "peg in hole" type assembly or similar, it is often very difficult to find the optimal positions for a robot manipulator. Force control can be used to overcome this, but programming force control is typically very complex since the operator needs to make a lot of abstractions.

On the other hand, humans are extremely good at performing this kind of task thanks to force feedback and sensor motoric skills of a human arm. If a human could easily transfer his or her sensor motoric skills to a robot manipulator, this would simplify many programming tasks, such as finding the optimal path, position, force and/or torque for an assembly operation.

Summary

One object of the present disclosure is to provide a robot system that can accurately teach a robot manipulator movements, positions, forces and/or torques. In particular, one object of the present disclosure is to provide a robot system that can teach a robot manipulator to exert forces and/or torques on an object in an accurate manner.

Further objects of the present disclosure are to provide a corresponding method and a corresponding control system, i.e. for accurately teaching a robot manipulator movements, positions, forces and/or torques.

According to one aspect, there is provided a robot system comprising a master robot manipulator movable about a plurality of axes; a slave robot manipulator movable about a plurality of axes; and a control system for controlling movements of the master robot manipulator and the slave robot manipulator; wherein the control system is configured to support manual programming of the slave robot manipulator by means of lead through of the master robot manipulator by an operator while obtaining movements of the master robot manipulator, transferring the movements of the master robot manipulator to corresponding movements of the slave robot manipulator, and recording positions and torques of each axis of the slave robot

manipulator. This type of programming constitutes a movement teaching mode. The master robot manipulator and the slave robot manipulator according to the present disclosure may be movable about the same amount of axes or different amounts of axes. For example, each of the master robot manipulator and the slave robot manipulator may have six degrees of freedom or seven degrees of freedom. As a further example, the master robot manipulator may have six degrees of freedom and the slave robot manipulator may have seven degrees of freedom, or vice versa.

The control system may additionally be configured to obtain positions of the master robot manipulator and transfer the positions of the master robot manipulator to corresponding positions of the slave robot manipulator. This type of programming constitutes a position teaching mode. However, a sufficiently accurate programming of the slave robot manipulator can also be obtained with the robot system of the present disclosure if the master robot manipulator is in a similar, but not exact, position as the slave robot manipulator (i.e. with only a movement teaching mode). The control system may further be configured to obtain an external torque on each axis of the slave robot manipulator; estimate or calculate an external force and/or an external torque acting on a tool flange of the slave robot manipulator; and transfer the external force and/or the external torque acting on the tool flange of the slave robot manipulator to a corresponding force and/or torque acting on a tool flange of the master robot manipulator. This type of programming constitutes a force teaching mode. By obtaining the external torques on each axis of the slave robot manipulator, it is possible to calculate the forces and/or torques acting on the tool flange of the slave robot manipulator. The forces and/or torques acting on the slave robot manipulator may be represented in a Cartesian coordinate system. The required torques on each axis of the master robot manipulator may then be calculated "backwards" such that a corresponding force and/or torque acting on the tool flange of the master robot manipulator can be generated. The torques may be output as an addition to a gravity compensation torque on each axis of the master robot manipulator. In this manner, external forces and/or torques that correspond to the external forces and/or torques of the tool flange of the slave robot manipulator can be output to the tool flange of the master robot manipulator during lead through programming even when the slave robot manipulator and the master robot manipulator have different degrees of freedom and/or when the slave robot manipulator and the master robot manipulator have different configurations.

The control system may further be configured to obtain an external torque on each axis of the slave robot manipulator and transfer the external torque on each axis of the slave robot manipulator to a corresponding axis of the master robot manipulator as an addition to a gravity compensation torque on each axis of the master robot manipulator. This type of programming constitutes an alternative force teaching mode. For this variant, the master robot manipulator and the slave robot manipulator may be movable about the same amount of axes. Alternatively, any "additional" axis of the master robot manipulator or the slave robot manipulator may be locked. As long as the slave robot manipulator can follow the movements of the master robot manipulator, the force teaching modes behave as the movement teaching mode. However, when the slave robot manipulator encounters an external torque, haptic force feedback (the calculated external force/torque on the tool flange or the external torque on each joint of the slave robot manipulator) is provided to the master robot manipulator that almost exactly corresponds to the force experienced by the slave robot manipulator. The operator manoeuvring the master robot manipulator can thereby feel what the slave robot manipulator "feels". The operator can for example feel why a contact assembly operation is jamming which adds great value for finding optimal positions for the slave robot manipulator and/or assembly strategies.

The control system may be configured to trigger an external torque

notification to the operator when the slave robot manipulator experiences an external torque. This type of programming constitutes an alternative force teaching mode. The external torque notification may be a vibration of the master robot manipulator.

The master robot manipulator may be configured identic or substantially identic to the slave robot manipulator. In addition to the number of axes, the configuration of the master and slave robot manipulators according to the present disclosure may refer to the dimensions and/or weights of the links of the robot manipulators, limitations of the joints, the power of mechanical actuation devices for driving the joints etc. It may be difficult to carry out small precise movements of the master robot manipulator. The human hand has its limitations when it comes to fine precision and the friction and cogging of the joints also makes this difficult. The control system may therefore be configured to transfer the movements of the master robot manipulator to movements of the slave robot manipulator via a scaling factor. For example, a movement of the master robot

manipulator may be transferred to a 10% movement of the slave robot manipulator.

All degrees of freedom of the master robot manipulator and the slave robot manipulator may be left open during programming of the slave robot manipulator. Alternatively, the control system may be configured to constrain the slave robot manipulator to move along or around at least one virtual axis. Alternatively, or in addition, the control system may be configured to constrain the master robot manipulator to move along or around at least one virtual axis. The at least one virtual axis may be constituted by any axis in space, for example by any Cartesian axis. The robot system may comprise a robot, such as a dual arm robot, comprising the master robot manipulator and the slave robot manipulator. Alternatively, the robot system may comprise a first robot comprising the master robot manipulator and a second robot comprising the slave robot manipulator. For example, a robot system according to the present disclosure may comprise two dual arm robots.

Alternatively, the second robot may be an industrial robot and the slave robot manipulator may be constituted by the manipulator of the industrial robot. In this case, the master robot manipulator may be constituted by one of the two arms of a dual arm robot. Alternatively, the master robot manipulator may be constituted by a robot manipulator of a single arm robot.

According to a further aspect, there is provided a method for programming a slave robot manipulator of a robot system by means of lead through of a master robot manipulator by an operator, the robot system comprising the master robot manipulator movable about a plurality of axes, the slave robot manipulator movable about about a plurality of axes, and a control system for controlling movements of the master robot manipulator and the slave robot manipulator. The method comprises repeating the steps of obtaining movements of the master robot manipulator; transferring the movements of the master robot manipulator to corresponding movements of the slave robot manipulator; and recording positions and torques of each axis of the slave robot manipulator.

The method may further comprise repeating the steps of obtaining an external torque on each axis of the slave robot manipulator; calculating an external force and/or an external torque acting on a tool flange of the slave robot manipulator; and transferring the external force and/or the external torque acting on the tool flange of the slave robot manipulator to a

corresponding force and/or torque acting on a tool flange of the master robot manipulator. The method may further comprise repeating the steps of obtaining an external torque on each axis of the slave robot manipulator; and transferring the external torque on each axis of the slave robot manipulator to a corresponding axis of the master robot manipulator as an addition to a gravity compensation torque on each axis of the master robot manipulator.

The method may be implemented in a robot system comprising a robot, such as a dual arm robot, comprising the master robot manipulator and the slave robot manipulator. As an alternative, the method may be implemented in a robot system comprising a first robot comprising the master robot

manipulator and a second robot comprising the slave robot manipulator. In this case, each of the first robot and the second robot may be constituted by a dual arm robot. Alternatively, the first robot may be constituted by a dual arm robot and the second robot may be constituted by a different type of robot, such as an industrial robot. According to a further aspect, there is provided a control system for controlling a master robot manipulator movable about a plurality of axes and a slave robot manipulator movable about about a plurality of axes. The control system comprises a data processing device and a memory having a computer program stored thereon, the computer program comprising program code which, when executed by the data processing device, causes the data processing device to repeatedly perform the steps of obtaining movements of the master robot manipulator; transferring the movements of the master robot manipulator to corresponding movements of the slave robot manipulator; and recording positions and torques of each axis of the slave robot manipulator. A control system according to the present disclosure may be constituted by one or more robot controllers.

The data processing device may further be caused to repeatedly perform the steps of obtaining an external torque on each axis of the slave robot manipulator; calculating an external force and/or an external torque acting on a tool flange of the slave robot manipulator; and transferring the external force and/or the external torque acting on the tool flange of the slave robot manipulator to a corresponding force and/or torque acting on a tool flange of the master robot manipulator.

The data processing device may further be caused to repeatedly perform the steps of obtaining an external torque on each axis of the slave robot manipulator; and transferring the external torque and the gravity

compensation torque on each axis of the slave robot manipulator to a corresponding axis of the master robot manipulator as an addition to a gravity compensation torque on each axis of the master robot manipulator.

Brief Description of the Drawings Further details, advantages and aspects of the present disclosure will become apparent from the following embodiments taken in conjunction with the drawings, wherein:

Fig. l: schematically represents a front view of a robot system comprising a dual arm robot;

Fig. 2: schematically represents a front view of the robot system during lead through programming;

Fig. 3: schematically represents a front view of an alternative robot

system comprising two dual arm robots;

Fig. 4: schematically represents a front view of a further alternative robot system comprising a dual arm robot and an industrial robot; and Fig. 5: schematically represents a control system.

Detailed Description

In the following, a robot system comprising a master robot manipulator, a slave robot manipulator and a control system for lead through programming, a method for programming a robot manipulator, and a control system, will be described. The same reference numerals will be used to denote the same or similar structural features.

Fig. 1 schematically represents a front view of a robot system 10 comprising a dual arm robot 12. The robot 12 comprises two robot manipulators 14, 16 with identic configuration. In other words, the two robot manipulators 14, 16 are copies of each other. Each robot manipulator 14, 16 comprises a plurality of joints 18 and is thereby movable about a plurality of axes 18. In the example of Fig. 1, each robot manipulator 14, 16 comprises seven joints 18 and has seven degrees of freedom. The two robot manipulators 14, 16 have the same dimensions and weights of the links, limitations of the joints 18 and power of mechanical actuation devices for driving the joints 18.

An end effector 20, here implemented as a gripping claw, is provided at the end of each robot manipulator 14, 16. Each end effector 20 is mounted to a tool flange (not denoted) or end effector mount. A table 22 is arranged below the robot manipulators 14, 16.

The robot 12 in Fig. 1 is a collaborative robot, such as the YuMi ® by ABB. One feature of collaborative robots is safety, as these robots do not need to be fenced. This enables integration in existing applications where humans normally operate. Another feature associated with these robots is ease of integration. Collaborative robots should not require the integration time or complexity of traditional industrial robots. The robot system 10 according to the present disclosure is however not limited to dual arm robots or to collaborative robots. The robot system 10 in Fig. 1 further comprises a control system (not shown) for controlling the movements of the robot manipulators 14, 16. The control system is configured to switch between a position control mode and a floating control mode, e.g. by an input from the operator. In the position control mode, the robot manipulators 14, 16 are stiff in all Cartesian directions X, Y, Z and orientations, and in all of its axes 18. In the position control mode, it is almost impossible to move the robot manipulators 14, 16 by human power.

In the floating control mode, the robot manipulators 14, 16 have a reduced stiffness in or around at least one of the axes 18 or in or around at least one Cartesian direction X, Y, Z or orientation. The control system is configured to send gravity compensation signals to a mechanical actuation device (not shown) associated with each axis 18. Based on the gravity compensation signals, the mechanical actuation devices output a gravity compensation torque on each axis 18 of the robot manipulators 14, 16 to keep them floating. The control system is switched to the floating control mode before lead through programming begins.

Fig. 2 schematically represents a front view of the robot system 10 in Fig. 1 during lead through programming. In the example of Fig. 2, the left robot manipulator 14 serves as a master robot manipulator 14 and the right robot manipulator 16 serves as a slave robot manipulator 16. However, the right robot manipulator 16 may alternatively or additionally (i.e. before or after programming of the right robot manipulator 16) serve as a master robot manipulator.

Once the control system has been switched to the floating control mode, an operator may grab the master robot manipulator 14 and move the master robot manipulator 14 as desired. The control system is configured to obtain the movements of the master robot manipulator 14 and transfer the movements to corresponding movements of the slave robot manipulator 16. In other words, when the operator moves the master robot manipulator 14, the slave robot manipulator 16 makes the corresponding movements. For example, if the operator raises and releases the master robot manipulator 14, the master robot manipulator 14 stays in the raised position. Since the control system obtains the movements of the master robot manipulator 14 and transfers the movements of the master robot manipulator 14 to the slave robot manipulator 16, also the slave robot manipulator 16 is thereby raised and stays in the raised position.

At the same time, the control system is configured to record a movement or a sequence of movements of the slave robot manipulator 16, e.g. from a starting position. More specifically, the control system is configured to record positions and torques of each axis 18 of the slave robot manipulator 16 during one or several sequences. Finally, the control system creates a robot program for the slave robot manipulator 16 based on the movement or the sequence of movements of the slave robot manipulator 16. Once the control system is switched to the position control mode, the slave robot manipulator 16 can carry out the movement or the sequence of movements as recorded in the robot program.

The two robot manipulators 14, 16 do not have to be positioned exactly the same in order for the control system to obtain the movements of the master robot manipulator 14 and transfer the movements of the master robot manipulator 14 to corresponding movements of the slave robot manipulator 16. The master robot manipulator 14 may for example have its end effector 20 positioned higher above the table 22 than the end effector 20 of the slave robot manipulator 16. In other words, the two robot manipulators 14, 16 may be arranged in substantially corresponding positions when carrying out the lead through programming. In Fig. 2, the end effector 20 of the slave robot manipulator 16 contacts an object 24 placed on the table 22. There is no object below the end effector 20 of the master robot manipulator 14. In other words, the master robot manipulator 14 is free to move further downwards and the slave robot manipulator 16 is not due to the contact with the object 24. As the operator tries to move the master robot manipulator 14 further downwards towards the table 22 (as indicated with the arrow in Fig. 2), the slave robot manipulator 16 is pressed against the object 24. Since the slave robot manipulator 16 is blocked by the object 24, an external torque will arise in at least one of the axes 18 of the slave robot manipulator 16. This external torque arises when the slave robot manipulator 16 tries to match the movement of the master robot manipulator 14. Since the control system is configured to obtain the external torque on each axis 18 of the slave robot manipulator 16 and transfer the external torque on each axis 18 of the slave robot manipulator 16 to a corresponding axis 18 of the master robot manipulator 14 as an addition to the gravity compensation torque on each axis 18 of the master robot manipulator 14, the operator holding the master robot manipulator 14 will feel the force exerted on the object 24 by the slave robot manipulator 16.

By recording the positions and torques of the axes 18 of the slave robot manipulator 16, an accurate position/force pairing for the slave robot manipulator 16 is accomplished. This constitutes one type of force teaching mode. If the master robot manipulator 14 and the slave robot manipulator 16 adopt similar positions, it is a good approximation to simply copy the external torque joint by joint to the master robot manipulator 14 and add to the gravity compensation torque in lead through. In case a dual arm robot comprises the master robot manipulator 14 and the slave robot manipulator 16, the dual arm robot can "double up" as haptic devices with force feedback. Even if an expensive dedicated haptic device would be provided to give force feedback as experienced by the slave robot manipulator 16, the haptic device would not directly correlate to the limitations/capabilities of the slave robot manipulator 16 unless the haptic device has the same configuration as the slave robot manipulator 16.

However, for a dual arm robot already comprising two robot manipulators with the same configuration, one robot manipulator (i.e. the master robot manipulator 14) can be used as a near perfect replication of the force, position and deflection as experienced by the other arm (i.e. the slave robot manipulator 16). For example, in the YuMi ® by ABB, the left and right arm are exactly the same.

The manual lead through of the master robot manipulator 14 serves as an input that allows the control system to easily learn the desired positions, movements, forces and/or paths of the slave robot manipulator 16 for the assembly operation. This input may also be used as a main input to a force control algorithm that aims to achieve the optimal positions, forces and/or paths, even if variances exist in later assemblies (for example due to part tolerances, position tolerances etc.). The control system may be configured to constrain the slave robot

manipulator 16 to move along or around at least one virtual axis. In the example of Fig. 2, the control system may enter an axis constrain mode where the slave robot manipulator 16 is allowed to be moved only upwards or downwards (i.e. along Cartesian axis Z). This type of restriction constitutes an active lead through of the master robot manipulator 14.

In this type of force teaching mode, the control system may also be

configured to transfer the movements of the master robot manipulator 14 to movements of the slave robot manipulator 16 via a scaling factor. For example, when the operator moves the master robot manipulator 14 a distance along the Cartesian axis Z,the slave robot manipulator 16 moves a shorter (or longer) distance along the Cartesian axis Z.

In the same way, the scaling factor can be used to transfer the movements of the master robot manipulator 14 to forces and/or torques of the slave robot manipulator 16. For example, if the slave robot manipulator 16 is to be programmed to exert an accurate force on the object 24, such as a small force, the external torque on each axis 18 of the slave robot manipulator 16 may be amplified by the scaling factor (e.g. by a factor of 5 or 10) to a corresponding axis 18 of the master robot manipulator 14. As an alternative force teaching mode, the control system may be configured to trigger an external torque notification (other than transferring the external torque on each axis 18 of the slave robot manipulator 16 to a corresponding axis 18 of the master robot manipulator 14). According to one example, the external torque notification is a vibration of the master robot manipulator 14. However, alternative external torque notifications are possible, including a flashing light or a sound alarm.

For example, the control system may be configured to program the slave robot manipulator 16 to apply a force along a virtual axis when the slave robot manipulator 16 during the lead through programming is blocked from moving along the virtual axis and the master robot manipulator 14 is moved further along a corresponding virtual axis. The control system may be configured to activate a vibration of the master robot manipulator 14 when the master robot manipulator 14 is moved further along the corresponding virtual axis. In the example of Fig. 2, if the operator moves the master robot manipulator 14 downwards while the slave robot manipulator 16 is blocked from moving further downwards by the object 24, the control system programs the slave robot manipulator 16 to apply a force on the object 24. The force applied on the object 24 corresponds to the distance moved by the master robot manipulator 14 "beyond" a corresponding virtual object. The vibration of the master robot manipulator 14 may be constituted by pulses having a frequency corresponding to the applied force along the virtual axis. Once a maximum force is applied by the slave robot manipulator 16 along the virtual axis (e.g. downwards on the object 24 in Fig. 2), the control system may activate a constant vibration of the master robot manipulator 14. In this way, the operator holding the master robot manipulator 14 knows that the slave robot manipulator 16 has been programmed to apply the maximum force on the object 24.

Furthermore, the control system may be configured to program the slave robot manipulator 16 to apply a torque around a virtual axis when the slave robot manipulator 16 during the lead through programming is blocked from rotating around the virtual axis and the master robot manipulator 14 is rotated further along a corresponding virtual axis.

For example, if the end effector 20 of the slave robot manipulator 16 is rotationally engaged with the object 24 and experiences an external torque around a virtual axis (e.g. the Z-axis) when the end effector 20 of the master robot manipulator 14 is rotated around a corresponding virtual axis, the control system may be configured to activate a vibration of the master robot manipulator 14 when the master robot manipulator 14 is rotated further around the corresponding virtual axis. The vibration of the master robot manipulator 14 may be constituted by pulses having a frequency corresponding to the applied torque around the virtual axis. The control system may be configured to activate a constant vibration of the master robot manipulator 14 when a maximum torque is applied by the slave robot manipulator 16 around the virtual axis. Also in this type of force teaching mode (with external torque notification), the control system may be configured to transfer the movements of the master robot manipulator 14 to movements of the slave robot manipulator 16 via a scaling factor. For example, if the slave robot manipulator 16 is to be programmed to exert an accurate force on the object 24, such as a small force, a large downward movement of the master robot manipulator 14 may correspond to a small downward movement of the slave robot manipulator 16 (e.g. 5 to 10 times smaller). As a consequence, when the slave robot

manipulator 16 contacts the object 24, the master robot manipulator 14 can be moved down a relatively large distance to make the slave robot

manipulator 16 exert a relatively small force on the object 24. The control system may also be configured to constrain the slave robot manipulator 16 to move along or around at least one virtual axis in this type of force teaching mode.

The types of force teaching modes according to the present disclosure may be combined. For example, the external torque on each axis 18 of the slave robot manipulator 16 may be output to a corresponding axis 18 of the master robot manipulator 14 together with a vibration of the master robot manipulator 14.

Fig. 3 schematically represents a front view of an alternative robot system 10 comprising two dual arm robots 12a, 12b of identic configuration. The robot 12a may constitute a master robot 12a and the robot 12b may constitute a slave robot 12b and vice versa. The relationship between the master robot manipulator 14 of the master robot 12a and the slave robot manipulator 16 of the slave robot 12b is the same relationship as between the master robot manipulator 14 and the slave robot manipulator 16 in Figs. 1 and 2. Since the robot system 10 in Fig. 3 comprises two dual arm robots 12a, 12b, both the left arm and the right arm of the master robot 12a may constitute master robot manipulators 14 and both the left arm and the right arm of the slave robot 12b may constitute slave robot manipulators 16 according to the present disclosure. In this way, one master robot 12a can act as a haptic force feedback control device for the slave robot 12b. This implementation may for example be useful for an accurate programming of a slave robot 12b in a dangerous environment or for demonstration purposes, where visitors can be allowed to use a master robot 12a to perform tricky assembly operations on a slave robot 12b.

Fig. 4 schematically represents a front view of an alternative robot system 10 comprising a dual arm robot 12a and an industrial robot 12b. In this implementation, the industrial robot 12b has the same amount of axes 18 as each robot manipulator 14 of the dual arm robot 12a, namely seven. One of the robot manipulators 14 of the dual arm robot 12a may constitute a master robot manipulator and the manipulator 16 of the industrial robot 12b may constitute a slave robot manipulator.

Since the manipulator 16 of the industrial robot 12b has the same amount of axes 18 as each robot manipulator 14 of the dual arm robot 12a, but a different configuration, the control system may be configured to obtain an external force and/or an external torque on each axis 18 of the slave robot manipulator 16, calculate an external force and/or an external torque acting on a tool flange of the slave robot manipulator 16, and transfer the external force and/or the external torque acting on the tool flange of the slave robot manipulator 16 to a corresponding force and/or torque acting on a tool flange of the master robot manipulator 14. The control system may perform a Cartesian estimation (mirroring) of the forces and torques of the slave robot manipulator 16 and then calculate corresponding forces and torques on the master robot manipulator 14. Fig. 5 schematically represents one example of a control system 26 according to the present disclosure for controlling a master robot manipulator 14 and a slave robot manipulator 16. The control system 26 comprises a data processing device 28, a memory 30 having a computer program stored thereon, an operator interface 32 that constitutes a part of an operator control device, e.g. a teach pendant unit, a master robot manipulator interface 34 and a slave robot manipulator interface 36.

The computer program comprises program code which, when executed by the data processing device 28, causes the data processing device 28 to repeatedly perform the following steps: obtaining movements of the master robot manipulator 14, transferring the movements of the master robot manipulator 14 to corresponding movements of the slave robot manipulator 16 and recording positions and torques of each axis 18 of the slave robot manipulator 16.

The control system 26 receives signals representing the movements of the master robot manipulator 14 via the master robot manipulator interface 34. The control system 26 outputs signals representing movements

corresponding to movements of the master robot manipulator 14 to the slave robot manipulator 16 via the slave robot manipulator interface 36. The control system 26 receives signals representing positions and torques of each axis 18 of the slave robot manipulator 16 via the slave robot manipulator interface 36. Based on the received positions and torques of each axis 18 of the slave robot manipulator 16, the data processing device 28 creates a robot program for the slave robot manipulator 16 and stores the robot program in the memory 30.

The computer program may further comprise program code which, when executed by the data processing device 28, causes the data processing device 28 to repeatedly perform any of the methods according to the present disclosure. The control system 26 according to Fig. 5 is merely one possible implementation. The control system 26 may alternatively comprise one dedicated robot controller for each robot 12, 12a, 12b or for each robot manipulator 14, 16. While the present disclosure has been described with reference to exemplary embodiments, it will be appreciated that the present invention is not limited to what has been described above. For example, it will be appreciated that the dimensions of the parts may be varied as needed. Accordingly, it is intended that the present invention may be limited only by the scope of the claims appended hereto.