Commit Graph

29 Commits

Author SHA1 Message Date
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
Jacob Dahl
61f08771a7 fix(boards): trim unused EKF2 features on flash-constrained F4 targets (#26928)
Disable EKF2 fusion features with no corresponding hardware:
- px4_fmu-v2: optical flow, range finder (~17 KB saved)
- mamba-f405-mk2: optical flow, range finder, external vision,
  aux global position, aux velocity, baro compensation,
  drag fusion (~42 KB saved)
2026-03-31 23:10:13 -08:00
PX4 BuildBot
1aa83d954b update all px4board kconfig 2025-01-22 14:46:24 -05:00
Silvan Fuhrer
a16f7859ac boards: disable CONFIG_EKF2_AUX_GLOBAL_POSITION on some boards
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2025-01-14 02:19:49 -05:00
Matthias Grob
839010eeab Navigator: make ADSB handling optional 2024-12-19 15:30:34 +01:00
Thomas Frans
cd4c495377 drivers/gps: extract Septentrio into new standalone drivers/gnss/septentrio module (#22904)
Having a generic interface over the GPS drivers makes dedicated
functionality for each driver harder. Move the Septentrio driver into
its own module under the `gnss` driver directory, and let it have its
own parameters for only the functionality it requires. This also helps
with adding new features because they only need to be implemented for
the driver that wants it, simplifying testing.
2024-06-17 12:25:24 -04:00
Jacob Dahl
70304fe715 [mavlink] Parameter to always start on USB (#22234)
* usb: Added parameter to enable always starting mavlink on USB.

    Refactored cdcacm_init into a module and added a paramter to allow always starting mavlink on
    USB, also added a paramter to choose the mode. The current default behavior is to wait and listen
    for data on USB and auto-detect the protocol (mavlink, nsh, ublox). This results in the mavlink
    stream not starting until something else on the mavlink network sends a packet first. The new
    default behavior is to always start mavlink.

    Added parameters
    MAV_USB_ENABLE -- default 1 (always start mavlink on USB)
    MAV_USE_MODE -- default 3 (onboard)

* added 3 retries for opening serial port in mavlink, removed sleep before sercon

* added DRIVERS_CDCACM_AUTOSTART to ark-v6x default.px4board

* added CONFIG_DRIVERS_CDCACM_AUTOSTART=y to default.px4board for boards with CONFIG_CDCACM in their nsh/defconfig

* format

* remove PGA460 from COMMON_DISTANCE_SENSOR to save flash

* remove LIS2MDL from COMMON_MAGNETOMETER to save flash

* disable CONFIG_DRIVERS_CDCACM_AUTOSTART for fmu-v5 protected.px4board

* moved and renamed parameters, removed mode logic in mavlink

* changed parameter names, added mode none

* remove parameters from mavlink
2024-05-20 12:35:29 -06:00
alexklimaj
51e1a80556 driver: cleanup imu folder 2023-11-03 10:50:27 -04:00
Daniel Agar
4363b09421 ekf2: add kconfig option to enable/disable external vision fusion 2023-03-20 10:12:17 -04:00
Daniel Agar
d47f96f1a5 ekf2: add kconfig option to enable/disable AUX velocity fusion 2023-03-20 10:12:17 -04:00
Daniel Agar
4270a303ab ekf2: add kconfig option to enable/disable airspeed and sideslip fusion 2023-03-20 10:12:17 -04:00
Daniel Agar
98ff1afc19 ekf2: add kconfig option to enable/disable GNSS yaw 2023-03-20 10:12:17 -04:00
Daniel Agar
8b2205810b ekf2: add kconfig option to enable/disable baro compensation 2023-03-20 10:12:17 -04:00
Daniel Agar
fe0e3acf09 ekf2: add kconfig option to enable/disable drag fusion 2023-03-20 10:12:17 -04:00
Silvan Fuhrer
7edce94b93 v2_default: disable hover thrust estimator to safe flash
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-03-02 12:22:18 -05:00
Daniel Agar
b14e0c21b6 boards: px4_fmu-v2_default disable sensors/vehicle_airspeed and sensors/vehicle_optical_flow to save flash 2023-02-13 20:45:28 -05:00
Daniel Agar
d3312f955f delete systemcmds/pwm 2022-09-09 09:14:09 -04:00
Beat Küng
715afd27f5 ROMFS: exclude mixers on v2 & disable mixer command
The dynamic mixing is now the default
2022-08-25 22:02:15 -04:00
Daniel Agar
c8d2d83e55 boards: px4_fmu-v2 restore systemcmds/ver needed for board init 2022-04-25 22:47:08 -04:00
Daniel Agar
3c58932aff boards: px4_fmu-v2_default disable ms4525 to save flash 2022-02-21 16:45:22 -05:00
Beat Küng
db2a1e5fee px4/fmu-v2: disable modules to reduce flash 2021-11-23 12:40:22 -05:00
Beat Küng
4c03def6e9 boards: add CONTROL_ALLOCATOR + ACTUATOR_TEST 2021-11-23 12:40:22 -05:00
Daniel Agar
f5d9b01f5c NuttX build in place
- cmake NuttX build wrapper compile in place instead of copying source tree to build directory
    - slightly faster skipping necessary copying (depending on system)
    - allows debugging in place
    - easier to work directly in NuttX following official documentation
    - simplifies overall build which should make it easier to resolve any remaining NuttX dependency issues in the build system
 - the downside is switching back and forth between different builds always require rebuilding NuttX, but I think this is worth the improved developer experience
 - also no longer builds px4io and bootloader in every single build, for most users these rarely change and we're wasting a lot of build time
2021-11-15 18:47:38 -05:00
Daniel Agar
2d816e0b3e [WIP] manual_control selector hacks 2021-11-09 16:05:25 +01:00
Peter van der Perk
454c907b7d Kconfig backport #18327 mag_bias 2021-10-07 10:09:01 -04:00
Peter van der Perk
33fd65e5fe [Kconfig] Fix regressions found by bloaty and cleanup unused cmake 2021-10-07 10:09:01 -04:00
Peter van der Perk
a1247d6bcf [Kconfig] Backport cmake config changes 2021-10-07 10:09:01 -04:00
Peter van der Perk
21e6547ac7 [Kconfig] Toolchain & platform fixes, SITL still broken 2021-10-07 10:09:01 -04:00
Peter van der Perk
6af0477733 [Kconfig] Gnerate px4board from old cmake
Added make updateconfig to update all config when default's have changed
Added cmake to px4board conversion script
2021-10-07 10:09:01 -04:00