PX4-Autopilot Main Release Notes
AlphaThis contains changes to the PX4 main branch that are not included in the next release (PX4 v1.18).
WARNING
PX4 v1.18 is in beta testing. Update these notes with features that are going to be in main (PX4 v2.0 or later) but not the PX4 v1.18 release.
Read Before Upgrading
Please continue reading for upgrade instructions.
Major Changes
- Motor failure recovery for hexarotors. On a detected single motor failure the control allocator removes the failed motor and, on a hexarotor, additionally stops (CA_FAILURE_MODE =
1) or reverses (2) the motor opposite it, recovering the yaw authority that is otherwise lost. Reversing keeps the opposite motor in the allocation and needs a reverse-capable ESC; the reverse thrust the allocator expects from a forward propeller is set with CA_REV_THR_FRAC (default0.4). Disabled by default. (PX4-Autopilot#28078)
Upgrade Guide
COM_ARM_TRAFFhas been replaced byCOM_TRAFF_AVOID. The old value 3 ("enforce for mission modes only") is migrated toCOM_TRAFF_AVOID=2, which blocks arming in all modes, not just mission modes. If you relied on being able to arm manually with traffic detected, setCOM_TRAFF_AVOID=1(warning only) instead.PCA9685_SCHD_HZhas been removed.PCA9685_PWM_FREQnow sets both the PWM frequency of the PCA9685 and the rate at which values are pushed to it; if you hadPCA9685_SCHD_HZset to a non-default value, setPCA9685_PWM_FREQto it after upgrading. Frequencies above 400 Hz (previously only usable in duty-cycle mode) are no longer supported.- Flight controller firmware no longer embeds CAN node firmware. The
px4_fmu-v5_uavcanv0periphbuild, which carried CUAV CAN GPS v1 firmware in its ROMFS so the flight controller could update the GPS over DroneCAN, and theCONFIG_BOARD_UAVCAN_PERIPHERALSboard option behind it have been removed. Use the standardpx4_fmu-v5_defaultfirmware and update the GPS from the SD card withcuav_can-gps-v1_default.uavcan.binfrom the release instead; see DroneCAN Firmware Update. (PX4-Autopilot#28870) - jMAVSim has been removed.
make px4_sitl jmavsimand the10017_jmavsim_irisairframe (SYS_AUTOSTART=10017) no longer exist, and the setup scripts no longer install Java orant. Use SIH with the Hawkeye visualizer instead (make px4_sitl_sih sihsim_quadx), or Gazebo. - Re-check motor failure handling on hexarotors. CA_FAILURE_MODE =
1now also stops the motor opposite the failed one on a hexarotor (previously only the failed motor was removed from the allocation). Other airframes are unaffected, andCA_FAILURE_MODE=0(the default) is unchanged. See Motor Failure Recovery. (PX4-Autopilot#28078) - Dual-antenna GNSS heading must be reconfigured.
GPS_YAW_OFFSET,SEP_YAW_OFFS,SEP_PITCH_OFFSandEKF2_GPS_YAW_OFFare removed, including on DroneCAN GNSS nodes, and are not migrated: GNSS yaw is not used until SENS_GNSSn_HDG is set on the autopilot for the receiver reporting the heading. The baseline comes from the antenna positions (SENS_GNSSn_OFFX/Y/Zof both receivers for a moving base, plusSENS_GNSSn_AUXX/Y/Zfor the second antenna of a dual-antenna receiver), and headings whose reported baseline is more than 20% off it are rejected. See GPS as Yaw/Heading Source. A DroneCAN node running older firmware still subtracts its ownGPS_YAW_OFFSET; set that to 0. Heading is taken only fromsensor_gnss_relative(u-blox, Unicore UM982, Septentrio, DroneCANRelPosHeading): the Trimble MB-Two, Femtomes, NMEAHDT, SBG and MicroStrain headings and the heading in DroneCANFix2are no longer used, and theheading,heading_offsetandheading_accuracyfields ofsensor_gpsare removed. (PX4-Autopilot#27102) - GNSS topics, messages and parameters are renamed. The per-receiver topic
sensor_gpsis nowsensor_gnss(SensorGnss).vehicle_gps_positionis nowvehicle_gnss(VehicleGnss), which nests the selected receiver's sample asreceiver(for examplevehicle_gnss.receiver.latitude) and adds the correctedtimestamp_sampleandantenna_offset. Renamed fields:latitude_deg→latitude,longitude_deg→longitude,altitude_msl_m→altitude_msl,altitude_ellipsoid_m→altitude_ellipsoid,s_variance_m_s→speed_accuracy,c_variance_rad→course_accuracy,noise_per_ms→noise,vel_m_s→ground_speed,vel_n_m_s/vel_e_m_s/vel_d_m_s→vel_north/vel_east/vel_downandcog_rad→course;antenna_offset_x/y/zmoved tovehicle_gnss.antenna_offset. ROS 2 applications must subscribe to/fmu/out/vehicle_gnss(px4_msgs/msg/VehicleGnss) instead of/fmu/out/vehicle_gps_position(px4_msgs/msg/SensorGps). Read the timestamps from the top level ofVehicleGnss: onlytimestampandtimestamp_sampleare converted to ROS time, whilereceiver.timestampandreceiver.timestamp_samplestay on the PX4 boot clock.timestampis now when the sensors module published the sample; usetimestamp_samplefor the measurement time.SENS_GPS_MASK,SENS_GPS_TAU,SENS_GPS_PRIMEandSENS_GPSn_ID/OFFX/OFFY/OFFZ/DELAYare nowSENS_GNSS_*andSENS_GNSSn_*(the driverGPS_*andEKF2_*parameters are unchanged). Saved parameters are migrated automatically, but loading a QGC parameter file with the old names does not restore them. The log analysis scripts in the tree read both the old and the new names. The uORB-over-Cyphal registers are renamed fromuorb.sensor_gpstouorb.sensor_gnss(uavcan.sub.uorb.sensor_gnss.0.id,uavcan.pub.uorb.sensor_gnss.0.id);UCAN1_UORB_GPSandUCAN1_UORB_GPS_Pare unchanged. (PX4-Autopilot#24399)
Other changes
- Fast mission Return modes (RTL_TYPE = 2 and 4) now skip
DO_JUMPcommands (loops) while following the mission path. (PX4-Autopilot#26993: fix(navigator): goToNextPositionItem skip loops when required)
Hardware Support
- DroneCAN ESCs no longer need to set
UAVCAN_PUB_ARMasArmingStatusis published automatically wheneverUAVCAN_ENABLEis3(ESC output enabled). (PX4-Autopilot#28364)
Common
- The unit and functional test suite builds, links and runs on macOS (
make tests), andpx4_poll()timeouts on macOS wait for their full duration instead of returning at once. The blended GPS timestamp is accumulated in double and rounded once instead of truncating each weighted term. (PX4-Autopilot#28516) - The AlphaFilter library takes its sample interval and time constant in microseconds, and the float seconds overloads are removed, so a value in the wrong unit no longer compiles. Out-of-tree code that constructs the filter with seconds needs updating. (PX4-Autopilot#28421)
Control
- Gain compression is now available on multicopters (MC_GC_EN). When an oscillation is detected on the torque setpoint the rate loop gain is dynamically reduced instead of requiring a manual retune, and recovers to 1.0 once the oscillation stops. The lower bound is set with MC_GC_GAIN_MIN (default
0.3). Disabled by default.
Safety
- Geofence Aware Return mode. (PX4-Autopilot#27145: feat(navigator): Geofence Aware RTL, PX4-Autopilot#28001: docs(navigator): [geofence] added some more warnings about limitations).
- Flight termination can now be used instead of a Descent mode as a fallback failsafe mode, allowing safer landing for unpiloted vehicles that carry a parachute. See Battery level failsafe (COM_LOW_BAT_ACT) and Position Loss Failsafe Action (new COM_POS_FS_ACT). (PX4-Autopilot#28064: feat(commander): add terminate options for critical battery and lost position failsafes).
- Failure injection ( SYS_FAILURE_EN) has been significantly extended. (PX4-Autopilot#27572, PX4-Autopilot#27832, PX4-Autopilot#27950)
- Now applied on real hardware, not just simulators (injection hooks live in the shared sensor drivers).
- Command handling is centralized behind a dedicated failure-injection manager module.
- Multiple sensor instances can be failed simultaneously via a bitmask, and failures can be triggered from an RC switch.
- Changed default behaviour of injected WRONG failure for Batteries, to publish a wrong level, and not stop publishing
- Motor failure recovery for hexarotors: on a single motor failure the control allocator removes the failed motor and additionally stops (CA_FAILURE_MODE =
1) or reverses (2) the motor opposite it to recover the lost yaw authority. Mode2requires a reverse-capable ESC and models the reverse thrust of a forward propeller with the new CA_REV_THR_FRAC (default0.4). Reversible motor outputs on DroneCAN are now sent as signedRawCommandvalues (negative is reverse). (PX4-Autopilot#28078) - Added
RTL_TYPE=6for battery-aware home priority return (PX4-Autopilot#26968). Returns to home if the estimated flight time to home is within the remaining battery time; otherwise returns to the closest rally point. Falls back to the closest safe point (home or rally) if battery time remaining is unavailable.
Estimation
- EKF2 fuses dual-antenna GNSS heading from its own topic,
vehicle_gnss_heading, at the heading's rate and measurement time instead of with each position sample. GNSS yaw fusion is gated on the heading itself (its baseline checks, and the spoofing and jamming state of the receiver providing it under EKF2_GPS_CHECK, which stop it like position fusion), not on the position checks, and it keeps running when position and velocity fusion stop.GPS_RAW_INTandGPS2_RAWreport the body-frame heading of the receiver that provides it. (PX4-Autopilot#27102)
Sensors
- Enable u-blox Diagnostics with u-center while the vehicle's GPS runs as usual. (PX4-Autopilot#28280).
Simulation
- jMAVSim has been removed in favour of SIH with the Hawkeye visualizer. See the Upgrade Guide.
- Gazebo: the GNSS failure injection commands (
failure gps off,stuckandwrong) now apply to the NavSat data published by the gz bridge, consistent with the other simulator paths. (PX4-Autopilot#28398)
Debug & Logging
- TBD
Ethernet
- TBD
uXRCE-DDS / Zenoh / ROS 2
- (uXRCE-DDS): SITL multi vehicle automatic namespace prefix is now
uav_{px4_instance}and it is aligned with the behaviour ofUXRCE_DDS_NS_IDX. (PX4-Autopilot#28338)
MAVLink
- TBD
RC
- TBD
Multi-Rotor
- TBD
VTOL
- TBD
Fixed-wing
- TBD
Rover
- TBD
ROS 2
- TBD