aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2014-02-01 13:54:39 +0100
committerThomas Gubler <thomasgubler@gmail.com>2014-02-01 13:54:39 +0100
commit48f777d071652e382f930a4554ed809a60b7b0c5 (patch)
tree545c83dcb7affa279e4903fd9139438fcf351467
parentc2911cbecf06b18d581fd3e5407a1f525bd63d4b (diff)
downloadpx4-firmware-48f777d071652e382f930a4554ed809a60b7b0c5.tar.gz
px4-firmware-48f777d071652e382f930a4554ed809a60b7b0c5.tar.bz2
px4-firmware-48f777d071652e382f930a4554ed809a60b7b0c5.zip
commander sets vstatus.condition_landed = false for fw systems (until we have a landing detector): solves multiple issues with the state machine in the navigator app
-rw-r--r--src/modules/commander/commander.cpp8
-rw-r--r--src/modules/navigator/navigator_main.cpp9
2 files changed, 9 insertions, 8 deletions
diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp
index e9da69232..aca3f6256 100644
--- a/src/modules/commander/commander.cpp
+++ b/src/modules/commander/commander.cpp
@@ -926,10 +926,12 @@ int commander_thread_main(int argc, char *argv[])
check_valid(local_position.timestamp, POSITION_TIMEOUT, local_position.xy_valid, &(status.condition_local_position_valid), &status_changed);
check_valid(local_position.timestamp, POSITION_TIMEOUT, local_position.z_valid, &(status.condition_local_altitude_valid), &status_changed);
+ static bool published_condition_landed_fw = false;
if (status.is_rotary_wing && status.condition_local_altitude_valid) {
if (status.condition_landed != local_position.landed) {
status.condition_landed = local_position.landed;
status_changed = true;
+ published_condition_landed_fw = false; //make sure condition_landed is published again if the system type changes
if (status.condition_landed) {
mavlink_log_critical(mavlink_fd, "#audio: LANDED");
@@ -938,6 +940,12 @@ int commander_thread_main(int argc, char *argv[])
mavlink_log_critical(mavlink_fd, "#audio: IN AIR");
}
}
+ } else {
+ if (!published_condition_landed_fw) {
+ status.condition_landed = false; // Fixedwing does not have a landing detector currently
+ published_condition_landed_fw = true;
+ status_changed = true;
+ }
}
/* update battery status */
diff --git a/src/modules/navigator/navigator_main.cpp b/src/modules/navigator/navigator_main.cpp
index 114776327..3ef2009c7 100644
--- a/src/modules/navigator/navigator_main.cpp
+++ b/src/modules/navigator/navigator_main.cpp
@@ -1443,14 +1443,7 @@ Navigator::check_mission_item_reached()
}
if (_mission_item.nav_cmd == NAV_CMD_LAND) {
- if (_vstatus.is_rotary_wing) {
- return _vstatus.condition_landed;
-
- } else {
- /* For fw there is currently no landing detector:
- * make sure control is not stopped when overshooting the landing waypoint */
- return false;
- }
+ return _vstatus.condition_landed;
}
/* XXX TODO count turns */