mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-31 18:47:21 +08:00
FW vtol landing always forced (#4939)
This commit is contained in:
committed by
Lorenz Meier
parent
9649050c2e
commit
07fa814597
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user