aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilya <ilya@airdog.com>2014-11-26 14:24:10 +0200
committerilya <ilya@airdog.com>2014-11-26 14:24:33 +0200
commitb4123ec053224daa9038a51e1ef6e7790087997f (patch)
tree58df93f78a3f69d5a9d792b7620b3d3c90d1b459
parentda95642af04b5809a58e96445d042baf16cabd72 (diff)
downloadpx4-firmware-b4123ec053224daa9038a51e1ef6e7790087997f.tar.gz
px4-firmware-b4123ec053224daa9038a51e1ef6e7790087997f.tar.bz2
px4-firmware-b4123ec053224daa9038a51e1ef6e7790087997f.zip
RTL precision fixed
-rw-r--r--src/modules/navigator/navigator_mode.cpp14
-rw-r--r--src/modules/navigator/navigator_mode.h2
-rw-r--r--src/modules/navigator/rtl.cpp2
3 files changed, 11 insertions, 7 deletions
diff --git a/src/modules/navigator/navigator_mode.cpp b/src/modules/navigator/navigator_mode.cpp
index 25ea02a73..ee7cd1b18 100644
--- a/src/modules/navigator/navigator_mode.cpp
+++ b/src/modules/navigator/navigator_mode.cpp
@@ -315,7 +315,7 @@ NavigatorMode::check_current_pos_sp_reached()
void
-NavigatorMode::land()
+NavigatorMode::land(uint8_t reset_setpoint)
{
pos_sp_triplet = _navigator->get_position_setpoint_triplet();
global_pos = _navigator->get_global_position();
@@ -324,10 +324,14 @@ NavigatorMode::land()
pos_sp_triplet->current.valid = true;
pos_sp_triplet->next.valid = false;
- pos_sp_triplet->current.lat = global_pos->lat;
- pos_sp_triplet->current.lon = global_pos->lon;
- pos_sp_triplet->current.alt = global_pos->alt;
- pos_sp_triplet->current.yaw = NAN;
+ if (reset_setpoint == 1) {
+
+ pos_sp_triplet->current.lat = global_pos->lat;
+ pos_sp_triplet->current.lon = global_pos->lon;
+ pos_sp_triplet->current.alt = global_pos->alt;
+ pos_sp_triplet->current.yaw = NAN;
+ }
+
pos_sp_triplet->current.type = SETPOINT_TYPE_LAND;
_navigator->set_position_setpoint_triplet_updated();
diff --git a/src/modules/navigator/navigator_mode.h b/src/modules/navigator/navigator_mode.h
index 0e84a6881..b90bd35f8 100644
--- a/src/modules/navigator/navigator_mode.h
+++ b/src/modules/navigator/navigator_mode.h
@@ -103,7 +103,7 @@ public:
void updateParamValues();
void updateParamHandles();
- void land();
+ void land(uint8_t reset_setpoint = 1);
void takeoff();
void disarm();
void resetModeArguments(main_state_t main_state);
diff --git a/src/modules/navigator/rtl.cpp b/src/modules/navigator/rtl.cpp
index 7719719cd..ccf58c352 100644
--- a/src/modules/navigator/rtl.cpp
+++ b/src/modules/navigator/rtl.cpp
@@ -207,7 +207,7 @@ RTL::set_rtl_setpoint()
break;
}
case RTL_STATE_LAND: {
- land();
+ land(0); //do not reset setpoint, let it be at home position
break;
}
case RTL_STATE_LANDED: {