Commit Graph

18585 Commits

Author SHA1 Message Date
Jacob Dahl 30750f14cc refactor(local_position_estimator): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 57c0cb55fd refactor(load_mon): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 7c1fb356b7 refactor(landing_target_estimator): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 0d4d988260 refactor(land_detector): convert params.c to module.yaml
Convert 3 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl af4d7d0f5a refactor(hardfault_stream): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl b9ae81308b refactor(gyro_fft): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 8854aa0d5a refactor(gyro_calibration): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 14effea50d refactor(gimbal): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 664cd01d2e refactor(fw_rate_control): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 15fcc08df7 refactor(fw_mode_manager/runway_takeoff): convert params.c to module.yaml
Convert parameter definition(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl a8d385d56f refactor(fw_mode_manager/launchdetection): convert params.c to module.yaml
Convert parameter definition(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 4009643c4a refactor(fw_mode_manager): convert params.c to module.yaml
Convert 3 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl ada9784ba6 refactor(fw_lateral_longitudinal_control): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 9fc2289e00 refactor(fw_autotune_attitude_control): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl a0e6e8a240 refactor(fw_att_control): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 963a8757df refactor(flight_mode_manager/tasks/Orbit): convert params.c to module.yaml
Convert parameter definition(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl d46b1dcfea refactor(flight_mode_manager/tasks/ManualAccelerationSlow): convert params.c to module.yaml
Convert parameter definition(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 6a1db86110 refactor(flight_mode_manager/tasks/AutoFollowTarget): convert params.c to module.yaml
Convert parameter definition(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl be8f2dd1ab refactor(flight_mode_manager): convert params.c to module.yaml
Convert 4 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 0252c79550 refactor(events): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl caf031f94b refactor(dataman): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl d9c85d3e69 refactor(commander/HealthAndArmingChecks): convert params.c to module.yaml
Convert parameter definition(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl e72b73d0b8 refactor(commander/failure_detector): convert params.c to module.yaml
Convert parameter definition(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 536480458e refactor(commander): convert params.c to module.yaml
Convert 3 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl a9c641a9d8 refactor(battery_status): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl dfa5a9e603 refactor(attitude_estimator_q): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl e95d1d1e8e refactor(airspeed_selector): convert params.c to module.yaml
Convert 1 parameter file(s) from legacy C format to YAML
module configuration.
2026-03-19 23:46:16 -08:00
Jacob Dahl 7d56582915 refactor(commander): remove duplicate failure_detector_status from vehicle_status (#26754)
The failure_detector_status bitmask in vehicle_status duplicates the
separate FailureDetectorStatus topic. Remove it and read directly from
the dedicated topic in failureDetectorCheck and HIGH_LATENCY2.
2026-03-19 11:31:12 -08:00
Jacob Dahl 75a51c19c7 fix(commander): arm throttle check for all vehicle types (#26683)
Extend the arm throttle safety check to all vehicle types including
rovers, which were previously excluded. Unify the two separate throttle
checks into a single evaluation at arm-time that accounts for vehicle
type and control mode: rovers require centered stick, climb-rate modes
require stick at or below center, and manual/stab/acro modes require
stick at bottom.
2026-03-19 11:24:37 -08:00
Matthias Grob 4e2f3e7600 refactor(commander): remove unused parameter COM_HLDL_REG_T (#26809) 2026-03-19 11:01:32 -08:00
bresch f90b159401 feat(ekf2): generalize engine warmup mode
This is not only needed for engine warmup but in general, when the
vehicle is static on the ground, relying on fixed position to maintain a
valid global position estimate before takeoff, even when bumping it or
starting the engine.
2026-03-19 11:48:09 +01:00
Jacob Dahl f8f382a391 fix(control_allocator): add missing launch-lock rule items for servo types
PR #25799 added 'servo-launch-lock' to apply_identifiers (6 items) but
did not add a corresponding 6th entry to the 19 rule item arrays, causing
QGC to reject all servo-type rules with "unexpected num items expected: 6".
2026-03-18 10:34:08 +01:00
Jacob Dahl 0b956d9757 fix(airspeed_selector): remove @volatile from ASPD_SCALE params, add 3% save threshold
Remove the @volatile flag from ASPD_SCALE_1/2/3 so the estimated
airspeed scale persists across reboots and can be transferred between
vehicles of the same model. The scale is primarily determined by pitot
position on the airframe, not the individual sensor.

To avoid corrupting the param transfer hash with negligible changes
every flight, raise the save threshold from FLT_EPSILON to 3% relative
change, per dev-call consensus.

Supersedes #22760

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:30:12 +01:00
asimopunov dd7c47b7e3 fix(precland): use home position for precland altitude (#21260) 2026-03-18 00:32:35 -08:00
Eurus 305306ad1c fix(rtl_mission_fast_reverse): correct mission index assignment on activation (#26380)
After #25648, when performing RTL mission fast reverse, the vehicle would go to the waypoint before the previous one (i.e., two waypoints back). If the drone was already on its way to the first waypoint at that moment, it would even fly to the second waypoint first, and only then reverse back toward the takeoff point. This PR fixes that bug. #25648 was intended to address issues with NAV_CMD_CONDITION_GATE. The modification proposed in this PR also correctly bypasses NAV_CMD_CONDITION_GATE waypoints.
2026-03-18 00:04:44 -08:00
Silvan Fuhrer 89af91dbdb fix(npfg): use NFPG_DAMPING and NPFG_PERIOD to calculate directional p gain (#26765)
Signed-off-by: Silvan <silvan@auterion.com>
2026-03-17 20:57:29 -07:00
Jacob Dahl 4b2e0a6f59 feat(sensors/gps): add per-receiver GPS delay parameters (#26660)
* sensors: add per-receiver GPS delay parameters

Add SENS_GPS{0,1}_DELAY params to vehicle_gps_position, following the
same device-ID matching pattern used for antenna offsets. Each receiver
can now have its own measurement delay relative to the IMU.

The delay is applied to timestamp_sample before blending. When PPS time
correction is active it takes priority over the parameter-based delay.
When a GPS driver already provides its own timestamp_sample the
per-receiver delay is not applied on top of it.

* fix(ekf2): remove EKF2_GPS_DELAY and perform param transation

* fix(param_translation): fix GPS param migration return values

Add missing return for EKF2_GPS_POS_Z and remove incorrect return for
EKF2_GPS_DELAY (1-to-many migration should not return PARAM_MODIFIED).

* fix(sensors,ekf2): rename pps_compensation and clarify delay default

* fix(ekf2): account for SENS_GPS*_DELAY in observation buffer sizing

* fix(docs): migrate EKF2_GPS_DELAY param
2026-03-17 18:19:08 -08:00
Jacob Dahl 89855926ef feat(sensors/gps): move GPS antenna offsets to per-receiver parameters (#26634)
* sensors: move GPS antenna offsets to per-receiver parameters

Move antenna position configuration from the single EKF2_GPS_POS_X/Y/Z
parameter set into per-receiver SENS_GPS{0,1}_OFF{X,Y,Z} parameters in
the sensors module. Each offset slot is matched to a physical receiver
by device ID (SENS_GPS{0,1}_ID), falling back to uORB instance index
when no IDs are configured.

The antenna offset is now carried through the SensorGps uORB message
and blended alongside other GPS states when multi-receiver blending is
active, so EKF2 receives the correct lever arm for whichever receiver
(or weighted combination) is selected.

- Add antenna_offset_{x,y,z} fields to SensorGps.msg
- Remove EKF2_GPS_POS_X/Y/Z params; EKF2 reads offset from gnssSample
- Add SENS_GPS{0,1}_ID and SENS_GPS{0,1}_OFF{X,Y,Z} params (module.yaml)
- Blend antenna offsets in GpsBlending (weighted average)
- Add unit tests for single, blended, and failover antenna offset cases
- Migrate params.c to module.yaml for the vehicle_gps_position module

* sensors: gps_blending: add asymmetric weight and fallthrough offset tests

Add two additional antenna offset test cases:

- dualReceiverAsymmetricWeightAntennaOffset: verify that unequal eph
  values produce correctly skewed blend weights (0.8/0.2) and that the
  output antenna offset reflects the weighted average
- blendingFallthroughAntennaOffset: verify that when blending is enabled
  but can_do_blending evaluates false (eph=0), the non-blending path
  correctly assigns the selected receiver's antenna offset

* feat(param_translation): translate EKF2_GPS_POS_ to SENS_GPS0_OFF_

* fix(msgs): proper formatting

* chore(msg): 0 if invalid/unknown

* fix(ROMFS): migrate EKF2_GPS_POS_ params

* fix(docs): migrate EKF2_GPS_POS_ params

* fix(blending): unsigned param

* Update msg/SensorGps.msg

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix(sensors/gps): remove 'values:' tag in  module.yaml

* fix(sensors/gps): unsigned instance index

* fix(blending): restore const on gps_blend_states()

Move antenna offset blending into blend_gps_data() where the
weights are computed, keeping gps_blend_states() const.

* fix(sensors/gps): fix msg annotation and restore SENS_GPS_PRIME values

Remove incorrect @invalid NaN annotation from antenna offset fields
(0.0 default is correct, not a sentinel). Restore values tag for
SENS_GPS_PRIME so QGC shows a dropdown.

* fix(gps_blending): fix pre-existing bug to clear _gps_updated flags

The loop iterates over i but always clears gps_select_index. The intent is to clear
all updated flags, but only the selected one gets cleared (N times)

* test(gps_blending): add stale update flag regression test
2026-03-17 17:33:41 -08:00
Jacob Dahl f00e46f618 feat(dshot): Extended Telemetry and EEPROM support
Overhauls the DShot driver with per-timer BDShot selection, multi-timer                                                                                                                                  
sequential capture, Extended DShot Telemetry (EDT), and AM32 ESC EEPROM                                                                                                                                  
read/write via MAVLink. Expands ESC support from 8 to 12 channels.                                                                                                                                       
                                                                                                                                                                                                   
BDShot:                                                                                                                                                                                                  
- Per-timer BDShot protocol selection via actuator config UI                                                                                                                                             
- Multi-timer sequential burst/capture on any DMA-capable timer                                                                                                                                          
- Adaptive per-channel GCR bitstream decoding                                                                                                                                                            
- Per-channel online/offline detection with hysteresis                                                                                                                                                   
                                                                                                                                                                                                   
Extended DShot Telemetry (EDT):                                                                                                                                                                          
- Temperature, voltage, current from BDShot frames (no serial wire)                                                                                                                                      
- New DSHOT_BIDIR_EDT parameter                                                                                                                                     
- EDT data merged with serial telemetry when both available                                                                                                                                              
                                                                                                                                                                                                   
AM32 EEPROM:                                                                                                                                                                                             
- Read/write AM32 ESC settings via MAVLink ESC_EEPROM message                                                                                                                                            
- ESCSettingsInterface abstraction for future ESC firmware types                                                                                                                                         
- New DSHOT_ESC_TYPE parameter                                                                                                                                                                           
                                                                                                                                                                                                   
Other changes:                                                                                                                                                                                           
- Per-motor pole count params DSHOT_MOT_POL1–12 (replaces MOT_POLE_COUNT)                                                                                                                              
- EscStatus/EscReport expanded to 12 ESCs with uint16 bitmasks                                                                                                                                           
- Numerous bounds-check, overflow, and concurrency fixes                                                                                                                                                 
- Updated DShot documentation
2026-03-17 16:38:33 -08:00
Matthias Grob 09cb22f799 refactor(commander): remove unused parameter COM_MOT_TEST_EN 2026-03-17 12:56:18 -08:00
ghohl-30 9a5034b187 commander: fix typo in COM_RC_STICK_OV documentation (#26777) 2026-03-17 12:44:20 -08:00
Marco Hauswirth f2608089fd fix(commander): decouple heading preflight check from attitude mode requirement 2026-03-17 20:47:12 +01:00
ttechnick c5b8eee4c3 fix(fw_att_control): fix comments / docs 2026-03-17 17:59:20 +01:00
ttechnick 3601a01594 feat(fw_att_control): limit turn coordination to normal flight 2026-03-17 17:59:20 +01:00
ttechnick ca4ae7cf41 feat(fw_att_control): use Axis angles instead of Euler Angles 2026-03-17 17:59:20 +01:00
ttechnick 22cad6ebf7 fix(fw_att_control): guard against 0 in param 2026-03-17 17:59:20 +01:00
ttechnick c0e7086d90 feat(fw_att_control): add derrivation of formulas
refactor(fw_att_control): move error calc to function
2026-03-17 17:59:20 +01:00
ttechnick 82bf75df0f docs(fw_att_ctrl): update quat turn coordination
fix(fw_att_control): use correct formula
2026-03-17 17:59:20 +01:00
ttechnick a42e7ebb2a feat(fw_att_control): add yaw rotation unit test 2026-03-17 17:59:20 +01:00
bresch c71e196dcf feat(fw q att control): improve pitchrate tracking using turn coordination constraint
refactor(fw_att_control): clean-up & optimization
2026-03-17 17:59:20 +01:00