DEGREE PROJECT IN TECHNOLOGY, FIRST CYCLE, 15 CREDITS
STOCKHOLM, SWEDEN 2020
Model parameter estimation for a
handheld nutrunner
KTH Bachelor Thesis Report
Jonathan Fridstrand and Johanna Sturk
KTH ROYAL INSTITUTE OF TECHNOLOGY
Abstract
The purpose of this project is to investigate the angled nutrunner, which is a hand held torque tool often used in the industry to tighten bolted joints. The goal is to estimate parameter values for an existing model that can describe the reaction force and the angular displacement of the tool as a function of the torque transferred to the joint.
The model is based on a damped mass-spring system with one degree of freedom.
The short torque pulse in the tool will induce an oscillating motion of the sys- tem.
A large amount of data is used that has been collected at an assembly factory.
Different tightening conditions tested include tightening strategy (Quick Step and Turbo Tight), joint stiffness (hard and soft joint), tightening pace (5 and 8 tighten- ings per minute) and target torque. Joint torque, angular acceleration for the tool and, for the Quick Step tightenings, the reaction force is measured. The grey-box model is used in order to estimate the parameters of the model through curve fitting of the data describing the angular displacement. The reaction force on the user is also examined with different methods.
The resulting mean values of the model parameters are the mass m = 2.31 kg, the dampening constant c = 103.45 kg/s and the spring stiffness k = 2314.84 N/m. The mean value of the natural frequency of the hand-arm system is fn = 5.46 Hz. A statistical significance is found for all conditions except the tightening pace.
Sammanfattning
Syftet med detta projekt är att undersöka vinklade mutterdragare, vilket är ett handhållet verktyg som ofta används i industrin för att dra åt skruvförband. Målet är att uppskatta parametervärden för en befintlig modell som beskriver verktygets reaktionskraft och vinkelförskjutning som en funktion av det moment som överförs till förbandet.
Modellen är baserad på ett dämpat massa-fjäder-system med en frihetsgrad. Den korta momentpulsen i verktyget kommer att orsaka en oscillerande rörelse hos sys- temet.
En stor mängd data används som har samlats in på en monteringsfabrik. Några av de åtdragningsförhållanden som testades var åtdragningsstrategi (Quick Step och Turbo Tight), förbandets styvhet (hårt och mjukt förband), åtdragningstakt (5 och 8 åtdragningar per minut) och målmoment. Det som uppmättes var momentet i förbandet och vinkelaccelerationen för verktyget. För Quick Step-åtdragningar upp- mättes även reaktionskraften. Greybox-modellen används för att uppskatta model- lens parametrar genom kurvanpassning av data som beskriver vinkelförskjutningen.
Reaktionskraften på användaren togs också fram med olika metoder.
De resulterande medelvärdena för modellparametrarna är massan m = 2.31 kg, dämpningskonstanten c = 103.45 kg/s och fjäderkonstanten k = 2314.84 N/m.
Medelvärdet för den naturliga frekvensen för handarmssystemet är fn= 5.46 Hz. En statistisk signifikans hittas för alla förhållanden förutom åtdragningstakten.
Acknowledgements
We would like to thank our supervisors Romain Haettel and Hans Bodén for the guidance during this project.
Special thanks go to Ava Mazaheri who conducted all the necessary experiments for this study and provided us with figures.
Authors
Jonathan Fridstrand and Johanna Sturk Sound and Vibration Engineering
The Marcus Wallenberg Laboratory for Sound and Vibration Research (MWL) KTH Royal Institute of Technology
Place for Project
Stockholm, Sweden
Examiner
Susann Boij
KTH Royal Institute of Technology
Supervisors
Romain Haettel Atlas Copco
Hans Bodén
KTH Royal Institute of Technology
Table of contents
1 Introduction 1
1.1 Background . . . 2
1.2 Problem . . . 3
1.3 Purpose . . . 3
2 Theory 4 2.1 Simple one degree of freedom model . . . 4
2.2 Molitor’s model . . . 5
2.3 State space representation . . . 6
3 Method 7 3.1 Measurements at an assembly factory . . . 7
3.2 The grey-box model . . . 9
3.3 Molitor’s program . . . 10
3.4 Calculating forces . . . 10
3.5 Processing data . . . 11
3.6 Statistical analysis . . . 12
4 Results 13 4.1 Curve fitting . . . 13
4.2 Data and statistics . . . 15
5 Discussion 18 5.1 Human factors . . . 18
5.2 Quality of data and model . . . 18
5.3 The tightening sequence . . . 19
6 Conclusion 21
References 22
A Main program code B State space model code C Solving for the displacement D Example data
E Distributions of parameter values
F Selected or rejected data for the tightening conditions
1 Introduction
Hand held torque tools are often used in the industry to tighten bolted joints. While the tools can be driven both pneumatically and electrically the use of electrical tools are becoming more common since they perform tightenings with a higher precision. Additionally, they make data collection easier and that is important for manufacturers who seek to optimize the process and product quality in order to reduce workplace injuries. The tool that will be examined in this thesis is an angled nutrunner, see Figure 1.1.
Figure 1.1: Angled nutrunner of model ETV STR61-70. ©Atlas Copco
For each tightening of a bolted joint, the tool goes through a tightening sequence. A tightening sequence consists of two phases; rundown and tightening, see Figure 1.2.
First the period of rundown until the bolt head has a snug fit and thereafter the tightening phase of elastic deformation until the desired clamping force is achieved.
Towards the end of the sequence a large torque is built up that will transmit a force to the user.
0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0
20 40
Time [s]
Torque [Nm]
⎧ ⎨ ⎩ ⎧ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎩
Tightening Rundown
Snug
Figure 1.2: The two phases of a tightening sequence.
Normally manufacturers only gather data during a tightening sequence that describe the torque transferred to the joint. There are rarely any data describing the force that the user experiences and the angular displacement of the tool. It is widely considered that both this force and angular displacement are important for an er- gonomic analysis that relates tool usage to injuries. It would therefore be beneficial to have a model that could describe the forces and the angular displacements as a function of the torque.
1.1 Background
The nutrunner affects the user with a reaction force acting on the hand and arm since it creates an angular displacement this force will apply a rotating motion to the hand and arm. Frequent repetitions of this movement can create discomfort or even injure the worker [3, 10]. In Atlas Copco’s book Power Tool Ergonomics it is described how complex the structure of the hand-arm system is. Repetitive work task combined with external load and bad postures can cause work-related musculoskeletal disorder. Depending on the work situation in question, this disorder can develop in different parts of the hand-arm system [6]. Thus, it is interesting for manufacturers to be able to predict how much the tool in question will affect the user in order to optimize the design of the tool.
1.1.1 Molitor
In the spring of 2019 Erik Molitor finished his bachelor thesis [8]. In this project he created a model which approximated to what extent a nutrunner would affect a user in the context of ergonomics. The goal was to develop a model that could predict the angular displacement and the force applied to the hand-arm system. Molitor modeled the arm of the operator and the tool as a damped mass-spring system with one degree of freedom (1 DOF system). The input of the model was the torque of the nutrunner and the parameter values of the spring, mass and damping which were collected from previous research. The project resulted in a model that was able to approximate the angular displacement and the reaction force. Molitor also concluded that using a tightening torque with several increasing impulses decreased the total displacement, in comparison with one large impulse.
1.1.2 Fridstrand
Jonathan Fridstrand worked at Atlas Copco in the summer of 2019 [1]. His main objective was to validate and test the model that Molitor had developed against other existing models. These were first a simple 1 DOF system which was solved
analytically [9] and a reworked model of a pistol grip tool which was solved numer- ically [4]. He confirmed that the model Molitor had created gave the same result as the other two models that it was tested against. Later, he also evaluated that different lengths and shapes of torque pulses giving different angular displacement where it was observed that short or rapid consecutive pulses gave the least amount of displacement. Further on, Fridstrand was of the opinion that the most relevant out- put of the model was the peak displacement and not the shape of the displacement curve. The displacement curve could still be used to validate the models accuracy since it closely followed data measurements, though only for a short time span before muscle contractions occur.
1.2 Problem
As mentioned in section 1 it is of great importance for manufacturers to have a model which can predict the potential impact of tools on users. A model with this function would enable optimization of the design of the tool. When given various measured data and relevant theory of the area, could such a model be developed with a satisfying level of statistical certainty?
1.3 Purpose
The purpose of this project is to further develop Erik Molitor’s model describing the force and angular displacement that the user is exposed to while operating a nutrunner. Specifically, it is necessary to find suitable values for the parameters in the model (mass m, spring constant k and damping constant c) in order for the model to be equivalent with the given data.
2 Theory
This work is a continuation of the bachelor thesis of Erik Molitor [8] and Jonathan Fridstrand’s summer internship [1]. These projects are described shortly in sections 1.1.1 and 1.1.2. A number of models have also been used in order to carry out this project.
The models described in this section are based on the assumption that the hand and arm of a person can be modeled as a damped mass-spring system with 1 DOF.
Figure 2.1 illustrates a 1 DOF system consisting of a mass m, a spring with stiffness k and a damper with the constant c. The displacement of the system x can be generated by a force F acting on the body and this movement can be described by different models.
Figure 2.1: Damped mass-spring system with an excitation force [9].
2.1 Simple one degree of freedom model
The motion of a 1 DOF system that is excited by a force (as in Figure 2.1) can be described with the equation
md2x
dt2 + cdx
dt + kx = F (t). (1)
The force F (t) will induce an oscillating motion that will continue after the force has stopped until the system reaches a steady state. This system has some properties of interest, namely the angular frequency for the whole system ωn which can be obtained through the angular frequency of the undamped system ω0and the system’s damping constant β which are given by
ω0 =
√k
m and β = c
2m, (2)
which gives the angular frequency for the damped system
ωn =
√
ω02− β2. (3)
These parameters determine how fast the system oscillates freely and how fast that the oscillation decreases to a steady state. It can be noted that equation (3) only gets a real value for ωn when ω0 > β, this is because it is the only case were the system has repeating oscillations and such a system is denoted as lightly damped.
When ω0 ≤ β the system is either critically or heavily damped which means the oscillations decrease faster. Only lightly damped systems occur when dealing with the angular displacements of nutrunners [5].
2.2 Molitor’s model
The model was developed by describing the nutrunner and the user hand-arm as a 1 DOF system according to Figure 2.2. The tool was simplified into an elongated cylinder with the length l and mass mtool. The previously introduced parameters k, c and the mass of the hand and arm marm are included in the model as well. Thus, the moments of inertia of the two masses are Itool and Iarm, respectively. Both have been calculated with the rotation axis of the joint as the centre point, see A in the figure.
A m
toolB
m
armk c
C
l θ, T
toolx
Figure 2.2: Schematic sketch of Molitor’s model.
From this and the tool torque Ttool and the angular acceleration of the tool can be described as
d2θ
dt2 = Ttool− l2(
kθ + cdθdt)
Itool+ Iarm , (4)
which is later used in the state space representation. For a more detailed description, see Appendix C.
2.3 State space representation
State space representations are used to describe the properties of a dynamic system [2]. This is possible with the help of a number of variables describing the situation the system finds itself in at a specific time. The resulting model is a vector which is dependent of the time. In this project the relevant system has been modeled in a continuous time form as
d
dtx(t) = Ax(t) + Bu(t) y(t) = Cx(t) + Du(t),
(5)
where x(t), y(t) and u(t) are the state, output and input vectors respectively. A, B, C and D are matrices describing the relationships between the vectors x(t), y(t) and u(t). In this thesis the state space representation is used to rewrite the differential equation (4).
3 Method
Throughout this project different methods have been used. In the beginning of the project a large amount of data was given that had been collected at a factory in a simulated work station. Then this data along with relevant theory was used to estimate the model parameters. The force on the participant was also evaluated with several methods. The resulting data was lastly sorted and analyzed.
3.1 Measurements at an assembly factory
The measurements took place at an assembly factory. Eighteen different assembly workers participated by using a ETV STR61-70 tool, see Figure 1.1, in a simulated work station. Angle acceleration, tool torque and tool reaction force were measured as the workers performed tightenings. The participants performed tightenings with two joint types, i.e. hard (HJ) and soft (SJ) and two types of tightening strategies, Quick Step (QS) and Turbo Tight (TT) and with a tightening pace of either five or eight tightenings per minute. Figure 3.1 illustrates how the torque pulse changes with the different conditions. Tightenings were carried out during three intervals with rest allowed between each interval. This procedure was repeated for every combination of input parameters in a randomized order. During the measurements the target torque was increased or decreased in steps of 5 Nm to examine comfort levels for the participants.
0 0.05 0.1 0.15 0.2 0.25 0.3
Time [s]
-5 0 5 10 15 20 25 30 35 40
Torque [Nm]
(a) QS-SJ
0 0.05 0.1 0.15 0.2 0.25 0.3
Time [s]
-5 0 5 10 15 20 25 30 35 40
Torque [Nm]
(b) QS-HJ
0 0.05 0.1 0.15 0.2 0.25 0.3
Time [s]
-5 0 5 10 15 20 25 30 35 40
Torque [Nm]
(c) TT-HJ
Figure 3.1: Different torque pulse conditions tested, here with target torque 35 Nm.
An accelerometer was fixed on the nutrunner in order to perform the measurements.
Figure 3.2 illustrates the position of the accelerometer during the measurements. For the tightenings made with QS a force transducer was fixed on the tool to measure the reaction force on the handle. The force transducer and its mounting position on the tool can be seen in Figure 3.3. The operator position during a tightening sequence is illustrated in Figure 3.4.
Figure 3.2: Accelerometer position on the tool.
Figure 3.3: The force transducer used in the QS measurements.
Figure 3.4: Operator position during a tightening sequence.
3.2 The grey-box model
A grey-box model combines a theoretical structure with data to complete a model. In this case the theoretical structure consists of a model with set equations that needs parameter values from measured data. It can be compared to a black-box model where only data is used to create the model with no further guidance whereas with a grey-box there is some control over the process. The grey-box model can consider already defined equations which can be seen in Figure 3.5.
Measurement data Equations without known parameter values
Grey-box
Equations with known parameter values
Figure 3.5: Principal behaviour of the grey-box model.
In order to estimate the parameters of the model, the System Identification Toolbox in Matlab [7] was used. The toolbox can perform grey-box model estimation which is able to estimate coefficients to linear and nonlinear differential equations. This project is based on the linear differential equation (4), hence, the MATLAB function idgrey was used.
The function idgrey represents a system as a continuous-time or or discrete-time state-space model with identifiable parameters. The grey-box model can be used when the equations describing the dynamic of the system are known. These equa- tions must be written as ordinary differential equations in order to be able to use the idgrey function.
In this case a continuous state space model was used, see section 2.3 for description.
Equation (4) was written on the form of equation (5) to get the vectors
x(t) = [
θ(t)
d dtθ(t)
]
, y(t) = θ(t) and u(t) = T (t), (6)
where θ is the angular displacement of the tool, T (t) is the torque pulse and the matrices
A = [
0 1
−kl2 Itool+Iarm
−cl2 Itool+Iarm
] , B =
[ 0
1 Itool+Iarm
] ,
C = [
1 0
] and D =[ 0
]
(7)
are the state space matrices from equation (5), which has the model parameters described in section 2.2. The MATLAB code for the state space representation can be found in Appendix B and the full code with usage of idgrey can be found in Appendix A.
3.3 Molitor’s program
Molitor wrote a program which could calculate the angular displacement of the nutrunner during a tightening. This was done with the help of the Euler method which is described in Appendix C. Molitor’s program was used in this project in order to calculate the angular displacement after the parameters had been estimated with the idgrey function.
3.4 Calculating forces
The reaction force on the user can be estimated with different methods. Three dif- ferent ways to calculate the force have been used in this project in order to compare the results with each other. The first method calculates the force theoretically,
F1(t) = Ln2 (
cestdθ
dt + kestθ )
, (8)
where cest and kest are two of the parameter values estimated with the grey-box model. The length from the point of rotation to the gripping point is given by Ln2 which is used in each method. The second method uses the measured data to calculate the force,
F2(t) = 1 Ln2
(
T − Jd2θ dt2
)
, (9)
where T is torque pulse, J is the moment of inertia and ddt22θ stands for the angular acceleration. The third method uses the same equation, though it is somewhat dif- ferent with respect to the angular acceleration. Instead the acceleration is calculated
with the Euler method, according to Appendix C,
F3(t) = 1
Ln2 (T − Jα) , (10)
where α denotes the angular acceleration. It was also possible to measure the force with a force transducer, though only when the tool was set on QS, enabling the force to be evaluated with one additional method for a great part of the measurements.
The force measured with the force transducer is given by F _op_J. Lastly, the forces were displayed in figures which enabled a comparative evaluation of their amplitudes.
3.5 Processing data
It was important that the parameter values created a valid 1 DOF system. In accordance with 2.1 the system is lightly damped and must fulfill that criteria.
Consequently, the program had to validate that the system was lightly damped.
That is true when the angular frequency ωn in equation (3) is a real number.
It was observed that if the data behaved in certain ways it could lead to incorrect parameter estimation. The grey-box model could for example not handle the dis- placement if the steady state was offset too much during the tightening. Figure 3.6 illustrates tightenings that resulted in incorrect parameters. The data that did not replicate the properties of a lightly damped system where discarded before the statistical analysis and were marked as rejected data, however for the data were the criteria were met the data where further examined and marked as selected data.
(a) Displacement goes up too much. (b) Displacement goes down too much.
Figure 3.6: (a) and (b) illustrates rejected tightenings that were sorted out.
A few criteria were set that determined whether the data were to be selected or
rejected. Firstly, selected data showed a displacement that oscillates towards a steady state. The displacement could go up or down too much which would mean the data was to be rejected. This is because the grey-box model only recognises oscillations around a steady state and interprets this change as the system being over damped or not damped at all. Secondly, it was determined that the data had to have a satisfying level of accuracy in order to be a relevant result. A system with an accuracy below 90 % was therefore eliminated from the result. Lastly, the criteria for the system to be slightly damped was also put in, meaning that the angular frequency of the damped system from equation (3) was to be a real number.
3.6 Statistical analysis
Mean values and standard deviations were calculated for the different conditions joint type (HJ/SJ), tightening strategy (QS/TT), tightening pace (5 or 8 tightenings per minute), participants and target torque. It was also of interest to investigate whether changing the conditions had an impact on the estimated parameters. This was done by calculating p-values for the different conditions joint type (HJ/SJ), tightening strategy (QS/TT) and tightening pace (5 or 8 per minute). The level of significance used was 0.05 with a null hypothesis stating that the condition variables in question do not affect the estimated parameter value. The alternative hypothesis stated that the condition variables did affect the resulting parameter value. If the calculated p-value is less than the level of significance it is statistically significant.
This means that the null hypothesis is rejected and the alternative hypothesis is accepted.
4 Results
The results of the project are based on 19 data files from six participants which contain a total of 2687 tightening sequences. In section 3.5 a few criteria were presented that were used in order to determine if the data were to be selected or rejected. This resulted in 931 selected tightenings and 1756 rejected tightenings meaning that 34.6 % of the given data passed the set requirements. Appendix E presents the percentage of given data for the different conditions that passed the set criteria and were selected.
Based on the selected data the mean values and standard deviation (SD) of the parameters’ values and the natural frequencies were calculated. The mean value and SD of the mass marm were given as 2.31 kg (SD = 1.30), the damping constant c as 103.45 kg/s (SD = 42.36), the spring stiffness k as 2314.84 N/m (SD = 1069.89) and the natural frequency of the hand-arm system fn as 5.46 Hz (SD = 1.96). The distribution of the mean values and standard deviations are described further in section 4.2.
4.1 Curve fitting
The purpose of the grey-box model estimation was to estimate parameters of the system. Figure 4.1 illustrates a successful curve fitting where the y-axis represents the displacement and the x-axis the duration of the pulse. The grey-box model fitted the curve to the given data, which in this case resulted in an accuracy of 98.11 %.
The grey curve represents the measured data and the result of the grey-box model is coloured in blue.
The figures presented in this subsection all illustrate a tightening with conditions QS-SJ-5/min with test person 3 (TP3).
Moreover, the measured data were compared with the Euler calculated displacement used by Molitor. Figure 4.2 illustrates this comparison where the y-axis represents the displacement and the x-axis the duration of the pulse.
The force and torque pulse of the tightening is relevant for analysis. Section 3.4 describes three different methods to calculate the force on the participant. F1 rep- resents the theoretically calculated force, F2 denotes the the force calculated with the measured data and F3 is obtained with the help of the Euler method. Lastly, F _op_J represents the force measured with a force transducer when the tool was set on QS. In Figure 4.3 the result of the differentiating methods are presented. The torque pulse of the tightening is also illustrated.
0.05 0.1 0.15 0.2 0.25 -0.03
-0.02 -0.01 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07
y1
data (y1) GboxResult: 98.11%
Simulated Response Comparison
Time (seconds)
Displacement [rad]
Figure 4.1: A successful curve fitting with an accuracy of 98.11 %.
0 0.1 0.2 0.3
Time [s]
-0.02 0 0.02 0.04 0.06
Angular displacement [rad]
Measured Simulated
Figure 4.2: Comparing the measured displacement with the Euler calculated dis- placement.
0 0.1 0.2 0.3
Time [s]
-20 0 20 40 60 80
Force [N]
F1 F2 F3 F_op_J
0 0.1 0.2 0.3
Time [s]
-5 0 5 10 15 20 25
Torque [Nm]
Figure 4.3: Force calculated with four different methods from the same torque pulse.
4.2 Data and statistics
The grey-box model managed to calculate parameters for each tightening with vari- ous quality. In Appendix D the selected output data is presented which all met the set criteria and had an accuracy of at least 90 %. The figures in this appendix con- tains tightenings performed by several participants using both tightening strategies TT and QS. The joint types HJ and SJ were also both used and the participants used at pace of five or eight tightenings per minute.
Furthermore, the derived parameter values were either from selected or rejected data in order to illustrate the differences in distribution. In Figure 4.4 the differentiating distributions of the calculated parameters and the natural frequency as selected or rejected data are illustrated.
0 10 20 30 40
Mass [kg]
0 50 100 150 200 250
Number of tightenings
Rejected data Selected data
(a) Mass
0 200 400 600 800
Damping constant [kg/s]
0 50 100 150 200
Number of tightenings
Rejected data Selected data
(b) Damping constant
0 1 2 3
Spring constant [N/m] 104
0 50 100 150 200
Number of tightenings
Rejected data Selected data
(c) Spring constant
0 10 20 30 40 50
Natural frequency [Hz]
0 100 200 300 400 500
Number of tightenings
Rejected data Selected data
(d) Natural frequency Figure 4.4: The selected data layered in front of the rejected data.
When all parameters and natural frequencies had been derived it was possible to calculate the corresponding mean values and standard deviations which can be seen in Figure 4.5. The values are presented in Appendix E.
All QSTT HJ SJ 5’ 8’ 1 2 3 4 5 6 15 20 25 30 35 40 0
2 4 6
Mass[kg]
All QSTT HJ SJ 5’ 8’ 1 2 3 4 5 6 15 20 25 30 35 40 0
100 200
Dampingconstant[kg/s]
All QSTT HJ SJ 5’ 8’ 1 2 3 4 5 6 15 20 25 30 35 40 0
2,000 4,000 6,000
Springconstant[N/m]
All QSTT HJ SJ 5’ 8’ 1 2 3 4 5 6 15 20 25 30 35 40 0
2 4 6 8
Naturalfrequency[Hz]
Figure 4.5: Parameter and natural frequency mean values and standard deviations for all measurements and the different conditions; Tightening strategy (QS/TT), Joint type (HJ/SJ), Tightening pace (5 or 8 per minute), Test person (1-6) and Target torque in Nm.
Table 4.1 displays the calculated p-values for the different conditions joint type (HJ/SJ), tightening strategy (QS/TT) and tightening pace (5 or 8 per minute) with a level of significance of 0.05. The null hypothesis stated that the condition variables did not affect the estimated parameter value and the alternative hypothesis stated that the condition variables did affect the resulting parameter value. As can be seen all p-values but one were less than the significance level, meaning that only one p-value did not reject the null hypothesis. Hence, the conditions had an impact on all parameter values except choice of tightening pace when calculating the natural frequency.
Table 4.1: p-values for the conditions joint type, tightening pace and tightening strategies.
Condition Mass Damping const. Spring const. Natural freq.
[kg] [kg/s] [N/m] [Hz]
p-value p-value p-value p-value
Joint type < 0.05 < 0.05 < 0.05 < 0.05 Tightening pace < 0.05 < 0.05 < 0.05 0.8705 Tightening strategy < 0.05 < 0.05 < 0.05 < 0.05
5 Discussion
There are many factors which have had an impact on the quality of the data and, consequently, on the result of this project. It is therefore important that the im- pact of these factors are taken into consideration when analyzing the quality of the measured data and result.
5.1 Human factors
The tool users participating in the measurements may have a significant impact on the results. For instance, if the participant moves in an unexpected way or does not hold the tool exactly as intended, the data will potentially be influenced by those disturbances. In some cases, these disturbances will be significant enough to cause the data to become degraded. Also, the distance between the point of gripping and the centre of rotation for the joint will affect the moment arm which will affect the torque and the moment of inertia. If this distance differs between measurements, the data from each measurement will change in size and will therefore differ with a scaling factor.
The level of muscle tension before a tightening sequence will affect the damping and the spring constant of the system. This muscle tension is thought to be inversely proportional to the damping constant. Moreover, when the number of measurements a person participates in increases, the participant is likely to become more fatigued.
This means that when the person becomes more tired, they will not be able to hold the tool as firmly as before. Due to this the spring constant will decrease over time and the damping constant will increase with repeated use. This will have a great impact on the quality of the parameters the system has estimated.
Figure 4.5 illustrates parameter and natural frequency mean values and standard deviations for different conditions. It can be seen how these values differ depending on the test person who performs the tightening. Test person number 4 in particular seems to have yielded higher mean values and standard deviation with regards to the mass, damping constant and spring constant. This leads to the conclusion that the parameter values must be individual to at least some degree.
5.2 Quality of data and model
As mentioned in section 3.5 the data could behave in ways that would not yield for correct parameter estimation since the model could not handle that behaviour. For that reason a few criteria were set in order to determine if the data could be viewed as satisfying. In section 4 it is presented that 34.6 % of the total data could be used
in the model with the set criteria. This leads to the question whether the data or the model is inadequate.
One way to answer this is that some measurements could have been executed in ways that differed considerably from a “standard” tightening, i.e. it is perhaps too difficult to develop a model that can handle all kind of data whilst, at the same time, giving a meaningful result. On the one hand some of the data could be perceived as insufficient. On the other hand the quality of the model could be viewed as inadequate since it cannot handle every possible behaviour of the data. In this case the model could be seen as inadequate and would therefore have to be redesigned to process all kinds of data. If this is true it is unlikely that the 1 DOF system is enough. A solution to this could be to increase the number of degrees of freedom for the system to process a higher percentage of the data.
Moreover, by decreasing the accuracy limit of 90 % it is possible to examine a higher percentage of the data without changing the 1 DOF system. A limit which could be perceived as too high since a considerable amount of the rejected data yielded parameter values which seem valid when comparing them with the result of the selected data (see Appendix D). Decreasing this limit would result in a higher percentage of the data being selected and after a certain point too much data would be included which could lead to an inaccurate model estimation. But by looking at the distribution of the data in Figure 4.4, it could be argued that the limit could be lower since much of the rejected data aligns with the selected data. This change of the accuracy limit could be examined in the future.
It would be beneficial if a larger proportion of the data were examined. Therefore, further optimization of the model is of interest. Workers will in many cases not perform a tightening according to a “standard”; instead, it is likely they will use the tool in ways that differ from an ideal tightening.
5.3 The tightening sequence
The emerged torques were analyzed by rounding off to the nearest number divis- ible by five and, thereafter, displayed in graphs. An illustrative example of this is visualized in Figure 5.1. It was found that the torques that had been rounded off in almost every case were 2 Nm greater. A target torque which the tightening should aim towards is set before starting the tightening sequence. Due to various characteristics the accuracy of an actual tightening varies. For instance, different properties of the joint could result in overshoot or a torque being unable to reach its target torque.
0 50 100 150 Data point
20 25 30 35
Torque [Nm]
Actual torque values Rounded torque values
Figure 5.1: The torques rounded off to the nearest number divisible by five.
6 Conclusion
The parameter values for an operator hand-arm system could be estimated by using an 1 DOF model describing the angular displacement and the reaction force gen- erated by a nutrunner. A significant amount of data were not considered in the result because they did not strictly match the model, this suggests that either the data quality or the model accuracy is not sufficient. A stricter way of performing the tightenings or a model with more DOF could potentially solve these problems.
References
[1] Fridstrand, Jonathan C.E. Comparing simulations of displacement and forces using right angled nutrunner. Stockholm: Atlas Copco, Design and Ergonomics Department, Aug. 2019.
[2] Glad, Torkel and Ljung, Lennart. Reglerteknik: grundläggande teori. Swedish.
4th ed. Lund: Studentlitteratur AB, 2006. isbn: 978-91-44-02275-8.
[3] Kihlberg, Steve, Kjellberg, Anders, and Lidbeck, Lars. Discomfort from pneu- matic tool torque reaction: Acceptability limits. Tech. rep. 1995, pp. 417–426.
doi: 10.1016/0169-8141(94)00059-C.
[4] Lin, Jia-Hua, Radwin, R. G., and Richard, T. G. “Dynamic biomechanical model of the hand and arm in pistol grip power handtool usage”. In: Er- gonomics, 44:3 (2001), pp. 295–312. doi: 10.1080/00140130118167.
[5] Lindqvist, Bo. “Torque reaction in angled nutrunners”. In: Applied Ergonomics (1993). R&D Applied Ergonomics. Product Safety and Liability. Atlas Copco, pp. 174–180. doi: 10.1016/0003-6870(93)90005-T.
[6] Lindqvist, Bo and Skogsberg, Lars. Power Tool Ergonomics: Evaluation of Power Tools. Atlas Copco Printed Matter, 2007. isbn: 978-91-631-9900-4.
[7] MATLAB version 9.6.0.1214997 (R2019a). System Identification Toolbox.
The Mathworks, Inc. Natick, Massachusetts, 2019.
[8] Molitor, Erik. “Simulation of forces and displacements in handheld power tools”. Swedish. KTH, Royal Institute of Technology, Institution for Sound and Vibration, June 2019.
[9] Nilsson, Anders C. Vibroacoustics. Part 1. Stockholm: KTH Royal Institute of Technology, Department of Vehicle Engineering, 2000.
[10] Zetterberg, Carl and Öfverholm, Torsten. Carpal tunnel syndrome and other wrist/hand symptoms and signs in male and female car assembly workers.
Tech. rep. 1999, pp. 193–204. doi: 10.1016/S0169-8141(97)00054-1.
Appendix A Main program code
% KEX , SA118X
% This program runs through all .mat - files containing tightening data
% in this current folder and outputs tables for each file which contain
% estimatied values for mass , dampening constant and spring constant
% for 1DOF system and more.
% Each .mat -file is a set of three tightening intervals.
clc
clear all close all
%% Importing data
DataFiles = dir( fullfile (pwd ,'*.mat ')); % Looking for .mat files
for I = 1: length ( DataFiles ) % Goes through .mat - files in current folder
% Importing the datafiles
Import = load( DataFiles (I) .name );
% Saving tightening condition for current data file T_cond (:,I) = Info( Import.File_name );
% Importing the events vector as numerical values
Events = str2num (char( replace ( Import.Events (: ,3) ,',','.')));
% The following if - statements find the correct
% data files whether it 's QS or TT measurment :
% Importing the acceleration
if isfield (Import ,'angle_acc_Acc_FIR150 ')
Acc_import = double ( Import.angle_acc_Acc_FIR150 );
elseif isfield (Import ,'Data1_angle_acc_Acc_FIR150 ')
Acc_import = double ( Import.Data1_angle_acc_Acc_FIR150 );
end
% Importing the Torque pulse
if isfield (Import ,'Inline_Torque ')
Torque_import = double ( Import.Inline_Torque );
elseif isfield (Import ,'Inline ')
Torque_import = double ( Import.Inline );
elseif isfield (Import ,'Data1_Inline ')
Torque_import = double ( Import.Data1_Inline );
end
% Importing the force
if isfield (Import ,'F_op_J ')
Force_import = double ( Import.F_op_J );
elseif isfield (Import ,'Data1_F_op_J_FIR_Filter_OFFSET ')
Force_import = double ( Import.Data1_F_op_J_FIR_Filter_OFFSET );
else
Force_import = [];
end
%% Setup
% Defining vectors used in the program
GBoxFit = [];
good_or_bad_data = [];
Tightening_No = [];
m_a_est = [];
c_est = [];
k_est = [];
Torque_value = [];
Nfreq = [];
Time_Vector = zeros ( length ( Events )/3 ,1); % Defining the time vector
Ts = 0.0001 ; % Time step
% for -loop goes through each tightening (i) in current data file (I) for i = 1: length ( Events )/3
Time_Vector (i+1) = Events (i*3) - Events (i*3 -2) + Time_Vector (i);
% Defining the time positions
TP_start = round ( Time_Vector (i)/Ts + 1);
TP_end = round ( Time_Vector (i+1)/Ts);
TP_length = TP_end - TP_start ;
% Time vector
t = Ts. *( TP_start :1: TP_end ) ';
%% Defining values
% Values given from Atlas Copco
l_n = 0.470; % Length of nutdriver [m]
l_n2 = 0.330; % Lengt from point of rotation to hand [m]
m_n = 2.60; % Mass of the nutdriver [m]
% Defining the moment of inertia of the nutdriver
% Two different cases if isempty ( Force_import )
% 1) I_n measured without force transducer I_n = 0.15;
else
% 2) I_n measured with force transducer I_n = 0.275;
end
% Calcultaion the displacement with integration of the acceleration Acc = Acc_import ( TP_start : TP_end );
Vel = cumtrapz (t, Acc);
Dis = cumtrapz (t, Vel);
% Torque pulse vector
TPulse = Torque_import ( TP_start : TP_end );
% Rounding the max torque to the nearest 5 Nm Torque_value (i) = ( floor (max( TPulse )/5+ .5))*5;
% Imports force measured from force transducer , only for Quick Step if isfield (Import ,'F_op_J ')
Force = Import.F_op_J ( TP_start : TP_end );
else
Force = [];
end
%% Cropping and adjusting displacement data
% Define end cutoff time and start of torque pulse t_end = 0.3;
t0 = 1.48;
% Cutting of ends of data vectors thus only evaluating relevant data t([1: round (t0/Ts),round (( t0+ t_end )/Ts) :end ]) = [];
TPulse ([1: round (t0/Ts),round (( t0+ t_end )/Ts) :end ]) = [];
Dis ([1: round (t0/Ts),round (( t0+ t_end )/Ts) :end ]) = [];
Acc ([1: round (t0/Ts),round (( t0+ t_end )/Ts) :end ]) = [];
if isfield (Import ,'F_op_J ')
Force ([1: round (t0/Ts),round (( t0+ t_end)/Ts) :end ]) = [];
end
% Adjusting the data so that displacement is zero when pulse starts minpoints1 (1: round ( length (Dis)/3)) = ...
islocalmin (Dis (1: round ( length (Dis)/3)));
if all( minpoints1 (:) ==0) == false
minPos1 (i) = find( minpoints1 ,1,'first ')*Ts;
else
minPos1 (i) = 0 .0274 ; end
Off = Dis( round (( minPos1 (i))/Ts));
Dis = Dis - Off;
%% Sorting out bad ( rejected ) data
% There are two conditions that the determine whether the data is
% "good" ( selected ) or "bad" ( rejected ). Good data shows a diplacement
% that oscillates around a steady state. The displacement can go up (1)
% or down (2) to much.
% Data marked with zero means "good" ( selected ).
% 1) Marking data where the displacement goes up to much for ii = round (.1/Ts): length (Dis)
if(Dis(ii) <= 0) ii = length (Dis);
good_or_bad_data (i ,1) = 0;
break;
elseif ii == length (Dis)
good_or_bad_data (i ,1) = 1;
end end
% 2) Marking data where the displacement goes down to much if max(Dis) <= abs(min(Dis))
good_or_bad_data (i ,1) = 2;
else
good_or_bad_data (i ,1) = 0;
end
%% Method
% Matlab 's Greybox toolbox is used to approximate the parameters mass
% (m_a), spring constant (k) and dampening constant (c). This is done
% by curve fitting of the model with these parameters to given data.
% Identifying input data
data = iddata (Dis , TPulse , Ts);
% Defining initial parameter values , guessed values m_a = 1.76; % Mass of the arm and hand
k = 1837 .27; % Spring constant c = 38 .26; % Damping constant
% Defining parameters to be used in the system
parameters = {'mass of arm ', m_a; 'spring constant ', k; ...
'damping constant ', c; 'Distance rotation to hand ', l_n2; ...
'Tool moment of inertia ' I_n };
fcn_type = 'c'; % Continious function type
odefun = 'state_space_model ';
% Identifying initial greybox model
init_system = idgrey (odefun , parameters , fcn_type );
% Defining l_n2 and I_n as fixed parameters
init_system.Structure.Parameters (4) .Free = false ; init_system.Structure.Parameters (5) .Free = false ;
opt = greyestOptions ('InitialState ', 'zero ', 'Display ', 'On ');
opt.EnforceStability = true;
% Estimating parameter values
GboxResult = greyest (data , init_system , opt);
% Saving estimated parameter values
m_a_est (i) = GboxResult.Structure.Parameters (1) .Value ; k_est(i) = GboxResult.Structure.Parameters (2) .Value ; c_est(i) = GboxResult.Structure.Parameters (3) .Value ;
GBoxFit (i) = GboxResult.Report.Fit.FitPercent ; Tightening_No (i) = i;
%% Calculating the level of accuracy of the Euler method
% Defining m_a , k and c m_a = m_a_est (i);
k = k_est(i);
c = c_est(i);
% Validating that the system is lightly damped
% This is true when w0 > beta , which makes w_n a reell number > 0 w0 = sqrt(k/( m_a + m_n)); % Angular velocity
beta = c/(2*( m_a + m_n)); % Damping number
w_n = sqrt(w0 ^2 - beta ^2); % Angual velocity for the damped system
% If the parameter values does not create a valid 1DOF system , the data
% is marked as "bad data" category 3.
if isreal (w_n) == 0
good_or_bad_data (i) = 3;
end
% Importing the Euler method
[ theta_Euler_method , omega_Euler_method , alpha_Euler_method ] = ...
thetasolve (t, TPulse , m_a , k, c, l_n , l_n2 , I_n);
% Calculating the error between the Euler method and the given data error_term_values = abs(Dis - theta_Euler_method );
correct_value = mean(abs(Dis));
% Calculating the level of accuracy
error_term = (1- mean( error_term_values )/ correct_value ) *100;
%% Calculating the natural frequency of the hand -arm system
% Natural frequency undamped (is used in the analysis later ) Nfreq(i) = sqrt( k_est (i)/ m_a_est (i))/(2* pi);
% Natural frequency damped (for the whole system , including the tool) Nfreq_d (i) = sqrt ((2* pi)* Nfreq (i)^2- c_est(i)^2) /(2* pi);
%% Calculating the force on the hand arm system
% The angle theta and the angular velocity is given by the Euler method
% Force , F1 , theoretical equation from parameter values
F_1 = l_n2 *( c_est (i)* omega_Euler_method + k_est(i)* theta_Euler_method );
% Force , F2 , given from data ( torque pulse and angular acceleration ) F_2 = (1/ l_n2)*( TPulse -I_n*Acc);
% Force , F3 , calculated with acceleration given from the Euler method.
% Different acceleration compared with F2.
F_3 = (1/ l_n2)*( TPulse -I_n* alpha_Euler_method );
%% Plotting close all
% Tightening examples
figure ('Renderer ', 'painters ', 'Position ', [500 10 800 500]) subplot (2 ,2 ,1)
compare (data , GboxResult );
xlabel ('Time ', 'FontSize ',18);
ylabel ('Angular displacement [rad]', 'FontSize ',16);
title('Grey -box ', 'FontSize ',16) set(gca , 'FontSize ',14);
grid on
subplot (2 ,2 ,2)
plot(Ts:Ts:.3 -Ts ,Dis ,'LineWidth ',1.5 ,'Color ','# D95319 ') hold on
plot(Ts:Ts:.3 -Ts , theta_Euler_method ,'LineWidth ',1.5 , 'Color ','#0072 BD ') xlabel ('Time [s]', 'FontSize ',20);
ylabel ('Angular displacement [rad]', 'FontSize ',20);
set(gca , 'FontSize ',14);
legend ('Measured ', 'Simulated ') title('1 DOF Model ')
grid on
subplot (2 ,2 ,3)
plot(Ts:Ts:.3 -Ts , F_1 ,'LineWidth ',1.5);
grid on hold on
plot(Ts:Ts:.3 -Ts , F_2 ,'LineWidth ',1.5);
plot(Ts:Ts:.3 -Ts , F_3 ,'LineWidth ',1.5);
if isfield (Import ,'F_op_J ')
plot(Ts:Ts:.3 -Ts , Force ,'LineWidth ',1.5);
legend ('F_1 ','F_2 ','F_3 ','F\_op\_J ');
else
legend ('F_1 ','F_2 ','F_3 ');
end
title('Forces ')
xlabel ('Time [s]', 'FontSize ',20);
ylabel ('Force [N]', 'FontSize ',20);
set(gca , 'FontSize ',14);
hold off
subplot (2 ,2 ,4)
plot(Ts:Ts:.3 -Ts ,TPulse ,'Color ','# A2142F ','LineWidth ',1.5) title('Torque pulse ')
xlabel ('Time [s]', 'FontSize ',20);
ylabel ('Torque [Nm]', 'FontSize ',20);
set(gca , 'FontSize ',14);
grid on
% Un - comment the following if the figues should be saved with parameter
% values in the file name. Reqiures a folder " figures " in current fold.
% m_str = join (['m' num2str (m_a) ,'']);
% c_str = join (['c' num2str (c) ,'']);
% k_str = join (['k' num2str (k) ,'']);
% f_str = join (['f' num2str ( Nfreq (i)) ,'']);
% Name = strjoin ([ pwd '/ figures /' T_cond (I) 'No_ ' num2str (i) m_str ...
% c_str k_str f_str '.eps '],'');
% print (gcf , Name , '-depsc ')
end % Ends for -loop that goes through each tightening i
%% Displaying and saving the estimated values
M = [ Tightening_No ', GBoxFit ', m_a_est ', c_est ', k_est ',...
Torque_value ', good_or_bad_data , Nfreq '];
Tightening_Number = M(: ,1);
Level_of_accuracy = M(: ,2);
Mass_of_arm_and_hand = M(: ,3);
Damping_constant = M(: ,4);
Spring_constant = M(: ,5);
Torque = M(: ,6);
Good_or_bad_data = M(: ,7);
Natural_frequency = real(M(: ,8)); % Undamped frequency
T = table( Tightening_Number , Level_of_accuracy , ...
Mass_of_arm_and_hand , Damping_constant , Spring_constant , ...
Torque , Good_or_bad_data , Natural_frequency );
disp(join (['File conditions :' T_cond (:,I)]))
disp (['Number of tightenings with an accuracy above 90 % is ' ...
num2str ( height (T)) ' out of ' num2str ( length ( Events )/3) ...
' tightenings in total. ']);
disp(T)
T_struct (I) .Table = T;
T_struct (I) .Cond = T_cond (:,I);
end % Ends for -loop that goes through each data file I
%% Sorting the data to plot good or bad data
i_g = 1;
i_b = 1;
m_g = [];
m_b = [];
for ii = 1: length ( T_struct )
for i = 1: height ( T_struct (ii) .Table )
if table2array ( T_struct (ii) .Table (i,'Good_or_bad_data ')) == 0 ...
&& table2array ( T_struct (ii) .Table (i,'Level_of_accuracy ')) >= 90 ...
&& table2array ( T_struct (ii) .Table (i,'Mass_of_arm_and_hand ')) >= 0
m_g (1, i_g) = table2array ( T_struct (ii) .Table (i,'Mass_of_arm_and_hand '));
m_g (2, i_g) = table2array ( T_struct (ii) .Table (i,'Damping_constant '));
m_g (3, i_g) = table2array ( T_struct (ii) .Table (i,'Spring_constant '));
m_g (4, i_g) ...
= real( table2array ( T_struct (ii) .Table (i,'Natural_frequency ')));
i_g = i_g + 1;
else
m_b (1, i_b) = table2array ( T_struct (ii) .Table (i,'Mass_of_arm_and_hand '));
m_b (2, i_b) = table2array ( T_struct (ii) .Table (i,'Damping_constant '));
m_b (3, i_b) = table2array ( T_struct (ii) .Table (i,'Spring_constant '));
m_b (4, i_b) ...
= real( table2array ( T_struct (ii) .Table (i,'Natural_frequency ')));
i_b = i_b + 1;
end end end
for i = 1:4
% Mean and std:
% good data:
GorBstat (1,i) = mean(m_g(i ,:));
GorBstat (2,i) = std(m_g(i ,:));
% Bad data:
if isempty (m_b) == 0 % If no "bad" data is found , only "good" data GorBstat (3,i) = mean(m_b(i ,:)); % is analyzed GorBstat (4,i) = std(m_b(i ,:));
% all data:
GorBstat (5,i) = mean ([ m_g(i ,:) ,m_b(i ,:) ]);
GorBstat (6,i) = std ([ m_g(i ,:) ,m_b(i ,:) ]);
end end
%% Deleting rows with bad data
for i = 1: length ( DataFiles )
T_struct (i) .Table ( table2array (...
T_struct (i) .Table (:,'Level_of_accuracy ')) <=90 ,:) = [];
T_struct (i) .Table ( table2array (...
T_struct (i) .Table (:,'Good_or_bad_data '))~=0 ,:) = [];
T_struct (i) .Table ( table2array (...
T_struct (i) .Table (:,'Mass_of_arm_and_hand ')) <=0 ,:) = [];
end
%% Categorising the data of the different conditions QS_val = []; % Storing all values with QS: m, c, k, f
TT_val = []; % -"- TT -"-
for i = 1: length ( T_struct )
if isempty ( strfind ( T_struct (i).Cond ,'TT')) == 1
% QS
current_length = size(QS_val ,1);
data_length = ( height ( T_struct (i) .Table ));
QS_val = [ QS_val ; zeros ( data_length ,4) ];
QS_val (( current_length +1) :( current_length + data_length ) ,1) ...
= table2array ( T_struct (i) .Table (:,'Mass_of_arm_and_hand '));
QS_val (( current_length +1) :( current_length + data_length ) ,2) ...
= table2array ( T_struct (i) .Table (:,'Damping_constant '));
QS_val (( current_length +1) :( current_length + data_length ) ,3) ...
= table2array ( T_struct (i) .Table (:,'Spring_constant '));
QS_val (( current_length +1) :( current_length + data_length ) ,4) ...
= real( table2array ( T_struct (i) .Table (:,'Natural_frequency ')));
else
% TT
current_length = size(TT_val ,1);
data_length = ( height ( T_struct (i) .Table ));
TT_val = [ TT_val ; zeros ( data_length ,4) ];
TT_val (( current_length +1) :( current_length + data_length ) ,1) ...
= table2array ( T_struct (i) .Table (:,'Mass_of_arm_and_hand '));
TT_val (( current_length +1) :( current_length + data_length ) ,2) ...
= table2array ( T_struct (i) .Table (:,'Damping_constant '));
TT_val (( current_length +1) :( current_length + data_length ) ,3) ...
= table2array ( T_struct (i) .Table (:,'Spring_constant '));
TT_val (( current_length +1) :( current_length + data_length ) ,4) ...
= real( table2array ( T_struct (i) .Table (:,'Natural_frequency ')));
end end
HJ_val = []; % Storing all values with HJ: m, c, k, f
SJ_val = []; % -"- SJ -"-
for i = 1: length ( T_struct )
if isempty ( strfind ( T_struct (i).Cond ,'Soft ')) == 1
% HJ
current_length = size(HJ_val ,1);
data_length = ( height ( T_struct (i) .Table ));
HJ_val = [ HJ_val ; zeros ( data_length ,4) ];
HJ_val (( current_length +1) :( current_length + data_length ) ,1) ...
= table2array ( T_struct (i) .Table (:,'Mass_of_arm_and_hand '));
HJ_val (( current_length +1) :( current_length + data_length ) ,2) ...
= table2array ( T_struct (i) .Table (:,'Damping_constant '));
HJ_val (( current_length +1) :( current_length + data_length ) ,3) ...
= table2array ( T_struct (i) .Table (:,'Spring_constant '));
HJ_val (( current_length +1) :( current_length + data_length ) ,4) ...