Daniel Agar
4263fa9ee4
ekf2: stop flow fusion on numerical error
2024-07-11 12:22:26 -04:00
Daniel Agar
b425253a54
ekf2: stop mag fusion on numerical error
2024-07-11 12:19:50 -04:00
Daniel Agar
9124a7b471
ekf2: add IMU delta_ang_dt/delta_vel_dt safety constrain before pushing into buffer
2024-07-10 21:20:47 -04:00
Daniel Agar
ac77049c47
ekf2: directly use IMU sample to find corresponding aid source sample
...
- I think this helps make it clear we're using a sensor sample
corresponding with a particular IMU sample
2024-07-10 21:20:47 -04:00
Daniel Agar
f93dc61770
ekf2: use bias corrected angular velocity
...
- avoid unnecessarily storing _ang_rate_delayed_raw
2024-07-10 21:20:47 -04:00
Daniel Agar
75bb339d94
ekf2: remove warning events logging
...
- some of these warning flags aren't even being used, and most of the rest we can figure out from other sources
2024-07-10 10:43:55 -04:00
Daniel Agar
c29b4ff87e
ekf2: apply astyle formatting and enforce
2024-07-10 10:43:55 -04:00
Daniel Agar
223397c20e
ekf2: always add accel/gyro bias process noise
...
- continue adding accel/gyro bias process noise even if inhibited
2024-07-10 11:49:01 +02:00
Daniel Agar
62ff39a669
ekf2: EV vel (body) update last fuse timestamps
...
- these are set by the NED fuseVelocity() helper so also need to be set in the body frame velocity case
2024-07-09 10:16:12 -04:00
Daniel Agar
5d08b97fd7
ekf2: add vehicle_local_position dist_bottom_var
2024-07-09 10:10:01 -04:00
Daniel Agar
3e3b886b5d
ekf2: add terrain estimator_status_flags
2024-07-09 10:10:01 -04:00
Daniel Agar
64a6971bdb
ekf2: only limit opt flow HAGL if range only terrain
...
- increase HALG limit from 75%->90% of sensor max
2024-07-09 10:10:01 -04:00
Daniel Agar
c56f84fe8a
ekf2: range, check if terrain valid for reset on fusion timeout
2024-07-09 10:10:01 -04:00
Daniel Agar
e52025cc20
ekf2: optical flow fusion timeout only reset if quality is good
2024-07-09 10:10:01 -04:00
Daniel Agar
6be06ecbb3
ekf2: optical flow failing also reset terrain if needed
2024-07-09 10:10:01 -04:00
Daniel Agar
ea8f14b883
ekf2: optical flow logic, timeout if bad_tilt, etc
...
- previously we could get stuck with optical flow still technically
active (_control_status.flags.opt_flow=true), but nothing being
updated due to excessive tilt, etc
2024-07-09 10:10:01 -04:00
Daniel Agar
8bf15b01c4
ekf2: optical flow don't compute innovation variance twice
...
- collapse updateOptFlow() and startFlowFusion() to avoid recomputing H
- this is a relatively expensive call we can easily avoid with the
right structure
2024-07-09 10:10:01 -04:00
Daniel Agar
f709ed409d
ekf2: optical flow stop reset all flags
2024-07-09 10:10:01 -04:00
Daniel Agar
9dfd82ab06
ekf2: optical flow remove _flow_data_ready flag
2024-07-09 10:10:01 -04:00
Daniel Agar
7047f9441c
ekf2: fix calcOptFlowBodyRateComp() gyro bias
...
- adjust flow sample gyro_rate immediately after popping from ring
buffer
- always update flow gyro bias (calcOptFlowBodyRateComp()) regardless
of flow quality or magnitude
2024-07-09 10:10:01 -04:00
Daniel Agar
4d324da9f8
ekf2: update flow aid src status every sample
2024-07-09 10:10:01 -04:00
Daniel Agar
bcd666b3f8
ekf2: fix optical flow start logic
...
- remove fallthrough that enables flow regardless of success
- add appropriate start messages for each case
2024-07-09 10:10:01 -04:00
Daniel Agar
bf4e564b23
ekf2: resetTerrainToFlow() reset aid src status appropriately
2024-07-09 10:10:01 -04:00
Daniel Agar
ced609daa8
ekf2: flow fusion start require valid fusion
2024-07-09 10:10:01 -04:00
Daniel Agar
1df8f3f9d2
ekf2: resetFlowFusion() reset aid src status appropriately
2024-07-09 10:10:01 -04:00
Daniel Agar
0742d356f5
ekf2: more conservative clipping checks for bad_acc_clipping fault status ( #23337 )
...
- track accel clipping count per axis
- only set bad_acc_clipping fault_status if at least one axis is
clipping continuously or if all have been clipping at warning level
- Note: this doesn't impact the clipping projections that boost the
accel process noise, pause bias estimation, and skip gravity fusion
on a per sample basis
2024-06-28 16:45:08 -04:00
Daniel Agar
30b854da35
ekf2: verbose logging control (new EKF2_LOG_VERBOSE)
...
- new parameter EKF2_LOG_VERBOSE to enable (currently enabled by default)
- force advertise topics immediately (based on EKF2_LOG_VERBOSE and per aid source configuration)
- logger optionally log all estimator topics at minimal rate
2024-06-27 01:10:57 -04:00
Daniel Agar
78fd9a15f8
flight_mode_manager: delete unused avoidance waypoint
2024-06-27 01:08:16 -04:00
Daniel Agar
338bcc6ca3
ekf2: disable EKF2_EV_CTRL and EKF2_AGP_CTRL by default
2024-06-26 17:10:28 -04:00
Daniel Agar
30ce560e3a
ekf2: mag control reset filtered test ratio on start (if aligning yaw)
2024-06-20 13:41:54 -04:00
Daniel Agar
dcb1103299
ekf2: move estimator_status test ratios to filtered values
2024-06-20 13:41:54 -04:00
Daniel Agar
741c7ab610
Update submodule GPS drivers to latest Wed Jun 19 00:38:26 UTC 2024
...
- GPS drivers in PX4/Firmware (e5d44cc1ba691f075bc2bce52dea7ec88af9e6cd): https://github.com/PX4/PX4-GPSDrivers/commit/0b79ec4dbe3e5ac5925c011067e7e294033a0a32
- GPS drivers current upstream: https://github.com/PX4/PX4-GPSDrivers/commit/a41210ede8c2d22dd8e9fdcf388fca927c1fc5e1
- Changes: https://github.com/PX4/PX4-GPSDrivers/compare/0b79ec4dbe3e5ac5925c011067e7e294033a0a32...a41210ede8c2d22dd8e9fdcf388fca927c1fc5e1
a41210e 2024-06-18 Daniel Agar - sbf: fix code style
2024-06-18 21:03:27 -04:00
Daniel Agar
e33ba810e9
boards: px4_fmu-v5x_test disable differential_drive module to fix flash overflow
2024-06-18 18:48:13 -04:00
Daniel Agar
69a4a11c7f
boards: cuav/nora disable modules to fix flash overflow
2024-06-18 18:47:42 -04:00
Daniel Agar and PX4 BuildBot
81f26be846
Update submodule GPS drivers to latest Tue Jun 18 12:39:32 UTC 2024
...
- GPS drivers in PX4/Firmware (c29d189788090f6994e488f65789a8fe6b835d8d): https://github.com/PX4/PX4-GPSDrivers/commit/d92cf3a2b2704d5509b651bfca33cdfea3a7a18a
- GPS drivers current upstream: https://github.com/PX4/PX4-GPSDrivers/commit/0b79ec4dbe3e5ac5925c011067e7e294033a0a32
- Changes: https://github.com/PX4/PX4-GPSDrivers/compare/d92cf3a2b2704d5509b651bfca33cdfea3a7a18a...0b79ec4dbe3e5ac5925c011067e7e294033a0a32
0b79ec4 2024-04-12 Thomas Frans - sbf: fix issue with automatic base config in QGC
5810dac 2024-04-12 Thomas Frans - style: add editorconfig file for consistent style
915024c 2024-03-26 Julian Oes - sbf: fix subsequent init in QGC
3ea1d76 2024-03-04 Julian Oes - sbf: don't foget to configure RTCM
c6da592 2024-03-04 Julian Oes - sbf: don't change baudrate of USB port
Co-authored-by: PX4 BuildBot <bot@px4.io >
2024-06-18 13:55:02 -04:00
Daniel Agar
8b9900cce3
mc_pos_control: new velocity low pass and notch filter (optional, disabled by default)
...
- MPC_VEL_LP: new velocity first order low pass filter (off by default)
- MPC_VEL_NF_FRQ/MPC_VEL_NF_BW: new velocity notch filter (off by default)
- MPC_VELD_LP: existing velocity derivative low pass filter, but I've dropped the remaining controllib usage
2024-06-18 11:47:19 -04:00
Daniel Agar
206488b844
ekf2: innovation sequence monitoring for all aid sources
...
- add new 'innovation_filtered' and 'test_ratio_filtered' fields to
estimator_aid_source topics
2024-06-17 15:30:42 -04:00
Daniel Agar
f9160853fa
rc_update: purge deprecated RC switch parameters
...
- these are old RC switch configuration parameters that haven't been used for
years, but were hardcoded into old versions of QGC
- RC_MAP_RATT_SW, RC_MAP_POSCTL_SW, RC_MAP_ACRO_SW, RC_MAP_STAB_SW, RC_MAP_MAN_SW deleted
-
2024-06-17 12:03:13 -04:00
Daniel Agar
c0d6b67633
matrix: Vector2/Vector4 override ops so specific Vector type is returned
...
- mirrored from Vector3
2024-06-14 10:53:27 -04:00
Daniel Agar
783cf9aede
vscode: cmake default status bar visibility
...
- this is important for setting the active PX4 configuration
2024-06-14 10:52:19 -04:00
Daniel Agar
fb659ae200
ekf2: stopMagFusion() reset yaw_align if mag heading was active
...
- we also need to clear mag_aligned_in_flight
2024-06-06 10:08:20 -04:00
Daniel Agar
bfe3c86aeb
ekf2: merge mag yaw angle observability into heading consistency
...
- the additional hyteresis logic for "yaw angle observable" was
needed when it controlled time dependent mag_3d
2024-06-06 10:07:31 -04:00
Daniel Agar
157f7cf40b
simplify world_magnetic_model interface (degrees in, degrees out)
...
- this hopefully helps avoid accidental mis-use
- try to clarify units everywhere
2024-06-04 09:14:36 -04:00
Daniel Agar
5fa3b9d86a
lib/world_magnetic_model: fetch_noaa_table.py refactor and scaling improvements
...
- upate to NOAA grid API to build WMM table in one pass
- refactor declination/inclination/totalintensity table printing to
shared method
- compute scaling factor to maximize resolution
2024-06-04 09:14:36 -04:00
Daniel Agar
f3d152741c
boards: sky-drones_smartap-airlink_default disable gyro_fft module to save flash
2024-05-29 20:38:49 -04:00
Daniel Agar
b36f47535e
boards: px4_fmu-v6c_default disable gyro_fft module to save flash
2024-05-29 20:38:49 -04:00
Daniel Agar
a80c96e575
boards: px4_fmu-v5x_test disable payload_deliverer module to save flash
2024-05-29 20:38:49 -04:00
Daniel Agar and bresch
d359f6236e
ekf2: symforce zero more efficiently ( #23133 )
...
- increase symforce CppConfig zero_initialization_sparsity_threshold so
that a Matrix setZero() call is performed instead of individually zeroing
Co-authored-by: bresch <brescianimathieu@gmail.com >
2024-05-17 11:20:30 +02:00
Daniel Agar
bb5dfc7d51
integrationtests: mavros/mission_test.py bump yaw_error_std threshold (heading init is delayed, but not wrong)
2024-05-17 11:19:04 +02:00
Daniel Agar
5173830718
ekf2: mag fusion don't update all states or tilt by default
...
- cleanup some of the legacy mag flags
2024-05-17 11:19:04 +02:00
Daniel Agar
bfc39cf341
ekf2: mag control always populate estimator aid src
2024-05-17 11:19:04 +02:00
Daniel Agar
95ae5a657d
ekf2: merge mag_3d_control + mag_control
2024-05-17 11:19:04 +02:00
Daniel Agar
224d6f2fa7
ekf2: ekf_helper.cpp remove duplicate method comments (comment on declaration only, not definition)
2024-05-02 17:40:58 -04:00
Daniel Agar
c1fc893cca
ekf2: move gyro/accel/wind covariance reset helpers to covariance.cpp
2024-05-02 17:40:58 -04:00
Daniel Agar
63c2ea33c1
ekf2: move Ekf::resetQuatStateYaw() to yaw_fusion.cpp
2024-05-02 17:40:58 -04:00
Daniel Agar
1ca4056b6a
ekf2: delete unused Ekf::resetImuBias()
2024-05-02 17:40:58 -04:00
Daniel Agar
6b3b66619b
ekf2: move baro dynamic pressure compensation to aid_sources/barometer
2024-05-02 17:40:58 -04:00
Daniel Agar
4f0eb72fc9
ekf2: move IMU down sampler to imu_down_sampler/
2024-05-02 17:40:58 -04:00
Daniel Agar
58637d3825
ekf2: move terrain estimator and derivation to terrain_estimator/
2024-05-02 17:40:58 -04:00
Daniel Agar
58de8cbb77
ekf2: move fake_height, fake_pos, zero_innovation_heading to aid_sources/
2024-05-02 17:40:58 -04:00
Daniel Agar
49c782bad9
ekf2: move bias estimators to bias_estimtor/
2024-05-02 17:40:58 -04:00
Daniel Agar
e262fde4dc
ekf2: move aux global position fusion to aid_sources/aux_global_position
2024-05-02 17:40:58 -04:00
Daniel Agar
b8d46e60a5
ekf2: move mag fusion to aid_sources/magnetometer
2024-05-02 17:40:58 -04:00
Daniel Agar
3f6c3e0649
ekf2: move output predictor to output_predictor/
2024-05-02 17:40:58 -04:00
Daniel Agar
24fdd696cb
ekf2: move range finder files to aid_sources/range_finder
2024-05-02 17:40:58 -04:00
Daniel Agar
3dbd3f8a1a
ekf2: move airspeed fusion file to aid_sources/airspeed
2024-05-02 17:40:58 -04:00
Daniel Agar
789b2b3d8a
ekf2: move sideslip fusion file to aid_sources/sideslip
2024-05-02 17:40:58 -04:00
Daniel Agar
eb8ee74066
ekf2: move baro height file to aid_sources/barometer
2024-05-02 17:40:58 -04:00
Daniel Agar
de178b1435
ekf2: move gravity fusion file to aid_sources/gravity
2024-05-02 17:40:58 -04:00
Daniel Agar
78f2ccbb60
ekf2: move optical flow files to aid_sources/optical_flow
2024-05-02 17:40:58 -04:00
Daniel Agar
fcf94e7670
ekf2: move GNSS files to aid_sources/gnss
2024-05-02 17:40:58 -04:00
Daniel Agar
31ae5b77fe
ekf2: move drag_fusion file to aid_sources/drag
2024-05-02 17:40:58 -04:00
Daniel Agar
c3fb0b1090
ekf2: move auxvel file to aid_sources/auxvel
2024-05-02 17:40:58 -04:00
Daniel Agar
b5d1e87368
ekf2: move EV files to aid_sources/external_vision
2024-05-02 17:40:58 -04:00
Daniel Agar
c64104e9f1
sensors/vehicle_angular_velocity: silence gyro selection fallback warning (PX4_WARN -> PX4_DEBUG)
...
- this warning was to catch any potential errors in sensor selection
relative to what's actually available, we don't need to complain
about initial selection before the EKF selector is available
2024-05-02 11:53:31 -04:00
Daniel Agar
33234f4dc0
drivers/ins/vectornav: add missing sensor_gps velocity magnitude
2024-05-01 20:40:28 -04:00
Daniel Agar
b6da0b141d
ekf2: GPS yaw only invalidate yaw_align if stopping due to fusion failure
2024-04-29 21:04:21 -04:00
Daniel Agar
eb59bb9de9
simulation/gz_bridge: eliminate implicit float conversion
2024-04-24 15:51:30 -04:00
Daniel Agar
bfb04ddd19
CMakeLists: install_python_requirements allow --break-system-packages
2024-04-22 12:11:53 -04:00
Daniel Agar
0a7689f323
drivers/optical_flow/paa3905: fix RegisterRead udelay
2024-04-18 20:57:37 -04:00
Daniel Agar
2a328615ed
drivers/optical_flow/paw3902: fix RegisterRead udelay
2024-04-18 20:57:37 -04:00
Daniel Agar
ec3ceae45e
ekf2: move yaw_estimator and derivation to dedicated folder
2024-04-18 15:14:59 -04:00
Daniel Agar
78bbb66568
delete SYS_MC_EST_GROUP
...
- introduce per module parameters (EKF2_EN, LPE_EN, ATT_EN)
- add basic checks to prevent EKF2 + LPE running simultaneously
2024-04-15 16:06:08 -04:00
Daniel Agar
c024ea396a
boards/px4/fmu-v5x: remove legacy rover_pos_control to reduce flash usage
2024-03-22 15:17:03 -04:00
Daniel Agar
34c19b2e5a
boards/px4/fmu-v5x: default remove systemcmds/sd_stress to save flash
2024-03-20 12:35:34 -04:00
Daniel Agar and Mathieu Bresciani
35532609c9
mathlib: utilities refactor float to function template (for optional double precision usage)
...
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com >
2024-03-20 11:10:37 -04:00
Daniel Agar
a1cce7e961
uxrce_dds_client: optimizations and instrumentation
...
- skip ping session if data flowing bidirectionally
- add perf counters for loop time and interval
- skip blocking poll if there's input data to read
2024-03-12 16:22:26 -04:00
Daniel Agar
b115d3cd44
uxrce_dds_client: refactor init to retry indefinitely
...
- move init from UxrceddsClient to init() method so that retry is
possible for both serial and UDP init
2024-03-12 16:22:26 -04:00
Daniel Agar
1c741836c0
sensors/vehicle_imu: sensor update loop limit iterations
2024-03-06 21:19:38 -05:00
Daniel Agar
8b6c70e0f2
sensors/vehicle_angular_velocity: sensor update loop limit iterations
2024-03-06 21:19:38 -05:00
Daniel Agar
1fc38aab92
sensors/vehicle_air_data: sensor update loop limit iterations
2024-03-06 21:19:38 -05:00
Daniel Agar
2bf1eeb003
sensors/vehicle_acceleration: sensor update loop limit iterations
2024-03-06 21:19:38 -05:00
Daniel Agar
87960c04d8
mag_bias_estimator: sensor update loop limit iterations
2024-03-06 21:19:38 -05:00
Daniel Agar
d96970a2b9
sensor/vehicle_magnetometer: sensor update loop limit iterations
...
- place upper bound to prevent looping indefinitely (high publish rate, etc)
2024-03-06 21:19:38 -05:00
Daniel Agar
8001132d33
ekf2: ZeroGyroUpdate move to fuseDirectStateMeasurement
2024-02-26 12:32:59 -05:00
Daniel Agar and Matthias Grob
b2b7439060
ROMFS: respect kconfig for including romfs files (airframes, etc) ( #22571 )
...
* ROMFS: respect kconfig for including romfs files (airframes, etc)
* ROMFS: only add R1 airframe with differential drive control
* ROMFS: adapt to differential drive module renaming
---------
Co-authored-by: Matthias Grob <maetugr@gmail.com >
2024-02-23 15:40:00 +01:00
Daniel Agar
506c60c471
ekf2: declination fusion don't use uninitialized parameter (EKF2_MAG_DECL)
2024-02-21 09:45:44 -05:00
Daniel Agar
8243b4f474
ekf2: move vel/pos reset helpers
2024-02-20 13:16:24 -05:00
Daniel Agar
22b957696d
ekf2: velocity/position fusion helper minor consistency cleanup
2024-02-20 13:16:24 -05:00
Daniel Agar
c338891677
ekf2: split vel_pos_fusion.cpp
2024-02-20 13:16:24 -05:00