☰
PX4 VTOL 着陆模式(Land Mode)完全指南:NAV_FORCE_VT 与固定翼/多旋翼着陆行为切换
2026/9/26 15:46:23 网站建设 项目流程
  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

导读

本文围绕 PX4-Autopilot 的 VTOL(垂直起降)飞行器在 Land(着陆)模式下的完整行为展开,说明 VTOL 如何在固定翼(FW)模式与多旋翼(MC)模式之间按需切换着陆形态,并深入讲解核心参数NAV_FORCE_VT的作用机制与源码实现。读完本文,你将掌握 VTOL 着陆模式的触发条件、模式切换时序、全部相关参数及其默认值与取值范围,并能依据实际机型与作业场景正确配置着陆行为。

一、VTOL 着陆模式概述

在 PX4 中,Land(着陆)飞行模式会引导飞行器在模式被激活的位置着陆,着陆后默认在短暂超时后自动解锁(disarm)。对于 VTOL 飞行器,这一模式有一个区别于纯固定翼或纯多旋翼的关键特性:VTOL 会按照当前所处飞行阶段,分别继承固定翼与多旋翼的着陆行为。

原文档(docs/en/flight_modes_vtol/land.md)明确指出:

A VTOL follows the land mode behavior and parameters of Fixed-wing when in FW mode, and of Multicopter when in MC mode.

也就是说:

  • 当 VTOL 处于固定翼模式(FW mode)时,着陆行为与参数完全遵循 固定翼 Land 模式;
  • 当 VTOL 处于多旋翼模式(MC mode)时,着陆行为与参数完全遵循 多旋翼 Land 模式。

同时,默认情况下,处于 FW 模式的 VTOL 会在真正触地前先完成向 MC 的过渡(back transition),再以多旋翼方式完成最终着陆。这正是NAV_FORCE_VT参数的用武之地:它决定 VTOL 是强制以多旋翼形态完成起降,还是允许以固定翼形态直接着陆。

二、NAV_FORCE_VT:VTOL 着陆模式的核心参数

2.1 参数定义与默认值

VTOL 专属的着陆参数只有一个:NAV_FORCE_VT。其官方定义为:

参数描述类型默认值
NAV_FORCE_VT强制 VTOL 以多旋翼形态完成起飞和着陆(Force VTOL to takeoff and land as a multicopter)boolean1(true)

该参数定义于 src/modules/navigator/navigator_params.yaml:

NAV_FORCE_VT: description: short: Force VTOL mode takeoff and land type: boolean default: 1

默认值为1,即默认启用。这意味着:只要参数保持默认,VTOL 无论当前处于何种飞行阶段,起飞与着陆都会被强制引导为多旋翼形态执行——固定翼模式下切到 Land 模式后,飞机会先过渡回悬停(back transition),再按多旋翼规则降落。

2.2 源码中的判定逻辑

NAV_FORCE_VT的实际判定逻辑位于 src/modules/navigator/navigator_main.cpp 的Navigator::force_vtol()方法:

bool Navigator::force_vtol() { return _vstatus.is_vtol && (_vstatus.vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING || _vstatus.in_transition_to_fw) && _param_nav_force_vt.get(); }

从源码结构可以推断出以下行为:

  • force_vtol()只在飞机确实是 VTOL且当前处于固定翼形态或正在向固定翼过渡时才可能返回true;
  • 最终结果由_param_nav_force_vt.get()决定——参数为1时,navigator 会在这些阶段强制走多旋翼路径;
  • 若将NAV_FORCE_VT设为0,则 VTOL 在固定翼形态下将按纯固定翼规则处理相关导航逻辑(包括着陆、GPS 失效兜底等)。

一个旁证是 src/modules/fw_mode_manager/fw_mode_manager_params.yaml 中FW_GPSF_LT(GPS 失效盘旋时间)的参数描述:

Does only apply for fixed-wing vehicles orVTOLs with NAV_FORCE_VT set to 0.

这从侧面印证:NAV_FORCE_VT = 0会让 VTOL 在固定翼形态下表现出与纯固定翼一致的导航行为,而NAV_FORCE_VT = 1(默认)则始终把起降交还给多旋翼通道。

2.3 配置建议

  • 默认场景(大多数 VTOL):保持NAV_FORCE_VT = 1。固定翼形态的 VTOL 无需手动干预,切到 Land 后自动过渡回多旋翼形态,再以垂直方式精准降落在激活点,避免固定翼螺旋下滑着陆对地形平整度与跑道的要求。
  • 特殊场景:若机型设计为固定翼滑跑着陆(例如带起落架的固定翼式 VTOL),可考虑NAV_FORCE_VT = 0,让着陆走固定翼路径。此时务必确认着陆区域地形适合固定翼触地,并参考下文固定翼着陆的警告。

三、VTOL 在 MC 形态下的着陆行为(多旋翼规则)

当 VTOL 以多旋翼形态执行 Land 模式时,行为与 多旋翼 Land 模式 完全一致:

  1. 飞行器以 MPC_LAND_SPEED 指定的速率垂直下降至激活位置;
  2. 触地后默认在 COM_DISARM_LAND 指定的超时后自动解锁;
  3. 多旋翼(或悬停中的 VTOL)拨动摇杆会默认切换至 Position 模式(由MAN_OVERRIDE_SPD控制,故障保护激活状态除外);
  4. 模式要求至少有效的本地位置估计(不要求全局位置):没有有效本地位置时飞行器无法切入该模式,切入后若丢失位置估计则会触发故障保护。

3.1 MC 着陆相关参数

参数默认值说明
MPC_LAND_SPEED0.7 m/s(最小值0.6)着陆下降速率。建议保持较低值,因为地面条件未知
COM_DISARM_LAND短超时(秒)着陆后自动解锁的超时;设为-1则着陆后不解锁
MAN_OVERRIDE_SPD1摇杆超越阈值(归一化摇杆行程/秒)。默认值下约 0.5 s 内拨动半杆即触发;设为-1禁用
MPC_AUTO_NUDGING0自动模式下的摇杆微调位掩码:Bit 0 允许偏航摇杆在着陆中微调航向;Bit 1 额外允许横滚/俯仰摇杆在MPC_LAND_RADIUS内水平移动、油门摇杆修改下降速度。需要MAN_OVERRIDE_SPD = -1

其中MPC_LAND_SPEED在 src/modules/mc_pos_control/multicopter_takeoff_land_params.yaml 中定义:

MPC_LAND_SPEED: description: short: Landing descend rate type: float default: 0.7 unit: m/s min: 0.6 decimal: 1

补充说明:同文件中的MPC_LAND_CRWL(默认0.3 m/s)定义了存在有效测距传感器数据时、低于MPC_LAND_ALT3高度的"爬行"下降速率,可用于细化 VTOL 垂直着陆的最后阶段。

3.2 模式需求(Mode Requirements)

MC 形态的 Land 模式对飞行器状态有以下硬性需求(详见 mode_requirements 说明):

  • mode_req_angular_velocity—— 需要角速度估计;
  • mode_req_attitude—— 需要姿态/位姿估计;
  • mode_req_local_alt—— 需要相对 EKF2 原点('0')的本地高度;
  • mode_req_local_position_relaxed—— 需要相对 EKF2 原点的位置,但接受较低精度;
  • mode_req_prevent_arming——该模式禁止解锁(选中该模式时飞行器无法上锁起飞)。

这些需求由 src/modules/commander/ModeUtil/mode_requirements.cpp 定义的逻辑在 commander 模块中强制执行,因此无需用户自行校验。

四、VTOL 在 FW 形态下的着陆行为(固定翼规则)

若 VTOL 处于固定翼形态且未强制过渡回多旋翼(即NAV_FORCE_VT = 0的情形),Land 模式遵循 固定翼 Land 模式 的规则:

  • 飞行器在激活位置开始螺旋下降(corkscrew)直至触地:围绕当前位置以 NAV_LOITER_RAD 为半径盘旋,同时以恒定下降速率下降;
  • 下降速率由 FW_LND_ANG(航迹角设定值)与 FW_LND_AIRSPD(空速设定值)共同计算得出;
  • 若配置了拉升动作(flare)则在触地前执行,否则持续盘旋下降直到检测到着陆;
  • 固定翼 Land 模式不支持手动微调(nudging)与自动中止(abort)功能;
  • 摇杆输入在该模式下被忽略。

⚠️重要警告:固定翼 Land 模式只应在紧急情况下使用!飞机会无视下方地形是否适合着陆,沿圆形路径下降并触地。只要条件允许,应优先使用 Return 模式 + 预定义的 固定翼任务着陆。

4.1 FW 着陆相关参数

参数说明
NAV_LOITER_RAD整个着陆过程中控制器跟踪的盘旋半径
FW_LND_ANG航迹角设定值
FW_LND_AIRSPD空速设定值
FW_AIRSPD_FLP_SC襟翼完全展开时施加于最小空速的比例因子;当FW_LND_AIRSPD低于FW_AIRSPD_MIN时必须设置

五、Land 模式在 navigator 模块中的实现

Land 模式由 navigator 模块中的Land类执行,其声明与实现位于:

  • src/modules/navigator/land.h
  • src/modules/navigator/land.cpp

Land继承自MissionBlock,并注册到NAVIGATION_STATE_AUTO_LAND状态。其核心逻辑如下:

on_activation()(模式激活时)

  1. 重置位置设定点三元组(triplets);
  2. 将当前任务项设置为 Land 任务项(set_land_item);
  3. 将任务项转换为位置设定点并发布;
  4. 若为多旋翼形态且本地位置有效,则投影停止点(preproject_stop_point)作为水平降落目标。

on_active()(模式运行中)

  1. VTOL 回渡期间动态更新降落点:当is_vtol && in_transition_mode时,基于后续 MC 阶段将采用的 MPC 设置,在 VTOL 前方投影一个航点作为降落目标——这保证了 FW→MC 回渡完成后,飞行器能平稳落到预期位置;
  2. 着陆完成判定:当land_detected上报landed时,将任务结果标记为finished,并切换到空闲任务项,随后调用mode_completed收尾;
  3. 着陆中止:若abort_landing()返回真,则发布VEHICLE_CMD_DO_REPOSITION命令,携带当前位置与MIS_LND_ABRT_ALT高度,使飞行器脱离 Land 模式并在当前位置与高度盘旋。

该实现细节印证了原文档的表述:VTOL 的 Land 模式并非简单的"二选一",而是在 navigator 层面对回渡时序、着陆点投影、着陆检测与中止恢复做了完整的统一处理。

六、参数与模式触发汇总

6.1 如何触发 Land 模式

  • 通过遥控器拨杆切换至 Land 模式;
  • 通过 MAVLink 命令MAV_CMD_NAV_LAND触发(例如地面站点击"降落"按钮)。

6.2 关键参数速查表

参数适用形态默认值作用
NAV_FORCE_VTVTOL 专属1强制 VTOL 以多旋翼形态起降
MPC_LAND_SPEEDMC / VTOL-MC0.7 m/s垂直下降速率
COM_DISARM_LANDMC / VTOL-MC短超时着陆后自动解锁超时(-1禁用)
MAN_OVERRIDE_SPDMC / VTOL-MC1摇杆超越阈值(-1禁用)
MPC_AUTO_NUDGINGMC / VTOL-MC0着陆微调位掩码(需MAN_OVERRIDE_SPD=-1)
NAV_LOITER_RADFW / VTOL-FW—螺旋下降盘旋半径
FW_LND_ANGFW / VTOL-FW—着陆航迹角设定值
FW_LND_AIRSPDFW / VTOL-FW—着陆空速设定值
FW_AIRSPD_FLP_SCFW / VTOL-FW—襟翼展开时的最小空速修正因子

6.3 实操要点

  1. 大多数 VTOL 无需改动任何参数即可获得合理的着陆行为:默认NAV_FORCE_VT = 1保证以垂直方式精准降落;
  2. 若需调整垂直下降速度,修改MPC_LAND_SPEED(建议不低于0.6 m/s,地面条件未知时应保守取值);
  3. 若希望着陆后保持不解锁(如配合外部收放装置),将COM_DISARM_LAND设为-1;
  4. 只有固定翼式滑跑着陆的 VTOL 才应考虑NAV_FORCE_VT = 0,并同时按固定翼规则检查NAV_LOITER_RAD、FW_LND_ANG、FW_LND_AIRSPD与着陆区域条件。

七、延伸阅读

  • Land Mode (Multicopter)
  • Land Mode (Fixed-Wing)
  • 固定翼任务着陆(Mission Landing)与拉升/中止细节
  • 参数参考(Parameter Reference)
  • 模式需求说明(Mode Requirements)
  • 源码参考:src/modules/navigator/land.cpp、src/modules/navigator/navigator_main.cpp、src/modules/navigator/navigator_params.yaml、src/modules/mc_pos_control/multicopter_takeoff_land_params.yaml
  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

相关推荐

上一篇:live2d-widget-models配置教程:3分钟实现网页角色交互效果
下一篇:如何快速部署DetectionLab:5分钟搭建企业网络安全演练环境

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询