嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载Land降落是多旋翼飞行器Multicopter最关键的自动飞行模式之一。本文以 PX4-Autopilot 官方文档 docs/en/flight_modes_mc/land.md 为核心骨架结合仓库内src/modules/navigator/land.cpp、src/modules/flight_mode_manager/tasks/Descend/、src/modules/mc_pos_control/与src/modules/commander/等源码实现系统讲解 Land 模式的工作方式、切入与退出条件、下降与落地检测链路、全部可调参数含默认值与取值范围、以及摇杆微调Nudging与手动接管等实战配置。读完本文你将能够根据实际场景精确落点、载重未知、恶劣天气、用户辅助降落正确配置 PX4 多旋翼的自动降落行为。Land 模式概述在模式切入位置着陆Land 是一种全自动飞行模式飞机激活后将在模式切入时所在的位置执行垂直下降并着陆默认在落地检测后自动解锁Disarm。整个过程不需要飞行员干预但它与纯“一键降落”按钮不同——它是一个完整的导航状态NAVIGATION_STATE_AUTO_LAND由导航器Navigator生成降落航点由飞行模式管理器Flight Mode Manager执行下降轨迹。从源码看Land 模式的导航任务由 src/modules/navigator/land.cpp 中的Land类实现。其构造函数将导航状态绑定为NAVIGATION_STATE_AUTO_LANDland.cppon_activation()会重置航点三元组triplet、生成一个 “Land” 类型的当前任务项并转换为位置设定点land.cppon_active()则持续监听land_detected话题一旦检测到已着陆就把任务标记为完成并切换为空闲任务项land.cpp。说明本文聚焦多旋翼含 VTOL 悬停阶段的 Land 模式。固定翼与 VTOL 前向飞行段的降落行为由独立的导航逻辑与航向/前向控制实现可参见 docs/en/flight_modes_fw/land.md 与 docs/en/flight_modes_vtol/land.md。模式的核心特性Land 模式具有以下关键特性理解它们对安全使用至关重要全自动运行无需用户干预即可完成降落。仅需局部位置估计Local Position模式要求至少存在有效的局部位置估计不要求全局位置GPS。因此理论上在无 GPS 的室内等场景只要有有效局部位置也可执行 Land。飞行中切换受限正在飞行的飞行器无法在没有有效局部位置的情况下切入本模式如果在飞行中丢失位置估计会触发失效保护Failsafe。禁止在模式选中时上锁/解锁当该模式被选中时飞行器不能被解锁Arm。对应mode_req_prevent_arming需求详见下文“模式需求”。RC 摇杆可切换模式任何飞行器上都可以用 RC 模式开关切换飞行模式Land 并不排斥 RC 干预。摇杆可退出降落多旋翼或 VTOL 悬停时移动摇杆默认会切换到 Position 模式将控制权交还飞行员由MAN_OVERRIDE_SPD控制PX4 v1.18 引入除非当前失效保护状态禁止切换。触发方式既可通过 MAVLink 命令MAV_CMD_NAV_LAND触发例如地面站一键降落、任务航点中的降落项、失效保护触发也可以显式切换到 Land 模式。例如src/modules/navigator/DetectAndAvoid/detect_and_avoid.cpp中检测与规避系统在冲突等级达到临界时也会通过VEHICLE_CMD_NAV_LAND命令让飞行器降落detect_and_avoid.cpp。模式需求Mode Requirements以下需求必须在解锁时或已解锁状态下切换到本模式时得到满足否则无法进入 Land。这些需求由src/modules/commander/ModeUtil/mode_requirements.cpp在构建时自动生成并写入vehicle_status_s的失效保护标志位由src/modules/commander/HealthAndArmingChecks/中的检查项在解锁/切换时校验。需求项含义校验位置mode_req_angular_velocity需要角速度估计modeCheck.cppmode_req_attitude需要姿态/位姿估计姿态有效性检查mode_req_local_alt需要相对 EKF2 原点‘0’ 位置的局部高度局部高度有效性检查mode_req_local_position_relaxed需要相对 EKF2 原点的位置估计但可接受较低精度这正是 Land 不强制要求 GPS 的原因estimatorCheck.cppmode_req_prevent_arming该模式阻止解锁Common.hpp从 mode_requirements.cpp 的源码可以看到NAVIGATION_STATE_AUTO_LAND同时设置了mode_req_angular_velocity、mode_req_local_position_relaxed和mode_req_prevent_armingmode_requirements.cpp。这些需求的完整定义见 docs/en/flight_modes/mode_requirements.md。技术原理从航点生成到轨迹执行Land 模式的实际飞行行为由两条链路共同完成导航层NavigatorLand任务生成降落位置设定点三元组current/previous/next负责 VTOL 后转换阶段的落点前置投影、落地后任务收尾、以及着陆中止abort landing判断land.cpp。轨迹执行层Flight Mode ManagerFlightTaskAuto家族处理航点跟随其中多旋翼的下降动作由FlightTaskDescend执行FlightTaskDescend.cpp其内部直接读取MPC_LAND_SPEED作为受控下降速度并调用位置控制器的加速度/速度设定点生成逻辑。FlightTaskDescend的下降控制逻辑非常清晰FlightTaskDescend.cpp若存在有效的速度估计则以MPC_LAND_SPEED作为下降速度设定点_velocity_setpoint(2) _param_mpc_land_speed.get()若速度估计无效则退化为恒定加速度 0.3 m/s² 的“坠落式”下降_acceleration_setpoint(2) .3f未启用 Nudging 时水平加速度设定点置零以最小化水平漂移并锁定当前航向FlightTaskDescend.cpp。下降阶段的位置控制参数由src/modules/mc_pos_control/MulticopterPositionControl.hpp统一注册包括MPC_LAND_SPEED、MPC_LAND_CRWL、MPC_LAND_ALT1/2/3、MPC_LAND_RADIUS等MulticopterPositionControl.hpp。落地检测与自动解锁着陆是否完成由独立的Land Detector 模块判定。src/modules/land_detector/MulticopterLandDetector.cpp会读取MPC_LAND_SPEED以及MPC_LAND_CRWL用于判断降落速度相关的着陆条件MulticopterLandDetector.cpp并在参数配置不合理时输出告警日志例如LNDMC_Z_VEL_MAX MPC_LAND_CRWL or MPC_LAND_SPEED见 MulticopterLandDetector.cpp。落地检测结果通过vehicle_land_detected话题发布Land::on_active()收到landed true后立即将任务项置为 idle宣告降落完成land.cpp随后Commander依据COM_DISARM_LAND超时参数执行自动解锁。关键参数详解含默认值与取值范围Land 模式行为全部由下列参数控制。下面表格继承自官方文档并补充了从仓库参数定义文件src/modules/mc_pos_control/multicopter_takeoff_land_params.yaml、src/modules/mc_pos_control/multicopter_nudging_params.yaml、src/modules/commander/commander_params.yaml确认的默认值与取值范围。参数描述默认值取值范围来源MPC_LAND_SPEED降落下降速率。由于着陆点地面条件未知建议保持较低值0.7 m/s0.6 ~ ∞multicopter_takeoff_land_params.yamlMPC_LAND_CRWL低空“爬行”下降速率。仅在有效距离传感器数据且低于MPC_LAND_ALT3时使用0.3 m/s0.1 ~ ∞multicopter_takeoff_land_params.yamlMPC_LAND_ALT1慢速降落第 1 阶段高度低于此高度下降速度被限制在MPC_Z_VEL_MAX_DN或MPC_Z_V_AUTO_DN与MPC_LAND_SPEED之间。须高于MPC_LAND_ALT210.0 m0 ~ 122 mmulticopter_takeoff_land_params.yamlMPC_LAND_ALT2慢速降落第 2 阶段高度低于此高度下降速度被限制为MPC_LAND_SPEED。须低于MPC_LAND_ALT15.0 m0 ~ 122 mmulticopter_takeoff_land_params.yamlMPC_LAND_ALT3慢速降落第 3 阶段高度若有有效距离传感器如激光/超声波测距数据低于此高度时下降速度被限制为MPC_LAND_CRWL1.0 m0 ~ 122 mmulticopter_takeoff_land_params.yamlCOM_DISARM_LAND落地后自动解锁的超时时间秒。设为 -1 则落地后不自动解锁2.0 s任意0/负值禁用自动解锁commander_params.yamlMAN_OVERRIDE_SPD摇杆接管速度阈值归一化摇杆行程/秒。多旋翼或 VTOL 悬停摇杆移动超过该速度时切回 Position 模式位置不可用时切 Altitude 模式将控制权交还飞行员。默认值 1 意味着约 0.5 s 内移动半杆即触发值越小越灵敏静止摇杆速度为零不会触发设为 -1 禁用1任意-1 禁用官方文档PX4 v1.18 起MPC_AUTO_NUDGING自动模式摇杆微调位掩码。Bit 0Yaw nudging降落期间 yaw 摇杆可调整机头朝向Bit 1Land nudging俯仰/横滚摇杆可在MPC_LAND_RADIUS范围内水平移动飞行器、油门摇杆可修正下降速度、yaw 摇杆旋转航向。要求MAN_OVERRIDE_SPD -1禁用摇杆接管0位掩码bit 0 / bit 1multicopter_nudging_params.yamlMPC_LAND_RADIUS用户辅助降落半径米。启用 Land nudgingMPC_AUTO_NUDGINGbit 1后定义相对原始落点的最大允许水平位移半径内只允许不越界的输入半径外只允许将其拉回半径内的输入。设为 -1 表示无限半径-1.0 m-1 ~ ∞multicopter_nudging_params.yaml所有MPC_*参数的完整定义与说明均可在 docs/en/advanced_config/parameter_reference.md 中检索。多阶段慢速降落MPC_LAND_ALT1/2/3 的作用从参数定义可以看出PX4 的自动降落并非全程恒定速度而是按高度分阶段减速高于MPC_LAND_ALT1默认 10 m以自动模式下的最大下降速度MPC_Z_V_AUTO_DN飞行MPC_LAND_ALT1与MPC_LAND_ALT2默认 5 m之间下降速度被限制在MPC_Z_VEL_MAX_DN或MPC_Z_V_AUTO_DN与MPC_LAND_SPEED之间开始减速MPC_LAND_ALT2以下下降速度被限制为MPC_LAND_SPEED默认 0.7 m/s进入受控降落若存在有效距离传感器数据且低于MPC_LAND_ALT3默认 1 m进一步限制为MPC_LAND_CRWL默认 0.3 m/s的“爬行”速率实现柔和的触地。这样的设计既保证了高空段的下落效率又在地面条件未知时以低速完成最后的触地避免砸地或弹跳。实战配置调整降落行为以下配置可直接在 QGroundControl 的“参数”界面或通过param set命令执行运行时建议在解锁前完成。1. 调整下降速度与落地姿态# 设置受控下降速度为 0.5 m/s更柔和适合草地、沙地等软地面 param set MPC_LAND_SPEED 0.5 # 低空爬行速度有测距传感器时触地前的最终速度 param set MPC_LAND_CRWL 0.2 # 调整多阶段减速高度 param set MPC_LAND_ALT1 8.0 param set MPC_LAND_ALT2 4.0 param set MPC_LAND_ALT3 0.8注意MPC_LAND_SPEED下限为 0.6 m/sMPC_LAND_CRWL下限为 0.1 m/s若你的目标值低于下限需要先确认所用固件版本是否开放了更低的值否则参数会被钳制。2. 控制落地后的自动解锁# 落地后 2 秒自动解锁默认行为 param set COM_DISARM_LAND 2.0 # 落地后不自动解锁例如需要降落即保持上锁以立即执行后续动作 param set COM_DISARM_LAND -1根据 commander_params.yaml 的定义正数表示检测到着陆后等待的超时秒数零或负值表示禁用由着陆检测触发的自动解锁。3. 摇杆接管退出 Land 返回人工控制MAN_OVERRIDE_SPDPX4 v1.18 引入定义了摇杆速度阈值超过该速度时飞行器从 Land 切换回 Position 模式位置不可用时为 Altitude 模式。其计算基于“归一化摇杆行程每秒的变化量”——静止的摇杆速度为 0不会误触发默认值 1 表示约 0.5 秒内移动半杆行程即可触发。# 提高灵敏度更小的摇杆移动即可退出降落例如阈值 0.5 param set MAN_OVERRIDE_SPD 0.5 # 完全禁用摇杆接管降落期间摇杆不会导致模式切换 param set MAN_OVERRIDE_SPD -1注意处于失效保护Failsafe激活状态时即使摇杆移动也不会切换模式这是安全设计。4. 摇杆微调 Nudging在自动降落中辅助定位如果希望在自动降落过程中保留自动轨迹的同时允许飞行员微调落点例如有风环境下的精确落点可以启用 Nudging# 1) 必须首先禁用摇杆接管否则 Nudging 不生效 param set MAN_OVERRIDE_SPD -1 # 2) 启用 Yaw 微调bit 0 Land 微调bit 1即位掩码值 3 param set MPC_AUTO_NUDGING 3 # 3) 限制水平微调范围例如 2 米内-1 表示无限 param set MPC_LAND_RADIUS 2.0启用 Land nudgingbit 1后的行为来自 multicopter_nudging_params.yaml 与 FlightTaskDescend.cpp 的实现俯仰/横滚摇杆水平移动飞行器受MPC_LAND_RADIUS约束FlightTaskDescend内通过StickTiltXY::generateAccelerationSetpoints生成水平加速度设定点油门摇杆修正下降速度——摇杆全上为 0停止下降、居中为MPC_LAND_SPEED、全下为2 × MPC_LAND_SPEEDYaw 摇杆旋转机头朝向。5. 通过 MAVLink 触发降落Land 模式可随时通过 MAVLink 命令触发地面站“Land”按钮、任务中的降落航点、失效保护逻辑等均使用该命令命令MAV_CMD_NAV_LANDMAVLink common 消息集效果将飞行器切换到 Land 模式并在当前/指定位置降落。例如src/modules/navigator/DetectAndAvoid/detect_and_avoid.cpp中当检测与规避判定需要避让时会发送VEHICLE_CMD_NAV_LAND让飞行器降落detect_and_avoid.cpp。边界情况与安全注意事项位置估计丢失飞行中若失去位置估计Land 模式会触发失效保护飞行器不会继续盲目降落。降落中止Abort LandingLand::on_active()会检查_navigator-abort_landing()若满足中止条件如MIS_LND_ABRT_ALT相关逻辑会发送VEHICLE_CMD_DO_REPOSITION命令退出降落模式在当前位置与高度进入盘旋Loiter并按MIS_LND_ABRT_ALT高度爬升land.cpp。落地检测参数联动Land Detector 会校验MPC_LAND_CRWL/MPC_LAND_SPEED与自身垂直速度阈值的一致性若配置不当会输出LNDMC_Z_VEL_MAX MPC_LAND_CRWL or MPC_LAND_SPEED告警并自动修正MulticopterLandDetector.cpp。Nudging 与接管互斥MPC_AUTO_NUDGING与MAN_OVERRIDE_SPD互斥必须将后者设为 -1 才能启用 Nudging。延伸阅读Land Mode (FW) 固定翼降落模式Land Mode (VTOL) VTOL 降落模式Mode Requirements 模式需求说明Parameter Reference 参数总览相关源码src/modules/navigator/land.cpp、src/modules/flight_mode_manager/tasks/Descend/FlightTaskDescend.cpp、src/modules/mc_pos_control/MulticopterPositionControl.cpp、src/modules/commander/ModeUtil/mode_requirements.cpp赞分享嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载相关推荐PX4-Autopilot 多旋翼 Follow-Me 跟随模式完全指南原理、配置与实战调参PX4 Autopilot 多旋翼 Follow Me 跟随模式完全指南原理、配置与实战调参 本指南围绕 PX4 Autopilot 的多旋翼含 VTOL嵌入式物联网机器人自动驾驶智能硬件PX4 多旋翼 Hold悬停模式完全指南原理、模式要求与参数配置PX4 多旋翼 Hold悬停模式完全指南原理、模式要求与参数配置 Hold 模式是 PX4 多旋翼Multicopter与 VTOL 垂直飞行阶段中最嵌入式物联网机器人自动驾驶智能硬件PX4 多旋翼 Position 模式定位模式深度指南操控原理、核心参数与 mc_pos_control 源码实现PX4 多旋翼 Position 模式定位模式深度指南操控原理、核心参数与 mc_pos_control 源码实现 Position 模式是 PX4 多旋嵌入式物联网机器人自动驾驶智能硬件上一篇Feast RedshiftSource 数据源完全指南表引用、SQL 查询、类型映射与配置实践下一篇GetQzonehistory5分钟永久备份QQ空间青春记忆的终极方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考