Fatigue life is an extremely important factor during the exploitation of any machine. Its estimation requires an in-depth knowledge on the structure of the object, as well as conditions it will be exposed to. Although many industries, such as automotive (Reza Kashyzadeh, 2020), agricultural (Mattetti et al., 2012), or aerospace (Tavares & de Castro, 2017), use different standards for estimation and measurement of overall fatigue strength of a designed structure, the fundamental methods stay constant. The main idea is to predict the most probable time or number of cycles the structure can endure (Zhang et al., 2023). The prediction is mostly performed using data on statistical fatigue strength of a given material’s test sample. Depending on type of the analyzed material, expected scale and directions of loads, and other factors, multiple models of fatigue accumulation may be implemented.
In aviation, throughout the years, several methods of load prediction for the expected mission profiles were developed. In order to accelerate the initial design phase, engineers may use standardized load spectra. For instance, an analytically acquired block-spectra for sailplanes was published by Thielman, Franzmeyer in 1969 and was improved by work of Kossira, Reinke with experiment-based spectra in 1982 (Kossira & Reinke, 1989). However, as advised by works of Rodzewicz (Rodzewicz, 2007) and Kensche (Kensche, 2019), substantially better results may be achieved using dedicated spectra, based on flights of similar aircrafts with identical or comparable mission designs.
Given recent improvements in unmanned aerial vehicle (UAV) technology, as well as ongoing miniaturization of onboard inertial measuring units (IMU) and microcontroller units (MCU), it is possible to gather live data during the flights of aircrafts even lighter than 150 -g, such as Cinewhoops, which is a well-known device in the first-person view (FPV) drone-use community. Some of the popular operating systems for UAVs offer automated onboard sensor indications’ recording (
After gathering the data, a filtration must be applied to properly represent loads that could be reenacted on the analyzed structure by means of an experiment (Rodzewicz & Przekop, 2000) or a simulation (Maksimovic et al., 2021). In aircrafts, while some events and resulting accelerations may be treated as random (mainly gusts and landings), flight loads can be assumed as mostly deterministic (“Load Spectra”, 2009). This allows for use of time-based methods, instead of frequency-based ones, which are better suited for stochastic events. Historically in aviation the filtration was performed on the go, mostly due to memory limitations. The load history was stored as an array containing the number of discrete load level (LL) changes. Depending on the method used for detecting a cycle, as well as the format used for data storage, the array was called a halfcycle array or a full-cycle array. One of the most popular time-based filtration methods was the Rainflow Cycle Counting (RCC), as presented in work of Matsuichi, Endo (Matsuichi & Endo, 1968). It follows the locally extreme load values and counts the number of LL changes. The length of the half-cycle depends on previously detected cycles or the minimal LL encountered in a cycle. Its main advantage is robustness against irregularly increasing (or decreasing) LL, in which case classical load level difference counting would ignore low frequency high amplitude load changes.
Lastly, the influence of cycles endured is estimated using an application-specific material fatigue model. For metals and many other materials, estimation accuracy is satisfied by the Palmgren-Miner rule (Murakami, 2019), although other methods may be implemented for non-isotropic materials, such as textile composites (Lomov & Xu, 2015) or 3D prints. Combined with the half-cycle array, it enables a relatively low-cost computation-wise estimation of overall fatigue damage.
The main goal was to develop a software aiding fast and reliable preparation of a custom load spectra for a structure integrated into an aircraft. The processed data were to come from a real-time flight telemetry, collected by either ground station or saved in onboard memory. The data should be filtered and converted into a half-cycle array. The results of the software should consist of calculated load spectra as presented by Owczarek, Rodzewicz (Owczarek & Rodzewicz, 2009), as well as predicted fatigue lifetime of the structure.
The remainder of this paper is organized as follows: the forthcoming section contains assumptions made during the design phase of the software. Section 3 describes methods of problem analysis. Section 4 provides individual software module tests. The sample analysis results are discussed in Section 5. The paper is summarized with conclusions and further development possibilities in Section 6.
As stated in Section 1, the main goal of the project was to develop a software capable of aiding aircraft engineers in fatigue life calculations of designed structures. During the planning phase of the project, the Python 3 (Drake & Rossum, 2009) programing language was chosen, due to its multiplatform capabilities. The main assumptions of the project were as follows:
the available data come from a three-axis accelerometer set in the aircraft’s center of gravity, or is pre-processed to eliminate linear components of angular acceleration; the available data were recorded constantly, that is every pre-set time step, or were labeled with time of measurement; noise of the accelerometer is negligible in comparison to in-flight loads and does not impact the quality of recorded data; the data available were recorded in form of an array according to OpenTX documentation (Bernet, 2021); the time step between consecutive data points is no longer than 1/12 of the period of significant loads (Bathe, 2014); dimensions of the analyzed component, as well as stress induced by acceleration field during a flight, are known; critical loads assumed during the aircraft’s design are known; data on material fatigue characteristics are known and defined by an array of decimal logarithm of number of load cycles, sample mean stress, and decimal logarithm of stress amplitude; and some data points of the load records are available for readings calibration.
The forthcoming section describes the means of achieving the goals described earlier.
During the program execution, three main problems are resolved:
filtration of the available data, half-cycle array computation, and fatigue lifetime calculation of the analyzed components.
The methods of solving the above are presented in the forthcoming subsections.
In terms of fatigue damage level calculation, it is useful to convert the direct log of accelerations into a Markov array (Kossira & Reinke, 1989). Historically in aviation it is a two-dimensional array with a size of 32 columns by 32 rows. In order to create it, the time-based data must be filtered by extreme values and transformed from accelerations to LLs (Rodzewicz, 2007). An example of the available data array is shown in Table 1.
Example of telemetry log used in calculations
Date | Time | Hdg(@) | Ptch | Roll | AccX(g) | RSSI(dB) | AccY(g) | AccZ(g) |
---|---|---|---|---|---|---|---|---|
2021-10-10 | 16:27:29.650 | 178.60 | 65.6 | -17.0 | -0.06 | 82 | -0.02 | 0.05 |
2021-10-10 | 16:27:29.850 | 178.60 | 65.6 | -17.0 | -0.06 | 87 | -0.02 | 0.05 |
2021-10-10 | 16:27:30.050 | 186.60 | 49.7 | 0.5 | -0.09 | 70 | -0.02 | 0.05 |
2021-10-10 | 16:27:30.250 | 186.60 | 49.7 | 0.5 | -0.09 | 70 | -0.09 | 0.14 |
2021-10-10 | 16:27:30.450 | 202.10 | 49.7 | 0.5 | -0.09 | 80 | -0.09 | 0.14 |
2021-10-10 | 16:27:30.650 | 202.10 | 28.9 | 8.5 | -0.07 | 85 | -0.11 | 0.21 |
2021-10-10 | 16:27:30.850 | 202.10 | 28.9 | 8.5 | -0.07 | 85 | -0.11 | 0.21 |
2021-10-10 | 16:27:31.050 | 233.70 | 23.1 | 28.5 | -0.02 | 90 | -0.08 | 0.19 |
2021-10-10 | 16:27:31.250 | 233.70 | 23.1 | 28.5 | -0.02 | 90 | -0.08 | 0.19 |
2021-10-10 | 16:27:31.450 | 273.10 | 40.2 | 28.5 | -0.02 | 87 | -0.08 | 0.19 |
2021-10-10 | 16:27:31.650 | 273.10 | 40.2 | 44.1 | 0.00 | 87 | -0.03 | 0.17 |
2021-10-10 | 16:27:31.850 | 273.10 | 40.2 | 44.1 | 0.00 | 80 | -0.03 | 0.17 |
2021-10-10 | 16:27:32.050 | 295.70 | 54.7 | 41.5 | 0.00 | 87 | -0.01 | 0.09 |
2021-10-10 | 16:27:32.250 | 295.70 | 54.7 | 41.5 | 0.00 | 87 | -0.01 | 0.09 |
2021-10-10 | 16:27:32.450 | 328.70 | 59.7 | 34.9 | 0.00 | 90 | -0.01 | 0.09 |
The filtration begins with normalization of the logged accelerations. According to Assumption 9 described in Section 2, the available data should be appended with a calibration set of accelerations
Example of logged data before [Frame 1] and after [Frame 2] normalization.
The next step of the filtration is computation of LLs based on load factors calculated earlier. According to Assumption 7, the critical load factors of the aircraft are known. With such information it is possible to calculate a (
Data from Figure 3.1b transformed by Eq. (3.2) for (
Example of logged data after transformation to load levels.
Knowing the LLs during the flight, it is possible to filter out non-extreme values from the log. The filtration may be performed by analysis of LL gradient sign. When the derivative of (
The block flow diagram of extreme values filter (EVF) is shown in Figure 3.3 and an example of filtered data is shown in Figure 3.4.
Block flow diagram of extreme values filter.
Example of extreme values filtration results.
With the filtered set of extreme values, it is possible to calculate the half-cycle array.
Based on the advice provided in the work of Owczarek, Rodzewicz (Owczarek & Rodzewicz, 2009), the RCC (Tavares & de Castro, 2017) method was used during the preparation of a half-cycle array. The main idea behind RCC is to count “streams” flowing down the LL extremes time-wise. Each stream begins in a consecutive extreme LL (source) and is broken if any of the following conditions is met:
a source of a deeper extremum exists ( or a stream of higher extreme LL already flows through the current stream position (the end of the stream is set to the LL of an older stream that has been met).
With the above set of rules it is possible to prepare a recursive algorithm for the RCC method. A block flow diagram of the algorithm and its results are shown in Figures 3.5 and 3.6, respectively.
Block flow diagram of the Rainflow Cycle Counting method.
Example of stream generation in the Rainflow Cycle Counting method.
The computed streams can then be saved as vectors of source and end LLs:
Example of active zone in half-cycle array.
LL | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
25 | 1 | 0 | 2 | 0 | 2 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | x | 0 |
24 | 0 | 1 | 2 | 2 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | x | 1 | 0 |
23 | 0 | 1 | 2 | 2 | 1 | 3 | 0 | 4 | 2 | 1 | 0 | 1 | 0 | 0 | 3 | x | 2 | 1 | 0 |
22 | 0 | 1 | 0 | 0 | 1 | 3 | 5 | 7 | 2 | 1 | 2 | 1 | 1 | 2 | x | 3 | 0 | 1 | 0 |
21 | 0 | 0 | 0 | 0 | 2 | 0 | 3 | 8 | 10 | 8 | 13 | 10 | 5 | x | 2 | 0 | 0 | 0 | 0 |
20 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 3 | 5 | 10 | 30 | 53 | x | 5 | 1 | 0 | 0 | 0 | 0 |
19 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 7 | 29 | x | 52 | 10 | 1 | 1 | 0 | 1 | 0 |
18 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 3 | 3 | 8 | x | 29 | 31 | 12 | 3 | 0 | 0 | 0 | 0 |
17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | x | 8 | 7 | 10 | 8 | 1 | 1 | 0 | 0 | 0 |
16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | x | 1 | 3 | 0 | 5 | 11 | 2 | 1 | 1 | 1 | 0 |
15 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | x | 0 | 0 | 3 | 2 | 3 | 8 | 7 | 4 | 1 | 1 | 0 |
14 | 0 | 0 | 0 | 0 | 0 | 0 | x | 1 | 0 | 0 | 1 | 1 | 0 | 3 | 5 | 0 | 1 | 0 | 0 |
13 | 0 | 0 | 0 | 0 | 0 | x | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | 3 | 2 | 1 | 0 |
12 | 0 | 0 | 0 | 1 | x | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 1 | 0 | 2 | 0 |
11 | 0 | 0 | 0 | x | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 0 | 0 |
10 | 0 | 0 | x | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 0 | 2 | 2 |
9 | 0 | x | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
8 | x | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
The resulting half-cycle array [
In order to acquire an estimated time of the designed structure’s fatigue life, a specific deconstruction of the half-cycle array must be performed. First, the LLs must be converted back into load factors using the inverse linear function according to Eq. (3.2):
Next, a load factor array is prepared by computing for each non-zero half-cycle array cell:
According to Assumption 6 from Section 2, the mean stress value for the
Having calculated stress matrices, it is now possible to compute the maximum number of cycles for each non-zero cell of the half-cycle array [
The software compensates for lack of information using a linear approximation between the lines of material constant mean stress (as shown in Figure 3.7). The maximal number of cycles is calculated with:
Approximation process of the number of cycles N for uncharacteristic argument.
Having calculated both the half-cycle array and the maximum number of cycles matrix, it is now possible to calculate the fatigue level matrix:
The overall fatigue level may then be calculated using the Palmgren-Miner rule as a sum of all elements of matrix
The forthcoming section describes methods of testing the described algorithms.
It is useful to prove the validity of a new software’s submodules before performing complete testing. The developed tool consists of three components – the aforementioned EVF, stream generator (SG), and array generator (AG). Each of the submodules performs calculations according to the rules and equations specified in Section 3.
The most important factor of data preparation is correctly filtering extreme values for use in half-cycle array. The EVF submodule should return only local extremes of LLs without considering regions of zero LL difference. Due to its implementation, the module is expected to find only the last extreme point before a change of derivative sign. Values returned are expected to be integers between 1 and 32.
The validation was performed on three sets of logged LLs by comparing the input with the results of the filtration. All three sections have shown correct behavior of computed polylines. Test 3 seems to be of significant importance as it contains multiple steps of little LL difference; however, the local extremes are found correctly. The tests are visualized in Figures 4.1–4.3.
First test zone of EVF.
Second test zone of EVF.
Third test zone of EVF.
In order to validate the SG submodule, generated streams were imposed on points of extreme LLs from Subsection 4.1. The expected behavior of streamlines was specified in Subsection 3.2. The tests were visualized in a manner similar to that adopted in Subsection 4.1, as portrayed in Figures 4.4–4.6. They show the streams following the specified rules, with the exception of Test 3, where streams with sources at Points 180 and 194 are broken seemingly without a cause. This is, however, a limitation of the visualization method, as the global chart shows the streams are blocked by at least one older stream (as shown in Figure 4.7).
First test zone of generated streams.
Second test zone of generated streams.
Third test zone of generated streams.
Global view on third test zone of generated streams.
The last step of submodule validation was to analyze the generated arrays based on characteristics deduced from Section 3.3:
values of the [ values of the [ values of the [ the active zones of all of the matrices should have equal length of vertical and horizontal dimensions, the diagonal of each matrix should have only 0 values.
Examples of active zones of computed matrices are shown in Tables 4.1–4.3. Each of the generated arrays complies with the above expectations. Based on these findings, it is assumed that all of the submodules are implemented correctly, and accordingly, full software testing may be performed.
The forthcoming section describes a full test on real-life data.
Active zone of matrix.
LL | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
27 | 1,456 | 0 | 1,199 | 0 | 0,942 | 0,814 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
26 | 0 | 1,456 | 0 | 0 | 0 | 0,942 | 0,814 | 0,685 | 0 | 0 | 0 | 0,171 | 0 | 0 | -0,214 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
25 | 0 | 0 | 0 | 1,327 | 0 | 1,071 | 0 | 0 | 0,685 | 0,557 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -0,471 | 0 | 0 | 0 | 0 | 0 |
24 | 0 | 1,713 | 0 | 1,456 | 1,327 | 1,199 | 1,071 | 0 | 0,814 | 0,685 | 0,557 | 0 | 0,300 | 0 | 0 | 0 | 0 | 0 | -0,471 | 0 | 0 | 0 | 0 |
23 | 0 | 0 | 0 | 1,584 | 1,456 | 0 | 1,199 | 1,071 | 0,942 | 0,814 | 0,685 | 0,557 | 0 | 0 | 0 | 0,043 | 0 | 0 | 0 | 0 | -0,599 | -0,728 | 0 |
22 | 0 | 0 | 0 | 0 | 0 | 1,456 | 1,327 | 0 | 1,071 | 0,942 | 0,814 | 0,685 | 0,557 | 0,428 | 0,300 | 0,171 | 0,043 | 0 | -0,214 | -0,343 | 0 | 0 | 0 |
21 | 0 | 0 | 0 | 0 | 1,713 | 0 | 1,456 | 1,327 | 0 | 1,071 | 0,942 | 0,814 | 0,685 | 0,557 | 0,428 | 0,300 | 0 | 0,043 | -0,086 | 0 | 0 | 0 | 0 |
20 | 0 | 0 | 0 | 0 | 1,841 | 0 | 0 | 1,456 | 0 | 0 | 1,071 | 0,942 | 0,814 | 0,685 | 0,557 | 0 | 0,300 | 0,171 | 0,043 | 0 | -0,214 | 0 | 0 |
19 | 0 | 0 | 0 | 0 | 0 | 1,841 | 1,713 | 1,584 | 1,456 | 0 | 1,199 | 1,071 | 0,942 | 0,814 | 0 | 0,557 | 0,428 | 0,300 | 0 | 0 | 0 | -0,214 | 0 |
18 | 0 | 0 | 0 | 0 | 0 | 1,970 | 0 | 0 | 0 | 0 | 1.327 | 1,199 | 1,071 | 0 | 0.814 | 0.685 | 0,557 | 0,428 | 0,300 | 0 | 0 | 0 | 0 |
17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,327 | 0 | 1,071 | 0,942 | 0,814 | 0,685 | 0,557 | 0,428 | 0,300 | 0 | 0 | 0 |
16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,071 | 0,942 | 0,814 | 0,685 | 0,557 | 0,428 | 0,300 | 0 | 0 |
15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,456 | 1,327 | 1,199 | 1,071 | 0,942 | 0,814 | 0,685 | 0,557 | 0 | 0,300 | 0 |
14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,327 | 0 | 1,071 | 0,942 | 0,814 | 0 | 0,557 | 0 | 0 |
13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,327 | 0 | 1,071 | 0,942 | 0,814 | 0,685 | 0 | 0 |
12 | 0 | 0 | 3,126 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,327 | 1,199 | 0 | 0,942 | 0,814 | 0 | 0 |
11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2,612 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,327 | 0 | 1,071 | 0,942 | 0,814 | 0 |
10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,327 | 0 | 1,071 | 0,942 | 0,814 |
9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,456 | 0 | 1,199 | 0 | 0,942 |
8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,584 | 0 | 1,327 | 0 | 0 |
7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,327 | 1,199 |
6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,713 | 0 | 0 | 0 |
5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,713 | 0 | 0 |
Active zone of [
LL | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | la | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
27 | 2.826 | 0 | 2,569 | 0 | 2,312 | 2,184 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
26 | 0 | 2,569 | 0 | 0 | 0 | 2,055 | 1,927 | 1,798 | 0 | 0 | 0 | 1,285 | 0 | 0 | 0,899 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
25 | 0 | 0 | 0 | 2,184 | 0 | 1,927 | 0 | 0 | 1,542 | 1,413 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0,385 | 0 | 0 | 0 | 0 | 0 |
24 | 0 | 2,312 | 0 | 2,055 | 1,927 | 1,798 | 1,670 | 0 | 1,413 | 1,285 | 1,156 | 0 | 0,899 | 0 | 0 | 0 | 0 | 0 | 0,128 | 0 | 0 | 0 | 0 |
23 | 0 | 0 | 0 | 1,927 | 1,798 | 0 | 1,542 | 1,413 | 1,285 | 1,156 | 1,028 | 0,899 | 0 | 0 | 0 | 0,385 | 0 | 0 | 0 | 0 | 0,257 | 0,385 | 0 |
22 | 0 | 0 | 0 | 0 | 0 | 1,542 | 1,413 | 0 | 1,156 | 1,028 | 0,899 | 0,771 | 0,642 | 0,514 | 0,385 | 0,257 | 0,128 | 0 | 0,128 | 0,257 | 0 | 0 | 0 |
21 | 0 | 0 | 0 | 0 | 1,542 | 0 | 1,285 | 1,156 | 0 | 0,899 | 0,771 | 0,642 | 0,514 | 0,385 | 0,257 | 0,128 | 0 | 0,128 | 0,257 | 0 | 0 | 0 | 0 |
20 | 0 | 0 | 0 | 0 | 1,413 | 0 | 0 | 1,028 | 0 | 0 | 0,642 | 0,514 | 0,385 | 0,257 | 0,128 | 0 | 0,128 | 0,257 | 0,385 | 0 | 0,642 | 0 | 0 |
19 | 0 | 0 | 0 | 0 | 0 | 1,156 | 1,028 | 0,899 | 0,771 | 0 | 0,514 | 0,385 | 0,257 | 0,128 | 0 | 0,128 | 0,257 | 0,385 | 0 | 0 | 0 | 0,899 | 0 |
18 | 0 | 0 | 0 | 0 | 0 | 1,028 | 0 | 0 | 0 | 0 | 0,385 | 0,257 | 0,128 | 0 | 0,128 | 0,257 | 0,385 | 0,514 | 0.642 | 0 | 0 | 0 | 0 |
17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0,128 | 0 | 0,128 | 0,257 | 0,385 | 0,514 | 0,642 | 0,771 | 0,899 | 0 | 0 | 0 |
16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0,385 | 0,514 | 0,642 | 0,771 | 0,899 | 1,028 | 1,156 | 0 | 0 |
15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0,257 | 0,385 | 0,514 | 0,642 | 0,771 | 0,899 | 1,028 | 1,156 | 0 | 1,413 | 0 |
14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0,642 | 0 | 0,899 | 1,028 | 1,156 | 0 | 1,413 | 0 | 0 |
13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0,899 | 0 | 1,156 | 1,285 | 1,413 | 1,542 | 0 | 0 |
12 | 0 | 0 | 0,642 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,156 | 1,285 | 0 | 1,542 | 1,670 | 0 | 0 |
11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0,128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,413 | 0 | 1,670 | 1,798 | 1,927 | 0 |
10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,670 | 0 | 1,927 | 2,055 | 2,184 |
9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,798 | 0 | 2,055 | 0 | 2,312 |
8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,927 | 0 | 2,184 | 0 | 0 |
7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2,441 | 2,569 |
6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2,312 | 0 | 0 | 0 |
5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2,569 | 0 | 0 |
Active zone of [
11 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
27 | 5016 | 0 | 9323 | 0 | 18880 | 27888 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
26 | 0 | 6867 | 0 | 0 | 0 | 29520 | 45552 | 72734 | 0 | 0 | 0 | 739650 | 0 | 0 | 8777566 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
25 | 0 | 0 | 0 | 13948 | 0 | 31222 | 0 | 0 | 135688 | 242254 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1238567291 | 0 | 0 | 0 | 0 | 0 |
24 | 0 | 6971 | 0 | 14323 | 21400 | 33011 | 52788 | 0 | 153650 | 283687 | 559374 | 0 | 2816397 | 0 | 0 | 0 | 0 | 0 | 363061881753 | 0 | 0 | 0 | 0 |
23 | 0 | 0 | 0 | 14668 | 22239 | 0 | 57012 | 97452 | 175690 | 337414 | 699601 | 1595342 | 0 | 0 | 0 | 260105776 | 0 | 0 | 0 | 0 | 15664059809 | 2702740887 | 0 |
22 | 0 | 0 | 0 | 0 | 0 | 36956 | 61809 | 0 | 203528 | 409747 | 903678 | 2239961 | 6489824 | 23452051 | 119196963 | 1112010656 | 44006761878 | 0 | 126400861458 | 6485934196 | 0 | 0 | 0 |
21 | 0 | 0 | 0 | 0 | 23955 | 0 | 67384 | 122768 | 0 | 511886 | 1220828 | 3379409 | 11549092 | 54623608 | 460444357 | 15321059277 | 0 | 44006761878 | 2685596385 | 0 | 0 | 0 | 0 |
20 | 0 | 0 | 0 | 0 | 24864 | 0 | 0 | 140556 | 0 | 0 | 1759740 | 5687415 | 25032002 | 190653754 | 5334063388 | 0 | 15321059277 | 1112010656 | 260105776 | 0 | 45963108 | 0 | 0 |
19 | 0 | 0 | 0 | 0 | 0 | 44669 | 82322 | 164245 | 362646 | 0 | 2800799 | 11471251 | 78942989 | 1857066911 | 0 | 5334063388 | 460444357 | 119196963 | 0 | 0 | 0 | 8777566 | 0 |
18 | 0 | 0 | 0 | 0 | 0 | 48215 | 0 | 0 | 0 | 0 | 5256855 | 32687505 | 646542282 | 0 | 1857066911 | 190653754 | 54623608 | 23452051 | 12463071 | 0 | 0 | 0 | 0 |
17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 225095240 | 0 | 646542282 | 78942989 | 25032002 | 11549092 | 6489824 | 4109855 | 2816397 | 0 | 0 | 0 |
16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 11471251 | 5687415 | 3379409 | 2239961 | 1595342 | 1194495 | 927346 | 0 |
15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 13534742 | 5256855 | 2800799 | 1759740 | 1220828 | 903678 | 699601 | 559374 | 0 | 381954 | 0 |
14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 916340 | 0 | 511886 | 409747 | 337414 | 0 | 242254 | 0 | 0 |
13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 289957 | 0 | 203528 | 175690 | 153650 | 135688 | 0 | 0 |
12 | 0 | 0 | 9513 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 122768 | 108806 | 0 | 87954 | 79823 | 0 | 0 |
11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1151365 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 61809 | 0 | 52788 | 49000 | 45552 | 0 |
10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 34910 | 0 | 31222 | 29520 | 27888 |
9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 22239 | 0 | 20563 | 0 | 18880 |
8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 14668 | 0 | 13948 | 0 | 0 |
7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 9535 | 9323 |
6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6971 | 0 | 0 | 0 |
5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | j | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5058 | 0 | 0 |
Knowing that each of the main submodules works correctly, it is possible to test the complete software by analyzing real-life data. Due to a lack of third party data for result comparison, the output was validated against the rules specified in previous sections.
During the tests, an aluminum sample with a static load of
Material fatigue characteristics of aluminum used in analyzed component.
( |
||
---|---|---|
0 | 3,3 | 2,2551 |
0 | 7 | 1,4699 |
34 | 3,3 | 2,1954 |
34 | 7 | 1,228 |
69 | 3,3 | 2,1138 |
69 | 7 | 1,1087 |
103 | 3,3 | 2,0761 |
103 | 7 | 1,0333 |
138 | 3,3 | 2,0384 |
138 | 7 | 0,9516 |
207 | 3,3 | 1,9913 |
207 | 7 | 0,8323 |
A log of computed LLs is visualized in Figure 5.1. The log does not comply with the assumption of continuous acceleration sampling; however, the available data are labelled with exact time stamps of measurements.
Visualization of filtered load levels in function of time.
The visualization of the generated RCC streams (Figures 5.2 and 5.3) was divided into odd and even streams for improved readability. The results show coherence with earlier tests, with acquired streams following the rules specified in Subsection 3.2. In order to further improve the readability of the following diagrams, index of sample was used instead of time stamp.
Even RCC streams.
Odd RCC streams.
Based on the above results, the software calculated half-cycle array [
Active zone of generated half-cycle array [
LL | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
25 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
24 | 0 | 0 | 1 | 0 | 2 | 0 | 2 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
23 | 0 | 1 | 0 | 1 | 2 | 2 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 1 | 0 |
22 | 0 | 0 | 0 | 1 | 2 | 2 | 1 | 3 | 0 | 4 | 2 | 1 | 0 | 1 | 0 | 0 | 3 | 0 | 2 | 1 | 0 |
21 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 3 | 5 | 7 | 2 | 1 | 2 | 1 | 1 | 2 | 0 | 3 | 0 | 1 | 0 |
20 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 3 | 8 | 10 | 8 | 13 | 10 | 5 | 0 | 2 | 0 | 0 | 0 | 0 |
19 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 3 | 5 | 10 | 30 | 53 | 0 | 5 | 1 | 0 | 0 | 0 | 0 |
18 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 7 | 29 | 0 | 52 | 10 | 1 | 1 | 0 | 1 | 0 |
17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 3 | 3 | 8 | 0 | 29 | 31 | 12 | 3 | 0 | 0 | 0 | 0 |
16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 8 | 7 | 10 | 8 | 1 | 1 | 0 | 0 | 0 |
15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 3 | 0 | 5 | 11 | 2 | 1 | 1 | 1 | 0 |
14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 3 | 2 | 3 | 8 | 7 | 4 | 1 | 1 | 0 |
13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 3 | 5 | 0 | 1 | 0 | 0 |
12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | 3 | 2 | 1 | 0 |
11 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 1 | 0 | 2 | 0 |
10 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 0 | 0 |
9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 0 | 2 | 2 |
8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
The active zone of the fatigue level matrix [
Active zone of the fatigue level matrix [
LL | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
25 | 0.000198 | 0 | 0,000103 | 7.17E-05 | 4,86E-05 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
24 | 0 | 0 | 0,000101 | 0 | 9.35E-05 | 0 | 3,79E-05 | 1,14E-05 | 0 | 3,53E-06 | 1,79E-06 | 0 | 0 | 1,33E-07 | 0 | 0 | 1,76E-09 | 1,54E-10 | 2,75E-12 | 0 | 0 |
23 | 0 | 0,000143 | 0 | 6,82E-05 | 8.99E-05 | 5,73E-05 | 0 | 1,03E-05 | 5,69E-06 | 2,96E-06 | 1,43E-06 | 0 | 0 | 0 | 0 | 0 | 0 | 1,58E-11 | 0 | 2,75E-12 | 0 |
22 | 0 | 0 | 0 | 6,67E-05 | 8,56E-05 | 5,41E-05 | 1,62E-05 | 2,76E-05 | 0 | 9,76E-06 | 2,21E-06 | 4,46E-07 | 0 | 4,26E-08 | 0 | 0 | 6,82E-11 | 0 | 1,58E-11 | 1,54E-10 | 0 |
21 | 0 | 0 | 0 | 6,55E-05 | 0 | 0 | 1.48E-05 | 2.44E-05 | 2.08E-05 | 1,37E-05 | 1,64E-06 | 2,96E-07 | 1,73E-07 | 1,83E-08 | 2,17E-09 | 1.31E-10 | 0 | 6.82E-11 | 0 | 1,76E-09 | 0 |
20 | 0 | 0 | 0 | 0 | 0 | 0 | 2,70E-05 | 0 | 1,03F-05 | 1,20F-05 | 5,68F-06 | 1,41F-06 | 5,19F-07 | 5,25F-08 | 9,37F-10 | 0 | 1,31E-10 | 0 | 0 | 0 | 0 |
19 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6,09E-06 | 0 | 3,27E-06 | 1,79E-06 | 8,72E-07 | 3,80E-07 | 2,85E-08 | 0 | 9.37E-10 | 2.17E-09 | 0 | 0 | 0 | 0 |
18 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2,10E 06 | l,45E06 | 0 | 2,14E07 | 4,49E 08 | 0 | 2,80E08 | 5,25E08 | 1,83E08 | 4,26E08 | 0 | l,33E07 | 0 |
17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,47E-06 | 1,25E-06 | 2,22E-07 | 3,55E-08 | 0 | 4,49E-08 | 3,93E-07 | 4,79E-07 | 2,60E-07 | 0 | 0 | 0 | 0 |
16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,28E-08 | 0 | 3,55E-08 | 2,14E-07 | 8,72E-07 | 1,41E-06 | 2,96E-07 | 4,46E-07 | 0 | 0 | 0 |
15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,28E-08 | 2,22E-07 | 0 | 1,79E-06 | 6,25E-06 | 1,64E-06 | 1,11-06 | 1,43E-06 | 1,79E-06 | 0 |
14 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,05E-07 | 0 | 0 | 0 | 1,25E-06 | 1,45E-06 | 3,27E-06 | 1,20E-05 | 1,37E-05 | 9,76E-06 | 2,96E-06 | 3,53E-06 | 0 |
13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1,05E-07 | 0 | 0 | 1,47E-06 | 2,10E-06 | 0 | 1,03E-05 | 2,08E-05 | 0 | 5,69E-06 | 0 | 0 |
12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6,09E-06 | 0 | 1,63E-05 | 2,76E-05 | 2,05E-05 | 1,14E-05 | 0 |
11 | 0 | 0 | 0 | 0 | 0 | 2,49E-06 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2,70E-05 | 1,48E-05 | 1,62E-05 | 0 | 3,79E-05 | 0 |
10 | 0 | 0 | 0 | 0 | 0 | 0 | 2,49E-06 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5,41E-05 | 5.73E-05 | 0 | 0 |
9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0,000130 | 0 | 9,35E-05 | 9.73E-05 |
8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 06,55E-05 | 6,67E-05 | 6,82E-05 | 0 | 7,71E-05 |
7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000101 | 0.000103 |
6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000143 | 0 | 0 |
5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000200 | 0 | 0 |
The overall fatigue level of the analyzed object after 20 min of loads shown in Figure 5.1 is estimated to be
The main goal of the project was to develop a tool aiding engineers in fatigue lifetime calculations, based on real-life data collected during exploitation of an aircraft. The software was supposed to perform automatic transformation of telemetry logs to custom load spectra and estimated fatigue level, which was then to be recalculated to hourly fatigue lifetime. The input data were supposed to consist of flight log formatted according to the OpenTX telemetry standard and an array of discrete material fatigue data based on experiments.
The paper describes methods, algorithms, and validation of implemented software modules used in calculations, as well as the results of test data analysis. The test data consisted of accelerations imposed on an aluminum sample simulating a pin of a camera mounting on a typical sport UAV during flight according to the Polish NSTS-06 rules. The results show high coherence with all of expectations stated during the algorithm design phase, which suggests that the estimations have been computed correctly.
The results of the analysis show rather a low fatigue lifetime of the sample. However, it is important to emphasize that during the test flights, high-G acrobatics were abundantly performed, which significantly influences the overall load spectra of the aircraft. Moreover, the tests represent a relatively short sample size. In order to prepare full custom load spectra, the test flights should represent real-life situations as much as possible. To adequately estimate fatigue lifetime of the sample, further tests must be performed.
A strong advantage of this software is its multiplatform approach, with a focus on the requirements for the computational power and memory needed during calculations to remain low. This means the developed software could be used on mobile platforms for live data gathering and analysis. It would require integration of the pre-processing submodule, eliminating the effects of being placed outside of the center of gravity. This approach could provide a highly augmented view on fatigue levels in both small UAVs and manned aircrafts.
Further project development should also focus on extrapolation of half-cycle arrays. This approach could provide a view on a higher range of loads, sometimes very hard, problematic, or dangerous to invoke in real-life testing.