PX4-Autopilot main 分支发布说明深度解析:v1.18 之后的关键变更与升级指南
嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载本文围绕 docs/en/releases/main.mdPX4 官方main分支发布说明展开系统梳理 PX4-Autopilot 在 v1.18 beta 之后、面向 v2.0 方向落地的主要变更六旋翼电机故障恢复、双天线 GNSS 航向重构、GNSS 主题/参数全面重命名、安全与故障注入增强等。读完本文你将掌握这些变更的影响范围、参数迁移路径与升级时的具体操作步骤并能结合仓库源码理解底层实现逻辑。文中所有参数定义均可在 src/modules/control_allocator/module.yaml 与 src/modules/commander/commander_params.yaml 中查到权威出处。一、版本背景什么是 main 分支发布说明main分支发布说明记录的是已经合入 PX4main分支、但**尚未进入下一个正式发布版本PX4 v1.18**的变更内容。也就是说这份文档是 PX4 v1.18beta 测试中之后的下一个版本v2.0 或更晚的功能预告与升级警告合集包括Major Changes进入main的显著性功能变更Upgrade Guide升级前必须阅读并处理的破坏性变更参数改名、功能移除、行为变化Other changes按模块分类的常规改进硬件支持、控制、安全、估计、传感器、仿真、通信等。文末带TBD占位的章节Debug Logging、Ethernet、MAVLink、RC、Multi-Rotor、VTOL、Fixed-wing、Rover、ROS 2表示对应模块的变更尚未最终确定后续会持续更新。因此本文适合开发者当作升级路线图来跟踪而非最终版本说明。二、重大变更六旋翼单电机故障恢复Motor Failure Recovery本次发布最核心的新功能是六旋翼hexarotor的单电机故障恢复。其原理是当检测到单个电机故障时控制分配器control allocator将该故障电机从分配矩阵中移除同时针对六旋翼的特殊几何布局额外处理与故障电机几何对侧的电机以恢复因此损失的偏航yaw控制权限。2.1 行为模式CA_FAILURE_MODE通过参数 CA_FAILURE_MODE 选择处理方式在 src/modules/control_allocator/module.yaml 中定义如下取值含义说明0默认Ignore完全禁用该功能任何机架都只按原方式处理1移除故障电机并停止其对侧电机对侧电机从分配中移除并停转2移除故障电机并反转其对侧电机对侧电机保留在分配中输出反向推力模式1与2均适用于六旋翼对六旋翼以外的机架无论取值如何都只会移除故障电机本身行为不变。该功能默认关闭CA_FAILURE_MODE0需要用户按需开启。2.2 反向推力建模CA_REV_THR_FRAC模式2反转对侧电机要求对侧电机的 ESC支持反转reverse-capable ESC并且需要在分配器中建模正桨在反转时只能产生部分推力这一物理事实。这正是新参数 CA_REV_THR_FRAC 的作用它表示可逆电机反转时能产生的正向推力比例该值主要取决于螺旋桨特性。在 src/modules/control_allocator/module.yaml 中其定义为类型float默认值0.4即反转时产生 40% 正向推力取值范围0.1 ~ 1.0配套参数CA_R_REVbitmask用于将对应电机Motor 1~12标记为双向/可逆电机同时要求输出驱动支持双向输出。从源码结构看src/modules/control_allocator/ControlAllocator.cpp故障恢复在控制分配层面完成检测到故障后更新有效电机集合并依据CA_REV_THR_FRAC修正对侧电机反向输出时的推力/力矩模型。另外DroneCAN 上可逆电机的输出现在以有符号的RawCommand值发送负值表示反转这是本次发布的配套硬件协议变更见 src/drivers/dronecan 相关实现。实现来源PX4-Autopilot#28078。三、升级指南升级前必须处理的破坏性变更以下是升级到main未来 v2.0时必须逐条核对的行为变化原文已给出明确迁移路径。3.1 交通避让参数改名COM_ARM_TRAFF → COM_TRAFF_AVOID旧参数COM_ARM_TRAFF已被 COM_TRAFF_AVOID 取代。参数在 src/modules/commander/commander_params.yaml 中的定义如下取值含义0默认Disabled不要求交通避让系统1Warning仅告警ADS-B/FLARM 通过 MAVLink 心跳检测3 秒超时2Error缺失或丢失时触发错误级处理阻止所有模式解锁3Return缺失或丢失时触发返航4Land缺失或丢失时触发降落迁移要点旧的COM_ARM_TRAFF3仅任务模式强制执行会自动迁移为COM_TRAFF_AVOID2而新值2的语义是在所有模式下阻止解锁不再局限于任务模式。因此如果你依赖检测到交通时仍可手动解锁升级后需要手动将COM_TRAFF_AVOID改为1仅告警以恢复旧行为。3.2 PCA9685 参数合并PCA9685_SCHD_HZ 移除PCA9685_SCHD_HZ已移除。现在 PCA9685_PWM_FREQ 同时决定 PCA9685 的 PWM 频率以及向芯片推送输出值的速率。迁移方式若你之前将PCA9685_SCHD_HZ设为非默认值升级后把它设置到PCA9685_PWM_FREQ即可注意限制超过 400 Hz 的频率此前仅在占空比模式下可用不再支持。3.3 飞控固件不再内嵌 CAN 节点固件飞控固件不再携带 CAN 节点DroneCAN 外设的固件。具体来说旧构建px4_fmu-v5_uavcanv0periph及其背后的板级选项CONFIG_BOARD_UAVCAN_PERIPHERALS已被移除。该构建原本在 ROMFS 中携带 CUAV CAN GPS v1 固件使飞控可以直接通过 DroneCAN 更新 GPS 固件迁移方式改用标准px4_fmu-v5_default固件并从发布包中获取cuav_can-gps-v1_default.uavcan.bin通过 SD 卡完成 GPS 固件更新详见 DroneCAN 固件更新。实现来源PX4-Autopilot#28870。3.4 jMAVSim 移除与替代方案jMAVSim 已从项目中完全移除make px4_sitl jmavsim命令不再存在10017_jmavsim_iris机架SYS_AUTOSTART10017已删除环境搭建脚本不再安装 Java 和ant。推荐替代方案使用 SIHSoftware In The Loop 配合 Hawkeye 可视化器命令为make px4_sitl_sih sihsim_quadx或使用 Gazebo 仿真。3.5 六旋翼电机故障处理行为复核结合 2.1 节CA_FAILURE_MODE1的语义已变化——在六旋翼上除了移除故障电机还会停止其对侧电机此前只移除故障电机本身。其他机架不受影响默认值CA_FAILURE_MODE0行为不变。升级前请复核你的故障处理配置是否符合预期详见 电机故障恢复。3.6 双天线 GNSS 航向必须重新配置重要这是一项影响较大的破坏性变更涉及参数移除、新的航向源配置流程与数据来源收窄被移除且不自动迁移的参数包括 DroneCAN GNSS 节点上的同名参数旧参数作用GPS_YAW_OFFSETGNSS 航向偏移SEP_YAW_OFFS基线偏航偏移SEP_PITCH_OFFS基线俯仰偏移EKF2_GPS_YAW_OFF是否使用 GPS 航向新配置流程在飞控上为提供航向的接收机设置 SENS_GNSSn_HDGGNSS 航向才会被使用基线由天线位置参数确定移动基准站使用两个接收机的SENS_GNSSn_OFFX/Y/Z双天线接收机还需第二个天线的SENS_GNSSn_AUXX/Y/Z基线校验报告的基线若与计算基线偏差超过 20%该航向样本会被拒绝。航向数据来源收窄航向现在只从sensor_gnss_relative主题获取u-blox、Unicore UM982、Septentrio、DroneCANRelPosHeading。以下来源不再使用Trimble MB-Two、Femtomes、NMEAHDT、SBG、MicroStrain 的航向DroneCANFix2消息中的航向sensor_gps消息中的heading、heading_offset、heading_accuracy字段这三个字段已被移除。DroneCAN 兼容提示运行旧固件的 DroneCAN 节点仍会自行减去其GPS_YAW_OFFSET请将该节点参数设为0避免双重修正。3.7 GNSS 主题、消息与参数全面重命名影响面最大这是本次升级中波及面最广的变更影响 uORB 主题、MAVLink 消息、ROS 2 接口与参数主题与消息旧新说明sensor_gpssensor_gnss每个接收机一条消息见 SensorGnssvehicle_gps_positionvehicle_gnss嵌套所选接收机样本为receiver字段见 VehicleGnssvehicle_gnss的嵌套结构可在 msg/VehicleGnss.msg 中看到顶层为timestamp与timestamp_samplereceiver内嵌所选接收机的sensor_gnss样本并新增修正后的timestamp_sample与antenna_offset字段访问方式如vehicle_gnss.receiver.latitude。字段重命名对照旧字段新字段latitude_deglatitudelongitude_deglongitudealtitude_msl_maltitude_mslaltitude_ellipsoid_maltitude_ellipsoids_variance_m_sspeed_accuracyc_variance_radcourse_accuracynoise_per_msnoisevel_m_sground_speedvel_n_m_s/vel_e_m_s/vel_d_m_svel_north/vel_east/vel_downcog_radcourseantenna_offset_x/y/z移至vehicle_gnss.antenna_offsetROS 2 应用适配订阅主题从/fmu/out/vehicle_gps_positionpx4_msgs/msg/SensorGps改为/fmu/out/vehicle_gnsspx4_msgs/msg/VehicleGnss。时间戳读取注意只有顶层timestamp与timestamp_sample会被转换为 ROS 时间receiver.timestamp与receiver.timestamp_sample仍为 PX4 启动时钟且timestamp现在是 sensors 模块发布样本的时刻测量时刻应使用timestamp_sample。参数重命名SENS_GPS_MASK、SENS_GPS_TAU、SENS_GPS_PRIME→SENS_GNSS_*SENS_GPSn_ID/OFFX/OFFY/OFFZ/DELAY→SENS_GNSSn_*驱动层GPS_*与EKF2_*参数保持不变已保存参数会自动迁移但加载旧的 QGC 参数文件不会恢复旧名称参数旧参数文件需手动更新仓库内的日志分析脚本同时兼容新旧名称uORB-over-Cyphal 寄存器由uorb.sensor_gps更名为uorb.sensor_gnss对应uavcan.sub.uorb.sensor_gnss.0.id、uavcan.pub.uorb.sensor_gnss.0.id而UCAN1_UORB_GPS与UCAN1_UORB_GPS_P不变。实现来源PX4-Autopilot#24399。四、其他变更按模块逐项解读4.1 任务与导航Mission / Return快速任务返航跳过循环快速任务返航模式RTL_TYPE 2与4沿任务路径返航时现在会跳过DO_JUMP循环指令避免返航路径被循环指令卡住。对应实现在 src/modules/navigator/rtl.cppRTL_TYPE_MISSION_FAST、RTL_TYPE_MISSION_FAST_OR_REVERSE常量见该文件第 59-64 行。新增 RTL_TYPE6电池感知的家/安全点返航若估算的返航飞行时间在剩余电池时间内则直接返航回家home否则返航到最近的集结点rally point若电池剩余时间不可用则回退到最近的安全点home 或 rally。源码中对应常量RTL_TYPE_HOME_OR_SAFE_POINT_DIRECT 6src/modules/navigator/rtl.cpp测试用例见 src/modules/navigator/test/test_RTL.cpp。4.2 硬件支持Hardware SupportDroneCAN ESC 无需再设置UAVCAN_PUB_ARM只要UAVCAN_ENABLE3ESC 输出使能ArmingStatus消息就会自动发布ESC 无需手动配置该参数。PX4-Autopilot#28364详见 DroneCAN ESCs4.3 公共库CommonmacOS 构建与测试单元与功能测试套件现在可以在 macOS 上完整构建、链接并运行make tests同时修复了px4_poll()在 macOS 上的超时行为——现在会等待完整时长而非立即返回GPS 时间戳精度修复混合blendedGPS 时间戳改为以 double 累计、最后一次性舍入替代此前对每个加权项分别截断的做法AlphaFilter 接口变更采样间隔与时间常数参数现在以微秒为单位以秒为单位的 float 重载已被移除。这意味着单位传错的代码将直接编译失败而非运行时出错。仓库外的代码若以秒构造该滤波器需要同步更新PX4-Autopilot#28421实现见 src/lib 下滤波器相关源码。4.4 控制Control增益压缩Gain Compression扩展到多旋翼此前仅固定翼可用的增益压缩现在通过 MC_GC_EN 对多旋翼开放。原理当在扭矩设定点上检测到振荡时速率环增益被动态降低无需手动重新整定振荡停止后增益恢复至 1.0。增益下限由 MC_GC_GAIN_MIN 设定默认0.3范围0.0 ~ 1.0功能默认关闭。参数与实现见 src/lib/rate_control/gain_compression_params.yaml、src/lib/rate_control/gain_compression.cpp并已在多旋翼速率控制模块中接入src/modules/mc_rate_control/MulticopterRateControl.cpp。4.5 安全Safety地理围栏感知返航Geofence Aware Return返航模式新增地理围栏感知能力详见 Return 模式文档PX4-Autopilot#27145、#28001飞行终止可作为备用失效保护在需要降落伞着陆的无驾驶员的飞行器上飞行终止 现在可以作为 Descend下降模式的替代后备失效保护动作以实现更安全的着陆。对应的两个新配置入口电池电量失效保护通过 COM_LOW_BAT_ACT 新增取值4critical 时 Return、emergency 时 Terminate位置丢失失效保护动作新增 COM_POS_FS_ACT0 Descend 模式1 Terminate。两参数的权威定义均见 src/modules/commander/commander_params.yamlCOM_LOW_BAT_ACT第 144-156 行、COM_POS_FS_ACT第 360-371 行。故障注入Failure Injection显著扩展PX4-Autopilot#27572、#27832、#27950现在可作用于真实硬件不再局限于仿真器注入钩子位于共享传感器驱动中命令处理集中到专门的故障注入管理模块可通过位掩码同时使多个传感器实例失效并支持从 RC 开关触发故障电池的注入 WRONG 故障默认行为变更发布错误的电量值而不是停止发布。详见 故障注入文档SYS_FAILURE_EN。六旋翼电机故障恢复同第 2 节同时支持停止模式1与反转模式2对侧电机两种恢复策略。RTL_TYPE6见 4.1 节。4.6 估计EstimationEKF2 双天线 GNSS 航向融合重构PX4-Autopilot#27102EKF2 现在从独立主题vehicle_gnss_heading融合双天线 GNSS 航向按航向自身的速率与测量时间融合而非跟随每个位置样本GNSS 航向融合的门控条件基于航向本身基线检查以及提供航向的接收机在 EKF2_GPS_CHECK 下的欺骗/干扰状态与位置融合一致而非位置检查即使位置与速度融合停止航向融合仍可继续运行GPS_RAW_INT与GPS2_RAW现在报告提供航向的接收机的机体坐标系航向。GNSS 位置丢失原因事件上报飞行中因 GNSS 丢失本地位置估计时commander 现在会以事件形式报告原因——是接收机检查失败还是接收机停止发送数据。地面站与日志会在GNSS data fusion stopped消息之前显示具体原因PX4-Autopilot#28873。4.7 传感器Sensorsu-blox u-center 诊断车辆 GPS 正常运行的同时可启用 u-blox Diagnostics with u-center 进行在线诊断PX4-Autopilot#28280磁力计选择改进运行中禁用当前选中的磁力计将其 CAL_MAGn_PRIO 设为0时会直接切换给下一个磁力计而不再产生传感器失效报告启动时被禁用的磁力计也不会再阻止其后磁力计被选中PX4-Autopilot#28750。4.8 仿真SimulationjMAVSim 移除见 3.4 节替代方案为 SIH Hawkeye 或 GazeboGazebo GNSS 故障注入对齐failure gps off、stuck、wrong命令现在作用于 gz bridge 发布的 NavSat 数据与其他仿真路径行为一致PX4-Autopilot#28398。4.9 uXRCE-DDS / Zenoh / ROS 2SITL 多机自动命名空间前缀统一自动命名空间前缀改为uav_{px4_instance}与UXRCE_DDS_NS_IDX的行为对齐PX4-Autopilot#28338。ROS 2 应用若依赖旧前缀命名需要同步调整。五、升级后的验证与排查建议结合上文变更升级到main后建议按以下顺序自查参数迁移核查用param show或 QGC 检查COM_TRAFF_AVOID、PCA9685_PWM_FREQ、SENS_GNSSn_*系列参数是否已按预期迁移旧 QGC 参数文件中的旧名称参数不会被恢复需要手工更新GNSS 航向验证确认提供航向的接收机已设置SENS_GNSSn_HDG天线偏移参数SENS_GNSSn_OFFX/Y/Z、SENS_GNSSn_AUXX/Y/Z配置正确观察vehicle_gnss中航向是否持续有效电机故障恢复测试在仿真或地面测试中开启CA_FAILURE_MODE结合 故障注入 模拟电机失效验证六旋翼的偏航权限恢复行为仿真链路确认启动命令已从 jMAVSim 迁移到make px4_sitl_sih sihsim_quadx或 Gazebo。完整参数说明可查阅 Parameter Reference该文档由仓库内 Tools/module_config/generate_params.py 从各模块的*.yaml参数定义自动生成本发布说明对应的上一个版本说明见 PX4 v1.18 Release Notes。赞分享嵌入式物联网机器人自动驾驶智能硬件【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址https://gitcode.com/gh_mirrors/px/PX4-Autopilot点击查看免费下载相关推荐Vitess 9.0.0 发布说明深度解析升级指南、Set 语句、OnlineDDL 与 VReplication 关键变更Vitess 9.0.0 发布说明深度解析升级指南、Set 语句、OnlineDDL 与 VReplication 关键变更 导读 Vitess 9.0.0数据库分布式数据库云原生后端数据存储Ceph Pacific 版本深度解析v16.2 系列发布说明、关键变更与升级实战指南Ceph Pacific 版本深度解析v16.2 系列发布说明、关键变更与升级实战指南 Ceph Pacificv16.2 系列是 Ceph 分布式存储的存储分布式文件系统对象存储后端高可用Rails 7.0 发布说明深度解读升级路径与各框架关键行为变更全解析Rails 7.0 发布说明深度解读升级路径与各框架关键行为变更全解析 本篇基于 Rails 官方的 7.0 发布说明 guides/source/7_0_Web框架后端上一篇1.0.0 (2019-12-03)下一篇Maestro指标监控MetricConstants与性能指标采集创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考