Commit Graph

49858 Commits

Author SHA1 Message Date
PX4 Build Bot
b102916009 docs(i18n): PX4 guide translations (Crowdin) - ko (#27309)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-20 11:01:56 +10:00
PX4 Build Bot
8abbb7cc1c docs(i18n): PX4 guide translations (Crowdin) - uk (#27310)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-20 11:01:40 +10:00
PX4 Build Bot
96a18c320e docs(i18n): PX4 guide translations (Crowdin) - zh-CN (#27311)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-05-20 11:01:30 +10:00
PX4BuildBot
8836bd6d3f docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-19 22:56:14 +00:00
pmjnt
bbb7fdc2d2 docs: clarify compass priority is set automatically (#27393)
Fixes Algora bounty: https://github.com/PX4/PX4-Autopilot/issues/19970

This PR was AI-assisted (Claude Code) and reviewed by a human
before submission.

Co-authored-by: pcminh <pham.cao.minh@talentnet.vn>
2026-05-19 16:48:26 -06:00
PX4BuildBot
9598f9f04b docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-19 18:24:57 +00:00
Alexis Guijarro
c59f208cc7 feat(boards): add support for 3DR Control N1 flight controller (#27395)
* fix(srgbled_dma): stm32_dmasetup now works with H7 boards

* feat(drivers/ak09940a): add AKM AK09940A magnetometer driver

* feat(boards/3dr/ctrl-n1)!: add 3DR Control-N1 flight controller

* fix(boards/3dr/ctrl-n1): macro replacement list is now enclosed in parentheses

* fix(boards/3dr/ctrl-n1): applying copyright changes

* fix(boards/3dr/ctrl-n1): removing serial console
2026-05-19 13:13:54 -05:00
PX4BuildBot
7a9642fe75 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-19 15:35:34 +00:00
alexcekay
a9862ce3e1 fix(driver): use correct device id for sht3x 2026-05-19 17:24:11 +02:00
PX4BuildBot
e2eef1e102 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-19 12:53:52 +00:00
Claudio Chies
228be72244 fix(build): enable gz sim 10 LTS(jetty) (#27391) 2026-05-19 14:46:58 +02:00
PX4BuildBot
e6b6e10f09 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-19 06:55:52 +00:00
Dimitris
d0439ebef8 fix(simulation): correct apparent wind sign and fixed-wing pitot model in SIH (#27376)
* fix(simulation): correct apparent wind sign and fixed-wing pitot model in SIH

* fix(simulation): simplify pitot model to always use body-x airspeed

---------

Co-authored-by: 0xDI <0xDI@users.noreply.github.com>
2026-05-19 08:48:36 +02:00
PX4BuildBot
9ca5cf388f docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 22:19:03 +00:00
Dimitris
edd44e21d6 fix(mavlink): check protocol timeout before GETLIST retry (#27377)
Co-authored-by: 0xDI <0xDI@users.noreply.github.com>
2026-05-19 10:11:39 +12:00
Dimitris
3cd7c3694a fix(build): add cubeorangeplus to px4io_update (#27375)
Co-authored-by: 0xDI <0xDI@users.noreply.github.com>
2026-05-19 10:03:00 +12:00
Jacob Dahl
0e573ec8d6 feat(afbrs50): add SENS_AFBR_ROT orientation parameter (#27385)
Add SENS_AFBR_ROT as the single source of truth for the AFBR-S50
mounting orientation and drop the -r CLI flag.

The -r flag was already non-functional: the getopt string declared
it without a trailing ':', so the case body called atoi(nullptr).
Removing it is harmless and avoids ambiguity between "user did not
pass -r" and "user explicitly passed -r 25".

The driver now reads orientation from SENS_AFBR_ROT in the
constructor. distance_sensor_s::ROTATION_* is a discontinuous enum
(0-7, 24, 25), and the param schema can't express that natively, so
the driver validates at start and falls back to ROTATION_DOWNWARD_FACING
on out-of-set values.
2026-05-18 15:56:28 -06:00
PX4BuildBot
cce1f8644d docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 21:45:51 +00:00
Himanshu
ccedd9d87e fix(drivers/distance_sensor/vl53l1x): map rangestatus to quality (#27308)
* fix(drivers/distance_sensor/vl53l1x): added median filtering and hysteresis based quality

* fix(drivers/distance_sensor/vl53l1x): revert back to 100/0 quality
2026-05-18 15:38:17 -06:00
Jacob Dahl
2d321addec feat(boards/ark): whitelist generic airframes on ARK FMU boards (#27384)
Vendor-specific airframes (Holybro, UVify, ATL, COEX, Bitcraze,
ThunderFly, Applied Aeronautics) are not relevant on the ARK FMU
boards and only consume flash. Add an rc.board_airframes whitelist
to ark_fmu-v6x and ark_fmu-v6s that keeps only the generic
multirotor, fixed-wing, VTOL, and rover frame types.

Flash savings (default variant):
  ark_fmu-v6x:  1965708 -> 1957772 B  (-7936 B,  free 372 -> 8308 B)
  ark_fmu-v6s:  1960212 -> 1945748 B  (-14464 B, free 8108 -> 22572 B)

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2026-05-18 15:06:04 -06:00
PX4BuildBot
99c3b60566 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 20:02:48 +00:00
Eurus
68ba1e487a fix(navigator): check geofence dataman update failures (#27353)
* navigator: check geofence dataman update failures

* navigator: fix geofence import state handling

- Move the import success log after the dataman state write succeeds
- Store the active fence dataman id in the stats entry
- Add error logs before geofence import failure exits
2026-05-18 13:55:41 -06:00
PX4BuildBot
727e0cf5be docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 16:16:05 +00:00
Marco Hauswirth
5c7cc9b88e fix(commander): Only require a heading reference when a global origin is set (#27371) 2026-05-18 09:51:55 -06:00
PX4BuildBot
562bdda896 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 15:48:30 +00:00
Alexander Lerach
fffdcc136f fix: uavcan RawAirData static handling (#27320)
Co-authored-by: Ramon Roche <mrpollo@gmail.com>
2026-05-18 09:40:00 -06:00
Peter van der Perk
f16a2487ac fix(rcS): Use CONFIG_BOARD_ROOT_PATH as root path. (#27378)
Instead of hardcoded /fs/microsd use the BOARD_ROOT_PATH Kconfig
variable
2026-05-18 09:33:45 -06:00
PX4BuildBot
acf3ac6c96 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 14:28:15 +00:00
Phil-Engljaehringer
aa7c66e0a7 feat(uavcan): flash firmware onto CAN nodes from SD card (#27043)
Place firmware .bin files at the SD card root or staging directory
(/fs/microsd/ufw_staging/); on boot the UAVCAN server migrates them
to /fs/microsd/ufw/ and updates FW.db, then flashes any connected
node whose firmware version mismatches.

- Add firmware migration from SD root and staging dir into /fs/microsd/ufw/
- Maintain FW.db flat-file database mapping board IDs to original filenames
- Use cache-aligned DMA-safe read/write buffers (required on STM32H7)
- Add Tools/auterion/remote_update_fmu.sh for SSH-based FMU+canio updates
2026-05-18 16:19:25 +02:00
Balduin
11fa1dae1e chore(mavlink): update submodule to include extended ACTUATOR_TEST_GROUP
Merged in https://github.com/mavlink/mavlink/pull/2476
2026-05-18 16:14:31 +02:00
Balduin
7ad8406b96 feat(commander): add actuator_group_test command to test actuators
- control surfaces default to +1, thrust to +/-0.1 if no argument given
   or parsing fails
2026-05-18 16:14:31 +02:00
Balduin
310da96175 feat(control_alloctor): Add actuator group preflight check
The current preflight check works by sending individual actuator
commands over mavlink. This can only be done sequentially, so the
surfaces do not move in a coordinated way, instilling little confidence.

To alleviate, this adds a control surface preflight check which causes
the allocator to command torque in the given direction, so the control
surfaces move as they would in flight.

Triggered by `{MAV,VEHICLE}_CMD_ACTUATOR_GROUP_TEST`. Only runs when
pre-armed (control surfaces, tilts) or armed (thrust). Test runs for 0.5
seconds -- for longer duration, send repeatedly from the GS.

Check is rejected in flight and cancelled when nav_state changes.
2026-05-18 16:14:31 +02:00
Balduin
84a287cd43 feat(msg): add VEHICLE_CMD_ACTUATOR_GROUP_TEST for actuator group testing
matching
 - https://github.com/mavlink/mavlink/pull/2224
 - https://github.com/mavlink/mavlink/pull/2476
2026-05-18 16:14:31 +02:00
Balduin
da2b23e57e feat(control_allocator): allow overriding tiltrotor collective tilt
- Expose overrideCollectiveTilt in ActuatorEffectiveness, empty base, only overridden for Tiltrotor
 - Allow giving collective tilt that is used in updateSetpoint in place
   of command from tiltrotor_extra_controls
 - Needs to be called with do_override = false to clear override
 - add comment explaining technical debt
2026-05-18 16:14:31 +02:00
PX4BuildBot
7261e064c7 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 07:46:52 +00:00
Matthias Grob
fcb627f572 fix(commander): prevent arming if enabled parachute check fails 2026-05-18 09:40:09 +02:00
Hamish Willee
4caac66328 docs(update): Parachute enabled extended addition 2026-05-18 09:40:09 +02:00
Hamish Willee
7f5d7ccb1c docs(update): Subedit 2026-05-18 09:40:09 +02:00
gguidone
66a1ae9704 docs: add parachute health failsafe documentation
Update safety.md, peripherals/parachute.md, and releases/main.md to document the extended COM_PARACHUTE parameter and the new configurable in-flight failsafe behaviour.
2026-05-18 09:40:09 +02:00
gguidone
f74c7625b3 feat(commander): add COM_PARA_ACT to configure parachute unhealthy failsafe
Previously the parachute unhealthy failsafe was hardcoded to RTL.
2026-05-18 09:40:09 +02:00
PX4BuildBot
5eecffe60a docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 03:32:39 +00:00
Julian Oes
f81559ec64 fix(Tools and docs): PX4 Pro isn't really a thing (#27366)
These are just leftovers, probably worth cleaning up.
2026-05-17 21:25:37 -06:00
PX4BuildBot
daf6732e97 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 01:37:28 +00:00
NickCurranScout
ad899ba2a7 Mavlink Receiver: Don't ack DO_SET_MODE commands (#27343)
01abe35563 introduced a handler for the
`MAV_CMD_DO_SET_MODE` enum, which directly forwards a vehicle command
into uORB. It did not disable immediate acknowledgement of this command directly in `mavlink_receiver`. This means that the command is always ack'd once with ACCEPTED prior to the ack issued from Commander

The fix is to set `send_ack=false` immediately after dispatching the
command message to uORB in mavlink receiver
2026-05-18 13:30:48 +12:00
PX4BuildBot
b24f13a62c docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-18 00:35:06 +00:00
Jacob Dahl
6ab5e4b235 fix(dshot): 3D mode deadzone disarm + inclusive deadband (#26685)
* fix(dshot): send motor stop for 3D mode deadzone instead of min throttle

In DShot 3D mode, convert_output_to_3d_scaling() returns DSHOT_DISARM_VALUE
(0) for deadzone inputs. But up_dshot_motor_data_set() adds the MIN_throttle
offset (+48), causing motors to spin at minimum throttle instead of stopping.

Check the result of calculate_output_value() for DSHOT_DISARM_VALUE and send
an explicit motor stop command, bypassing the +48 offset.

* fix(dshot): make 3D deadband inclusive on both ends

Change the 3D deadband check from [L, H) to [L, H] so that setting
DSHOT_3D_DEAD_L equal to DSHOT_3D_DEAD_H (both default to 1000) produces
a single-point deadband at that value, matching the natural reading of
"between L and H" in the param description.

Clarify the DSHOT_3D_DEAD_L/H param descriptions to state the range is
inclusive and note the L=H default behavior.
2026-05-17 18:28:00 -06:00
Jacob Dahl
a188301a3e fix(make): clean NuttX submodules when board target changes (#27363)
NuttX builds into the shared submodule trees at
platforms/nuttx/NuttX/{nuttx,apps}, not into per-board build/<target>/.
Its recursive make does not treat PX4 defconfig changes as a reason to
recompile, so switching board configs links stale objects from the
previous config (e.g. kmm_* and stm32_spi4select from a protected/fmu-v5
build into a later flat/ark_fmu-v6x build), and the kernel ELF fails to
link with hundreds of undefined references.

Tools/ci/build_all_runner.sh already handled this in CI by wiping the
submodules between iterations. Bring the same fix to local builds: stamp
the active target in build/.last_target and run git clean -dXfq on both
NuttX submodules when it changes. Same-target rebuilds, which #27324
made cheap, stay unaffected (no-op rebuild remains ~0.14 s).

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2026-05-17 18:00:42 -06:00
PX4BuildBot
3f16fca955 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-17 22:54:31 +00:00
Jacob Dahl
be3f6e2279 fix(drivers/device): make I2C::init() idempotent (#27352)
A successful I2C::init() attaches to the bus (per-platform: NuttX
i2c_master_s* via px4_i2cbus_initialize, POSIX /dev/i2c-N fd via
::open, QuRT bus fd via _config_i2c_bus). Only the destructor releases
it. The init() implementations on all three platforms unconditionally
re-attached on every call, so any driver that called init() more than
once on the same instance leaked:

- NuttX: kmm_malloc() of a fresh i2c_master_s inst, plus an unbalanced
  increment of the per-port refcount in stm32_i2cbus_initialize() (and
  the equivalent across other arch ports). The previous inst pointer
  was overwritten and the matching uninitialize() never ran, so the
  bus refcount could not reach zero on destruct.
- POSIX/QuRT: file descriptor leak (re-open without close).

The pattern that triggers this is "init() retried on failure," used in
keep_running mode and in drivers like INA228 whose RunImpl re-enters
init() whenever a later step (e.g. a register write) failed. Drivers
that init() exactly once from instantiate() were unaffected.

Mirror what SPI::init() (nuttx/SPI.cpp) already does for its bus-bind
step and short-circuit on second-and-later calls. Re-running probe()
and CDev::init() on an already-attached device was also avoided here
because the existing cleanup path on probe failure would tear down the
preserved _dev that earlier callers still depended on.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2026-05-17 16:46:50 -06:00
Jacob Dahl
7f32786a29 fix(cmake): pin Python to project-local .venv on macOS (#27361)
PR #27324 swapped find_package(PythonInterp) for find_package(Python3),
whose macOS defaults (FRAMEWORK=FIRST, STRATEGY=VERSION) override
Python3_ROOT_DIR and PATH to resolve the highest-versioned framework
Python. CI then matched Homebrew's 3.14 while pip installed kconfiglib
into the actions/setup-python 3.10 venv, breaking `make px4_sitl`
configure with "No module named menuconfig".

Pin Python3_EXECUTABLE to .venv/bin/python when present (macos.sh
creates the venv but neither it nor CI exports VIRTUAL_ENV), and set
FIND_STRATEGY=LOCATION + FIND_FRAMEWORK=LAST so dev machines and Linux
containers without a venv still pick the interpreter that has the
project's pip dependencies.
2026-05-17 16:03:40 -06:00