- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
导读
本文围绕 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) | boolean | 1(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 模式 完全一致:
- 飞行器以 MPC_LAND_SPEED 指定的速率垂直下降至激活位置;
- 触地后默认在 COM_DISARM_LAND 指定的超时后自动解锁;
- 多旋翼(或悬停中的 VTOL)拨动摇杆会默认切换至 Position 模式(由
MAN_OVERRIDE_SPD控制,故障保护激活状态除外); - 模式要求至少有效的本地位置估计(不要求全局位置):没有有效本地位置时飞行器无法切入该模式,切入后若丢失位置估计则会触发故障保护。
3.1 MC 着陆相关参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| MPC_LAND_SPEED | 0.7 m/s(最小值0.6) | 着陆下降速率。建议保持较低值,因为地面条件未知 |
| COM_DISARM_LAND | 短超时(秒) | 着陆后自动解锁的超时;设为-1则着陆后不解锁 |
| MAN_OVERRIDE_SPD | 1 | 摇杆超越阈值(归一化摇杆行程/秒)。默认值下约 0.5 s 内拨动半杆即触发;设为-1禁用 |
| MPC_AUTO_NUDGING | 0 | 自动模式下的摇杆微调位掩码: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()(模式激活时)
- 重置位置设定点三元组(triplets);
- 将当前任务项设置为 Land 任务项(
set_land_item); - 将任务项转换为位置设定点并发布;
- 若为多旋翼形态且本地位置有效,则投影停止点(
preproject_stop_point)作为水平降落目标。
on_active()(模式运行中)
- VTOL 回渡期间动态更新降落点:当
is_vtol && in_transition_mode时,基于后续 MC 阶段将采用的 MPC 设置,在 VTOL 前方投影一个航点作为降落目标——这保证了 FW→MC 回渡完成后,飞行器能平稳落到预期位置; - 着陆完成判定:当
land_detected上报landed时,将任务结果标记为finished,并切换到空闲任务项,随后调用mode_completed收尾; - 着陆中止:若
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_VT | VTOL 专属 | 1 | 强制 VTOL 以多旋翼形态起降 |
MPC_LAND_SPEED | MC / VTOL-MC | 0.7 m/s | 垂直下降速率 |
COM_DISARM_LAND | MC / VTOL-MC | 短超时 | 着陆后自动解锁超时(-1禁用) |
MAN_OVERRIDE_SPD | MC / VTOL-MC | 1 | 摇杆超越阈值(-1禁用) |
MPC_AUTO_NUDGING | MC / VTOL-MC | 0 | 着陆微调位掩码(需MAN_OVERRIDE_SPD=-1) |
NAV_LOITER_RAD | FW / VTOL-FW | — | 螺旋下降盘旋半径 |
FW_LND_ANG | FW / VTOL-FW | — | 着陆航迹角设定值 |
FW_LND_AIRSPD | FW / VTOL-FW | — | 着陆空速设定值 |
FW_AIRSPD_FLP_SC | FW / VTOL-FW | — | 襟翼展开时的最小空速修正因子 |
6.3 实操要点
- 大多数 VTOL 无需改动任何参数即可获得合理的着陆行为:默认
NAV_FORCE_VT = 1保证以垂直方式精准降落; - 若需调整垂直下降速度,修改
MPC_LAND_SPEED(建议不低于0.6 m/s,地面条件未知时应保守取值); - 若希望着陆后保持不解锁(如配合外部收放装置),将
COM_DISARM_LAND设为-1; - 只有固定翼式滑跑着陆的 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
相关推荐
PX4 着陆检测器(Land Detector)配置指南:多旋翼、固定翼与 VTOL 的着陆状态机与参数调优
PX4 着陆检测器(Land Detector)配置指南:多旋翼、固定翼与 VTOL 的着陆状态机与参数调优 着陆检测器(Land Detector)是 PX4
嵌入式物联网机器人自动驾驶智能硬件固定翼无人机着陆控制:PX4-Autopilot精准着陆算法
固定翼无人机着陆控制:PX4 Autopilot精准着陆算法 PX4 Autopilot是一款功能强大的开源无人机飞控软件,其中固定翼无人机的精准着陆算法是其核
嵌入式物联网机器人自动驾驶智能硬件DiceDB 开发环境搭建完全指南:从源码构建引擎、配置管理与测试体系
DiceDB 开发环境搭建完全指南:从源码构建引擎、配置管理与测试体系 本篇技术指南围绕 DiceDB 的《Development Setup for Engi
嵌入式物联网机器人自动驾驶智能硬件
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考