Commit Graph

49905 Commits

Author SHA1 Message Date
Hamish Willee
3e6b570ed2 docs(docs): Subedit 2026-05-22 09:06:36 +10:00
Hamish Willee
20ee71464e docs(docs): Subedit 2026-05-22 08:57:09 +10:00
Hamish Willee
1c425911e9 docs(docs): subedit 2026-05-21 22:21:52 -07:00
Nuno Marques
c59c72893b docs(windows): clarify why MSVC is the default toolchain
The previous framing leaned on "MSVC is what CI exercises" as the
reason MSVC is the default, which is circular — CI uses MSVC
because it's the default, not the other way around.

Restate the rationale as what it actually is: MSVC is Microsoft's
native Windows toolchain, ships with the Windows SDK, produces
binaries against the canonical Windows ABI, and is the toolchain
the broader Windows C++ ecosystem (debugger, profilers, libraries)
is built and tested against — so it gives the cleanest native
Windows experience. Demote the CI mention to a single sentence
noting that both MSVC and MinGW are exercised on every PR (so the
CI green covers the alternative too).
Signed-off-by: Nuno Marques <n.marques21@hotmail.com>
2026-05-21 22:21:52 -07:00
Nuno Marques
b439dcebf6 docs(windows): clarify native SITL setup and Windows cross-references
dev_env_windows_native.md
- Add a "Choosing the C++ Toolchain" subsection up front naming
  MSVC as the default and MinGW-w64 as the alternative for GCC
  workflows, so the rationale is stated once instead of scattered
  across the build / agent sections.
- Trim the Gazebo / jMAVSim "not supported" admonition to a short
  warning linking down to a new "Running Non-SIH Simulators from
  WSL or a Remote Linux Host" section near the end where the
  longer explanation now lives.
- Drop the obsolete "px4-* client wrappers are not reliably
  functional" caveat and matching Known Limitations bullet —
  every wrapper now works fine from a separate PowerShell window.
- Drop the assumed $env:USERPROFILE\Documents clone path here and
  in the agent section; tell readers to use a directory they have
  rights over (e.g. C:\PX4, C:\opt\Micro-XRCE-DDS-Agent) and
  demote the OneDrive / spaces / MAX_PATH caveats from a warning
  to an info box.
- Flip the "Visual Studio 2022 Build Tools installer runs silently
  for 10-15 min" admonition from warning to info — it's a heads-up,
  not a danger.
- Drop "Git for Windows" from the list of things the setup script
  installs (it has to exist before the script can run); add a
  sentence noting the script leaves any existing Git install alone.
- Remove the inline SIH-airframes table and link to the canonical
  table at sim_sih/index.md#supported-vehicle-types instead, so
  we don't keep two lists in sync when new airframes land.
- Note that the agent build is MSVC-only on Windows; PX4 SITL
  itself still builds fine with MinGW.
- Replace the "do not use pip's ninja" warning with a where.exe-
  based diagnostic plus the actual remediation (uninstall the pip
  ninja, or reorder PATH so the winget install wins).
- Add an info admonition above the ROS 2 section clarifying that
  ROS 2 on Windows is OSRF-community-supported, not a first-class
  PX4 platform, and pointing users who would rather run ROS 2
  under WSL2 at that option.

ros2/multi_vehicle.md, ros2/user_guide.md, sim_jmavsim/multi_vehicle.md
- Reword the Windows-native info boxes ("When using the Windows
  Native Development Environment...") so they don't implicitly
  claim to apply to every Windows setup.
Signed-off-by: Nuno Marques <n.marques21@hotmail.com>
2026-05-21 22:21:51 -07:00
Hamish Willee
c1782ee8d7 docs(docs): Reorder, relnote, tidy 2026-05-21 22:21:51 -07:00
Nuno Marques
be1acbb7d1 fix(px4fmu-v6xrt): update LED ioctl ITCM symbol
Match the v6xrt ITCM include list to the current LED::ioctl signature after ioctl arguments were widened to uintptr_t on this branch.

This lets the ITCM checker account for the emitted ARM symbol instead of looking for the stale unsigned-long mangling.
2026-05-21 22:21:51 -07:00
Nuno Marques
1bce73fbb6 fix(test): harden SITL integration startup
Run PX4 integration tests from an isolated rootfs, wait for the ROS 2 vehicle_status publisher before launching ROS tests, and keep param set from consuming the startup env loop stdin.

This preserves multi-parameter test overrides used by EKF and attitude-controller cases while turning early PX4 exits into clear runner failures.
2026-05-21 22:21:51 -07:00
Nuno Marques
9b0475d0be test(windows): add shim runtime coverage
Add focused tests for Windows shim headers, file and poll behavior, runtime helpers, and main-output silence so native Windows unit jobs exercise the compatibility layer directly.
2026-05-21 22:21:51 -07:00
Nuno Marques
afe41a37d3 docs(windows): add native SITL setup guide
Document the native Windows development environment, setup scripts, SITL usage, and related ROS 2 / simulation notes while keeping the existing WSL and Cygwin pages linked clearly.
2026-05-21 22:21:51 -07:00
Nuno Marques
689c72abb0 ci(windows): add native SITL build coverage
Add the Windows SITL workflow for MinGW and MSVC builds, extend unit-test coverage to Windows runners, and make the macOS build use the configured Python environment consistently.
2026-05-21 22:21:51 -07:00
Nuno Marques
db4bd0a6c2 feat(tools): add native Windows setup helpers
Add PowerShell setup scripts for native Windows PX4 development and ROS 2 pixi integration so the documented workflow has reproducible entry points.
2026-05-21 22:21:51 -07:00
Nuno Marques
1f484eef07 fix(simulation): support Windows SITL transports
Make MAVLink, uXRCE-DDS, and simulator_mavlink tolerate Windows socket and daemon semantics while preserving the existing POSIX transport behavior.

Update Gazebo Classic integration, SIH defaults, and multi-instance simulation scripts needed by the native Windows SITL workflow.
2026-05-21 22:21:51 -07:00
Nuno Marques
2e88fa46aa fix(modules): improve Windows runtime portability
Replace GNU-only cases and POSIX assumptions with portable PX4 helpers across drivers, examples, logger, dataman, version reporting, system commands, and tests.

Keep ioctl argument types consistent and make startup/runtime diagnostics less noisy on SITL-only platforms where optional devices are absent.
2026-05-21 22:21:51 -07:00
Nuno Marques
e4a0f075e3 feat(param): add grouped parameter declarations
Introduce grouped parameter macros and generator metadata so modules can describe optional parameter groups without expanding every disabled parameter at compile time.

Convert EKF2, logger, and sensor parameter holders to the grouped form and keep the ROS2 platform headers in sync for generated parameter consumers.
2026-05-21 22:21:51 -07:00
Nuno Marques
54cd879e13 fix(lockstep): stabilize Windows SITL timing
Wake scheduler waits through Windows-safe primitives, gate lockstep work-queue progress to Windows, and avoid startup stalls before simulator time is available.

Keep SIH and commander shell commands responsive at higher speed factors, including Wine-specific sleep behavior that avoids clock-poll spin overhead without changing native Windows paths.
2026-05-21 22:21:51 -07:00
Nuno Marques
8f49dbc8bd feat(px4): support Windows daemon and shell runtime
Make PX4 startup, daemon command handling, shell I/O, shutdown, logging, getopt, and instance state work across POSIX and native Windows runtime boundaries.

Keep command-client behavior explicit by routing shell output through shared logger paths and preserving socket protocol return markers during shutdown.
2026-05-21 22:21:50 -07:00
Nuno Marques
6732e10601 build(windows): wire native SITL toolchains
Add the MinGW toolchain and Windows platform CMake module, then teach shared build helpers how to handle MSVC, clang-cl, and MinGW warning/link semantics.

Adjust affected module and test targets so the existing PX4 source tree can be configured for native Windows SITL without changing non-Windows build intent.
2026-05-21 22:21:50 -07:00
Nuno Marques
f303e23ce2 feat(posix): add Windows compatibility runtime
Introduce the Windows POSIX shim headers and implementations used by native Windows SITL builds, including filesystem, networking, process, timing, terminal, and dynamic-loading adapters.

Add the Windows runtime initialization and embedded shell backend while keeping the shared platform headers explicit about Windows support and symbol visibility.
2026-05-21 22:20:30 -07:00
PX4BuildBot
4357049045 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-21 19:59:18 +00:00
Michael Fritsche
65be196b9b docs(rovers): add hiwonder rover airframes and setup guide (#27333)
* rover: add hiwonder rover airframes

* docs: hiwonder rovers setup guide

* docs(docs): compress images

* docs(docs): prettier

* docs(docs): subedit

* docs(rover): add back tip about custom firmware install

* docs(rover): detail the hiwonder build / enable instructions

* docs(rover): fix airframe typo for ackermann

* docs(docs): Improve firmware section

---------

Co-authored-by: chfriedrich98 <chfriedrich@student.ethz.ch>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
Co-authored-by: Ramon Roche <mrpollo@gmail.com>
2026-05-21 15:51:52 -04:00
PX4BuildBot
1eb6971d84 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-21 18:31:56 +00:00
Jonas Perolini
80557b32ee feat(mavlink): reassemble GPS_RTCM_DATA before GPS injection (#27084)
* mavlink: reassemble GPS_RTCM_DATA before GPS injection

* Apply minor comment requested changes

* Simplification: remove _completed_sequence asymetric protection

* Handle RTCM payload length which is an exact multiple of 180

* update docs

* lib gnss: new GpsRtcmMessageFragmenter to send RTCM via GPS_RTCM_DATA.hpp

* fix clang

* Remove RTCM fragmenter

* update docs

* Compatibility fallback for older QGroundControl builds that omit the final zero-length fragment

* mavlink receiver, remove while loop to avoid dead lock

* docs(update): Subedit

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>

* docs(docs): format

---------

Co-authored-by: jonas <jonas.perolini@rigi.tech>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2026-05-21 12:23:50 -06:00
PX4BuildBot
e1befdea29 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-21 06:00:07 +00:00
sbenchabane
0eb14d64d5 fix(commander): refuse stale config_control_setpoints cache on activation
ModeManagement caches the most recent config_control_setpoints entry per
source_id (one per external mode) and reads it on every nav_state change
to decide which flight controllers to enable. The cache was read verbatim
regardless of when the entry was written, so a contract authored during
an earlier activation of the same mode -- e.g. a ground configuration that
disables all controllers, followed by re-entering the same mode in the
air -- briefly forced the new activation onto a controller configuration
intended for the previous one.

Stamp every cache write with the PX4-local receive time. On the first
updateControlMode() call for a new nav_state, refuse any cached entry
whose receive time predates the activation and publish the safe default
contract (every control loop enabled) instead, until a fresh entry arrives.
A single warning is emitted per activation when the fallback engages.
2026-05-21 07:53:03 +02:00
PX4BuildBot
9dd97c7c57 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-21 04:36:17 +00:00
Hamish Willee
54f262feaa docs(docs): Remove docs for ROS1 integration tests (#27421) 2026-05-21 14:28:31 +10:00
PX4BuildBot
1512a552f9 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-21 02:00:42 +00:00
Voltafield
2cea093fdb fix(sensors): af9838 minor code style and architecture updates (#27370)
* drivers: af9838 minor fixes and code style updates

* Update af9838_main.cpp

* Update af9838.cpp

* Update af9838.hpp
2026-05-20 19:53:20 -06:00
Jacob Dahl
ee002b1db6 fix(tools/uploader): handle USB CDC reconnect race during reboot (#27419)
After sending reboot-to-bootloader, the PX4 USB CDC node briefly
disappears while the bootloader re-enumerates. Reopening the serial
port can land on a half-broken descriptor and the next tcdrain()
raises termios.error (5, 'Input/output error'). That bare OSError
escaped every retry layer and crashed the uploader, even though a
manual re-run would succeed once enumeration settled.

Convert OSError/SerialException from flush() and reset_buffers() into
the module's ConnectionError, matching how send()/recv() already
behave, and let the identify retry loops in _try_identify also catch
ConnectionError so a single transient I/O hiccup doesn't abort the
upload.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2026-05-20 19:08:53 -06:00
PX4BuildBot
f094358bf0 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-20 21:33:24 +00:00
Eurus
72136d0b47 fix(mavlink): guard mission download completion (#27412)
Only apply the missing-ACK recovery while in SENDLIST.
2026-05-21 09:25:42 +12:00
PX4BuildBot
54cf213c7e docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-20 20:23:38 +00:00
Jorge Rios
31ebf1a681 Fix typo in Multi Vehicle Simulation description (#27417) 2026-05-20 14:16:00 -06:00
pmjnt
58b0009415 docs(compass): remove redundant CAL_MAGx_PRIO clarification (#27414)
The line "Priority is assigned automatically during calibration..."
added in #27393 duplicates information already conveyed by the
surrounding paragraph. Hamish flagged the redundancy in code review.

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

Co-authored-by: _pmjn_ <pcminh170701@gmail.com>
2026-05-20 14:09:56 -06:00
Julian Oes
110be82e7d fix(Tools): add clarifying comment (#27403)
It wasn't clear to me why this merge_config.py was required. It is now
clear, so let me leave a comment.
2026-05-20 14:06:11 -06:00
PX4BuildBot
cfa3d6a3b9 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-20 17:39:57 +00:00
Hamish Willee
bf1e591aab fix(mavlink): Ensure COMMAND_INT handler (only) scales locations (#27335) 2026-05-21 05:24:56 +12:00
PX4BuildBot
3f6b663ed2 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-20 17:12:26 +00:00
Alexis Guijarro
25724b5244 fix(boards/3dr/ctrl-n1): board port fixes and driver corrections (#27405)
* fix(drivers/ak09940a): fix probe retry, devtype collision, and register naming

* fix(drivers/neopixel): check init return value and fix module name typo

* fix(boards/3dr/ctrl-n1): correct magnetometer i2c bus, LED indexing, chip variant for bootloader, and TIM3 conflict with srgbled_dma

* fix(boards/3dr/ctrl-n1): update bootloader for STM32H743VI
2026-05-20 11:04:29 -06:00
alexcekay
e3595fedf3 feat(manifest): add auterion CAN products 2026-05-20 14:19:23 +02:00
PX4BuildBot
79c164cf37 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-20 11:46:05 +00:00
Marco Hauswirth
6e9c71b036 fix(ekf2): reset gyro-bias-z-covariance on tryYawEmergencyReset to make recovering from wrong bias-estimate possible (#27327) 2026-05-20 13:39:00 +02:00
PX4BuildBot
ce23467822 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-20 09:22:05 +00:00
Alexander Lerach
c55e6677c0 feat(drivers): VectorNav option to select IMU rate and output port (#27318)
* feat: VectorNav option to select IMU rate and output port

* feat(docs): Clarify VectorNav wiring param

* Apply suggestion from @hamishwillee

* Apply suggestion from @hamishwillee

---------

Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2026-05-20 11:15:15 +02:00
PX4BuildBot
59cb543825 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-05-20 01:16:39 +00:00
Claudio Chies
ad0bce0bec Open feat(docs): remove old info on micro-xrce-dds-agent release snap version (#27394) 2026-05-20 11:09:21 +10:00
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