Skip to content

Commit

Permalink
Sub: request final yaw reset after diving 0.5m
Browse files Browse the repository at this point in the history
  • Loading branch information
clydemcqueen committed Jun 24, 2024
1 parent 5ab2aaf commit ca42df2
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
6 changes: 6 additions & 0 deletions libraries/AP_NavEKF3/AP_NavEKF3_MagFusion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,15 @@ void NavEKF3_core::controlMagYawReset()
bool finalResetRequest = false;
bool interimResetRequest = false;
if (flightResetAllowed && !assume_zero_sideslip()) {
#if APM_BUILD_TYPE(APM_BUILD_ArduSub)
// for sub, we'd like to be far enough away from metal structures like docks and vessels
// diving 0.5m is reasonable for both open water and pools
finalResetRequest = (stateStruct.position.z - posDownAtTakeoff) > EKF3_MAG_FINAL_RESET_ALT_SUB;
#else
// check that we have reached a height where ground magnetic interference effects are insignificant
// and can perform a final reset of the yaw and field states
finalResetRequest = (stateStruct.position.z - posDownAtTakeoff) < -EKF3_MAG_FINAL_RESET_ALT;
#endif

// check for increasing height
bool hgtIncreasing = (posDownAtLastMagReset-stateStruct.position.z) > 0.5f;
Expand Down
1 change: 1 addition & 0 deletions libraries/AP_NavEKF3/AP_NavEKF3_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@

// mag fusion final reset altitude (using NED frame so altitude is negative)
#define EKF3_MAG_FINAL_RESET_ALT 2.5f
#define EKF3_MAG_FINAL_RESET_ALT_SUB 0.5f

// learning rate for mag biases when using GPS yaw
#define EK3_GPS_MAG_LEARN_RATE 0.005f
Expand Down

0 comments on commit ca42df2

Please sign in to comment.