FW vtol landing always forced (#4939)

This commit is contained in:
Daniel Agar
2016-06-30 07:55:47 -04:00
committed by Lorenz Meier
parent 9649050c2e
commit 07fa814597
2 changed files with 7 additions and 6 deletions
+3 -2
View File
@@ -442,8 +442,9 @@ Mission::set_mission_items()
if (item_contains_position(&_mission_item)) { if (item_contains_position(&_mission_item)) {
/* force vtol land */ /* force vtol land */
if(_mission_item.nav_cmd == NAV_CMD_LAND && _param_force_vtol.get() if (_mission_item.nav_cmd == NAV_CMD_LAND && _navigator->get_vstatus()->is_vtol
&& !_navigator->get_vstatus()->is_rotary_wing){ && _param_force_vtol.get() && !_navigator->get_vstatus()->is_rotary_wing) {
_mission_item.nav_cmd = NAV_CMD_VTOL_LAND; _mission_item.nav_cmd = NAV_CMD_VTOL_LAND;
} }
+4 -4
View File
@@ -344,7 +344,7 @@ MissionBlock::mission_item_to_position_setpoint(const struct mission_item_s *ite
{ {
/* set the correct setpoint for vtol transition */ /* set the correct setpoint for vtol transition */
if(item->nav_cmd == NAV_CMD_DO_VTOL_TRANSITION && PX4_ISFINITE(item->yaw) if (item->nav_cmd == NAV_CMD_DO_VTOL_TRANSITION && PX4_ISFINITE(item->yaw)
&& item->params[0] >= vtol_vehicle_status_s::VEHICLE_VTOL_STATE_FW - 0.5f) { && item->params[0] >= vtol_vehicle_status_s::VEHICLE_VTOL_STATE_FW - 0.5f) {
sp->type = position_setpoint_s::SETPOINT_TYPE_POSITION; sp->type = position_setpoint_s::SETPOINT_TYPE_POSITION;
waypoint_from_heading_and_distance(_navigator->get_global_position()->lat, waypoint_from_heading_and_distance(_navigator->get_global_position()->lat,
@@ -389,7 +389,7 @@ MissionBlock::mission_item_to_position_setpoint(const struct mission_item_s *ite
case NAV_CMD_LAND: case NAV_CMD_LAND:
case NAV_CMD_VTOL_LAND: case NAV_CMD_VTOL_LAND:
sp->type = position_setpoint_s::SETPOINT_TYPE_LAND; sp->type = position_setpoint_s::SETPOINT_TYPE_LAND;
if(_navigator->get_vstatus()->is_vtol && _param_vtol_wv_land.get()){ if (_navigator->get_vstatus()->is_vtol && _param_vtol_wv_land.get()) {
sp->disable_mc_yaw_control = true; sp->disable_mc_yaw_control = true;
} }
break; break;
@@ -398,7 +398,7 @@ MissionBlock::mission_item_to_position_setpoint(const struct mission_item_s *ite
case NAV_CMD_LOITER_TURN_COUNT: case NAV_CMD_LOITER_TURN_COUNT:
case NAV_CMD_LOITER_UNLIMITED: case NAV_CMD_LOITER_UNLIMITED:
sp->type = position_setpoint_s::SETPOINT_TYPE_LOITER; sp->type = position_setpoint_s::SETPOINT_TYPE_LOITER;
if(_navigator->get_vstatus()->is_vtol && _param_vtol_wv_loiter.get()){ if (_navigator->get_vstatus()->is_vtol && _param_vtol_wv_loiter.get()) {
sp->disable_mc_yaw_control = true; sp->disable_mc_yaw_control = true;
} }
break; break;
@@ -529,7 +529,7 @@ MissionBlock::set_land_item(struct mission_item_s *item, bool at_current_locatio
{ {
/* VTOL transition to RW before landing */ /* VTOL transition to RW before landing */
if(_navigator->get_vstatus()->is_vtol && !_navigator->get_vstatus()->is_rotary_wing){ if (_navigator->get_vstatus()->is_vtol && !_navigator->get_vstatus()->is_rotary_wing) {
struct vehicle_command_s cmd = {}; struct vehicle_command_s cmd = {};
cmd.command = NAV_CMD_DO_VTOL_TRANSITION; cmd.command = NAV_CMD_DO_VTOL_TRANSITION;
cmd.param1 = vtol_vehicle_status_s::VEHICLE_VTOL_STATE_MC; cmd.param1 = vtol_vehicle_status_s::VEHICLE_VTOL_STATE_MC;