aboutsummaryrefslogtreecommitdiff
path: root/src/modules/position_estimator_inav/position_estimator_inav_main.c
diff options
context:
space:
mode:
authorAntonio Sanniravong <antonio.sanniravong@polymtl.ca>2014-06-24 07:47:16 -0400
committerAntonio Sanniravong <antonio.sanniravong@polymtl.ca>2014-06-24 07:47:16 -0400
commit179bace35aaa32a23ebd7a9cb99d54eae53690f5 (patch)
tree0cedb2a4469a2a6099f30ce2811452b65830f1f6 /src/modules/position_estimator_inav/position_estimator_inav_main.c
parent68442e31ac6970be91592282c9b70ebc76fa142d (diff)
downloadpx4-firmware-179bace35aaa32a23ebd7a9cb99d54eae53690f5.tar.gz
px4-firmware-179bace35aaa32a23ebd7a9cb99d54eae53690f5.tar.bz2
px4-firmware-179bace35aaa32a23ebd7a9cb99d54eae53690f5.zip
Resets XY velocities when we can't estimate them
Diffstat (limited to 'src/modules/position_estimator_inav/position_estimator_inav_main.c')
-rw-r--r--src/modules/position_estimator_inav/position_estimator_inav_main.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/modules/position_estimator_inav/position_estimator_inav_main.c b/src/modules/position_estimator_inav/position_estimator_inav_main.c
index f908d7a3b..5f132453b 100644
--- a/src/modules/position_estimator_inav/position_estimator_inav_main.c
+++ b/src/modules/position_estimator_inav/position_estimator_inav_main.c
@@ -916,6 +916,10 @@ int position_estimator_inav_thread_main(int argc, char *argv[])
memcpy(x_est_prev, x_est, sizeof(x_est));
memcpy(y_est_prev, y_est, sizeof(y_est));
}
+ } else {
+ /* gradually reset xy velocity estimates */
+ inertial_filter_correct(-x_est[1], dt, x_est, 1, params.w_xy_reset_v);
+ inertial_filter_correct(-y_est[1], dt, y_est, 1, params.w_xy_reset_v);
}
/* detect land */
@@ -931,6 +935,9 @@ int position_estimator_inav_thread_main(int argc, char *argv[])
landed = false;
landed_time = 0;
}
+ /* reset xy velocity estimates when landed */
+ x_est[1] = 0.0f;
+ y_est[1] = 0.0f;
} else {
if (alt_disp2 < land_disp2 && thrust < params.land_thr) {