Initial Galileo receiver and SignalSim integration
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
"""Generate a deterministic, synthetic (not ICD-code) E1C recording."""
|
||||
|
||||
from galileo_rx.io.sample_writer import write_samples
|
||||
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
|
||||
|
||||
fs = 4.092e6
|
||||
generator = SyntheticSignalGenerator(
|
||||
galileo_e1_profile(), SyntheticCodeProvider(), fs,
|
||||
satellites=[SatelliteSignalConfig(1, "E1C", code_delay_chips=120.0, doppler_hz=1250.0, cn0_db_hz=48.0)],
|
||||
channel=ChannelModelConfig(seed=2026),
|
||||
)
|
||||
samples, truth = generator.generate(int(0.1 * fs))
|
||||
write_samples("e1_synthetic.c128", samples)
|
||||
print(truth)
|
||||
@@ -0,0 +1,16 @@
|
||||
"""Generate and acquire one synthetic E1C satellite."""
|
||||
|
||||
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
|
||||
|
||||
fs = 4.092e6
|
||||
profile, provider = galileo_e1_profile(), SyntheticCodeProvider()
|
||||
generator = SyntheticSignalGenerator(profile, provider, fs, satellites=[SatelliteSignalConfig(1, code_delay_chips=120, doppler_hz=1250, cn0_db_hz=48)], channel=ChannelModelConfig(seed=11))
|
||||
samples, _ = generator.generate(int(0.008 * fs))
|
||||
config = AcquisitionConfig(doppler_min_hz=-2500, doppler_max_hz=2500, noncoherent_accumulations=2, zero_padding_mode="none")
|
||||
result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1C", 1)
|
||||
print(result)
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Complete synthetic generate/acquire/track flow."""
|
||||
|
||||
from run_tracking import measurements, result
|
||||
|
||||
print(f"detected={result.detected}, Doppler={result.doppler_hz:.1f} Hz, epochs={len(measurements)}")
|
||||
@@ -0,0 +1,19 @@
|
||||
"""Acquire then track a synthetic pilot."""
|
||||
|
||||
from galileo_rx.acquisition.acquisition_manager import AcquisitionManager
|
||||
from galileo_rx.config import AcquisitionConfig, TrackingConfig
|
||||
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
|
||||
from galileo_rx.tracking.tracking_channel import TrackingChannel
|
||||
|
||||
fs = 4.092e6
|
||||
profile, provider = galileo_e1_profile(), SyntheticCodeProvider()
|
||||
generator = SyntheticSignalGenerator(profile, provider, fs, satellites=[SatelliteSignalConfig(1, code_delay_chips=40, doppler_hz=750, cn0_db_hz=50)], channel=ChannelModelConfig(seed=5))
|
||||
samples, _ = generator.generate(int(0.12 * fs))
|
||||
acq_config = AcquisitionConfig(doppler_min_hz=-2000, doppler_max_hz=2000, noncoherent_accumulations=2, zero_padding_mode="none")
|
||||
result, _ = AcquisitionManager(profile, provider, fs, acq_config).acquire_one(samples, "E1C", 1)
|
||||
channel = TrackingChannel(profile, provider, fs, TrackingConfig(secondary_code_mode="wipeoff", pull_in_duration_ms=20), result)
|
||||
measurements = channel.process(samples)
|
||||
print(measurements[-1])
|
||||
|
||||
Reference in New Issue
Block a user