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

Type signature: (solution->solution)

extrapolate-realtime-trajectory functions as an elastic buffer between a solution source and a solution sink, much like the buffer node. However, if the sink is consuming packets faster than the source is producing them such that its stream time is ahead of the source's stream time, extrapolate-realtime-trajectory will extrapolate the solution trajectory forward using a simple physics model to make up the slack.

| |---------------- extrapolate-realtime-trajectory node ------------------------| |
| (solution packets in) (solution packets out) |
|[source node] ----------> [inter-thread lockfree circular buffer] ----------> [extrapolator] ----------> [sink node]|
|<------- Parent thread -----------------| |---------- Child thread -------------------------------------------->|

The physics model used for extrapolation currently models a body under continuous acceleration. This has been found to be suitable for both ground and orbital scenarios.



extrapolate-realtime-trajectory [OPTION]...

Allowed options:

Option Description
--help produce help message
--sample-rate arg (=100) rate of generated trajectory samples (units: Hertz)
--maximum-extrapolation arg (=1.000000000000000000) maximum duration by which trajectory will be extrapolated forward in time, relative to the latest received trajectory packet
--maximum-position-error MAGNITUDE (=0.01) warn if position extrapolation error exceeds MAGNITUDE (units: meters)
--strict make any warning message a fatal error
--queue-size arg (=1024) number of trajectory packets thread-to-thread circular buffer can hold
--plot plot latency and extrapolation error
--min-sample-period arg (=0) minimum width between plot points in seconds; plot points closer than this will be averaged
--x-axis-unit arg (=sec) unit of X axis (options: sec, min, hour, day)
--x-axis-absolute plot absolute stream time on X axis instead of relative to now (implied by --wait)
--detrend <no effect>
--wait wait for pipeline to terminate, then plot (default: live plotting)
--live-history arg (=60) duration of live history buffer in seconds
--title-suffix arg append string to plot titles


sdgps \
generate-orbital-trajectory --rate inf --duration 30 \
! extrapolate-realtime-trajectory \
! plot-solution --wait --reference-pipeline @FIRSTNODE