Collaborative control with Industrial Robots Jan Rehbein, Dennis Hotze, Tim Wrütz, Rolf Biesenbach Faculty of Electrical Engineering and Computer Science Hochschule Bochum – University of Applied Sciences Bochum, Germany
[email protected] Abstract— The main goal of this project is the remote control of KUKA industrial robots based on KRC 4 controllers. A possible application scenario is an operator who wants to transport loads between non-fixed points. In practice, this scenario could be used, for loading trucks. The usage should be as intuitive as possible and not as uncomfortable as the teaching pendants keys. The following paper describes the solution of the problem, using the software package mxAutomation and the human robot collaboration (HRC)-capable LBR iiwa. The iiwa is handled by the operator in the new handguiding mode while transmitting the corresponding data to a PLC which moves the robot carrying the loads. The application has proved to be a useful tool since the mirrored movements are sufficiently fluid to provide an intuitive use. In the overhead area of the load carrying robot, however, there was a potential for improvements due to the occurrence of singularities.
“series from Universal Robots are example robots for humanmachine interaction. Those robots can be used without safety fences, assuming the responsible engineer developed a proper security concept. Collaborative robots allows to add the knowledge, flexibility and experience of a human to the process and help workers with exhausting physical work. The ability to “feel” and interact with the environment also enables the robots to automate previously non-automatable processes. For example, the final assembly of washing machines drain pipes. [4] Those pipes are hard to handle for the common robot generation because of their flexibility, with the torque sensors the handling becomes easier because the robot can force control the process. The idea of this project is to assist workers lifting heavy loads. This is done by remote controlling a second robot with the LBR iiwa. The iiwa itself will interact safely with the operator, because of its limited payload the lifting process will be executed by another robot.
Keywords—HRC, lbr iiwa, mxAutomation, industrial robots
I. INTRODUCTION In 2011 69.9% of the employees in germanGerman manufacturing were older than 35. The majority (47.1%) was older than 45. As shown in figure 1. in the future, the average employee age will increase and some political parties in Germany[1] and Denmark[2] demand to delay the retirement age to 70 or even further.
Fig. 2. Schematic overview of the project
II. LITERATURE REVIEW
Fig. 1. Age of Employees in german manufacturing [3]
Innovative approaches in the design of modern industrial robots allow robots to assist workers during production, while also preserving their health. Robots work hand in hand together with factory laborers. The “LBR iiwa” from KUKA or the “UR
This project is based on the mxAutomation module library and the HRC robot Ibr iiwa. With mxAutomation, as described in [5], it is possible to outsource the control of the robot to a PLC. By this it establishes an interface that make external control from the outside relatively accessible [5] due to the more extensive language range (SCL, KOP, FUP, AWL and GRAPH). The idea to assist workers in production was also present at KUKAs innovations award in 2017. Two out of five teams have occupied themselves with the task of collaborative lifting. Team MACHAMP supports skilled workers in the assembly of task that normally require more than two hands, such as the installation of windshields [6]. The team Manchu combined several iiwa´s to increase they payload. [7]. In comparison to the Manchu project, this project uses only one iiwa and a “common” industrial robot to increase the possible payload. Advantages of the standard robots are, they are
cheaper and they can lift up to 1000 kg. With just two iiwas the maximum payload would be 28 kg. Also one idea of the project was to make the lifting process as intuitive as possible. III. MATERIALS AND METHODS The used materials and methods are explained in the following Headings (A, B and C) this part is to declare what is used to implement the application A. Agilus KR6 R900 sixx The robot used in this project is a KUKA Agilus KR6 R900 sixx and is classified as a small robot. It has 6 axes and accordingly 6 degrees of freedom. The robot has a maximum range of 901mm and a payload capacity of 6 kg. It is controlled by the robot “controller KUKA Robot Controller 4 compact (KRC4) and can be programmed by the operator with the programming language KUKA Robot Language (KRL). In this project the KRC receives movement commands by a PLC. The direct interaction with the user is not possible for safety reasons, so that a safety distance must be maintained in the automatic mode. Possible implementations could be a fence or a light barrier. An electrical gripper is attached to the flange As end effector. B. LBR iiwa 7 R800 The LBR iiwa 7 R800 is one of the first robots certified by the German Statutory Accident Insurance (DGUV) for HRC) [8]. It’s light weight construction, safety concept and advanced sensors enable to work hand in hand right next to the robot without additional safety equipment The manipulator has strain gauges in every joint, which are used to measure the torque at each joint. With the torque the robot controller can detect collisions or measure forces which affect the robot. To minimize physical damage, e.g. contused wounds, the mechanical design was focused on rounded shapes. The “Sunrise Cabinet” controller allows to specify triggered events and define robot reactions. An example is to set a speed limit, which results in a robot stop. Additionally, the iiwa has seven joints compared to the Agilus. Having a redundant axis enables the robot to maintain six degrees of freedom even if one of the joints is restricted by an obstacle. For this project, the robot is equipped with an “media flange electric touch” extension, the media flange adds digital and analog I/Os, and an extra enable switch to the robot flange. It can be used to move the robot in the so-called hand guiding mode. In the hand guiding mode the controller will hold the robot in position, compensating gravity and if an operator exerts a force to the tool center point it’ll move in the same direction. Applications for the iiwa are programmed in JAVA. With JAVA the programmer can use the benefits of modern programming languages such as “try and catch”. C. mxAutomation With KUKA´s mxAutomation KUKA Robots can be operated with an external control system. For the correct application, the additional packages mxAutomation and Profinet KRC-Next must be installed and configured on the KRC4. The functional principle of mxAutomation is that
motion commands are transferred from the PLC to the robot controller. These are received and interpreted by the mxAutomation interpreter. The interpreter calls further subroutines, which are transmitted to the program memory of the robot controller. The subsequent path planning and execution of the movements is taken over by the KRC. A Siemens Simatic S7-1512 SP-F PLC, is used as external controller, it offers 3 Ports for the Ethernet communication. The process is visualized on a Siemens Simatic HMI-Panel for graphical display and operation. Both, the data exchange with the HMI-Panel as well as with the KRC, is based on the Ethernet protocol Profinet IO. The data is exchanged with the iiwa via TCP/IP. The programming and configuration of the connections is implemented in the Siemens Totally Integrated Automation Portal V13 (TIA-Portal). The mxAutomation block library is imported into TIAPortal, by which the robot can be monitored and controlled. The blocks are written in Structured Control Language (SCL) and are write-protected, but can be configured by their inputs and outputs. By means of the block library, it is possible, among other things, to execute linear, circular and point-topoint (PTP) movements as well as administrative functions such as reading and writing the tool and base data, and querying the current robot status. At the start of each PLC cycle the robot data is read with the mxAutomation functional module, and finally the newly calculated data will be returned.
Fig. 3. Functioning of mxA
IV. FUNCTIONING A. PLC Programming After the implementation and configuration of mxAutomation in TIA-Portal and on the KRC, the connections from the PLC to the KRC can be started by using the HMIPanel. The mxAutomation block "KRC_AutomaticExternal" must be enabled to switch the inputs depending on the outputs in a predefined signal sequence. At first the operating mode "EXT" needs to be activated on the module, provided the robot is in the same operating mode. Then the robot is released and the drives are switched off. When the robot resets the emergency stop signal, the drives are switched on. Finally, pending error messages from the KRC are acknowledged and the robot program is started. Function modules from the mxAutomation block library can now be used.
In TIA-Portal data transmission is implemented by the block "TRCV_C" which establishes a TCP connection with the iiwa and stores the incoming data into a configured data block. Four bytes are received for each sent number (32-Bit JAVA integer). These are converted to a 32-bit double word starting with the high byte (big endianness) by shifting. Negative numbers are represented as two´s complement. The subsequent conversion from the double word into a floating-point number is performed with the DWORD_TO_REAL operation integrated in TIA-Portal. Finally, the value is divided by the factor necessary to transfer the floating-point number. To imitate iiwa´s movements, the Agilus executes linear movements. For this purpose, mxA provides the function block "KRC_MoveLineaAbsolute". The block is parameterized with the following inputs the buffermode, blending, target position and the velocity. The buffermode defines whether commands are executed immediately or temporarily stored and processed by the KRC according to the First In First Out (FIFO) principle. In this project, up to 40 commands are buffered on the robot controller. In 25 millisecond intervals, the current Agilus position is compared with that of the iiwa. In the case of a deviation, a motion command with the current position of the iiwa is sent. Due to safety aspects, a travel range is defined for the Agilus that limits the X, Y and Z coordinates. If these limits are reached, the maximum/minimum value for the respective coordinate is set. The other axes remain unaffected, so that the robot can move along the other axes. To ensure smooth movement, the positions are blended.
Fig. 5. Flow diagramm of the iiwa application
Fig. 4. HMI visualization
As shown in Figure 4, the process is visualized and operated on the HMI-Panel. The connection establishment and the receive enable for the data communication with the iiwa can be activated via two buttons. The received data are visualized via I/O fields and bar charts. A further button can be used to start synchronisation of the Agilus. It is also possible to adjust the travel range on the HMI-Panel. The status of data transmission and synchronisation, as well as the number of buffered instructions are also displayed. B. Iiwa Programming In order to use the handguiding, it needs to be activated in the safety configuration. As soon as the enabling switch on the flange is actuated, the robot can be moved manually, with the function call "handGuiding()", this is also possible out of an application.
As shown in figure 5 the program starts with the initialization of the robot, the controller and the media flange. Secondly the iiwa will move to a previously defined home position. Followed by the startup of the first parallel thread. This thread permanently monitors the user button on the media flange. If the robot detects a rising edge, the application toggles the status LEDs on the iiwa and the gripper connected to the Agilus. The next step in the main program is the second parallel thread: which permanently enables the handguiding. Followed by the application trying to set up the network connection from the controller to the PLC. If the connection is successful, the robot goes into a loop sending the current measured cartesian TCP coordinates, forces and axis positions to the PLC. For the bytewise transmission the measured 32bit integer values are converted to a byte array. The method used for this is IntToByteArray(int data) which converts integer numbers into an array of four bytes. To send out rational values, the measurements given in mm are first multiplied with a constant factor.
the visible working area. Furthermore, it is noticeable that occasionally the Agilus has not moved foreseeable in the overhead area. Currently the status and turn values aren’t transmitted. Turn is currently not used, because the iiwa hasn’t got axes that can rotate over 180 °. [9] The missing of status and turn for the Agilus leads to singularities resulting in undesirable behavior in the overhead area. The possibility of exception handling provided by JAVA is a useful addition to robot programming. With the possibility to catch specific program errors and in case of errors jump into predefined states, it is possible to protect man and machine effectively from hazards. VI. DISCLAIMER The used industrial robots are build using state-of the art technology and are in accordance with the recognized safety rules. Nevertheless, misuse of the industrial robot may constitute a risk of life and limb and/or cause damage to the industrial systems and to other material.
Fig. 6. Example code preparing to send data
This figure shows one of the methods programmed for data transmission: void SendToPLC(BufferedOutputStream buffWrite, Frame position) writes the frame data (X, Y, Z, A, B, C) to a BufferedOutputStream Object.
The Bochum University of Applied Sciences accepts no liability for the correctness of the content as well as for the completeness of the information provide. This refers to possible damages of material or idealistic nature of third parties caused by the use of the programs developed in this project. We constantly further develop our projects; no guarantee can be given regarding the functionality. REFERENCES [1]
It starts reading the measured values from the frame object via the getter and then casts them into integer values. Those values are then packed into an array and used to fill the output stream. In case of an exception, for example while writing the buffer, possible errors are caught showing a message at the teaching pendant.
V. CONCLUSION In conclusion remote controlling the Agilus worked very well. The ideal size for the mxA command buffer was determined empirically. A size of 40 delivered usable results, increasing the buffer delayed the robot movement noticeably. Decreasing the buffer led to unsmooth robot movements. During a presentation, it became clear that the limitation of the X, Y, Z parameters to maximum values was effective since some viewers were still trying to leave the marked area despite
[2] [3]
[4] [5] [6]
[7] [8] [9]
Frankfurter Allgemeine Zeitung, “Schäuble fordert späteren Rentenbeginn“, 4/21/2016 S. Haas, „Ein Vorbild für Deutschland“, Süddeutsche Zeitung, 1/27/2011 VDMA. n.d. Altersstruktur der Erwerbstätigen im Maschinenbau in Deutschland im Jahresvergleich 2005 und 2011. Statista. Accessed at 4/11/2017 https://de.statista.com/statistik/daten/studie/235882/umfrage/altersstrukt ur-der-erwerbstaetigen-im-maschinenbau-in-deutschland/. KUKA, KUKA_LBR_iiwa_brochure_EN,pp. 10-11 2017 J. Braumann, S. Brell-Cokcan,“Adaptive Robot Control”, eCAADe 33 Fabrication - Robots - Volume 2, pp. 243-250, 2014 Team Machamp,“Robot-Assisted Heavy Part Manipulation ”,Istituto Di Tecnologie Industriali E Automazione of the Consiglio Nazionale delle Ricerco, Kuka Innovation Award , 2017 Team MANCHU,“ Multi-Robot Human Collaboration”, École polytechnique fédérale, Kuka Innovation Award , 2017 W. Bauer, “Leichtbauroboter in der manuellen Montage”, Fraunhofer IAO, 2016 KUKA, „KUKA SunriseOS 1.7“, pp. 277, 2016