@[toc](Contents)
## Video illustration ##
[Youtube link][6]
## Accompanying article ##
Svarny, P., Rozlivek, J., Rustler, L., Sramek, M., Deli, Ö., Zillich, M. and Hoffmann, M. (2022), 'Effect of active and passive protective soft skins on collision forces in human–robot collaboration', Robotics and Computer-Integrated Manufacturing 78, 102363.
[[PDF at publisher]][7]
[[PDF at arxiv]][7]
Abstract: Soft electronic skins are one of the means to turn an industrial manipulator into a collaborative robot. For manipulators that are already fit for physical human-robot collaboration, soft skins can make them safer. In this work, we study the after impact behavior of two collaborative manipulators (UR10e and KUKA LBR iiwa) and one classical industrial manipulator (KUKA Cybertech), in the presence or absence of an industrial protective skin (AIRSKIN). In addition, we isolate the effects of the passive padding and the active contribution of the sensor to robot reaction. We present a total of 2250 collision measurements and study the impact force, contact duration, clamping force, and impulse. The dataset is publicly available. We summarize our results as follows. For transient collisions, the passive skin properties lowered the impact forces by about 40 %. During quasi-static contact, the effect of skin covers -- active or passive -- cannot be isolated from the collision detection and reaction by the collaborative robots. Important effects of the stop categories triggered by the active protective skin were found. We systematically compare the different settings and the empirically established safe velocities with prescriptions by the ISO/TS 15066. In some cases, up to the quadruple of the ISO/TS 15066 prescribed velocity can comply with the impact force limits and thus be considered safe. We propose an extension of the formulas relating impact force and permissible velocity that take into account the stiffness and compressible thickness of the protective cover, leading to better predictions of the collision forces. At the same time, this work emphasizes the need for in situ measurements as all the factors we studied -- presence of active/passive skin, safety stop settings, robot collision reaction, impact direction, and, of course, velocity -- have effects on the force evolution after impact.
## Structure of the dataset ##
There are two folders:
- **logs**
- this folder includes *.xlsx* files with mainly the measured force. The format is slightly different for each robot. However some of the columns are common for all of them:
- experiment number - ID of the experiment
- velocity - velocity in mm/s
- place - ID of the place, corresponding with places in the article
- force - force measured on impact
- skin - how the skin was used
- 0 - no skin
- 1 - active skin
- 2 - passive skin
- Individual robots then have custom fields:
- **KUKA_Cybertech.xlsx**
- skin safety - which safety setting was used in the experiment
- **UR10.xlsx**
- timestamp - timestamp where the experiment were executed
- code - safety code of the robot settings
- 38F9 - preset 4
- 0D08 - preset 2
- pad - 0/1, whether the pad was used
- **KUKA_IIWA_7_R800**
- timestamp - timestamp where the experiment were executed
- skin safety - safety code of setting used for skin
- torque safety - safety code of setting used for external torque
- **pickles**
- this folder includes *.pkl* files, which can be opened with *pickle* library for *Python*. The data for each robot are divided into multiple files as it would require unfeasible memory otherwise. The files include more information than the *.xlsx* files, *e.g.*, cartesian position and velocity in each timestamp.
- **UR10e**
- Each file is *Python dictionary* with keys named after the experiments. Each key includes array, where each item includes data for one experiment, i.e., one velocity.
- *UR10e_preset2.pickle*
- data recorded with safety preset 2
- keys are in format 'sXpX', where 's' stands for skin and can be 0,1,2 and 'p' stands for place and can be 0,1,2
- *UR10e_preset4.pickle*
- data recorded with safety preset 4
- keys are in format 'sXpX', where 's' stands for skin and can be 0,1,2 and 'p' stands for place and can be 0,1,2
- *UR10e_transient.pickle*
- data recorded for transient experiments
- keys are in format 'sXpX', where 's' stands for skin and can be 0,1,2 and 'p' stands for place and can be 3,4
- *UR10e_PAD.pickle*
- data recorded with PAD
- keys are in format 'sXpXpadX', where 's' stands for skin and can be 0,1,2, 'p' stands for place and can be 0,1,2,3,4 and 'pad' says whether there is PAD or nor and can be 0,1
- **Fields**:
- *force* - dictionary with fields: x, y, z containing force data on the wrench in given axis
- *torque* - dictionary with fields: x, y, z containing torque data on the wrench in given axis
- *timestampWrench* - 1xn numpy array of timestamps in *ms* for wrench data
- *jointAngles* - nx6 numpy array of joint angles
- *timestampAngles* - 1xn numpy array of timestamps in *ms* for joint angles
- *position* - mx3 numpy array cartesian position of the end-effector
- *speeds* - dictionary with field: x, y, z containing speeds in given axis
- *timestamp* - 1xm numpy array of timestamps in *ms* for *position* and *speeds*
- *safety* - dictionary with fields: mode - to which mode was the robot set, timestamp - time in *ms* at which the mode was set
- **KUKA iiwa 7 R800**
- Each file is *Python dictionary* with keys named after the experiments. Each key includes array, where each item includes data for one experiment, i.e., one velocity.
- *KUKA_iiwa_transient.pickle*
- data recorded for transient experiments
- keys are in format 'sXpX', where 's' stand for skin and can be 0,1,2 and 'p' stands for place and can be 3,4. There are also '_30' fields, which includes data collected with 30Nm external torque limit.
- *KUKA_iiwa_skin_0_ext_torque_0.pickle*
- initial data recorded with skin and external torque on default safety settings -- stop 0 for both.
- keys are in format 'sXpX', where 's' stand for skin and can be 0,1,2 and 'p' stands for place and can be 0,1,2.
- *KUKA_iiwa_posX_ext_torque_X.pickle* - where 'pos' stands for position and can be 0,1,2 and 'ext_torque' stands for external torque limit safety settings and can be -,0,1,p.
- keys are in format 'sXpX_Y_Z', where 's' stand for skin and can be 0,1,2, 'p' stands for place and can be 0,1,2 and then Y is for skin safety and can be -,0,1,p and Z is for external torque safety setting and can be -,0,1,p.
- **Fields:**
- *position* - nx3 array of cartesian position of the end-effector
- *extTorque* - nx7 array of external torque in each joint
- *torque* - nx7 array of complete torques in each joint
- *jointAngles* - nx7 array of joint angles
- *tcpForce* - nx3 array of force on TCP in each direction
- *tcpTorque* - nx3 array of torque on TCP in each direction
- *acc* - dictionary with keys: x, y, z, all including acceleration in all axis and its magnitude (all)
- *speeds* - dictionary with keys: x, y, z, all including speed in all axis and its magnitude (all)
- *speed* - int, the used velocity
- *reaction* - float, computed reaction time, not used
- *timestamp* - 1xn array of timestamps in *ns*
## Acknowledgements ##
This work was supported by the Czech Science Foundation (GA CR), project EXPRO (no. 20-24186X). P.S. was additionally supported by the Ministry of Industry and Trade of the Czech Republic (project no. CZ.01.1.02/0.0/0.0/19_264/0019867). We thank Bedrich Himmel for assistance with the setup for transient collision measurement.
[7.be/yqEjnK9_hCg
[1]: https://osf.io/gwdbm/wiki/home/?edit&view&menu#Contents_1
[2]: https://osf.io/gwdbm/wiki/home/?edit&view&menu#Video_illustration_6
[3]: https://osf.io/gwdbm/wiki/home/?edit&view&menu#Accompanying_article_11
[4]: https://osf.io/gwdbm/wiki/home/?edit&view&menu#Structure_of_the_dataset_21
[5]: https://osf.io/gwdbm/wiki/home/#Acknowledgements_91
[6]: https://doi.org/10.1016/j.rcim.2022.102363
[7]: https://arxiv.org/abs/2203.09872