Browse Source

navigator explicitly invalidate position setpoint

sbg
Daniel Agar 9 years ago committed by Lorenz Meier
parent
commit
7c0a567eaa
  1. 8
      src/modules/navigator/mission.cpp
  2. 17
      src/modules/navigator/navigator_main.cpp

8
src/modules/navigator/mission.cpp

@ -1127,8 +1127,7 @@ Mission::read_mission_item(bool onboard, int offset, struct mission_item_s *miss
return false; return false;
} }
report_do_jump_mission_changed(*mission_index_ptr, report_do_jump_mission_changed(*mission_index_ptr, mission_item_tmp.do_jump_repeat_count);
mission_item_tmp.do_jump_repeat_count);
} }
/* set new mission item index and repeat /* set new mission item index and repeat
@ -1174,6 +1173,7 @@ Mission::save_offboard_mission_state()
if (mission_state.current_seq != _current_offboard_mission_index) { if (mission_state.current_seq != _current_offboard_mission_index) {
if (dm_write(DM_KEY_MISSION_STATE, 0, DM_PERSIST_POWER_ON_RESET, &mission_state, if (dm_write(DM_KEY_MISSION_STATE, 0, DM_PERSIST_POWER_ON_RESET, &mission_state,
sizeof(mission_s)) != sizeof(mission_s)) { sizeof(mission_s)) != sizeof(mission_s)) {
warnx("ERROR: can't save mission state"); warnx("ERROR: can't save mission state");
mavlink_log_critical(_navigator->get_mavlink_log_pub(), "ERROR: can't save mission state"); mavlink_log_critical(_navigator->get_mavlink_log_pub(), "ERROR: can't save mission state");
} }
@ -1192,6 +1192,7 @@ Mission::save_offboard_mission_state()
/* write modified state only if changed */ /* write modified state only if changed */
if (dm_write(DM_KEY_MISSION_STATE, 0, DM_PERSIST_POWER_ON_RESET, &mission_state, if (dm_write(DM_KEY_MISSION_STATE, 0, DM_PERSIST_POWER_ON_RESET, &mission_state,
sizeof(mission_s)) != sizeof(mission_s)) { sizeof(mission_s)) != sizeof(mission_s)) {
warnx("ERROR: can't save mission state"); warnx("ERROR: can't save mission state");
mavlink_log_critical(_navigator->get_mavlink_log_pub(), "ERROR: can't save mission state"); mavlink_log_critical(_navigator->get_mavlink_log_pub(), "ERROR: can't save mission state");
} }
@ -1291,8 +1292,7 @@ Mission::reset_offboard_mission(struct mission_s &mission)
if (item.nav_cmd == NAV_CMD_DO_JUMP) { if (item.nav_cmd == NAV_CMD_DO_JUMP) {
item.do_jump_current_count = 0; item.do_jump_current_count = 0;
if (dm_write(dm_current, index, DM_PERSIST_POWER_ON_RESET, if (dm_write(dm_current, index, DM_PERSIST_POWER_ON_RESET, &item, len) != len) {
&item, len) != len) {
PX4_WARN("could not save mission item during reset"); PX4_WARN("could not save mission item during reset");
break; break;
} }

17
src/modules/navigator/navigator_main.cpp

@ -530,15 +530,6 @@ Navigator::task_main()
/* Do stuff according to navigation state set by commander */ /* Do stuff according to navigation state set by commander */
switch (_vstatus.nav_state) { switch (_vstatus.nav_state) {
case vehicle_status_s::NAVIGATION_STATE_MANUAL:
case vehicle_status_s::NAVIGATION_STATE_ACRO:
case vehicle_status_s::NAVIGATION_STATE_ALTCTL:
case vehicle_status_s::NAVIGATION_STATE_POSCTL:
case vehicle_status_s::NAVIGATION_STATE_TERMINATION:
case vehicle_status_s::NAVIGATION_STATE_OFFBOARD:
_navigation_mode = nullptr;
_can_loiter_at_sp = false;
break;
case vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION: case vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION:
_pos_sp_triplet_published_invalid_once = false; _pos_sp_triplet_published_invalid_once = false;
_navigation_mode = &_mission; _navigation_mode = &_mission;
@ -601,7 +592,15 @@ Navigator::task_main()
_pos_sp_triplet_published_invalid_once = false; _pos_sp_triplet_published_invalid_once = false;
_navigation_mode = &_follow_target; _navigation_mode = &_follow_target;
break; break;
case vehicle_status_s::NAVIGATION_STATE_MANUAL:
case vehicle_status_s::NAVIGATION_STATE_ACRO:
case vehicle_status_s::NAVIGATION_STATE_ALTCTL:
case vehicle_status_s::NAVIGATION_STATE_POSCTL:
case vehicle_status_s::NAVIGATION_STATE_TERMINATION:
case vehicle_status_s::NAVIGATION_STATE_OFFBOARD:
case vehicle_status_s::NAVIGATION_STATE_STAB:
default: default:
_pos_sp_triplet_published_invalid_once = false;
_navigation_mode = nullptr; _navigation_mode = nullptr;
_can_loiter_at_sp = false; _can_loiter_at_sp = false;
break; break;

Loading…
Cancel
Save