Skip to content

PX4-Autopilot Main Release Notes ​

Alpha

This 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 (default 0.4). Disabled by default. (PX4-Autopilot#28078)

Upgrade Guide ​

  • COM_ARM_TRAFF has been replaced by COM_TRAFF_AVOID. The old value 3 ("enforce for mission modes only") is migrated to COM_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, set COM_TRAFF_AVOID=1 (warning only) instead.
  • PCA9685_SCHD_HZ has been removed. PCA9685_PWM_FREQ now sets both the PWM frequency of the PCA9685 and the rate at which values are pushed to it; if you had PCA9685_SCHD_HZ set to a non-default value, set PCA9685_PWM_FREQ to 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_uavcanv0periph build, which carried CUAV CAN GPS v1 firmware in its ROMFS so the flight controller could update the GPS over DroneCAN, and the CONFIG_BOARD_UAVCAN_PERIPHERALS board option behind it have been removed. Use the standard px4_fmu-v5_default firmware and update the GPS from the SD card with cuav_can-gps-v1_default.uavcan.bin from the release instead; see DroneCAN Firmware Update. (PX4-Autopilot#28870)
  • jMAVSim has been removed. make px4_sitl jmavsim and the 10017_jmavsim_iris airframe (SYS_AUTOSTART=10017) no longer exist, and the setup scripts no longer install Java or ant. 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 = 1 now 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, and CA_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_OFFS and EKF2_GPS_YAW_OFF are 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. Until then, a warning names what is missing: SENS_GNSSn_HDG or the antenna positions. The baseline comes from the antenna positions (SENS_GNSSn_OFFX/Y/Z of both receivers for a moving base, plus SENS_GNSSn_AUXX/Y/Z for 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 own GPS_YAW_OFFSET; set that to 0. Heading is taken only from sensor_gnss_relative (u-blox, Unicore UM982, Septentrio, DroneCAN RelPosHeading): the Trimble MB-Two, Femtomes, NMEA HDT, SBG and MicroStrain headings and the heading in DroneCAN Fix2 are no longer used, and the heading, heading_offset and heading_accuracy fields of sensor_gps are removed. (PX4-Autopilot#27102)
  • GNSS topics, messages and parameters are renamed. The per-receiver topic sensor_gps is now sensor_gnss (SensorGnss). vehicle_gps_position is now vehicle_gnss (VehicleGnss), which nests the selected receiver's sample as receiver (for example vehicle_gnss.receiver.latitude) and adds the corrected timestamp_sample and antenna_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_down and cog_rad → course; antenna_offset_x/y/z moved to vehicle_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 of VehicleGnss: only timestamp and timestamp_sample are converted to ROS time, while receiver.timestamp and receiver.timestamp_sample stay on the PX4 boot clock. timestamp is now when the sensors module published the sample; use timestamp_sample for the measurement time. SENS_GPS_MASK, SENS_GPS_TAU, SENS_GPS_PRIME and SENS_GPSn_ID/OFFX/OFFY/OFFZ/DELAY are now SENS_GNSS_* and SENS_GNSSn_* (the driver GPS_* and EKF2_* 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 from uorb.sensor_gps to uorb.sensor_gnss (uavcan.sub.uorb.sensor_gnss.0.id, uavcan.pub.uorb.sensor_gnss.0.id); UCAN1_UORB_GPS and UCAN1_UORB_GPS_P are unchanged. (PX4-Autopilot#24399)
  • DO_JUMP can only loop back. A mission is now rejected if a DO_JUMP targets itself or a later mission item, even if its repeat count is 0. Missions stored on the vehicle with such jumps must be edited and uploaded again.

Other changes ​

Hardware Support ​

Common ​

  • The unit and functional test suite builds, links and runs on macOS (make tests), and px4_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.

安全 ​

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 GNSS_CHECK, which stop it like position fusion), not on the position checks, and it keeps running when position and velocity fusion stop. GPS_RAW_INT and GPS2_RAW report the body-frame heading of the receiver that provides it. (PX4-Autopilot#27102)
  • When the local position estimate is lost in flight because of GNSS, commander now reports the reason as an event: either the receiver checks that failed, or that the receiver stopped sending data. The ground station and the log show the cause ahead of the "GNSS data fusion stopped" message. (PX4-Autopilot#28873)
  • EKF2 now caps the GNSS height observation noise at EKF2_NOAID_NOISE only when no other height source is fused. With a barometer or another height source, a GNSS height with a poor reported vertical accuracy is no longer fused as more accurate than the receiver reports. (PX4-Autopilot#29058)

传感器 ​

仿真 ​

  • 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, stuck and wrong) 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 of UXRCE_DDS_NS_IDX. (PX4-Autopilot#28338)
  • TBD

RC ​

  • TBD

Multi-Rotor ​

  • TBD

垂直起降 ​

  • TBD

Fixed-wing ​

  • TBD

Rover ​

  • TBD

ROS 2 ​

  • TBD