Initial Galileo receiver and SignalSim integration
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import numpy as np
|
||||
|
||||
from galileo_rx.acquisition.acquisition_manager import AcquisitionManager
|
||||
from galileo_rx.config import AcquisitionConfig
|
||||
from galileo_rx.signal_profiles import galileo_e1_profile
|
||||
from galileo_rx.signals.code_provider import SyntheticCodeProvider
|
||||
from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator
|
||||
|
||||
|
||||
def test_e1c_secondary_wipeoff_for_eight_ms() -> None:
|
||||
fs = 4.092e6
|
||||
profile = galileo_e1_profile()
|
||||
provider = SyntheticCodeProvider()
|
||||
generator = SyntheticSignalGenerator(
|
||||
profile, provider, fs,
|
||||
satellites=[SatelliteSignalConfig(8, "E1C", code_delay_chips=12.0, doppler_hz=500.0)],
|
||||
channel=ChannelModelConfig(add_awgn=False),
|
||||
)
|
||||
samples, _ = generator.generate(int(0.008 * fs))
|
||||
config = AcquisitionConfig(
|
||||
doppler_min_hz=500,
|
||||
doppler_max_hz=500,
|
||||
doppler_step_hz=250,
|
||||
coherent_integration_ms=8,
|
||||
noncoherent_accumulations=1,
|
||||
detection_threshold=1.5,
|
||||
zero_padding_mode="none",
|
||||
secondary_code_mode="wipeoff",
|
||||
parabolic_interpolation=False,
|
||||
)
|
||||
result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1C", 8)
|
||||
assert result.detected and abs(result.code_phase_chips - 12.0) < 0.3
|
||||
|
||||
|
||||
def test_e1b_bit_transition_hypothesis() -> None:
|
||||
fs = 4.092e6
|
||||
profile = galileo_e1_profile()
|
||||
provider = SyntheticCodeProvider()
|
||||
generator = SyntheticSignalGenerator(
|
||||
profile, provider, fs,
|
||||
satellites=[SatelliteSignalConfig(9, "E1B", code_delay_chips=20.0, navigation_bits=[1, -1])],
|
||||
channel=ChannelModelConfig(add_awgn=False),
|
||||
)
|
||||
samples, _ = generator.generate(int(0.008 * fs))
|
||||
config = AcquisitionConfig(
|
||||
doppler_min_hz=0,
|
||||
doppler_max_hz=0,
|
||||
doppler_step_hz=250,
|
||||
coherent_integration_ms=8,
|
||||
noncoherent_accumulations=1,
|
||||
detection_threshold=1.5,
|
||||
zero_padding_mode="none",
|
||||
bit_transition_mode="hypothesis",
|
||||
parabolic_interpolation=False,
|
||||
)
|
||||
result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1B", 9)
|
||||
assert result.detected and abs(result.code_phase_chips - 20.0) < 0.3
|
||||
Reference in New Issue
Block a user