0% found this document useful (0 votes)
18 views22 pages

Comparative Study of PID PD LQR and LQR-PD Regulat

Uploaded by

saihantin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views22 pages

Comparative Study of PID PD LQR and LQR-PD Regulat

Uploaded by

saihantin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Comparative Study of PID, PD, LQR, and LQR-PD

Regulators for Quadrotor Stabilization and


Trajectory Tracking
Hamza Djizi (  [email protected] )
Mohamed Cherif Messaadia University
Zoubir Zahzouh
Mohamed Cherif Messaadia University

Research Article

Keywords: Quadcopter, Stability, Controller, accuracy, response

Posted Date: May 16th, 2023

DOI: https://doi.org/10.21203/rs.3.rs-2917613/v1

License:   This work is licensed under a Creative Commons Attribution 4.0 International License.
Read Full License

Additional Declarations: No competing interests reported.


Comparative Study of PID, PD, LQR, and LQR-PD Regulators for
Quadrotor Stabilization and Trajectory Tracking
Hamza Djizi12, Zoubir Zahzouh3

1 Department of Mechanical Engineering, Mohamed Cherif Messaadia University, P.O. Box 1553, Souk-Ahras, 41000,

Algeria.

2 INFRA-RES Laboratory, Mohamed Cherif Messaadia University, Algeria

3 Laboratoire de Recherche en Électromécanique et Sûreté de Fonctionnement, LRESF Laboratory, Mohamed Chérif

Messaadia University, P.O. Box 1553, Souk-Ahras, 41000, Algeria.

Emails: [email protected] , [email protected]

ORCIDs: https://orcid.org/0000-0002-3493-1482

* Corresponding author: Hamza Djizi

Abstract

Quadrotors, a type of unmanned aerial vehicle, utilize four rotors for precise lift and control, making them highly
versatile for a variety of tasks, such as delivery, inspection, mapping, and monitoring. The growing importance of
quadcopters is due to their ability to perform a variety of tasks, such as mapping, inspection, surveillance, and delivery.
However, their design and four motors make them inherently unstable and difficult to control, which can limit their
potential. To improve stability, four controllers (Proportional Derivative, Proportional Integral Derivative, Linear
Quadratic Regulator, and Linear Quadratic Regulator-Proportional Derivative) were tested on a quadcopter Simulink
model created with MATLAB/SIMULINK. Simulation results showed that the Linear Quadratic Regulator-
Proportional Derivative controller was the most effective in terms of stabilization and speed, particularly for hovering
along the x and y axes. This controller was found to be reliable and efficient, providing a smooth and fast response.
Tuning these controllers can optimize the quadcopter's stability, accuracy, and speed, enabling them to perform a
wider range of tasks.
Keywords: Quadcopter, Stability, Controller, accuracy, response.

1. Funding
There is no funding
2. Conflict of interest
There is no conflict of interest
3. Author contributions
Hamza Djizi Zoubir Zahzouh
Conceived the analysis
Conceived the analysis
Collected the data
Contributed data or analysis tools Contributed data or analysis tools
Performed the analysis
Wrote the paper
Wrote the paper
Comparative Study of PID, PD, LQR, and LQR-PD Regulators for
Quadrotor Stabilization and Trajectory Tracking

Abstract

Quadrotors, a type of unmanned aerial vehicle, utilize four rotors for precise lift and control, making them highly
versatile for a variety of tasks, such as delivery, inspection, mapping, and monitoring. The growing importance of
quadcopters is due to their ability to perform a variety of tasks, such as mapping, inspection, surveillance, and delivery.
However, their design and four motors make them inherently unstable and difficult to control, which can limit their
potential. To improve stability, four controllers (: Proportional Derivative, Proportional Integral Derivative, Linear
Quadratic Regulator, and Linear Quadratic Regulator-Proportional Derivative) were tested on a quadcopter Simulink
model created with MATLAB/SIMULINK. Simulation results showed that the Linear Quadratic Regulator-
Proportional Derivative controller was the most effective in terms of stabilization and speed, particularly for hovering
along the x and y axes. This controller was found to be reliable and efficient, providing a smooth and fast response.
Tuning these controllers can optimize the quadcopter's stability, accuracy, and speed, enabling them to perform a
wider range of tasks.
Keywords: Quadcopter, Stability, Controller, accuracy, response.

1 Introduction

In the last decade, quadcopters have become ubiquitous, with their use skyrocketing due to their immense
importance in a variety of fields, such as transportation, agriculture, military, media, and many more. This is largely
attributed to their numerous advantages, including their high performance, ease of takeoff and flight, and the ability
to get tasks done quickly and efficiently. Quadcopters have revolutionized the way we do things, and their impact is
expected to grow more in the coming years.
The control and stabilization of a quadcopter is the most sophisticated part during its design due to the nonlinear
nature of the system [1, 2]. To achieve quadcopter stability, the right combination of hardware and software is
essential, with the latest technology and the best-performing regulator [3]. Without a stable system, it would be
difficult to fly a quadcopter and make it follow the given trajectory [4, 5]. Thus, the stability is the most important
task for a successful flight [6]. To design a controller, several steps must be taken and several concepts must be
understood [7]. Fully understanding the quadcopter motion in 3D-world is considered an essential step in order to
figure out the transformation matrix [8]. The dynamics model can be derived using several types of formulism such
as Newton-Euler or Euler-Lagrange [9]. Additionally, the controller must be able to handle the six degrees of freedom
which are controlled by the motors speed inputs [10].
The derived dynamics model can be simulated on MATLAB/Simulink, where this model can be controlled through
many controllers [11]. These controllers work as a feedback controller to provide the output at desired levels [12].
The PID controller is the most commonly used for quadcopters, where it can be used to stabilize and improve the
performance of the quadcopter due to its simplicity [13]. Each PID controller must be used to calculate the error value
between the measured variable and the desired setpoint for each movement (altitude, roll, pitch and way) [14]. Then,
the corrections apply by minimizing the error value based on the proportional, integral and derivative terms [15]. The
Linear Quadratic Regulator (LQR) is an optimal controller also used for the stabilization of a quadcopter [16]. This
controller based on the state space representation used as integral feedback to make the system reach the steady state
by minimizing the cost function quadratic [17]. There are also many other controllers such as Model Predictive
Controller (MPC), neural-network, and fuzzy-logic, which are considered as learning-based controllers [18–22]. These
controllers are advantageous as they can be used to adapt to changing conditions and can be used to optimize the
performance of the quadcopter.
The aim of this work is to compare the performance and efficiency of four controllers while flying a quadcopter.
In the second section, the motion of the quadcopter will be described in a 3-D world using three coordinates (x, y, z)
to represent its location and three other coordinates (phi, theta, psi) to represent its orientation. Two principal reference
frames will be introduced: an inertial reference frame fixed to the earth, with coordinates aligned with the cardinal
directions (north, east, and vertical direction), and a body reference frame related to the body of the quadcopter, with
its origin at the center of gravity. The transformation between the two references will be then introduced using the
transformation matrix extracted based on Euler angles. In the third section, the Quadcopter Equations of Motion
(translational and rotational) will be derived using the Newton-Euler approach. Furthermore, the state space
representation of the model will be presented as a set of all possible configurations: control (input) matrix, output
matrix, system matrix, and state variables. This representation is essential for any system controlled by an LQR
regulator, as it provides a comprehensive description of the system's behavior. The last section examined four
controllers: Proportional Integral (PD), Proportional Integral Derivative (PID), Linear Quadratic Regulator (LQR),
and Linear Quadratic Regulator-Proportional Derivative (LQR-PD) in terms of their role in quadcopter stabilization,
including the impact of each controller on the stabilization, and the differences in their performance. The performance
of each controller will be evaluated in terms of its ability to stabilize the quadcopter, and its ability to maintain the
desired attitude and position of the quadcopter.
To summarize, this study will be significant in showcasing the effectiveness of the four controllers (PID, PD, LQR,
and LQR-PD) in controlling the quadcopter's motion and ensuring its accurate trajectory in 3D space. The results
obtained from the experiments conducted in this study indicated the controllers' ability to improve the quadcopter's
performance and stability. Moreover, this study provided a comprehensive comparison of the controllers' performance,
which can be utilized as guidance for future research and development in the quadcopter control field.

2. Modeling Quadcopter Dynamics

2.1. Euler Angles

There are two common means to represent the orientation of the quadcopter in three-dimensional space, Euler
angles and quaternions. In this work, Euler angles will be used to describe the orientation of the quadcopter with
respect to the inertial reference frame, because they are the simplest mathematical construct to understand. These
angles can represent any orientation of a body reference frame via 3 sequential rotations about 3 other axes of the
inertial reference frame. These three rotations can be represented by 3 matrices (1, 2 and 3), each matrix representing
a rotation around one of the three axes. The rotation around the x-axis is represented by the angle ϕ, the rotation around
the y-axis is represented by the angle 𝜃, and the rotation around the z-axis is represented by the angle ψ. Furthermore,
these rotations can be combined to form a single rotation matrix, which can be used to transform a vector from the
body reference frame to the inertial reference frame as shown in Figure.1(A). For the purposes of this study, the
quadrotor physical model, shown in Figure 1(B), will be utilized to calculate the constants (m, Ixx, Iyy, and Izz) that
will be used in the simulation. Figure 1(C) presents the quadrotor SolidWorks prototype.

1 0 0
𝑅𝑋𝑏 = [0 𝑐𝑜𝑠𝜙 −𝑠𝑖𝑛𝜙 ] (1)
0 𝑠𝑖𝑛𝜙 𝑐𝑜𝑠𝜙

𝑐𝑜𝑠𝜃 0 𝑠𝑖𝑛𝜃
𝑅𝑌𝑏 = [ 0 1 0 ] (2)
−𝑠𝑖𝑛𝜃 0 𝑐𝑜𝑠𝜃

𝑐𝑜𝑠𝜓 −𝑠𝑖𝑛𝜓 0
𝑅𝑍𝑏 = [ 𝑠𝑖𝑛𝜓 𝑐𝑜𝑠𝜓 0] (3)
0 0 1

(A) (B)

(C)

Fig. 1 (A) quadrotor real model, (B) quadcopter model frames: inertial frame reference and the body frame reference, (C) Quadrotor SolidWorks
prototype
By using matrix multiplication, it is possible to combine the three matrices (1, 2, and 3) of transformations to obtain
a single rotation matrix, denoted as R. This matrix can be used to transform a given vector from one coordinate system
to another, allowing for precise movements and transformations in space as represented in Equation.4.

𝑐𝑜𝑠𝜃 𝑐𝑜𝑠𝜓 𝑐𝑜𝑠𝜃 𝑠𝑖𝑛𝜓 −𝑠𝑖𝑛𝜃


𝑅𝑖𝑏 = 𝑅𝑋𝑏 ∗ 𝑅𝑌𝑏 ∗ 𝑅𝑍𝑏 = [𝑐𝑜𝑠𝜓 𝑠𝑖𝑛𝜃 𝑠𝑖𝑛𝜙 − 𝑠𝑖𝑛𝜓 𝑐𝑜𝑠𝜙 𝑠𝑖𝑛𝜓 𝑠𝑖𝑛𝜃 𝑠𝑖𝑛𝜙 + 𝑐𝑜𝑠𝜓 𝑐𝑜𝑠𝜙 𝑐𝑜𝑠𝜃 𝑠𝑖𝑛𝜙 ] (4)
𝑐𝑜𝑠𝜓 𝑠𝑖𝑛𝜃 𝑐𝑜𝑠𝜙 + 𝑠𝑖𝑛𝜓 𝑠𝑖𝑛𝜙 𝑠𝑖𝑛𝜓 𝑠𝑖𝑛𝜃 𝑐𝑜𝑠𝜙 − 𝑐𝑜𝑠𝜓 𝑠𝑖𝑛𝜙 𝑐𝑜𝑠𝜃 𝑐𝑜𝑠𝜙

Equation.5 represents the transformation from the Inertial reference frame to the Body reference frame. This
Equation is essential for expressing the position and orientation of an object in a different reference frame, as it allows
us to convert coordinates from one frame to the other.

[𝑋𝑏 𝑌𝑏 𝑍𝑏 ]𝑇 = 𝑅𝑖𝑏 ∗ [𝑋 𝑌 𝑍 ]𝑇 (5)

The rotation from the body reference frame to the inertial reference frame can be performed using matrix R. To
perform the reverse rotation, the inverse of matrix R can be used as Equation.6.

𝑐𝑜𝑠𝜃 𝑐𝑜𝑠𝜓 𝑐𝑜𝑠𝜓 𝑠𝑖𝑛𝜃 𝑠𝑖𝑛𝜙 − 𝑠𝑖𝑛𝜓 𝑐𝑜𝑠𝜙 𝑐𝑜𝑠𝜓 𝑠𝑖𝑛𝜃 𝑐𝑜𝑠𝜙 + 𝑠𝑖𝑛𝜓 𝑠𝑖𝑛𝜙
𝑅𝑏𝑖 = [𝑅𝑖𝑏 ]𝑇 = [ 𝑐𝑜𝑠𝜃 𝑠𝑖𝑛𝜓 𝑠𝑖𝑛𝜓 𝑠𝑖𝑛𝜃 𝑠𝑖𝑛𝜙 + 𝑐𝑜𝑠𝜓 𝑐𝑜𝑠𝜙 𝑠𝑖𝑛𝜓 𝑠𝑖𝑛𝜃 𝑐𝑜𝑠𝜙 − 𝑐𝑜𝑠𝜓 𝑠𝑖𝑛𝜙] (6)
−𝑠𝑖𝑛𝜃 𝑐𝑜𝑠𝜃 𝑠𝑖𝑛𝜙 𝑐𝑜𝑠𝜃 𝑐𝑜𝑠𝜙

The Expression.7 is used to convert coordinates from the Body reference frame to the Inertial reference frame. It
is an essential tool for navigation and motion control, as it allows for the accurate tracking of an object’s position and
orientation in space.

[𝑋 𝑌 𝑍]𝑇 = [𝑅𝑖𝑏 ]𝑇 ∗ [𝑋𝑏 𝑌𝑏 𝑍𝑏 ]𝑇 = 𝑅𝑏𝑖 ∗ [𝑋𝑏 𝑌𝑏 𝑍𝑏 ]𝑇 (7)

2.2. Equations of Motion

In order to accurately describe the motion of a quadcopter, it is necessary to identify the necessary variables
(Table.1). These include the coordinates of location (x, y, z) and the coordinates of orientation (ϕ, θ, Ψ), as well as the
linear and angular velocities (u, v, w) and (p, q, r). Additionally, the forces (Fx, Fy, Fz) and moments (Mp, Mq, Mr)
that influence the motion of the quadcopter must also be defined. With these variables in place, a mathematical model
can be developed to accurately describe the motion of the quadcopter.

Table.1. The necessary variables used for the equations of motion


Position velocity Angles Angles rates

x (Position along x axis) 𝑢 ≈ 𝑥̇ (Velocity along x axis) 𝜙 (Roll angle) 𝑝 ≈ 𝜙̇ (Roll rate)

y (Position along y axis) 𝑣 ≈ 𝑦̇ (Velocity along y axis) 𝜃 (Pitch angle) 𝑞 ≈ 𝜃̇ (Pitch rate)

z (Position along z axis) 𝑤 ≈ 𝑧̇ (Velocity along z axis) 𝛹 (Yaw angle) 𝑟 ≈ 𝛹̇ (Yaw rate)
2.2.1. Dynamic equations:

The quadcopter dynamic equations are a powerful tool for engineers to model and control the motion of a
quadcopter. By combining linear acceleration, angular acceleration, and Euler rotational equations derived from
Newton’s laws of motion as presented in Equation.8, engineers can create static and dynamic designs for stability and
predict the behavior of the flying robot Besides, these equations can be used to precisely control the quadcopter with
the help of remote or autonomous controllers.

𝑏
∑𝐹 𝑚 0 𝑣̇ 𝑏 𝜔𝑖 𝑚𝑣 𝑏
[ ]= [ ] [ 𝑏̇ ] [ 𝑏 ] (8)
∑𝑀 0 𝐼 𝜔𝑖 𝜔𝑖 𝐼 𝑏 𝜔𝑖𝑏

2.2.2. Inertia matrix

Calculating the inertia matrix of a quadcopter is an essential step to ensure the performance of the system. The
inertial matrix represents the instantaneous dynamic behavior of a system and is used to determine the equations of
motion. As the quadcopter is symmetric about both the x and y axes, the inertia matrix (I) can be expressed as a 3x3
matrix (matrix.9):

𝐼𝑥𝑥 0 0
𝐼= [0 𝐼𝑦𝑦 0] (9)
0 0 𝐼𝑧𝑧

where Ixx, Iyy, and Izz are the moments of inertia about the x, y, and z-axes, respectively.

2.2.3. Linear acceleration and translational motion

The newton’s second law of motion (Equation.10) states that the force F acting on an object with mass m is equal
to the product of its acceleration a and mass m, where, F = ma. This law can be applied to the quadcopter to explain
the acceleration of its movement. The force acting on the body of the quadcopter results in an acceleration in its
movement, which is proportional to the magnitude of the force and inversely proportional to the mass of the
quadcopter. Therefore, by increasing the force or decreasing the mass of the quadcopter, the acceleration of its
movement can be increased.

𝑑𝑣
𝐹=𝑚 = 𝑚𝑎 (10)
𝑑𝑡

According to Newton’s second law of motion and the Coriolis Theorem, which represents the linear velocity
derivative in the rotating body frame, Equation.10 can be expressed as Equation.11.

𝐹 = 𝑚𝑎 = 𝑚(𝑣̇ 𝑏 + 𝜔𝑖𝑏 × 𝑣 𝑏 ) (11)

Where:
𝑢̇ 𝑏 0 −𝑟 𝑞 𝑢 𝑏 𝑢̇ + 𝑞𝑤 − 𝑟𝑣
𝑏
𝑣̇ = 𝑣̇ + 𝑏
𝑤𝑖𝑏 𝑏
× 𝑣 = [ 𝑣̇ ] + [ 𝑟 0 −𝑝] [ 𝑣 ] = [ 𝑣̇ + 𝑟𝑢 − 𝑝𝑤 ] (12)
𝑤̇ −𝑞 𝑝 0 𝑤 𝑤̇ + 𝑝𝑣 − 𝑞𝑢

vb (Velocity in Body) refers to the velocity in the body reference frame coordinate system, which consists of three
linear velocities (u, v, w) along the three axes (x, y, z). These velocities are measured relative to the body frame, and
are used to calculate the motion of the quadcopter in space.

The gravitational force on the Earth gives weight to physical objects, causing them to be pulled towards the center
of the Earth. This force is responsible for the phenomena of gravity, which affects the motion of objects near the
Earth's surface. it is expressed in the inertial frame as:

𝐹𝑔𝑏 = [0, 0, −𝑚𝑔]𝑇 ∗ 𝑅𝑖𝑏 = [𝑚𝑔𝑠𝑖𝑛𝜃, −𝑚𝑔 𝑐𝑜𝑠𝜃 𝑠𝑖𝑛𝜙 , −𝑚𝑔 𝑐𝑜𝑠𝜃 𝑐𝑜𝑠𝜙]𝑇 (13)

The total thrust force of the four propellers is represented by the sum of their individual thrust forces as
demonstrated by Equation.14, creating a powerful combination that propels the quadcopter upward with a force
greater than the gravitational force. This powerful combination of thrust forces allows the quadcopter to defy gravity
and soar through the air with ease.

𝐹𝑝𝑟𝑜𝑝𝑒𝑙𝑙𝑒𝑟 = [𝐹𝑥 𝐹𝑦 𝐹𝑧 ]𝑇 = [0 0 (𝐹1 + 𝐹2 + 𝐹3 + 𝐹4 )] (14)

The sum of the forces acting on the quadcopter's body is equal to the mass multiplied by the acceleration, which
can be expressed mathematically as Equations.15. Thus, the final version of the law of translational motion will be
expressed as the Equations.16.

𝐹𝑔𝑏 + 𝐹𝑝𝑟𝑜𝑝𝑒𝑙𝑙𝑒𝑟 = 𝑚𝑣̇ 𝑏 (15)

𝑚𝑔𝑠𝑖𝑛𝜃 𝑢̇ + 𝑞𝑤 − 𝑟𝑣
[ −𝑚𝑔 𝑐𝑜𝑠𝜃 𝑠𝑖𝑛𝜙 ] = 𝑚 [ 𝑣̇ + 𝑟𝑢 − 𝑝𝑤 ] (16)
−𝑚𝑔 𝑐𝑜𝑠𝜃 𝑐𝑜𝑠𝜙 + (𝐹1 + 𝐹2 + 𝐹3 + 𝐹4 ) 𝑤̇ + 𝑝𝑣 − 𝑞𝑢

2.2.4. Angular acceleration and rotational motion

The equation of the force F can also be used to express the moment M. By multiplying both sides of Equation.10
with the position vector r, we can obtain the rotational law of motion, which is expressed as the moment M in the
Equation.18.

𝑑𝑣
𝐹∗𝑟=𝑚 ∗𝑟 (17)
𝑑𝑡

𝑑𝐻 𝑑𝜔
𝑀= =𝐼 = 𝐼Ω (18)
𝑑𝑡 𝑑𝑡

According to Newton's Second Law of Motion and the Coriolis Theorem which represents the angular velocity
derivative. The rotational motion can be expressed by Equation.19.
𝑑𝐻
𝑀= = 𝐼 𝑏 𝜔𝑖̇𝑏 + 𝜔𝑖𝑏 × 𝐼 𝑏 𝜔𝑖𝑏 (19)
𝑑𝑡

𝑤𝑖𝑏 refers to the angular velocity in the body reference frame coordinate system, which is composed of three angular
velocities (p, q, r) around the three axes (x, y, z). These angular velocities represent the rate of change of the orientation
of the body with respect to the inertial frame.

Thus, the final version of the law of rotational motion will be expressed as the Equation.21.

𝑀𝑝 𝐼𝑥𝑥 0 0 𝑝̇ 0 −𝑟 𝑞 𝐼𝑥𝑥 0 0 𝑝
[𝑀𝑞 ] = [ 0 𝐼𝑦𝑦 0 ] [𝑞̇ ] + [ 𝑟 0 −𝑝] [ 0 𝐼𝑦𝑦 0 ] [𝑞 ] (20)
𝑀𝑟 0 0 𝐼𝑧𝑧 𝑟̇ −𝑞 𝑝 0 0 0 𝐼𝑧𝑧 𝑟

𝑀𝑝 𝐼𝑥𝑥 𝑝̇ −𝐼𝑦𝑦 𝑞𝑟 + 𝐼𝑧𝑧 𝑞𝑟


[𝑀𝑞 ] = [𝐼𝑦𝑦 𝑞̇ ] + [ 𝐼𝑥𝑥 𝑝𝑟 − 𝐼𝑧𝑧 𝑝𝑟 ] (21)
𝑀𝑟 𝐼𝑧𝑧 𝑟̇ −𝐼𝑥𝑥 𝑝𝑞 + 𝐼𝑦𝑦 𝑝𝑞

2.3. State space

Differential equations are the fundamental models of dynamic physical systems, obtained by applying the relevant
laws of nature. To make the analysis of these equations more efficient, they can be rewritten as first-order differential
equations, known as the state space representation. This representation consists of inputs and outputs as a set, in
addition to a set of state variables. By using this representation, the dynamic behavior of the system can be studied
more effectively, as it allows for the analysis of the system's response to different inputs. Furthermore, it can be used
to determine the stability of the system, as well as to design controllers for the system.

𝑥̇ (𝑡) = 𝐴𝑥(𝑡) + 𝐵𝑢(𝑡)


{ (22)
𝑦(𝑡) = 𝐶𝑥(𝑡) + 𝐷𝑢(𝑡)

Where:

x(t): State Vector, y(t): Output Vector, U(t): Control Vector, A: System matrix, B: Input matrix
C: Output matrix, D: Feed forward matrix.
To represent the quadcopter using the state space representation, the twelve (states) differential equations can be
written as shown in Table.2 in order to obtain the matrices used in the Equation.23, and the Equation.24 as a 6 DOF
state space model. These matrices can be used to describe the motion of the quadcopter in terms of its position,
velocity, attitude, and angular velocity. The state space model can be used to simulate the quadcopter's motion in
various conditions and environments, allowing for the optimization of the control system and the development of more
efficient and reliable quadcopters.
Table.2. State Differential Equations
Linear velocity Linear acceleration Angular velocity Angular acceleration
𝑥̇ = 𝑢 𝑢̇ = −𝑔𝜃 𝜙̇ = 𝑝 𝑝̇ = 𝑈2 /𝐼𝑥𝑥

𝑦̇ = 𝑣 𝑣̇ = 𝑔𝜙 𝜃̇ = 𝑞 𝑞̇ = 𝑈3 /𝐼𝑦𝑦

𝑧̇ = 𝑤 𝑤̇ = 𝑈1 /𝑚 𝛹̇ = 𝑟 𝑟̇ = 𝑈4 /𝐼𝑧𝑧

𝑥̇ (𝑡) = 𝐴𝑥(𝑡) + 𝐵𝑢(𝑡)


𝑥̇ 0 0 0 1 0 0 0 0 0 0 0 0 𝑥 0 0 0 0
𝑦̇ 0 0 0 0 1 0 0 0 0 0 0 0 𝑦 0 0 0 0
𝑧̇ 0 0 0 0 0 1 0 0 0 0 0 0 𝑧 0 0 0 0
𝑢̇ 0 0 0 0 0 0 0 −𝑔 0 0 0 0 𝑢 0 0 0 0
𝑣̇ 0 0 0 0 0 0 𝑔 0 0 0 0 0 𝑣 0 0 0 0 𝑈1
𝑤̇ 0 0 0 0 0 0 0 0 0 0 0 0 𝑤 1/𝑚 0 0 0 𝑈2
= + 0 0 [𝑈3 ] (23)
Φ̇ 0 0 0 0 0 0 0 0 0 1 0 0 Φ 0 0
Θ̇ 0 0 0 0 0 0 0 0 0 0 1 0 Θ 0 0 0 0 𝑈4
Ψ̇ 0 0 0 0 0 0 0 0 0 0 0 1 Ψ 0 0 0 0
𝑝̇ 0 0 0 0 0 0 0 0 0 0 0 0 𝑝 0 1/𝐼𝑥𝑥 0 0
𝑞̇ 0 0 0 0 0 0 0 0 0 0 0 0 𝑞 0 0 1/𝐼𝑦𝑦 0
[ 𝑟̇ ] [0 0 0 0 0 0 0 0 0 0 0 0] [ 𝑟 ] [ 0 0 0 1/𝐼𝑧𝑧 ]
𝑦(𝑡) = 𝐶𝑥(𝑡) + 𝐷𝑢(𝑡)
𝑥 1 0 0 0 0 0 0 0 0 0 0 0 𝑥 0 0 0 0 0 0 0 0 0 0 0 0
𝑦 0 1 0 0 0 0 0 0 0 0 0 0 𝑦 0 0 0 0 0 0 0 0 0 0 0 0
𝑧 0 0 1 0 0 0 0 0 0 0 0 0 𝑧 0 0 0 0 0 0 0 0 0 0 0 0
𝑢 0 0 0 1 0 0 0 0 0 0 0 0 𝑢 0 0 0 0 0 0 0 0 0 0 0 0
𝑣 0 0 0 0 1 0 0 0 0 0 0 0 𝑣 0 0 0 0 0 0 0 0 0 0 0 0 𝑈1
𝑤 0 0 0 0 0 1 0 0 0 0 0 0 𝑤 0 0 0 0 0 0 0 0 0 0 0 0 𝑈2
= + [ ](24)
Φ 0 0 0 0 0 0 1 0 0 0 0 0 Φ 0 0 0 0 0 0 0 0 0 0 0 0 𝑈3
Θ 0 0 0 0 0 0 0 1 0 0 0 0 Θ 0 0 0 0 0 0 0 0 0 0 0 0 𝑈4
Ψ 0 0 0 0 0 0 0 0 1 0 0 0 Ψ 0 0 0 0 0 0 0 0 0 0 0 0
𝑝 0 0 0 0 0 0 0 0 0 1 0 0 𝑝 0 0 0 0 0 0 0 0 0 0 0 0
𝑞 0 0 0 0 0 0 0 0 0 0 1 0 𝑞 0 0 0 0 0 0 0 0 0 0 0 0
[𝑟] [0 0 0 0 0 0 0 0 0 0 0 1] [ 𝑟 ] [ 0 0 0 0 0 0 0 0 0 0 0 0]
Where:

𝑼𝟏 : Total upward force on the quadcopter along z-axis (T – mg).


𝑼𝟐 : Pitch torque about y-axis
𝑼𝟑 : Roll torque about x-axis
𝑼𝟒 : Yaw torque about z-axis
And: Ixx = 4.8 * 10-2 (Kg.m2); Iyy = 4.8 * 10-2 (Kg.m2); Izz = 8.5 * 10-2 (Kg.m2); m = 1.2 kg; g = 9.81 m/s2
2.4. Formulas employed to determine the trajectory

By utilizing a series of mathematical formulas (Equations: 25, 26 and 27), the trajectory that will be taken by the
quadcopter will be accurately determined and graphically represented in three-dimensional space. This provided a
clear visual representation of the path that the quadcopter will follow, allowing for a more precise and efficient flight.
𝑥 = 2 ∗ 𝑠𝑖𝑛(0.3 ∗ 𝑡) (25)

𝑦 = 2 − 2 ∗ 𝑐𝑜𝑠(0.3 ∗ 𝑡) (26)

𝑧 = 3 + 1 ∗ 𝑠𝑖𝑛(0.6 ∗ 𝑡) (27)

3. Simulation

The simulation could be done as a virtual representation of a real-world under MATLAB, Simulink in many
conditions to see how the quadcopter behaves. The Simulink model will be established using the mathematical model
that is based on the newton’s second law of motion, in addition to the necessary quadcopter parameters that are
prepared and written above. After establishing the virtual model, the first step is to test the system more frequently,
validate the model to ensure and maintain the tests, then the model must be linked with the four controllers: PD, PID,
LQR, and LQR-PD. In addition, the simulation must be done in the discrete time domain in order to study the behavior
of the system according to a given path. This domain deals with the values of variables as points in time. Figure 2(A)
illustrates the general model of quadcopter includes the controllers, and the Figure 2(B) illustrates the model of
dynamic equations under MATLAB-Simulink.

(A)
(B)

Fig.2 (A) The quadcopter models include the controllers, (B) Simulink model of the dynamic equations

3.1. PID controller

The PID controller is a control system that improves the performance in a closed loop system or process. It is the
most used controller in the industry and acts in three ways: Proportional action, where the error is multiplied by a gain
Kp; Integral action, where the error is integrated and multiplied by a gain Ki; and Derivative action, where the error is
derived and multiplied by a gain Kd. These three components can be tuned and work together to achieve the desired
performance. The two other proportional gains (P_E and PAngle_E) are used with the PID to reduce the position and
angle error as shown in Figure 3(A)

The optimal values of P_e, PAngle_E and the PID gains obtained to stabilize the quadcopter for the four
movements are shown in Table 3 These values are essential for the successful operation of the quadcopter, as they
ensure that the system is able to maintain a stable flight and respond to external disturbances.

3.2. PD controller

The PD controller is a type of PID that acts without Integral action. It works by multiplying the error by two
proportional gains, Kp and Kd, to reduce the position and angle errors respectively. The proportional gain, K p,
multiplies the error directly, while the derivative gain, K d, multiplies the rate of change of the error. This allows the
controller to respond quickly to changes in the system, while still maintaining a stable output. The two other
proportional gains (P_E and PAngle_E) are used with the PID to reduce the position and angle error as shown in
Figure 3(C).

The optimal values of P_e, PAngle_E and the PD gains obtained to stabilize the quadcopter for the four movements
are shown in Table 3. These values are essential for the successful operation of the quadcopter, as they ensure that the
system is able to maintain a stable flight and respond quickly and accurately to external disturbances.
3.3. LQR controller

The Linear Quadratic Regulator (LQR) is an important concept in the field of control theory that is widely used in
engineering systems. It allows for the tracking of a desired trajectory and provides optimal control inputs based on an
optimal cost function. The principles behind the LQR theory have been a key factor in the development of
sophisticated control systems, providing significant practical and theoretical advancements in a wide range of
industries. Figure 3(B) illustrates the implementation of the LQR controller in the quadcopter model for stability and
control.

The stability of the quadcopter is dependent on the optimal matrix K, which can be found by executing the Linear
Quadratic Regulator (LQR) command. This command is essential for finding the optimal matrix K, which is presented
in Table 4, and is essential for ensuring the quadcopter's stability and performance.

3.4. Hybrid LQR controller (LQR-PD)

The hybrid LQR (LQR-PD) controller is a combination of two principal controllers, the combined PD and LQR
controller, designed to improve the response of the LQR controller. The stability of the system is dependent on the
optimal matrix K (Table 4), in addition to the PD gains (Table 3). This hybrid controller is advantageous as it combines
the advantages of both the PD and LQR controllers (Figure 3(D)), allowing for improved system performance and
stability.

Table 3: PID parameters, PD parameters, and LQR-PD parameters


States (PID) P_E PAngle_E Kp Ki Kd

Roll 0.5 0.15 1.39 0.27 0.38

Pitch 0.5 0.15 15.09 5.05 7.89

Yaw Nan Nan 0.7 0.7 0.4

Altitude Nan Nan 5 0.2 0.2

States (PD)

Roll 0.5 0.15 5 Nan 1.2

Pitch 0.5 0.15 8 Nan 1.5

Yaw Nan Nan 1 Nan 1

Altitude Nan Nan 10 Nan 1

States (LQR-PD)

Roll Nan Nan 0.022 Nan 0.25

Pitch Nan Nan 0.015 Nan 0.26


Yaw Nan Nan 0.02 Nan 0.21

Altitude Nan Nan 0.01 Nan 0.2

(A)

(B)

(C)
(D)

Fig. 3 (A) Simulink model of PID controller, (B) Simulink model for LQR controller, (C) Simulink model of PD controller, (D) Simulink model
for LQR-PD controller

Table 4: The optimal matrix K for quadcopter stabilization

K Matrix

3.82 -5.59 2.42 4.84 2.04 -1.08 9.05 2.37 -6.77 -1.86
1 1.84
10-16 10-17 10-16 10-16 10-15 10-15 10-17 10-16 10-17 10-16

1.42 -5.20 1.81 -7.42 -6.41 2.14 -9.87 -9.75


1 1.49 6.08 1.25
10-15 10-16 10-15 10-16 10-15 10-16 10-16 10-17

7.20 -3.05 1.13 4.09 3.68 5.61 7.82 4.32


-1 -1.49 6.08 1.25
10-16 10-17 10-15 10-16 10-15 10-16 10-16 10-16

1.32 -6.53 2.66 3.54 -8.64 5.69 -4.34 -1.50 -7.81 -6.01
1 1.08
-16 -16 -16 -16 -16 -16 -15 -15 -17
10 10 10 10 10 10 10 10 10-16 10
4. Results and discussion

The results obtained from the simulation using a unit step function and a trajectory generated by mathematical
equations as commands have been analyzed and compared. The performance of each controller has been evaluated
and the differences between them have been highlighted. The results demonstrate the effectiveness of each controller
in achieving the desired target. Furthermore, the results provide insight into the strengths and weaknesses of each
controller, allowing for informed decisions to be made when selecting a controller for given application.

4.1 The step results

After running the simulation with the unit step response as a reference for the movement on the three axes, the
figures below illustrate the displacement and velocity of each movement as controlled by the respective controllers.

The motion along x-axis produced by a torque around y-axis, known as pitch movement, allows a quadcopter to
move forward or backward. Figure 4(A) illustrates the motion and velocity along the x-axis, showing that the LQR-
PD controller has the best and fastest response with a rise time of 1.85 seconds and an overshoot of 1.50%. The LQR
controller has an overshoot of 0.5%, but is slower than the LQR-PD with a rise time of 2.38 seconds. The PD regulator
has an overshoot of 0.51% and a rise time of 2.99 seconds. The PID controller has an overshoot of 1.53% and a rise
time of 2.82 seconds. Overall, the LQR-PD controller has the best and fastest response, followed by the LQR
controller, then the PD controller, and finally the PID controller, which is the slowest with the highest overshoot.

The motion along y-axis is produced by applying a torque around x-axis, a movement known as roll. This
movement allows the quadcopter to move right or left, and due to its symmetric design, the roll movement is almost
identical to the pitch movement. The results of the y-movement according to the different controllers are shown in
Figure 4(B) The LQR-PD regulator had the best and fastest response, with a rise time of 1.90 seconds and an overshoot
of 1.53%. The LQR controller had an overshoot of 0.50%, but was slower than the LQR-PD with a rise time of 2.37
seconds. The PD regulator had an overshoot of 0.51% and a rise time of 3.10 seconds. Lastly, the PID regulator had
an overshoot of 3.65% and a rise time of 2.92 seconds. To summarize, the LQR-PD had the best and fastest response,
followed by the LQR, PD, and finally the PID, which was the slowest with the highest overshoot.

The vertical motion along the z-axis is an essential movement of quadcopter flight, allowing the quadcopter to
ascend and descend. To achieve this motion, a thrust force is applied along the z-axis, which is opposite to the
gravitational force. Figure 4(C) demonstrates that the PD controller has the best and fastest response, with a rise time
of 1.362 seconds and an overshoot of 0.5%. The PID controller follows with a rise time of 1.684 seconds and an
overshoot of 0.47%. The LQR regulator has the worst rise time of 2.539 seconds with a small overshoot of 0.55%,
while the LQR-PD has the biggest overshoot of 2.58% and a rise time of 2.097 seconds. It is clear that the PD controller
is the best regulator for the vertical motion.
(A)

(B)

(C)
Fig.4 (A) Response of four controllers in the motion along the x-axis according to the unit step function, (B) Response of four controllers in the
motion along the y-axis according to the unit step function, (C) Response of four controllers in the motion along the z-axis according to the unit
step function

4.2 The trajectory results

A specific path was used to study the movement of the quadcopter on the three axes (x-axis, y-axis, and z-axis),
and its ability to follow the given path using the four controllers stated above. To obtain the desired path, three
Equations (25, 26, and 27) were formulated and implemented in the MATLAB editor:

Figure 5(A) illustrate the response of the controllers (PID, PD, LQR, and LQR-PD) on the x-axis according to the
given path, where it shows the displacement and the velocity along the x-axis. It is evident that the LQR-PD controller
has the best and fastest performance, as it is the closest to the given path. Moreover, the response of the LQR-PD
controller is more accurate and precise than the other controllers.

In Figure 5(B) the response of the four controllers (PID, PD, LQR and LQR-PD) on the y-axis is illustrated. The
figure presents the displacement and the velocity along the y-axis respectively. It is evident that the LQR-PD has the
best and fastest response, similar to the x-axis response.
For the Altitude movement, the displacement and velocity responses of each controller were illustrated in the
Figure 5(C) It can be seen that there is a difference between the response of each controller, where, the displacement
results shows that the response of the PD controller has the best performance since it is the closest to the given path,
followed by the response of the PID regulator, then the response of LQR-PD, and finally the response of the LQR was
the least performance. With respect to the velocity, the results show that the response of the PD controller was the
fastest, followed by the response of the other controllers, PID, LQR-PD and LQR sequentially.

(A)

(B)

(C)

Fig. 5 (A) Response of four controllers in the motion along the x-axis according to a specific path, (B) Response of four controllers in the motion
along the y-axis according to a specific path, (C) Response of four controllers in the motion along the z-axis according to a specific path

Finally, the results of the movement on the three axes can be summarized in a three-dimensional graph, which
clearly illustrate the movement and performance of the quadcopter for each controller. These graphs provide a
comprehensive overview of the quadcopter's performance, allowing for easy comparison between the different
controllers (Figure 6).
(A) (B)

(C) (D)

Figure 6. The results of the four controllers in 3D space: (A) PID graph, (B) PD graph, (C) LQR graph, (D) LQR-PD graph.

4.3. A Summary of the Key Findings

In summary, the performance of the four controllers (PID, Pd, LQR, and LQR-PD) was studied and compared
using two methods. Regarding the movement along the x-axis and y-axis, as represented in Figure 6 and Table 5, the
results demonstrate that the LQR-PD controller consistently outperformed the other controllers in terms of tracking
accuracy and robustness. It was able to track the desired trajectory with higher accuracy than the other controllers,
while the LQR controller was slightly less accurate and robust than the LQR-PD controller. The PID and PD
controllers were the least accurate and least robust of the four controllers. Despite being slightly slower and less
accurate and robust in terms of vertical movement, the LQR-PD controller was the best performer of the four
controllers and is thus recommended for quadcopter applications requiring high accuracy and robustness during
hovering flight.
Table 5. Performance comparison in term of rise time and overshoot between the controllers
controller rise time (s) Overshoot (%)

PID 2.821 1.53

PD 2.998 0.51
X motion
LQR 2.383 0.50

LQR-PD 1.853 1.50

PID 2.92 3.65

PD 3.10 0.51
Y motion
LQR 2.37 0.50

LQR-PD 1.90 1.53

PID 1.684 0.47

PD 1.362 0.50
Z motion
LQR 2.539 0.55

LQR-PD 2.097 2.58

5 Conclusion

The aim of the present research was about to study the behavior of a quadcopter using four different controllers
(PD, PID, LQR, and LQR-PD). Four models of a quadcopter were designed using MATLAB/SIMULINK, each model
with a controller. A step command was given to the four models for the movements along the three axes (x-axis, y-
axis, and z-axis). The results obtained indicate that the LQR-PD controller has the best and fastest response on the
movements along the two axes (x-axis and y-axis), while the PD regulator has the best response for vertical movement.
Moreover, a trajectory in 3D space was used to evaluate the performance of each controller during the hovering flight.
Three mathematical equations were employed to generate the path, and the results of the evaluation showed that the
LQR-PD controller was the most effective in terms of stabilization, robustness, and accuracy. Subsequently, the
performance of the LQR controller was very close to the previous controller, while the performance of the other
controllers (PID and Pd) was not satisfactory.
Conflict of interest
There is no conflict of interest
6 References

[1] M. S. Esmail, M. H. Merzban, A. A. M. Khalaf, H. F. A. Hamed, and A. I. Hussein, “Attitude and Altitude Nonlinear Control
Regulation of a Quadcopter Using Quaternion Representation,” IEEE Access, vol. 10, pp. 5884–5894, 2022, doi:
10.1109/ACCESS.2022.3141544.

[2] S. Ullah, A. Mehmood, Q. Khan, S. Rehman, and J. Iqbal, “Robust Integral Sliding Mode Control Design for Stability
Enhancement of Under-actuated Quadcopter,” Int. J. Control Autom. Syst., vol. 18, no. 7, pp. 1671–1678, Jul. 2020, doi:
10.1007/s12555-019-0302-3.

[3] S. Zhu, X. Huang, D. Jiang, and Z. Wu, “Low-cost Electric Bus Stability Enhancement Scheme Based on Fuzzy Torque
Vectoring Differentials: Design and Hardware-in-the-loop Test,” IFAC-Pap., vol. 54, no. 10, pp. 500–507, 2021, doi:
10.1016/j.ifacol.2021.10.212.

[4] J. L. Mendoza-Soto, J. J. Corona-Sánchez, and H. Rodríguez- Cortés, “Quadcopter Path Following Control. A Maneuvering
Approach,” J. Intell. Robot. Syst., vol. 93, no. 1–2, pp. 73–84, Feb. 2019, doi: 10.1007/s10846-018-0801-0.

[5] D. Asadi, K. Ahmadi, and S. Y. Nabavi, “Fault-tolerant Trajectory Tracking Control of a Quadcopter in Presence of a Motor
Fault,” Int. J. Aeronaut. Space Sci., vol. 23, no. 1, pp. 129–142, Feb. 2022, doi: 10.1007/s42405-021-00412-9.

[6] K. R. Roy, L. M. Waghmare, and B. M. Patre, “Dynamic modeling and displacement control for differential flatness of
quadrotor UAV slung-load system,” Int. J. Dyn. Control, Jul. 2022, doi: 10.1007/s40435-022-00996-4.

[7] A. A. Najm and I. K. Ibraheem, “Nonlinear PID controller design for a 6-DOF UAV quadrotor system,” Eng. Sci. Technol.
Int. J., vol. 22, no. 4, pp. 1087–1097, Aug. 2019, doi: 10.1016/j.jestch.2019.02.005.

[8] I. S. Leal, C. Abeykoon, and Y. S. Perera, “Design, Simulation, Analysis and Optimization of PID and Fuzzy Based Control
Systems for a Quadcopter,” Electronics, vol. 10, no. 18, p. 2218, Sep. 2021, doi: 10.3390/electronics10182218.

[9] A. Irfan, M. G. Khan, A. A. Amin, S. A. Mohsin, M. Adnan, and A. Zulfiqar, “Model-Based Design, HIL Testing, and Rapid
Control Prototyping of a Low-Cost POC Quadcopter with Stability Analysis and Control,” Complexity, vol. 2022, pp. 1–16,
Mar. 2022, doi: 10.1155/2022/1492170.

[10] M. Fanni and A. Khalifa, “A New 6-DOF Quadrotor Manipulation System: Design, Kinematics, Dynamics, and
Control,” IEEEASME Trans. Mechatron., vol. 22, no. 3, pp. 1315–1326, Jun. 2017, doi: 10.1109/TMECH.2017.2681179.

[11] M. N. Shauqee, P. Rajendran, and N. M. Suhadis, “An effective proportional-double derivative-linear quadratic
regulator controller for quadcopter attitude and altitude control,” Automatika, vol. 62, no. 3–4, pp. 415–433, Oct. 2021, doi:
10.1080/00051144.2021.1981527.

[12] M. N. A. Parlakci and E. M. Jafarov, “A robust delay-dependent guaranteed cost PID multivariable output feedback
controller design for time-varying delayed systems: An LMI optimization approach,” Eur. J. Control, vol. 61, pp. 68–79,
Sep. 2021, doi: 10.1016/j.ejcon.2021.06.003.

[13] Y. F. Hanna, A. A. Khater, A. M. El-Nagar, and M. El-Bardini, “Polynomial Recurrent Neural Network-Based
Adaptive PID Controller With Stable Learning Algorithm,” Neural Process. Lett., Aug. 2022, doi: 10.1007/s11063-022-
10989-1.

[14] J. Yoon and J. Doh, “Optimal PID control for hovering stabilization of quadcopter using long short term memory,”
Adv. Eng. Inform., vol. 53, p. 101679, Aug. 2022, doi: 10.1016/j.aei.2022.101679.

[15] J. Choi, D. Cheon, and J. Lee, “Robust Landing Control of a Quadcopter on a Slanted Surface,” Int. J. Precis. Eng.
Manuf., vol. 22, no. 6, pp. 1147–1156, Jun. 2021, doi: 10.1007/s12541-021-00523-z.

[16] A. Acakpovi, F.-X. Fifatin, M. Aza-Gnandji, F. Kpadevi, and J. Nyarko, “Design and Implementation of a Quadcopter
Based on a Linear Quadratic Regulator (LQR),” J. Digit. Food Energy Water Syst., vol. 1, no. 1, Dec. 2020, doi:
10.36615/digitalfoodenergywatersystems.v1i1.409.

[17] F. Ahmad, P. Kumar, A. Bhandari, and P. P. Patil, “Simulation of the Quadcopter Dynamics with LQR based Control,”
Mater. Today Proc., vol. 24, pp. 326–332, 2020, doi: 10.1016/j.matpr.2020.04.282.
[18] B. Li and Y. Wang, “An Enhanced Model Predictive Controller for Quadrotor Attitude Quick Adjustment with Input
Constraints and Disturbances,” Int. J. Control Autom. Syst., vol. 20, no. 2, pp. 648–659, Feb. 2022, doi: 10.1007/s12555-020-
0815-9.

[19] F. Pakro and A. A. Nikkhah, “A fuzzy adaptive controller design for integrated guidance and control of a nonlinear
model helicopter,” Int. J. Dyn. Control, Jul. 2022, doi: 10.1007/s40435-022-00993-7.

[20] R. Abedzadeh Maafi, S. Etemadi Haghighi, and M. J. Mahmoodabadi, “Pareto optimal design of a fuzzy adaptive
sliding mode controller for a three-link model of a biped robot via the multi-objective improved team game algorithm,” J.
Braz. Soc. Mech. Sci. Eng., vol. 44, no. 9, p. 428, Sep. 2022, doi: 10.1007/s40430-022-03719-0.

[21] M. Joo, J. Yoon, A. R. Junejo, and J. Doh, “Optimization: Drone-Operated Metal Detection Based on Machine
Learning and PID Controller,” Int. J. Precis. Eng. Manuf., vol. 23, no. 5, pp. 503–515, May 2022, doi: 10.1007/s12541-022-
00639-w.

[22] S. H. Hong, J. Ou, and Y. Wang, “Physics-guided neural network and GPU-accelerated nonlinear model predictive
control for quadcopter,” Neural Comput. Appl., Sep. 2022, doi: 10.1007/s00521-022-07783-4.

You might also like