1 Introduction

The quadrotor UAV has attracted great attention from military and civil applications due to its special advantages such as simple structure, vertical taking off and landing (VTOL) ability, and rapid maneuvering in recent years [1]. It has been widely used in a variety of situations including surveillance, fire fighting, environmental monitoring and so on [2]. The roll, pitch and yaw motions of a quadrotor UAV are achieved through adjusting the speed of four rotors. However, the frequent variation of the rotors’ speed will increase the risk of the actuator’s fault. The quadrotor has six degree of freedom with only four control inputs, which is known as the under-actuated property [3, 4]. When one or more actuators lost effectiveness, the quadrotor UAV will be unstable or even out of control. The actuator’s fault has been considered to be the most critical since the system performance can be severely deteriorated by improper actuator actions [5]. This will bring great dangers to the quadrotor itself. Therefore, a lot of fault-tolerant control (FTC) strategies have been developed to maintain high robustness for the quadrotor UAV against unexpected actuator’s faults [6, 7].

Previous FTC approaches for quadrotor UAVs can be divided into two main groups: active fault-tolerant control (AFTC) and passive fault-tolerant control (PFTC). The main difference between these two groups is that addictive fault detection and fault isolation mechanism are involved in the AFTC [8]. Researchers from different institutions, such as Concordia University, Massachusetts Institute of Technology, Nanjing University of Aeronautics & Astronautics and so on, have developed various linear or nonlinear fault FTC methods including gain-scheduled PID FTC [9], backstepping-based FTC [10], sliding mode control (SMC)-based FTC [11], model reference adaptive control (MRAC)-based FTC [12], combined/composite model reference adaptive control (CMRAC) FTC [13], model predictive control (MPC) FTC [14] and flatness-based trajectory planning/replanning (FTPR) FTC[15]. All the methods mentioned above have been verified through numerical simulations or real-time flight tests on quadrotor UAV testbeds. However, there are some limitations for these existing FTC strategies. For example, in [9], a fast switch from normal PID gains to the pre-tuned fault-related gains must be taken into consideration which highly depends on the fault detection module. In [11], the actuator’s fault is modeled as some external disturbance, but this can not represent the influence caused by actuator’s fault accurately. In MPC-based FTC method, the fault detection module is also required which will increase the computation cost and is not easy to be implemented for most existing onboard embedded controller of quadrotor UAVs. For MRAC-based FTC and CMRAC-based FTC, the dynamic model of the quadrotor UAV needs to be linearized around the equilibrium point while the actuator’s fault may let the quadrotor UAV be away from the equilibrium point, thus the control performance may be degraded.

Other than the aforementioned FTC approaches for quadrotor UAVs, the observer-based FTC strategy provides another choice. In [16,17,18], some works on observer-based fault-tolerant control are investigated for various nonlinear systems. To solve the unmeasured state problem, the fuzzy state observer is utilized to provide estimations for those unmeasured signals. In [16], a novel adaptive fuzzy decentralized FTC scheme is developed by combining the backstepping technique with the nonlinear FTC theory. In [17], a robust adaptive fuzzy fault-tolerant control scheme is developed by introducing the dynamical signal and the changing supply function technique design into the backstepping control design. In [18], a novel NN adaptive output-feedback FTC approach is developed by combining the adaptive backstepping design principle with the combination Nussbaum gain function property. In all the works mentioned above, the observers are used to compensate for the unmeasured state of the dynamic systems, and all signals in closed-loop system can be guaranteed to be bounded. Numerical simulation results show the effectiveness of the control schemes.

When it comes to the quadrotor UAV, in [19], a nonlinear observer is utilized to generate fault offset residuals for fault diagnosis which is verified by using the off-line data acquired from the real-time flight experiments. In [20], an adaptive thau observer is developed to estimate the system states and generate a set of offset residuals to represent actuator’s fault. Experimental results are provided to show that this method can not only detect and isolate the failed actuators but also estimate the fault severities. In [21], a two-stage Kalman filter is used to simultaneously estimate and isolate possible faults associated with each actuator. This FTC approach is verified via experimental results performed on an quadrotor UAV testbed. The observer-based methods mentioned above are AFTC ones, some of them are only verified through numerical simulations, and some of them do not contain fault-tolerant control together with fault detection.

Recently, the immersion and invariance (I&I) methodology has been widely used in control of the quadrotor UAV [22], visual servoing, control of pendulum on cart and many other mechanical systems [23]. Unlike the classic adaptive control design [24], this approach does not require the linear parameterization condition nor invokes the certainty equivalence. Aiming at the disadvantages of existing FTC approaches for quadrotor UAVs mentioned above, an I&I-based nonlinear observer is proposed in this paper to compensate for the unknown actuator’s fault. The main contribution of this paper can be summarized as follows: (1) a multiplicative factor with control inputs is developed to demonstrate the practical properties of the faults associated with quadrotor’s actuators; (2) the attitude dynamics is constructed in terms of the unit quaternion to avoid the singularity that may appear in the attitude control development; (3) the control strategy is designed based on the nonlinear dynamic model without simplifying the dynamics around the hovering state; (4) the I&I-based observer is firstly utilized to compensate for the actuator’s fault, and a dynamic scaling factor together with a filtered output state are introduced to ensure the solvability of the partial differential equations; (5) the sliding mode control scheme without fault detection and isolation is developed for the fault-tolerant control of the quadrotor. The proposed FTC strategy is verified via real-time experiments performed on the HILS testbed.

This paper is organized as follows. The dynamic model of the quadrotor UAV with actuator’s fault is described in Sect. 2. In Sect. 3, the design of the fault-tolerant controller and the stability analysis are presented. The real-time experimental results are provided in Sect. 4. Finally, some conclusion remarks are included in Sect. 5.

2 Problem formulation

2.1 The quadrotor’s dynamics

In order to describe the dynamics and kinematics of quadrotor UAV, two right-hand coordinate systems are utilized. The inertial reference frame is denoted by \(\mathscr {\{I\}}\), and the body-fixed reference frame is denoted by \(\{\mathscr {B\}}\), as illustrated in Fig. 1. The origin of the orthogonal right-hand coordinate system\(\mathscr {\ \{I\}}\) is attached on the ground, which can be represented by\(\mathscr {\ } \mathscr {I}=\{x_{\mathscr {I}},y_{\mathscr {I}},z_{\mathscr {I}}\}\) with \(z_{\mathscr {I}}\) being the vertical direction upward into the sky, \(y_{\mathscr {I}}\) being the west direction and \(x_{\mathscr {I}}\) being determined by the right-hand rule. The frame \(\mathscr {B}=\{x_{\mathscr {B} },y_{\mathscr {B}},z_{\mathscr {B}}\}\) represents an orthogonal right-hand coordinate system which is centered at the centroid of the quadrotor. The body axis \(z_{\mathscr {B}}\) is the normal axis of the principal plane of quadrotor directed from bottom to top, the body axis \(x_{\mathscr {B}}\) is along with the forward flying direction of the quadrotor, and the direction of the body axis \(y_{\mathscr {B}}\) is determined by the right-hand rule. The thrusts generated by the four rotors are denoted by \(f_{i}(t),i=1,2,3,4\). The dynamic model of the quadrotor expressed in \(\{\mathscr {B\}}\) can be illustrated via the following differential equations,

$$\begin{aligned} \left\{ \begin{array} [c]{l} J\dot{\omega }=-S(\omega )J\omega +\tau \\ \dot{R}=S(\omega )R \end{array}, \right. \end{aligned}$$
(1)

where \(\omega (t)=\left[ \begin{array} [c]{ccc} \omega _{1}(t)&\omega _{2}(t)&\omega _{3}(t) \end{array} \right] ^\mathrm{T}\in \mathbb {R}^{3}\) denotes the angular velocity of the UAV with respect to the frame \(\mathscr {\{I\}}\) defined in the frame \(\{\mathscr {B\}}\), \(J=\mathrm{diag}\{J_{1},J_{2},J_{3}\}\), with \(J_{i}\in \mathbb {R}^{+}\) for \(i=1,2,3\) is the moment of inertia. The matrix \(S(\cdot )\) represents a skew-matrix that satisfies

$$\begin{aligned} S(a)=\left[ \begin{array} [c]{ccc} 0 &{} -a_{3} &{} a_{2}\\ a_{3} &{} 0 &{} -a_{1}\\ -a_{2} &{} a_{1} &{} 0 \end{array} \right] , \quad \forall a=\left[ \begin{array} [c]{lll} a_{1}&a_{2}&a_{3} \end{array} \right] ^\mathrm{T}\,\ . \end{aligned}$$
(2)

The matrix \(R\in SO(3)\) is the rotation matrix from \(\{\mathscr {B\}}\) to \(\mathscr {\{I\}}\). The vector \(\tau (t)=\left[ \begin{array} [c]{ccc} \tau _{1}(t)&\tau _{2}(t)&\tau _{3}(t) \end{array} \right] ^\mathrm{T}\in \mathbb {R}^{3}\) denotes the control input torque. The relationship between the control input signals and the rotor thrusts is given as follows:

$$\begin{aligned} \left[ \begin{array} [c]{c} \tau _{1}\\ \tau _{2}\\ \tau _{3} \end{array} \right] =\underset{L}{\underbrace{\left[ \begin{array} [c]{cccc} -l &{} -l &{} l &{} l\\ -l &{} l &{} l &{} -l\\ -\varepsilon &{} \varepsilon &{} -\varepsilon &{} \varepsilon \end{array} \right] }}\left[ \begin{array} [c]{c} f_{1}\\ f_{2}\\ f_{3}\\ f_{4} \end{array} \right] =L\left[ \begin{array} [c]{c} f_{1}\\ f_{2}\\ f_{3}\\ f_{4} \end{array} \right] , \end{aligned}$$
(3)

where \(l\in \mathbb {R}^{+}\) is the distance between the epicenter of quadrotor and rotor axes, and \(\varepsilon \in \mathbb {R}^{+}\) denotes a constant force-to-moment coefficient.

Fig. 1
figure 1

Coordinate system of the quadrotor UAV

2.2 The quadrotor’s actuator’s fault dynamics

For the quadrotor, it is possible that one or more actuators will have some failures during the flight operation. In the case that a failure happen on the ith actuator of the quadrotor at the time of \(t_{f}\), the actual control actions applied on the ith actuator can be denoted as \(f_{i}^{^{\prime }} (t)\), and multiple important and common fault patterns can be listed as follows [5]:

  • Stuck type or lock in place (LIP) fault: \(f_{i}^{^{\prime }} (t)=f_{i}(t_{f})\) is a constant for \(i=1,2,3,4\).

  • Float fault: \(f_{i}^{^{\prime }}(t)=0\).

  • Hard-over fault: \(f_{i}^{^{\prime }}(t)=\max (f_{i})\) or \(f_{i}^{^{\prime }}(t)=\min (f_{i})\) regardless of the command signal.

  • Loss of effectiveness (LOE) fault: \(f_{i}^{^{\prime }}(t)=\lambda _{i}(t)f_{i}(t_{f})\) where \(0<\lambda _{i}(t)\le 1\).

Generally, among the fault patterns mentioned above, the LOE fault occurs especially frequently and is also the most complicated one, thus it will be the main fault considered in this paper. After the LOE fault happens, the relationship between the control input signals and the rotor thrusts given in (3) will be rewritten as follows:

$$\begin{aligned} \left[ \begin{array} [c]{c} \tau _{1}\\ \tau _{2}\\ \tau _{3} \end{array} \right]&=L\left[ \begin{array} [c]{llll} \lambda _{1} &{} 0 &{} 0 &{} 0\\ 0 &{} \lambda _{2} &{} 0 &{} 0\\ 0 &{} 0 &{} \lambda _{3} &{} 0\\ 0 &{} 0 &{} 0 &{} \lambda _{4} \end{array} \right] \left[ \begin{array} [c]{c} f_{1}\\ f_{2}\\ f_{3}\\ f_{4} \end{array} \right] \nonumber \\&=L\underset{F}{\underbrace{\left[ \begin{array} [c]{llll} f_{1} &{} 0 &{} 0 &{} 0\\ 0 &{} f_{2} &{} 0 &{} 0\\ 0 &{} 0 &{} f_{3} &{} 0\\ 0 &{} 0 &{} 0 &{} f_{4} \end{array} \right] }}\underset{\lambda }{\underbrace{\left[ \begin{array} [c]{c} \lambda _{1}\\ \lambda _{2}\\ \lambda _{3}\\ \lambda _{4} \end{array} \right] }}\nonumber \\&=LF\lambda , \end{aligned}$$
(4)

so the fault dynamics of the quadrotor can be obtained as

$$\begin{aligned} J\dot{\omega }=-S(\omega )J\omega +LF\lambda . \end{aligned}$$
(5)

The vector \(\lambda (t)\in \mathbb {R}^{4}\) in (5) is defined as \(\lambda (t)= \left[ \begin{array} [c]{cccc} \lambda _{1}(t)&\lambda _{2}(t)&\lambda _{3}(t)&\lambda _{4}(t) \end{array} \right] ^\mathrm{T}\), and the control input matrix \(F(t)\in \mathbb {R}^{4\times 4}\) is defined as \(F(t)=\mathrm{diag}\{\left[ \begin{array} [c]{cccc} f_{1}(t)&f_{2}(t)&f_{3}(t)&f_{4}(t) \end{array} \right] ^\mathrm{T}\}\).

Assumption 1

The LOE fault in this paper is considered as a constant gain fault [25], i.e.,

$$\begin{aligned} \dot{\lambda }=0_{4\times 1}. \end{aligned}$$
(6)

Remark 1

The constant gain fault means that once the fault happens, it would not vary during the whole control procedure, and the actuators of the quadrotor would still produce thrust force which would be \(\lambda \) times of the normal thrust force.

2.3 Attitude representation via unit quaternion

According to the Euler’s theorem [26], any rotation matrix can be uniquely represented by a rotation angle \(\varphi (t)\in \mathbb {R}\) about a suitable unit vector \(k(t)=\left[ \begin{array} [c]{ccc} k_{1}(t)&k_{2}(t)&k_{3}(t) \end{array} \right] ^\mathrm{T}\in \mathbb {R}^{3}\). Given \((\varphi ,k)\in \mathbb {R}^{4}\), an alternative parameterization of the attitude is provided by a unit quaternion vector \(q(t)=\left[ \begin{array} [c]{cc} q_{0}(t)&q_{v}^{T}(t) \end{array} \right] ^\mathrm{T}\in \mathbb {R}\times \mathbb {R}^{3}\), which provides a method to describe the rigid body’s attitude without singularity and is defined via the angle-axis parameters as \(q(t)= \left[ \begin{array} [c]{cc} \cos \left( \frac{1}{2}\varphi (t)\right)&k^{T}(t)\sin \left( \frac{1}{2}\varphi (t)\right) \end{array} \right] ^\mathrm{T}\). Note that the unit quaternion is subject to the constraint

$$\begin{aligned} q_{v}^{T}q_{v}+q_{0}^{2}=1. \end{aligned}$$
(7)

Thus the rotation matrix R can be calculated by using the unit quaternion q(t) as

$$\begin{aligned} R=\left( q_{0}^{2}-q_{v}^{T}q_{v}\right) I_{3}+2q_{v}q_{v}^{T}-2q_{0}S(q_{v}). \end{aligned}$$
(8)

The unit quaternion q(t) can be related to angular velocity \(\omega (t)\) via

$$\begin{aligned} \left\{ \begin{array} [c]{l} \dot{q}_{0}=-\frac{1}{2}q_{v}^{T}\omega \\ \dot{q}_{v}=\frac{1}{2}(S(q_{v})+q_{0}I_{3})\omega \end{array}, \right. \end{aligned}$$
(9)

where \(I_{3}\) represents a \(3\times 3\) identity matrix.

Since the control object is to design a control input torque to ensure the attitude control with the existence of actuator’s fault, the desired attitude of quadrotor UAV is represented by a body fixed, orthogonal coordinate frame \(\{\mathscr {B}_{d}\}\) as illustrated in Fig. 1. The desired unit quaternion, \(q_{d}(t)=\left[ \begin{array} [c]{cc} q_{0d}(t)&q_{vd}^{T}(t) \end{array} \right] ^\mathrm{T}\in \mathbb {R}\times \mathbb {R}^{3}\), is utilized to describe the orientation of \(\{\mathscr {B}_{d}\}\) and the desired angular velocity, denoted by \(\omega _{d}(t)\), is the angular velocity of the desired body frame \(\{\mathscr {B}_{d}\}\) with respect to the initial frame \(\{\mathscr {I}\}\) expressed in \(\{\mathscr {B}_{d}\}\). The desired rotation matrix \(R_{d}\in SO(3)\) can be calculated by using \(q_{d}(t)\) as follows:

$$\begin{aligned} R_{d}=\left( q_{0d}^{2}-q_{vd}^{T}q_{vd}\right) I_{3}+2q_{vd}q_{vd}^{T}-2q_{0d}S(q_{vd}). \end{aligned}$$
(10)

Similarly as (9), the time derivative of \(q_{d}(t)\) is related to the desired angular velocity \(\omega _{d}(t)\) through the following differential equations

$$\begin{aligned} \left\{ \begin{array} [c]{l} \dot{q}_{0d}=-\frac{1}{2}q_{vd}^{T}\omega _{d}\\ \dot{q}_{vd}=\frac{1}{2}(S(q_{vd})+q_{0d}I_{3})\omega _{d} \end{array}. \right. \end{aligned}$$
(11)

To quantify the mismatch between the actual and desired orientation of the quadrotor UAV, the quaternion tracking error, denoted by \(e_{q}=\left[ e_{0} ,e_{v}^{T}\right] ^\mathrm{T}\in \mathbb {R}\times \mathbb {R}^{3}\) is defined as follows:

$$\begin{aligned} \left\{ \begin{array} [c]{l} e_{0}=q_{0}q_{0d}+q_{v}^{T}q_{vd}\\ e_{v}=q_{0d}q_{v}-q_{0}q_{vd}+S(q_{v})q_{vd} \end{array}, \right. \end{aligned}$$
(12)

which also satisfies the constraint

$$\begin{aligned} e_{q}^{T}e_{q}=1. \end{aligned}$$
(13)

Then we define the rotation matrix, denoted by \(\tilde{R}\in SO(3)\), that brings \(\{\mathscr {B}_{d}\}\) into \(\{\mathscr {B}\}\) as follows:

$$\begin{aligned} \tilde{R}=\left( e_{0}^{2}-e_{v}^{T}e_{v}\right) I_{3}+2e_{v}e_{v}^{T}-2e_{0}S(e_{v}). \end{aligned}$$
(14)

The angular velocity of \(\{\mathscr {B}\}\) with respect to \(\{\mathscr {B} _{d}\}\) expressed in \(\{\mathscr {B}\}\), denoted by \(\tilde{\omega } \in \mathbb {R}^{3}\), can be written as

$$\begin{aligned} \tilde{\omega }=\omega -\tilde{R}^{T}\omega _{d}. \end{aligned}$$
(15)

Based on the previous definitions, the quadrotor UAV’s attitude control objective can be stated as follows:

$$\begin{aligned} \begin{array} [c]{ccc} \underset{t\rightarrow \infty }{\lim }e_{v}=0,&\,&\underset{t\rightarrow \infty }{\lim }\tilde{\omega }=0. \end{array} \end{aligned}$$
(16)

3 Control development

3.1 Observer design

The dynamics of the quadrotor in (5) and (6) can be reorganized as follows:

$$\begin{aligned} \left\{ \begin{array} [c]{l} \dot{\omega }=-J^{-1}S(\omega )J\omega +J^{-1}LF\lambda \\ \dot{\lambda }=0 \end{array}. \right. \end{aligned}$$
(17)

The following definition will be invoked in the following control development and analysis.

Definition 1

If there exists a mapping \(\beta (\omega ,\omega _{d},\dot{\omega }_{d} ,e_{q}):\mathbb {R}^{3}\times \mathbb {R}^{3}\times \mathbb {R}^{3}\times \mathbb {R}^{4}\rightarrow \mathbb {R}^{4}\), which is substituted by \(\beta (\omega ,X)\) for the consideration of simplicity, the following dynamic system

$$\begin{aligned} \dot{\xi }=-\frac{\partial \beta }{\partial \omega }(-J^{-1}S(\omega )J\omega +J^{-1}LF\hat{\lambda })-\frac{\partial \beta }{\partial X}\dot{X}, \end{aligned}$$
(18)

with \(\xi (t)\in \mathbb {R}^{4}\), is called an observer for the system (17), if the manifold

$$\begin{aligned} \mathscr {M}=\{(\lambda ,\omega ,\xi ,X):\xi +\beta (\omega ,X)-\lambda =0\} \end{aligned}$$
(19)

is attractive and invariant [27].

The above definition implies that an asymptotically converging estimate \(\hat{\lambda }(t)\in \mathbb {R}^{4}\) of the actuator’s fault is given by

$$\begin{aligned} \hat{\lambda }=\xi +\beta (\omega ,X). \end{aligned}$$
(20)

To prove the result in (20), let the estimation error signal \(z_{0}(t)\in \mathbb {R}^{4}\) be defined as follows:

$$\begin{aligned} z_{0}=\hat{\lambda }-\lambda =\xi +\beta (\omega ,X)-\lambda , \end{aligned}$$
(21)

where \(\beta (\cdot )\) is continuously differentiable and the norm of \(\beta (\cdot )\) determines the distance of the state from the manifold \(\mathscr {M}\) defined in (19). Taking the time derivative of (21) and substituting (18) into the resulting equation yields

$$\begin{aligned} \dot{z}_{0}=-\frac{\partial \beta }{\partial \omega }J^{-1}LFz_{0}. \end{aligned}$$
(22)

To complete the design, it is necessary to design the function \(\beta (\omega ,X)\) such that the system has a uniformly asymptotically stable equilibrium at \(z_{0}=0\), but this is not a easy task. Furthermore, the problem can be also translated into finding an output injection matrix \(B(\omega ,X)\) that ensures the system \(\dot{z}_{0}=-B(\omega ,X)J^{-1}LFz_{0}\) to be uniformly asymptotically stable at \(z_{0}=0\). In fact, since the dimension of \(\omega \) is larger than one, there may not exist a \(\beta (\omega ,X)\) that satisfies \(\frac{\partial \beta }{\partial \omega }=B(\omega ,X)\). To overcome this obstacle, we refer to [28] to introduce an auxiliary state vector \(\hat{\omega }(t)\in \mathbb {R}^{3}\) to make \(\beta (\omega ,X)\) become \(\beta (\omega ,\hat{\omega },X)\). In this way, the observer can be considered of full order since the auxiliary state vector \(\hat{\omega }(t)\) provides an estimate of the output of the system. Different from [28], in this paper, \(\hat{\lambda }(t)\) is coupled with the control input matrix F(t) here, which means that the regression matrix contains the control inputs F which include \(\hat{\lambda }\), so \(\beta (\omega ,\hat{\omega },X)\) is more difficult to be determined. To overcome this issue, the observer in (18) is redefined as

$$\begin{aligned} \dot{\xi }= & {} -\left( \frac{\partial \beta }{\partial \omega }\left( -J^{-1}S(\omega )J\omega +J^{-1}LF\hat{\lambda }\right) \right. \nonumber \\&\left. +\frac{\partial \beta }{\partial \hat{\omega }} \dot{\hat{\omega }}+\frac{\partial \beta }{\partial X}\dot{X}\right) , \end{aligned}$$
(23)

where \(\hat{\omega }(t)\) is the estimation of \(\omega (t)\), and it is generated via

$$\begin{aligned} \dot{\hat{\omega }}=-J^{-1}S(\omega )J\omega +J^{-1}LF\hat{\lambda } +K(\omega ,r,\hat{\omega }-\omega )(\hat{\omega }-\omega ). \end{aligned}$$
(24)

To compensate for the mismatch between \(\omega (t)\) and \(\hat{\omega }(t)\), a dynamic scaling factor r(t) is introduced to the off-the-manifold variables in (21), so that the estimation signal can be redefined as follows:

$$\begin{aligned} z=\frac{\hat{\lambda }-\lambda }{r(t)}=\frac{\xi +\beta (\omega ,\hat{\omega },X)-\lambda }{r(t)}. \end{aligned}$$
(25)

Thus the dynamics of z(t) in (22) can be rewritten as

$$\begin{aligned} \dot{z}&=\frac{-\frac{\partial \beta }{\partial \omega }J^{-1}LF(\hat{\lambda }-\lambda )r-(\xi +\beta -\lambda )\dot{r}}{r^{2}}\nonumber \\&=-\frac{\partial \beta }{\partial \omega }J^{-1}LFz-\frac{\dot{r}}{r}z. \end{aligned}$$
(26)

The following assumptions will be invoked in the following control development. The scaling factor r(t) will be designed later.

Assumption 2

The control input matrix F(t) to be designed later can be represented in the following form

$$\begin{aligned} F=-L^{R}\cdot u(\omega ,X)\cdot g(\beta ), \end{aligned}$$
(27)

where \(L^{R}=L^{T}(LL^{T})^{-1}\) is the right-inverse of L such that \(L\cdot L^{R}=I_{3}\), the auxiliary vector \(u(\cdot )\in \mathbb {R}^{3}\) is defined as \(u(\cdot )=\left[ \begin{array} [c]{ccc} u_{1}(\cdot )&u_{2}(\cdot )&u_{3}(\cdot ) \end{array} \right] ^\mathrm{T}\), and the \(g(\cdot )\in \mathbb {R}^{1\times 4}\) is an auxiliary vector.

Remark 2

Assumption 2 is proposed based on the dynamics of the quadrotor which can also be validated by the design of control input. On the other hand, this assumption is just utilized to simplify the following analysis and it does not make any difference in the observer and controller design.

Assumption 3

There exist a constant \(\gamma \) and a continuously differentiable function matrix \(B(\omega ,X,\beta )=\gamma (J^{-1}LF)^\mathrm{T}\in \mathbb {R}^{4\times 3}\) such that \(-\frac{1}{2}([BJ^{-1}LF]^\mathrm{T}+BJ^{-1}LF)=-\gamma [J^{-1} LF]^\mathrm{T}[J^{-1}LF].\)

Remark 3

Assumption 3 implies that the system \(\dot{z} =-B(\omega ,X,\beta )J^{-1}LFz\) has a uniformly globally stable equilibrium at 0. The observer design problem is now reduced to the problem of designing a function \(\beta (\omega ,\hat{\omega },X)\) and a dynamic scaling \(\dot{r}\) such that the system (26) has a globally stable equilibrium at the origin.

By substituting (27) into \(B(\omega ,X,\beta )\), it can be obtained that

$$\begin{aligned} B(\omega ,X,\beta )&=-\gamma g^{T}(\beta )u^{T}(\omega ,X)J^{-1}\nonumber \\&=\left[ \begin{array} [c]{ccc} B_{1}(\omega ,X,\beta )&B_{2}(\omega ,X,\beta )&B_{3}(\omega ,X,\beta ) \end{array} \right] , \end{aligned}$$
(28)

where \(B_{i}(\omega ,X,\beta )=-\gamma \frac{u_{i}(\omega ,X)}{J_{i}}g^{T} (\beta ),i=1,2,3\). Let the function vector \(\beta (\omega ,\hat{\omega },X)\) be defined as

$$\begin{aligned} \beta (\omega ,\hat{\omega },X) =&W_{1}(\omega _{1},\hat{\omega }_{2} ,\hat{\omega }_{3},X)\nonumber \\&+W_{2}(\hat{\omega }_{1},\omega _{2},\hat{\omega }_{3},X)\nonumber \\&+W_{3}(\hat{\omega }_{1},\hat{\omega }_{2},\omega _{3},X), \end{aligned}$$
(29)

where

$$\begin{aligned} \left\{ \begin{array} [c]{c} W_{1}=\int _{0}^{\omega _{1}}B_{1}(\sigma ,\hat{\omega }_{2},\hat{\omega } _{3},X,\beta _{1}(\sigma ,\hat{\omega }_{2},\hat{\omega }_{3},X))\mathrm{d}\sigma \\ W_{2}=\int _{0}^{\omega _{2}}B_{2}(\hat{\omega }_{1},\sigma ,\hat{\omega } _{3},X,\beta _{2}(\hat{\omega }_{1},\sigma ,\hat{\omega }_{3},X))\mathrm{d}\sigma \\ W_{3}=\int _{0}^{\omega _{3}}B_{3}(\hat{\omega }_{1},\hat{\omega }_{2} ,\sigma ,X,\beta _{3}(\hat{\omega }_{1},\hat{\omega }_{2},\sigma ,X))\mathrm{d}\sigma \end{array}, \right. \end{aligned}$$
(30)

with

$$\begin{aligned} \left\{ \begin{array} [c]{l} \beta _{1}(\sigma ,\hat{\omega }_{2},\hat{\omega }_{3},X)=\beta (\omega ,\hat{\omega },X)|_{\omega _{1}=\sigma ,\omega _{2}=\hat{\omega }_{2},\omega _{3} =\hat{\omega }_{3}}\\ \beta _{2}(\hat{\omega }_{1},\sigma ,\hat{\omega }_{3},X)=\beta (\omega ,\hat{\omega },X)|_{\omega _{2}=\sigma ,\omega _{1}=\hat{\omega }_{1},\omega _{3} =\hat{\omega }_{3}}\\ \beta _{3}(\hat{\omega }_{1},\hat{\omega }_{2},\sigma ,X)=\beta (\omega ,\hat{\omega },X)|_{\omega _{3}=\sigma ,\omega _{1}=\hat{\omega }_{1},\omega _{2} =\hat{\omega }_{2}}\text { }. \end{array} \right. \end{aligned}$$
(31)

For \(W_{1}\) in (29), it can be obtained that

$$\begin{aligned}&W_{1}(\omega _{1},\hat{\omega }_{2},\hat{\omega }_{3},X)\nonumber \\&\quad =\int _{0}^{\omega _{1}}B_{1}(\sigma ,\hat{\omega }_{2},\hat{\omega } _{3},X,W_{1}(\sigma ,\hat{\omega }_{2},\hat{\omega }_{3},X)+W_{2}+W_{3} )\mathrm{d}\sigma \nonumber \\&\quad =-\gamma \int _{0}^{\omega _{1}}\frac{u_{1}(\sigma ,\hat{\omega }_{2} ,\hat{\omega }_{3},X)}{J_{1}}\cdot g^{T}(W_{1}(\sigma ,\hat{\omega }_{2} ,\hat{\omega }_{3},X)\nonumber \\&\quad \qquad +W_{2}+W_{3})\mathrm{d}\sigma . \end{aligned}$$
(32)

Taking the partial derivative of \(W_{1}\) with respect to \(\omega _{1}\) yields

$$\begin{aligned}&\frac{\partial W_{1}(\omega _{1},\hat{\omega }_{2},\hat{\omega }_{3} ,X)}{\partial \omega _{1}}\nonumber \\&\quad =-\gamma \frac{u_{1}(\cdot )}{J_{1}}\cdot g^{T}(W_{1}(\cdot )+W_{2} (\cdot )+W_{3}(\cdot )), \end{aligned}$$
(33)

i.e.,

$$\begin{aligned} \frac{\partial \beta }{\partial \omega _{1}}&=\frac{\partial \beta _{1} }{\partial \omega _{1}}=-\gamma \frac{u_{1}(\omega _{1},\hat{\omega }_{2} ,\hat{\omega }_{3},X)}{J_{1}}\cdot g^{T}(\beta _{1})\nonumber \\&=\beta _{\omega 1}(\omega _{1},\hat{\omega }_{2},\hat{\omega }_{3},X,\beta _{1}). \end{aligned}$$
(34)

By the same way, \(\frac{\partial \beta }{\partial \omega _{2}}\) and \(\frac{\partial \beta }{\partial \omega _{3}}\) can be obtained as follows:

$$\begin{aligned} \frac{\partial \beta }{\partial \omega _{2}}=\beta _{\omega 2}(\hat{\omega } _{1},\omega _{2},\hat{\omega }_{3},X,\beta _{2}), \end{aligned}$$
(35)
$$\begin{aligned} \frac{\partial \beta }{\partial \omega _{3}}=\beta _{\omega 3}(\hat{\omega }_{1} ,\hat{\omega }_{2},\omega _{3},X,\beta _{3})\text { }. \end{aligned}$$
(36)

In summary, \(\frac{\partial \beta }{\partial \omega }\) can be written as

$$\begin{aligned} \frac{\partial \beta }{\partial \omega }&=\left[ \begin{array} [c]{ccc} \frac{\partial \beta _{1}}{\partial \omega _{1}}&\frac{\partial \beta _{2} }{\partial \omega _{2}}&\frac{\partial \beta _{3}}{\partial \omega _{2}} \end{array} \right] \nonumber \\&=\left[ \begin{array} [c]{ccc} \beta _{\omega 1}(\cdot )&\beta _{\omega 2}(\cdot )&\beta _{\omega 3}(\cdot ) \end{array} \right] . \text { } \end{aligned}$$
(37)

To represent the mismatch between \(\omega (t)\) and \(\hat{\omega }(t)\), an error signal is defined as \(e_{\omega }=\hat{\omega }-\omega =\left[ \begin{array} [c]{ccc} e_{\omega 1}&e_{\omega 2}&e_{\omega 3} \end{array} \right] ^\mathrm{T}\in \mathbb {R}^{3}\). From Assumption 3 and the fact that F will be designed to be continuously differentiable, it can be shown that \(B(\cdot )\) is continuously differentiable, thus there exists \(\delta _{ij}(\omega ,e_{\omega },X,\beta ) \in \mathbb {R}^{4},i,j=1,2,3\) satisfying the following equations

$$\begin{aligned} \left\{ \begin{array} [c]{l} \beta _{\omega 1}(\cdot )=B_{1}(\omega ,X,\beta )+e_{\omega 2}\delta _{12} (\cdot )+e_{\omega 3}\delta _{13}(\cdot )\\ \beta _{\omega 2}(\cdot )=B_{2}(\omega ,X,\beta )+e_{\omega 1}\delta _{21} (\cdot )+e_{\omega 3}\delta _{23}(\cdot )\\ \beta _{\omega 3}(\cdot )=B_{3}(\omega ,X,\beta )+e_{\omega 1}\delta _{31} (\cdot )+e_{\omega 2}\delta _{32}(\cdot )\text { } \end{array} \right. . \end{aligned}$$
(38)

So (37) can be rewritten as

$$\begin{aligned} \frac{\partial \beta }{\partial \omega }=B(\omega ,X,\beta )+\varSigma _{j=1} ^{3}e_{\omega j}\varDelta _{j}(\omega ,e_{\omega },X,\beta ) , \end{aligned}$$
(39)

where \(\varDelta _{j}(\cdot )=\left[ \begin{array} [c]{ccc} \delta _{1j}(\cdot )&\delta _{2j}(\cdot )&\delta _{3j}(\cdot ) \end{array} \right] \), \(\delta _{jj}(\cdot )=0\) for \(j=1,2,3\). By substituting (39) into (26), (26) can be rewritten as follows:

$$\begin{aligned} \dot{z}=-B(\cdot )J^{-1}LFz+\varSigma _{j=1}^{3}e_{\omega j}\varDelta _{j}(\cdot )J^{-1}LFz-\frac{\dot{r}}{r}z. \end{aligned}$$
(40)

By taking the time derivative of \(e_{\omega }(t)\) and substituting (24) into the resulting equation, it can be obtained that

$$\begin{aligned} \dot{e}_{\omega }=-K(\omega ,r,\hat{\omega }-\omega )e_{\omega }+rJ^{-1}LFz. \end{aligned}$$
(41)

Theorem 1

Consider the system (17), if the dynamic scaling factor r(t) is designed as follows:

$$\begin{aligned} \dot{r}(t)=cr\sum \limits _{j=1}^{3}e_{\omega j}^{2}\cdot \left\| \bar{\varDelta } _{j}(\omega ,e_{\omega },X,\beta )\right\| ^{2}\text { with }r(0){\ge }1, \end{aligned}$$
(42)

where \(c\ge 3/(2\gamma )\), \(\left\| \bar{\varDelta }_{j}(\omega ,e_{\omega },X,\beta )\right\| \) denotes the upper bound of \(\left\| \varDelta _{j}(\omega ,e_{\omega },X,\beta )\right\| \), and \(K(\omega ,r,\hat{\omega }-\omega )\) satisfies the following equation

$$\begin{aligned} K(\omega ,r,\hat{\omega }-\omega )=mr^{2}I_{3}+pcr^{2}D, \end{aligned}$$
(43)

with m and p being some positive gains, \(D=\mathrm{diag}\{\left[ \begin{array} [c]{ccc} \left\| \bar{\varDelta }_{1}(\cdot )\right\| ^{2}&\left\| \bar{\varDelta }_{2}(\cdot )\right\| ^{2}&\left\| \bar{\varDelta }_{3}(\cdot )\right\| ^{2} \end{array} \right] ^\mathrm{T}\}\) being a diagonal matrix. Thus the dynamics in (26), (41), and (42) has a globally stable manifold of equilibria defined by \(\mathscr {M}=\{(z,e_{\omega })|(z,e_{\omega })=(0,0)\}\). Furthermore, it can be obtained that z(t), r(t) and \(e_{\omega }(t)\in \mathscr {L} _{\infty }\).

Proof

Based on (42), it can be concluded that \(\dot{r}(t)\ge 0\) and \(r(t)\ge 1\). To prove the above theorem, a nonnegative function \(V_{z} (t)\in \mathbb {R}\) is defined as

$$\begin{aligned} V_{z}(t)=\frac{1}{2}z(t)^{T}z(t). \end{aligned}$$
(44)

After taking the time derivative of (44) and substituting (40) together with (42) into the resulting equation, the following expression for \(\dot{V}_{z}(t)\) can be obtained

$$\begin{aligned} \dot{V}_{z} =\,\,&z^{T}\dot{z}\nonumber \\ \le&-\gamma \left\| J^{-1}LFz\right\| ^{2}-\frac{\dot{r}}{r}\left\| z\right\| ^{2}\nonumber \\&+\varSigma _{j=1}^{3}\left| e_{\omega j}\right| \left\| J^{-1}LFz\right\| \cdot \left\| \bar{\varDelta }_{j}(\cdot )\right\| \cdot \left\| z\right\| \nonumber \\ \le&-\frac{\gamma }{2}\left\| J^{-1}LFz\right\| ^{2}-\sum \limits _{j=1} ^{3}\left( \sqrt{\frac{\gamma }{6}}\left\| J^{-1}LFz\right\| \right. \nonumber \\&\left. -\sqrt{\frac{3}{2\gamma }}\left| e_{j}\right| \left\| \bar{\varDelta }_{j}(\omega ,e)\right\| \left\| z\right\| \right) ^{2}\nonumber \\ \le&-\frac{\gamma }{2}\left\| J^{-1}LFz\right\| ^{2}. \end{aligned}$$
(45)

From (45), it can be concluded that \(z(t)\in \mathbb {\mathscr {L} }_{\infty }\) and \(LF(t)z(t)\in \mathbb {\mathscr {L}}_{\infty }\). To facilitate the analysis for \(e_{\omega }(t)\), another nonnegative function \(V_{e} (t)\in \mathbb {R}\) is defined as

$$\begin{aligned} V_{e}(t)=\frac{1}{2}e_{\omega }^{T}(t)e_{\omega }(t)+\frac{1}{m\gamma }V_{z}(t). \end{aligned}$$
(46)

After taking the time derivative of (46) and substituting (41) and (45) to the resulting equation, the following expression for \(\dot{V}_{e}(t)\) can be obtained

$$\begin{aligned} \dot{V}_{e}&\le e_{\omega }^{T}\dot{e}_{\omega }-\frac{1}{2m}\left\| J^{-1}LFz\right\| ^{2}\\&\le -\frac{m}{2}r^{2}\left\| e_{\omega }\right\| ^{2}-pcr^{2} e_{\omega }^{T}De_{\omega }.\nonumber \end{aligned}$$
(47)

Then it is not difficult to check that the dynamics in (40)–(41) is globally stable at \((z,e_{\omega })=(0,0)\), and also it can be obtained that \(e_{\omega }(t)\in \mathbb {\mathscr {L}}_{\infty }\). Furthermore, to verify the boundness of r(t), another nonnegative function \(V_{r} (t)\in \mathbb {R}\) is defined as

$$\begin{aligned} V_{r}(t)=V_{e}(t)+\frac{p}{2}r^{2}. \end{aligned}$$
(48)

After taking the time derivative of (48) and substituting (42) together with (47) into the resulting equation, the following expression for \(\dot{V}_{r}\) can be obtained

$$\begin{aligned} \dot{V}_{r} \le&-\frac{m}{2}r^{2}\left\| e_{\omega }\right\| ^{2}-pcr^{2}e_{\omega }^{T}De_{\omega }\nonumber \\&+pcr^{2}\sum \limits _{j=1}^{3}e_{\omega j}^{2}\cdot \left\| \bar{\varDelta } _{j}(\cdot )\right\| ^{2}\nonumber \\ \le&-\frac{m}{2}r^{2}\left\| e_{\omega }\right\| ^{2}. \end{aligned}$$
(49)

From (48) and (49), we know that \(r(t)\in \mathbb {\mathscr {L} }_{\infty }\), and then the theorem is proven. \(\square \)

3.2 Fault-tolerant controller design

Following the similar steps in [26], the angular velocity error \(\tilde{\omega }\) can be related with the quaternion error \(e_{q}(t)\) via the following equations

$$\begin{aligned} \left\{ \begin{array} [c]{l} \dot{e}_{0}=-\frac{1}{2}e_{v}^{T}\tilde{\omega }\\ \dot{e}_{v}=\frac{1}{2}(S(e_{v})+e_{0}I_{3})\tilde{\omega }. \end{array} \right. \end{aligned}$$
(50)

By taking the time derivative of (15) and substituting (14) into the resulting equation, the dynamics for \(\tilde{\omega }(t)\) can be obtained as follows:

$$\begin{aligned} J\dot{\tilde{\omega }} =&-S\left( \tilde{\omega }+\tilde{R}^{T}\omega _{d} \right) J\left( \tilde{\omega }+\tilde{R}^{T}\omega _{d}\right) \nonumber \\&+J\left( S(\tilde{\omega })\tilde{R}^{T}\omega _{d}-\tilde{R}^{T}\dot{\omega } _{d}\right) +LF\lambda . \end{aligned}$$
(51)

Let the sliding mode surface \(s(t)\in \mathbb {R}^{3}\) be defined as

$$\begin{aligned} s=\tilde{\omega }+K_{s}e_{v}, \end{aligned}$$
(52)

where \(s=\left[ \begin{array} [c]{ccc} s_{1}&s_{2}&s_{3} \end{array} \right] ^\mathrm{T},K_{s}=\mathrm{diag}\left\{ \left[ \begin{array} [c]{ccc} k_{s1}&k_{s2}&k_{s3} \end{array} \right] ^\mathrm{T}\right\} \) with \(k_{si}>0\) for \(i=1,2,3\).

Lemma 1

If the sliding mode surface \(s=\tilde{\omega }+K_{s}e_{v}\) is asymptotically stable, then the error signals \(\tilde{\omega }(t)\) and \(e_{v}(t)\) are also asymptotically stable.

Proof

Consider the nonnegative function

$$\begin{aligned} V_{s}&=\frac{1}{2}\left( e_{v}^{T}e_{v}+(1-e_{0})^{2}\right) \nonumber \\&=1-e_{0}\le 2. \end{aligned}$$
(53)

Take the time derivative of \(V_{s}\) and substitute (50) into the resulting equation, it can be obtained that

$$\begin{aligned} \dot{V}_{s}&=-\frac{\left\| K_{s}\right\| }{2}\left\| e_{v}\right\| ^{2}+\frac{1}{2}e_{v}^{T}s\nonumber \\&\le -\frac{\left\| K_{s}\right\| }{4}\left\| e_{v}\right\| ^{2}+\frac{1}{4\left\| K_{s}\right\| }\left\| s\right\| ^{2}\nonumber \\&=\frac{\left\| K_{s}\right\| }{4}\left( -2V_{s}+V_{s}^{2}\right) +\frac{1}{4\left\| K_{s}\right\| }\left\| s\right\| ^{2}. \end{aligned}$$
(54)

Consider the system

$$\begin{aligned} \dot{\zeta }=h(\zeta ,\mu )=\frac{\left\| K_{s}\right\| }{4}\left( -2\zeta +\zeta ^{2}\right) +\mu , \end{aligned}$$
(55)

where \(\mu \) is regarded as the control input, and obviously the system is continuously differentiable and Lipschitz in \((\zeta ,\mu )\) with \(\zeta \in [0,2]\). Since the unforced system \(\dot{\zeta }=h(\zeta ,0)=\frac{\left\| K_{s}\right\| }{4}(-2\zeta +\zeta ^{2}),\zeta \in [0,2]\) has an exponentially stable equilibrium point at \(\zeta =0\), the system (55) is input-to-state stable according to Lemma 4.6 in [29]. On the other hand, the sliding mode surface s is asymptotically stable, so the cascade system composed of (55) and \(\mu =\frac{1}{4\left\| K_{s}\right\| }\left\| s\right\| ^{2}\) is asymptotically stable according to Lemma 4.7 in [29]. Finally, from comparison principle, we can conclude that \(0\le V_{s}\le \zeta \le 2\), so \(V_{s}(t)\) is also asymptotically stable, namely the vector \(\tilde{\omega }(t)\) and \(e_{v}(t)\) are asymptotically stable [30].\(\square \)

After taking the time derivative of (52) and substituting (51) together with (50), the open loop error dynamics of the quadrotor UAV is obtained

$$\begin{aligned} J\dot{s}=\varPi (\omega ,\omega _{d},\dot{\omega }_{d},e_{q})+LF\lambda , \end{aligned}$$
(56)

where \(\varPi (\omega ,\omega _{d},\dot{\omega }_{d},e_{q})=-S(\tilde{\omega } +\tilde{R}^{T}\omega _{d})J(\tilde{\omega }+\tilde{R}^{T}\omega _{d} )+J(S(\tilde{\omega })\tilde{R}^{T}\omega _{d}-\tilde{R}^{T}\dot{\omega } _{d})+\frac{1}{2}JK_{s}(S(e_{v})+e_{0}I_{3})\tilde{\omega }\). From the fact that \(\lambda =\hat{\lambda }-rz\), (56) can be rewritten as

$$\begin{aligned} J\dot{s}=\varPi (\omega ,\omega _{d},\dot{\omega }_{d},e_{q})+LF\hat{\lambda } +\rho , \end{aligned}$$
(57)

where \(\rho =rLFz=[\rho _{1},\rho _{2},\rho _{3}]^\mathrm{T}\).

Property 1

From the fact that \(r(t)\in \mathbb {\mathscr {L}}_{\infty }\) together with \(LFz(t)\in \mathbb {\mathscr {L}}_{\infty },\) which have been already verified above, it can be concluded that \(\rho \in \mathbb {\mathscr {L}}_{\infty }\), so we can assume that \(\left\| \rho \right\| \le \rho _0\) where \(\rho _0\) is a positive constant.

Theorem 2

Consider the system of (57), if we design the control input F in the following form

$$\begin{aligned} F= & {} -\left\| \hat{\lambda }\right\| ^{-2}\cdot L^{R}(\varPi (\omega ,\omega _{d},\dot{\omega }_{d},e_{q})\nonumber \\&+\varGamma s+\rho _0 \mathrm{sign}(s))\cdot \hat{\lambda }^{T}, \end{aligned}$$
(58)

where \(\varGamma \in \mathbb {R}^{3\times 3}\) is a positive definite matrix, then the closed-loop error dynamics is asymptotically stable, i.e., \(\underset{t\rightarrow \infty }{\lim }\tilde{\omega }=0,\underset{t\rightarrow \infty }{\lim }e_{v}=0\).

Proof

Based on (58), details about \(u(\omega ,X)\) and \(g(\beta )\) can be listed as follows:

$$\begin{aligned}&u(\omega ,X)\nonumber \\&\quad =-S(\omega )J\omega +JS(\omega )\tilde{R}^{T}\omega _{d}\nonumber \\&\quad \quad +\frac{1}{2} JK_{s}(S(e_{v})+e_{0}I_{3})\omega +\varGamma \omega \nonumber \\&\quad \quad +\rho _0 \mathrm{sign}(\omega -\tilde{R}^{T}\omega _{d}+K_{s}e_{v})\nonumber \\&\quad \quad -JS(\tilde{R} ^{T}\omega _{d})\tilde{R}^{T}\omega _{d}-J\tilde{R}^{T}\dot{\omega } _{d}\nonumber \\&\quad \quad -\frac{1}{2}JK_{s}(S(e_{v})+e_{0}I_{3})\tilde{R}^{T}\omega _{d}\nonumber \\&\quad \quad +\varGamma (-\tilde{R}^{T}\omega _{d}+K_{s}e_{v})\nonumber \\&\quad =\left[ \begin{array} [c]{ccc} u_{1}&u_{2}&u_{3} \end{array} \right] ^\mathrm{T}, \end{aligned}$$
(59)
$$\begin{aligned}&g(\beta )=\left\| \hat{\lambda }\right\| ^{-2}\cdot \hat{\lambda } ^{T}=\left\| \xi +\beta \right\| ^{-2}\cdot (\xi +\beta )^{T}. \end{aligned}$$
(60)

To prove the stability of the proposed controller, let the nonnegative function \(V_{f}(t)\in \mathbb {R}^{3}\) be defined as

$$\begin{aligned} V_{f}=\frac{1}{2}s^{T}Js. \end{aligned}$$
(61)

By taking the time derivative of (61) and substituting (57) together with (58) into the resulting equation, the following equation for \(\dot{V}_{f}(t)\) can be obtained

$$\begin{aligned} \dot{V}_{f} =\,&s^{T}J\dot{s}\nonumber \\ =\,&s^{T}\varPi (\omega ,\omega _{d},\dot{\omega }_{d},e_{q})-s^{T}\varPi (\omega ,\omega _{d},\dot{\omega }_{d},e_{q})\nonumber \\&-s^{T}\varGamma s-\rho _0 s^{T}\mathrm{sign}(s)+s^{T}\rho \nonumber \\ \le&-s^{T}\varGamma s-\rho _0 s^{T}\mathrm{sign}(s)+\rho _0\left\| s\right\| \nonumber \\ \le&-s^{T}\varGamma s. \end{aligned}$$
(62)

From (62), it is not difficult to conclude \(\mathop {\lim }\limits _ {t\rightarrow \infty }s=0\), thus it can be concluded that \(\underset{t\rightarrow \infty }{\lim }\tilde{\omega }=0\) and \(\underset{t\rightarrow \infty }{\lim }e_{v}=0\) via Lemma 1.\(\square \)

4 Experimental results

To validate the performance of the proposed fault-tolerant control scheme presented in Sect. 3, real-time experiments are implemented on a HILS testbed, shown in Fig. 2. The details of the HILS testbed are introduced in [31]. Videos of the experiments are available at https://youtu.be/9vbiGApuLos and https://youtu.be/d9xsDMNwWrs.

Fig. 2
figure 2

Hardware-in-loop-simulation quadrotor testbed

The parameters of the quadrotor UAV system and the control scheme are listed as \(J=\mathrm{diag} \left\{ \left[ \begin{array} [c]{ccc} 1.34&1.31&2.54 \end{array} \right] ^\mathrm{T}\right\} \times \,10^{-2}\,\mathrm{kg\,m^{2}}\), \(l=0.225\,\mathrm{m}\), \(\varepsilon =0.25,\) \(c=2.5\), \(\gamma =1\), \(p=1\), \(m=50\), \(K_{s}=\mathrm{diag}\left\{ \left[ \begin{array} [c]{ccc} 2.2&2.5&4 \end{array} \right] ^\mathrm{T}\right\} \), \(\varGamma =\mathrm{diag}\left\{ \left[ \begin{array} [c]{ccc} 1.86&1.86&3.05 \end{array} \right] ^\mathrm{T}\right\} \) and \(\rho _0=0.40\). The desired attitude is selected to be \(q_{d}=\left[ \begin{array} [c]{cccc} 1&0&0&0 \end{array} \right] ^\mathrm{T}\) with the corresponding desired angular velocity denoted as \(\omega _{d}=\left[ \begin{array} [c]{ccc} 0&0&0 \end{array} \right] ^\mathrm{T}\) rad/s.

Fig. 3
figure 3

Attitude error \((\phi ,\theta ,\psi )\) in Euler angles

Moreover, the fault matrix is assigned as

$$\begin{aligned} \lambda =\left\{ \begin{array} [c]{ll} \left[ \begin{array} [c]{cccc} 1 &{} 1 &{} 1 &{} 1 \end{array} \right] ^\mathrm{T}, &{} t<80\,\mathrm{s}\\ \left[ \begin{array} [c]{cccc} 1 &{} 1 &{} 0.9 &{} 1 \end{array} \right] ^\mathrm{T}, &{} 80\,\mathrm{s}\le t<125\,\mathrm{s}\\ \left[ \begin{array} [c]{cccc} 1 &{} 0.8 &{} 0.9 &{} 1 \end{array} \right] ^\mathrm{T},&t\ge 125\,\mathrm{s} \end{array} \right. , \end{aligned}$$
(63)

which means that at the first 80 s, the four rotors are at normal operation, while at \(t=80\) seconds, the third motor can only provide \(90\%\) thrust of the normal case. And at \(t=125\) seconds, the second rotor also is out of order and can only provide \(80\%\) thrust of the normal case. The real-time experimental results are presented in Figs. 3, 4, 5, 6, 7, 8, 9 and 10.

Fig. 4
figure 4

Attitude error \((e_{0},e_{v1},e_{v2},e_{v3})\) in quaternion

Fig. 5
figure 5

Error of angular velocities \((\tilde{\omega }_{1},\tilde{\omega } _{2},\tilde{\omega }_{3})\)

Figures 3 and 4 show the attitude error of the quadrotor represented by Euler angles and unit quaternion, respectively. At \(t=80\) s, the third rotor is facing some faults, which lead the attitude variation seasonally. As shown in these figures, the roll and pitch angle fluctuate about \(8 {{}^\circ } \) while the yaw angle about \(3 {{}^\circ } \). At \(t=125\) s, the second rotor loses \(20\%\) of effectiveness, which cause a more drastic variation than the previous fault. It can be seen that the roll angle fluctuates about \(12 {{}^\circ } \), while the pitch angle varies about \(20 {{}^\circ } \) and the yaw angle varies about \(4 {{}^\circ } .\) As shown in Figs. 3 and 4, the error signal converges to 0 in less than 5 s after the faults happen. Figure 5 illustrates the variation of angular velocity error \(\tilde{\omega }\left( t\right) \). It can be seen that the angular velocity alters after the actuator’s fault takes place, while converges to 0 in less than 2 s. This means that the attitude control objective has been achieved.

Fig. 6
figure 6

Control inputs \((f_{1},f_{2},f_{3},f_{4})\)

Fig. 7
figure 7

Rotor speeds \((n_{1},n_{2},n_{3},n_{4})\)

The control inputs F and the corresponding rotor speeds are illustrated in Figs. 6 and 7, respectively. It can be seen that \(f_{i}(t)\) for \(i=1\), 2, 3, 4, stays within some reasonable values.

Fig. 8
figure 8

Estimation error of angular velocities \((e_{\omega 1},e_{\omega 2},e_{\omega 3})\)

Fig. 9
figure 9

Estimation of actuator’s faults \((\hat{\lambda }_{1},\hat{\lambda } _{2},\hat{\lambda }_{3},\hat{\lambda }_{4})\)

Fig. 10
figure 10

Off-the-manifold variables \((z_{1},z_{2},z_{3},z_{4})\)

From Fig. 8, it can been seen that the error signal \(e_{\omega }(t)\) converges to 0 quickly. Figure 9 shows that the estimation of actuator’s fault \(\hat{\lambda }(t)\) is stable. Figure 10 displays the off-the-manifold variables z(t) which is consistent with (40).

For the comparison purpose, the standard SMC controller is implemented to deal with the same actuators’ fault and the experimental results are shown in Figs.11, 12, 13 and 14.

Fig. 11
figure 11

SMC: attitude error in Euler angles

Fig. 12
figure 12

SMC: attitude error in Quaternion

Fig. 13
figure 13

SMC: control inputs

Fig. 14
figure 14

SMC: rotor speeds

In order to quantitatively show the differences between the two controllers, we analyzed the maximum (MAX) offset, regulating time and the root-mean-square (RMS) errors after each actuator’s fault happens, which are displayed in Table 1.

In Table 1, 1st MAX offset and 2nd MAX offset mean the MAX offset after the first and the second actuators’ faults, respectively, and the same to the regulating time. First RMS errors mean the RMS errors during 85–115 s, and 2nd RMS errors mean the RMS errors during 130–160 s. From Table 1, we can see that, most of the maximum offsets and RMS errors in the proposed control structure are smaller than that of standard SMC. The regulating time of the proposed controller is also less than the standard SMC. On the other hand, from the control inputs, we can also conclude that the proposed control scheme is of more robustness than the standard SMC.

5 Conclusion

In this paper, a nonlinear adaptive observer-based fault-tolerant control scheme is developed to overcome the partial loss of actuator’s effectiveness of a quadrotor UAV. A unit quaternion representation is used to design a nonsingular attitude tracking controller. The I&I-based observer is modified by adding a dynamic scaling factor and a filtered state to ensure the solvability of the partial differential equations. Without the need of additional fault detection design, the observer is able to compensate for the actuator’s fault. Based on the proposed observer, a slide mode controller is developed to ensure asymptotical tracking of the quadrotor’s attitude. The Lyapunov-based stability analysis has been presented to prove that the closed-loop system is stable and the attitude tracking errors converge to zero asymptotically. Real-time experimental results performed on the self-build HILS testbed validate the performance of the proposed control strategy. Future work will be focused on the position tracking controller design and experimental verification on a quadrotor UAV of full degree of freedom.

Table 1 Analysis data of control errors