# Time-Jerk optimal Trajectory Planning of Industrial Robots Based on a Hybrid WOA-GA Algorithm

^{*}

## Abstract

**:**

## 1. Introduction

## 2. Problem Formulation

## 3. Proposed Method

#### 3.1. Multiple B-Splines

_{i}is the ith control points of the B-spline, k is the degree of the B-spline, N

_{i}

_{,k}(u) is the ith basis function of the kth order B-spline, n is the total number of the control points and u is the normalized knot vector variable. N

_{i}

_{,k}(u) can be obtained using the Cox–de Boor recursion formula.

**t**corresponding to the designed points [16].

#### 3.2. Whale Optimization Algorithm

#### 3.2.1. Encircling Prey

**A**and

**C**are coefficient vectors,

**X**

^{best}is the current best-so-far solution,

**X**is an individual, g is the current iteration and | | denotes the absolute value.

**A**and

**C**are calculated as follows.

**a**is linearly decreased from 2 to 0 over the iterations and

**r**is a random set in [0, 1].

**A**and a random number Po, where Po is a random number in [0, 1]. For each individual, if Po < 0.5 and |

**A**| < 1, the position is updated by encircling prey.

#### 3.2.2. Bubble-Net Attacking Phase

#### 3.2.3. Searching for Prey

**A**| ≥ 1, the individuals need to expand their exploration areas. This phase uses a randomly generated set of solutions

**X**

^{rand}to update the individuals’ locations, which allow the WOA algorithm to perform a global search. The rules of the update solution are as follows.

#### 3.3. Genetic Algorithm

#### 3.4. Proposed Hybrid WOA-GA Algorithm

- Step 1: Define the initial parameters, such as Pop_quantity, MaxGen, Pc, Pm and Er. Then, an initial population is obtained randomly.
- Step 2: Calculate the fitness value of each individual using Equation (1) and find
**X**^{global_best}and**X**^{local_best}. - Step 3: Update the populations by WOA. If Po < 0.5 and |
**A**| < 1, individuals are updated by encircling prey using Equations (9)–(11). If Po < 0.5 and |**A**| ≥ 1, individuals are updated by searching for prey using Equation (13). If Po > 0.5, individuals are updated by bubble-net attacking using Equation (12). - Step 4: Update the binary-encoded population by GA. Roulette wheel selection method, single-point crossover and bitwise mutation are utilized in the corresponding operators.
- Step 5: Calculate the fitness value of each individual and update
**X**^{global_best}and**X**^{local_best}. - Step 6: If t < MaxGen, then t = t + 1, update
**a**,**A**,**C**, m, b and Po, and return to step 3. If t = MaxGen, then the best fitness and**X**^{global_best}are obtained.

## 4. Results and Discussion

_{i}

^{best}is the best-so-far feasible solution obtained in the ith run and Nr is the number of runs. Note that the smaller the values of MEAN and STD, the more reliable and stable the solutions that the algorithm can provide [34].

#### 4.1. Application 1: WOA-GA for Test Functions

_{1}–F

_{2}), variable-dimension multimodal (F

_{3}–F

_{4}) and fixed-dimension multimodal (F

_{5}–F

_{6}) benchmarks. Table 4 shows the details of the test functions. Note that only one optimal solution exists in the unimodal functions to evaluate the convergence rate and exploitation capacity of the algorithm, and a global optimal solution with several local ones exist in the multimodal functions to evaluate the exploration capacity of the algorithm. For each test function, WOA-GA was performed 20 times as well as WOA, GA, IWOA-PSO and ACS. For all algorithm, the test population size and the maximum iteration were set to 30 and 500, respectively.

_{1}and F

_{2}. Table 6 reports the statistical results for the variable-dimension multimodal and fixed-dimension multimodal functions. WOA-GA can obtain the near-optimal solution for F

_{3}and F

_{4}, and the global optimal solution for F

_{5}and F

_{6}. Table 5 and Table 6 indicate that WOA-GA has advantages in global searching and can prevent falling into a local optimum, and demonstrate that WOA-GA is competitive with other algorithms. Hence, although the time consumption is high, the proposed WOA-GA can provide good exploration and exploitation capabilities.

#### 4.2. Application 2: WOA-GA for Time-Optimal Trajectory Planning Problem

_{T}and w

_{J}were set as 0.9999 and 0.0001 to achieve the trade-off between two objectives. For all algorithms, a test population size of 30 and the maximum iteration of 100 and 500 were utilized to solve this problem. WOA-GA was performed 10 times as well as WOA, GA, IWOA-PSO and ACS.

_{1}= 0.0030 s, T

_{2}= 10.8240 s, T

_{3}= 8.9690 s, T

_{4}= 10.1850 s and T

_{5}= 0.0120 s. Figure 4, Figure 5, Figure 6 and Figure 7 illustrate the trajectory curves of the industrial robot and their derivatives, including jerk, acceleration and velocity. As shown in Figure 7, the jerk curves of all joints were continuous, which resulted in the smoothness of the optimized trajectories. Furthermore, the values of jerk, acceleration and velocity were zero at the start and end movement. The motion curves were all bound under the kinematic constraints all the time. Therefore, the proposed method is an effective time-jerk optimal trajectory planning tool for industrial robots.

## 5. Conclusions

## Author Contributions

## Funding

## Acknowledgments

## Conflicts of Interest

## References

- Paryanto; Brossog, M.; Bornschleg, M.; Franke, J. Reducing the energy consumption of industrial robots in manufacturing systems. Int. J. Adv. Manuf. Technol.
**2015**, 78, 1315–1328. [Google Scholar] [CrossRef] - Lin, W.Y.; Ren, X.Y.; Zhou, T.T.; Cheng, X.J.; Tong, M.S. A novel robust algorithm for position and orientation detection based on cascaded deep neural network. Neurocomputing
**2018**, 308, 138–146. [Google Scholar] [CrossRef] - Yin, G.T.; Zhu, Z.H.; Gong, H.; Lu, Z.F.; Yong, H.S.; Liu, L.; He, W. Flexible punching system using industrial robots for automotive panels. Robot. Comput. Integr. Manuf.
**2018**, 52, 92–99. [Google Scholar] [CrossRef] - Rubioa, F.; Llopis-Albert, C.; Valero, F.; Suñer, J.L. Industrial robot efficient trajectory generation without collision through the evolution of the optimal trajectory. Robot. Auton. Syst.
**2016**, 86, 106–112. [Google Scholar] [CrossRef] [Green Version] - Ha, C.W.; Lee, D. Analysis of embedded prefilters in motion profiles. IEEE Trans. Ind. Electron.
**2018**, 65, 1481–1489. [Google Scholar] [CrossRef] - Gasparetto, A.; Zanotto, V. A new method for smooth trajectory planning of robot manipulators. Mech. Mach. Theory
**2007**, 42, 455–471. [Google Scholar] [CrossRef] - Jond, H.B.; Nabiyev, V.V.; Benveniste, R. Trajectory planning using high-order polynomials under acceleration constraint. J. Optim. Ind. Eng.
**2017**, 21, 1–6. [Google Scholar] [CrossRef] - Macfarlane, S.; Croft, E.A. Jerk-Bounded Manipulator Trajectory Planning: Design for Real-Time Applications. IEEE Trans. Robot. Autom.
**2003**, 19, 42–52. [Google Scholar] [CrossRef] [Green Version] - Bureerat, S.; Pholdee, N.; Radpukdee, T.; Jaroenapibal, P. Self-adaptive MRPBIL-DE for 6D robot multi-objective trajectory planning. Expert Syst. Appl.
**2019**, 136, 133–144. [Google Scholar] [CrossRef] - Lin, J.; Somani, N.; Hu, B.; Rickert, M.; Knoll, A. An Efficient and Time-Optimal Trajectory Generation Approach for Waypoints under Kinematic Constraints and Error Bounds. In Proceedings of the 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Madrid, Spain, 1–5 October 2018. [Google Scholar] [CrossRef] [Green Version]
- Wu, Z.; Chen, J.; Bao, T.; Wang, J.; Zhang, L.; Xu, F. A Novel Point-to-Point Trajectory Planning Algorithm for Industrial Robots Based on a Locally Asymmetrical Jerk Motion Profile. Processes
**2022**, 10, 728. [Google Scholar] [CrossRef] - Gasparetto, A.; Zanotto, V. A technique for time-jerk optimal planning of robot trajectories. Robot. Comput. Integr. Manuf.
**2008**, 24, 415–426. [Google Scholar] [CrossRef] - Chettibi, T.; Lehtihet, H.E.; Haddad, M.; Hanchi, S. Minimum cost trajectory planning for industrial robots. Eur. J. Mech. A Solids
**2004**, 23, 703–715. [Google Scholar] [CrossRef] - Wang, T.; Xin, Z.; Miao, H.; Zhang, H.; Chen, Z.; Du, Y. Optimal Trajectory Planning of Grinding Robot Based on Improved Whale Optimization Algorithm. Math. Probl. Eng.
**2020**, 4, 3424313. [Google Scholar] [CrossRef] - Zeeshan, M.; Xu, H. Jerk-Bounded Trajectory Planning of Industrial Manipulators. In Proceedings of the IEEE International Conference on Robotics and Biomimetics, Dali, China, 6–8 December 2019. [Google Scholar] [CrossRef]
- Huang, J.S.; Hu, P.F.; Wu, K.Y.; Zeng, M. Optimal time-jerk trajectory planning for industrial robots. Mech. Mach. Theory
**2018**, 121, 530–544. [Google Scholar] [CrossRef] - Fang, Y.; Liu, W.; Shao, Q.; Qi, J.; Peng, Y.H. Smooth and time-optimal s-curve trajectory planning for automated robots and machines. Mech. Mach. Theory
**2019**, 137, 127–153. [Google Scholar] [CrossRef] - Fang, Y.; Hu, J.; Qi, J.; Liu, W.H.; Wang, W.M.; Peng, Y.H. Planning trigonometric frequency central pattern generator trajectory for cyclic tasks of robot manipulators. Arch. Proc. Inst. Mech. Eng. Part C J. Mech. Eng. Sci.
**2019**, 233, 4014–4031. [Google Scholar] [CrossRef] - Rymansaib, Z.; Iravani, P.; Sahinkaya, M.N. Exponential trajectory generation for point to point motions. In Proceedings of the 2013 IEEE/ASME International Conference on Advanced Intelligent Mechatronics, Wollongong, Australia, 9–12 July 2013. [Google Scholar] [CrossRef]
- Boryga, M.; Graboś, A. Planning of manipulator motion trajectory with higher-degree polynomials use. Mech. Mach. Theory
**2009**, 44, 1400–1419. [Google Scholar] [CrossRef] - Abu-Dakka, F.J.; Valero, F.J.; Suner, J.L.; Mata, V. A direct approach to solving trajectory planning problems using genetic algorithms with dynamics considerations in complex environments. Robotica
**2015**, 33, 669–683. [Google Scholar] [CrossRef] [Green Version] - Bailón, W.P.; Cardiel, E.B.; Campos, I.J.; Paz, A.R. Mechanical energy optimization in trajectory planning for six DOF robot manipulators based on eighth-degree polynomial functions and a genetic algorithm. In Proceedings of the 2010 7th International Conference on Electrical Engineering Computing Science and Automatic Control, Tuxtla Gutierrez, Mexico, 8–10 September 2010. [Google Scholar] [CrossRef]
- Fung, R.F.; Cheng, Y.H. Trajectory planning based on minimum absolute input energy for an LCD glass-handling robot. Appl. Math. Model.
**2014**, 38, 2837–2847. [Google Scholar] [CrossRef] - Zhang, X.; Shi, G. Multi-objective optimal trajectory planning for manipulators in the presence of obstacles. Robotica
**2022**, 40, 888–906. [Google Scholar] [CrossRef] - Liu, Y.; Guo, C.; Weng, Y. Online time-optimal trajectory planning for robotic manipulators using adaptive elite genetic algorithm with singularity avoidance. IEEE Access
**2019**, 7, 146301–146308. [Google Scholar] [CrossRef] - Zhang, L.; Wang, Y.; Zhao, X. Time-optimal trajectory planning of serial manipulator based on adaptive cuckoo search algorithm. J. Mech. Sci. Technol.
**2021**, 35, 3171–3181. [Google Scholar] [CrossRef] - Zhao, J.; Zhu, X.; Song, T. Serial Manipulator Time-Jerk Optimal Trajectory Planning Based on Hybrid IWOA-PSO Algorithm. IEEE Access
**2022**, 10, 6592–6604. [Google Scholar] [CrossRef] - Khan, A.H.; Li, S.; Chen, D.; Liao, L. Tracking control of redundant mobile manipulator: An RNN based metaheuristic approach. Neurocomputing
**2020**, 400, 272–284. [Google Scholar] [CrossRef] - Cheng, Y.; Li, C.; Li, S.; Li, Z. Motion Planning of Redundant Manipulator with Variable Joint Velocity Limit Based on Beetle Antennae Search Algorithm. IEEE Access
**2020**, 8, 138788–138799. [Google Scholar] [CrossRef] - Mirjalili, S.; Lewis, A. The whale optimization algorithm. Adv. Eng. Softw.
**2016**, 95, 51–67. [Google Scholar] [CrossRef] - Zhang, L.; Wang, J.; Chen, J.; Chen, K.; Lin, B.; Xu, F. Dynamic modeling for a 6-DOF robot manipulator based on a centrosymmetric static friction model and whale genetic optimization algorithm. Adv. Eng. Softw.
**2019**, 135, 102684. [Google Scholar] [CrossRef] - Holland, J.H. Adaptation in Natural and Artificial Systems; MIT Press: London, UK, 1992. [Google Scholar]
- Coello, A.C. Theoretical and numerical constraint-handling techniques used with evolutionary algorithms: A survey of the state of the art. Comput. Method. Appl. Mech. Eng.
**2002**, 191, 1245–1287. [Google Scholar] [CrossRef] - Zhao, W.; Wang, L.; Mirjalili, S. Artificial hummingbird algorithm: A new bio-inspired optimizer with its engineering applications. Comput. Method. Appl. Mech. Eng.
**2022**, 388, 114194. [Google Scholar] [CrossRef]

Name | Characteristics |
---|---|

IWOA-DE [21] | Good global optimization ability, strong robustness and slow convergence speed. |

ACS [25] | Faster convergence degree, higher accuracy and better global search ability, but the final accuracy needs to be improved. |

RNN-MA [26] | Fast convergence speed and suitable for real-time implementation. |

BAS [27] | Fast convergence speed with low searching precision and convergence speed, and sometimes it is prone to local optimum. |

AEGA-SA [28] | Superior to the original genetic algorithm in terms of trajectory smoothness and trajectory efficiency, but it is highly dependent on population size, and is prone to low convergence speed or fall into local optimum. |

IWOA-PSO [29] | Good global exploration ability and slow convergence speed. |

Symbol | Meaning |
---|---|

N | Number of robot joints |

w_{T} | Weight of the term proportional to the execution time |

N_{p} | Number of via-points |

T_{i} | Time interval between two via-points |

P_{j}(t) | Position of the jth joint |

V_{j}(t) | Velocity of the jth joint |

A_{j}(t) | Acceleration of the jth joint |

J_{j}(t) | Jerk of the jth joint |

w_{J} | Weight of the term proportional to the jerk |

T_{f} | Total execution time of the trajectory |

P_{j}^{upper} | Upper-bound position of the jth joint |

P_{j}^{lower} | Lower-bound position of the jth joint |

VL_{j} | Velocity limit for the jth joint (symmetrical) |

AL_{j} | Acceleration limit for the jth joint (symmetrical) |

JL_{j} | Jerk limit for the jth joint (symmetrical) |

Algorithm | Parameter Configuration |
---|---|

WOA-GA | Pc = 0.85, Pm = 0.01, Er = 0.05 |

GA | Pc = 0.85, Pm = 0.01, Er = 0.05 |

IWOA-PSO [29] | Pc = 0.85, k = 0.4, c_{1} = 2.0, c_{2} = 2.0 |

ACS [25] | a = 0.7, b = 0.5, Pa = 0.25 |

Function | Dim | Range | Min |
---|---|---|---|

${F}_{1}(x)={\displaystyle \sum _{i=1}^{n}{x}_{i}^{2}}$ | 30 | [−100, 100] | 0 |

${F}_{2}(x)={\displaystyle \sum _{i=1}^{n}\left|{x}_{i}\right|+{\displaystyle \prod _{i=1}^{n}\left|{x}_{i}\right|}}$ | 30 | [−10, 10] | 0 |

${F}_{3}(x)=\frac{\pi}{n}\left\{10\mathrm{sin}\left(\pi {y}_{1}\right)+{\displaystyle \sum _{i=1}^{n}{\left({y}_{i}-1\right)}^{2}[1+10{\mathrm{sin}}^{2}(\pi {y}_{i+1})+{\left({y}_{n}-1\right)}^{2}]}\right\}+{\displaystyle \sum _{i=1}^{n}u\left({x}_{i},10,100,4\right)}$ ${y}_{i}=1+\frac{{x}_{i}+1}{4},u\left({x}_{i},a,k,m\right)=\left\{\begin{array}{l}k{\left({x}_{i}-a\right)}^{m},{x}_{i}>a\\ 0,-a<{x}_{i}<a\\ k{\left(-{x}_{i}-a\right)}^{m},{x}_{i}<-a\end{array}\right.$ | 30 | [−50, 50] | 0 |

${F}_{4}(x)=0.1\left\{{\mathrm{sin}}^{2}\left(3\pi {x}_{1}\right)+{\displaystyle \sum _{i=1}^{n}{\left({x}_{i}-1\right)}^{2}[1+{\mathrm{sin}}^{2}\left(3\pi {x}_{i}+1\right)]+\left({x}_{n}-1\right)2[1+{\mathrm{sin}}^{2}\left(2\pi {x}_{n}\right)]}\right\}+{\displaystyle \sum _{i=1}^{n}u\left({x}_{i},5,100,4\right)}$ | 30 | [0, π] | 0 |

${F}_{5}(x)=4{x}_{1}^{2}+-2.1{x}_{1}^{4}+\frac{1}{3}{x}_{1}^{6}+{x}_{1}{x}_{2}-4{x}_{2}^{2}+4{x}_{2}^{4}$ | 2 | [−5, 5] | −1.0316 |

${F}_{6}(x)=[1+{\left({x}_{1}+{x}_{2}+1\right)}^{2}\left(19-14{x}_{1}+3{x}_{1}^{2}-14{x}_{2}+6{x}_{1}{x}_{2}+3{x}_{2}^{2}\right)]$ $\times [30+{\left(2{x}_{1}-3{x}_{2}\right)}^{2}\left(18-32{x}_{1}+12{x}_{1}^{2}+48{x}_{2}-36{x}_{1}{x}_{2}+27{x}_{2}^{2}\right)]$ | 2 | [−2, 2] | 3 |

Function | WOA-GA | WOA | GA | IWOA-PSO [29] | ACS [25] | |
---|---|---|---|---|---|---|

F_{1} | BEST | 0 | 1.21 × 10^{−80} | 7.3354 | 2.83 × 10^{−29} | 36.8232 |

WORST | 3.61 × 10^{−4} | 6.08 × 10^{−70} | 1.22 × 10^{3} | 7.1957 × 10^{−17} | 71.4722 | |

MEAN | 3.45 × 10^{−5} | 3.91 × 10^{−71} | 434.7116 | 4.84 × 10^{−18} | 52.3215 | |

STD | 7.76 × 10^{−5} | 1.36 × 10^{−70} | 395.9814 | 1.62 × 10^{−17} | 11.4114 | |

Time consumption | 60.3291 | 0.1556 | 35.0099 | 0.4467 | 0.8789 | |

F_{2} | BEST | 0 | 8.11 × 10^{−59} | 3.1050 | 7.54 × 10^{−32} | 214.1185 |

WORST | 0.0060 | 9.9 × 10^{−51} | 16.5300 | 1.79 × 10^{−20} | 1.00 × 10^{10} | |

MEAN | 3.00 × 10^{−4} | 3.36 × 10^{−52} | 6.4972 | 9.83 × 10^{−22} | 9.50 × 10^{9} | |

STD | 0.0013 | 2.16 × 10^{−51} | 3.3679 | 3.90 × 10^{−21} | 2.18 × 10^{9} | |

Time consumption | 60.8924 | 0.1868 | 36.1690 | 0.5520 | 1.0567 |

Function | WOA-GA | WOA | GA | IWOA-PSO [29] | ACS [25] | |
---|---|---|---|---|---|---|

F_{3} | BEST | 4.88 × 10^{−5} | 0.0075 | 1.2974 | 0.1139 | 2.7302 |

WORST | 1.72 × 10^{−4} | 0.0576 | 2.77 × 10^{6} | 0.7058 | 7.7002 | |

MEAN | 1.14 × 10^{−4} | 0.0211 | 1.88 × 10^{5} | 0.2740 | 4.8696 | |

STD | 3.39 × 10^{−5} | 0.0135 | 6.16 × 10^{6} | 0.1528 | 1.3589 | |

Time consumption | 60.8924 | 0.1868 | 36.1690 | 0.5520 | 1.0567 | |

F_{4} | BEST | 7.13 × 10^{−4} | 0.1161 | 0.5866 | 1.3246 | 1.00 × 10^{10} |

WORST | 0.0136 | 1.0580 | 1.07 × 10^{7} | 2.3390 | 1.00 × 10^{10} | |

MEAN | 0.0047 | 0.5327 | 1.05 × 10^{6} | 1.8482 | 1.00 × 10^{10} | |

STD | 0.0049 | 0.2221 | 2.95 × 10^{6} | 0.2569 | 0 | |

Time consumption | 56.5546 | 0.7357 | 35.9564 | 2.4473 | 2.0157 | |

F_{5} | BEST | −1.0316 | −1.0316 | −1.0299 | −1.0316 | −1.0316 |

WORST | −1.0316 | −1.0316 | −0.8077 | −1.0316 | −1.0316 | |

MEAN | −1.0316 | −1.0316 | −0.9549 | −1.0316 | −1.0316 | |

STD | 2.22 × 10^{−16} | 2.83 × 10^{−9} | 0.0734 | 5.03 × 10^{−9} | 4.55 × 10^{−16} | |

Time consumption | 20.6915 | 0.1751 | 18.0697 | 0.4982 | 0.6485 | |

F_{6} | BEST | 3 | 3 | 3 | 3 | 3 |

WORST | 3 | 3.0025 | 44.9507 | 30 | 3 | |

MEAN | 3 | 3.0001 | 20.6778 | 11.1041 | 3 | |

STD | 0 | 5.34 × 10^{−4} | 14.2922 | 12.3703 | 3.12 × 10^{−15} | |

Time consumption | 7.9300 | 0.0662 | 7.0914 | 0.1689 | 0.2644 |

Position No. | Joint No. (°) | |||||
---|---|---|---|---|---|---|

1 | 2 | 3 | 4 | 5 | 6 | |

1 | −10 | 20 | 15 | 150 | 30 | 120 |

2 | Virtual point | |||||

3 | 60 | 50 | 100 | 100 | 110 | 60 |

4 | 20 | 120 | −10 | 40 | 90 | 100 |

5 | Virtual point | |||||

6 | 55 | 35 | 30 | 10 | 70 | 25 |

Kinematic Constraints | Joint No. | |||||
---|---|---|---|---|---|---|

1 | 2 | 3 | 4 | 5 | 6 | |

Velocity (°/s) | 100 | 95 | 100 | 150 | 130 | 110 |

Acceleration (°/s^{2}) | 60 | 60 | 75 | 70 | 90 | 80 |

Jerk (°/s^{3}) | 60 | 66 | 85 | 70 | 75 | 70 |

Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |

© 2022 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).

## Share and Cite

**MDPI and ACS Style**

Wang, F.; Wu, Z.; Bao, T.
Time-Jerk optimal Trajectory Planning of Industrial Robots Based on a Hybrid WOA-GA Algorithm. *Processes* **2022**, *10*, 1014.
https://doi.org/10.3390/pr10051014

**AMA Style**

Wang F, Wu Z, Bao T.
Time-Jerk optimal Trajectory Planning of Industrial Robots Based on a Hybrid WOA-GA Algorithm. *Processes*. 2022; 10(5):1014.
https://doi.org/10.3390/pr10051014

**Chicago/Turabian Style**

Wang, Fang, Zhijun Wu, and Tingting Bao.
2022. "Time-Jerk optimal Trajectory Planning of Industrial Robots Based on a Hybrid WOA-GA Algorithm" *Processes* 10, no. 5: 1014.
https://doi.org/10.3390/pr10051014