Commit Graph

29226 Commits

Author SHA1 Message Date
Marco Hauswirth c8a1a38147 style(ekf2): minor style fixes 2026-04-02 16:20:19 +02:00
Marco Hauswirth 4caee55a76 submodule(mavlink): update to latest mavlink/main to include ESTIMATOR_SENSOR_FUSION_STATUS, MAV_CMD_ESTIMATOR_SENSOR_ENABLE 2026-04-02 16:20:19 +02:00
Marco Hauswirth fffc1b5d04 test(ekf2): sync EkfWrapper with FusionControl enabled flags
EkfWrapper now holds a FusionControl pointer and enables all sensors
by default. Sensor-specific enable methods also set fc.enabled = true.
2026-04-02 16:20:19 +02:00
Marco Hauswirth 6a7e39aa64 feat(mavlink): ESTIMATOR_SENSOR_FUSION_STATUS stream
Add MAVLink stream that maps EstimatorFusionControl uORB message to
ESTIMATOR_SENSOR_FUSION_STATUS, exposing per-sensor intended/active
bitmasks to the GCS.
2026-04-02 16:20:19 +02:00
Marco Hauswirth 6306c78f79 feat(ekf2): EKF2_SENS_EN param, SensEnBit enum, MAVLink fusion command
Add EKF2_SENS_EN bitmask parameter (replaces EKF2_EN_BOOT) with
per-sensor enable bits. initFusionControl reads SENS_EN while disarmed.
handleSensorFusionCommand sets FusionSensor.enabled via
VEHICLE_CMD_ESTIMATOR_SENSOR_ENABLE. syncSensEnParam writes back to
param on disarm. Update EstimatorFusionControl.msg to bool
intended/active fields. Update VehicleCommand.msg FUSION_SOURCE enum.
2026-04-02 16:20:19 +02:00
Marco Hauswirth b9a1c429b3 refactor(ekf2): FusionSensor available/enabled/intended() data model
Split FusionSensor into available (CTRL param != disabled) and enabled
(runtime-toggleable). intended() = enabled && available. EKF core aid
sources now set available themselves and use intended() or _params
directly for CTRL-level checks. Remove drag/imu from FusionControl,
add aspd/rngbcn. Add AGP sourceFusingBitmask() for active-status.
2026-04-02 16:20:19 +02:00
Marco Hauswirth 0dd1640a54 feat(ekf2): enable fusion-ctrl toggle over mavlink cmd, CTRL param act only as reference 2026-04-02 16:20:19 +02:00
Nick 76eca4b7a4 feat(actuators): Control Flaps from AUX channel (#26913)
* feat(rc): flaps via AUX channel

* docs(actuators): add flaps and spoilers from RC

Co-authored-by: Silvan Fuhrer <silvan@auterion.com>

* docs(actuators): Update docs/en/payloads/generic_actuator_control.md

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

* docs(actuators): move flaps setup docs

---------

Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2026-04-02 11:48:44 +02:00
alexcekay 56c69f4c07 fix(mavftp): don't use cache for other sys/comp ids 2026-04-02 11:20:23 +02:00
ttechnick 935a21d05c fix(fw_attitude_control): correct turn coordination 2026-04-02 09:28:44 +02:00
ttechnick d2e3668ad9 fix(fw_attitude_controller): fix typo 2026-04-02 09:28:44 +02:00
Marco Hauswirth 93955bd313 chore(gazebo): update gazebo-classic submodule, remove ranging-beacon from constrained-flash-boards 2026-04-01 15:01:31 +02:00
Marco Hauswirth 65c96fb2bf feat(simulation): add ranging beacon simulation in SIH 2026-04-01 15:01:31 +02:00
Marco Hauswirth f4c820c7e1 feat(ekf2): add ranging beacon fusion support
- Add Symforce-derivation
- No altitude correction
- EKF2 replay
- New params
2026-04-01 15:01:31 +02:00
Marco Hauswirth c260794122 feat(mavlink): add ranging beacon parser and uORB message 2026-04-01 15:01:31 +02:00
Onur Özkan 7d392394dd fix(build): add kconfig support for fortified toolchains 2026-03-31 22:23:50 -08:00
Jacob Dahl a09c76d30d fix(mpl3115a2): correct timestamp_sample to integration midpoint
The MPL3115A2 ADC conversion at OSR 2 (ratio 4) takes ~18ms. The
driver polls until the conversion completes, so the read time is at
the end of the integration window. Correct timestamp_sample to the
midpoint by subtracting CONVERSION_TIME / 2.
2026-03-31 16:37:12 -08:00
Jacob Dahl 4b6cd37a23 fix(lps25h): correct timestamp_sample to integration midpoint
The LPS25H one-shot measurement is integrated over a ~40ms window
(at 25Hz-equivalent internal averaging). The read time corresponds to
the end of the integration window. Correct timestamp_sample to the
midpoint by subtracting CONVERSION_INTERVAL / 2.
2026-03-31 16:37:12 -08:00
Jacob Dahl ffa10ab362 fix(lps22hb): correct timestamp_sample to integration midpoint
The LPS22HB one-shot measurement is integrated over a ~40ms window
(at 25Hz-equivalent internal averaging). The read time corresponds to
the end of the integration window. Correct timestamp_sample to the
midpoint by subtracting CONVERSION_INTERVAL / 2.
2026-03-31 16:37:12 -08:00
Jacob Dahl e253c1e20c fix(ms5837): correct timestamp_sample to integration midpoint
Same fix as MS5611: the MS5837 ADC conversion at OSR 1024 takes
~2.28ms, but the data is read after a 10ms scheduling delay. Correct
timestamp_sample by subtracting (CONVERSION_INTERVAL - CONVERSION_TIME/2)
from the read time.
2026-03-31 16:37:12 -08:00
Jacob Dahl c149bad4f2 fix(ms5611): correct timestamp_sample to integration midpoint
The MS5611 ADC conversion at OSR 1024 takes ~2.28ms, but the data is
read after a 10ms scheduling delay. The current code timestamps the
read time, which is ~8.9ms after the true integration midpoint.
Correct timestamp_sample by subtracting the full offset
(CONVERSION_INTERVAL - CONVERSION_TIME/2) from the read time.
2026-03-31 16:37:12 -08:00
Jacob Dahl 8170e113fd fix(bmp581): correct timestamp_sample to integration midpoint
The BMP581 pressure measurement is integrated over a configurable
window (~23ms at 32x pressure / 2x temperature oversampling). The
read time corresponds to the end of the integration window, introducing
a systematic timing bias. Correct timestamp_sample to the midpoint by
subtracting measurement_time / 2.
2026-03-31 16:37:12 -08:00
Jacob Dahl 7f59e5dc16 fix(bmp280): correct timestamp_sample to integration midpoint
The BMP280 pressure measurement is integrated over _measure_interval
(~43ms at 16x pressure / 2x temperature oversampling). The read time
corresponds to the end of the integration window, introducing a
systematic timing bias. Correct timestamp_sample to the midpoint by
subtracting measurement_time / 2.
2026-03-31 16:37:12 -08:00
Jacob Dahl 654306e9ed feat(logger): add high rate sensor topics at 100hz (#26922)
Set all high_rate_sensors_topics to 100hz (10ms interval) and add
vehicle_air_data, vehicle_thrust_setpoint, estimator_aid_src_baro_hgt,
and vehicle_magnetometer.
2026-03-31 16:09:50 -08:00
Jacob Dahl 0deb6b33ee fix(bmp388): correct timestamp_sample to integration midpoint (#26920)
The BMP388 pressure measurement is integrated over a configurable
window (e.g. 37ms at 16x oversampling). The previous code used the
read time as timestamp_sample, which is the end of the integration
window. Correct to the midpoint by subtracting half the measurement
time, with a guard against unsigned underflow.
2026-03-31 15:35:36 -08:00
Victor Nan Fernandez-Ayala 62b94fa73e docs(frames_sub): update BlueROV2 docs and align UUV surge/heave stick mapping (#26822)
* Swap joystick surge/heave mapping in manual, stabilized and acro modes to make it similar to position modes

* docs: update UUV/BlueROV2 modes and joystick mapping

* Document basic control axes and joystick mapping

Added basic control axes and stick mapping for BlueROV2.

* Fixed formatting issue

* Enhance clarity of control axes and stick mapping

Clarified descriptions of motion axes and joystick controls for BlueROV2.
2026-03-31 14:42:52 -07:00
Jacob Dahl d5d2ce26d7 fix(dshot): map MAVLink standard ACTUATOR_OUTPUT_FUNCTION to PX4 OutputFunction (#26909)
The MAVLink standard defines ACTUATOR_OUTPUT_FUNCTION_MOTOR1=1..MOTOR16=16,
but PX4 internally uses OutputFunction::Motor1=101..Motor12=112. The DShot
driver only handled PX4 internal values (101+) and QGC legacy values (1101+),
so any standards-compliant GCS sending the MAVLink enum values would get
VEHICLE_CMD_RESULT_UNSUPPORTED back from MAV_CMD_CONFIGURE_ACTUATOR.

Add a mapping from MAVLink standard values (1-16) to PX4 internal values
(101-116) by adding 100, matching the existing QGC backwards-compat pattern.
2026-03-31 08:52:25 -08:00
Nick 1d81ecb08d fix(dshot): no warning if dshot unconfigured (#26917) 2026-03-31 08:52:15 -08:00
alexcekay d24d4a4fc4 uavcan: fix battery sub not working 2026-03-31 13:12:23 +02:00
Anil Kircaliali d4e60cb1dc feat(navigator): support MAV_FRAME_GLOBAL_INT and MAV_FRAME_GLOBAL_RELATIVE_ALT_INT for RTL safe points (#26901)
* navigator:  support MAV_FRAME_GLOBAL_INT and MAV_FRAME_GLOBAL_RELATIVE_ALT_INT for RTL safe points

* Fix descriptive comment

* refactor(rtl): consolidate frame cases that are duplicate

---------

Co-authored-by: Matthias Grob <maetugr@gmail.com>
2026-03-30 19:33:46 +02:00
ttechnick c2c811072e fix(mavlink): GPS jamming only warning 2026-03-30 14:48:51 +02:00
ttechnick 6c775c5a81 feat(mavlink): resend MISSION_COUNT when its dropped 2026-03-27 08:41:30 +01:00
Claudio Chies 5a4c13fc23 fix(commander): ADSB timeout modification and cosmetics (#26878)
* fix(commander): add tab character to critical system loss messages

* fix(commander): extend timeout for traffic avoidance system heartbeat check

* Commander: Only Warn the user about traffic avoidance system loss if COM_ARM_TRAFF is set

Signed-off-by: Claudio Micheli <claudio@auterion.com>

---------

Signed-off-by: Claudio Micheli <claudio@auterion.com>
Co-authored-by: Claudio Micheli <claudio@auterion.com>
2026-03-26 18:41:33 -07:00
Onur Özkan 6b17795aa4 fix(lib/gnss/test): mark buildRawFrame noinline to avoid GCC false positive (#26877)
GCC 14.3.0 emits `-Wstringop-overflow` when `RtcmTest::buildRawFrame()`
is optimized and inlined.

This change marks the helper `noinline` to keep it out of that optimization path.

Preserves the existing logic and only changes how the compiler emits the test helper.

Fixes https://github.com/PX4/PX4-Autopilot/issues/26875

Signed-off-by: Onur Özkan <work@onurozkan.dev>
2026-03-26 10:34:40 -08:00
Valentin Bugrov 1bef6390f2 fix(drvers/ins): InertialLabs INS driver fix name-collision (#26874) 2026-03-25 09:44:49 -08:00
Marco Hauswirth b82894143e fix(sensors): restrict baro calibrations to ground 2026-03-25 17:29:22 +01:00
Claudio Chies 72bcbdc1bb fix(ekf2): update minimum values for required EPH and EPV parameters 2026-03-25 13:54:44 +01:00
ttechnick ecd553da6a fix(mavlink): fix gps utc timestamp 2026-03-25 13:50:56 +01:00
Mahima Yoga 5d26d7126a feat(fw-launch-detection): use acceleration magnitude instead of body-forward (#26857)
* feat(fw-launch-detection): use acceleration magnitude for launch detection

* docs: update takeoff docs

---------

Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
2026-03-24 16:14:42 +01:00
mahima-yoga 873ee61d57 commander: enable arming on boot 2026-03-24 15:01:15 +00:00
Matteo Del Seppia 860505fc05 refactor(collision_prevention): Remove loop in _checkSetpointDirectionFeasability() (#26856)
* Refactor feasibility check for setpoint direction

* Add check for out of bounds index

* Formatting
2026-03-23 17:28:57 -08:00
Pavel Guzenfeld f003fc39cb fix(uxrce_dds_client): handle empty DDS subscriptions in build (#26846)
When all subscription topics are commented out in dds_topics.yaml,
the build failed in two ways:

1. KeyError in generate_dds_topics.py when the subscriptions key is
   absent from YAML — fixed by using dict.get() with fallback to
   empty list, consistent with how subscriptions_multi is handled.

2. Unused variable errors (-Werror) in the generated dds_topics.h
   when no subscriptions exist — fixed by guarding on_topic_update(),
   time_offset_us, and uxr_set_topic_callback() with conditional
   template blocks. Also marked create_data_reader() as
   __attribute__((unused)) since it is only called from generated
   subscription code.

Closes #26799

Signed-off-by: Pavel Guzenfeld <pavelgu@gmail.com>
2026-03-23 00:10:40 +00:00
Konstantin Lelkov 552262f14f feat(dronecan): increase outputs from 8 to 12 (#25837)
* [feat] allowed to assign up to 16 ESC CAN

* Update EscStatus.msg

lowered down to 12 motors, hardware tested

* Update module.yaml

lowered down to 12 motors, hardware tested

---------

Co-authored-by: klelkov <kon.lelkov@yandex.ru>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2026-03-20 21:55:04 -08:00
Eric Katzfey 02a31d0293 fix(qurt): Added i2c uninitialize on probe failure to prevent zombie ports 2026-03-20 13:00:16 -07:00
Silvan ffd670b54c chore(navigator): move return to point of last link from RTL to Hold
Give the operator the optiont to configure a "Hold at position where
the data link was still coming through" by setting NAV_DLL_ACT to Hold
and the new param NAV_LTR_LAST_DL to 1.

Signed-off-by: Silvan <silvan@auterion.com>
2026-03-20 17:55:42 +01:00
Silvan 7922ecbed2 feat(Commander): add preflight check for containing rally point for RTL_TYPE 5
Signed-off-by: Silvan <silvan@auterion.com>
2026-03-20 17:55:42 +01:00
Pernilla 424f544c6d feat(gimbal): reduce poll time in aux mode 2026-03-20 14:08:55 +01:00
Jacob Dahl 882bee610d feat(logger): add sensor_baro to high rate sensors logging profile (#26834) 2026-03-20 00:46:43 -08:00
ttechnick c333688700 feat(commander): prevent termination on arm after gcs loss 2026-03-20 09:19:59 +01:00
Jacob Dahl 7bf9d73179 fix(parameters): add RC*_REV float to int32 migration
Existing saved parameters store RC*_REV as float. The parameter
import system does strict type checking and would silently skip
these on firmware update. Add migration to preserve user settings.
2026-03-19 23:46:16 -08:00