-
Notifications
You must be signed in to change notification settings - Fork 13.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Navigator: Failsafe: Add descend mode as a failsafe. #23839
Conversation
I think #23580 already fixes your issue. There I changed the state machine logic such that "Land" failsafe action is always triggered, even if the mode requirements for "Land" are not met. It then instantly falls-back to Descend. |
Unlike the bug you fixed where you couldn't enter land mode, we actually enter but want the Descent behavior instead. There are two other problems we encounter:
|
Descent mode is intended to be a fall-back mode only, not intended to be a mode that a user can actively switch into. With this PR you would change that, so let's make sure that we really need it before rushing it in.
That definitely sounds like a bug. I think I was able to reproduce it by triggering RC loss failsafe to Land with gazebo classic iris_opt_flow. Let's focus on fixing that. Could you look into it?
But unstable local position estimation poses a big safety hazard not only in the failsafe modes but also in normal modes such as Position and Hold, no? Shouldn't we focus on improving the rejection on bad position estimates? If we have a reliable way of detecting bad position/velocity estimates we can leave the failsafe actions at Land, and only fall back to Descend in emergencies. |
I will try to reproduce it in simulation. I agree an unstable local position is a very bad problem that has to be fixed, but it is sadly a fact we have to work with during the development for vision systems.
Those are the failsafe and not an actively switched to task. In any case where we work on the localization system, this is way safer than the Land mode. |
@sfuhrer It is reproducible in simulation. I do not have Gazebo classic, but managed it with Gazebo with minor fixes. (the gazebo models default parameters are not yet valid) https://review.px4.io/plot_app?log=af6f8332-e2ee-4dd1-91cb-f5cd1ba02099 Reproduce with
|
The land mode supposes we have a GPS causing issues when flying with a local position (such as mocap or vision) This adds the alternative to use the descend mode.
025e45e
to
2fad6ba
Compare
We don't like adding features to mainline PX4 that are only in extreme corner cases. Plus as I mentioned above, "Descend" is not intended to be a flight mode that the user can actively switch into, it's only meant to go to this mode as a fall-back if "Land" is not available.
But during development you certainly have also manual control capabilities no? Or what do you do when you test an auto mode and the Navigation gets unstable? You switch to a manual mode no? |
The current way has been to use the manual mode. Yet, people working on the computer vision part are not pilots. As this is flying indoor, there is a very small margin of error to recover the drone. We will keep this local for our fork for now. |
The land mode supposes we have a GPS causing issues when flying with a local position (such as mocap or vision)
This adds the alternative to use the descend mode.
Solved Problem
When working on local position systems such as a vision localization, the land mode doesn't fit the need when the localization is failing as we want a way to land safely. The only alternative is terminate.
Furthermore, the current Land mode supposes the use of GPS which is not present using vision/flow/mocap, making the drone try to land at (0,0) with a heading of 0°, which is not the expectation.Fixes #23773Fixes #21524Fixed by #23845
Solution
Changelog Entry
For release notes:
Testing
Tested in simulation
Alternatives
Crashlanding with terminate