Sylphase SDGPS
The software-defined GPS(/GNSS) toolkit
multiantenna-channel-optimizer

Type signature: (observables->[observables])

The multiantenna-channel-optimizer node continuously optimizes the GNSS tracking channel allocation of multiantenna receiver systems by dropping SVs that are being redundantly tracked by multiple antennas. This frees up tracking channels to allow for acquisition of more diverse sets of SVs between antennas.

Specifically, multiantenna-channel-optimizer will check for SVs to drop every POLL_PERIOD seconds. It will only drop duplicate SVs if more than COUNT SVs are being tracked for a given GNSS system (e.g. GPS or GAL). COUNT should be set to --max-svs minus a small integer (e.g. 2) so that duplicate SVs are dropped only when nearly all tracking channels are in use. This is beneficial because tracking the same SV on both antennas is still more useful than leaving a tracking channel completely unused if not enough SVs are in view to non-redundantly utilize all tracking channels.

multiantenna-channel-optimizer will only drop signals that have a C/N0 at least MIN_DIFFERENCE dB lower than the same signal on another antenna. This is done so that signals are preferentially tracked on the antenna that is receiving them most strongly. However, this creates a deadband effect that can result in an SV being redundantly tracked on multiple antennas for arbitrarily long. This allows for seamless handoff of an SV from one antenna to another, but isn't necessarily optimal with regard to e.g. minimizing DOP.

Log output sample

2023-08-27 04:09:55.245398 multiantenna-channel-optimizer: [t=40643.944s] [GPS ] Tracking more SVs than threshold (12 > 10); looking for duplicates to drop ...
2023-08-27 04:09:55.245450 multiantenna-channel-optimizer: [t=40643.944s] [GAL ] Tracking more SVs than threshold (11 > 10); looking for duplicates to drop ...
2023-08-27 04:10:05.240564 multiantenna-channel-optimizer: [t=40653.944s] [GPS ] Tracking more SVs than threshold (12 > 10); looking for duplicates to drop ...
2023-08-27 04:10:05.240617 multiantenna-channel-optimizer: [t=40653.944s] [GAL ] Tracking more SVs than threshold (11 > 10); looking for duplicates to drop ...
2023-08-27 04:10:05.240666 multiantenna-channel-optimizer: [t=40653.944s] [1/0/GAL_E1B/Sig20] Dropping signal (reason: C/N_0=37.1 < 40.1)
2023-08-27 04:10:05.243524 tracker: [t=40653.953s] [1/0/GAL_E1B/Sig20] Commanding stop due to AbortSignalTracking FunctionalityCallback
2023-08-27 04:10:15.244089 multiantenna-channel-optimizer: [t=40663.944s] [GPS ] Tracking more SVs than threshold (12 > 10); looking for duplicates to drop ...

Help

Usage:

multiantenna-channel-optimizer [OPTION]...

Allowed options:

Option Description
--help produce help message
--svs-threshold COUNT (=10) drop duplicate SVs if currently tracking more than COUNT SVs (per GNSS system)
--min-difference MIN_DIFFERENCE (=3) only drop signals that have a C/N0 at least MIN_DIFFERENCE dB lower than the same signal on another antenna
--poll-period POLL_PERIOD (=10.000000000000000000) check for SVs to drop every POLL_PERIOD seconds