config

package
v0.32.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 10, 2025 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

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

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
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL