Documentation
¶
Index ¶
- type CombinationConfig
- type CorrectionConfig
- type ModelConfig
- type PPPARConfig
- type PPPARPipelineBuilder
- func (b *PPPARPipelineBuilder) Build() (*pipeline.Pipeline, error)
- func (b *PPPARPipelineBuilder) BuildFloatOnly() (*pipeline.Pipeline, error)
- func (b *PPPARPipelineBuilder) BuildWithAR() (*pipeline.Pipeline, error)
- func (b *PPPARPipelineBuilder) GetConfig() PPPARConfig
- func (b *PPPARPipelineBuilder) SetConfig(config PPPARConfig)
- type PipelineBuilder
- type ProcessingConfig
- type ProcessingMode
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CombinationConfig ¶
type CombinationConfig struct {
IonosphereFree bool // ionosphere-free combination
NarrowLane bool // narrow-lane combination
WideLane bool // wide-lane combination
GeometryFree bool // geometry-free combination
MelbourneWubbena bool // Melbourne-Wübbena combination
}
CombinationConfig enables/disables linear combinations.
type CorrectionConfig ¶
type CorrectionConfig struct {
Troposphere bool // tropospheric delay
Ionosphere bool // ionospheric delay (if single-freq or testing)
Sagnac bool // Sagnac effect
PhaseWindup bool // carrier phase windup
Relativity bool // relativistic effects
TidalLoading bool // solid earth tide
OceanLoading bool // ocean loading
PCV bool // phase center variation
PCO bool // phase center offset
}
CorrectionConfig enables/disables individual corrections. This allows A/B testing of corrections to see their impact.
type ModelConfig ¶
type ModelConfig struct {
// Troposphere model: "niell", "sasstamoinen", "stanag"
Troposphere string
// Ionosphere model: "klobuchar", "nequickg", "bdgim", "dual-freq"
Ionosphere string
// Satellite position: "broadcast", "precise" (SP3)
SatellitePosition string
// Clock: "broadcast", "precise" (SP3 or CLK)
Clock string
}
ModelConfig specifies which models to use for various corrections.
type PPPARConfig ¶
type PPPARConfig struct {
ProcessingConfig // Embed base processing configuration
// Precise product settings
SP3FilePath string // Path to SP3 precise orbit file
CLKFilePath string // Path to clock (CLK) file
BiasSINEXPath string // Path to Bias-SINEX file (CODE or IGS)
VMFGridPath string // Path to VMF troposphere grid files
AntexFilePath string // Path to ANTEX antenna calibration file
// Processing mode
ProcessingMode string // "static" or "kinematic"
// Ambiguity resolution settings
AREnabled bool // Enable ambiguity resolution
ARMinRatio float64 // Ratio test threshold (default: 3.0)
ARMinSatellites int // Minimum satellites required for AR (default: 5)
ARValidationMethod string // "ratio", "w-test", or "combined"
// Troposphere estimation
EstimateTroposphere bool // Enable troposphere estimation
TroposphereModel string // "VMF1", "VMF3", or "Saastamoinen"
EstimateGradients bool // Estimate troposphere gradients (North/East)
// Process noise parameters (for Kalman filter)
ProcessNoisePosition float64 // m²/s - for kinematic mode
ProcessNoiseClock float64 // m²/s - receiver clock random walk
ProcessNoiseTroposphere float64 // m²/s - troposphere ZWD random walk
ProcessNoiseAmbiguity float64 // cycles²/s - float ambiguity process noise (typically 0)
// Measurement weighting
CodeSigma float64 // Code measurement std dev (meters), default: 1.0
PhaseSigma float64 // Phase measurement std dev (meters), default: 0.01
}
PPPARConfig extends ProcessingConfig with PPP-AR specific settings
func NewDefaultPPPARConfig ¶
func NewDefaultPPPARConfig() PPPARConfig
NewDefaultPPPARConfig returns a PPPARConfig with sensible defaults
func NewPPPARConfig ¶
func NewPPPARConfig(initialPosition coordinates.Vector3D) PPPARConfig
NewPPPARConfig creates a PPPARConfig with the given initial position
type PPPARPipelineBuilder ¶
type PPPARPipelineBuilder struct {
// contains filtered or unexported fields
}
PPPARPipelineBuilder constructs PPP-AR processing pipelines
func NewPPPARPipelineBuilder ¶
func NewPPPARPipelineBuilder(config PPPARConfig, store *ephemeris.EphemerisStore) *PPPARPipelineBuilder
NewPPPARPipelineBuilder creates a new PPP-AR pipeline builder
func (*PPPARPipelineBuilder) Build ¶
func (b *PPPARPipelineBuilder) Build() (*pipeline.Pipeline, error)
Build constructs a complete PPP-AR processing pipeline
func (*PPPARPipelineBuilder) BuildFloatOnly ¶
func (b *PPPARPipelineBuilder) BuildFloatOnly() (*pipeline.Pipeline, error)
BuildFloatOnly builds a PPP pipeline without ambiguity resolution
func (*PPPARPipelineBuilder) BuildWithAR ¶
func (b *PPPARPipelineBuilder) BuildWithAR() (*pipeline.Pipeline, error)
BuildWithAR builds a PPP-AR pipeline with ambiguity resolution enabled
func (*PPPARPipelineBuilder) GetConfig ¶
func (b *PPPARPipelineBuilder) GetConfig() PPPARConfig
GetConfig returns the current configuration
func (*PPPARPipelineBuilder) SetConfig ¶
func (b *PPPARPipelineBuilder) SetConfig(config PPPARConfig)
SetConfig updates the configuration
type PipelineBuilder ¶
type PipelineBuilder struct {
// contains filtered or unexported fields
}
PipelineBuilder constructs processing pipelines based on configuration. This implements the builder pattern for creating configurable pipelines.
func NewPipelineBuilder ¶
func NewPipelineBuilder(config ProcessingConfig, store *ephemeris.EphemerisStore) *PipelineBuilder
NewPipelineBuilder creates a new pipeline builder with the given configuration.
func (*PipelineBuilder) Build ¶
func (b *PipelineBuilder) Build() (*pipeline.Pipeline, error)
Build constructs a complete processing pipeline based on the configuration. The pipeline is built in a specific order to ensure dependencies are met: 1. Ephemeris and position (required for all other processors) 2. Geometry (required for corrections and combinations) 3. Corrections (atmospheric, relativistic) 4. Linear combinations 5. Quality checks (elevation mask, etc.)
func (*PipelineBuilder) GetConfig ¶
func (b *PipelineBuilder) GetConfig() ProcessingConfig
GetConfig returns the current configuration.
func (*PipelineBuilder) SetConfig ¶
func (b *PipelineBuilder) SetConfig(config ProcessingConfig)
SetConfig updates the configuration. This allows dynamic reconfiguration of the builder.
func (*PipelineBuilder) Validate ¶
func (b *PipelineBuilder) Validate() error
Validate checks if the configuration is valid.
type ProcessingConfig ¶
type ProcessingConfig struct {
// Receiver position in ECEF coordinates (meters)
ReceiverPosition coordinates.Vector3D
// Systems to process (e.g., GPS, GALILEO, GLONASS)
Systems []gnss.System
// Elevation masks per system (degrees)
ElevationMasks map[gnss.System]float64
// Model selections
Models ModelConfig
// Correction toggles
Corrections CorrectionConfig
// Linear combination toggles
Combinations CombinationConfig
// Processing mode
Mode ProcessingMode
}
ProcessingConfig defines the configuration for GNSS processing pipelines. This replaces and extends the existing config.Config with more flexibility.
func DefaultConfig ¶
func DefaultConfig() ProcessingConfig
DefaultConfig returns a reasonable default configuration.
func DefaultPPPConfig ¶
func DefaultPPPConfig() ProcessingConfig
DefaultPPPConfig returns a configuration suitable for PPP processing.
func DefaultTDCPConfig ¶
func DefaultTDCPConfig() ProcessingConfig
DefaultTDCPConfig returns a configuration suitable for TDCP velocity processing.
type ProcessingMode ¶
type ProcessingMode string
ProcessingMode defines the type of positioning solution.
const ( ModeSPP ProcessingMode = "spp" // Single Point Positioning ModeTDCP ProcessingMode = "tdcp" // Time-Differenced Carrier Phase (velocity) ModePPP ProcessingMode = "ppp" // Precise Point Positioning ModeRTK ProcessingMode = "rtk" // Real-Time Kinematic )