# Modeling and Control of Satellite Formations: A Survey
## 2 Multiple-Input-Multiple-Output Formation Architecture
In [63], the spacecraft motion equations in the gravitational field are used through the orbital radius vector \(\mathbf{r}\)[67]:  
\[\dot{r} =v, \tag{18}\] \[\dot{\mathbf{v}} =\mathbf{g}(\mathbf{r})+\Gamma\mathbf{u},\] (19) \[\dot{J} =v\Gamma, \tag{20}\]  
where \(\Gamma\) is the thrust force modulus expressed in acceleration units (\(0\leqslant\Gamma\leqslant\Gamma_{\text{max}}\)), \(\mathbf{u}\) is the unit vector in the direction of thrust action, \(J\) is the characteristic velocity to be minimized. Equations (18)-(20) describe the behavior of the state vector \(\mathbf{x}^{\text{T}}= \begin{bmatrix}\mathbf{r}^{\text{T}}&\mathbf{v}^{\text{ T}}&J\end{bmatrix} \) under the action of free-fall acceleration \(\mathbf{g}(\mathbf{r})\) and control variables \(\Gamma\) and \(\mathbf{u}\). For a high-thrust engine, one can make an approximation of impulsive thrust, assuming that the magnitude of thrust is not limited (\(\Gamma_{\text{max}}=\infty\)). In this case, the engine is either turned off (\(\Gamma=0\)), or provides an impulse thrust of infinitely short duration. The thrust impulse solution requires the determination of the times, locations, and directions of thrust impulses that meet the specified boundary conditions for orbit transfer, interception, or rendezvous. Determining the solution with the minimum amount of fuel requires solving the optimal control problem in the time interval \(t\in[t_{0},t_{F}]\), which minimizes the final value of \(J\) and satisfies the equations of motion and the orbital boundary conditions of the problem. The Hamiltonian following from (18)-(20) must be maximized  
\[\mathcal{H}=\lambda_{r}^{\text{T}}\mathbf{v}+\lambda_{v}^{\text{T}}(\mathbf{g }+\Gamma\mathbf{u})+\lambda_{J}\Gamma \tag{21}\]  
taking into account the equations for the conjugate variables  
\[\lambda_{r}^{\text{T}} =-\partial\mathcal{H}/\partial\mathbf{r}=-\lambda_{v}^{\text{T}} G(\mathbf{r}), \tag{22}\] \[\dot{\lambda}_{p}^{\text{T}} =-\partial\mathcal{H}/\partial\mathbf{v}=-\lambda_{r}^{\text{T}},\] (23) \[\dot{\lambda}_{J} =-\partial\mathcal{H}/\partial J=0, \tag{24}\]  
where \(G(\mathbf{r})\) is the symmetric gravity gradient matrix. Since the characteristic velocity \(J\) is not limited, \(\lambda_{J}(t)=-1\) is satisfied. The boundary values of the remaining conjugate variables depend on the terminal constraints \(\mathbf{r}(t_{F})\) and \(\mathbf{v}(t_{F})\) on state variables. The Hamiltonian \(\mathcal{H}\) is maximized by choosing the direction of the thrust force that maximizes the scalar product \(\lambda_{p}^{\mathsf{T}}\mathbf{u}\), that is, combining the thrust vector with the direction conjugate to the speed, which is the basis vector (see [24]), denoted below by \(\mathbf{p}\). Then, from (21)-(24) one can deduce that  
\[\ddot{\mathbf{p}} =G(\mathbf{r})\mathbf{p}, \tag{25}\] \[\mathcal{H} =\mathbf{p}^{\mathsf{T}}\mathbf{g}-\dot{\mathbf{p}}^{\mathsf{T}} \mathbf{v}+(p-1)\Gamma, \tag{26}\]  
where \(p\) denotes the amplitude of the basis vector. From (26) for the Hamiltonian it follows that the thrust switch function is \(p-1\). In the case of continuous thrust, the Hamiltonian is maximized by choosing \(\Gamma=0\) when \(p<1\), and \(\Gamma=\Gamma_{\max}\) when \(p>1\). In the impulse case \(\Gamma=0\), when \(p<1\) with impulses arising at those times when \(p(t)\) touches \(p=1\) from below [24] Further, in [63] multi-impulse solutions are obtained for both coplanar and a limited class of non-coplanar optimal fixed in time rendezvous \"circular orbit\". For sufficiently long transition times, solutions become well-known time-open solutions, such as the Hohmann transfer for the coplanar case. (In orbital mechanics, the Hohmann transfer orbit is an elliptical orbit used to transfer between two circular orbits of different radii around the central body in the same plane. An orbital maneuver uses two engine impulses to execute it: one to put the spacecraft into a transfer orbit, and the second to lift it from it.)