ekf2: add multi-instance AGP parameters

Add per-instance parameters for auxiliary global position sources,
allowing configuration of up to 4 AGP slots with individual source IDs.
This commit is contained in:
Marco Hauswirth
2026-02-12 16:19:56 +01:00
committed by Marco Hauswirth
parent dd177ac8cf
commit 1d852907a2
@@ -1,10 +1,22 @@
__max_num_agp_instances: &max_num_agp_instances 4
module_name: ekf2 module_name: ekf2
parameters: parameters:
- group: EKF2 - group: EKF2
definitions: definitions:
EKF2_AGP_CTRL: EKF2_AGP${i}_ID:
description: description:
short: Aux global position (AGP) sensor aiding short: Auxiliary global position sensor ${i} ID
long: 'Sensor ID for slot ${i}. Set to 0 to disable this slot.'
type: int32
default: 0
min: 0
max: 255
num_instances: *max_num_agp_instances
instance_start: 0
EKF2_AGP${i}_CTRL:
description:
short: Auxiliary global position sensor ${i} aiding
long: 'Set bits in the following positions to enable: 0 : Horizontal position long: 'Set bits in the following positions to enable: 0 : Horizontal position
fusion 1 : Vertical position fusion' fusion 1 : Vertical position fusion'
type: bitmask type: bitmask
@@ -14,9 +26,11 @@ parameters:
default: 0 default: 0
min: 0 min: 0
max: 3 max: 3
EKF2_AGP_MODE: num_instances: *max_num_agp_instances
instance_start: 0
EKF2_AGP${i}_MODE:
description: description:
short: Fusion reset mode short: Fusion reset mode for sensor ${i}
long: 'Automatic: reset on fusion timeout if no other source of position is available long: 'Automatic: reset on fusion timeout if no other source of position is available
Dead-reckoning: reset on fusion timeout if no source of velocity is available' Dead-reckoning: reset on fusion timeout if no source of velocity is available'
type: enum type: enum
@@ -24,28 +38,34 @@ parameters:
0: Automatic 0: Automatic
1: Dead-reckoning 1: Dead-reckoning
default: 0 default: 0
EKF2_AGP_DELAY: num_instances: *max_num_agp_instances
instance_start: 0
EKF2_AGP${i}_DELAY:
description: description:
short: Aux global position estimator delay relative to IMU measurements short: Auxiliary global position sensor ${i} delay (to IMU)
type: float type: float
default: 0 default: 0
min: 0 min: 0
max: 300 max: 1000
unit: ms unit: ms
reboot_required: true reboot_required: true
decimal: 1 decimal: 1
EKF2_AGP_NOISE: num_instances: *max_num_agp_instances
instance_start: 0
EKF2_AGP${i}_NOISE:
description: description:
short: Measurement noise for aux global position measurements short: Measurement noise for auxiliary global position sensor ${i}
long: Used to lower bound or replace the uncertainty included in the message long: Used to lower bound or replace the uncertainty included in the message
type: float type: float
default: 0.9 default: 1.0
min: 0.01 min: 0.01
unit: m unit: m
decimal: 2 decimal: 2
EKF2_AGP_GATE: num_instances: *max_num_agp_instances
instance_start: 0
EKF2_AGP${i}_GATE:
description: description:
short: Gate size for aux global position fusion short: Gate size for auxiliary global position sensor ${i} fusion
long: Sets the number of standard deviations used by the innovation consistency long: Sets the number of standard deviations used by the innovation consistency
test. test.
type: float type: float
@@ -53,3 +73,5 @@ parameters:
min: 1.0 min: 1.0
unit: SD unit: SD
decimal: 1 decimal: 1
num_instances: *max_num_agp_instances
instance_start: 0