mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-07 07:50:32 +00:00
Add configuration parameter PVT.bancroft_init, by default to true, to opt-out for Bancroft initialization in the first iteration of PVT computation
This commit is contained in:
parent
3def3c36cd
commit
51418850bb
@ -4,7 +4,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
)
|
)
|
||||||
|
|
||||||
[comment]: # (
|
[comment]: # (
|
||||||
SPDX-FileCopyrightText: 2011-2022 Carles Fernandez-Prades <carles.fernandez@cttc.es>
|
SPDX-FileCopyrightText: 2011-2023 Carles Fernandez-Prades <carles.fernandez@cttc.es>
|
||||||
)
|
)
|
||||||
<!-- prettier-ignore-end -->
|
<!-- prettier-ignore-end -->
|
||||||
|
|
||||||
@ -30,6 +30,11 @@ All notable changes to GNSS-SDR will be documented in this file.
|
|||||||
- Improved non-coherent acquisition when `Acquisition_XX.blocking=false`.
|
- Improved non-coherent acquisition when `Acquisition_XX.blocking=false`.
|
||||||
- Implemented processing of BeiDou PRN 34 up to PRN 63 signals.
|
- Implemented processing of BeiDou PRN 34 up to PRN 63 signals.
|
||||||
- Implemented Hamming code correction for Glonass navigation message.
|
- Implemented Hamming code correction for Glonass navigation message.
|
||||||
|
- Now the first iteration of the PVT computation is initialized by the Bancroft
|
||||||
|
method. This allows to get PVT fixes in some unusual geometries (_e.g._,
|
||||||
|
GNSS-like signals transmitted by LEO satellites). This initialization is
|
||||||
|
performed by default. You can opt-out by setting `PVT.bancroft_init=false` in
|
||||||
|
your configuration file.
|
||||||
|
|
||||||
### Improvements in Interoperability:
|
### Improvements in Interoperability:
|
||||||
|
|
||||||
|
@ -764,6 +764,8 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
|
|||||||
const double carrier_phase_error_factor_a = configuration->property(role + ".carrier_phase_error_factor_a", 0.003);
|
const double carrier_phase_error_factor_a = configuration->property(role + ".carrier_phase_error_factor_a", 0.003);
|
||||||
const double carrier_phase_error_factor_b = configuration->property(role + ".carrier_phase_error_factor_b", 0.003);
|
const double carrier_phase_error_factor_b = configuration->property(role + ".carrier_phase_error_factor_b", 0.003);
|
||||||
|
|
||||||
|
const bool bancroft_init = configuration->property(role + ".bancroft_init", true);
|
||||||
|
|
||||||
snrmask_t snrmask = {{}, {{}, {}}};
|
snrmask_t snrmask = {{}, {{}, {}}};
|
||||||
|
|
||||||
prcopt_t rtklib_configuration_options = {
|
prcopt_t rtklib_configuration_options = {
|
||||||
@ -822,7 +824,8 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
|
|||||||
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
||||||
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
||||||
0, /* disable L2-AR */
|
0, /* disable L2-AR */
|
||||||
{} /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
|
{}, /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
|
||||||
|
bancroft_init /* enable Bancroft initialization for the first iteration of the PVT computation, useful in some geometries */
|
||||||
};
|
};
|
||||||
|
|
||||||
rtkinit(&rtk, &rtklib_configuration_options);
|
rtkinit(&rtk, &rtklib_configuration_options);
|
||||||
|
@ -1000,6 +1000,7 @@ typedef struct
|
|||||||
exterr_t exterr; /* extended receiver error model */
|
exterr_t exterr; /* extended receiver error model */
|
||||||
int freqopt; /* disable L2-AR */
|
int freqopt; /* disable L2-AR */
|
||||||
char pppopt[256]; /* ppp option */
|
char pppopt[256]; /* ppp option */
|
||||||
|
bool bancroft_init; /* enable Bancroft initialization for the first iteration of the PVT computation */
|
||||||
} prcopt_t;
|
} prcopt_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -714,7 +714,7 @@ int estpos(const obsd_t *obs, int n, const double *rs, const double *dts,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Rough first estimation to initialize the algorithm
|
// Rough first estimation to initialize the algorithm
|
||||||
if (std::sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]) < 0.1)
|
if (opt->bancroft_init && (std::sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]) < 0.1))
|
||||||
{
|
{
|
||||||
arma::mat B = arma::mat(n, 4, arma::fill::zeros);
|
arma::mat B = arma::mat(n, 4, arma::fill::zeros);
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
|
@ -65,7 +65,7 @@ const prcopt_t PRCOPT_DEFAULT = { /* defaults processing options */
|
|||||||
{}, {}, {}, /* baseline, ru, rb */
|
{}, {}, {}, /* baseline, ru, rb */
|
||||||
{"", ""}, /* anttype */
|
{"", ""}, /* anttype */
|
||||||
{}, {}, {}, /* antdel, pcv, exsats */
|
{}, {}, {}, /* antdel, pcv, exsats */
|
||||||
0, 0, 0, {"", ""}, {}, 0, {{}, {}}, {{}, {{}, {}}, {{}, {}}, {}, {}}, 0, {}};
|
0, 0, 0, {"", ""}, {}, 0, {{}, {}}, {{}, {{}, {}}, {{}, {}}, {}, {}}, 0, {}, true};
|
||||||
|
|
||||||
|
|
||||||
void writesolhead(stream_t *stream, const solopt_t *solopt);
|
void writesolhead(stream_t *stream, const solopt_t *solopt);
|
||||||
|
@ -133,7 +133,8 @@ void NmeaPrinterTest::conf()
|
|||||||
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
||||||
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
||||||
0, /* disable L2-AR */
|
0, /* disable L2-AR */
|
||||||
{} /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
|
{}, /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
|
||||||
|
true /* enable Bancroft initialization for the first iteration of the PVT computation, useful in some geometries */
|
||||||
};
|
};
|
||||||
|
|
||||||
rtkinit(&rtk, &rtklib_configuration_options);
|
rtkinit(&rtk, &rtklib_configuration_options);
|
||||||
|
@ -132,7 +132,8 @@ void RinexPrinterTest::conf()
|
|||||||
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
||||||
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
||||||
0, /* disable L2-AR */
|
0, /* disable L2-AR */
|
||||||
{} /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
|
{}, /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
|
||||||
|
true /* enable Bancroft initialization for the first iteration of the PVT computation, useful in some geometries */
|
||||||
};
|
};
|
||||||
|
|
||||||
rtkinit(&rtk, &rtklib_configuration_options);
|
rtkinit(&rtk, &rtklib_configuration_options);
|
||||||
|
@ -363,7 +363,8 @@ rtk_t configure_rtklib_options()
|
|||||||
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
||||||
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
||||||
0, /* disable L2-AR */
|
0, /* disable L2-AR */
|
||||||
{} /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
|
{}, /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
|
||||||
|
true /* enable Bancroft initialization for the first iteration of the PVT computation, useful in some geometries */
|
||||||
};
|
};
|
||||||
|
|
||||||
rtk_t rtk;
|
rtk_t rtk;
|
||||||
|
Loading…
Reference in New Issue
Block a user