1. Introduction
Drones have been widely used since 2010. In addition, drones are used for tasks such as scientific research, civil development, and military missions [
1]. As drones become popular, many stakeholders are concerned with safe drone operation. A hexacopter drone has two more motors than does a quadrotor drone; this provides redundancy in the cases in which some motors fail. Drones equipped with the conventional control allocation schemes may crash if one or more motors fail during flight. Fault-tolerant control is crucial to drone safety and has been an extensively researched topic [
2,
3,
4,
5]. For a multirotor drone, failure of some motors may result in a period of uncontrolled flight or an uncontrolled crash landing. Two approaches are mainly employed to investigate drone motor failure: fault detection and isolation, which usually entails estimating the effectiveness of failed motors [
6,
7] and control allocation.
Several studies have been conducted on motor failure detection, maneuverability of drones with failed motors, and control allocation. When a drone suffers from motor failure, fast detection of failed motors is essential for follow-up responses. Some excellent work on this field can be found in [
8,
9,
10]. A very recent and novel method of fault diagnosis using thermal imaging is presented in [
11]. Refs. [
12,
13,
14] considered the influence of multirotor configuration to the controllability and maneuverability. Though robustness of the drone subject to rotor failure was discussed in their work, only the case of one failed rotor were considered. Lu [
1] proposed a complete active fault-tolerant control system for quadrotors subjected to one total rotor failure. Merheb [
15] proposed a lookup table for transforming a quadrotor to a trirotor in the event of one total rotor failure. Tjønnås [
16] proposed an algorithm that employs a positive-definite control efficiency matrix; by contrast, Falconí [
2] proposed an algorithm in which the restrictions are released and the virtue control matrix is assumed to be full rank. Nagarjuna and Suresh designeds a safe landing sequence [
17]. Wang and Zhang reshaped the control commands via sliding mode control algorithm [
18]. Lee et al. employed two servomotors that control relative roll and pitch attitudes when one motor failure is detected to maintain the stability of the quadrotor [
19].
Although the aforementioned systems are excellent, a few questions remain unanswered: first, most previous studies have considered quadrotor or hexacopter systems with one failed motor. The question as to how to address systems with more than one failed motor has not been answered. Second, Falconí [
2] imposed the assumption that the virtue control matrix is full rank. However, in the event of motor failure in a multirotor vehicle, this assumption may not hold. Third, ref. [
15,
20] have proposed a lookup table to solve control allocation problems on a case-by-case basis. However, an algorithm that provides a general approach to the allocation problem is required. Fourth, most studies have discussed attitude control but not trajectory control. Hence, the question as to whether trajectory is also controllable under failed motors warrants answering. The presented work in this paper is inspired by [
21]. There are still several differences: In [
21], an octorotor was investigated, whereas we investigate a hexacopter. Secondly, ref. [
21] approached the problem only with numerical simulations, whereas controllability is examined analytically in our work. Thirdly, Marks et al. only simulated altitude and attitude in [
21], whereas we analytically and numerically show that recovery of hovering position is possible in some cases.
In this paper, we focus on the allocation of controls when some motors fail during flight.
Figure 1 presents a block diagram of the motor failure management process, and this paper mainly focuses on the failure management portion, presented in the block of dark gray background. Assume that motors have failed during flight and that this failure has already been detected. The uneven distribution of forces results in the offset of the states from the nominal hovering states. For hovering states, the control reconfiguration algorithm generates new control distribution regarding functional motors. However, the perturbed flight states require more control effort than do nominal flight states. The extra control effort is managed and generated by applying the allocation algorithm detailed in Figures 3 and 4. The control allocation algorithm along with reconfigured nominal control is expected to restabilize the hexacopter during hovering flight. If not, this algorithm is expected to sufficiently stabilize the flight so that pilots can perform an emergency landing.
There are three main advantages in using allocation of controls. First, only one control gain is required, even with failed motors; secondly, onboard emergency response is possible; thirdly, development process of controller is faster. Implementation of controllers requires a computing unit and other supporting components in an integrated circuit board, such as an onboard computer or a set of microchips. For a drone using an onboard computer, change of control gain or control law in response to failed motors may require an external, special device to “burn” parameters into the onboard computer, such as Pixhawk. Therefore, in general, parameters and control algorithms are not adjustable during flight in such cases. Although some computing units composed of microchips may modify their control parameters in flight, this process needs to be manipulated from the ground station. In contrast, the algorithm of control allocation along with control reconfiguration can be written in the onboard computing unit in advance. When encountering a motor failure event, the drone can respond to the emergency and stabilize itself autonomously. An alternative but similar manipulation is to prepare multiple control gains or control laws onboard, as suggested in this paper suggested with allocation matrices. This method requires longer developing period to develop, simulate, and verify controllers for various motor failure cases. Moreover, gain scheduling should also be considered for different controllers subject to change in drone configuration or variations in flight conditions. One set of control gain with the proposed allocation algorithm significantly shortens and simplifies the development process.
Specifically, the objective was to develop an approach that can be applied to safely land a hexacopter with one or more failed motors. In some cases, however, emergent and immediate landing may be difficult. Trajectory control with some failed motors is crucial under these circumstances. Assuming that failed motors are detected, our investigation focuses on control reconfiguration and control allocation. Instead of rotational speeds, force and moments are adopted as the control input in the equations of motion (EOMs). The force and moments are then distributed to the rotors. In cases in which some rotors have failed during flight, the required force and moments are allocated to the remaining functional motors if possible. This approach tolerates uncontrollable yaw but not uncontrollable pitch or roll, which is highly related to flight safety. According to our research, pitch or roll would become uncontrollable only if four or more motors fail. Therefore, this paper discusses situations involving the failure of only one, two, or three motors; such failures can be grouped into seven cases. The paper also proposes a general allocation algorithm for efficiently allocating thrust and moment loads to the remaining functional motors even when non-full-rank control allocation matrix is applied. Thus, the designated control law and control gain need not be changed due to motor failure. This assumption is relatively practical because change of control law or control gain takes relatively larger effort as discussed previously. Our algorithm considers the control of full states, including trajectory and attitude, and is verified through numerical simulations.
The rest of this paper is organized as follows:
Section 2 describes the dynamics and EOMs. The applied control law and the general control allocation algorithm are presented in
Section 3. In this paper, our algorithm applies a linearization approach for equation analysis and simulations are conducted in a nonlinear regime to demonstrate the validity of the algorithm.
Section 4 discuses cases of failed motors and failure management. Several simulations are presented in
Section 5 to verify the proposed algorithm. The final section concludes our work and summarizes the contributions.
2. Dynamic Model of the Hexacopter
2.1. Coordinate System and Rotor Numbering
A hexacopter is composed of six rotors. To keep the momentum of the whole vehicle neutral, the six rotors are arranged in three pairs, with the two rotors in each pair rotating in opposite directions (
Figure 2, left panel). The six rotors are separated form one another at an angle of 60°.
A Cartesian coordinate system, comprising the axes , with origin at the center of mass (CM) of the hexacopter is defined for further investigation. Because this coordinate system shifts along with the hexacopter, it is in the drone body-fixed frame (BF). The -axis is defined so that the left rotor rotates counterclockwise (CCW) and the right rotates clockwise (CW) from the top view. Because the vehicle is rotationally symmetric, the direction can be arbitrarily assigned as long as the aforementioned constraint is satisfied. The -axis points rightward and is perpendicular to the i-axis. Finally, completes the triad.
A local-vertical-local-horizontal (LVLH) frame, comprising the axes
, is also defined. The
-axis points northward,
-axis points eastward, and
-axis points toward the center of the earth. Because the endurance of a hexacopter is much shorter than a day, the earth can be assumed to be static during a mission, and the LVLH frame can be regarded as inertial. A diagram depicting the concept is presented in the right panel of
Figure 2.
A set of Euler angles
is employed to describe the rotation of the hexacopter, representing the rolling, pitching, and yawing angles, respectively. Throughout this paper, we adopt a
yaw-pitch-roll sequence, also called 321-sequence, for rotations from the LVLH (inertial) frame to the BF. A rotation matrix
associated with the set of Euler angles is defined to transform coordinates of a vector with respect to the LVLH frame to those with respect to the BF. Detailed formulation of
can be found in [
22]. A rotation matrix is orthonormal, satisfying
. Additionally, a matrix
is employed to transform an angular velocity
to the time change rate of Euler angles
, described by Equations (
2) and (
3) [
22].
For further investigation, all rotors are assigned a number. All rotors in the CCW direction from the
-axis are designated as
to
, as depicted in
Figure 2.
2.2. Hexacopter Dynamics
Let
denote the position of the hexacopter with respect to the LVLH frame and
be the velocity of the CM. Accordingly, the kinematic equations can be expressed as follows:
where
, and
In Equation (
3),
and
. Notably,
and
are expressed in different coordinate systems. A rotation matrix
should be applied to Equation (
1) in actual computation processes. Moreover,
is not a rotation matrix, and singularities exist when
. A hexacopter usually flies with a small pitch angle and is not influenced by singularities. An alternative solution to avoid singularity is the employment of quaternions.
The kinetic equations can be derived from Newton’s laws of motion. Let
be the external forces exerted on the hexacopter and
be the external moments with respect to the CM. Newton’s second law of motion describes the following:
where
is the inertia tensor with respect to the CM in the BF. Because a hexacopter is usually symmetric to the
and
planes, the inertia tensor can be expressed as
.
2.3. Hexacopter Nonlinear EOMs
The EOMs of a hexacopter are given by Equations (
1), (
2), (
4) and (
5), and expansion of these equations are provided in Equations (
A1)–(
A12) in
Appendix A. Define a state vector
as follows:
. Equations (
A1)–(
A12) can be summarized as follows:
where
are the equations and
is the control vector.
In this paper, two aspects of control inputs can be considered: the rotation rates of rotors and the force-moment set. In the first case, , where denotes non-negative real numbers; accordingly, the rotation rates of rotors are used as control inputs. In the second case, ; accordingly, the lift force as well as three moments are used as control inputs. The two control vectors are convertible and are employed in different scenarios.
Notably,
in the EOMs. This may increase difficulties in further analysis because the control
is constrained. We perform a change of variable by defining
, where
for
. This definition leads to
Moreover, is replaced by for further analysis.
2.4. Linearization of EOMs
2.4.1. Equilibrium Point
As mentioned, the aim of this paper is to develop an algorithm for the analysis and management of hexacopter motor failures. When a hexacopter incurs a rotor failure during flight, an emergent hovering is designed to be imposed, and the developed algorithm can be applied to manage the failure. After control is regained for the hexacopter, the hexacopter may continue its designated trajectory or perform an emergency landing. Therefore, the proposed algorithm can help regain hexacopter controllability during hovering.
The equilibrium state during hovering is expressed as follows [
26]:
. Therefore, the following can be derived:
,
, and
. Notably, the system does not execute maneuvers during hover, implying that
and
.
2.4.2. Nominal Control for Equilibrium
Writing Equations (
19)–(
22) in matrix form at the equilibrium point yields the following:
Alternatively, , where the bar over a variable denotes evaluation in nominal states, and the subscript “0” denotes no failed motor. is a transformation matrix that transforms to .
To simulate the failure of motors, an effectiveness matrix
is employed.
is defined as
, where
represents the status of the motor
i. In this paper, we only allow motors to be on or off. As a result,
for a normal motor and
for a failed motor. Then Equation (
24) can be generalized as
. Or,
by letting
.
Let
where
represents the first row and
represents the remaining entries of
. Consequently,
subject to the following constraints:
where
denote the null space of a matrix. Notably,
if
.
Conclusively, the solution space is
where Sp
is the span of the vectors,
,
,
, and
are coefficients.
In some cases, however, full control of the system in the nominal level is impossible. An alternative strategy is to release the yaw constraint. Since emergent safe landing is the first priority of the goal, sacrificing yawing motion is safer than sacrificing pitching or rolling motion of a multirotor craft. With this assumption, the third row of
is removed. Denote the new matrix as
, and its null space is given by
where
,
,
,
, and
are coefficients.
2.4.3. Linearized EOMs
The linearized system is expressed as follows:
, where the state matrix is
, and the control matrix is
or
.
and
can be derived through partial differentiation with respect to
and
evaluated at the equilibrium point, and calculations are provided in
Appendix A.
3. Control Allocation
3.1. Control Architecture
Feedback control laws are usually designed to stabilize a hexacopter and can generally be presented as follows: , where denotes the feedback gain, denotes the real-time state vector, and denotes the desired state vector. A different control law may result in a different gain .
The control allocation architecture is shown in
Figure 3, where
. Let
denote the control command computed from the control law. As mentioned,
is given by lift force and three moments. In practice, the control signal should be allocated to and realized by the rotational speed of each rotor. The rotation of rotors in response to the control command then generates corresponding lift and moments, denoted as
u, to stabilize the hexacopter.
If all motors function well, the allocated rotational speeds should be identical to the actual rotational speed, leading to . If some motors fail, only the remaining operational motors can generate controls. Consequently, in such cases. The proposed algorithm forces for failed motors by reallocating control to the remaining motors if possible—the limitation of the algorithm.
3.2. Transformation of Controllers
The transformation of
and
in the linear regime can be obtained by linearizing Equations (
19)–(
22) for the nominal rotational rates. Let
and
. The transformation can be written in matrix form as follows:
where
where
. Here we name
W as a “linear transformation matrix”, which transforms
to
.
In the implementation, is applied to prevent the adjustment of control gains due to motor failures. To compensate for the loss of the failed motors, the control commends are allocated to the remaining functional motors. Hence, we specify as because is the control vector obtained from the control law. is renamed as for simplicity. Moreover, we drop the -sign in the following derivations for simplicity, leading to . Notably the following derivations are only linear approximations. Nominal controls should be considered and added if the original full nonlinear system is to be simulated. Moreover,
3.3. Control Allocation in General Situations
Figure 4 presents the flowchart of the control allocation algorithm. The subscript “
c” denotes the command derived from the control law, and a term without a subscript denotes the actual input in the implementation. Given a control command
, the command for the rotational speeds
can be derived by multiplying the allocation matrix
, given by
. On the other hand,
if the
ith motor is failed. Multiplied by
,
simulate the actual rotation of rotors. For example, given the first and third motors fail, we obtain the effectiveness matrix
and the corresponding
.
According to Equation (
30),
In normal flight, , and . When some motors fail, the design of the allocation matrix becomes critical. The following questions are assessed in this paper:
Does exist so that when some motors fail?
If yes, what is the best method to design ? if no, what is the best method to regain the control of the hexacopter?
3.4. Controllability of the System
When some motors fail during flight, the designated control command cannot be fully realized, causing loss of force and unbalanced moments. An ideal allocation algorithm will redistribute the rotational speeds of the remaining operational motors so that the lost thrust is compensated for. Obviously, not every failure situation can be compensated for. For example, in the special case that all six motors fail, the thrust will never be compensated for. Therefore, the effectiveness of the allocation algorithm depends on whether the system is controllable subject to a constrained control.
The controllability of the system in the specific allocation problem can be formulated as follows: consider a linear control system
In our problem, the details of the state-space equations are presented in
Appendix A. The controllable states and the corresponding control must be determined, and the domain of the actual control is given by
Recall that , leading to , where denotes the range space of . Because and , .
Therefore, the problem can be reformulated by substituting Equation (
34) into Equation (
33) as follows:
where
. The controllability can be examined by studying the pair
.
4. Failure Management
In this paper, we consider seven cases of motor failure: one case involving only a single failed motor, three cases involving two failed motors, and three cases involving three failed motors. The arrangement of the subsequent failed motors is based on motor 1 because the arrangement of the six motors on the hexacoptor is geometrically symmetrical. The failure cases are illustrated in
Figure 5. The crosses on the motors signify that the motors have failed.
4.1. Design of Allocation Matrix
Failure management is discussed in this section. Once failed motors are detected, the allocation matrix
is adjusted to reallocate required rotor rotational speeds so that the designated control inputs can be realized. Because the function of
is to maintain
, the following identity holds:
Let
denote the failed motors. For example, If Motors #1 and #4 fail, then
and
. If all motors function normally, that situation is denoted by
. On the basis of this definition, Equation (
36) can be further simplified as follows:
Taking the right pseudo-inverse of
yields
Clearly, Equation (
38) satisfies Equation (
37) given that
is invertible.
In the case that
is singular, implying that full control of the hexacopter is impossible, the yaw control must be sacrificed. Let
where
and
. If rank
=3,
is invertible. Then,
is constructed as follows:
With such , we can determine that , , and , but . Although the yaw control is not as designed and may fail to control the yaw motion, this situation is acceptable: first, the yaw motion is independent of other states in the linear sense, and failure in yaw control does not affect the propagation in other states; second, uncontrolled yaw motion does not influence the flight safety considerably whereas uncontrolled pitch or roll motion may cause a crash.
If rank, flight safety cannot be achieved for the hexacopter. These cases are out of the scope of this paper and are not discussed.
4.2. Case 0: Control Allocation in Normal Flight
4.2.1. Allocation Matrix Design
Assume that all motors are normal. The nominal rotor rotation rates are
, and
. The allocation matrix
is attainable via Equation (
38) and provided in Equation (
A22) in
Appendix B.
4.2.2. Controllability
A system without failed motors must be fully controllable. This fact can also be proved as follows:
The controllability matrix formed by the pair is full rank, indicating that all states are controllable.
4.3. Case 1: One Failed Motor
4.3.1. Reconfiguration of Rotor Rotation
Without loss of generality, we can assume that Motor #1 failed during flight. In this case, nominal control is attainable by solving Equation (
27) with a vector in Equation (
28) subject to the constraint:
. One solution is
, where
. As a result, nominal control can be derived as follows:
, resulting in
.
4.3.2. Allocation Matrix Design
In this case,
, and
is attainable by
. The 1st and 4th columns are zeros, and this indicates that rank
. The allocation matrix
is attainable via Equation (
40) and provided in Equation (
A23) in
Appendix B.
4.3.3. Controllability and Stabilizability
The control matrix
is expressed as
. The structure of
is identical to Equation (
A17), and that of
identical to Equation (
A20). However,
is modified as follows:
We can derive the controllability matrix
and assess the rank. Rank
. Hence, this is an uncontrollable system. This result is consistent with those proposed in [
12]. An alternative approach can be achieved by defining the controllability matrix as follows:
where
is an eigenvalue of
. Those uncontrollable eigenvalues reduce the rank of
.
has ten unstable eigenvalues at 0 and two stable eigenvalues at
. By scanning through all eigenvalues of
, we conclude that the system is unstabilizible because the uncontrollable eigenvalues are the 0 values.
According to control theory, controllable states can be found in the column space of
, denoted as
. Executing manipulations yields
where
is a standard basis in the vector space, and
The subscript denotes a failed motors. This result explains that only specific initial conditions in the yaw motion can be stabilized when our algorithm is applied in a case in which opposite motors have failed.
4.4. Case 2: Two Opposite Motors Fail
In this case, two opposite motors are assumed to have failed, as shown in
Figure 5. Without loss of generality, we use Motor #1 and #4 as an example. Other opposite pairs of failed motors lead to similar results.
In this case, and for . . The parameters in this scenario are identical to those in Case 1. Therefore, the analysis procedures and results are also identical to those in Case 1.
4.5. Case 3: One Working Motor in Between
In this case, we assume one working motor in between two failed motors, as shown in
Figure 5. Without loss of generality, this paper uses failed Motors #1 and #3 as an example.
4.5.1. Reconfiguration of Rotor Rotation
In this case, nominal control is attainable by solving solving Equation (
27) with a vector in Equation (
28) subject to the constraint:
. One solution is
, where
. As a result, nominal control can be derived as follows:
, resulting in
.
4.5.2. Allocation Matrix Design
In this case, , and is attainable by . Only the 2nd and 5th columns are nonzeros, and this indicates that rank. Accordingly, pitch and roll are uncontrollable. Hence, this scenario is out of the scope of this paper.
4.5.3. Alternative Reconfiguration
An alternative way to reshape nominal control is to release the stability of yawing motion. In this circumstance, nominal control is attainable by solving solving Equation (
27) with a vector in Equation (
29) subject to the constraint:
. One solution is
, where
. Consequently, according to Equation (
27), nominal control can be derived as follows:
.
4.5.4. Controllability and Stabilizability
The control matrix
is calculated as
. The structure of
is identical to Equation (
A17), and those of
and
are identical to Equations (
A20) and (
A21), respectively. Because Equations (
A20) and (
A21) are derived under the assumption of normal flight, the system is controllable.
Notably, the system is controllable because we restricted our attention to stabilize yaw motion. The system should be controllable
if and only if yaw stability is not considered. In contrast to Case 1 and Case 2, in which the yaw motion is uncontrollable at the linearized level, yaw stability is not considered at the nominal level in this case. Therefore, we can expect the divergence of the yaw motion to be greater and faster than those in Case 1 and Case 2. The allocation matrix
is provided in Equation (
A24).
4.6. Case 4: Adjacent Motors in Failure
In this case, two adjacent motors are assumed to have failed, as shown in
Figure 5. Without loss of generality, we consider Motors #1 and #2 as examples.
4.6.1. Reconfiguration of Rotor Rotation
In this case, nominal control is attainable by solving solving Equation (
27) with a vector in Equation (
28) subject to the constraint:
. The only solution is
, where
. As a result, nominal control can be derived as follows:
, resulting in
.
4.6.2. Allocation Matrix Design
In Case 4, , and is attainable by . Only the 3rd and 6th columns are nonzeros, and this indicates that rank. Accordingly, pitch and roll are uncontrollable. Hence, this scenario is out of the scope of this paper.
The alternative approach of releasing yaw control is also investigated for this case. After a similar manipulation procedure to that in the preceding cases, we can obtain that one solution is
, where
. Consequently, according to Equation (
27), nominal control can be derived as follows:
. Since the result is identical to that in the full approach, this case is uncontrollable.
4.7. Three Motors in Failure
In this section, the three motors are assumed to have failed simultaneously. Potential cases are demonstrated in
Figure 5, and they are numbered as Case 5, Case 6, and Case 7. Without loss of generality, motors #1, #3, and #5 are used as an example of failure for Case 5; motors #1, #2, and #4 are used as an example of failure for Case 6; and motors #1, #2, and #3 are used as an example.
4.7.1. Case 5: (#1, #3, #5) Motors in Failure
In this case, the only solution to Equation (
27) with a vector in Equation (
28) subject to the constraint
is
, leading to
. This implies that nominal rotational rates to stabilize the hexacopter do not exist. We can thus conclude that full controllability of this system is impossible.
An alternative approach is to release the constraint in yawing. With this assumption, we conclude that , where . According to Equation (27), nominal control can be found as follows: , resulting in .
Therefore,
, and
is attainable by
. The 1st, 3rd, and 5th columns are zeros, and this indicates that rank
. The allocation matrix
is attainable via Equation (
40) and provided in Equation (
A25) in
Appendix B.
The control matrix
is calculated as
. The structure of
is identical to Equation (
A17), and that of
identical to Equation (
A20). However,
is modified as follows:
Through a similar analysis process, we realize that this an uncontrollable and unstabilizable system.
According to control theory, controllable states can be found in the column space of the controllability matrix
, denoted as
. Executing some manipulations yields
where
The subscript denotes the failed motors.
4.7.2. Case 6: (#1, #2, #4) Motors in Failure
In this case, nominal control is attainable by solving solving Equation (27) with a vector in Equation (
28) subject to the constraint:
. The only solution is
, where
. This solution space is identical to the space in Case 4. Hence, the pitch and roll are uncontrollable.
Consider the alternative approach, which entails releasing the constraint on yaw at the nominal level. We obtain , where . This result is identical to Case 4, and we argue that this case is uncontrollable.
4.7.3. Case 7: (#1, #2, #3) Motors in Failure
In this case, the only solution to Equation (27) with a vector in Equation (
28) subject to the constraint
is
, leading to
. This implies that nominal rotational rates to stabilize the hexacopter do not exist. We can thus conclude that full controllability of this system is impossible.
Consider the alternative approach, which entails releasing the constraint on yaw at the nominal level. One possible solution is . Consequently, according to Equation (27), nominal control can be derived as follows: . Because all entries of the vector must be greater than zero, this approach is infeasible. Hence, we argue that this case is fully uncontrollable.
4.8. Summarization of Cases Study
After studying potential failure cases, we conclude that
the pilot is able to regain controllability of states other than yawing motion when two opposite motors have failed;
for the case with only one failed motor (Case 1 and Case 2), the best strategy is to turn off the opposite motor and perform the same maneuver as in the previous scenario;
for the case with two failed motors with one working motor in between (Case 3), the pilot is able to regain controllability of states other than yawing motion. In this scenario, however, the hexacopter tends to spin and wobble severely.
for the case with three failed motors with one working motor in between (Case 5), the pilot is able to regain controllability of states other than yawing motion. Similar to the previous scenario, the hexacopter tends to spin and wobble severely.
for other cases, it is very markedly difficult for the pilot to regain controllability and safely land the hexacopter.