Browse Source

commander: require only valid velocity for EASY mode, allows flying with FLOW and no GPS

sbg
Anton Babushkin 12 years ago
parent
commit
defb37c43b
  1. 1
      src/modules/commander/commander.cpp
  2. 5
      src/modules/commander/state_machine_helper.cpp
  3. 1
      src/modules/uORB/topics/vehicle_status.h

1
src/modules/commander/commander.cpp

@ -853,6 +853,7 @@ int commander_thread_main(int argc, char *argv[]) @@ -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) {

5
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 @@ -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;
}

1
src/modules/uORB/topics/vehicle_status.h

@ -201,6 +201,7 @@ struct vehicle_status_s @@ -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 */

Loading…
Cancel
Save