ginan icon indicating copy to clipboard operation
ginan copied to clipboard

Clock error, orbit determination accuracy is relatively low

Open gnss-freshman opened this issue 3 months ago • 1 comments

Dear ginan team: I used sample data to run the pod. Below is my pod.yaml file.

inputs:

include_yamls: [ /home/jddai/ginan/inputData/products/boxwing.yaml ] # required if using boxwing model

inputs_root: /home/jddai/ginan/inputData/products/

atx_files:  [ igs20.atx                             ] # required
egm_files:  [ tables/EGM2008.gfc                    ] # Earth gravity model coefficients file
igrf_files: [ tables/igrf13coeffs.txt               ]
erp_files:  [ finals.data.iau2000.txt        ]
planetary_ephemeris_files: [ tables/DE436.1950.2050 ]

troposphere:
    gpt2grid_files: [ tables/gpt_25.grd ]

tides:
    ocean_tide_loading_blq_files:   [ tables/OLOAD_GO.BLQ                  ] # required if ocean loading is applied
    atmos_tide_loading_blq_files:   [ tables/ALOAD_GO.BLQ                  ] # required if atmospheric tide loading is applied
    ocean_pole_tide_loading_files:  [ tables/opoleloadcoefcmcor.txt ] # required if ocean pole tide loading is applied
    ocean_tide_potential_files:     [ tables/fes2014b_Cnm-Snm.dat   ]

snx_files:
# - "*.SNX" # use a wild card to include all files matching the description in the directory
- tables/igs_satellite_metadata_2203_plus.snx
- tables/sat_yaw_bias_rate.snx
- tables/qzss_yaw_modes.snx
- tables/bds_yaw_modes.snx
- IGS1R03SNX_20191950000_07D_07D_CRD.SNX

satellite_data:
    nav_files: [ brdm1990.19p ]

gnss_observations:
    gnss_observations_root: /home/jddai/ginan/inputData/data
    rnx_inputs:
    - AREG00PER_R_20191990000_01D_30S_MO.rnx
    - ASCG00SHN_R_20191990000_01D_30S_MO.rnx
    - CEDU00AUS_R_20191990000_01D_30S_MO.rnx
    - COCO00AUS_R_20191990000_01D_30S_MO.rnx
    - CPVG00CPV_R_20191990000_01D_30S_MO.rnx
    - DARW00AUS_R_20191990000_01D_30S_MO.rnx
    - DGAR00GBR_R_20191990000_01D_30S_MO.rnx
    - DJIG00DJI_R_20191990000_01D_30S_MO.rnx
    - FAIR00USA_R_20191990000_01D_30S_MO.rnx
    - HERS00GBR_R_20191990000_01D_30S_MO.rnx
    - HOB200AUS_R_20191990000_01D_30S_MO.rnx
    - IISC00IND_R_20191990000_01D_30S_MO.rnx
    - JFNG00CHN_R_20191990000_01D_30S_MO.rnx
    - KARR00AUS_R_20191990000_01D_30S_MO.rnx
    - KIRI00KIR_R_20191990000_01D_30S_MO.rnx
    - KOKV00USA_R_20191990000_01D_30S_MO.rnx
    - LHAZ00CHN_R_20191990000_01D_30S_MO.rnx
    - LMMF00MTQ_R_20191990000_01D_30S_MO.rnx
    - MAW100ATA_R_20191990000_01D_30S_MO.rnx
    - MBAR00UGA_R_20191990000_01D_30S_MO.rnx
    - METG00FIN_R_20191990000_01D_30S_MO.rnx
    - MGUE00ARG_R_20191990000_01D_30S_MO.rnx
    - NICO00CYP_R_20191990000_01D_30S_MO.rnx
    - NKLG00GAB_R_20191990000_01D_30S_MO.rnx
    - OHI300ATA_R_20191990000_01D_30S_MO.rnx
    - POAL00BRA_R_20191990000_01D_30S_MO.rnx
    - QUIN00USA_R_20191990000_01D_30S_MO.rnx
    - REYK00ISL_R_20191990000_01D_30S_MO.rnx
    - RGDG00ARG_R_20191990000_01D_30S_MO.rnx
    - SAMO00WSM_R_20191990000_01D_30S_MO.rnx
    - SEY200SYC_R_20191990000_01D_30S_MO.rnx
    - SOLO00SLB_R_20191990000_01D_30S_MO.rnx
    - TONG00TON_R_20191990000_01D_30S_MO.rnx
    - TOPL00BRA_R_20191990000_01D_30S_MO.rnx
    - TOW200AUS_R_20191990000_01D_30S_MO.rnx
    - USN700USA_R_20191990000_01D_30S_MO.rnx
    - VACS00MUS_R_20191990000_01D_30S_MO.rnx
    - ZIM200CHE_R_20191990000_01D_30S_MO.rnx
    - CUSV00THA_R_20191990000_01D_30S_MO.rnx

outputs:

outputs_root:                   /home/jddai/ginan/out/output_pod_example_300/

metadata:
    config_description:         pod_example
    analysis_agency:            GAA
    analysis_centre:            Geoscience Australia -----FILE NOT FOR OPERATIONAL USE-----
    analysis_software:          Ginan v3.0
    rinex_comment:              AUSNETWORK1
    gradient_mapping_function:  Chen & Herring, 1992        # (string) Name of mapping function used for mapping horizontal troposphere gradients
    ocean_tide_loading_model:   FES2014                     # (string) Ocean tide loading model applied
    reference_system:           igs20                       # (string) Terrestrial Reference System Code
    time_system:                G                           # (string) Time system - e.g. "G", "UTC"

trace:
    level:                      3
    output_receivers:           true
    output_network:             true
    receiver_filename:          <RECEIVER>_<CONFIG>_<YYYY><DDD><HH>.TRACE
    network_filename:           <RECEIVER>_<CONFIG>_<YYYY><DDD><HH>.TRACE
    output_residuals:           true
    output_residual_chain:      true
    output_config:              true

network_statistics:
    output:                     true                             # (bool) Enable exporting network statistics data to file
    directory:                  ./pod_network                          # (string) Directory to export network statistics data
    filename:                   <CONFIG>_network_statistics.json # (string) Network statistics data filename

gpx:
    output: true

sinex:
    output:                     true
    directory:                  ./pod_snx
    filename:                   <CONFIG>_<YYYY><DDD><HH>.SNX

sp3:
    output:                     true
    directory:                  ./pod_sp3
    filename:                   <CONFIG>_<YYYY><DDD><HH>.SP3
    output_interval:            30 # (int) Update interval for sp3 records

clocks:
    output:                     true
    directory:                  ./pod_clk
    filename:                   <CONFIG>_<YYYY><DDD><HH>.CLK

erp:
     output:                     true
     directory:                  ./pod_erp
     filename:                   <CONFIG>_<YYYY><DDD><HH>.ERP

orbex:
    output:                     true
    filename:                   <CONFIG>_<YYYY><DDD><HH>.OBX
    directory:                  ./pod_orbex
    attitude_sources:           [MODEL, NOMINAL]

satellite_options:

global:

    #clock_codes:                       [AUTO, AUTO]

    models:
        clock:
            enable:                    true
            sources:                   [KALMAN, PRECISE, BROADCAST]
        pos:
            enable:                    true
            sources:                   [KALMAN, PRECISE, BROADCAST]
        attitude:
            enable:                    true
            sources:                   [MODEL, PRECISE, NOMINAL]
        pco:
            enable:                    true
        pcv:
            enable:                    true
        code_bias:
            enable:                    true
            default_bias:              0
            undefined_sigma:           0
        phase_bias:
            enable:                    false
            default_bias:              0
            undefined_sigma:           0

    orbit_propagation:
        albedo:                   cannonball
        antenna_thrust:           true
        empirical:                true
        empirical_dyb_eclipse:    [true,false,false]
        planetary_perturbations:  [moon,sun,mercury,venus,mars,jupiter,saturn,uranus,neptune,pluto]
        pseudo_pulses:
            enable:               false
        solar_radiation_pressure: boxwing
        mass:                     1000
        area:                     15
        srp_cr:                   1.75
        power:                    20

GPS:
    clock_codes: [ L1W,L2W ]

# G04:
#     exclude:                           true
G15:
    exclude:                           true

E05: { exclude: true }
E06: { exclude: true }
E10: { exclude: true }
E16: { exclude: true }
E17: { exclude: true }
E23: { exclude: true }
E28: { exclude: true }
E29: { exclude: true }
E32: { exclude: true }
E34: { exclude: true }
E35: { exclude: true }

receiver_options: # Options to configure individual stations or global configs

USN7:
    aliases: [PIVOT]

global:

    error_model:                elevation_dependent         # uniform, elevation_dependent
    elevation_mask:             10
    code_sigma:                 0.4
    phase_sigma:                0.002
    clock_codes:                [AUTO, AUTO]
    zero_dcb_codes:             [NONE, NONE]
    models:
        eccentricity:
            enable:             true                            # (bool) Enable modelling of antenna eccentricities
        attitude:
            enable:             true                            # (bool) Enables non-nominal attitude types
            sources:            [MODEL, NOMINAL]       # List of sourecs to use for attitudes
        clock:
            enable:             true                            # (bool) Enable modelling of clocks
        pco:
            enable:             true                            # (bool) Enable modelling of phase center offsets
        pcv:
            enable:             true                            # (bool) Enable modelling of phase center variations
        code_bias:
            enable:             true                            # (bool) Enable modelling of code biases
            default_bias:       0                               # (float) Bias to use when no code bias is found
            undefined_sigma:    0                               # (float) Uncertainty sigma to apply to default code biases
        phase_bias:
            enable:             false                           # (bool) Enable modelling of phase biases
            default_bias:       0                               # (float) Bias to use when no phase bias is found
            undefined_sigma:    0                               # (float) Uncertainty sigma to apply to default phase biases
        pos:
            enable:             true                            # (bool) Enable modelling of position
        ionospheric_components:                                 # Ionospheric models produce frequency-dependent effects
            enable: true                                        # Enable ionospheric modelling
            use_2nd_order:  true
            use_3rd_order:  true
        troposphere:
            enable: true
            models: [gpt2]
        eop:
            enable: true

    apriori_sigma_enu:      [0.003, 0.003, 0.009]                 # Use these fixed igma'sfor sites listed below
    mincon_scale_apriori_sigma:  1                                # Use ALL fixed and/or SINEX file sigma's (!! first preference to the fixed sigma's !!)
    mincon_scale_filter_sigma:   0
#ABMF: {mincon_scale_apriori_sigma: 3 }
#ALBH: {mincon_scale_apriori_sigma: 3 }
#ALGO: {mincon_scale_apriori_sigma: 3 }

processing_options:

process_modes:
    preprocessor:                 true
    spp:                          true
    ppp:                          true
    ionosphere:                   false

epoch_control:
    epoch_interval:               30
    wait_next_epoch:              3600     # Wait up to an hour for next data point - When processing RINEX causes PEA to wait a long as need for last epoch to be processed.
    wait_all_receivers:           1

gnss_general:
    rec_reference_system:         gps
    minimise_sat_clock_offsets:   true
    sys_options:
        gps:
            process:              true
            ambiguity_resolution: false
            reject_eclipse:       false
            code_priorities:      [ L1W, L1C, L2W ]
        # gal:
        #     process:                true
        #     ambiguity_resolution:   false
        #     reject_eclipse:         false
        #     code_priorities:        [ L1C, L5Q, L1X, L5X ]
        # glo:
        #     process:                true
        #     ambiguity_resolution:   false
        #     reject_eclipse:         true
        #     code_priorities:        [ L1P, L1C, L2P, L2C ]
        # qzs:
        #     process:                true
        #     ambiguity_resolution:   false
        #     reject_eclipse:         true
        #     code_priorities:        [ L1C, L2L, L2X ]

spp:
    always_reinitialise: false
    max_lsq_iterations: 12
    outlier_screening:
        max_gdop: 30
        postfit:
            sigma_check: true

ppp_filter:
    ionospheric_components:
        common_ionosphere:        true
        use_if_combo:             false
    outlier_screening:
        prefit:
            max_iterations: 2
            sigma_check: true
            sigma_threshold: 5
            omega_test: false
        postfit:
            max_iterations: 10
            sigma_check: true
            sigma_threshold: 3

    rts:
        enable:                   true

model_error_handling:
    meas_deweighting:
        deweight_factor:          10000
    state_deweighting:
        deweight_factor:          10000
    ambiguities:
        outage_reset_limit:       3

        phase_reject_limit:       2
        reset_on:
            gf:    true
            lli:   true
            mw:    true
            scdia: true
    exclusions:
        gf:      true
        lli:     true
        mw:      true
        scdia:   true
        eclipse: false
    ionospheric_components:
        outage_reset_limit: 3
    orbit_errors:
        enable:                      false
        pos_process_noise:           10
        vel_process_noise:           1
        vel_process_noise_trail:     0
        vel_process_noise_trail_tau: 0

minimum_constraints:
    enable:                       true
    rotation:
        estimated:                [true]
    scale:
        estimated:                [true]
    translation:
        estimated:                [true]
    application_mode:             weight_matrix
    constrain_orbits:             false
    outlier_screening:                             # Statistical checks allow for detection of outliers that exceed their confidence intervals
        postfit:
            max_iterations:       10               # Maximum number of measurements to exclude using postfit checks while iterating filter
            sigma_check:          true             # Enable sigma check
            sigma_threshold:      3                # Sigma threshold
        prefit:
            max_iterations:       2                # Maximum number of measurements to exclude using prefit checks before attempting to filter
            omega_test:           false            # Enable omega-test
            sigma_check:          true             # Enable sigma check
            sigma_threshold:      5                # Sigma threshold

orbit_propagation:
    integrator_time_step:         60    # Timestep for the integrator, must be smaller than the processing time step, might be adjusted if the processing time step isn't a integer number of time steps
    central_force:                true
    egm_field:                    true  # Acceleration due to the high degree model of the Earth gravity model (exclude degree 0, made by central_force)
    egm_degree:                   15    # J2 acceleration perturbation due to the Sun and Moon
    solid_earth_tide:             true  # Model accelerations due to solid earth tides
    ocean_tide:                   true  # Model accelerations due to ocean tides model
    pole_tide_solid:              true  # Model accelerations due to solid pole tide (degree 2 only)
    pole_tide_ocean:              true
    general_relativity:           true
    indirect_J2:                  true

estimation_parameters:

global_models:
    eop:
        estimated:              [true]
        sigma:                  [10,10,1e-9]
    eop_rates:
        estimated:              [true]
        sigma:                  [10]

receivers:

    PIVOT:
        #clock:
        #    estimated:     [true]
        #    process_noise: [0]
        #    sigma:         [1e-9]
        code_bias:
            estimated: [false]

    global:
        pos:
            estimated:          [true]
            sigma:              [1]
            process_noise:      [0.0]
            # process_noise_dt:   second
        clock:
            estimated:          [true]
            sigma:              [1000]
            process_noise:      [10] # [100]
        ambiguities:
            estimated:          [true]
            sigma:              [1000]
            process_noise:      [0]
            # process_noise_dt:   day
        trop:
            estimated:          [true]
            sigma:              [0.3]
            process_noise:      [0.0001]
            # process_noise_dt:   second
        trop_grads:
            estimated:          [true]
            sigma:              [0.03]
            process_noise:      [1.0E-6]
            # process_noise_dt:   second
        ion_stec:
            estimated:          [true]
            sigma:              [500]
            process_noise:      [10]
        code_bias:
            estimated:          [true]
            sigma:              [20]
            process_noise:      [0]
    # USN7:
    #     clk:
    #         estimated:          [false]    # Set reference (pivot) station clock
    #     code_bias:
    #         estimated:          [false]

satellites:
    global:
        clock:
            estimated:          [true]
            sigma:              [1000]
            process_noise:      [1]
            tau:                [100]
            #mu:                 [10000]
        code_bias:
            estimated:          [true]
            sigma:              [10]
            process_noise:      [0]
        orbit:                                            # Orbital state
            estimated:          [true]                    # [bools] Estimate state in kalman filter
            sigma:              [10, 10, 10, 0.01]   # [floats] Apriori sigma values - if zero, will be initialised using least squares
            process_noise:      [0]

        emp_d_0: { estimated: [true], sigma: [10]}
        emp_y_0: { estimated: [true], sigma: [1]}
        emp_b_0: { estimated: [true], sigma: [1]}

        # emp_d_1: { estimated: [true], sigma: [1]}
        # emp_y_1: { estimated: [true], sigma: [1]}
        emp_b_1: { estimated: [true], sigma: [1]}

        emp_d_2: { estimated: [true], sigma: [1]}
        # emp_y_2: { estimated: [true], sigma: [1]}
        # emp_b_2: { estimated: [true], sigma: [1]}

        # emp_d_3: { estimated: [true], sigma: [1]}
        # emp_y_3: { estimated: [true], sigma: [1]}
        # emp_b_3: { estimated: [true], sigma: [1]}

        # emp_d_4: { estimated: [true], sigma: [1]}
        # emp_y_4: { estimated: [true], sigma: [1]}
        # emp_b_4: { estimated: [true], sigma: [1]}

mongo: #enable: primary enable: none output_components: primary output_states: primary output_measurements: primary output_test_stats: none output_trace: none delete_history: primary

debug: # instrument: true #output_mincon: true #mincon_filename: preMinconState.bin #mincon_only: true # mincon_only: true

It was found that there was a large error in the orbit accuracy assessment. Are there any corrective measures? Among them I use https://github.com/GeoscienceAustralia/gnssanalysis for accuracy comparison

1711867462334 1711867391133

I found that the program performs backward Kalman data processing. How can I modify the pod.yaml file to improve the accuracy of orbit determination(do post-processing)?

gnss-freshman avatar Mar 31 '24 06:03 gnss-freshman