1 Introduction

Flight control design for super maneuverable aircraft requires the use of nonlinear control approaches to overcome the limitations of linear control techniques. There exist a variety of nonlinear control techniques such as backstepping, nonlinear dynamic inversion (NDI), and sliding mode control. Among them, NDI has proved to be a suitable controller design approach for fighter aircrafts and has been applied for high angle of attack flight [1] and super maneuverable aircrafts [2]. However, NDI approach presents limited robustness due to modeling error and uncertainties that causes model mismatch; therefore, this method has been enhanced using robust techniques, adaptive control approach [3], and incremental control [4, 5].

In [4], a modified version of NDI is presented based on the idea that all changes in the aircraft model can be reflected in the measurement of the state derivative, giving as a result a robust NDI scheme. Since model dependence is eliminated from aircraft equations of motion, only the incremental command is required, which is the reason why this method is also referred as incremental nonlinear dynamic inversion (INDI) [5]. The main advantage of this method is that the state-space equations of motion are simplified and only the information about the influence of the control is needed, making the system not only robust but also insensitive to modeling error and uncertainties that are present in the dynamics of the system. INDI has been successfully applied to helicopter flight control [6] whose robustness is tested for some model inaccuracies. Also, in [7] and [8], it is shown that INDI control strategy is a suitable choice for micro aerial vehicles.

INDI works properly assuming the availability of the derivative of the state, but in reality, conventional sensors do not provide this information directly. Therefore, the state derivative (that can be angular acceleration for aircraft’s attitude motion) availability configurates the main drawback of this approach. In [9], several methods are reviewed for angular acceleration measurement and they are categorized into two classes: direct measurement using special sensors, and indirect measurement, where the velocity signal is used to estimate angular acceleration signal. Regarding to indirect measurement, the main goal is to provide adequate noise attenuation and appropriate delay characteristics. Predictive filter [10], Kalman filter [11], and sliding mode differentiator [12] can be seen as feasible alternatives.

Recently, INDI has been implemented using indirect measurement methods. In [5], a predictive filter is utilized to estimate the angular acceleration values obtained from IMU sensors, whereas in [8] a second-order filter is employed for this purpose. In both cases, the availability of angular acceleration is solved but the noise and delay can still affect the performance of the aircraft responses. Therefore, a Kalman-based estimator appears as an appropriate alternative since it can provide accurate (optimal) estimation and can handle noise and delay problems.

Regarding estimation theory, it is known that based on the available information, one can perform either prediction, filtering or smoothing. Among them, smoothing can perform better because it uses past, present, and future values [13]. Besides, from smoothing techniques, the fixed-lag version is implemented when there exists a delay between the signal generator and the signal estimation [14], which is the case of the INDI technique. This is because the incremental form of the state-space system requires one-step delay estimation of the state derivative. Furthermore, taking into account the sample frequency difference between the inertial measurement unit (IMU) and the flight control computer (FCC), it is known that in general, IMU sensor works faster than FCC, thus more information is available for the estimation. In other words, the lag of the smoother will increase when the sample frequency between the IMU and the FCC increases, leading to a more accurate estimation.

In this work, a fixed-lag smoothing algorithm based on [15] is proposed as an alternative to the angular acceleration and angular velocity availability problem for the implementation of the INDI flight control design. The results show that a discrete Kalman-based smoother can attenuate noise and provide an accurate estimation for angular velocity and angular acceleration. It is observed that when the sample frequency operation between the sensors and the FCC is increased, the covariance matrix of the smoother will be reduced indicating a better performance. Also, by running simulations with different power spectral density (PSD), which indicates the quality of the sensor, it can be seen that for low-quality sensors (high PSD) even though the noise is not completely attenuated, the tracking performance of the command response can be still maintained. Hence, if the measurement information is very noisy, the smoother can still provide a good estimation but it cannot reduce the noise level, showing the limitation of indirect measurement used with INDI.

This paper is structured as follows: Sect. 2 states the main equations of INDI. Section 3 reviews the smoothing algorithm based on the discrete Kalman filter equations. Section 4 covers the flight control design with INDI and the smoother for angular acceleration and angular velocity estimation. Finally, Section 5 presents the simulations and results considering IMU sensor noise effect.

2 Incremental Nonlinear Dynamic Inversion

The INDI technique exploits the principle of feedback linearization, transforming a nonlinear system into an equivalent linear system through state feedback. In contrast with NDI, the nonlinear system in state-space form is based on the incremental form of the dynamics of the system [5].

The aircraft’s equations of motion in the state space form is represented by the following equation.

$$\dot{x} = f(x) + G(x)u,$$
(1)

where x is the \(n \times 1\) state vector, \(\dot{x} = {\raise0.7ex\hbox{${{\text{d}}x}$} \!\mathord{\left/ {\vphantom {{{\text{d}}x} {{\text{d}}t}}}\right.\kern-\nulldelimiterspace} \!\lower0.7ex\hbox{${{\text{d}}t}$}}\) is the time derivative, u is the \(m \times 1\) input vector, \(f(x)\) is a \(n \times 1\) vector that can include nonlinear functions, and \(G(x)\) is the \(n \times m\) control effectiveness matrix. The incremental form of Eq. (1) is obtained from the first-order term of its Taylor series expansion as follows:

$$\begin{aligned} \dot{x} \approx& \dot{x}_{0} + \frac{\partial }{\partial x}[f(x) + G(x)u]_{{x_{0} ,u_{0} }} (x - x_{0} ) \hfill \\ &+ \frac{\partial }{\partial u}[f(x) + G(x)u]_{{x_{0} ,u_{0} }} (u - u_{0} ), \hfill \\ \dot{x} \approx& \dot{x}_{0} + \frac{\partial }{\partial x}[f(x) + G(x)u]_{{x_{0} ,u_{0} }} (x - x_{0} ) + G(x_{0} )(u - u_{0} ). \hfill \\ \end{aligned}$$
(2)

Here x0 and u0 represent a one-step previous solution of x and u, respectively. Furthermore, it is known that the surface deflections represented by the actuator dynamics operate faster than the aircraft dynamics. Then, assuming that \(x \approx x_{0}\), since u changes faster than x, Eq. (2) yields:

$$\dot{x} = \dot{x}_{0} + G(x_{0} )(u - u_{0} ).$$
(3)

It can be seen that instead of the control u only, this representation uses the incremental command \(\Delta u = (u - u_{0} )\), thus u0 should be available. Then, applying the inversion to Eq. (3), the control law is defined as:

$$u = G(x_{0} )^{ - 1} (v - \dot{x}_{0} ) + u_{0} ,$$
(4)

with v being the pseudo input that controls the system using some linear control law. At this point, the inversion does not require information of f(x) but only the control effectiveness matrix G(x0), which is require to make the inversion process simpler. Finally, the derivative of x at the previous step \((\dot{x}_{0} )\) is required for this approach, which can be obtained through direct measurement or estimation [11].

In [5] and [6], the robustness of INDI is studied and shown that under certain conditions this technique is insensitive to uncertainties in aerodynamic model, center of gravity, and moment of inertia.

3 Smoothing Algorithm

As mentioned earlier, in estimation theory there exists three kind of approaches, filtering, prediction, and smoothing. All of these methods follow the principle that the larger the available information is, the more accurate the estimation will be, thus it is expected the smoothing algorithm that uses past, present, and future measurement information, to provide the best estimations.

Among smoothing algorithms, we can find three different types: the fixed-interval algorithm that provides the optimal estimate using all available data; the fixed-point algorithm that estimates a point at a specific time; and the fixed-lag algorithm that estimates a value at some fixed lag [14]. In this work, since the estimation is accomplished online, a fixed-lag algorithm is implemented to achieve angular acceleration and angular velocity estimation. The lag is defined by the time difference between \(\dot{x}\) and \({\dot{x}}_{0}\), and a better estimation is obtained when the lag is larger.

The smoothing algorithm can be seen as an extension of the discrete Kalman filter; thus, this section will state the Kalman equations to later define the smoothing algorithm.

3.1 Discrete Kalman Filter

The widely known Kalman filter is a state estimator that provides an optimal estimate \(\hat{x}_{k}\) for a state vector \(x_{k}\) such that the variance of error filter \(E\left[ {\left\| {x_{k} - \hat{x}_{k} } \right\|^{2} } \right]\) reaches its minimum value [14]. The term \(E\left[ x \right] = \int\nolimits_{ - \infty }^{\infty } {xf(x){\text{d}}x}\) refers to the expectation value of a Gaussian distribution \(f(x)\).

Having the discrete signal process model:

$$\begin{gathered} x_{k + 1} = F_{k} x_{k} + G_{k} w_{k} , \hfill \\ z_{k + 1} = H_{k + 1} x_{k + 1} + v_{k + 1} , \hfill \\ \end{gathered}$$
(5)

where \(x_{k}\) is the state vector, \(F_{k}\) is the transition matrix, \(z_{k}\) is the measurement vector, \(H_{z}\) is the observation matrix, \(\nu_{k}\) is the measurement noise vector and \(w_{k}\) is the process noise vector.

The derivation of Kalman filter equations is well known and can be summarized in the following equations.

Prediction

$$\begin{gathered} \hat{x}_{k + 1/k} = F_{k} \hat{x}_{k/k} , \hfill \\ P_{k + 1/k} = F_{k} P_{k/k} F_{k}^{T} + G_{k} Q_{k} G_{k}^{T} . \hfill \\ \end{gathered}$$
(6)

Update

$$\begin{gathered} K_{k + 1} = P_{k + 1/k} H_{k + 1}^{T} (H_{k + 1} P_{k + 1/k} H_{k + 1}^{T} + R_{k + 1} )^{ - 1} , \hfill \\ P_{k + 1/k + 1} = P_{k + 1/k} - K_{k + 1} H_{k + 1} P_{k + 1/k} , \hfill \\ \hat{x}_{k + 1/k + 1} = \hat{x}_{k + 1/k} + K_{k + 1} (z_{k + 1} - H_{k + 1} \hat{x}_{k + 1/k} ). \hfill \\ \end{gathered}$$
(7)

The Kalman filter algorithm is composed of two stages: the prediction and the update. First, the state \({\widehat{x}}_{k+1/k}\) is predicted from \(\hat{x}_{k/k}\). Here \(P_{k + 1/k}\) is the prior estimate covariance matrix and \(Q_{k}\) is the process noise covariance matrix. Then the Kalman gain \(K_{k + 1}\) is obtained, and the state and covariance are updated using the predicted state \(\hat{x}_{k + 1/k}\) and the observation \(z_{k + 1}\) to finally get the estimation \(\hat{x}_{k + 1/k + 1}\) and its covariance matrix \(P_{k + 1/k + 1}\).

3.2 Fixed-lag Smoothing Algorithm


As explained before, this algorithm estimates a state at fixed delay in the past. Fixed-lag smoothing equations can be derived from the Kalman filter equations using an augmented state-space signal model of Eq. (5), with the idea of getting recursive equations for the estimate: \(\hat{x}_{k - N/k} = E[x_{k - N} |z_{k} ]\) and the error covariance matrix \(P_{k - N/k} = E\left\{ {\left[ {x_{k - N} - \hat{x}_{k - N/k} } \right]\left[ {x_{k - N} - \hat{x}_{k - N/k} } \right]^{T} |z_{k} } \right\}\) with N as a fixed lag and \(k = 0,1,2,...,N\).

The model of Fig. 2 represents the augmented signal and has the following equations in state-space form.

$$\begin{gathered} \left[ {\begin{array}{*{20}c} {x_{k + 1} } \\ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {x_{k + 1}^{1} } \\ {x_{k + 1}^{2} } \\ \end{array} } \\ \vdots \\ \end{array} } \\ {x_{k + 1}^{N} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {F_{k} } & 0 & \cdots & {\begin{array}{*{20}c} 0 & 0 \\ \end{array} } \\ I & 0 & \cdots & {\begin{array}{*{20}c} 0 & 0 \\ \end{array} } \\ 0 & I & \cdots & {\begin{array}{*{20}c} 0 & 0 \\ \end{array} } \\ {\begin{array}{*{20}c} \vdots \\ 0 \\ \end{array} } & {\begin{array}{*{20}c} \vdots \\ 0 \\ \end{array} } & {\begin{array}{*{20}c} \ddots \\ \cdots \\ \end{array} } & {\begin{array}{*{20}c} {\begin{array}{*{20}c} \vdots \\ I \\ \end{array} } & {\begin{array}{*{20}c} \vdots \\ 0 \\ \end{array} } \\ \end{array} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {x_{k} } \\ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {x_{k}^{1} } \\ {x_{k}^{2} } \\ \end{array} } \\ \vdots \\ \end{array} } \\ {x_{k}^{N} } \\ \end{array} } \right] + \left[ {\begin{array}{*{20}c} {G_{k} } \\ {\begin{array}{*{20}c} {\begin{array}{*{20}c} 0 \\ 0 \\ \end{array} } \\ \vdots \\ \end{array} } \\ 0 \\ \end{array} } \right]w_{k} , \hfill \\ z_{k + 1} = \left[ {\begin{array}{*{20}c} {H_{k + 1} } & 0 & \cdots & {\begin{array}{*{20}c} 0 & 0 \\ \end{array} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {x_{k} } \\ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {x_{k}^{1} } \\ {x_{k}^{2} } \\ \end{array} } \\ \vdots \\ \end{array} } \\ {x_{k}^{N} } \\ \end{array} } \right] + v_{k + 1} . \hfill \\ \end{gathered}$$
Fig. 1
figure 1

Diagram of the linearized system using INDI

Fig. 2
figure 2

Augmented discrete signal model

or

$$\begin{gathered} \tilde{x}_{k + 1} = \tilde{F}_{k} \tilde{x}_{k} + \tilde{G}_{k} w_{k} , \hfill \\ z_{k + 1} = \tilde{H}_{k + 1} \tilde{x}_{k + 1} + v_{k + 1} . \hfill \\ \end{gathered}$$
(8)

Using Eq. (8), it can be obtained the following augmented smoothing equations [15].

$$\begin{gathered} \tilde{x}_{k + 1/k} = \tilde{F}_{k} \tilde{x}_{k + k} , \hfill \\ \tilde{P}_{k + 1/k} = \tilde{F}_{k} \tilde{P}_{k/k} \tilde{F}_{k}^{T} + \tilde{G}_{k} Q\tilde{G}_{k}^{T} , \hfill \\ \tilde{K}_{k + 1} = \tilde{P}_{k + 1/k} \tilde{H}_{k + 1}^{T} [\tilde{H}_{k + 1} \tilde{P}_{k + 1/k} \tilde{H}_{k + 1}^{T} + \tilde{R}_{k + 1} ]^{ - 1} , \hfill \\ \tilde{P}_{k + 1/k + 1} = \tilde{P}_{k + 1/k} - \tilde{K}_{k + 1} \tilde{H}_{k + 1} \tilde{P}_{k + 1/k} , \hfill \\ \tilde{x}_{k + 1/k + 1} = \tilde{x}_{k + 1/k} + \tilde{K}_{k + 1} [z_{k + 1} - H_{k + 1} \hat{X}_{k + 1/k} ], \hfill \\ \end{gathered}$$
(9)

where

$$\begin{aligned} \tilde{x}_{k + 1/k + 1} & = \left[ {\begin{array}{*{20}c} {\hat{x}_{k + 1/k + 1} } \\ {\hat{x}_{k + 1/k + 1}^{1} } \\ {\hat{x}_{k + 1/k + 1}^{2} } \\ {\begin{array}{*{20}c} \vdots \\ {\hat{x}_{k + 1/k + 1}^{N} } \\ \end{array} } \\ \end{array} } \right],\tilde{K}_{k + 1} = \left[ {\begin{array}{*{20}c} {K_{k + 1} } \\ {K_{k + 1}^{1} } \\ {K_{k + 1}^{2} } \\ \vdots \\ {K_{k + 1}^{N} } \\ \end{array} } \right],\\ \tilde{P}_{k + 1/k + 1} & = \left[ {\begin{array}{*{20}c} {P_{k + 1/k + 1} } & {P_{k + 1/k + 1}^{1} } & {P_{k + 1/k + 1}^{2} } & \cdots & {P_{k + 1/k + 1}^{N} } \\ {P_{k + 1/k + 1}^{1} } & {P_{k + 1/k + 1}^{1,1} } & {P_{k + 1/k + 1}^{1,2} } & \cdots & {P_{k + 1/k + 1}^{1,N} } \\ {P_{k + 1/k + 1}^{2} } & {P_{k + 1/k + 1}^{2,1} } & {P_{k + 1/k + 1}^{2,2} } & \cdots & {P_{k + 1/k + 1}^{2,N} } \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ {P_{k + 1/k + 1}^{N} } & {P_{k + 1/k + 1}^{N,1} } & {P_{k + 1/k + 1}^{N,2} } & \cdots & {P_{k + 1/k + 1}^{N,N} } \\ \end{array} } \right]. \end{aligned}$$

Making \(\hat{x}_{k + 1/k + 1}^{i} = \hat{x}_{k + 1 - i/k + 1}\) and \(P_{k + 1/k + 1}^{i,i} = P_{k + 1 - i/k + 1}\), the smoothing recursive equations are summarized as follows:

$$\begin{gathered} P_{k + 1/k}^{i} = P_{k/k}^{i - 1} F_{k}^{T} , \hfill \\ K_{k + 1}^{i} = P_{k + 1/k}^{i} H_{k + 1}^{T} \left[ {H_{k + 1} P_{k + 1/k} H_{k + 1}^{T} + R_{k + 1} } \right]^{ - 1} , \hfill \\ P_{k + 1/k + 1}^{i} = P_{k + 1/k}^{i} \left[ {I - H_{k + 1}^{T} K_{k + 1}^{T} } \right], \hfill \\ \hat{x}_{k + 1/k + 1}^{i} = \hat{x}_{k/k}^{i} + K_{k + 1}^{i} \left[ {z_{ + 1} - H_{k + 1} \hat{x}_{k + 1/k} } \right]. \hfill \\ \end{gathered}$$
(10)

Equation (10) is initialized by \(P_{0/0}^{i} = 0\) for all \(i = 1,2,...,N\).

The properties of the fixed-lag smoother studied in [15] show that a reduction in error covariance \(P_{k + 1/k + 1}^{i,i}\) occurs when \(i\) increases. Then, for a large lag N, the smoother will perform better.

4 Flight Control Design using INDI and Smoothing Algorithm

A control augmentation system (CAS) for the F-18 HARV aircraft was designed using INDI with the time-scale separation method dividing the dynamics into the fast and slow dynamics. Then a smoother is implemented in both, the inner loop for angular acceleration estimation and the outer loop for angular velocity estimation.

4.1 A Control Augmentation System with INDI

The F-18 HARV aircraft aerodynamic model is obtained from the NASA technical paper [16]. The CAS consists on three commands: \(p_{{{\text{cmd}}}}\) and \(\beta_{{{\text{cmd}}}}\) for lateral-directional mode and \(\alpha_{{{\text{cmd}}}}\) for longitudinal mode. Furthermore, the two-time scale separation method is used, where the system is divided into the fast dynamics for angular rates \(\left[ {\begin{array}{*{20}c} p & q & r \\ \end{array} } \right]^{T}\) and the slow dynamics for wind axis parameters \(\left[ {\begin{array}{*{20}c} \alpha & \beta \\ \end{array} } \right]^{T}\). From the nonlinear equations of motion that describe the aircraft model, we use the following relations to implement the INDI algorithm:

Moment equations

$$\left[ {\begin{array}{*{20}c} L \\ M \\ N \\ \end{array} } \right] = J\left[ {\begin{array}{*{20}c} {\dot{p}} \\ {\dot{q}} \\ {\dot{r}} \\ \end{array} } \right] + \left[ {\begin{array}{*{20}c} p \\ q \\ r \\ \end{array} } \right] \times \left( {J\left[ {\begin{array}{*{20}c} p \\ q \\ r \\ \end{array} } \right]} \right).$$
(11)

Wind axis translational equations

$$\begin{aligned} \dot{\alpha } & = \frac{1}{Vm\cos \beta }\left[ \begin{gathered} - L_{a} + Z_{T} \cos \alpha - X_{T} \sin \alpha \hfill \\ \quad + mg\left( {\cos \alpha \cos \phi \cos \theta + \sin \alpha \sin \theta } \right) \hfill \\ \end{gathered} \right] \\ &\quad + q - \tan \beta \left( {p\cos \alpha - r\sin \alpha } \right), \hfill \\ \dot{\beta } & = \frac{1}{Vm\cos \beta }\left[ \begin{gathered} D_{a} \sin \beta + Y_{a} \cos \beta - X_{T} \cos \alpha \sin \beta \hfill \\ \quad + mg\left( \sin \theta \cos \alpha \cos \beta + \cos \beta \sin \phi \cos \theta \right.\hfill\\ \quad \left. - \cos \phi \cos \theta \sin \alpha \sin \beta \right) \hfill \\ \end{gathered} \right] \hfill \\ & \quad + p\sin \alpha - r\cos \alpha . \hfill \\ \end{aligned}$$
(12)

For the inner loop, the moment equations in Eq. (11) can be express in the form of Eq. (1) as follows:

$$\dot{\omega } = - J^{ - 1} \omega \times J\omega + J^{ - 1} \overline{A} + J^{ - 1} \overline{D}\delta ,$$
(13)

where \(\delta = \left[ {\begin{array}{*{20}c} {\delta_{a} } & {\delta_{e} } & {\delta_{r} } \\ \end{array} } \right]^{T}\) is the control input vector, \(\omega = \left[ {\begin{array}{*{20}c} p & q & r \\ \end{array} } \right]^{T}\) is the angular rate vector, \(J\) is the moment of inertia matrix and \(\overline{A}\) and \(\overline{D}\) are matrices that contain the aerodynamic coefficients.

$$\begin{aligned} \overline{A} & = \frac{1}{2}\rho V^{2} Sb\left[ {\begin{array}{*{20}c} {C_{{l_{\beta } }} \beta + \frac{b}{2V}\left( {C_{{l_{p} }} p + C_{{l_{r} }} r} \right)} \\ {C_{{m_{o} }} + \frac{c}{2V}C_{{m_{q} }} q} \\ {C_{{n_{\beta } }} \beta + \frac{b}{2V}\left( {C_{{n_{p} }} p + C_{{n_{r} }} r} \right)} \\ \end{array} } \right]\\ \overline{D} & = \frac{1}{2}\rho V^{2} Sb\left[ {\begin{array}{*{20}c} {C_{{l_{{\delta_{a} }} }} } & {C_{{l_{{\delta_{el} }} }} + C_{{l_{{\delta_{er} }} }} } & {C_{{l_{\delta r} }} } \\ 0 & {C_{{m_{{\delta_{el} }} }} + C_{{m_{{\delta_{er} }} }} } & 0 \\ {C_{{n_{{\delta_{a} }} }} } & {C_{{n_{{\delta_{el} }} }} + C_{{n_{{\delta_{er} }} }} } & {C_{{n_{{\delta_{r} }} }} } \\ \end{array} } \right]. \end{aligned}$$

The incremental form of Eq. (13) in the form of Eq. (3), is:

$$\dot{\omega } = \dot{\omega }_{0} + J^{ - 1} \overline{D}\left( {\delta - \delta_{0} } \right).$$
(14)

Applying the inversion according to Eq. (4), Eq. (14) yields:

$$\delta = \left( {J^{ - 1} \overline{D}} \right)^{ - 1} \left[ {v_{{{\text{in}}}} - \dot{\omega }_{0} } \right] + \delta_{0} .$$
(15)

Notice that the model is simplified and only \(J^{ - 1} \overline{D}\) is needed. Instead of \(f(x)\), \(\dot{\omega }_{0}\) is required, which is obtain through the measurement of \(\omega\).

Then, for the outer loop, the wind axis translational relations in Eq. (12) are used. Here, the input does not correspond to surface deflection vector \(\delta\) anymore, but to the angular rates q and r. Thus, the terms that multiply pitch rate and yaw rate are required. Following the form of Eq. (3), the expression in Eq. (12) is expressed in incremental form as:

$$\left[ {\begin{array}{*{20}c} {\dot{\alpha }} \\ {\dot{\beta }} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\dot{\alpha }_{0} } \\ {\dot{\beta }_{0} } \\ \end{array} } \right] + G(x)\left[ {\begin{array}{*{20}c} {q - q_{0} } \\ {r - r_{0} } \\ \end{array} } \right],$$
(16)

where

$$G(x) = \left[ {\begin{array}{*{20}c} {1 - \frac{1}{4m\cos \beta }\rho S\overline{c}C_{{L_{q} }} } & { - \tan \beta \sin \alpha } \\ {\frac{1}{4m}\rho S\overline{c}C_{{D_{q} }} \sin \beta (1 - \cos \beta )} & {\frac{1}{4m}\rho SbC_{{y_{r} }} \cos^{2} \beta - \cos \alpha } \\ \end{array} } \right].$$

Applying the inversion according to Eqs. (4), (16) yields:

$$\left[ {\begin{array}{*{20}c} q \\ r \\ \end{array} } \right] = G(x)^{ - 1} \left( {v_{{{\text{out}}}} - \left[ {\begin{array}{*{20}c} {\dot{\alpha }_{0} } \\ {\dot{\beta }_{0} } \\ \end{array} } \right]} \right) + \left[ {\begin{array}{*{20}c} {q_{0} } \\ {r_{0} } \\ \end{array} } \right].$$
(17)

Here, the angular rates q and r are the control input for the outer loop. Also, \(\left[ {\begin{array}{*{20}c} {\dot{\alpha }_{0} } & {\dot{\beta }_{0} } \\ \end{array} } \right]^{T}\) are the one-step delayed angular velocities that need to be obtained through the measurement of \(\left[ {\begin{array}{*{20}c} \alpha & \beta \\ \end{array} } \right]^{T}\).

From Eqs. (15) to (17), the system becomes linear in the form of \(\dot{x} = v\), and is controlled linearly with a proportional control. Besides, a command filter is used to provide desired handling requirements; second-order filter is used for the outer loop and first-order filter is used for the inner loop. Finally, first-order actuator dynamics was considered with parameters shown in Table 1. The gain values are found in Table 2.

Table 1 F-18 control surface position and rate limits
Table 2 Gain parameters for INDI

4.2 Discrete-time Smoother

As mentioned before, the information of \(\dot{x}_{0}\) cannot always be obtained by direct measurement, thus it needs to be estimated. For this case, \(\dot{\omega }_{0} = \left[ {\begin{array}{*{20}c} {\dot{p}_{0} } & {\dot{q}_{0} } & {\dot{r}_{0} } \\ \end{array} } \right]^{T}\) for the inner loop and \(\left[ {\begin{array}{*{20}c} {\dot{\alpha }_{0} } & {\dot{\beta }_{0} } \\ \end{array} } \right]^{T}\) for the outer loop, need to be estimated. As shown in previous section, a smoother can provide a better estimation than Kalman filter or other kind of predictors if the lag N is large enough. From INDI, in Eq. (3), the term \({\dot{x}}_{0}\) is only one-unit time delay of \(\dot{x}\), this leads to a lag N = 1, which is a small value. However, if the frequency or sample time difference between the IMU sensor and the FCC is considered, the sensor works faster, thus the lag N will increase. It means that a time delay in the FCC can be interpreted as many units delay in the sensor measurement. For example, if the FCC works at 100 Hz and the sensor works at 1000 Hz, then a time delay unit for the control law will be consider as ten times delay for the sensor, which will provide additional information that can be exploited with a smoother rather than Kalman filter estimator. This can be explained in a simpler way; while the sensor works faster than the FCC, there is more available measured information and if we use all this information to obtain a value in the past, we will get a better estimation rather than using only the previous value.

A double integrator model has been used to implement the smoother for angular velocity and angular acceleration estimation based on [11]:

$$\begin{gathered} \dot{x} = \left[ {\begin{array}{*{20}c} 0 & 1 \\ 0 & 0 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {x_{1} } \\ {x_{2} } \\ \end{array} } \right] + \left[ {\begin{array}{*{20}c} 0 \\ {w_{2} } \\ \end{array} } \right], \hfill \\ y = \left[ {\begin{array}{*{20}c} 1 & 0 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {x_{1} } \\ {x_{2} } \\ \end{array} } \right] + v. \hfill \\ \end{gathered}$$
(18)

Taking into account two cases: first, x1 as position and x2 as velocity and second; x1 as velocity and x2 as acceleration.

Then, the discrete form of Eq. (18) yields a discrete time signal model same as Eq. (5):

$$\begin{gathered} x_{k + 1} = \left[ {\begin{array}{*{20}c} 1 & {\Delta T} \\ 0 & 1 \\ \end{array} } \right]x_{k} + \left[ {\begin{array}{*{20}c} 0 \\ 1 \\ \end{array} } \right]w_{k}, \hfill \\ z_{k + 1} = \left[ {\begin{array}{*{20}c} 1 & 0 \\ \end{array} } \right]x_{k + 1} + v_{k + 1} . \hfill \\ \end{gathered}$$

Then, using Kalman filter relations from Eqs. (6) to (7), the state estimate \(\hat{x}_{k + 1/k + 1}\) at current time, the Kalman gain \(K_{k + 1}\) and the covariance matrix \(P_{k + 1/k + 1}\) are obtained. These values are used to build the augmented smoother equations according to Eq. (9). Finally, the smoothing algorithm in Eq. (10) with a fixed lag N, and \(i = 1,2,...,N\) is initialize with \(P_{0/0}^{i} = 0\). A separated smoother is implemented in each loop, three in the inner loop for \(\left[ {\begin{array}{*{20}c} {\dot{p}_{0} } & {\dot{q}_{0} } & {\dot{r}_{0} } \\ \end{array} } \right]^{T}\), and two in the outer loop for \(\left[ {\begin{array}{*{20}c} {\dot{\alpha }_{0} } & {\dot{\beta }_{0} } \\ \end{array} } \right]^{T}\).

A complete scheme of the CAS using INDI and smoother is shown in Fig. 3.

Fig. 3
figure 3

Diagram of INDI with time scale separation and smoothing algorithm

5 Simulation and Results

The performance of the INDI control and the smoother is tested through simulation using matlab/simulink. A complex maneuver is implemented for the command, with 30°/s roll rate for 2 s, 9° angle of attack command, while the β command is kept to 0 for a proper coordinated turn. The sample frequency for the controller is 70 Hz, the IMU sensor works at 1400 Hz and the sensors for side slip angle and beta angle works at 700 Hz. In this way, the lag for the inner loop smoother is N = 20 and for the outer loop smoother the lag is N = 10. The power spectral density (PSD) for the IMU sensors is taken as PSD = 10–9(deg/s)2 1/Hz, and for the α and β sensors this value is PSD = 10–9(deg)21/Hz.

From Fig. 4, it can be observed that the INDI controller approach performs well showing a good command tracking response for roll command and alpha command, however, the 0–β angle command has small deviation within 0.5°. This is due to the high roll command applied to the system that requires both rudder and aileron deflection.

Fig. 4
figure 4

Command response

In Fig. 5, the angular acceleration estimation for the inner loop shows a good performance with a very light presence of noise; whereas the estimation is also good for angular velocities in Fig. 6. Moreover, from Fig. 7, we can see that the surface deflection responses are smooth without presence of noise.

Fig. 5
figure 5

Angular acceleration (inner loop)

Fig. 6
figure 6

Angular velocity (outer loop)

Fig. 7
figure 7

Surfaces deflection

Then, changing sample frequency to 700 Hz for the IMU sensors, and 350 Hz for α and β sensors, the fixed lag is reduced to N = 10 for the inner loop and N = 5 for the outer loop. This will be interpreted as reduction in the performance of the smoother. From Fig. 8, we can notice that a good tracking performance of the command is maintained, since the estimation shown in Figs. 9, 10 is still good. However, from Figs. 11, 12, where the smoothers and Kalman filter are compared, it can be observed that the performances of the smoother with higher lag are always better with a reduction on the delay.

Fig. 8
figure 8

Command reponses

Fig. 9
figure 9

Angular acceleration (inner loop)

Fig. 10
figure 10

Angular velocity (outer loop)

Fig. 11
figure 11

Comparison of roll angular acceleration estimation

Fig. 12
figure 12

Comparison of angle of attack rate estimation

The performance of the smoothers can be also seen from the graphs of the values of the covariance matrix. In Fig. 13, the variance of the smoother, \({P}_{k+1-N/k+1}\) related to roll angular acceleration \(\dot{p}\) becomes smaller for a lag N = 20. Similar situation happens for the variance related to \(\dot{\alpha }\) in Fig. 13, where \({P}_{k+1-10/k+1}\) has the smaller value. To see the improvement, we can use the following relation:

$${\text{Improvement}} = \frac{{{\text{tr}}[P_{k + 1 - N/k + 1} - P_{k + 1/k + 1} ]}}{{{\text{tr}}\left[ {P_{k + 1/k + 1} } \right]}} \times 100\% .$$
Fig. 13
figure 13

Variance for angular acceleration and angular velocity for different lag N in the smoother

For the inner loop: when N = 5 the improvement is 32.7%, when N = 10 the improvement is 55.5%.

For the outer loop: when N = 10 the improvement is 37.5%, when N = 20 the improvement is 61.3%.

The power spectral density (PSD) in the previous results was fixed, however, these values may vary depending on the quality of the sensor. In Ref. [17] the IMU sensors are categorized according to its PSD value, where a smaller value corresponds to a higher sensor quality. In Table 3, these values are summarized with its corresponding noise covariance R and process covariance Q. The methodology to tune the smoother begin with the relation \(R = {\text{PSD}}/T\), where T is the sample time. When R is fixed, Q is changed to obtain a good estimation. It was noticed that when Q is increased, the Kalman gain K also increases as can be seen in Eq. (7) and the covariance \(P_{k + 1/k + 1} = P_{k + 1/k} - K_{k + 1} H_{k + 1} P_{k + 1/k}\) attains a smaller value. This is interpreted as a better estimation with reduced delay. Whereas, increasing Q means a less accurate estimation with bigger delay.

Table 3 Parameters for IMU sensors

The results previously shown in Fig. 4 correspond to a simulation for high-quality IMU sensor. A simulation for medium and low IMU sensor quality was also performed according to Table 3 with a lag N = 20 for the inner loop smoother.

Figure 14 shows that for a medium-quality sensor when PSD = 10–6(deg/s)1/Hz, the tracking performance of the command response is good. Besides, the estimation of angular acceleration in Fig. 15 is also good but it shows an increment in the noise level. This problem is also reflected in the surface deflection response in Fig. 16 where the chattering effect occurs, more visible for rudder surface response.

Fig. 14
figure 14

Command response with medium-quality sensor

Fig. 15
figure 15

Angular acceleration estimation (medium-quality sensor)

Fig. 16
figure 16

Surface deflection (medium-quality sensor)

For the low-quality sensor case in Figs. 17, 18, 19, even though the estimation is good, the noise cannot be completely attenuated. Despite noisy signal, the command response maintains a good performance as in previous cases. The main problem can be reflected in the surface deflection response, where the chattering is increased compared to previous case. As PSD increases, the noise level also increases and it becomes harder for the smoother to completely remove the noise from the signal. There is always a tradeoff between the accuracy of the estimation with smaller delay and the reduction of the noise. If the values of Q and R are changed such that the noise level is reduced more it can affect the accuracy of the estimation, generating higher delay that can lead to instability when implementing the INDI. Thus, a proper value for Q and R has to be chosen.

Fig. 17
figure 17

Command response with low-quality sensor

Fig. 18
figure 18

Angular acceleration estimation (low-quality sensor)

Fig. 19
figure 19

Surface deflection (low-quality sensor)

As stated before referring previous works [5] and [6], using INDI, the control system is insensitive to uncertainties and changes in the aerodynamic derivatives, center of gravity and moment of inertia. The last simulation shows the performance of this control strategy under changes in the aerodynamic derivatives (\(\overline{A}\) and \(\overline{D}\) matrices from previous section). Here, it a reduction of 20% of the following coefficients was considered: \({C}_{{m}_{q}}\), \({C}_{{l}_{p}}\), \({C}_{{n}_{r}}\), \({C}_{{m}_{{\delta }_{e}}}\), \({C}_{{l}_{{\delta }_{a}}}\) and \({C}_{{n}_{{\delta }_{r}}}\).

In Fig. 20, the command response shows a good performance even in the presence of uncertainty due to changes in the aerodynamic derivatives. Furthermore, the estimation of angular acceleration and angular velocity in Figs. 21, 22 is accomplished but with slight degradation compared to the results obtained in the previous case (Figs. 5, 6).

Fig. 20
figure 20

Command response

Fig. 21
figure 21

Angular acceleration (inner loop)

Fig. 22
figure 22

Angular velocity (outer loop)

6 Conclusion

Incremental nonlinear dynamic inversion approach can provide a robust flight control design for fighter aircrafts. Addressing the problem of state derivative availability, a smoother algorithm can handle this problem, using extra available information provided by sensor, however, it is preferable when the quality of the IMU sensor is high, which can be the case of fighter aircrafts that can employ expensive sensors. For low-quality sensors, more investigation is required to reduce the chattering effect produced by noise. Additionally, when a direct measurement method using special sensors is employed to obtain angular acceleration or angular velocity, the smoother could still be used as a redundancy system.