Sylphase SDGPS
The software-defined GPS(/GNSS) toolkit
simulate-raw

Type signature: (solution->raw)

Simulate GNSS sample streams. Operates on configurable intervals, over which it linearly interpolates the effect of each satellite, allowing for computing the actual samples in a tight loop.

Help

Usage:

simulate-raw [OPTION]... [CONFIG_STR (=repofile:configs/simple)] [ENVIRONMENT_FILENAME]

Allowed options:

Option Description
--help produce help message
--config CONFIG_STR (=repofile:configs/simple) config string (run "sdgps help" for examples)
--satellites SATELLITES_FILENAME read satellite definitions from SATELLITES_FILENAME
--environment ENVIRONMENT_FILENAME read environment definitions from ENVIRONMENT_FILENAME; only simulate-raw supports this option currently
--start-stream-time STREAM_TIME (=10000001234.141592025756835936) first solution packet will correspond to this STREAM_TIME in output
--disable-plot disable plotting of the simulated scenario
--bit-inner-corruption-probability arg (=0) corrupt unprotected GNSS NAV bits this often (used for testing decoder robustness)
--bit-outer-corruption-probability arg (=0) corrupt ECC-protected GNSS NAV bits this often (used for testing decoder robustness)
--gps-broadcast-ionospheric-model GPS_IONOSPHERIC_MODEL JSON with Klobuchar ionospheric model parameters to be broadcast on GPS L1 and L2C signal; This will override the ionospheric model provided via SATELLITES_FILENAME; (e.g. the contents of data/sample_ionospheric_model.iono)
--broadcast-utc UTC_PARAMETERS_FILENAME JSON file with UTC parameters to be broadcast on GPS L2C signal (e.g. data/sample_utc_model.utc)
--broadcast-eop EOP_PROVIDER EOP provider used to generate EOP parameters to be broadcast on GPS L2C signal (e.g. dynamic:data/sample_eop_model.eop)
--broadcast-ggto GGTO_PARAMETERS_FILENAME JSON file with GGTO parameters to be broadcast on GAL_E1B and GAL_E5b signal (e.g. data/sample_ggto_model.ggto)
--broadcast-gps-l1-ura GPS_L1_URA URA value to be broadcast on GPS_L1 signal; default value is 2 meters (e.g. to simulate an invalid URA use '{"error":"invalid"}')
--broadcast-gps-l2c-ura GPS_L2C_URA URA value to be broadcast on GPS_L2C signal; default value is 2 meters (e.g. to simulate 2 meters use '{"result":2}')
--broadcast-galileo-sisa GALILEO_SISA SISA value to be broadcast on GAL_E1B and GAL_E5b signal; default value is 2 meters (uses same format as GPS_L1_URA and GPS_L2C_URA)
--broadcast-glonass-ura GLONASS_URA URA value to be broadcast on GLO_L1 and GLO_L2 signal; default value is 2 meters (uses same format as GPS_L1_URA and GPS_L2C_URA)
--sv-ephemeris-error arg (=0) 1D rms ephemeris error to simulate; each of the 3 spatial axes will have an independent 0-mean random offset with this standard deviation applied (units: meters)
--sv-clock-error arg (=0) rms clock error to simulate; SV clock will have a 0-mean random offset with this standard deviation applied (units: meters)
Note: SISRE (rms) = sqrt((--sv-ephemeris-error value)^2 + (--sv-clock-error value)^2)
--sv-error-relaxation-time RELAXATION_TIME (=3600) autocorrelation decay time constant of SV ephemeris/clock error random walk (units: seconds)
--sv-error-seed SEED (=default) seed for SV ephemeris/clock error random number generator; can be any string
--ztd-variation arg (=0) rms relative zenith tropospheric delay wander to simulate; nominal tropospheric delay will be scaled by a random walk with mean 1 and this standard deviation (unitless)
--ztd-relaxation-time RELAXATION_TIME (=3600) autocorrelation decay time constant of ZTD wander (units: seconds)
--cn0 CN0 fix all signal C/N_0 values to CN0 dB-Hz (default: C/N_0 is calculated based on SV-receiver range) (supports antenna-specific syntax: 'ANT0:45,ANT1:40')
--physical-ionospheric-model arg (=zero) ionospheric model that is used for computing simulated observables
--physical-tropospheric-model arg (=simple) tropospheric model that is used for computing simulated observables
--antenna-elevation-mask arg obscure SVs that have an elevation below this angle (elevation is relative to the horizon defined by the antenna's body-frame "axis" config parameter) (units: degrees) (multiantenna example: 'ANT0:20,ANT1:0')
--gnss-stream-group-delay arg simulate a per-GNSS-stream group delay to model e.g. cable delay or differential antenna SAW filter delay (example: "[1e-9, 2e-9]" to delay stream 0 by 1 ns and stream 1 by 2 ns)
--gain-pattern PROVIDER_NAME[:PROVIDER_ARGS...] (=isotropic) gain pattern provider name and arguments (e.g. "isotropic" or "crossed-dipole:'--radius=0.04527')
--sv-whitelist arg only simulate these SVIDs (e.g. "1,2,3")
--threads-per-gnss-stream THREADS (=4) distribute GNSS stream generation over THREADS threads
--gnss-interpolation-rate FREQUENCY (=100) linearly interpolate SV signals over intervals of 1/FREQUENCY seconds; increased rate adds computational overhead
--spur arg generate spur at this baseband frequency
--spur-cn0 arg (=60) C/N_0 of spurs added by --spur
--outage-start arg start GNSS outage (all SV signals disappear) at this GNSS time
--outage-end arg end GNSS outage (all SV signals reappear) at this GNSS time
--outage-mask arg limit outage to signals which have "STREAM/SUBSTREAM/GNSS/SVID" match this regex (example: '.*/.*/GPS_L2C/.*' will match all GPS_L2C SVs on all (sub)streams
--noise-seed arg (=default) seed for noise floor generation
--antialias (EXPERIMENTAL, SLOW) antialias signal by bandlimiting it to the band defined by the config's "spectrum_info" value
--oversampling-ratio arg (=3) oversampling ratio to reduce artifacts from linear interpolation; = (sampling rate) / (Nyquist rate); only has an effect if --antialias is used
--null arg generate null at this baseband frequency (units: Hertz); only has an effect if --antialias is used
--null-width arg (=1e5) width of nulls added by --null (units: Hertz)
--filter-rolloff arg bandpass filter rolloff (units: dB/MHz) (example: 10 for -10 dB/MHz); only has an effect if --antialias is used

Example

sdgps generate-simple-trajectory --angular-velocity-enu [0,0,1] --rate inf ! simulate-raw configs/simple

This will simulate at the raw level, running as fast as possible.