ArduPilot / ardupilot

ArduPlane, ArduCopter, ArduRover, ArduSub source
http://ardupilot.org/
GNU General Public License v3.0
10.88k stars 17.35k forks source link

Plane: Detect mid-flight motor/ESC failures #3456

Open magicrub opened 8 years ago

magicrub commented 8 years ago

When throttle changes (goes up) but battery current stays the same, then we know the motor is not drawing current and a stall/crash will be inevitable. At this point we could go into a special fail-safe mode such as:

Otherwise we will inevitably stall and fall out of the sky uncontrollably.

squilter commented 8 years ago

Should this be part of the crash detector?

magicrub commented 8 years ago

Failsafe is a better place

SlipstreamFPV commented 8 years ago

Great feature idea and simple implementation. Only issue could be a failure of the current sensor triggering a false detection.

WickedShell commented 8 years ago

So I have a log from someone who took off in manual, never armed the plane, handed over to the autopilot (which of course not output throttle). STALL_PREVENTION wasn't turned on, the plane basically just maintained FBW min airspeed, quite successfully, which is actually a great behavior IMO. (This only worked as the minimum airspeed is higher then the stall which is why the plane still turned fine autonomously). This was with speed weighting of 1, so I think the current behavior is far better then might be expected.

On Sat, Feb 20, 2016 at 9:08 PM, SlipstreamFPV notifications@github.com wrote:

Great feature idea and simple implementation. Only issue could be a failure of the current sensor triggering a false detection.

— Reply to this email directly or view it on GitHub https://github.com/diydrones/ardupilot/issues/3456#issuecomment-186737246 .

proficnc commented 8 years ago

Also Concider the possibility of a lost propeller. Current will still rise, but not to the expected level.

magicrub commented 8 years ago

I'm open to suggestions

SlipstreamFPV commented 8 years ago

Current and voltage drop combined indicate a functioning motor. Insignificant voltage drop and no change in current = motor fail. Maybe even integrate an airspeed check since that should change with increased throttle as well.

magicrub commented 8 years ago

At least in auto modes, throttle is only used to maintain your cruise airspeed. There shouldn't be any "increase" to look for. However, you make a good point about the voltage. During a flight your battery voltage is fairly noisy and bumpy. Going up and down by 10% or so for medium-high throttle vs none. That's another good indicator. It should have some deltas in it when the motor spins up.

summary:

jcooper21 commented 8 years ago

I think when the motor failure is detected ideally the plane would point itself at the home position and attempt to glide home.

magicrub commented 8 years ago

This feature will work best with a selector for the desired behavior.

marcmerlin commented 7 years ago

For FPV pilots, the OSD should give a warning too. I'll look at writing some code to do this: https://github.com/marcmerlin/night_ghost_minimosd-extra-mavlink/issues/1

iskess commented 7 years ago

Several years ago actually had the opposite problem. I had my ESC stuck wide open and couldn't get the plane down and climbed into a rain storm. I had to wait until the battery died then dead-stick it in.
At about 1:50 you can see the motor output dies with high throttle. Then later the throttle shows 0, but the motor is screaming.
https://youtu.be/aANtCjEFzpA

rmackay9 commented 5 years ago

There is a corresponding issue here for Copter: https://github.com/ArduPilot/ardupilot/issues/11947

Naterater commented 3 years ago

First, a windmilling prop at low-to-mid throttle will draw almost zero current, so I think this behavior could be falesly dangerous. In additon, I think we should be able to do this with scripting, correct? Can this issue be closed?

marcmerlin commented 3 years ago

why would this be dangerous @Naterater ? If you are windmilling, you also have close to 0 throttle output, so they match The problem is if you have >50% throttle and you notice that you're using less than 3A, or whatever the correct value for a given aircraft. I would love a control that takes "minimum amps at over 50% throttle", and if the amps dip below that, AP commands an immediate RTL as well as a mavlink message about motor failure

Naterater commented 3 years ago

With 12x12 props, I can be in an updraft, flying along at 20m/s, 60% throttle, and <1A off draw when normally in level flight I’m at 40% throttle, and 4A. I’m saying the given conditions for “motor/ESC failure” here are too common to warrant specific failsafe coding in ardupilot. Furthermore, I believe you can already do this specific action as a part of scripting.

geofrancis commented 3 years ago

wouldn't this be an ideal candidate for ESC telemetry? prop failure could be done by checking maximum cruise propeller speed so if a propeller came off you would see the motor is spinning faster than it would normally be able to at full power. motor/ESC/wiring failure could also be detectable by the low/no rpm from the motor or loss of ESC telemetry. esc telemetry also gives readings from all escs individually, so their heath can be monitored and problem motor disabled automatically.

magicrub commented 3 years ago

wouldn't this be an ideal candidate for ESC telemetry? prop failure could be done by checking maximum cruise propeller speed so if a propeller came off you would see the motor is spinning faster than it would normally. motor/ESC/wiring failure could also be detectable by the low/no rpm from the motor or loss of ESC telemetry. esc telemetry also gives current and temperature readings from all escs individually so their heath can be monitored and problem motor disabled automatically.

Yup! Esc feedback is best. I think my intent here was to try and detect it with that but this is an old issue before we had esc telemetry. Now we just need to do more than just log/stream the data.. like declare an emergency or something

geofrancis commented 3 years ago

wouldn't this be an ideal candidate for ESC telemetry? prop failure could be done by checking maximum cruise propeller speed so if a propeller came off you would see the motor is spinning faster than it would normally. motor/ESC/wiring failure could also be detectable by the low/no rpm from the motor or loss of ESC telemetry. esc telemetry also gives current and temperature readings from all escs individually so their heath can be monitored and problem motor disabled automatically.

Yup! Esc feedback is best. I think my intent here was to try and detect it with that but this is an old issue before we had esc telemetry. Now we just need to do more than just log/stream the data.. like declare an emergency or something

yes something like propulsion failsafe, for single engine the options i would think about would be to limit bank angles and prioritize maintaining airspeed over altitude and start to RTL or closest rally point or landing waypoint.

you would also have to look at multi engine aircraft, as they would now be dealing with asymmetric thrust, so are going to have to keep a much higher minimum airspeed in order to reduce the risk of rolling over, they also need rudder input to fly straight or risk of rolling over.

then your into the VTOL aircraft, where you have a lot more motors running. A check that all the motors required for a flight mode work when the mode is changed would be needed. so when changing to Q loiter from forward flight, the flight controller should be sure that all the motors are actually turning before trying to vertical land since the plane is going to be actively trying to go below its stall speed. in that scenario it would have to land like a regular aircraft or at least land with enough forward speed that its control surfaces have enough authority that they can compensate for the failed motor.

A better way of checking for the motor failure on almost any vehicle would be to check the RPM if the throttle output to a motor reaches 100%, if the RPM too high or too low then it's in a failed state and failsafes can activate. the only problem with this idea i can think of is you could overspeed the propeller in a dive so some kind of inhibitor would be needed for rapid descents.

andyp1per commented 2 years ago

Yes, doing this with ESC telemetry is very easy

julled commented 1 year ago

Very nice, i would be very interested in this feature!