From a264541861ee876fe4a7d13dad430f69439799a4 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 3 Jun 2021 10:27:48 +0200 Subject: [PATCH] explicitly set param2 to 0 in existing *DO_VTOL_TRANSITION commands. add a guard against NaNs. --- src/modules/commander/Commander.cpp | 2 +- src/modules/navigator/mission_block.cpp | 2 ++ src/modules/vtol_att_control/vtol_att_control_main.cpp | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index 994a6317ce..e27e32c442 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -304,7 +304,7 @@ int Commander::custom_command(int argc, char *argv[]) send_vehicle_command(vehicle_command_s::VEHICLE_CMD_DO_VTOL_TRANSITION, (float)(vehicle_status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING ? vtol_vehicle_status_s::VEHICLE_VTOL_STATE_FW : - vtol_vehicle_status_s::VEHICLE_VTOL_STATE_MC)); + vtol_vehicle_status_s::VEHICLE_VTOL_STATE_MC), 0.0f); return 0; } diff --git a/src/modules/navigator/mission_block.cpp b/src/modules/navigator/mission_block.cpp index 3484105d70..7c768990cc 100644 --- a/src/modules/navigator/mission_block.cpp +++ b/src/modules/navigator/mission_block.cpp @@ -699,6 +699,7 @@ MissionBlock::set_land_item(struct mission_item_s *item, bool at_current_locatio vehicle_command_s vcmd = {}; vcmd.command = NAV_CMD_DO_VTOL_TRANSITION; vcmd.param1 = vtol_vehicle_status_s::VEHICLE_VTOL_STATE_MC; + vcmd.param2 = 0.0f; _navigator->publish_vehicle_cmd(&vcmd); } @@ -748,6 +749,7 @@ MissionBlock::set_vtol_transition_item(struct mission_item_s *item, const uint8_ { item->nav_cmd = NAV_CMD_DO_VTOL_TRANSITION; item->params[0] = (float) new_mode; + item->params[1] = 0.0f; item->yaw = _navigator->get_local_position()->heading; item->autocontinue = true; } diff --git a/src/modules/vtol_att_control/vtol_att_control_main.cpp b/src/modules/vtol_att_control/vtol_att_control_main.cpp index 88978c53e8..a9f3e2cfab 100644 --- a/src/modules/vtol_att_control/vtol_att_control_main.cpp +++ b/src/modules/vtol_att_control/vtol_att_control_main.cpp @@ -160,7 +160,7 @@ void VtolAttitudeControl::vehicle_cmd_poll() } else { _transition_command = int(vehicle_command.param1 + 0.5f); - _immediate_transition = int(vehicle_command.param2 + 0.5f); + _immediate_transition = (PX4_ISFINITE(vehicle_command.param2)) ? int(vehicle_command.param2 + 0.5f) : false; } if (vehicle_command.from_external) {