1 Introduction

For finite-dimensional and time-invariant linear systems, a well-known control design technique named polynomial two-degree-of-freedom (2DOF) controllers [13], was introduced fifty years ago by Horowitz [4]. This powerful method is based on pole placement and presents one drawback: it needs to know where to place all the poles of the closed-loop system at the outset. In dealing with polynomial matrices in the case of multi-input multi-output (MIMO) systems, a particular problem which is important for both, mathematical [5, 6] and system theory [7, 8] points of view, is the computation of the solution of the generalized polynomial Bézout’s equation. There are many works to solve the diophantine equation [9, 10]. Generally, all methods can be classified into three main categories: the state-space related approaches [11, 12], the Taylor series treatment [10, 13], and methods involving coefficient matching [9, 14].

The 2DOF design controller problem is not easy to transcribe in the case of linear time-varying (LTV) systems due to the fact that the coefficients do not commute with the time derivative operator. Besides, the structure of the set of the poles of the closed-loop system is more complex.

In this case, the pole placement problem was solved recently by Marinescu [15] who proposes some technical methods for the factorization of linear time-varying transfer matrices. These key points lead to solve Bézout’s equation written in time-varying framework.

In the case of single-input single-output (SISO) linear time-invariant (LTI) systems, the problem of pole placement which consists in imposing closed loop system dynamics can be related to track desired trajectories using flatness property to design a polynomial controller [16]. A 2DOF controller is then designed with very natural choices with high level performances. In this design, we are led to a solution for Bézout’s equation without its resolution.

In order to overcome these two points, namely the choice of desired poles at the outset and the determination of a solution for Bézout’s equation, we propose in this paper to extend the flatness-based control strategy developed in [16] to the case of MIMO LTV systems. It will be seen that applying the guideline induced by a flatness based control to a MIMO LTV system leads to express it in a natural 2DOF controller form.

The paper is organized as follows: in Sect. 2, some background notions about MIMO LTV systems and flatness are presented. In Sect. 3, we propose to design a polynomial controller based on flatness using an exact observer of a state vector which is constituted by the flat output and its derivatives. This approach is illustrated, in Sect. 4, with the control of a nonlinear model of the SPOT satellite.

2 Background notions

2.1 MIMO linear time-varying systems

Following [15], in the algebraic framework initiated by [17] and popularized in systems theory by [18] and related references, a linear system is a finitely presented module M over the ring \(\mathbf R = \mathbf K \left[ s \right] \) of differential operators in \(s = d/dt\) with coefficients in an ordinary differential field K (i.e., a commutative field equipped with a unique derivative). If K does not exclusively contain constants (i.e., elements of derivative zero), M is an LTV system. In this paper, the following notations will be used: \({u^{\left( n \right) }}\left( t \right) = \frac{{{d^n}u(t)}}{{d{t^n}}} = {s^n}u(t)\).

When dealing with LTV systems, polynomials as function of \(s\) is skew, i.e., belong to the noncommutative ring \(\mathbf R = \mathbf K \left[ s \right] \) equipped with the commutation rule: \(sa = as + \dot{a}\) (\(a\) is a time-varying function), which is the Leibniz rule of derivation of a product. Noting the integration operator by \( s^{ - 1}\) where:

$$\begin{aligned} s^{ - 1} h\left( t \right) = \int \limits _{ - \infty }^t {h\left( \tau \right) } d\tau \end{aligned}$$
(1)

where \( h(\tau ) = 0\mathrm{{~for ~}}(\tau \le \bar{\tau }) \). This last hypothesis ensures commutativity between \(s\) and \(s^{ - 1}\).

For finite-dimensional, several input-output descriptions have been introduced for MIMO LTV systems. Here, a time-varying linear system is described by the following state space model of dimension \(n\):

$$\begin{aligned} \dot{x}(t)&= A(t)x(t) + B(t)u(t)\mathrm{{~~~~}}t \in T = \left[ {\begin{array}{l} {t_1 }\quad {t_2 } \\ \end{array}} \right] \nonumber \\ y(t)&= C(t)x(t) \end{aligned}$$
(2)

where \(x(t)\) is an \(n\)-dimensional state vector, \(u(t)\) is an \(m\)-dimensional input vector, \(y(t)\) is an \(m\)-dimensional output vector, and the matrices \(A(t) \), \(B(t)\) and \(C(t)\) are time-variable matrices of proper order. Consider the set of matrices \( K^i (t)\) for \( i = 0,1, \ldots \) such that:

$$\begin{aligned}&K^0(t) = B(t)\\&K^i (t) = - A(t)K^{i - 1}(t) + \dot{K}^{i - 1}(t)\quad \mathrm{{~if~}}i \ge 1 \end{aligned}$$

If there is an integer \(\mu \) such that the matrix:

$$\begin{aligned} {\fancyscript{K}}_{\left( {A(t),B(t)} \right) } (t) = \left( {K^0 (t) } \cdots {K^{\mu - 1}(t)}\right) \end{aligned}$$
(3)

is of rank \( n \) for every \(t \in T\), then the system is uniformly controllable [19] and \( \fancyscript{K}_{\left( {A(t),B(t)} \right) } (t)\) is the controllability matrix. Consider the set of matrices \(L^i(t)\), for \( \mathrm{{i = 0}}\mathrm{{, 1}}\mathrm{{,}} \ldots \) such that:

$$\begin{aligned} L^0 (t)&= C\left( t \right) \\ {L^i}(t)&= {L^{i - 1}}\left( t \right) A\left( t \right) + {{\dot{L}}^{i - 1}}\left( t \right) \quad \mathrm{{~if~}}i \ge 1 \end{aligned}$$

If there is an integer \(\nu \) such that the matrix:

$$\begin{aligned} \fancyscript{L}_{\left( {A(t),C(t)} \right) } \left( t \right) = \left( {\begin{array}{c} {L^0 (t)} \\ {L^1 (t)} \\ \vdots \\ {L^{\nu - 1} (t)} \\ \end{array}} \right) \end{aligned}$$
(4)

is of rank \( n \) for every \(t \in T\), then the system is uniformly observable. In this condition, \(\fancyscript{L}_{\left( {A(t),C(t)} \right) } \left( t \right) \) is the observability matrix of the pair \((A(t),C(t))\). In the case of LTI systems, the indexes \( \mu \) and \( \nu \) are equal to \(n\). The result of Silverman-Meadows [19] has shown that, if the system is uniformly controllable then there exists a nonsingular transformation on \(T\), such that:

$$\begin{aligned} Z (t) = P_C (t) x(t) \end{aligned}$$
(5)

which can be constructed by the Seal-Stuberud algorithm [20], implies that:

$$\begin{aligned} \dot{Z} (t)&= A_C (t)Z (t) + {B}_C(t) u (t) \nonumber \\ y(t)&= C_C (t)Z (t) \end{aligned}$$
(6)

where:

$$\begin{aligned} C_C \left( t \right)&= C\left( t \right) P_C^{ - 1} \left( t \right) , \mathrm{{ ~}}{B}_C(t) = P_C (t) B(t) \end{aligned}$$
(7)
$$\begin{aligned} A_C (t)&= P_C (t)A(t)P_C^{ - 1} (t) + \dot{P}_C (t)P_C^{ - 1} (t) \nonumber \\ \mathrm{{ ~~~~~~~}}&= \left[ {A_{Cij} (t)} \right] _{i,j = 1 \ldots m} \end{aligned}$$
(8)
$$\begin{aligned} A_{C,ii}(t) = \left( {\begin{array}{ccccc} 0 &{} 1 &{} 0 &{} \cdots &{} 0 \\ \vdots &{} \ddots &{} \ddots &{} \ddots &{} \vdots \\ \vdots &{} {} &{} \ddots &{} \ddots &{} 0 \\ 0 &{} \cdots &{} \cdots &{} 0 &{} 1 \\ \times &{} \times &{} \times &{} \times &{} \times \\ \end{array}} \right) \end{aligned}$$
(9)

are \(\mu _i \times \mu _i \) matrices such that:

$$\begin{aligned} \sum \limits _{i = 1}^n {\mu _i } = n \end{aligned}$$
$$\begin{aligned} A_{C,ij}(t) = \left( {\begin{array}{ccccc} 0 &{} \cdots &{} \cdots &{} \cdots &{} 0 \\ \vdots &{} {} &{} {} &{} {} &{} \vdots \\ \vdots &{} {} &{} {} &{} {} &{} \vdots \\ 0 &{} \cdots &{} \cdots &{} \cdots &{} 0 \\ \times &{} \times &{} \cdots &{} \times &{} \times \\ \end{array}} \right) \end{aligned}$$
(10)

are \((\mu _{i} \times \mu _j)\) matrices, the symbol \(\times \) is a time-varying function. The scalars \(\mu _i \) for \( i=1 \) to \( m \) are the controllability indices determined by the the Seal-Stuberud algorithm [20]. The interested reader may find more details about this algorithm in the quoted literature and the references therein.

Defining a new input vector \(u_C (t)\) by:

$$\begin{aligned} u_C (t) = H_C(t) u(t) \end{aligned}$$
(11)

where \(H_C(t) \) is an \(\left( {m \times m} \right) \) upper triangular matrix with ones along the diagonal and hence invertible. It’s constructed by the \(\sum \nolimits _{j = 1}^i {\mu _j }\,\)th rows of \(B_C(t)\):

$$\begin{aligned} H_C(t) = \left( {\begin{array}{cccc} 1 &{} \times &{} \cdots &{} \times \\ 0 &{} \ddots &{} {} &{} \vdots \\ \vdots &{} \ddots &{} \ddots &{} \times \\ 0 &{} \cdots &{} 0 &{} 1 \\ \end{array}} \right) \end{aligned}$$
(12)

Equation (6) becomes:

$$\begin{aligned} \begin{array}{l} \dot{Z} (t) = A_C Z (t) + \bar{B}_C u_C (t) \\ y(t) = C_C Z (t) \\ \end{array} \end{aligned}$$
(13)

such that:

$$\begin{aligned}&{\bar{B}_C = B_C(t) H_C(t)^{ - 1}} \mathrm{{~~~~~~~~}}\nonumber \\&= \left( {\begin{array}{cccc} {b_{c1} } &{} 0 &{} \cdots &{} 0 \\ 0 &{} {b_{c2} } &{} \cdots &{} 0 \\ \vdots &{} \vdots &{} {} &{} \vdots \\ 0 &{} 0 &{} {} &{} {b_{cm} } \\ \end{array}} \right) \end{aligned}$$
(14)

where:

$$\begin{aligned} {b_{ci}} = {\left( {\begin{array}{cccc} 0&\cdots&0&1 \end{array}} \right) ^T}\end{aligned}$$
(15)

is an \(\mu _\mathrm{{i}}\) vector.

Remark 1

Another problem is that even though the time-varying linear system is controllable and observable, its controllability indices and/or observability indices may not be fixed. Such system is called non-lexicographically-fixed system. For this problem, the algorithm of Seal and Stuberud can’t be implemented in an efficient way because the set of vectors which are linearly independent for every \(t\) on \(T\) change. In this work, we only deal lexicographically-fixed system [21] where the controllability indices are fixed. In the next section, the flatness property is presented and we will see that the state vector in the previous canonical form is used to determine the flat output and its derivatives.

2.2 Short survey on flatness

Flatness property which was introduced by [22], for continuous-time nonlinear systems, leads to interesting results for control design. The existence of a set of variables called flat outputs permits to define all other system variables. The dynamic of such process can be then deduced without solving the differential equations. Therefore, it is possible to express the state, as well as the input and the output of the system, as differential functions of flat outputs [22, 23]. Let us consider the nonlinear system described by the following differential equation:

$$\begin{aligned} \dot{ x}(t) = f(x(t),u(t)) \end{aligned}$$
(16)

where \(x(t) \in \mathfrak {R}^n\) is the state vector and \(u(t) \in \mathfrak {R}^m \) is the input vector. Roughly speaking, this system is called differentially flat if there exists a set of variables \(z(t) \in \mathfrak {R}^m \) of the form:

$$\begin{aligned} z(t) = h(x(t),u(t),{\dot{u}}(t),...,u^{(r)}(t) ) \end{aligned}$$
(17)

such that the state and the input of the system are given by:

$$\begin{aligned}&x (t)= \mathbf {A}(z(t),{\dot{z}}(t),...,z^{(\alpha )}(t) ) \end{aligned}$$
(18)
$$\begin{aligned}&u(t) = \mathbf {B}(z(t),{\dot{z}}(t),...,z^{(\alpha + 1)}(t) ) \end{aligned}$$
(19)

where \(\alpha \) is an integer. The set of variables \(z(t)\) is called the flat output of the system or the endogenous variables. It makes possible to parameterize any variable of the system [23]. The components of \(z(t)\) must be differentially independent. The real output of the process is written as follows:

$$\begin{aligned} y\left( t \right) = g\left( {x\left( t \right) ,u\left( t \right) } \right) \end{aligned}$$
(20)

and from Eqs. (18) and (19), this output is written in function of the flat output as:

$$\begin{aligned} y(t)= \mathbf {C}(z(t),{\dot{z}}(t),...,z^{(\sigma )}(t)) \end{aligned}$$
(21)

where \(\sigma \) is an integer. In the linear case, the explicit expressions of the output \(y(t)\) and the input \(u(t)\) allow to relate the flat output to the partial state which was defined by [7]. The trajectories of the system are deduced from the definition of the flat output trajectory without integrating any differential equations. All these points, which have been formalized through the Lie-Bäcklund equivalence of systems in [24, 25], lead to propose a nonlinear feedback which ensures a stabilized tracking of a desired motion for the flat output. This methodology has been applied on many industrial processes as it was shown previously, for instance, on magnetics bearings [26], chemical reactors [27], cranes or flight control [28] or turning process [29], among many other examples.

A necessary and sufficient condition for the flatness of a linear system is its controllability involving that the concepts flatness and controllability coincide [30]. In this case, the Brunovsky output from the controllable canonical form are considered as flat outputs. The Lie-Bäcklund equivalence [24] shown that: \(dim ~z (t ) = dim ~u (t )\).

In the case of MIMO linear systems, let us consider the canonical form in Eq. (13), the state vector can be expressed in the following form:

$$\begin{aligned} Z\left( t \right) = \left( {\begin{array}{c} {z_1 \left( t \right) } \\ \vdots \\ {z_{_1 }^{\left( {\mu _1 - 1} \right) } \left( t \right) } \\ {z_2 \left( t \right) } \\ \vdots \\ {z_m \left( t \right) } \\ \vdots \\ {z_{_m }^{\left( {\mu _m - 1} \right) } \left( t \right) } \\ \end{array}} \right) \end{aligned}$$
(22)

then the flat output or the Brunovsky output is given by:

$$\begin{aligned} z(t) = \left( {\begin{array}{c} {z_1 (t)} \\ {z_2 (t)} \\ \vdots \\ {z_m (t)} \\ \end{array}} \right) \end{aligned}$$
(23)

Remark 2

The necessary and sufficient condition for the flatness of a linear system is proved in the LTI case in [30]. In the LTV case, uniform controllability implies, according to the results of Malrait et al. in [31], that the system is equivalent to a linear time invariant system in Brunovsky canonical form (i.e. a chain of n integrators) after a static change of coordinates and a state-dependent re-definition of the control input. The system is thus differentially flat [32]. The flat output, or Brunovsky output, is directly obtained as a time-varying linear combination of the original states.

After introducing the flatness property and the determination of a flat output from the controllable form, the flatness-based control will be presented in the next section.

3 Flatness-based control

By denoting by \(u_{C,i} (t)\) the i-th component of \( u_C (t)\) and \(\alpha _{i,j,k}(t)\) the k-th coefficient of the last row of the matrix \(A_{C,ij}(t) \) in Eq. (9) and Eq. (10), the following relation is satisfied:

$$\begin{aligned} u_{c,i} (t) = z_i^{\left( {\mu _i } \right) } (t) + \sum \limits _{j = 1}^m {\left( {\sum \limits _{k = 0}^{\mu _i - 1} {\alpha _{i,j,k}(t)z_j^{\left( k \right) } (t)} } \right) } \end{aligned}$$
(24)

For a given planned trajectory of the flat output, \(z_d(t)\), the control law based on flatness is as follows:

$$\begin{aligned} u_{c,i} (t)&= z_{d,i}^{\left( {\mu _i } \right) } (t) + \sum \limits _{k = 0}^{\mu _i } {\kappa _{i,k} } \left( {z_{d,i}^{\left( k \right) } (t) - z_i^{\left( k \right) } (t)} \right) \nonumber \\&+ \sum \limits _{j = 1}^m {\left( {\sum \limits _{k = 0}^{\mu _j - 1} {\alpha _{i,j,k}(t) z_j^{\left( k \right) } (t)} } \right) } \end{aligned}$$
(25)

where the \(\kappa _{i,k}\) are chosen such that:

\( \kappa _i \left( s \right) = s^{\mu _i } + \sum \nolimits _{k = 1}^{\mu _i } {\kappa _{i,k} s^{\mu _i - k} } \) is a Hurwitz polynomial. By introducing the polynomial matrix:

$$\begin{aligned} K\left( s \right) = diag\left( {\kappa _i \left( s \right) } \right) \end{aligned}$$
(26)

where \(s\) is the derivation operator, the previous control law can be written as:

$$\begin{aligned} u(t) = \left( {H_C } \right) ^{ - 1} (t)\left( {K(s)z_d (t) - \Lambda (t) Z(t)} \right) \qquad \end{aligned}$$
(27)

where:

$$\begin{aligned} \Lambda (t)&= \left[ {\Lambda _{i,j}(t) } \right] _{i,j = 1 \cdots m} \nonumber \\&= \left\{ \begin{array}{c} \left[ {\kappa _{i,0} - \alpha _{i,i,0} (t)} \quad \cdots \quad {\kappa _{i,\mu _i - 1} - \alpha _{i,i,\mu _i - 1} (t)} \right] \\ {\mathrm{{if~}}i = j} \\ \left[ { - \alpha _{i,j,0}(t) }\quad \cdots \quad { - \alpha _{i,j,\mu _i - 1} }(t) \right] \quad \mathrm{{~if~}}i \ne j \\ \end{array}\right. \end{aligned}$$
(28)

When this control is applied, the tracking error is verifying:

$$\begin{aligned} \mathop {\lim }\limits _{t \rightarrow \infty } \left( {z_d \left( t \right) - z \left( t \right) } \right) = 0 \end{aligned}$$
(29)

and the closed-loop dynamics are given by the roots of \({\kappa _i \left( s \right) }\). To implement the control (27), we need to estimate the vector \(Z(t)\) with an observer. A full-order observer can be used, but in this solution, the difficulty appears in the choice of the observers poles in the LTV framework. To overcome this point, an enlightening idea suggested in [33] and applied in [34] and [16] can be used. The realization of this controller, using the exact observer, will be the subject of the next part.

3.1 Exact observers

By successive derivations of the output plant \(y(t)\) in the equation (13) until the order \( \left( {\nu - 1} \right) \), we get:

$$\begin{aligned} y\left( t \right)&= C_C \left( t \right) Z\left( t \right) = O_0 \left( t \right) Z\left( t \right) \nonumber \\ \dot{y}\left( t \right)&= \left( {\dot{C}_C \left( t \right) + C_C \left( t \right) A_C \left( t \right) } \right) Z\left( t \right) + C_C \left( t \right) \bar{B}_C u_C \left( t \right) \nonumber \\&= O_1 \left( t \right) Z\left( t \right) + M_1 \left( t \right) u_C \left( t \right) \nonumber \\ y^{(2)} \left( t \right)&= \left( {\dot{O}_1 \left( t \right) + A_C \left( t \right) O_1 \left( t \right) } \right) Z\left( t \right) + \nonumber \\&\left( {O_1 \left( t \right) \bar{B}_C \left( t \right) + \dot{M}_1 \left( t \right) } \right) u_C \left( t \right) + M_1 \left( t \right) \dot{u}_C \left( t \right) \nonumber \\&= O_2 \left( t \right) Z\left( t \right) + M_2 \left( t \right) u_C \left( t \right) + M_1 \left( t \right) \dot{u}_C \left( t \right) \nonumber \\ \vdots&\nonumber \\&y^{\left( {\nu - 1} \right) } \left( t \right) = O_{\nu - 1} \left( t \right) Z\left( t \right) + M_{\nu - 1} \left( t \right) u_C \left( t \right) \nonumber \\&+\, M_{\nu - 1,2} \left( t \right) \dot{u}_C \left( t \right) + M_{\nu - 1,3} \left( t \right) u_C^{(2)} \left( t \right) \nonumber \\&+\, \cdots + M_1 \left( t \right) u_C^{(\nu - 2)} \left( t \right) \end{aligned}$$
(30)

where \(M_{i}(t)\) are \(\left( {m \times m} \right) \)-dimensional matrices given by:

  • \(M_{1}(t)={C_C \left( t \right) \bar{B}_C }\),

  • for  \(i=2\)  to  \(\nu -1\), \(M_{i}(t)=\dot{M}_{i-1}(t)+{O_i\left( t \right) \bar{B}_C }\),

  • \(M_{\nu -1,2}(t)=M_{\nu -2}(t)+ \sum _{i=1}^{\nu -3}M_{i}^{(\nu -2-i)}(t)\ \),

  • \(M_{\nu -1,3}(t)=M_{\nu -3}(t)+\sum _{i=1}^{\nu -4} \left( \nu -i-2\right) M_{i}^{(\nu -3-i)}(t)\), etc.

Equation (30) can be written as follows:

$$\begin{aligned} Y(t) = O(t) Z(t) + M(t)U(t) \end{aligned}$$
(31)

where

$$\begin{aligned} Y^T \left( t \right) = \left( {\begin{array}{*{20}c} {y^T \left( t \right) } &{} {\dot{y}^T \left( t \right) } &{} \cdots &{} {y^{(\nu - 1)T} \left( t \right) } \\ \end{array}} \right) \end{aligned}$$
(32)
$$\begin{aligned} U^T \left( t \right) = \left( {\begin{array}{*{20}c} {u_C^T \left( t \right) } &{} {\dot{u}_C^T \left( t \right) } &{} \cdots &{} {u_C^{(\nu - 2)T} \left( t \right) } \\ \end{array}} \right) \end{aligned}$$
(33)
$$\begin{aligned} O\left( t \right) = \left( {\begin{array}{*{20}c} {O_0 \left( t \right) } \\ {O_1 \left( t \right) } \\ \vdots \\ {O_{^{\nu - 1} } \left( t \right) } \\ \end{array}} \right) \end{aligned}$$
(34)

\(O\left( t \right) \) is the observability matrix of the pair

\((A_C\left( t \right) ,C_C\left( t \right) )\) and \(M\left( t \right) \) is the transmission matrix given by:

$$\begin{aligned} \small { M(t) = \left( {\begin{array}{ccccc} {M_0 } &{} {M_0 } &{} \cdots &{} {M_0 } &{} {M_0 } \\ {M_1 (t)} &{} {M_0 } &{} {} &{} {} &{} {M_0 } \\ \vdots &{} \ddots &{} \ddots &{} {} &{} \vdots \\ {M_{\nu - 2}(t) } &{} {} &{} {} &{} {M_1 (t)} &{} {M_0 } \\ {M_{\nu - 1} (t)} &{} {M_{\nu - 1,2}(t) } &{} {M_{\nu - 1,3} (t)} &{} \cdots &{} {M_1 (t)} \\ \end{array}} \right) } \end{aligned}$$
(35)

such that \(M_{0}\) is an \(\left( {m \times m} \right) \)-dimensional zero matrix.

In the next development, we assume the uniform observability of the system leading to:

$$\begin{aligned} rank\, (O\left( t \right) )= n \end{aligned}$$
(36)

such that \(O\left( t \right) \) is an \(\left( {m\nu \times n} \right) \)-dimensional matrix. It appears that:

$$\begin{aligned} \begin{array}{l} rank\left( {O\left( t \right) } \right) = rank\left( {\left[ {\begin{array}{*{20}c} {O\left( t \right) } &{} {Y\left( t \right) - M\left( t \right) U\left( t \right) } \\ \end{array}} \right] } \right) \\ \mathrm{{~~~~~~~~~~~~~~~}} = n \\ \end{array} \end{aligned}$$

thus, following [35], the system of linear equations (31) is said compatible having a unique and an exact solution for \(Z\left( t \right) \) given by:

$$\begin{aligned} Z\left( t \right) = \left( {O_{}^T\left( t \right) O\left( t \right) } \right) ^{ - 1} O_{}^T\left( t \right) \left( {Y\left( t \right) - M \left( t \right) U\left( t \right) } \right) \nonumber \\ \end{aligned}$$
(37)

Besides, by integrating Eq. (13) of the canonical form, we get:

$$\begin{aligned} Z\left( t \right) = s^{ - 1} \left( {A_C \left( t \right) Z\left( t \right) } \right) + s^{ - 1} \left( {\bar{B}_C u_C \left( t \right) } \right) \end{aligned}$$
(38)

By replacing, in the right side of Eq. (38), \(Z(t)\), by the expression from the left side, we obtain:

$$\begin{aligned} Z\left( t \right)&= {s^{ - 1}}\left( {{A_C}\left( t \right) {s^{ - 1}}\left( {{A_C}\left( t \right) Z\left( t \right) } \right) } \right) \nonumber \\&+\, {s^{ - 1}}{A_C}\left( t \right) {s^{ - 1}}\left( {{{\bar{B}}_C}{u_C}\left( t \right) } \right) + {s^{ - 1}}\left( {{{\bar{B}}_C}{u_C}\left( t \right) } \right) \end{aligned}$$
(39)

Reiterating the last operation until the \( (\nu - 1)\) order:

$$\begin{aligned} Z\left( t \right)&= {s^{ - 1}}\left( {{A_C}(t){s^{ - 1}}\left( {{A_C}(t)} \right. } \right. \cdots {s^{ - 1}}\left( {{A_C}(t)Z\left( t \right) } \right) \nonumber \\&+\,\,{s^{ - 1}}\left( {{A_C}(t){s^{ - 1}}\left( {{A_C}(t)} \right. } \right. \cdots \left. {{s^{ - 1}}\left( {{A_C}(t){{\bar{B}}_C}{s^{ - 1}}{u_C}\left( t \right) } \right) } \right) \nonumber \\&+ \cdots + {s^{ - 1}}\left( {{A_C}(t){{\bar{B}}_C}{s^{ - 1}}{u_C}\left( t \right) } \right) \nonumber \\&+\,\, {{\bar{B}}_C}{s^{ - 1}}{u_C}\left( t \right) \end{aligned}$$
(40)

By replacing, in the second term of Eq. (40), \(Z(t)\) by the expression from Eq. (37), implies that:

$$\begin{aligned} Z\left( t \right)&= {s^{ - 1}}\left( {{A_C}(t){s^{ - 1}}\left( {{A_C}(t)} \right. } \right. \ldots \nonumber \\&\left. {\left. {{s^{ - 1}}\left( {{A_C}(t){{\left( {O_{}^T\left( t \right) O\left( t \right) } \right) }^{ - 1}}O_{}^T\left( t \right) } \right. \left( {Y\left( t \right) \!-\!\! M\left( t \right) U\left( t \right) } \right) } \right) } \right) \nonumber \\&+\,\, {s^{ - 1}}\left( {A_C}(t){s^{ - 1}}\left( {{A_C}(t)} \right. \right. \cdots {s^{ - 1}}\left( {{A_C}(t){{\bar{B}}_C}{s^{ - 1}}{u_C}\left( t \right) } \right) \nonumber \\&+\,\, \cdots + {s^{ - 1}}\left( {{A_C}(t){{\bar{B}}_C}{s^{ - 1}}{u_C}\left( t \right) } \right) + {{\bar{B}}_C}{s^{ - 1}}{u_C}\left( t \right) \end{aligned}$$
(41)

By using integration by parts, it leads to the following expression of the state vector:

$$\begin{aligned} Z\left( t \right)&= {s^{ - 1}}\left( {{\varTheta _1}\left( t \right) y\left( t \right) } \right) + {s^{ - 2}}\left( {{\varTheta _2}\left( t \right) y\left( t \right) } \right) + \cdots \nonumber \\&\cdots + {s^{ - \nu }}\left( {{\varTheta _\nu }\left( t \right) y\left( t \right) } \right) + {s^{ - 1}}\left( {{\varDelta _1}\left( t \right) {u_C}\left( t \right) } \right) \nonumber \\&\cdots + {s^{ - 2}}\left( {{\varDelta _2}\left( t \right) {u_C}\left( t \right) } \right) + \cdots \nonumber \\&\cdots + {s^{ - (\nu - 1)}}\left( {{\varDelta _{\nu - 1}}\left( t \right) {u_C}\left( t \right) } \right) + {{\bar{B}}_C}{s^{ - 1}}{u_C}\left( t \right) \nonumber \\ \end{aligned}$$
(42)

where \(\varTheta _i \left( t \right) \) and \(\varDelta _i \left( t \right) \) are \(\left( {n \times m} \right) \)-dimensional matrices.

3.2 2DOF controller form in the LTV case

By replacing (42) into (27), the control law becomes:

$$\begin{aligned} u(t)&= \left( {H_C (t)} \right) ^{ - 1} \left( {K(s)z_d (t) - \Lambda (t)} \right. \left[ {s^{ - 1} \left( {\varTheta _1 \left( t \right) y\left( t \right) } \right) } \right. \nonumber \\&\left. +\, s^{ - 2} \left( {\varTheta _2 \left( t \right) y\left( t \right) } \right) + \cdots + s^{ - \nu } \left( {\varTheta _\nu \left( t \right) y\left( t \right) } \right) \right. \nonumber \\&\left. +\, s^{ - 1} \left( {\varDelta _1 \left( t \right) u_C \left( t \right) } \right) + s^{ - 2} \left( {\varDelta _2 \left( t \right) u_C \left( t \right) } \right) \right. \nonumber \\&+\cdots \left. {\left. { +\, s^{ - (\nu - 1)} \left( {\varDelta _{\nu - 1} \left( t \right) u_C \left( t \right) } \right) \!+\! \bar{B}_C s^{ - 1} u_C \left( t \right) } \right] } \right) \nonumber \\ \end{aligned}$$
(43)

By denoting:

$$\begin{aligned} R\left( {s^{ - 1} ,u\left( t \right) } \right)&= u(t) + \left( {H_C (t)} \right) ^{ - 1} \Lambda (t) \nonumber \\&\times \!\left( {s^{ - 1} \left( {\varDelta _1 \left( t \right) u_C \left( t \right) } \right) \!+\! s^{ - 2} \left( {\varDelta _2 \left( t \right) u_C \left( t \right) } \right) } \right. \nonumber \\&\left. +\,\, \cdots + s^{ - (\nu - 1)} \left( {\varDelta _{\nu - 1} \left( t \right) u_C \left( t \right) } \right) \right. \nonumber \\&\left. +\, \,\bar{B}_C s^{ - 1} u_C \left( t \right) \right) \end{aligned}$$
(44)

and

$$\begin{aligned} S\left( {{s^{ - 1}},y\left( t \right) } \right)&= {{\left( {{H_C}(t)} \right) }^{ - 1}}\Lambda (t)\left( {{s^{ - 1}}\left( {{\varTheta _1}\left( t \right) y\left( t \right) } \right) } \right. \nonumber \\&\left. +\,{s^{ - 2}}\left( {{\varTheta _2}\left( t \right) y\left( t \right) } \right) \right. \nonumber \\&\left. +\, \cdots + {s^{ - \nu }}\left( {{\varTheta _\nu }\left( t \right) y( t )} \right) \! \right) \end{aligned}$$
(45)

the control law (43) can be written finally in the 2DOF controller form as follows:

$$\begin{aligned} R\left( {s^{ - 1} ,u\left( t \right) } \right) = \left( {H_C (t)} \right) ^{ - 1} K(s)z_d (t) - S\left( {s^{ - 1} ,y\left( t \right) } \right) \nonumber \\ \end{aligned}$$
(46)

The proposed control design can be seen as a 2DOF controller in the LTV framework without the resolution of Bézout’s equation. Now the design is focused on the choice of the trajectory \(z_d(t)\) to follow and the tracking dynamics given by \(K(s)\).

4 Application: control of a nonlinear model of a satellite

4.1 Nonlinear model of a satellite

In this section, the proposed approach in the case of MIMO LTV systems is applied to the model of a satellite SPOT-5. SPOT (Système Pour l’Observation de la Terre) is a high-resolution, optical imaging Earth observation satellite system operating from space. Spot-5 satellites are the third generation of SPOT satellites. Following [32, 36, 37], the nonlinear model of the satellite is given by:

$$\begin{aligned}&\ddot{r} = r\left( t \right) \omega ^2 \left( t \right) - \frac{k}{{r^2 \left( t \right) }} + \frac{{u_1 \left( t \right) }}{m} \nonumber \\&\dot{\omega }\left( t \right) = - 2\frac{{\dot{r}\left( t \right) \omega \left( t \right) }}{{r\left( t \right) }} + \frac{{u_2 \left( t \right) }}{{mr^2 \left( t \right) }} \end{aligned}$$
(47)

where:

  • \(r\left( t \right) \) represents the distance from the center of the Earth.

  • \(\theta \left( t \right) \) is the angular displacement with respect to an arbitrary but fixed direction in the orbiting plane.

  • \(m\) is the mass of the satellite (3,048 kg),

  • \(k\) is a gravitational constant determining the Earth force of attraction on the satellite given by \(k = GM_T\) such that \(G = 6.672559 \times 10^{ - 11} \mathrm{m}^3 /\mathrm{s}^2~\mathrm{kg}\) and \( M_T = 5.9736 \times 10^{24}\) kg is the mass of the Earth.

  • \(\omega \left( t \right) \) is the angular velocity, \( \omega \left( t \right) = \dot{\theta }\left( t \right) \).

\(\left( {r\left( t \right) ,\theta \left( t \right) } \right) \) is the polar coordinates for the position of the satellite. The control inputs \(u_1 \left( t \right) \) and \(u_2 \left( t \right) \) represent the radial and tangential thrust forces exercised by the satellite respectively. By denoting:

$$\begin{aligned}&x_1 \left( t \right) = r\left( t \right) =y_1(t) \nonumber \\&x_2 \left( t \right) = \dot{x}_1 \left( t \right) = \dot{r}\left( t \right) \\&x_3 \left( t \right) = \omega =y_2(t)\nonumber \end{aligned}$$
(48)

the model of the system (47) can be written into the following form:

$$\begin{aligned}&\dot{x}_1 \left( t \right) = x_2 \left( t \right) \nonumber \\&\dot{x}_2 \left( t \right) = x_1 \left( t \right) x_3^2 \left( t \right) - \frac{k}{{x_1^2 \left( t \right) }} + \frac{{u_1 \left( t \right) }}{m} \\&\dot{x}_3 \left( t \right) = \frac{{ - 2x_2 \left( t \right) x_3 \left( t \right) }}{{x_1 \left( t \right) }} + \frac{{u_2 \left( t \right) }}{{mx_1^2 \left( t \right) }}\nonumber \end{aligned}$$
(49)

A set of flat outputs for (47) can be easily found as \(\left( {r\left( t \right) ,\theta \left( t \right) } \right) \) then the considered model is flat. Indeed, all the system variables are expressed in terms of these variables and their derivatives. Denoting:

$$\begin{aligned} \left\{ \begin{array}{l} z_1 \left( t \right) = r\left( t \right) \\ z_2 \left( t \right) = \theta \left( t \right) \\ \end{array} \right. \end{aligned}$$
(50)

then the system variables can be written as:

$$\begin{aligned} x_1 \left( t \right)&= z_1 \left( t \right) \nonumber \\ x_2 \left( t \right)&= \dot{z}_1 \left( t \right) \nonumber \\ x_3 \left( t \right)&= \dot{z}_2 \left( t \right) \\ u_1 \left( t \right)&= m\left( {\ddot{z}_1 \left( t \right) - z_1 \left( t \right) \dot{z}_2^2 \left( t \right) + \frac{k}{{z_1^2 \left( t \right) }}} \right) \nonumber \\ u_2 \left( t \right)&= mz_1^2 \left( t \right) \left( {\ddot{z}_2 \left( t \right) + \frac{{2\dot{z}_1 \left( t \right) \dot{z}_2 \left( t \right) }}{{z_1 \left( t \right) }}} \right) \nonumber \end{aligned}$$
(51)

4.2 Linearization around a given trajectory

Consider the desired trajectories for the two flat outputs, sufficiently differentiable, which take the system from an initial state to an equilibrium final state defined by:

$$\begin{aligned} \begin{array}{l} z_{1d} \left( t \right) = r_d \left( t \right) = \left( { - \cos \left( {\frac{{\pi t}}{{6084}}} \right) + 1} \right) \times 39 + 7200 \\ z_{2d} \left( t \right) = \theta _d \left( t \right) = \left( { - \cos \left( {\frac{{\pi t}}{{6084}}} \right) + 1} \right) \times \pi \\ \end{array} \end{aligned}$$
(52)

Figure 1 shows the desired trajectories of the flat outputs. From Eq. (51), the trajectories

Fig. 1
figure 1

Desired trajectories of the two flat outputs \( z_{1d} \left( t \right) \) and \( z_{2d} \left( t \right) \)

\( T_d (t)= \left( {x_{1d} \left( t \right) ,x_{2d} \left( t \right) ,x_{3d} \left( t \right) ,u_{1d} \left( t \right) ,u_{2d} \left( t \right) } \right) \) can be then deduced. Figure 2 shows the desired trajectories for the inputs of the nonlinear system.

Fig. 2
figure 2

Desired trajectories of the radial and tangential thrust forces, \( u_{1d} \left( t \right) \) and \( u_{2d} \left( t \right) \)

Let us define in the following the set of variables:

$$\begin{aligned} \delta x_i \left( t \right)&= x_{id} \left( t \right) - x_i \left( t \right) \quad \mathrm{{~for~}}i = 1,2, 3 \\ \delta u_i \left( t \right)&= u_{1d} \left( t \right) - u_1 \left( t \right) \quad \mathrm{{~for~ }}i = 1, 2 \end{aligned}$$

The linearized model of (51) around the desired trajectories \( T_d (t)\) is given by

$$\begin{aligned}&\delta \dot{x}_1 \left( t \right) = \delta x_2 \left( t \right) \nonumber \\&\delta \dot{x}_2 \left( t \right) = \left( {x_{3d}^2 + 2\frac{k}{{x_{1d}^3 }}} \right) \delta x_1 \left( t \right) + \left( {2x_{1d} x_{3d} } \right) \delta x_3 \left( t \right) \nonumber \\&+ \frac{{\delta u_1 \left( t \right) }}{m} \nonumber \\&\delta \dot{x}_3 \left( t \right) = \left( { - \frac{{2u_{2d} }}{{mx_{1d}^3 }} + \frac{{2x_{2d} x_{3d} }}{{x_{1d}^2 }}} \right) \delta x_1 \left( t \right) - \frac{{2x_{3d} }}{{x_{1d} }}\delta x_2 \left( t \right) \nonumber \\&- \left( {\frac{{2x_{2d} }}{{x_{1d} }}} \right) \delta x_3 \left( t \right) + \frac{1}{{mx_{1d}^2 }}\delta u_2 \left( t \right) \end{aligned}$$
(53)

By denoting:

$$\begin{aligned} \delta x\left( t \right) = \left( {\delta x_1 \left( t \right) } {\delta x_2 \left( t \right) } {\delta x_3 \left( t \right) } \right) ^T \end{aligned}$$
(54)

the state space representation of the system can be written as:

$$\begin{aligned} \begin{aligned} \delta \dot{x}\left( t \right)&= A\left( t \right) \delta x\left( t \right) + B\left( t \right) u\left( t \right) \\ \delta y\left( t \right)&= C\left( t \right) \delta x\left( t \right) \end{aligned} \end{aligned}$$
(55)

where:

$$\begin{aligned}&\begin{aligned}&\delta y\left( t \right) = {{\left( {\delta {y_1}\left( t \right) }{\delta {y_2}\left( t \right) } \right) }^T}\\&\delta u\left( t \right) = {{\left( {\delta {u_1}\left( t \right) }{\delta {u_2}\left( t \right) }\right) }^T} \end{aligned} \end{aligned}$$
(56)
$$\begin{aligned}&A(t) = \left( {\begin{array}{l@{\quad }l@{\quad }l} 0 &{} 1 &{} 0 \\ ({x_{3d}^2 + 2\frac{k}{{x_{1d}^3 }}}) &{} 0 &{} ( {2x_{1d} x_{3d} } ) \\ {\left( { - \frac{{2u_{2d} }}{{mx_{1d}^3 }} + \frac{{2x_{2d} x_{3d} }}{{x_{1d}^2 }}}\right) } &{} { - \frac{{2x_{3d} }}{{x_{1d} }}} &{} - \left( {\frac{{2x_{2d} }}{{x_{1d} }}}\right) \\ \end{array}} \right) \end{aligned}$$
(57)
$$\begin{aligned}&B(t) = \left( {\begin{array}{l@{\quad }l} 0 &{} 0 \\ {\frac{1}{m}} &{} 0 \\ 0 &{} {\frac{1}{{mx_{1d}^2 }}} \\ \end{array}} \right) \end{aligned}$$
(58)
$$\begin{aligned}&C(t) = \left( {\begin{array}{l@{\quad }l@{\quad }l} 1 &{} 0 &{} 0 \\ 0 &{} 0 &{} 1 \\ \end{array}} \right) \end{aligned}$$
(59)

Clearly that \(rank\left( B\left( t \right) \right) = 2\).

Now, partition \( B\left( t \right) \) into column vectors:

$$\begin{aligned} B\left( t \right) = \left[ {b_1 \left( t \right) } {b_2 \left( t \right) } \right] \end{aligned}$$
(60)

To check the uniform controllability, we construct:

$$\begin{aligned} \fancyscript{K}_{\{2\}}(t)&= (K^0(t)\,K^1(t))\nonumber \\&= \left( \begin{array}{c@{\quad }c@{\quad }c@{\quad }c}0 &{} 0 &{} -\frac{1}{m} &{} 0 \\ \frac{1}{m} &{} 0 &{} 0 &{} -\frac{{2x_{3d}}}{{mx_{1d}}} \\ 0 &{} \frac{1}{{mx_{1d}^2}} &{} \frac{{2x_{3d}}}{{mx_{1d}}} &{} \frac{{2({x_{2d}-\dot{x}_{1d}})}}{{mx_{1d}^3}} \\ \end{array} \right) \end{aligned}$$
(61)

The controllability matrix \( \fancyscript{K}_{\left\{ 2 \right\} } \left( t \right) \) has rank 3 \(\forall ~t\), then the system (55) is uniformly controllable and the time-varying linearized system (53) is flat. According the procedure referred in [20], the two indices of controllability are calculated: \( \mu _1 = 2\mathrm{{~and}} \mathrm{{~ }}\mu _2 = 1\).

We construct the matrix \(V\left( t \right) \):

$$\begin{aligned} V\left( t \right) = \left( {\begin{array}{c@{\quad }c@{\quad }c} 0 &{} { - \frac{1}{m}} &{} 0 \\ {\frac{1}{m}} &{} 0 &{} 0 \\ 0 &{} {\frac{{2x_{3d} }}{{mx_{1d} }}} &{} {\frac{1}{{mx_{1d}^2 }}} \\ \end{array}} \right) \end{aligned}$$
(62)

Clearly, \(V\left( t \right) \) is invertible \( \forall ~ t\). After calculating \( V^{ - 1} \left( t \right) \), the second and third rows of this matrix are extracted to construct the matrix \(P_c \left( t \right) \). The transformation \(P_c \left( t \right) \) reduces the system (55) to the canonical form:

$$\begin{aligned}&\delta \dot{Z}\left( t \right) = A_C \left( t \right) \delta Z\left( t \right) + \bar{B}_C \left( t \right) \delta u_C \left( t \right) \nonumber \\&\delta y\left( t \right) = C_C \left( t \right) \delta Z\left( t \right) \end{aligned}$$
(63)

where:

$$\begin{aligned}&A_C (t) = P_C (t)A(t)P_C^{ - 1} (t) + \dot{P}_C (t)P_C^{ - 1} (t) \\&A_C \left( t \right) = \left( {\begin{array}{c@{\quad }c@{\quad }c} 0 &{} 1 &{} 0 \\ {\alpha _{11,0} \left( t \right) } &{} {\alpha _{11,1} \left( t \right) } &{} {\alpha _{12,0} \left( t \right) } \\ {\alpha _{21,0} \left( t \right) } &{} {\alpha _{21,1} \left( t \right) } &{} {\alpha _{22,0} \left( t \right) } \\ \end{array}} \right) \\&\bar{B}_C \left( t \right) = \left( {\begin{array}{c@{\quad }c} 0 &{} 0 \\ 1 &{} 0 \\ 0 &{} 1 \\ \end{array}} \right) \!,H_C = \left( {\begin{array}{c@{\quad }c} 1 &{} 0 \\ 0 &{} 1 \\ \end{array}} \right) \\&C_C \left( t \right) = C\left( t \right) P_C^{ - 1} (t) \end{aligned}$$

4.3 Trajectory tracking by LTV flatness-based control

Let’s denote \(\delta Z(t)\) the vector containing the flat outputs of the linearized system:

$$\begin{aligned} \delta Z\left( t \right) = \left( {\delta z_1 \left( t \right) } {\delta \dot{z}_1 \left( t \right) } {\delta z_2 \left( t \right) }\right) ^T \end{aligned}$$
(64)

The previous control law (25) can be written as:

$$\begin{aligned} u_{C1} \left( t \right)&= \ddot{z}_{1d} \left( t \right) + \kappa _{1,0} z_{1d} \left( t \right) + \kappa _{1,1} \dot{z}_{1d} \left( t \right) \nonumber \\&-\left( {\kappa _{1,0} z_1 \left( t \right) + \kappa _{1,1} \dot{z}_1 \left( t \right) } \right) + \alpha _{1,1,0} \left( t \right) z_1 \left( t \right) \nonumber \\&+\,\, \alpha _{1,1,1} \left( t \right) \dot{z}_1 \left( t \right) + \alpha _{1,2,0} \left( t \right) z_2 \left( t \right) \end{aligned}$$
(65)

becomes:

$$\begin{aligned} u_{C1} \left( t \right) - u_{C1,d} \left( t \right)&= \kappa _{1,0} \delta z_1 \left( t \right) + \kappa _{1,1} \delta \dot{z}_1 \left( t \right) \nonumber \\&-\,\, \alpha _{1,1,0} \left( t \right) \delta z_1 \left( t \right) - \alpha _{1,1,1} \left( t \right) \delta \dot{z}_1 \left( t \right) \nonumber \\&-\,\, \alpha _{1,2,0} \left( t \right) \delta z_2 \left( t \right) \end{aligned}$$
(66)

to obtain:

$$\begin{aligned} \delta u_{C1} \left( t \right)&= \left( {\alpha _{1,1,0} \left( t \right) - \kappa _{1,0} } \right) \delta z_1 \left( t \right) \nonumber \\&+\left( {\alpha _{1,1,1} \left( t \right) - \kappa _{1,1} } \right) \delta \dot{z}_1 \left( t \right) + \alpha _{1,2,0} \left( t \right) \delta z_2 \left( t \right) \nonumber \\ \end{aligned}$$
(67)

the same:

$$\begin{aligned} \delta u_{C2} \left( t \right)&= \left( {\alpha _{2,2,0} \left( t \right) - \kappa _{2,0} } \right) \delta z_2 \left( t \right) \nonumber \\&+\,\, \alpha _{2,1,0} \left( t \right) \delta z_1 \left( t \right) + \alpha _{2,1,1} \left( t \right) \delta \dot{z}_1 \left( t \right) \nonumber \\ \end{aligned}$$
(68)

implies that:

$$\begin{aligned}&\delta u_C \left( t \right) = \Lambda \left( t \right) \delta Z\left( t \right) \end{aligned}$$
(69)

where:

$$\begin{aligned}&\delta u_C (t) = \left[ {\delta u_{C1}(t)} {\delta u_{C2} (t)}\right] ^T \end{aligned}$$
(70)
$$\begin{aligned}&\Lambda \left( t \right) = \left( {\begin{array}{c@{\quad }c} {\left( {\alpha _{1,1,0} \left( t \right) - \kappa _{1,0} } \right) } &{} {\alpha _{2,1,0} \left( t \right) } \\ {\left( {\alpha _{1,1,1} \left( t \right) - \kappa _{1,1} } \right) } &{} {\alpha _{2,1,1} \left( t \right) } \\ {\alpha _{1,2,0} \left( t \right) } &{} {\left( {\alpha _{2,2,0} \left( t \right) - \kappa _{2,0} } \right) } \\ \end{array}} \right) ^T \end{aligned}$$
(71)

We construct the observability matrix of the pair \((A(t),C(t))\):

$$\begin{aligned}&\fancyscript{L}_{\left\{ 2 \right\} }(t) = \left( {\begin{array}{c@{\quad }c@{\quad }c} 1 &{} 0 &{} 0 \\ 0 &{} 0 &{} 1 \\ 0 &{} 1 &{} 0 \\ {\left( { - \frac{{2u_{2d} }}{{mx_{1d}^3 }} + \frac{{2x_{2d} x_{3d} }}{{x_{1d}^2 }}} \right) } &{} { - \frac{{2x_{3d} }}{{x_{1d} }}} &{} { - \left( {\frac{{2x_{2d} }}{{x_{1d} }}} \right) } \\ \end{array}} \right) \nonumber \\ \end{aligned}$$
(72)

has \(rank\) 3 \( \forall ~t\), the system is then uniformly observable. (31) can be written as:

$$\begin{aligned} \delta Y\left( t \right) = O(t)\delta Z\left( t \right) + M(t)\delta u_C \left( t \right) \end{aligned}$$
(73)

where:

$$\begin{aligned} \delta Y\left( t \right) = \left( {\begin{array}{c} {\delta y\left( t \right) }\\ {\delta \dot{y}\left( t \right) } \end{array}} \right) ,{ O(t)} = \left( {\begin{array}{c} {{C_C}\left( t \right) }\\ {{{\dot{C}}_C}\left( t \right) + {C_C}\left( t \right) {A_C}\left( t \right) } \end{array}} \right) \end{aligned}$$

and:

$$\begin{aligned} M(t) = \left( {\begin{array}{c} {{M_0}}\\ {{C_C}\left( t \right) {{\bar{B}}_C}} \end{array}} \right) \end{aligned}$$

\(O(t)\) is the observability matrix of the set \( \left( {A_C \left( t \right) , C_C \left( t \right) } \right) \). By denoting as:

$$\begin{aligned}&\left( {O^T \left( t \right) O\left( t \right) } \right) ^{ - 1} \cdot O^T \left( t \right) = \fancyscript{F} \left( t \right) \end{aligned}$$
(74)

we get:

$$\begin{aligned} \delta Z\left( t \right) = \fancyscript{F} \left( t \right) \left( {\delta Y\left( t \right) - M(t)\delta u_C \left( t \right) } \right) \end{aligned}$$
(75)

Equation (63) can be written as:

$$\begin{aligned} \delta Z\left( t \right) = s^{ - 1} \left( {A_C \left( t \right) \delta Z\left( t \right) + \bar{B}_C \delta u_C \left( t \right) } \right) \end{aligned}$$
(76)

By replacing the expression of \( \delta Z\left( t \right) \), from Eq. (75), in the right side of Eq. (76), we get:

$$\begin{aligned} \delta Z\left( t \right)&= s^{ - 1} \left( {A_C \left( t \right) \fancyscript{F}(t)\delta Y(t)} \right) \nonumber \\&-\,\, s^{ - 1} \left[ {A_C \left( t \right) \fancyscript{F}(t)M(t)\delta u_C \left( t \right) } \right] \nonumber \\&+\,\, s^{ - 1} \left( {\bar{B}\delta u_C \left( t \right) } \right) \end{aligned}$$
(77)

with:

$$\begin{aligned}&A_C \left( t \right) \fancyscript{F}\left( t \right) = \left( {\begin{array}{c@{\quad }c} {\tau _1 \left( t \right) } &{} {\tau _2 \left( t \right) } \\ {\tau _3 \left( t \right) } &{} {\tau _4 \left( t \right) } \\ {\tau _5 \left( t \right) } &{} {\tau _6 \left( t \right) } \\ \end{array}} \right) \end{aligned}$$
(78)
$$\begin{aligned}&A\left( t \right) \fancyscript{F}\left( t \right) M\left( t \right) = \left( {\begin{array}{c@{\quad }c} {\beta _1 \left( t \right) } \\ {\beta _2 \left( t \right) } \\ {\beta _3 \left( t \right) } \\ \end{array}} \right) \end{aligned}$$
(79)

where \( \tau _i \left( t \right) \mathrm{{~and~}}\beta _i \left( t \right) \) are \((1 \times 2)\) time-varying matrices. By using integration by parts such that \(\delta \dot{y}(0)=0\), Eq. (77) leads to the following expression:

$$\begin{aligned} \begin{aligned} \delta Z\left( t \right)&= \left( {\begin{array}{cc} {\tau _2 \left( t \right) } \\ {\tau _4 \left( t \right) } \\ {\tau _6 \left( t \right) } \\ \end{array}} \right) \delta y\left( t \right) \\&\quad +s^{ - 1} \left[ {\left( {\begin{array}{cccccc} {\tau _1 \left( t \right) - \dot{\tau }_2 \left( t \right) } \\ {\tau _3 \left( t \right) - \dot{\tau }_4 \left( t \right) } \\ {\tau _5 \left( t \right) - \dot{\tau }_6 \left( t \right) } \\ \end{array}} \right) \delta y(t)} \right] \\&\quad +s^{ - 1} \left[ {\left( {\begin{array}{cccccc} { - \beta _1 \left( t \right) } \\ { - \beta _2 \left( t \right) } \\ { - \beta _3 \left( t \right) } \\ \end{array}} \right) \delta u_C \left( t \right) } \right] \\&\quad + s^{ - 1} \left( {\bar{B}_C\delta u_C \left( t \right) } \right) \\ \end{aligned} \end{aligned}$$
(80)

By replacing the expression of \(\delta Z\left( t \right) \) into the control law (69):

$$\begin{aligned} \begin{aligned} \delta u\left( t \right)&= H_C^{ - 1} \Lambda \left( t \right) \left( {\left( {\begin{array}{ccc} {\tau _2 \left( t \right) } \\ {\tau _4 \left( t \right) } \\ {\tau _6 \left( t \right) } \\ \end{array}} \right) \delta y\left( t \right) } \right. \\&\quad + s^{ - 1} \left[ {\left( {\begin{array}{cc} {\tau _1 \left( t \right) - \dot{\tau }_2 \left( t \right) } \\ {\tau _3 \left( t \right) - \dot{\tau }_4 \left( t \right) } \\ {\tau _5 \left( t \right) - \dot{\tau }_6 \left( t \right) } \\ \end{array}} \right) \delta y(t)} \right] \\&\quad +\left. s^{ - 1} \left[ {\left( {\begin{array}{cc} { - \beta _1 \left( t \right) } \\ { - \beta _2 \left( t \right) } \\ { - \beta _3 \left( t \right) } \\ \end{array}} \right) \delta u_C \left( t \right) } \right] \right. \\&\quad \left. +\,\, s^{ - 1} \left( {\bar{B}_C\delta u_C \left( t \right) } \right) \right) \end{aligned} \end{aligned}$$
(81)

we deduce that:

$$\begin{aligned} \delta u\left( t \right) = S\left( {s^{ - 1} ,\delta y\left( t \right) } \right) + R\left( {s^{ - 1} ,\delta u_C \left( t \right) } \right) \end{aligned}$$
(82)

where:

$$\begin{aligned} S\left( {s^{ - 1} ,\delta y\left( t \right) } \right)&= H_C^{ - 1} \Lambda (t)\left[ {\left( {\begin{array}{cc} {\tau _2 (t)} \\ {\tau _4 (t)} \\ {\tau _6 (t)} \\ \end{array}} \right) \delta y\left( t \right) } \right. \nonumber \\&\left. { +\,\, s^{ - 1} \left( {\begin{array}{ccccc} {\tau _1 \left( t \right) - \dot{\tau }_2 \left( t \right) } \\ {\tau _3 \left( t \right) - \dot{\tau }_4 \left( t \right) } \\ {\tau _5 \left( t \right) - \dot{\tau }_6 \left( t \right) } \\ \end{array}} \right) \delta y(t)} \right] \end{aligned}$$
(83)
$$\begin{aligned} R\left( {{s^{ - 1}},\delta {u_C}\left( t \right) } \right)&= H_C^{ - 1}\Lambda \left( t \right) \nonumber \\&\times \left[ {{s^{ - 1}}\left[ {\left( {\begin{array}{cc} { - {\beta _1}(t)}\\ { - {\beta _2}(t)}\\ { - {\beta _3}(t)} \end{array}} \right) \delta {u_C}(t)} \right] }\right. \nonumber \\&\left. +\,\, {s^{ - 1}}\left( {\bar{B}_C\delta {u_C}\left( t \right) } \right) \right] \end{aligned}$$
(84)

Figure 3 illustrates the structure of the proposed method based on the flatness property with the use of an exact observer.

Fig. 3
figure 3

Structure of the proposed control

The tracking model is set with the two polynomials \(\kappa _1 \left( s \right) = s^2 + \kappa _{1,1} s + \kappa _{1,0} \) and \(\kappa _2 \left( s \right) = s + \kappa _{2,0}\).

For the numerical simulations, the tracking model is set with a time response of 100 min for \(\kappa _1 \left( s \right) \) and 200  min for \(\kappa _2 \left( s \right) \). The errors resulting from the inaccurate measurements perturbations used in the simulations are \( \delta y_1 \left( 0 \right) = 10\) km and \( \delta y_2 \left( 0 \right) = - 0.2\) rad/s (the initial conditions due to the inaccurate measurements). The results obtained in Figs. 4, 5, 6 and 7, show that the trajectories of the nonlinear system follow the desired trajectories with good performance.

Fig. 4
figure 4

Outputs of the nonlinear system \( y_{1} \left( t \right) \) and \( y_{2} \left( t \right) \)

Fig. 5
figure 5

The radial and tangential thrust forces, \( u_{1} \left( t\right) \) and \( u_{2} \left( t \right) \)

Fig. 6
figure 6

Desired flat outputs and system flat outputs trajectories

Fig. 7
figure 7

Tracking errors of the two outputs of the nonlinear system

The control law obtained by application of the flatness-based controller, allows to obtain high performance in terms of path tracking with errors which tend asymptotically to zero (see Fig. 7). These results point out the effectiveness of the use of the flatness-based approach for the LTV systems in a path tracking context.

The robustness of the control scheme is investigated when there is a change in the mass of the satellite, \(m\), from (3,048 kg) to (3,000 kg) and in the gravitational constant, \(k\), from \(1443493.11439264~\mathrm{m}^3/\mathrm{s}^2\) to \(1443220.28~\mathrm{m}^3/\mathrm{s}^2\) at the time 3,000 min. These parameters are changed in the nonlinear model but not in the controller.

With the same tracking model and the previous initial conditions, the performance in tracking of angular velocity still correct (see Fig. 8). We remark a bad performance in terms of tracking of the altitude after the time 3,000 min (see Fig. 8).

Fig. 8
figure 8

Outputs of the nonlinear system \( y_{1} \left( t \right) \) and \( y_{2} \left( t \right) \) when there is a change in \(m\) and \(k\) at the time 3,000 min

Figure 9 presented below shows simulation results when there is a change of parameters at the time 3,000 min and the tracking model is set with a time response of 5 min for \(\kappa _1 \left( s \right) \) and 10 min for \(\kappa _2 \left( s \right) \). Regarding the simulation results, it can be inferred that we have a robust tracking of the desired outputs.

Fig. 9
figure 9

Outputs of the nonlinear system \( y_{1} \left( t \right) \) and \( y_{2} \left( t \right) \) when there is a change in the parameters and the time response of the tracking model

In this design strategy, following Eq. (25), the set of flat outputs of the system (\(r\left( t \right) ,\, \theta \left( t \right) \)) tracks the desired flat outputs \(( z_{1d} \left( t \right) , z_{2d} \left( t \right) )\). So that, the system outputs \(( y_1(t)=r\left( t \right) ,y_2(t)=\omega \left( t \right) = \dot{\theta }(t))\) track the set of variables \(( z_{1d} \left( t \right) , {{\dot{z}}_{2d}}\left( t \right) )\) and we get then a robust tracking of the desired outputs. It can be noted that if there are parametric variations in the relation between the flat outputs and the system outputs then we have a bad performance in terms of tracking of the desired outputs.

The errors on the outputs resulting from its inaccurate measurements perturbations used in the simulations are \( \delta y_1 \left( 0 \right) = 10\) km and \( \delta y_2 \left( 0 \right) = - 0.2\) rad/s (the initial condition due to the inaccurate measurement). If this inaccurate measurement is big, the outputs will not track the desired trajectory in the case of the use of an exact observer. In fact, it should be clear from the previous developments that the relation linking the integral reconstructor, \(\delta Z\left( t \right) \), and the actual value of the state, is given by [38, 39]:

$$\begin{aligned} \delta Z\left( t \right) = \delta \hat{Z}\left( t \right) + \sum \limits _{i = 1}^{\nu - 2} {\left( {\int \limits _0^t { A_C^{i - 1} \left( t \right) \delta Z_0 \left( t \right) dt} } \right) } ^{\left( {i - 1} \right) } \end{aligned}$$
(85)

where \(\delta Z_0 \left( t \right) \) is the initial condition due to the inaccurate measurement. In a further development within the context of flatness and exact observer, our main concern is how to appropriately compensate the effects of the unknown initial conditions when the actual value of the state is replaced by its integral reconstructor in a given state-based feedback controller design.

5 Conclusion

In this paper, a flatness-based control for tracking desired trajectories in the case of MIMO LTV systems is proposed and developed. The proposed controller is based on an exact observer with a direct calculation of the state vector which contains the flat output and its derivatives. This regulator-observer permits to the system outputs to track desired trajectories without using observer dynamics. The proposed method leads to a control design which can be seen as a 2DOF controller but without the resolution of Bézout’s equation. The control law applied on a nonlinear model of a satellite gives a high level of performances in terms of the trajectory tracking. Beyond the framework of LTV systems, the result presented here open the way to the control of nonlinear systems using their linearizations around given trajectories.