aboutsummaryrefslogtreecommitdiff
path: root/src/modules/multirotor_pos_control
diff options
context:
space:
mode:
authorAnton Babushkin <anton.babushkin@me.com>2013-06-28 12:58:12 +0400
committerAnton Babushkin <anton.babushkin@me.com>2013-06-28 12:58:12 +0400
commit8e732fc52763a05739e4f13caf0dff84817839cd (patch)
treeec80ef0d60a7026363b72a5db2bb72b7040beee8 /src/modules/multirotor_pos_control
parent7b73df6440987f2fea3dcdce135c27e02d98bda6 (diff)
downloadpx4-firmware-8e732fc52763a05739e4f13caf0dff84817839cd.tar.gz
px4-firmware-8e732fc52763a05739e4f13caf0dff84817839cd.tar.bz2
px4-firmware-8e732fc52763a05739e4f13caf0dff84817839cd.zip
position_estimator_inav default parameters changed, some fixes
Diffstat (limited to 'src/modules/multirotor_pos_control')
-rw-r--r--src/modules/multirotor_pos_control/multirotor_pos_control.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/modules/multirotor_pos_control/multirotor_pos_control.c b/src/modules/multirotor_pos_control/multirotor_pos_control.c
index 508879ae2..3a14d516a 100644
--- a/src/modules/multirotor_pos_control/multirotor_pos_control.c
+++ b/src/modules/multirotor_pos_control/multirotor_pos_control.c
@@ -209,6 +209,8 @@ static int multirotor_pos_control_thread_main(int argc, char *argv[]) {
float pos_y_integral = 0.0f;
const float alt_ctl_dz = 0.2f;
const float pos_ctl_dz = 0.05f;
+ float home_alt = 0.0f;
+ hrt_abstime home_alt_t = 0;
thread_running = true;
@@ -288,6 +290,14 @@ static int multirotor_pos_control_thread_main(int argc, char *argv[]) {
float pos_sp_speed_z = 0.0f;
if (status.flag_control_manual_enabled) {
+ if (local_pos.home_timestamp != home_alt_t) {
+ if (home_alt_t != 0) {
+ /* home alt changed, don't follow large ground level changes in manual flight */
+ local_pos_sp.z -= local_pos.home_alt - home_alt;
+ }
+ home_alt_t = local_pos.home_timestamp;
+ home_alt = local_pos.home_alt;
+ }
/* move altitude setpoint with manual controls */
float alt_sp_ctl = scale_control(manual.throttle - 0.5f, 0.5f, alt_ctl_dz);
if (alt_sp_ctl != 0.0f) {