aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnton Babushkin <anton.babushkin@me.com>2013-10-05 22:59:32 +0200
committerAnton Babushkin <anton.babushkin@me.com>2013-10-05 22:59:32 +0200
commitdefb37c43bd3f2d4de35def68a092731ed77d0d5 (patch)
tree243e1c65d16fb2c88139832809397bdf7b04d402 /src
parent921662ebe09ca737c7becf37a7fe063a680e344a (diff)
downloadpx4-firmware-defb37c43bd3f2d4de35def68a092731ed77d0d5.tar.gz
px4-firmware-defb37c43bd3f2d4de35def68a092731ed77d0d5.tar.bz2
px4-firmware-defb37c43bd3f2d4de35def68a092731ed77d0d5.zip
commander: require only valid velocity for EASY mode, allows flying with FLOW and no GPS
Diffstat (limited to 'src')
-rw-r--r--src/modules/commander/commander.cpp1
-rw-r--r--src/modules/commander/state_machine_helper.cpp5
-rw-r--r--src/modules/uORB/topics/vehicle_status.h1
3 files changed, 4 insertions, 3 deletions
diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp
index 01b7b84d0..a9f6a2351 100644
--- a/src/modules/commander/commander.cpp
+++ b/src/modules/commander/commander.cpp
@@ -853,6 +853,7 @@ int commander_thread_main(int argc, char *argv[])
/* update condition_local_position_valid and condition_local_altitude_valid */
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);
+ check_valid(local_position.timestamp, POSITION_TIMEOUT, local_position.v_xy_valid, &(status.condition_local_velocity_valid), &status_changed);
if (status.condition_local_altitude_valid) {
if (status.condition_landed != local_position.landed) {
diff --git a/src/modules/commander/state_machine_helper.cpp b/src/modules/commander/state_machine_helper.cpp
index 8ce31550f..58f7238ff 100644
--- a/src/modules/commander/state_machine_helper.cpp
+++ b/src/modules/commander/state_machine_helper.cpp
@@ -238,9 +238,8 @@ main_state_transition(struct vehicle_status_s *current_state, main_state_t new_m
case MAIN_STATE_EASY:
- /* need at minimum local position estimate */
- if (current_state->condition_local_position_valid ||
- current_state->condition_global_position_valid) {
+ /* need at minimum local velocity estimate */
+ if (current_state->condition_local_velocity_valid) {
ret = TRANSITION_CHANGED;
}
diff --git a/src/modules/uORB/topics/vehicle_status.h b/src/modules/uORB/topics/vehicle_status.h
index 1c184d3a7..6bc63cbae 100644
--- a/src/modules/uORB/topics/vehicle_status.h
+++ b/src/modules/uORB/topics/vehicle_status.h
@@ -201,6 +201,7 @@ struct vehicle_status_s
bool condition_home_position_valid; /**< indicates a valid home position (a valid home position is not always a valid launch) */
bool condition_local_position_valid;
bool condition_local_altitude_valid;
+ bool condition_local_velocity_valid;
bool condition_airspeed_valid; /**< set to true by the commander app if there is a valid airspeed measurement available */
bool condition_landed; /**< true if vehicle is landed, always true if disarmed */