## 4 Experiment and Discussion
### Simulation  
The simulation is carried out in Simulink. To make the simulation model closer to the practical model, the air damping model is added, and the specific modeling method and parameters can be found in [30; 31]. The parameters presented in Table 1 are chosen as the model parameters of the FMAV. To explore whether the designed controller has a large enough control domain and good decoupling performance, we take different types of time-varying control commands, including step command, sinusoidal command, constant valued command, and triangular waveform command, as the inputs to different axes, simultaneously. Specific commands are shown as follows:  
\[ \begin{split}\phi_{d}&=20\times\text{square}(\pi t)\\ \theta_{d}&=10\\ \psi_{d}&=20\times\sin(\pi t/2)\\ z_{d}&=\left\{\begin{array}{lr}100,&0s<t<5\, \text{s}\\ 100+20\times\text{sawtooth}(2\pi t/15,0.5),&t\geq 5\,\text{s}\end{array}\right. \end{split}  \tag{32}\]  
where, \(\phi_{d}\), \(\theta_{d}\), \(\psi_{d}\), and \(z_{d}\) are the reference of the roll, pitch, yaw angle, and altitude, respectively. The Matlab function \(\text{square}()\) and \(\text{sawtooth}()\) generate the square waves and triangular waveform, respectively. In the simulation, these commands are input to the vehicle simultaneously. The initial state of the attitude and altitude of the FMAV are both 0. The ideal outcome of the control task is to enable all states to track the reference without errors and overshooting. For comparison, we also design a cascade PID controller in simulation for the identical task. This kind of cascade PID controller is commonly applied in the quadrotor. The inner loop is the angular velocity or vertical velocity loop, and the outer loop is the angle or altitude loop. Simple linear control allocation shown in Equation (33) is adopted. \[\left\{ \begin{array}{lr}PWM_{fl}=O_{thrust}-O_{roll}\\ PWM_{fr}=O_{thrust}+O_{roll}\\ PWM_{sl}=-O_{pitch}-O_{yaw}\\ PWM_{sr}=O_{pitch}-O_{yaw}\end{array} \right. \tag{33}\]  
where, \(PWM_{fl}\) and \(PWM_{fr}\) are the control inputs of the left and right motors, respectively. \(PWM_{sl}\) and \(PWM_{sr}\) are the control inputs of the left and right servos, respectively. \(O_{roll}\), \(O_{pitch}\), \(O_{yaw}\) are the output of the PID controller in the roll, pitch, and yaw axis, respectively. \(O_{thrust}\) is the output of the altitude controller. This kind of control allocation is simple and more intuitive, but it ignores the coupling dynamics between every axis. Simulation results of the PID controller are shown in Figure 7.  
As can be seen from Figure 7, all the states can converge to the desired value. However, the coupling phenomenon among the three attitude axes is obvious. when the reference of roll angle is suddenly changed, an abrupt change occurs in the pitch angle, resulting in a big error in pitch angle. In my opinion, the main reason for this phenomenon is that the interaction between the actuator outputs is not considered. When the reference of the roll angle changes, the output of the roll-axis controller changes the thrust of the wings on both sides, and the new output of the actuators cannot produce the required pitch-axis torque,  
Figure 7: Simulation results of the attitude and altitude controlled by the PID controller. (**a**) Simulation results of attitude control. (**b**) Simulation results of altitude control. resulting in a large error in the pitch angle under the influence of wind resistance. Moreover, the roll angle control and altitude control have obvious overshoot, which is caused by the integral term in the PID controller accumulating the significant error during the rising process. The maximum overshoot in altitude control is 20%. However, the integral term is also essential to eliminate the steady-state error, especially in the case of persistent wind disturbance. Compared with the PID controller, the simulation result of the proposed adaptive controller is shown in Figure 8.  
As can be seen from Figure 8a, all states of the FMAV can well track the reference output by the TD.