Optimization engine failure behaviour (coaxial octocopter)


Dear all,

I am running PX4 on a coaxial/X octocopter and I am very interested in optimizing the flight behaviour in case of a single engine failure. The problem is, that the system has little power reserves as the hover throttle under normal conditions is already around 60%. I know that my current configuration can fly stable and maintain height as the same UAV is flying better with 7 engines on a DJI flight controller.

I assume that the main “problem” is, that attitude control (roll, pitch and especially yaw) is more important than vertical thrust. So in order to reach the roll/pitch/yaw setpoints, thrust is reduced in order to avoid mixer saturation. This is also explained here: https://docs.px4.io/en/advanced_config/pid_tuning_guide_multicopter.html (“If mixing becomes saturated towards the upper bound the commanded thrust is reduced to ensure that no motor is commanded to deliver more than 100% thrust. This behaviour is similar to the Airmode logic, and is applied whether Airmode is enabled or disabled”). It seems, that this high thrust strategy cannot be disabled like for low thrust with the MC_AIRMODE parameter.

Reducing thrust on a copter with little reserves and an engine failure obviously means that it is not able to maintain its height any more, which is what I want to avoid. Is there any possibility to optimize the default attitude control / mixing strategy / flight behaviour to reach my goals:

  • leveling of the copter is important in order to avoid horizontal drifting
  • thrust in Z-direction is more important than reaching roll/pitch angle setpoints which are unequal zero
  • reaching the yaw setpoint is least important, but of course the UAV should not start spinning

Any help or suggestion is very much appreciated!

Many thanks,