vtol_type: timeout transition earlier if we use airspeed and airspeed has
not increased above blend airspeed after openloop front transition time.
Signed-off-by: RomanBapst <bapstroman@gmail.com>
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com>
- enables airspeed fusion to begin during transition already
- airspeed fusion is started based on airspeed being above defined threshold
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* Navigator: set alt acceptance radius to infinity
for land waypoint after backtransition -> avoid
vehicle with depleted battery from not reaching the alt
setpoint and getting stuck
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* split methods to control backtransition depening on availablity of position
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* fixed sign error and replace hardcoded number with constant
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* make changes such that controller holds initial heading during transition
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* use reference instead of copy
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* added comment
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* flash reduction
Signed-off-by: RomanBapst <bapstroman@gmail.com>
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* 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>
* added support for resetting wind states to external observation
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* moved wind related functions into separate file
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* added VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* correctly compute variances
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* ekf2: implement wind reset
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* only allow VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE during wind dead-reckoning
and increase horizontal velocity variance to allow velocity states to move
towards solution that is aligned with the newly set wind
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* only reset wind on ground
* still use wind reset using airspeed when it wasn't initialized
* exclude func for rover, change reset interface
* handle wind reset in drag-fusion
* replace state reset with variance reset in sideslip/drag fusion
* remove resetWind function
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com>
Co-authored-by: Marco Hauswirth <marco.hauswirth@auterion.com>
* lib: add FilteredDerivative class
* AirspeedValidator: add first principle check
- filters throttle, pitch and airspeed rate, and triggers
if the airspeed rate is negative even though the vehicle
is pitching down and giving high throttle.
Check has to fail for duration defined by ASPD_FP_T_WINDOW
to trigger an airspeed failure.
* AirspeedValidator: define constants for first principle check
* FilteredDerivative: set initialised to false if sample interval is invalid
* airspeed_selector: improved comment
* increase IAS derivative filter time constant from 4 to 5
* use legacy parameter handling for FW_PSP_OFF
* handle FW_THR_MAX as well
* ROMFS/airframes: exclude some airframes for v6x and v4pro to save flash on them
---------
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
Signed-off-by: RomanBapst <bapstroman@gmail.com>
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
* AirspeedValidator: remove additional one second of hysteresis for triggering
innovation checks
- this check already uses an integrator and so adding more delay just makes
log analysis more difficult and does not really add any value
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* removed unnecessary conditions
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* AirspeedValidator: only disable innov checks if ASPD_FS_INTEG is negative
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
* get rid of unnecessary check on innovation threshold parameter
Signed-off-by: RomanBapst <bapstroman@gmail.com>
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com>
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
* refactor driver to dynamically check registers and do reset if register does not match desired value
* have seen various times where shunt calibration was reset in air
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* avoid waypoint following during backtransition
- if vehicle overshoots transition, make controller track the prev/current
waypoint line, this avoids large banking maneuvers that delay the transition further
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* navigator: use SETPOINT_TYPE_LAND as setpoint type for VTOL_LAND waypoints
such that fixed wing position controller can distinguish from other types
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* FixedWingPositionControl: split vtol backtransition logic into separate method
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* review changes
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* prevent loiter when approaching vtol backtransition and invalidate previous waypoint during mission landing
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* removed unused parameter
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* small renaming of transition mode
Signed-off-by: RomanBapst <bapstroman@gmail.com>
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* created a Performance Model for fixed wing vehicle
- added compensation for maximum climbrate, minimum sinkrate, minimum airspeed and trim airspeed based on weight ratio and air density
- added atmosphere lib to standard atmosphere calculations
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com>
Co-authored-by: Thomas Stastny <thomas.stastny@auterion.com>
mavsdk-test: added a vtol mission without a landing at the end (used for reversed RTL)
math_helpers: added function to compute local position from a raw mission item
Signed-off-by: RomanBapst <bapstroman@gmail.com>
* refactored uncommanded descend quadchute
- use fixed altitude error threshold
- compute error relative to higest altitude the vehicle has achieved
since it has flown below the altitude reference (setpoint)
* disabled altitude loss quadchute by default
* altitude loss quadchute: added protection against invalid local z
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com>
- synthetic airspeed will only be declared valid as soon as the wind variance
has dropped below a parameterized threshold. This is useful for vehicles without
an airspeed sensor which rely on synthetic airspeed but only once the vehicle
has turned sufficiently for the wind estimates to be reliable.
Signed-off-by: RomanBapst <bapstroman@gmail.com>
- array length of data was increased without changing the data type of
the variable holding the length
Signed-off-by: RomanBapst <bapstroman@gmail.com>
- trim throttle is handled entirely by the position controller
- navigator should use speed setpoints
- added flag gliding_enabled in position setpoint to stills support gliding
Signed-off-by: RomanBapst <bapstroman@gmail.com>
- allow compensation based on vehicle weight (parameterized)
- use density for calculating trim throttle compensation instead of pressure
- removed parameter FW_THR_ALT_SCL
Signed-off-by: RomanBapst <bapstroman@gmail.com>
- this allows landing gear to retract automatically when doing a takeoff
and the vehicle is considered high enough
Signed-off-by: RomanBapst <bapstroman@gmail.com>