inav icon indicating copy to clipboard operation
inav copied to clipboard

Ignore all safety checks for arming within 2 seconds of disarm

Open avsaase opened this issue 3 years ago • 17 comments

When the pilot accidentally disarms in flight, the procedure to arm and resume normal flight is quite involved and easy to mess up when the pilot panics after suddenly seeing the flight stats:

  1. (Disable nav mode)
  2. Throttle to zero
  3. Center roll/pitch stick
  4. Arm
  5. (Wiggle roll/pitch stick to disable launch mode)

If you don't have small_angle = 180 or no GPS fix you are almost certainly screwed.

There's all kind of ways to mitigate this problem, but an easy solution suggested on FB is to disable all the safety checks in the first few seconds after disarm so you can always rearm. It should also immediately cancel launch mode and resume the flight mode from before disarming, ideally with the same target altitude if an altitude controlled mode was active. 2 seconds seem to be a reasonable time for this because the first instinct will be to flip the arm switch again, and 2 seconds is sufficiently short to not be a major safety hazard.

avsaase avatar Apr 04 '21 19:04 avsaase

@avsaase I've never had nav_extra_arming_safety turned ON. That overcame the rearming issue in flight for me. But I think your proposal seems to be a good way of using arming safety and preventing the hassles of rearming if the pilot gets in a fluster.

@JulioCesarMatias There are many that fly fixed wings below launch altitude. Wouldn't your idea prevent them from using this check ignore?

Jetrell avatar Apr 05 '21 09:04 Jetrell

nav_extra_arming_safety only overrides the GPS fix and nav mode check, not any of the other checks like stick position. I think a two-second period after disarming where everything is ignored is probably safe enough. I agree that altitude should not be used for this, and it is also not necessary.

avsaase avatar Apr 05 '21 10:04 avsaase

Personally, I don’t think turning nav_extra_arming_safety off so should be recommended at all. This allows launching without a home position recorded and can cause fly-aways.

I think the best solution so far is to use the programming system to try and detect when you’re flying. If you’re flying, disable the extra safety features then.

However, the 2 second window would be better all round. Functionality wise to the pilot l, it would work the same (actually better if it also disables launch). But this would be built in to the firmware, so much easier to use for everyone. It also means that all the safety features like nav_extra_arming_safety and disarm_kill_switch can be left on (or allow_bypass for bench testing with the former).

Just on suggestion. It may also be handy to add the mechanism that decides if the model is flying to the programming. I can see that being a useful feature. Just a simple is_flying boolean would be great.

MrD-RC avatar Apr 06 '21 06:04 MrD-RC

@MrD-RC You could add this to the long list of features that would benefit from Flying/not flying detection. Whoever reliably implements that feature is going to be THE MAN!

Jetrell avatar Apr 06 '21 07:04 Jetrell

I think it would only ever be an estimation, but it could be accurate enough for most purposes I think. Maybe this would be a good place to hash out some ideas?

In flight triggers

All would be after arming. Once a threshold is met, it would stay in-flight until the no longer flying trigger.

  • 3D speed > 400 cm/s (14.5 kmh) This speed is half way between average human walking and running speeds. This should mean that walking with the model would not trigger, but running would. This allows the failsafe test to still work.
  • Alt <> 1000 (10m) This should cover aircraft like multirotors (that lift off slowly) and sloping gliders (which can have a slower ground speed, depending on the wind conditions).
  • Launch mode completes This should be a pretty obvious one.

No longer flying triggers

  • Disarmed > 2 seconds
  • Nominal movement detection We would need some kind of detection for detecting when if the model has crashed. This could of course be hung in a tree with some movement. Another option could be to trigger no longer flying in failsafe, then rely on a flying trigger once it has recovered. Though that gives a false state, which I’m not overly keen on

They’re just a couple of thoughts. It would be great to get your input guys.

MrD-RC avatar Apr 08 '21 09:04 MrD-RC

@MrD-RC These are some good ideas and I like to discuss them further. But in the interest of keeping things organized, can you copy or move this comment to https://github.com/iNavFlight/inav/issues/2331?

avsaase avatar Apr 08 '21 10:04 avsaase

Great idea, just wondering if 2 seconds is enough. Would be great to be able to choose the time span, because I use a long press of a button to arm/disarm. 5secs would be ok fine for me.

FPVZaphod avatar May 24 '21 13:05 FPVZaphod

My vote goes for the simple 2 seconds solution, maybe user-configurable up to 5 seconds as FPVZaphod suggested to accomodate for personal needs.

In a plane midair disarm it took me about 15 seconds to realize whats going on with not rearming and to reorganize all switches/modes and take care of the glide path to avoid obstacles. On a multirotor that would have been a disaster. This a welcome solution!

CertainBot avatar Jun 10 '21 07:06 CertainBot

One caveat for fixed wings though. On rearming should be useful to apply some spool up if throttle not at 0% to avoid a sudden full power motor torque which can be dangerous in the air and on the ground. Comes to mind the AutoLaunch spool up when AL idle throttle is set >0 . Soft and fast enough, just needs to take the current stick throttle as a target.

CertainBot avatar Jun 10 '21 13:06 CertainBot

@Mateyhv the spool up is a great idea. The setting from nav_launch could be used for the time.

MrD-RC avatar Jun 10 '21 15:06 MrD-RC

This issue / pull request has been automatically marked as stale because it has not had any activity in 60 days. The resources of the INAV team are limited, and so we are asking for your help. This issue / pull request will be closed if no further activity occurs within two weeks.

stale[bot] avatar Jan 09 '22 03:01 stale[bot]

Hmm, hope this issue does not fade out..

CertainBot avatar Jan 09 '22 04:01 CertainBot

Beat me to it @Mateyhv This is definitely an issue that I was hoping would get a PR.

MrD-RC avatar Jan 09 '22 06:01 MrD-RC

Now that https://github.com/iNavFlight/inav/pull/7270 has added isFlightDetected() to navigation.c. Maybe the 2 seconds to re-arm is something that can be revisited?

MrD-RC avatar Jun 18 '22 06:06 MrD-RC

@MrD-RC Maybe the Landing detector check could even be added to the logic conditions for a workaround.

Jetrell avatar Jun 18 '22 09:06 Jetrell

@Jetrell Certainly the isFlying could be. I think the landing detection may have multiple stages to report. But they could be simple ints with explanations in the docs. I was thinking of adding the launch stages to programming. As that could be handy for automatic take off flaps.

MrD-RC avatar Jun 18 '22 13:06 MrD-RC

I just bumped my disarm switch today and lost a model... +1 for this feature to be added urgently.

ennob avatar Aug 14 '22 11:08 ennob

it's nice idea!

k1g0r avatar Jan 23 '23 16:01 k1g0r

Fixed by #9254

MrD-RC avatar Nov 19 '23 19:11 MrD-RC