# Hunting Search Algorithm-Based Adaptive Fuzzy Tracking Controller for an Aero-Pendulum

^{1}

^{2}

^{*}

## Abstract

**:**

## 1. Introduction

## 2. Background

#### 2.1. System Dynamics of Aero-Pendulum

#### 2.2. Fuzzy Systems

- The fuzzification or fuzzifier is in charge of making and proposing the inputs of the fuzzy systems, considering the properties of the system to be modeled.
- The rule base is the step of setting up rules. In this phase, the designer establishes the range in which each decision from the inputs/outputs is being taken.
- Then comes the inference logic phase in which the rules from the inputs are related to the rules of the outputs. Various techniques can be completed in this phase; for this project, the technique max-product is used to create relations between the inputs and outputs.
- Finally comes the ending block from the fuzzy system called defuzzification. As the name suggests, it is the contrary part of the first step in which the fuzzy rules established before are now going into the system to create the crisp signal.

#### 2.3. Trajectory Definition

#### 2.4. HuS Algorithm

- 1.
- Define the optimization problem and the design parameters: The HuS algorithm sets out crucial parameters for tackling the optimization task. These parameters encompass the hunting group size (HGS), indicating the number of solution vectors within the hunting group, as well as the maximum movement towards the leader (MML) and the hunting group consideration rate (HGCR), which varies between 0 and 1. MML and HGCR play pivotal roles in fine-tuning the positions of hunters (solution vectors), as elaborated in subsequent Steps 3 and 4.
- 2.
- Initialize the hunting group (HG): The hunting group matrix is populated with feasible randomly generated solution vectors contingent upon the number of hunters (HGS). Subsequently, the objective function values are computed, and the leader is determined based on these values across the objective functions of the hunters.
- 3.
- Move toward the leader: The updated positions of the hunters (new solution vectors) $h\prime$ are generated by advancing toward the leader, the hunter possessing the best position within the group. Equation (8) is used to correct the positions.$$\begin{array}{c}\hfill {h\prime}_{i}={h}_{i}+rand\times MML\times ({h\prime}_{i}-{h}_{i})\end{array}$$
- 4.
- Correct the positions (cooperation between members): This step simulates the collaborative behavior among the hunters to enhance the efficiency of the hunt. Following their movement toward the leader, the hunters select new positions, guided by the positions of other hunters, and incorporate random factors to discover improved solutions. Updating the variable value is thus carried out as presented in Equation (9).$$\begin{array}{c}\hfill {h}_{i}^{{j}^{\prime}}=\left\{\begin{array}{ccc}{h}_{i}^{{j}^{\prime}}\in \{{h}_{i}^{1},{h}_{i}^{2},\dots ,{h}_{i}^{HGS}\}\hfill & \phantom{\rule{1.em}{0ex}}& \mathrm{with}\phantom{\rule{4.pt}{0ex}}\mathrm{probability}\phantom{\rule{4.pt}{0ex}}HGCR\\ {h}_{i}^{{j}^{\prime}}={h}_{i}^{j}\pm Ra\hfill & \phantom{\rule{1.em}{0ex}}& \mathrm{with}\phantom{\rule{4.pt}{0ex}}\mathrm{probability}\phantom{\rule{4.pt}{0ex}}(1-HGCR)\end{array}\right.\end{array}$$$$\begin{array}{c}\hfill Ra\left(k\right)=R{a}_{min}(max\left({h}_{i}\right)-min\left({h}_{i}\right)){e}^{\frac{ln(\frac{R{a}_{min}}{R{a}_{max}})\times k}{itm}}\end{array}$$
- 5.
- Reorganize the hunting group: As the search progresses, the hunters can become ensnared in a local minimum (or a local maximum if the objective is to find the maximum). In such instances, the hunters must regroup and recalibrate their strategies to afford themselves another opportunity to pinpoint the optimal solution. The algorithm executes this process under two distinct conditions. Firstly, if the discrepancy between the objective function values for the leader and the poorest-performing hunter within the group diminishes to a level below a predetermined threshold and the termination criterion remains unmet, the algorithm restores the hunting group for every hunter. Alternatively, once a designated number of search iterations has transpired, the hunters undertake a self-reorganization process autonomously. The series of search iterations leading to the entrapment of the group in a local minimum, or the completion of a predetermined number of searches, constitutes one epoch. During the reorganization, the leader maintains its position, while the remaining hunters randomly select new positions within the design space by Equation (11).$$\begin{array}{c}\hfill {h\prime}_{i}={h}_{i}^{L}\pm rand\times (max\left({h}_{i}\right)-min\left({h}_{i}\right))\times \alpha {e}^{-\beta \times Tr}\end{array}$$In this reorganization phase, ${h}_{i}^{L}$ represents the position value of the leader for the i-th variable. Including the uniform random number $rand$, fluctuating between 0 and 1, facilitates the selection process. Furthermore, $max\left({h}_{i}\right)$ and $min\left({h}_{i}\right)$ denote the maximum or minimum possible value of vector ${h}_{i}$, respectively. In the meantime, $Tr$ records the occurrences of the group being trapped up to this point. The parameters $\alpha $ and $\beta $ are positive real numbers that establish the algorithm’s overall convergence rate.
- 6.
- Repeat Steps 3, 4, and 5 until the termination criterion is satisfied.

## 3. Materials and Methods

## 4. Results

#### 4.1. General Controller Programming

Algorithm 1: Motion controller algorithm | |

Declare the inputs and outputs; | |

Declare the constants and variables; | |

Indicate the fuzzy gain of ${K}_{p}$, ${K}_{d}$, and ${K}_{i}$ from Figure 7 and the fuzzy variables; | |

Function LinguisticValues(error, anchoring points): | |

Create the figures of the functions; | |

Calculate the membership degree; | |

Function SetUp (): | |

Configure the BLDC frequency, PWM, and channel; | |

Create the interruption of 0.02s; | |

while True do | |

Generate the parabolic profile in Figure 4; | |

Measure the position from the angular displacement sensor; | |

Filter the readings obtained from the sensor; | |

Calculate error $e\left(t\right)$; | |

Calculate the derivative error $de\left(t\right)$; | |

Calculate the integral error $ie\left(t\right)$; | |

Evaluate the linguistic variable of error $e\left(t\right)$ presented in Figure 6a; | |

Evaluate the linguistic variable of derivative error $de\left(t\right)$ presented in Figure 6b; | |

Evaluate the linguistic variable of integral error $ie\left(t\right)$ presented in Figure 6c; | |

Calculate the controller response; | |

Calculate the offset from the system; | |

Adjust the output signal by adding the controller response and the offset together; | |

Send the output signal to the BLDC; | |

end |

#### 4.2. Non-Optimized PID Fuzzy Logic Controller

#### 4.3. Optimized PID Fuzzy Logic Controller with HuS Algorithm

## 5. Discussion

## 6. Conclusions

## Author Contributions

## Funding

## Institutional Review Board Statement

## Informed Consent Statement

## Data Availability Statement

## Acknowledgments

## Conflicts of Interest

## Abbreviations

AGC | Automatic Generation Control |

BLDC | Brushless Direct Current |

DC | Direct Current |

ESC | Electronic Speed Controller |

HGCR | Hunting Group Consideration at Rate |

HG | Hunting Group |

HGS | Hunting Group Size |

HuS | Hunting Search |

${K}_{p}$ | Proportional Gain |

${K}_{d}$ | Derivative Gain |

${K}_{i}$ | Integral Gain |

MATLAB | Matrix Laboratory |

MIFPID | Multi-Input Fuzzy PID |

MML | Maximum Movement towards the Leader |

MPD | Much Positive Derivative |

MPI | Much Positive Integral |

MPP | Much Positive Proportional |

MP | Much Positive |

N | Negative |

ND | Negative Derivative |

NI | Negative Integral |

NP | Negative Proportional |

P | Positive |

PID | Proportional Derivative Integral |

PD | Proportional Derivative |

PWM | Pulse With Modulation |

PSO | Particle Swarm Optimization |

RMSE | Root Mean Squared Error |

SPD | Small Positive Derivative |

SPI | Small Positive Integral |

SPP | Small Positive Proportional |

Z | Zero |

ZD | Zero Derivative |

ZI | Zero Integral |

ZP | Zero Proportional |

## References

- Enikov, E.T.; Campa, G. Mechatronic aeropendulum: Demonstration of linear and nonlinear feedback control principles with matlab/simulink real-time windows target. IEEE Trans. Educ.
**2012**, 55, 538–545. [Google Scholar] [CrossRef] - Ahmad, A.; Rafiuddin, N.; Khan, Y.U. Comparative Analysis of ANN and PID Controller of Aero-pendulum on Simscape. In Proceedings of the 2021 IEEE 6th International Conference on Computing, Communication and Automation (ICCCA), Arad, Romania, 17–19 December 2021; pp. 334–338. [Google Scholar]
- Guzmán, J.L.; Hägglund, T. Tuning rules for feedforward control from measurable disturbances combined with PID control: A review. Int. J. Control
**2024**, 97, 2–15. [Google Scholar] [CrossRef] - Martell, F.; Sanchez, I.Y. Practical Control Engineering for Mechatronics and Automation; CRC Press: Boca Raton, FL, USA, 2024. [Google Scholar]
- Zhao, N.; Tian, Y.; Zhang, H.; Herrera-Viedma, E. Learning-Based Adaptive Fuzzy Output Feedback Control for MIMO Nonlinear Systems With Deception Attacks and Input Saturation. IEEE Trans. Fuzzy Syst.
**2024**, 32, 2850–2862. [Google Scholar] [CrossRef] - Ortíz, J.F.; Ortega, M.M.; Rodríguez, J.I.; Santiago, A.M.; Garcia, A.M.; de Jesus Osuna-Coutiño, J.A.; Vázquez, S.J.; Torres, J.A. Fault-tolerant control of a helix-driven parallelogram pendulum. In Proceedings of the 2022 17th Iberian Conference on Information Systems and Technologies (CISTI), Madrid, Spain, 22–25 June 2022; pp. 1–5. [Google Scholar]
- Aslam, M.S.; Bilal, H.; Hayajneh, M. Lqr-based PID controller with variable load tuned with data-driven methods for double inverted pendulum. Soft Comput.
**2024**, 28, 325–338. [Google Scholar] [CrossRef] - Yue, S.; Niu, B.; Wang, H.; Zhang, L.; Ahmad, A.M. Hierarchical sliding mode-based adaptive fuzzy control for uncertain switched under-actuated nonlinear systems with input saturation and dead-zone. Robot. Intell. Autom.
**2023**, 43, 523–536. [Google Scholar] [CrossRef] - Kroičs, K.; Būmanis, A. BLDC Motor Speed Control with Digital Adaptive PID-Fuzzy Controller and Reduced Harmonic Content. Energies
**2024**, 17, 1311. [Google Scholar] [CrossRef] - Han, S.; Dong, J.; Zhou, J.; Chen, Y. Adaptive fuzzy PID control strategy for vehicle active suspension based on road evaluation. Electronics
**2022**, 11, 921. [Google Scholar] [CrossRef] - Hwang, K.; Park, J.; Kim, H.; Kuc, T.; Lim, S. Development of a simple robotic driver system (SimRoDS) to test fuel economy of hybrid electric and plug-in hybrid electric vehicles using fuzzy-PI control. Electronics
**2021**, 10, 1444. [Google Scholar] [CrossRef] - Huang, S.; Zong, G.; Zhao, N.; Zhao, X.; Ahmad, A.M. Performance recovery-based fuzzy robust control of networked nonlinear systems against actuator fault: A deferred actuator-switching method. Fuzzy Sets Syst.
**2024**, 480, 108858. [Google Scholar] [CrossRef] - Rodríguez-Abreo, O.; Rodríguez-Reséndiz, J.; García-Cerezo, A.; García-Martínez, J.R. Fuzzy logic controller for UAV with gains optimized via genetic algorithm. Heliyon
**2024**, 10, e26363. [Google Scholar] [CrossRef] - Simon, D. Evolutionary Optimization Algorithms; John Wiley & Sons: Hoboken, NJ, USA, 2013. [Google Scholar]
- Rodríguez-Abreo, O.; Rodríguez-Reséndiz, J.; Álvarez-Alvarado, J.M.; García-Cerezo, A. Metaheuristic parameter identification of motors using dynamic response relations. Sensors
**2022**, 22, 4050. [Google Scholar] [CrossRef] [PubMed] - Manuel, N.L.; İnanç, N.; Lüy, M. Control and performance analyses of a DC motor using optimized PIDs and fuzzy logic controller. Results Control. Optim.
**2023**, 13, 100306. [Google Scholar] [CrossRef] - Silva, H.R.M.; Ramos, I.T.M.; Cardim, R.; Assunção, E.A.; Teixeira, M.C.M. Identification and switched control of an aeropendulum system. Congr. Bras. Autom.
**2020**, 2, 1–6. [Google Scholar] [CrossRef] - Farooq, U.; Gu, J.; El-Hawary, M.E.; Luo, J.; Asad, M.U. Observer based fuzzy LMI regulator for stabilization and tracking control of an aeropendulum. In Proceedings of the 2015 IEEE 28th Canadian Conference on Electrical and Computer Engineering (CCECE), Halifax, NS, Canada, 3–6 May 2015; pp. 1508–1513. [Google Scholar]
- Saleem, O.; Rizwan, M.; Zeb, A.A.; Ali, A.H.; Saleem, M.A. Online adaptive PID tracking control of an aero-pendulum using PSO-scaled fuzzy gain adjustment mechanism. Soft Comput.
**2020**, 24, 10629–10643. [Google Scholar] [CrossRef] - Hamoudi, A.K.; Rasheed, L.T. Design and Implementation of Adaptive Backstepping Control for Position Control of Propeller-Driven Pendulum System. J. Eur. Syst. Autom.
**2023**, 56, 281–289. [Google Scholar] [CrossRef] - Oftadeh, R.; Mahjoob, M.J.; Shariatpanahi, M. A novel meta-heuristic optimization algorithm inspired by group hunting of animals: Hunting search. Comput. Math. Appl.
**2010**, 60, 2087–2098. [Google Scholar] [CrossRef] - Nayak, J.R.; Shaw, B.; Das, S.; Sahu, B.K. Design of MI fuzzy PID controller optimized by Modified Group Hunting Search algorithm for interconnected power system. Microsyst. Technol.
**2018**, 24, 3615–3621. [Google Scholar] [CrossRef] - Bouzaida, S.; Sakly, A.; M’Sahli, F. Extracting TSK-type neuro-fuzzy model using the hunting search algorithm. Int. J. Gen. Syst.
**2014**, 43, 32–43. [Google Scholar] [CrossRef] - Habib, G.; Miklos, A.; Enikov, E.T.; Stepan, G.; Rega, G. Nonlinear model-based parameter estimation and stability analysis of an aero-pendulum subject to digital delayed control. Int. J. Dyn. Control
**2017**, 5, 629–643. [Google Scholar] [CrossRef] - Silva, H.R.M.; Cardim, R.; Teixeira, M.C.M.; Assunção, E.; Ramos, I.T.M. Switched control and tracking application in aeropendulum system using fuzzy models. In Proceedings of the 2021 IEEE International Conference on Fuzzy Systems (FUZZ-IEEE), Luxembourg, 11–14 July 2021; pp. 1–6. [Google Scholar]
- Mohammadbagheri, A.; Yaghoobi, M. A new approach to control a driven pendulum with PID method. In Proceedings of the 2011 UkSim 13th International Conference on Computer Modelling and Simulation, Cambridge, UK, 30 March–1 April 2011; pp. 207–211. [Google Scholar]
- Job, M.M.; Jose, P.S.H. Modeling and control of mechatronic aeropendulum. In Proceedings of the 2015 International Conference on Innovations in Information, Embedded and Communication Systems (ICIIECS), Coimbatore, India, 19–20 March 2015; pp. 1–5. [Google Scholar]
- Kizmaz, H.; Aksoy, S.; Mühürcü, A. Sliding mode control of suspended pendulum. In Proceedings of the 2010 Modern Electric Power Systems, Wroclaw, Poland, 20–22 September 2010; pp. 1–6. [Google Scholar]
- Borase, R.P.; Maghade, D.K.; Sondkar, S.Y.; Pawar, S.N. A review of PID control, tuning methods and applications. Int. J. Dyn. Control
**2021**, 9, 818–827. [Google Scholar] [CrossRef] - Zadeh, L.A. Fuzzy logic and approximate reasoning: In memory of Grigore Moisil. Synthese
**1975**, 30, 407–428. [Google Scholar] [CrossRef] - Siregar, M.F.; Imam, C. Utilizing fuzzy logic to create a prototype robot for load detection. J. Mantik
**2024**, 7, 3807–3815. [Google Scholar] - García-Martínez, J.R.; Cruz-Miguel, E.E.; Rodríguez-Reséndiz, J.; Ramírez-González, L.D.; Rojas-Hernández, M.A. PID-Like Fuzzy Controller Design for Anti-Slip System in Quarter-Car Robot; IntechOpen: London, UK, 2023. [Google Scholar]
- Ali, S.A.; Annuar, K.A.M.; Miskon, M.F. Trajectory planning for exoskeleton robot by using cubic and quintic polynomial equation. Int. J. Appl. Eng. Res.
**2016**, 11, 7943–7946. [Google Scholar] - Olmedo-García, L.F.; García-Martínez, J.R.; Cruz-Miguel, E.E.; Barra-Vázquez, O.A.; Gónzalez-Lee, M.; Martínez-Sánchez, T. Real-Time Embedded System-Based Approach for Sensing Power Consumption on Motion Profiles. Electronics
**2023**, 12, 3853. [Google Scholar] [CrossRef]

**Figure 10.**Non-optimized input linguistic variables (

**a**) error, (

**b**) derivative of error, and (

**c**) integral of error.

**Figure 11.**Non-optimized output linguistic variables (

**a**) ${K}_{p}$, (

**b**) ${K}_{d}$, and (

**c**) ${K}_{i}$.

**Figure 14.**Optimized input linguistic variables (

**a**) error, (

**b**) error derivative, and (

**c**) error integral.

Mechanical Parameters | Electrical Parameters | ||||
---|---|---|---|---|---|

Parameter | Symbol | Value | Parameter | Symbol | Value |

Counterweight mass | m | 0.34 kg | Maximum efficiency current | $\eta $ | 6–12 A |

Counterweight to fulcrum distance | h | 0.108 m | Maximum efficiency | $\eta $max | 78% |

Pendulum length | L | 0.45 m | No load current | IO | 0.7 A |

Center of mass to fulcrum distance | l | 0.04 m | Maximum current | Imax | 16 A |

Pendulum weight | M | 0.166 kg | Maximum output | Pmax | 180 W |

Gravity | g | 9.81 $\mathrm{m}/{\mathrm{s}}^{2}$ | Internal resistance | r | 65 mΩ |

DC motor throttle | P | 0.35 kg |

${\mathit{K}}_{\mathit{p}}$ | ${\mathit{K}}_{\mathit{d}}$ | ${\mathit{K}}_{\mathit{i}}$ |
---|---|---|

If e(t) is NP, then ${K}_{p}$ is KpN | If de(t) is ND, then ${K}_{d}$ is KdN | If ie(t) is NI, then ${K}_{i}$ is KiN |

If e(t) is ZP, then ${K}_{p}$ is KpZ | If de(t) is ZD, then ${K}_{d}$ is KdZ | If ie(t) is ZI, then ${K}_{i}$ is KiZ |

If e(t) is SPP, then ${K}_{p}$ is KpSP | If de(t) is SPD, then ${K}_{d}$ is KdSP | If ie(t) is SPI, then ${K}_{i}$ is KiSP |

If e(t) is MPP, then ${K}_{p}$ is KpMP | If de(t) is MPD, then ${K}_{d}$ is KdMP | If ie(t) is MPI, then ${K}_{i}$ is KiMP |

Parameter | Description | Value |
---|---|---|

MML | Maximum movement towards the leader | 0.4 |

HGCR | Hunting group consideration rate | 0.3 |

${R}_{{a}_{max}}$ | Maximum relative search radius of the hunter | $1.00\times {10}^{2}$ |

${R}_{{a}_{min}}$ | Minimum relative search radius of the hunter | $1.00\times {10}^{-7}$ |

$\alpha $ | Positive real numbers that establish convergence | 0.01 |

$\beta $ | Positive real numbers that establish convergence | −1 |

$\gamma $ | Hunter movement factor in the overlapping | 0.2 |

HGS | Hunting group size | 50 |

m | Number of variables | 36 |

${K}_{p}$ | Proportional gain restriction | $(0,3]$ |

${K}_{d}$ | Derivative gain restriction | $(0,1]$ |

${K}_{i}$ | Integral gain restriction | $(0,0.8]$ |

N | Number of generations | 20 |

Linguistic Value | ${\mathit{x}}_{\mathit{i}}^{\mathit{L}}$ | ${\mathit{\mu}}_{\mathit{i}}$ | ${\mathit{x}}_{\mathit{i}}^{\mathit{R}}$ |
---|---|---|---|

NP | −65 | −24.89 | −4.9 |

ZP | −5 | 0 | 1 |

MPP | 0.6 | 8 | 15.61 |

SPP | 9.33 | 33 | 65 |

Linguistic Value | ${\mathit{x}}_{\mathit{i}}^{\mathit{L}}$ | ${\mathit{\mu}}_{\mathit{i}}$ | ${\mathit{x}}_{\mathit{i}}^{\mathit{R}}$ |
---|---|---|---|

ND | −65 | −3.45 | 0 |

ZD | −1 | 0 | 1 |

SPD | 0 | 2 | 9.31 |

MPD | 2.45 | 11.53 | 20 |

Linguistic Value | ${\mathit{x}}_{\mathit{i}}^{\mathit{L}}$ | ${\mathit{\mu}}_{\mathit{i}}$ | ${\mathit{x}}_{\mathit{i}}^{\mathit{R}}$ |
---|---|---|---|

NI | −200 | −40 | 0 |

ZI | −20 | 0 | 20 |

SPI | 15 | 60 | 80 |

MPI | 70 | 100 | 200 |

Linguistic Value | ${\mathit{K}}_{\mathit{p}}$ | ${\mathit{K}}_{\mathit{d}}$ | ${\mathit{K}}_{\mathit{i}}$ |
---|---|---|---|

N | 0.5 | 0.348 | 0.03 |

Z | 2.28 | 0.774 | 0.025 |

SP | 0.727 | 0.69 | 0.022 |

MP | 0.02 | 0.124 | 0.02 |

Linguistic Value | ${\mathit{K}}_{\mathit{p}}$ | ${\mathit{K}}_{\mathit{i}}$ | ${\mathit{K}}_{\mathit{d}}$ |
---|---|---|---|

Min | 1.7132 | 0.0200 | 0.3987 |

Max | 2.4988 | 0.0495 | 0.9987 |

Mean | 2.1266 | 0.0335 | 0.8528 |

St.Dev. | 0.2444 | 0.0022 | 0.0874 |

Controller | PID Fuzzy Controller | PID Fuzzy Controller HuS—80 | PID Fuzzy Controller HuS—90 | PID Fuzzy Controller HuS—100 |
---|---|---|---|---|

RMSE | 0.54 | 0.42 | 0.4 | 0.49 |

Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |

© 2024 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**

Rojas-Galván, R.; García-Martínez, J.R.; Cruz-Miguel, E.E.; Barra-Vázquez, O.A.; Olmedo-García, L.F.; Rodríguez-Reséndiz, J.
Hunting Search Algorithm-Based Adaptive Fuzzy Tracking Controller for an Aero-Pendulum. *Technologies* **2024**, *12*, 63.
https://doi.org/10.3390/technologies12050063

**AMA Style**

Rojas-Galván R, García-Martínez JR, Cruz-Miguel EE, Barra-Vázquez OA, Olmedo-García LF, Rodríguez-Reséndiz J.
Hunting Search Algorithm-Based Adaptive Fuzzy Tracking Controller for an Aero-Pendulum. *Technologies*. 2024; 12(5):63.
https://doi.org/10.3390/technologies12050063

**Chicago/Turabian Style**

Rojas-Galván, Ricardo, José R. García-Martínez, Edson E. Cruz-Miguel, Omar A. Barra-Vázquez, Luis F. Olmedo-García, and Juvenal Rodríguez-Reséndiz.
2024. "Hunting Search Algorithm-Based Adaptive Fuzzy Tracking Controller for an Aero-Pendulum" *Technologies* 12, no. 5: 63.
https://doi.org/10.3390/technologies12050063