FlightTaskAuto: set state to None if previous and current setpoint are equal #22445
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Solved Problem
If the previous and current setpoint are set to the same, the logic in
FlightTaskAuto::_getCurrentState()
sets the state to offtrack, which then though doesn't get handled correctly as we don't have a track to follow in the first place.Solution
Set state to None in that case.
Changelog Entry
For release notes:
Alternatives
It would also be nice to simply the whole (currently very convoluted) logic in
FlightTaskAuto
andPositionSmoother
. Likely the desired behavior would be that on triggering Land, the vehicle breaks and then descends vertically where it came to reset, instead of going back to the point where the land was triggered as it does currently.Test coverage
SITL tests.
Some prints from the state where the vehicle is drifting away in land mode: