Skip to content

Conversation

@IamPete1
Copy link
Member

This adds thrust loss detection to quadplane. The thresholds are copied from copter. For thrust loss to be detected the following must be true for one second:

  • Armed, flying and in throttle unlimited spool state
  • Desired attitude of less than 15 degrees
  • Demanded throttle of more than 90% or on the upper throttle limit and above 25%
  • Vehicle descending
  • Angle error of less than 30 degrees

When thrust boost is detected it will stops the mixer constraining the other motor outputs based on the failed motor. This will only really help if you have more than 4 motors since if you have 4 or less you will have already crashed.

Copter has a flight option to disable this check, we will likely want the same.

Currently this is active all the time, we may want to ignore transitions (especially for tiltrotors) or change the thresholds.

Draft PR for now to get some testing.

Another option would be to expose the motors->set_thrust_boost to scripting so the check could be done with a script and tailored to a specific vehicle, or by using ESC telem for example.

@timtuxworth
Copy link
Contributor

Very interesting @IamPete1 - this might work with 4 motors. Since 4.6 QuadPlane can deal with lost motors much better than it used do and specifically the Griffin Pro (in SITL anyway) will not crash if I simulate losing a motor.

@IamPete1 IamPete1 marked this pull request as ready for review January 10, 2026 19:54
@IamPete1 IamPete1 force-pushed the quadplane_thrust_loss branch from b9a004d to 59facc0 Compare January 10, 2026 19:54
@IamPete1
Copy link
Member Author

IamPete1 commented Jan 11, 2026

Marked for call to discuss:

  • Are the same thresholds OK
  • Should we ignore transitions
  • We could move to scripting, but I think the thresholds are unlikely to be too annoying so hopefully will not need customization

Still to do:

  • Add a option to disable check, copter has one
  • Add bindings so scripting can get the failed motor. It could then disable forward tilt for position control on a tilt rotor with a tilting motor failed as it will result in a large yaw imbalance.

}

// Run thrust loss check
thrust_loss_check();
Copy link
Contributor

@tridge tridge Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe not run when in fwd transitions? or turn off if any motor tilted beyond 45 degrees?
and add option to disable it

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have added a option param, it can be turned off completely, or turned off in everything except transitions.

@IamPete1 IamPete1 force-pushed the quadplane_thrust_loss branch from 59facc0 to 09daf8d Compare January 24, 2026 21:22
@IamPete1 IamPete1 force-pushed the quadplane_thrust_loss branch from 09daf8d to 4abeede Compare January 24, 2026 21:37
@Hwurzburg Hwurzburg added the WikiNeeded needs wiki update label Jan 25, 2026
@IamPete1 IamPete1 requested a review from tridge January 25, 2026 13:49
uint16_t counter;

// Options parameter and helper
AP_Int32 options;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

32 seems extreme

Comment on lines +798 to +799
// No failed motor
if (!motors->get_thrust_boost()) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// No failed motor
if (!motors->get_thrust_boost()) {
if (!motors->get_thrust_boost()) {
// No failed motor

Or

Suggested change
// No failed motor
if (!motors->get_thrust_boost()) {
// Check for failed motor
if (!motors->get_thrust_boost()) {

similarly for other things in here

@tridge tridge merged commit 82724ae into ArduPilot:master Jan 26, 2026
77 of 78 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants