# Exploring Control Allocation for eVTOL Vehicles

Imagine yourself in the cockpit of a Cessna, similar to the one shown in the image below. As the pilot, you have the ability to separately control the roll moment by deflecting the ailerons (green), pitch moment by deflecting the elevator (blue), yaw moment by deflecting the rudder (red), and thrust force by changing the propeller speed (orange). Collectively, these pilot commands affect vehicle motion by changing the forces and moments on the vehicle. How much each surface is deflected to get a desired force-moment output is the problem of control allocation.

In the case of the Cessna, what happens when one of the control surfaces malfunctions? Since the function of each surface is focused on only one particular force or moment, it is difficult to find an alternative solution to adequately control the aircraft. For example, if the elevator (blue) fails how will you pitch up and down? While there are safety measures in place in current aircraft to manage this, it’s one area in which the next generation of electric aircraft excel. This is where the Vahana design comes in.

In contrast to the vehicle shown above, in Vahana each lift fan has control effectiveness in more than one control axis. For instance, as shown in the image below, each lift fan (purple) has an effect on the vertical force (thrust) and moments (roll, pitch, and yaw) in hover. In cruise, while each lift fan affects the same items, they primarily contribute to the forward force (thrust) and yaw moment. This means if a lift fan on Vahana ceased to function, it would be okay as the seven others can execute the same commands to balance the failed rotor.

Today, most multirotors include more than four rotors to provide failure tolerance, also called *actuator redundancy*. This leads to an over-actuated system where mathematically there are an infinite number of possible motor thrust combinations that provide the desired forces and moments. Thus, a strategy is required to find the best solution while taking into account certain limitations, such as:

- Not exceeding the maximum thrust that an individual rotor can provide
- Often, not reversing the rotor system to provide negative thrust
- Not exceeding structural, thermal, or electrical limitations

This strategy can be formulated as an optimization problem and, in this case, is posed as a quadratic programming problem.

## What Is Quadratic Programming

Quadratic programming (QP) is the process of solving a special type of mathematical optimization problem — specifically, a linearly constrained quadratic optimization problem. This is the problem of optimizing (minimizing or maximizing) a quadratic function of several variables subject to linear constraints, such as actuator limits, limits on control surface deflections, and/or limits on propeller angular speed, etc. Quadratic programming is a particular type of nonlinear programming for which a unique solution is relatively efficient to find.

## Our Approach

The problem setup is reduced from 22 degrees of freedom (the 22 actuators on Vahana — 8 motors, 8 variable pitch actuators, 4 control surfaces, and 2 tilt actuators) to 12 degrees of freedom by scheduling the fan collective pitch commands and wing/canard tilt angles as a function of filtered airspeed. Notional schedules are provided by a trimline that minimizes the power requirements at each airspeed. Scheduling these actuators in this fashion also reduces the bandwidth requirements on the variable pitch fan (VPF) and tilt actuators.

The 12 remaining degrees of freedom represent the motor speeds and control surface deflections. We pose this allocation problem with four inputs (the force-moment commands) and the 12 outputs as a constrained quadratic programming (QP) optimization problem. The objective function is to achieve the desired force and moment commands and minimize deviations from the trim settings, while imposing constraints for each actuator. The trim settings were selected to be low power for each airspeed, so remaining near trim provides a reasonable proxy for a control power objective.

This approach allowed for weighting of the desired force, moments, and actuators to express designer preferences. For Vahana, rolling and pitching moments are prioritized over vertical force, which is prioritized over yawing moments. For actuation priority, the control surface deflections are prioritized over changes in motor torque, as they generally use less energy. While this problem may be solved “online” (in real time while flying the vehicle) we sought to find an “offline” solution to avoid issues such as guaranteed convergence in time. By formulating the problem as a parametric quadratic program, the offline solution may be determined.

## The Solver

At each moment in time during flight, a different force-moment command will be required for the aircraft to react to the current flight conditions. To solve this problem offline, a parameterized solution is required that takes any force-moment command and directly provides the actuator outputs. This represents a solution to a parametric quadratic program and is defined by a set of piecewise linear functions, with the boundaries defined by high dimensional polygons called polytopes with dimensions equal to the number of parameters — four in our case. The MPT3 solver saves the boundaries of all the polytopes and saves the linear functions for determining the optimum design variables as a function of the parameters inside each polytope.

The online algorithm then only needed to determine which polytope the current force-moment command lies in, and compute the actuator commands using the linear solution within that polytope.

Software testing of the control allocator is also significantly easier, as it’s trivial to ensure coverage. Storing the solution in this manner does increase the flight computer memory requirements. In order to apply this method at airspeeds between the trim points, it was necessary to evaluate the model at the bounding airspeeds and interpolate the solution.

An example showing our original projection of the four-dimensional polytopes into four 3D force-moment spaces is shown below for the alpha hover condition, with all motors operating.

Distributed control has a two-fold purpose:

**Safety:**The control allocation algorithm manages the control signals among the redundant actuators and the actuator redundancy is used to ensure the flexibility and safety of the aircraft. The algorithm can find the “best” solution in case of some of the failures and that solution can then be programmed in the flight software based on this prior analysis. The following video shows this in action on our subscale model for a simulated motor failure.

**Efficiency:**The effectiveness of the actuators is limited, making it important to optimize their use within their position and rate limits in order to maximize vehicle performance. Actuator redundancy makes it possible to jointly optimize different aspects of vehicle motion.

To show this method in practice, an example is implemented for multirotor allocation using the MPT3 toolbox, which may be found on the VahanaOpenSource repository. Here, the problem is setup and solved for an octocopter with equally spaced rotors. Both nominal and single failed rotor conditions are considered.

We’re thrilled to be able to share this level of detail with you all — please reach out to us if you have any questions.

- Zach Lovering