This was already done before the refactor and was assumed to not be necessary.
The problem is that these mission items result in a strang looking vertical slow down directly followed
by an acceleration during the landing phase.
* introduced altitude acceptance radius in position setpoint for fixed
wing guidance
- allows navigator to explicitly set the altitude acceptance radius
- needed for staright line landing support
* added ignore_alt_acceptance to position setpoint message to allow guidance
logic to ignore altitude error on waypoint
- can be useful to prevent loitering at a waypoint within a mission landing sequence
* only set altitude acceptance radius to infinity for a waypoint inside a mission landing
for fixed wing vehicles
* navigator: return altitude acceptance radius from triplet if it's valid
* FixedWingPositionControl: check if alt acceptance radius provided in position setpoint
is larger 0
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com>
Co-authored-by: Alvaro Fernandez <alvaro@auterion.com>
It previously didn't catch switches to Descend from a manual mode,
as both modes have navigation_mode_new=nullptr.
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
* FeasibilityChecker: only warn when first waypoint is too far, but still accept mission as valid
* feasiblityChecker: make distance to first waypoint check against home position instead of current position, so it is more constant during a flight
* Apply suggestions from code review
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
* feasibilityCheckerTest: update tests to not fail for first waypoint check
* feasibilityChecker: make comment for 1stwaypointcheck event
* Feasibility check unit test: fix comment
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
---------
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
* Fix: replay the mission cached items only upon reaching resume waypoint
* Refactoring
Split camera mode mission items from gimbal ones so to have a finer control over the relative replays
* Chore: fix formatting
---------
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
Avoid flying into terrain using the distance sensor.
Enable through the parameter NAV_MIN_GND_DIST.
Only active during commanded descents with vz>0 (to prevent climb-aways),
excluding landing and VTOL transitions.
It changes the altitude setpoint in the triplet to maintain the current altitude
and republish the triplet. We also change the mission item altitude used for
acceptance calculations to prevent getting stuck in a loop.
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
* mission: skip a vtol takoff mission item if already in air and a fixed wing
* MissionBase: also skip FW takeoff when already in-air
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
* mission: use setNextMissionItem to skip vtol takeoff when already in air
* mission: Only skip the VTOL takeoff in air for mission and rtl mission
If flying RTL mission reverse it must still include the takeoff point.
---------
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
The previous default of 900m leads to many warnings if left
unchanged, especially if the vehicle is already in-air when
the Mission is started.
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
- warn about full traffic conflict buffer at 1/60hz.
- add conflict expiry for buffer.
- use only events for buffer full warning. mavlink_log_critical no longer needed.
- use icao address for conflict warnings id, stop using uas_id. UTM_GLOBAL_POSITION assumed deprecated.
- stop spamming when buffer is full
- fix warning wording if buffer is full.
- remove UTM_GLOBAL_POSITION
Fixes failing unit test:
* [adsbTest] Reduce conflict timestamps - not enough time has passed in ci
- failed ci output - (passes locally with make tests TESTFILTER=AdsbConflict)
- Timestamp: 6000000000
- Time now: 457720038
- Time since timestamp: 0
- Old Conflict warning expired: 0
- --------------------
- adsb_conflict._traffic_state 0
- ../../src/lib/adsb/AdsbConflictTest.cpp:244: Failure
- Value of: adsb_conflict._traffic_state == TRAFFIC_STATE::REMIND_CONFLICT
- Actual: false
- Expected: true
* Commander: make low remaining flight time configurable and do not clear
- add _ACT param to disable/warning/RTL this feature
- publish rtl flight time estimate also in RTL, and thus fix re-validation
- make failure message clearer, distinguish from battery low
* battery check: add hysteresis for declaring battery_low_remaining_time false again
---------
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
Co-authored-by: KonradRudin <98741601+KonradRudin@users.noreply.github.com>
We need to make sure that when the RTL is triggered, it should not reevaluate it, as when it was valid but evaluated to false on activation, it can't do a RTL.