Keywords

1 Introduction

Recently, the multi-rotor type UAV has been used for various missions, including transport payload, relay communication, and scanning. However, requirements in such missions usually include a wide range and long operational time. But, a multi-rotor type UAV is not an adequate system because it is known to have short range and endurance, unlike conventional fixed-wing type UAVs. To solve this problem, a Quad-Tiltrotor type UAV has been developed by combining multi-rotor type UAV and fixed-wing to use the advantages of both: vertical take-off and landing ability and long endurance and range.

The structure of the quad-tiltrotor has additional tilt-able motors attached to the conventional fixed-wing UAV. Depending on the tilt angle of the motors, the quad-tiltrotor changes the operating modes among hover, transition, and forward flight. In all three modes, the quad-tiltrotor is influenced by aerodynamic forces and moments from the wings. In hover mode, the quad-tiltrotor experiences a high angle of attack and side-slip angle more frequently than is the case for conventional fixed-wing aircraft, during which highly nonlinear aerodynamic force and moment occur. And, the quad-tiltrotor has a transition mode between hover and forward flight. During transition mode, the quad-tiltrotor influences the aerodynamic force and moment because tilted motor increases total velocity. Both wind tunnel experiments and Computational Fluid Dynamics (CFD) analysis, used for estimating aerodynamic coefficients, are performed to acquire aerodynamic coefficients at different angles of attack (AOA) and side-slip angles (AOS). The problem with these methods of obtaining aerodynamic characteristics is that at the stall AOA and AOS regions of the wing or the aircraft, analysis tends to show inaccurate results, making it hard to find exact governing functions in that range. This poses another problem inherent in the quad-tiltrotor platform compared to the quadrotor system in hover mode: it has a fixed-wing aircraft body and easily experiences high angle of attack and side-slip angle.

Among many previous studies, the backstepping and Nonlinear Dynamic Inversion (NDI) methods have been used to overcome the strong nonlinearity of the quad-tiltrotor. When the motor is tilted, backstepping is applied to the altitude controller to overcome the deteriorating performance [1]. In transition mode, nonlinear dynamic inversion is applied to the attitude controller for the quad-tiltrotor for stable flight [2]. However, these model-based control methods have a limitation because obtaining model parameters like the aerodynamic coefficients of the quad-tilt rotor is very difficult and hence stable flight cannot be guaranteed. The Model Reference Adaptive Control (MRAC) scheme has also been attempted to solve this problem [3], but this method also has the disadvantage that knowledge of the function of the uncertainty is necessary. The neural network-based Model Reference Adaptive Control including Radial Basis Function (RBF) was also proposed, but it has the limitation that selecting the center of the RBF is very sensitive to the performance [4].

Therefore, we propose an adaptive controller that uses Gaussian Process Regression (GPR) to estimate uncertainties adaptively with a feedback linearization control law as a baseline controller. GPR is a Bayesian non-parametric regression method to estimate a posteriori a state with an unknown function. We implemented GPR in the control law for stable flight performance and robustness without prior domain knowledge of uncertainty or its governing function.

The contribution of our work is that when the aerodynamic coefficient is not accurate, Gaussian Process-based Feedback Linearization (GP-FL) exactly compensates for the uncertainty, allowing stable flight without prior information on uncertainties from aerodynamics.

The remainder of this paper is organized as follows: Sect. 2 presents modelling of the quad-tiltrotor dynamics. Section 3 demonstrates the proposed controller, which integrates feedback linearization and GPR for uncertainties in attitude and altitude control. Section 4 provides simulation results of the proposed control law under aerodynamics uncertainties. Finally, Sect. 5 is devoted to concluding remarks.

2 Mathematical Modelling

This section demonstrates the mathematical modelling of the quad-tiltrotor. The shape of the quad-tiltrotor is shown in Fig. 1. As mentioned, the quad-tiltrotor structure is a conventional fixed-wing UAV with an additional thrust motor that can be tilted. The quad-tiltrotor we designed used a servo motor to change the operational mode by tilting only the front two motors.

Fig. 1
Top view of a tiltotor model. It has basic parts such as the head, nacelle, wings, and tail. In front of the plane is the inertial frame. It is labeled as I and has two angles. The body-fixed frame, labeled as B, also has two angles and is located at the geometric center of the wings.

Dynamic model of tiltrotor

2.1 Kinematics of Quad-Tiltrotor

Before obtaining the kinematics of the Quad-Tiltrotor, the inertial frame and body-fixed frame should be defined. The inertial frame {I} is defined as the North-East-Down frame (NED). And, the body-fixed frame {B} is located at the geometric center of quad-tiltrotor. The rotation matrix transforms any vector in the body-fixed frame to the inertial frame. \({\upeta } = \left[ {\begin{array}{*{20}c} x & y & z \\ \end{array} } \right]^{T} \) and \(\Omega { } = \left[ {\begin{array}{*{20}c} \phi & \theta & \psi \\ \end{array} } \right]^{T}\) represent the position and Euler angles, measured in the inertial frame. \({\text{ V}} = \left[ {\begin{array}{*{20}c} u & v & w \\ \end{array} } \right]^{T}\) and \(\upomega { } = \left[ {\begin{array}{*{20}c} p & q & r \\ \end{array} } \right]^{T}\) represent the velocity vector and angular rate, measured in the body-fixed frame.

$$ R_{I}^{B} = \left( {R_{B}^{I} } \right)^{T} = R_{1} \left( \phi \right)R_{2} \left( \theta \right)R_{3} \left( \psi \right) = \left[ {\begin{array}{*{20}c} {c_{\psi } c_{\theta } } & {c_{\theta } s_{\psi } } & { - s_{\theta } } \\ {c_{\psi } s_{\phi } s_{\theta } - c_{\phi } s_{\psi } } & {c_{\phi } c_{\psi } + s_{\phi } s_{\theta } s_{\psi } } & {c_{\theta } s_{\psi } } \\ {s_{\phi } s_{\psi } + c_{\phi } c_{\psi } s_{\theta } } & {c_{\phi } s_{\theta } s_{\psi } - c_{\psi } s_{\phi } } & {c_{\phi } c_{\theta } } \\ \end{array} } \right] $$
(1)
$$ {\text{S}}\left( {\Omega } \right) = \left[ {\begin{array}{*{20}c} 1 & {s_{\phi } t_{\theta } } & {c_{\phi } t_{\theta } } \\ 0 & {c_{\phi } } & { - s_{\phi } } \\ 0 & {s_{\phi } /c_{\theta } } & {c_{\phi } /c_{\theta } } \\ \end{array} } \right] $$
(2)
$$ {\dot{\upeta}} = R_{B}^{I} V,\dot{\Omega } = {\text{S}}(\Omega )\upomega $$
(3)

2.2 Dynamics of Quad-Tiltrotor

The dynamics model of the quad-tiltrotor can be derived using the linear momentum and angular momentum equations.

$$ \begin{aligned} \sum {\varvec{F}} & = \frac{{\varvec{d}}}{{{\varvec{dt}}}}\left( {{\varvec{mV}}} \right)_{{\varvec{I}}} = \frac{{\varvec{d}}}{{{\varvec{dt}}}}\left( {{\varvec{mV}}} \right)_{{\varvec{B}}} + {\mathbf{m}}\left( {{{\varvec{\upomega}}} \times {\varvec{V}}_{{\varvec{B}}} } \right) \\ \left[ {\begin{array}{*{20}c} {\dot{\user2{u}}} \\ {\dot{\user2{v}}} \\ {\dot{\user2{w}}} \\ \end{array} } \right] & = \left[ {\begin{array}{*{20}c} {{\varvec{rv}} - {\varvec{qw}}} \\ {{\varvec{pw}} - {\varvec{ru}}} \\ {{\varvec{qu}} - {\varvec{pv}}} \\ \end{array} } \right] + \frac{1}{{\varvec{m}}}\left[ {\begin{array}{*{20}c} {{\varvec{F}}_{{\varvec{x}}} } \\ {{\varvec{F}}_{{\varvec{y}}} } \\ {{\varvec{F}}_{{\varvec{z}}} } \\ \end{array} } \right]\user2{ } \\ \end{aligned} $$
(4)
$$ \begin{aligned} \sum M & = \frac{d}{dt}\left( H \right)_{I} = \frac{d}{dt}\left( H \right)_{B} + \left( {{\upomega } \times H} \right) \\ \left[ {\begin{array}{*{20}c} {\dot{\user2{p}}} \\ {\dot{\user2{q}}} \\ {\dot{\user2{r}}} \\ \end{array} } \right] & = \left[ {\begin{array}{*{20}c} {\frac{1}{{{\varvec{I}}_{{{\varvec{xx}}}} }}\left[ {\left( {{\varvec{I}}_{{{\varvec{yy}}}} - {\varvec{I}}_{{{\varvec{zz}}}} } \right){\varvec{qr}} + {\varvec{l}}} \right]} \\ {\frac{1}{{{\varvec{I}}_{{{\varvec{yy}}}} }}\left[ {\left( {{\varvec{I}}_{{{\varvec{zz}}}} - {\varvec{I}}_{{{\varvec{xx}}}} } \right){\varvec{pr}} + {\varvec{m}}} \right]} \\ {\frac{1}{{{\varvec{I}}_{{{\varvec{zz}}}} }}\left[ {\left( {{\varvec{I}}_{{{\varvec{xx}}}} - {\varvec{I}}_{{{\varvec{yy}}}} } \right){\varvec{pq}} + {\varvec{n}}} \right]} \\ \end{array} } \right] \\ \end{aligned} $$
(5 )

where \({\text{ m}}\) is the quad-tiltrotor mass and \({\text{I}}\) is the inertia matrix \({\text{F}} = \left[ {\begin{array}{*{20}c} {F_{x} } & {F_{y} } & {F_{z} } \\ \end{array} } \right]^{T} \) and \({\text{M}} = \left[ {\begin{array}{*{20}c} l & m & n \\ \end{array} } \right]^{T}\) are the force and moment exerted at the body-fixed frame {B}.

2.3 Force and Moment of Quad-Tiltrotor

The force and moment exerted at the frame {B} are affected by the gravity, thrust, and aerodynamics. Assuming the center of gravity of the quad-tiltrotor is the origin the body-fixed frame, we can ignore the moment exerted by gravity.

$$ \begin{aligned} {\text{F}} & = F_{gravity} + F_{thrust} + F_{aero} \\ {\text{M}} & = M_{thrust} + M_{aero} \\ \end{aligned} $$
(6)

The gravity force can be expressed as:

$$ F_{gravity} = R_{I}^{B} \left[ {\begin{array}{*{20}c} 0 \\ 0 \\ {mg} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {mgs_{\theta } } \\ { - mgc_{\theta } s_{\phi } } \\ { - mgc_{\theta } s_{\phi } } \\ \end{array} } \right] $$
(7)

The thrust force and moment can be obtained through the allocation matrix, which converts the force and moment into the motor thrusts \(T_{1} ,T_{2} ,T_{3} ,T_{4}\) (Fig. 2).

Fig. 2
An illustration of a basic aircraft. It has a head, wings, and tails. On the left and right of the head are 2 points, T 2 and T 1 respectively. T 3 and T 4 are points on the left and right of the tail. At the center of the body is a right angle, with x and y components. On top of the x component are the d angles, with x and y components.

Configuration of thrust system

$$ \begin{gathered} F_{thrust} = \left[ {\begin{array}{*{20}c} {\left( {T_{1} + T_{2} } \right)\cos i_{T} } \\ 0 \\ { - \left( {T_{1} + T_{2} } \right)\sin i_{T} - \left( {T_{3} + T_{4} } \right)} \\ \end{array} } \right] \hfill \\ M_{thrust} = \left[ {\begin{array}{*{20}c} {d_{y} \left[ {\left( {T_{2} - T_{1} } \right)\sin i_{T} + T_{3} - T_{4} } \right] + c_{T} \left[ {\left( {T_{1} - T_{2} } \right)\cos i_{T} } \right]} \\ {d_{x} \left[ {\left( {T_{1} + T_{2} } \right)\sin i_{T} - \left( {T_{3} + T_{4} } \right)} \right]} \\ {d_{y} \left[ {\left( {T_{2} - T_{1} } \right)\cos i_{T} } \right] + c_{T} \left[ {\left( { - T_{1} + T_{2} } \right)\sin i_{T} + \left( { - T_{3} + T_{4} } \right)} \right]} \\ \end{array} } \right] \hfill \\ \end{gathered} $$
(8)

where \(i_{T}\) is the tilt angle, \(d_{x} ,d_{y}\) are the length from the center of gravity, and \(c_{T}\) is the moment-thrust coefficient ratio.

Assuming no ambient wind environment, the velocity vector at the body-fixed frame becomes the relative wind velocity. So, we can obtain the angle of attack and the side of slip angle as follows.

$$ V_{T} = \sqrt {u^{2} + v^{2} + w^{2} } , \alpha = tan^{ - 1} \left( \frac{w}{u} \right), \beta = tan^{ - 1} \left( {\frac{v}{{V_{T} }}} \right) $$
(9)

The aerodynamic force and moment are defined as:

$$ \begin{gathered} \left[ {\begin{array}{*{20}c} D \\ Y \\ L \\ \end{array} } \right] = \frac{1}{2}\rho V_{T}^{2} S\left[ {\begin{array}{*{20}c} {C_{D} \left( {\alpha ,q,\delta_{e} } \right)} \\ {C_{Y} \left( {\beta ,p,r,\delta_{a} ,\delta_{r} } \right)} \\ {C_{L} \left( {\alpha ,q,\delta_{e} } \right)} \\ \end{array} } \right], F_{aero} = \left[ {\begin{array}{*{20}c} {c_{\alpha } c_{\beta } } & { - c_{\alpha } s_{\beta } } & { - s_{\alpha } } \\ {s_{\beta } } & {c_{\beta } } & 0 \\ {s_{\alpha } c_{\beta } } & { - s_{\alpha } s_{\beta } } & {c_{\alpha } } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} D \\ Y \\ L \\ \end{array} } \right] \hfill \\ M_{aero} = \frac{1}{2}\rho V_{T}^{2} S\left[ {\begin{array}{*{20}c} {bC_{l} \left( {\beta ,p,r,\delta_{a} ,\delta_{r} } \right)} \\ {cC_{m} \left( {\alpha ,q,\delta_{e} } \right)} \\ {bC_{n} \left( {\beta ,p,r,\delta_{a} ,\delta_{r} } \right)} \\ \end{array} } \right] \hfill \\ \end{gathered} $$
(10)

where \(C_{D} ,C_{Y}\), \( C_{L} ,C_{l} ,C_{m} { }\) and \(C_{n} \) are aerodynamic coefficients, \({\text{c}}\) is the wing chord length, \(b\) is the wing span, \(S\) is the wing area, and \(\rho\) is the air density.

3 Gaussian Process-Based Feedback Linearization Control

3.1 Feedback Linearization Control

The proposed controller consists of a baseline controller and adaptive controller to compensate for the uncertainty caused by the aerodynamic coefficient at high angle of attack and side of slip angle. The feedback linearization method is used for the baseline controller because this can be designed as a linear control method by using nonlinear dynamic inversion. Feedback Linearization controller can be divided into an outer-loop controller and inner-loop controller. The outer-loop controller consists of the altitude controller and attitude controller. Target response will be designed using an arbitrary first-order or second-order system (Fig. 3).

Fig. 3
A flowchart of aircraft feedback control. Commands go through the outer-loop controller, which consists of altitude and attitude controllers. Then it goes straight to inner loop controllers, the velocity and rate controllers, before going through the aircraft. Feedback then goes back to both controllers.

Structure of feedback linearization control

$$ \begin{gathered} \dot{\phi } = \frac{1}{{{\varvec{\tau}}_{\phi } }}\left( {\phi_{{\varvec{c}}} - \phi } \right),\user2{ \dot{\theta }} = \frac{1}{{{\varvec{\tau}}_{{\varvec{\theta}}} }}\left( {{\varvec{\theta}}_{{\varvec{c}}} - {\varvec{\theta}}} \right) \hfill \\ \user2{ \dot{\psi} } = \frac{1}{{{\varvec{\tau}}_{{\varvec{\psi}}} }}\left( {{\varvec{\psi}}_{{\varvec{c}}} - {\varvec{\psi}}} \right),\user2{ \dot{z}} = \frac{1}{{{\varvec{\tau}}_{{\varvec{z}}} }}\left( {{\varvec{z}}_{{\varvec{c}}} - {\varvec{z}}} \right) \hfill \\ \end{gathered} $$
(11)

where \({\varvec{\tau}}_{\phi } ,{\varvec{\tau}}_{{\varvec{\theta}}} ,{\varvec{\tau}}_{{\varvec{\psi}}} ,{\varvec{\tau}}_{{\varvec{z}}}\) is the time constant of target Euler angles response.

By nonlinear dynamic inversion, we can obtain the desired angular rate command.

$$ \begin{gathered} {\varvec{p}}_{{\varvec{c}}} = \frac{1}{{{\varvec{\tau}}_{\phi } }}\left( {\phi_{{\varvec{c}}} - \phi } \right) - {\mathbf{q}}{\varvec{s}}_{\phi } {\varvec{t}}_{{\varvec{\theta}}} - {\varvec{rc}}_{\phi } {\varvec{t}}_{{\varvec{\theta}}} ,\user2{ q}_{{\varvec{c}}} = \frac{1}{{{\varvec{\tau}}_{{\varvec{\theta}}} {\varvec{c}}_{{\varvec{\theta}}} }}\left( {{\varvec{\theta}}_{{\varvec{c}}} - {\varvec{\theta}}} \right) + {\mathbf{r}}{\varvec{t}}_{{\varvec{\theta}}} \hfill \\ {\varvec{r}}_{{\varvec{c}}} = \frac{{{\varvec{c}}_{{\varvec{\theta}}} }}{{{\varvec{\tau}}_{{\varvec{\psi}}} {\varvec{c}}_{\phi } }}\left( {{\varvec{\psi}}_{{\varvec{c}}} - {\varvec{\psi}}} \right) - {\mathbf{q}}{\varvec{t}}_{\phi } ,\user2{ \dot{z}}_{{\varvec{c}}} = \frac{1}{{{\varvec{\tau}}_{{\varvec{z}}} }}\left( {{\varvec{z}}_{{\varvec{c}}} - {\varvec{z}}} \right) \hfill \\ \end{gathered} $$
(12)

Assuming the target response of the inner-loop is also a first-order system, the desired force in the z-axis direction and the moment of each axis can be induced as follows:

$$ \begin{gathered} {\varvec{l}}_{{\varvec{c}}} = \frac{{{\varvec{I}}_{{{\varvec{xx}}}} }}{{{\varvec{\tau}}_{{\varvec{p}}} }}\left( {{\varvec{p}}_{{\varvec{c}}} - {\varvec{p}}} \right) + \left( {{\varvec{I}}_{{{\varvec{zz}}}} - {\varvec{I}}_{{{\varvec{yy}}}} } \right){\varvec{qr}},\user2{ m}_{{\varvec{c}}} = \frac{{{\varvec{I}}_{{{\varvec{yy}}}} }}{{{\varvec{\tau}}_{{\varvec{q}}} }}\left( {{\varvec{q}}_{{\varvec{c}}} - {\varvec{q}}} \right) + \left( {{\varvec{I}}_{{{\varvec{xx}}}} - {\varvec{I}}_{{{\varvec{zz}}}} } \right){\varvec{pr}} \hfill \\ n_{c} = \frac{{I_{zz} }}{{\tau_{r} }}\left( {r_{c} - r} \right) + \left( {I_{yy} - I_{xx} } \right)pq, F_{z} = \frac{m}{{c_{\phi } c_{\theta } }}\left( {\frac{1}{{\tau_{{\dot{z}}} }}\left( {\dot{z}_{c} - \dot{z}} \right) - g} \right) \hfill \\ \end{gathered} $$
(13)

3.2 Gaussian Process-Based Feedback Linearization Control

To estimate the uncertainty caused by the aerodynamics in hover mode, we use the Gaussian Process, a non-parametric regression method in machine learning. The Gaussian Process is a collection of random variables, any finite number of which have a joint Gaussian distribution [5]. Therefore, if each point can be the Gaussian distribution, we can obtain the mean and variance for a specific point like a function. Hence, if model is uncertain, mean function and covariance function are defined as follows (Fig. 4):

Fig. 4
A flowchart of Gaussian feedback. The command goes to the baseline controller. Before it goes to the plant, the data set goes to the adaptive controller then its data merges with the baseline controller. Any feedback goes back to the command and the data set.

Structure of Gaussian process-based feedback linearization

$$ \begin{gathered} m\left( z \right) = E\left[ {{\Delta }\left( z \right)} \right] \hfill \\ k\left( {z,z^{\prime}} \right) = E\left[ {\left( {{\Delta }\left( z \right) - m\left( z \right)} \right)\left( {{\Delta }\left( {z^{\prime}} \right) - m\left( {z^{\prime}} \right)} \right)} \right] \hfill \\ \end{gathered} $$
(14)

where \( z,z^{\prime} \) is different input data.

Therefore, we can represent \({\Delta }\) as follows:

$$ {\Delta }\left( z \right)\sim GP\left( {m\left( z \right),k\left( {z,z^{\prime}} \right)} \right) $$
(15)

The Gaussian Process involves mapping from input-space to output-space. Before the prediction, we need enough training data to make up input data sets and measurement data sets. In the quad-tiltrotor system, we should define the data sets to estimate the uncertainty caused by the aerodynamic coefficient. Since the angular rate, angle of attack, side of slip angle, and control input is directly related the uncertainty, the input data set can be obtained as follows:

$$ \begin{gathered} z_{l,k + 1} = \left[ {\begin{array}{*{20}c} p & r & \beta & {V_{T}^{2} } & {l_{c} } \\ \end{array} } \right],Z_{l} = \left[ {\begin{array}{*{20}c} {z_{l,1} } & {z_{l,2} } & \cdots & {z_{l,k - 1} } & {z_{l,k} } \\ \end{array} } \right] \hfill \\ z_{l,k + 1} = \left[ {\begin{array}{*{20}c} q & \alpha & {V_{T}^{2} } & {m_{c} } \\ \end{array} } \right],Z_{m} = \left[ {\begin{array}{*{20}c} {z_{m,1} } & {z_{m,2} } & \cdots & {z_{m,k - 1} } & {z_{m,k} } \\ \end{array} } \right] \hfill \\ z_{n,k + 1} = \left[ {\begin{array}{*{20}c} p & r & \beta & {V_{T}^{2} } & {n_{c} } \\ \end{array} } \right],Z_{n} = \left[ {\begin{array}{*{20}c} {z_{n,1} } & {z_{n,2} } & \cdots & {z_{n,k - 1} } & {z_{n,k} } \\ \end{array} } \right] \hfill \\ \end{gathered} $$
(16)

since \({\dot{\Omega }}\) is not available, we can obtain these values from the fixed-point smoother [6].

The output dataset can also be obtained.

$$ \begin{aligned} {\Delta }_{l,k + 1} & = I_{xx} {\dot{\text{p}}} - \left( {I_{zz} - I_{yy} } \right)qr - l_{c} ,Y_{l} = \left[ {\begin{array}{*{20}c} {{\Delta }_{l,1} } & {{\Delta }_{l,2} } & \cdots & {{\Delta }_{l,k - 1} } & {{\Delta }_{l,k} } \\ \end{array} } \right] \\ {\Delta }_{m,k + 1} & = I_{yy} {\dot{\text{q}}} - \left( {I_{zz} - I_{xx} } \right)pr - m_{c} ,Y_{m} = \left[ {\begin{array}{*{20}c} {{\Delta }_{m,1} } & {{\Delta }_{m,2} } & \cdots & {{\Delta }_{m,k - 1} } & {{\Delta }_{m,k} } \\ \end{array} } \right] \\ {\Delta }_{n,k + 1} & = I_{zz} {\dot{\text{r}}} - \left( {I_{xx} - I_{yy} } \right)pq - n_{c} ,Y_{n} = \left[ {\begin{array}{*{20}c} {{\Delta }_{n,1} } & {{\Delta }_{n,2} } & \cdots & {{\Delta }_{n,k - 1} } & {{\Delta }_{n,k} } \\ \end{array} } \right] \\ \end{aligned} $$
(17)

The Gaussian Process was performed by updating 1000 datasets over time to add new data by removing the oldest data to reduce the computational time and memory burden. The uncertainty estimated using the Gaussian Process is obtained through the kernel function. The kernel function was chosen as the most commonly used squared-exponential covariance function.

$$ \left[ {\begin{array}{*{20}c} {{\Delta }_{\left( \cdot \right),k} } \\ {{\Delta }_{\left( \cdot \right),k + 1} } \\ \end{array} } \right]\sim N\left( {0,\left[ {\begin{array}{*{20}c} {K\left( {Z_{\left( \cdot \right)} ,Z_{\left( \cdot \right)} } \right) + \sigma_{n}^{2} I} & {K\left( {z_{\left( \cdot \right)} ,Z_{\left( \cdot \right)} } \right)} \\ {K\left( {Z_{\left( \cdot \right)} ,z_{\left( \cdot \right)} } \right)} & {K\left( {z_{\left( \cdot \right)} ,z_{\left( \cdot \right)} } \right)} \\ \end{array} } \right]} \right) $$
(18)
$$ K\left( {z,z^{\prime}} \right) = \sigma_{f} exp\left( {\frac{{\left\| {z - z^{\prime}} \right\|^{2} }}{{2l^{2} }}} \right) $$
(19)

where \(\sigma_{n} , \sigma_{f} \) are the data and noise variance and \(l\) is the diagonal length scale matrix.

Therefore, we can obtain the estimated aerodynamic mean and variance of uncertainty:

$$ \begin{gathered} {\hat{\Delta }}_{l,k + 1} = K\left( {z_{l,k + 1} ,{ }Z_{l} } \right)^{T} \left( {K\left( {Z_{l} ,{ }Z_{l} } \right) + \sigma_{n}^{2} } \right)^{ - 1} Y_{l} \hfill \\ {\hat{\Delta }}_{m,k + 1} = K\left( {z_{m,k + 1} ,{ }Z_{m} } \right)^{T} \left( {K\left( {Z_{m} ,{ }Z_{m} } \right) + \sigma_{n}^{2} } \right)^{ - 1} Y_{m} \hfill \\ {\hat{\Delta }}_{n,k + 1} = K\left( {z_{n,k + 1} ,{ }Z_{n} } \right)^{T} \left( {K\left( {Z_{n} ,{ }Z_{n} } \right) + \sigma_{n}^{2} } \right)^{ - 1} Y_{n} \hfill \\ \end{gathered} $$
(20)
$$ \begin{aligned} & \sum\nolimits_{l,k + 1} = K\left( {z_{l,k + 1} ,{ }z_{l,k + 1} } \right) - K\left( {z_{l,k + 1} ,{ }Z_{l} } \right)^{T} \left( {K\left( {Z_{l} ,{ }Z_{l} } \right) + \sigma_{n}^{2} } \right)^{ - 1} K\left( {z_{l,k + 1} ,{ }Z_{l} } \right) \\ & \sum\nolimits_{m,k + 1} = K\left( {z_{m,k + 1} ,{ }z_{m,k + 1} } \right) - K\left( {z_{m,k + 1} ,{ }Z_{m} } \right)^{T} \left( {K\left( {Z_{m} ,{ }Z_{m} } \right) + \sigma_{n}^{2} } \right)^{ - 1} K\left( {z_{m,k + 1} ,{ }Z_{m} } \right) \\ & \sum\nolimits_{n,k + 1} = K\left( {z_{n,k + 1} ,{ }z_{n,k + 1} } \right) - K\left( {z_{n,k + 1} ,{ }Z_{n} } \right)^{T} \left( {K\left( {Z_{n} ,{ }Z_{n} } \right) + \sigma_{n}^{2} } \right)^{ - 1} K\left( {z_{n,k + 1} ,{ }Z_{n} } \right) \\ \end{aligned} $$
(21)

The proposed controller is composed of baseline control input and adaptive control input, as follows:

$$ \begin{aligned} & u = u_{baseline} + u_{adaptive} \\ & u_{baseline} = g\left( x \right)^{ - 1} \left( {\dot{x} - f\left( x \right)} \right) \\ & u_{adaptive} = - \hat{\Delta } \\ \end{aligned} $$
(22)

4 Simulation Results

To verify the performance of the Gaussian process-based feedback linearization, numerical simulation is performed by MATLAB software and GPML Toolbox. The control and model parameters used in this simulation are listed in Table 1. The maximum magnitude of the Euclidean norm of the sensor noise is represented in Table 2 [7]. The simulation results of proposed controller are compared to feedback linearization with integral action.

Table 1 Quad-tiltrotor model parameters and control parameters
Table 2 Norm of sensor noise

The pink line separates the hovering and transition mode of quad-tiltrotor. Figure 5 shows the Euler angles results obtained by feedback linearization with integral action and Gaussian process-based feedback linearization. In the hovering and transition modes, the Euler angles of feedback linearization with integral action does not reach the desired command and has a bias toward significance. However, the Gaussian process based on feedback linearization follows commands exactly, while uncertainty is effectively compensated for except along the yaw axis in the period of 0–10 s. The cause of this phenomenon is that the allocation method has the priority to guarantee the roll and pitch axis stability first. Figure 6 shows the angular rate and desired angular rate commands for the Gaussian process-based feedback linearization.

Fig. 5
Three graphs of Eugler angles, psi, theta, and pi, versus time. Each graph presents F L, G P F L, and Command data sets. The values in all graphs increase, form a positive plateau, decrease, form a negative plateau, increase again, then stabilize. The vertical line at 30 seconds separates the hovering and transition mode.

Responses of Euler angles using FL and GP-FL

Fig. 6
Three line graphs of angular rate versus time. Each graph has G P F L and Command data. Significant values at p angle happen roughly between 3 to 10 seconds. For p angle, it happens between 10 and 17 seconds. The r angle has values between 17 and 28 seconds. All graphs did not have values past the 30-second mark.

Responses of angular rate using GP-FL

Figure 7 presents the true uncertainty and estimated uncertainty by Gaussian process-based feedback linearization. In the hover mode, the uncertainty can be effectively compensated. However, estimated uncertainty has oscillation in the transition mode because velocity increases sharply. Figure 8 indicates that the tilt-angle changes according to the total velocity.

Fig. 7
Three line graphs of true and estimated uncertainty versus time. The delta l values drop, rise, then stabilize. It increases a bit past the 30-second mark. Delta m values form many peaks and lows, but rise past the 30-second mark then drops at around 43. Delta n values rise, form a short plateau, stabilize, then drop a bit past the 30-second mark.

Responses of true uncertainty and estimated uncertainty

Fig. 8
Two graphs of total velocity and tilt angle through time. There is a significant rise in total velocity past 30 seconds, peaking at around 12 meters per second, but the values drop to 0 at 40 seconds. The tilt angle is 80 degrees up until 30 seconds, It drops a bit at around 70. Then at around 35 seconds, it drops to 0 up to the 40th second.

Results of total velocity and tilt-angle

5 Conclusions

This paper proposed Gaussian process-based feedback linearization to compensate for aerodynamic uncertainty for quad-tiltrotor in hover mode and transition mode. The simulation results show that the proposed controller follows commands accurately, compensating for uncertainty. Moreover, our proposed controller is a typically combination of baseline and adaptive controllers, ensuring stable and reliable control performance any conditions; adaptive controllers eliminate aerodynamic uncertainty. Our future work will be to perform experiments to ensure controller performance.