Commit Graph

50545 Commits

Author SHA1 Message Date
Jacob Dahl
b11e615810 fix(zenoh): stop the build writing generated files into the source tree (#27904)
* fix(zenoh): generate the topic catalog into the build tree

Kconfig.topics is fully generated from the uORB message set, but the build
regenerated it into the source tree at configure time. Building any Zenoh
board therefore left the working tree dirty whenever the message set had
changed since the file was last committed (the catalog is board-config
dependent, so it drifts easily).

Generate the catalog into the build directory in cmake/kconfig.cmake, before
Kconfig is parsed, and source it from there via ZENOH_KCONFIG_TOPICS. It is
generated board-independently from every message so it no longer depends on
the msg-gating Kconfig symbols it is sourced alongside; the per-board factory
still gates which topics are actually compiled. Drop the committed catalog.

* chore(zenoh): bump zenoh-pico to the build-tree header fix

Moves zenoh-pico's generated config.h/zenoh-pico.h/library.json out of its
own source tree and into the build tree, so building no longer dirties the
submodule.

Gated on PX4/zenoh-pico#2: the pointer currently references the fix branch on
a fork and must be moved to the merged commit before this is ready.

* bump zenoh-pico
2026-07-15 12:12:09 -06:00
PX4BuildBot
e96159c217 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-15 15:04:07 +00:00
Claudio Chies
d63f30c612 feat(failure_injection): Enable failure-injection on hardware, and through RC-switch (#27832)
* feat(failure_injection): integrate failure injection support across sensor drivers

* feat(failure_injection): enhance failure injection with RC switch support and instance bitmasking

feat(failure_injection): add disabled failure injection manager and system command support for v5x and v6x boards

* feat(failure_injection): add battery failure injection

Add a value-mutating apply-site for FAILURE_UNIT_SYSTEM_BATTERY. On an
injected OFF the outgoing battery_status is reported as a depleted pack
(zero remaining, emergency warning) so the low-battery failsafe triggers.

The apply-site lives in the shared Battery library, covering the analog
ADC, INA power monitors, ESC battery and SITL in one place, plus the
UAVCAN battery driver which publishes battery_status directly. The
previous SITL-only hack in BatterySimulator is removed in favour of this
shared path so simulation and hardware behave identically.

* fix(failure_injection): change parameter types from int32 to enum

* refactor(failure_injection): disable failure injection manager and system commands across multiple boards

* feat(failure_injection): enhance failure injection with timestamp handling and message-less support

* refactor(failure_injection): simplify has_timestamp_sample implementation and remove unused includes

* refactor(failure_injection):move conditional compilation into helper libary

* refactor(failure_injection): update CMakeLists to include failure_injection dependency across multiple drivers

---------

Co-authored-by: Claudio Chies <chiesc@chies.com>
2026-07-15 07:56:13 -07:00
Jacob Dahl
f0ee79d34b build(msg): silence uORB IDL codegen build noise
The cdrstream uORB->IDL->CDR codegen floods the build log with noise:

- CycloneDDS idlc warns once per carried-over .msg comment that the
  @verbatim annotation is unsupported (VehicleCommand alone emits 153).
  Pass -Wno-unsupported-annotations via the idlc_generate WARNINGS list.

- rosidl_adapter prints a Reading/Writing line per message to stdout.
  Filter those in msg2idl.py via builtins.print rather than redirecting
  stdout, which the empy template engine breaks on. Errors still go to
  stderr.
2026-07-15 11:43:17 +03:00
Alex Klimaj
40a05f0709 fix(boards/ark/fpv): split FW/VTOL builds to free flash (#27906)
* fix(boards/ark/fpv): split FW/VTOL into separate builds for flash

Default ark_fpv is multicopter-only so listener and sd_bench fit in
flash. Fixed-wing and VTOL stacks move to ark_fpv_fw and ark_fpv_vtol,
which disable those two system commands to stay under the limit.

Signed-off-by: alexklimaj <alex@arkelectron.com>

* fix(boards/ark/fpv): trim optional modules from vtol build

Drop gimbal, gyro_fft, autotune, camera, payload, and debug systemcmds
from ark_fpv_vtol so the full VTOL stack fits with more flash margin.

Signed-off-by: alexklimaj <alex@arkelectron.com>

* fix(boards/ark/fpv): keep more modules on vtol; trim only debug extras

Restore autotune, gimbal, gyro_fft, mag bias, payload, camera, esc
battery, and actuator_test on ark_fpv_vtol. Keep flash margin by
leaving sd_bench, listener, bsondump, i2cdetect, and pca9685 off.

Signed-off-by: alexklimaj <alex@arkelectron.com>

---------

Signed-off-by: alexklimaj <alex@arkelectron.com>
2026-07-14 20:22:48 -06:00
Jacob Dahl
219fcf387d chore(claude): overhaul review-pr skill to focus on substance (#27892)
* chore(claude): overhaul review-pr skill to focus on substance

The skill spent most of its 207 lines on process: merge-strategy
recommendations, commit-message auditing, formatting checks, and an
interactive posting menu. That feedback is nit-picky noise for a PR
author, and CI already enforces formatting.

Rewrite it (49 lines) around reviewing substance: merit and need (root
cause vs papering over), first-principles analysis for physics/math
changes, architecture consistency with the surrounding code, and an
alternatives assessment. Output is a debrief for the operator plus a
terse, actionable draft comment explicitly attributed as a Claude
review.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

* chore(claude): generalize numeric-robustness check beyond float32

The physics/math check hardcoded float32; not all flight-critical math
uses it. Phrase the robustness check in terms of the given
representation, keeping float32 precision as a concrete example.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

* chore(claude): fold maintainability into the architecture check

Rename the check to Architecture and maintainability and direct it at
hidden cross-module coupling — a change that silently breaks an
assumption in another module — asking for a contract-codifying unit
test when such coupling is unavoidable.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

* chore(claude): add reliability to the correctness check

Reliability was not called out anywhere. Rename to Correctness and
reliability and add resource exhaustion and failure-path handling to
the list of defects to look for.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

* chore(claude): make the debrief lead with findings

A per-file restatement of a well-described PR wastes tokens and time.
Have the debrief lead with actionable findings and only explain what
the change does when the PR description is missing, ambiguous, or
misleading.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

* chore(claude): require provable, objectively-framed findings

Direct the draft comment to frame findings as engineering tradeoffs
rather than judgments, and to stay silent on any flaw it cannot
demonstrate via a concrete code path or first-principles derivation.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

---------

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2026-07-14 10:03:37 -06:00
PX4BuildBot
25bb4a2224 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-14 13:14:34 +00:00
Koi
785ede83d4 fix(mavlink): accept NAV_TAKEOFF param1 on multicopters (#27853)
Strict command-parameter validation added in #27541 rejects
MAV_CMD_NAV_TAKEOFF when an unsupported param is set. QGroundControl
sends param1 (minimum pitch) = -1 on multicopter takeoff, which is
non-zero/non-NaN, so commands were silently denied (MAV_RESULT_DENIED
with no log) on MC airframes and QGC guided takeoff stopped working.

Extend the NAV_TAKEOFF override to include VEHICLE_MC so param1 is
accepted and ignored on multicopters, matching FW/VTOL handling.
2026-07-14 15:08:38 +02:00
Bartok
7c70e4dbeb docs: fix retuns/Succesful typos in board_common and ModalAI HITL debug (#27898)
- board_common.h RC serial swap docs: retuns → returns
- dsp_hitl debug PX4_INFO strings: Succesful → Successful
2026-07-14 09:03:24 -04:00
Bartok
d1e3ce637e docs(lib): fix threshhold/paramter typos in pure_pursuit and sensor_calibration (#27896)
Comment/header docs only. Fixes a typo in pure_pursuit and sensor_calibration.
2026-07-14 09:02:32 -04:00
Bartok
99e406373d docs(temperature_compensation): fix calulate typo in thermal offset comments (#27895)
Comment-only: calulate → calculate for calc_thermal_offsets helpers.
2026-07-14 09:00:40 -04:00
Bartok
06dc5d0b5f docs(rover_differential): fix threshhold typo in RD_TRANS_* short descriptions (#27894)
Correct "threshhold" → "threshold" in RD_TRANS_TRN_DRV and RD_TRANS_DRV_TRN
short text (long descriptions already used "threshold").
2026-07-14 08:59:59 -04:00
Eurus
6f4f913664 fix(fw_latlon_control): correct TECS status pitch setpoint (#27869) 2026-07-14 14:19:46 +02:00
Cade Andersen
d067ce19c3 fix(macos): trust osrf/simulation tap in --sim-tools block (#27891)
Homebrew 6.0+ refuses to load formulae from untrusted third-party taps. This adds a trusted block for OSRF taps. 

Signed-off-by: Cade Andersen <cadecandersen@gmail.com>
2026-07-14 01:55:16 -04:00
PX4BuildBot
5f63c0698e docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 23:15:01 +00:00
Julian Oes
4b982f421a fix(gimbal): require assigned outputs for AUX gimbal manager (#27877)
In AUX output mode, the gimbal module unconditionally acted as a
virtual gimbal device and therefore advertised a gimbal manager, even
if no output channel was assigned a gimbal output function, i.e. no
gimbal could possibly be connected. This conflicts with setups where a
gimbal manager external to PX4 is used.

Only act as a gimbal device (and hence advertise a gimbal manager) if
at least one output function param is set to gimbal roll/pitch/yaw,
mirroring the MAVLink v2 output mode which only advertises once a
gimbal device is discovered. The check is done once at module startup
to avoid scanning all params on every parameter update, so assigning
a gimbal output function requires a reboot to take effect.

Signed-off-by: Julian Oes <julian@oes.ch>
2026-07-14 11:08:22 +12:00
Eric Katzfey
f9e927ff89 fix(qurt): implement px4_task_join (#27886) 2026-07-14 10:39:55 +12:00
PX4BuildBot
fe71d3bec1 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 22:23:01 +00:00
Jonas Perolini
5ea3cf8cb9 feat(navigator): extend detect and avoid module to follow regulatory standards such as ASTM F3442 (#26815)
* feat(navigator): extend detect and avoid module to follow regulatory standards such as ASTM F3442

* docs(docs): minor subedit

* refactor(navigator): reduce flash by grouping notif into same events

* docs(daa): Improve docs readability with ::: details blocks

* fix(navigator): single event when on ground with conflict

* refactor(boards): increase flash length from 4M - 128k to 5M - 128k

* rework(general): define DAA standard at build with new CONFIG_NAVIGATOR_ADSB_F3442

* clean(navigator): minor changes to clean the PR

* feat(boards): add CONFIG_NAVIGATOR_ADSB_FAKE_TRAFFIC in visionTargetEstStatic.px4board

* rework(daa): reduce amount of abstractions and minor cleaning

* refactor(boards): allyes revert flash length to 4M-128K

* refactor(boards): allyes increase flash length to 5M-128K

* rework(daa): rework event notifications to improve clarity

* docs(docs): move details inside of ::: details block

* docs(docs): run npx prettier

* refactor(daa): avoid void mutator functions

* docs(docs): Improve Python helper to decode daa unique id

* rework(daa): move encoded id handling to the adsb lib and refactor on_active

* refactor(daa): naming and zero init

* fix(daa): move dataman dep from daa level to unit test level

* refactor(daa): define common daa_input and rework process_transponder_report

* fix(daa): remove stale todo

* refactor(daa): rename crosstrack_based_daa to crosstrack_standard

* refactor(daa): rename F34_ params to DAA_

* docs(docs): revert changes to autogenerated docs

* docs(docs): Add Detect And Avoid in index.md

* refactor(daa): update message on init failed

* refactor(daa): only publish most_urgent conflict once in on_active()

* refactor(daa): move conflict buffer handling in the adsb lib

* refactor(daa): move notifications into new class ConflictNotifier and only notify once per cycle

* refactor(daa): uninit _cycle_changes to store into .bss (and save flash)

* docs(docs): remove unused image link

* refactor(daa): move automated action policy to the adsb lib

* refactor(daa): move self detection into adsb lib as DaaTrafficFilter

* refactor(daa): minor changes in unit tests

* refactor(daa): merge DaaTrafficFilter and DaaEncoding

* fix(daa): fix CI by removing navigator from the DAA deps

* refactor(daa): reduce stack size

* fix(daa): advertise _fake_traffic_pub in constructor

* refactor(daa): Comments only,  simplify and reduce comments

* fix(daa): brief comment missing end star

* Disable CONFIG_NAVIGATOR_ADSB in ark_fpv_default board

* docs(docs): General clarifications and remove the 1.18 badge

* refactor(daa): cleaning

* refactor(daa): minor cleaning

* refactor(adsb): simplify conflict tracker assuming push_back cannot fail

* build(cmake): cleaner fix to protect regex alternations

* refactor(daa): Crosstrack, remove unit test requiring finite yaw (yaw not used by standard)

* refactor(daa): minor cleaning and fix callsign to uint64

---------

Co-authored-by: jonas <jonas.perolini@rigi.tech>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2026-07-13 16:14:42 -06:00
PX4BuildBot
7ca74a7cc9 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 21:44:07 +00:00
Bartok
faa23b3ebc docs(mc_pos_control): fix MPC_ACC_HOR_MAX description for MPC_POS_MODE (#27880)
* docs(mc_pos_control): fix MPC_ACC_HOR_MAX description for MPC_POS_MODE

MPC_POS_MODE only exposes Direct velocity (0) and Acceleration based (4).
Replace the stale "mode 1" wording so parameter metadata matches the live enum.

* docs(mc_pos_control): shorten MPC_ACC_HOR_MAX long description

Keep it short per review (@dakejahl), in the spirit of #27758.
2026-07-13 15:38:19 -06:00
Bartok
06ca9af17f docs(mc_hover_thrust_estimator): fix HTE_HT_ERR_INIT description (#27881)
The long description was a copy of HTE_ACC_GATE innovation-gate text.
Describe the actual initial 1-sigma hover thrust uncertainty instead.
2026-07-13 15:33:04 -06:00
Onur Özkan
a080eef535 docs: update mavlink temperature conversion example (#27871)
Update the mavlink receiving example to match the current behavior from
"b52464059e fix(mavlink): preserve invalid battery values on receive"
patch.

Signed-off-by: Onur Özkan <work@onurozkan.dev>
2026-07-13 15:27:08 -06:00
PX4BuildBot
3835140f34 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 16:49:43 +00:00
Jonas Perolini
5184d66239 perf(sensors): Add config to only build specific GPS drivers to save flash (#27883)
* build(gps): add one config per gnss driver to reduce flash

* minor cleaning

---------

Co-authored-by: jonas <jonas.perolini@rigi.tech>
2026-07-13 18:43:42 +02:00
PX4BuildBot
7bf22ca4a0 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-13 09:06:44 +00:00
Marin D
1d859c2d3b feat(driver/heater): Add activation threshold (#27821)
* feat(driver/heater): Add threshold to prevent the heater from always heating.
                     It only starts heating if the temperature drops below the specified threshold,
                     and continues until reset.
2026-07-13 11:00:26 +02:00
PX4 Build Bot
edcbdd8b63 docs(i18n): PX4 guide translations (Crowdin) - zh-CN (#27812)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-07-12 15:29:58 +10:00
PX4 Build Bot
b4acc0c0db docs(i18n): PX4 guide translations (Crowdin) - ko (#27810)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-07-12 15:29:49 +10:00
PX4 Build Bot
bf0d1013b2 docs(i18n): PX4 guide translations (Crowdin) - uk (#27811)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-07-12 15:29:34 +10:00
Teisybe
50161b1f09 fix(mavlink): Timestamp missing from HIL_STATE_QUATERION stream (#27862)
Propagated attitude timestamp to HIL_STATE_QUATERNION MavLink
message stream. This fixes empty timestamps when ground truth is
accessed via MavSDK.
2026-07-11 00:31:51 -04:00
yi chen
795c69a362 fix(battery): use unclamped dt for discharged_mah coulomb count (#27866)
Battery::updateDt() clamps _dt to a maximum of 2 seconds:

    _dt = math::min((timestamp - _last_timestamp) / 1e6f, 2.f);

This same _dt is then used for two different purposes:

1. Battery::sumDischarged(), the coulomb count that accumulates
   discharged_mah: discharged_mah_loop = current_a * dt.
2. The current average low-pass filter update
   (_current_average_filter_a.update(current_a, _dt)).

The 2-second clamp makes sense for (2): a low-pass filter update
generally assumes a roughly steady sample interval and shouldn't see a
single very large dt distort its state. It does not make sense for
(1): the coulomb count is a plain physical integral (charge = current
x time), and clamping dt there just means an update that arrives less
often than every 2 seconds (e.g. some DroneCAN/UAVCAN battery devices,
as reported in #27797) has its actual elapsed time silently truncated
to 2 seconds, systematically underestimating discharged_mah for that
update - the error accumulates over the life of the battery.

Fix: track a second, unclamped dt (_dt_discharge) alongside the
existing clamped one, and use it specifically for the coulomb count in
sumDischarged(). The filter update keeps using the existing clamped
_dt unchanged.

Fixes #27797

Test plan:
- I don't have hardware with a >2-second-interval battery update
  source to reproduce this end-to-end, so I verified the corrected
  arithmetic with a standalone C reproduction of updateDt()/
  sumDischarged(): a 5-second update interval at a constant 10A
  before the fix accumulates 5.56 mAh (current x 2s, clamped) instead
  of the physically correct 13.89 mAh (current x 5s); after the fix it
  correctly accumulates 13.89 mAh.
- Verified a normal high-frequency update pattern (10 x 100ms updates
  at 5A) is unaffected: both before and after the fix accumulate the
  same, correct 1.39 mAh for that 1-second span.

Signed-off-by: yi chen <94xhn1@gmail.com>
Co-authored-by: yi chen <94xhn1@gmail.com>
2026-07-10 17:35:27 -06:00
Balduin
c3b7ec703d fix(navigator): silence geofence RTL error without geofences (#27858)
In navigator_main we use needsStraightLineFallback do determine whether
or not to show the error "RTL: no geofence avoidance path; flying directly".

Without any geofences that is not an error but expected behaviour.

Fix: When there are no geofences, do not declare
needsStraightLineFallback. Behaviour is otherwise the same - the geofence 
avoidance path is empty, hasMore() always false, and we return directly.
2026-07-10 11:02:12 +02:00
Eurus
d60fea65d2 fix(vtol_att_control): correct tailsitter quadchute attitude frame (#27834)
* fix(vtol_att_control): correct tailsitter quadchute attitude frame

* refactor(vtol_att_control): precompute tailsitter FW frame rotation
2026-07-09 18:21:47 +02:00
Balduin
7b19bbf75f refactor(timesync): swap exp -> expf to save flash
This is the only double-precision exp in the codebase, and occupies a
hefty chunk of flash.

Relevant history:
 - https://github.com/PX4/PX4-Autopilot/pull/9365 / 39bb65ffd7
     - Timesync algorithm is initially added with this "sigmoid"
       function calculated completely in float
     - but _filter_alpha / _filter_beta are double, presumably to be
       compatible with adjusting _time_offset in add_sample which is a
       double (which it needs to be to represent large offsets coming
       from int64_t)
 - https://github.com/PX4/PX4-Autopilot/pull/9809 / cf74166801
     - to silence warnings, the expf is swapped for an exp and the
       entire sigmoid calculation is now in double

I would say the better fix to silence the promotion warning is to keep
the sigmoid function in float (precision not needed) and cast to double
right after, to not accidentally change anything depending on double.
2026-07-09 08:19:39 -07:00
Balduin
14be323bb2 refactor(lat_lon_alt): revert pow(., 2) optimisations
The compiler already does that, so no need to expand code.
2026-07-09 08:16:30 -07:00
Balduin
deaef6ee94 refactor(lat_lon_alt): use cbrt and x*x to drop double pow tables
Replaces the cube-root pow() with cbrt() (still double precision, no
log lookup table) and the pow(x, 2) calls with x*x. Removing the last
double pow() callers on the target lets the linker drop __pow_log_data
and __exp_data (~6.3 KB flash) with no loss of geodetic precision.
2026-07-09 08:16:30 -07:00
Balduin
113bee1437 refactor(uORB): out-line PublicationBase destructor to save flash
The ~PublicationBase() destructor was header-inline, so its null-check
plus the orb_get_queue_size()/unadvertise() branch was emitted at every
publication destruction site (PX4 links with bfd ld, no ICF, no LTO).

Move it into Publication.cpp alongside the already out-lined
advertise()/publish(), mirroring #27581.

Saves 2.4 kB of flash on px4_fmu-v6x_default.
2026-07-09 07:59:00 -07:00
Balduin
4791b70c15 refactor(uORB): out-line PublicationMulti methods to save flash
publish(), advertise() and get_instance() were instantiated per topic
type and the advertise-check in publish() was additionally inlined at
every call site. Move them into a type-independent PublicationMultiBase
compiled once.

Saves 5.5 kB of flash on px4_fmu-v6x_default.
2026-07-09 07:59:00 -07:00
Balduin
17d08c5db3 fix(simulation): remove redundant random normal generator (#27845)
* refactor(simulation): use single-precision noise in SensorBaroSim

The Box-Muller noise generator ran in double precision, pulling in the
double log() implementation and its __log_data table (~2.2 KB). Noise
generation does not need double precision; converting the block to
float drops the last double log() caller on the target.

* fix(simulation): remove double Box-Muller in SensorBaroSim noise

generate_wgn() already returns a standard normal sample (Marsaglia polar
method), but the pressure-noise block fed it into a _second_ polar
Box-Muller transform as if it were a uniform [0,1) source.

Fix: Use the generator output directly for the intended 1 Pa RMS N(0,1)
noise and remove the second noise transform.
2026-07-09 08:54:47 -06:00
cuav-chen2
a426619407 fix(boards): cuav_x25-mega Use the new heating instance ID parameter 2026-07-09 07:48:21 -07:00
Claudio Chies
749cce11d4 fix(mc_autotune): unregister torque setpoint callback on autotune stop 2026-07-09 07:07:58 -07:00
PX4BuildBot
186ad6d691 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-07-09 12:14:59 +00:00
Roman Bapst
40e61d2429 feat(navigator): Geofence Aware RTL (#27145)
Plan RTL paths that route around geofence boundaries — both inclusion
and exclusion zones — instead of flying straight through them and
breaching. The planner builds a visibility graph over the margin-inflated
geofence polygons and circles and runs Dijkstra to find the shortest
legal return path, falling back to a straight line to the destination
when no valid path exists.

Highlights:
- New reusable libraries: src/lib/dijkstra (generic shortest path) and
  src/lib/geofence (fixed-point geometry, polygon inflation, bitangent
  visibility); the RTL planner lives in navigator/RTLPlanner.
- Visibility graph keeps only bitangent edges and skips edges that poke
  into a forbidden region, greatly reducing edge-cost computation.
- Corner splitting is limited to sharp convex corners.
- Geometry validation: reject self-intersecting polygons and vertices
  outside the fixed-point range; centimeter fixed-point scaling keeps
  orientation tests exact and avoids drift at large distances.
- Failure handling: a Status enum replaces silent bool returns, and
  failures (unbuildable fence, planner capacity overflow, dataman load
  errors, NaN waypoints, destinations that breach the fence) are
  surfaced to the operator via MAVLink warnings/criticals; the planner
  falls back to a straight-line RTL.
- Destination updates are centralized in RTL::setRtlTypeAndDestination;
  the path is replanned only when the destination or geometry changes.
- VTOLs always use the fixed-wing margin (FW loiter radius).
- kMaxNodes is exposed as a Kconfig option (default 100); the feature is
  disabled on flash-constrained boards (FMUv4 and older, various F4/F7).
- Tests: unit tests for the Dijkstra lib, geofence geometry utils, and
  the avoidance planner, plus a MAVSDK SITL test flying an RTL through a
  geofence.
- Documentation: new "Geofence Awareness" section in the RTL docs.

Co-authored-by: Balduin <balduin@auterion.com>
2026-07-09 15:08:27 +03:00
Ramon Roche
d448e3f5b0 ci(release): upload release assets sequentially to avoid rate limit
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-08 14:25:17 -07:00
Ramon Roche
f1bff926d1 docs(releases): promote VOXL 2 Debian packaging to major changes
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-08 14:07:30 -07:00
Ramon Roche
d68d7ad827 docs(releases): note VOXL 2 variant merge and Debian package in v1.18
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-07-08 14:07:30 -07:00
Silvan
3e19bcf8b2 feat: add mahima and balduin to maintainer list
Signed-off-by: Silvan <silvan@auterion.com>
2026-07-08 12:39:37 -07:00
Ramon Roche
fd13202851 docs(releases): v1.18 release notes (#27808)
* docs(releases): fix malformed SIH wind PR link in v1.18 notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): draft v1.18 release notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): mark v1.18 beta and add changes merged since the draft

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): add v1.18 upgrade guide, hardware fixes, and section structure

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): resort v1.18 major changes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): link sensor and peripheral docs pages in v1.18 notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): describe new boards and highlight serial passthrough in v1.18 notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): fold standalone sensors section into hardware and common

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): fill v1.18 ethernet section with networking fixes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): merge ROS 2 and middleware sections with DDS and Zenoh subsections

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): group vehicle-type notes under vehicle-specific section

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): reorder v1.18 other-changes sections by topic group

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): drop other-changes wrapper heading in v1.18 notes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): organize debug-logging subsections and add infrastructure section

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* docs(releases): fix main.md template wording and mark v1.18 beta in sidebar

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

---------

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
v1.18.0-beta1
2026-07-08 11:54:37 -07:00
CUAV Chen
fb83cd5485 perf(drivers/imu/analog_devices/adis16607): Use FIFO feature to read data (#27228) 2026-07-08 10:43:56 -06:00