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:
Carles Fernandez 2023-04-03 13:36:54 +02:00
parent 3def3c36cd
commit 51418850bb
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
8 changed files with 19 additions and 7 deletions

View File

@ -4,7 +4,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
)
[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 -->
@ -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`.
- Implemented processing of BeiDou PRN 34 up to PRN 63 signals.
- 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:

View File

@ -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_b = configuration->property(role + ".carrier_phase_error_factor_b", 0.003);
const bool bancroft_init = configuration->property(role + ".bancroft_init", true);
snrmask_t snrmask = {{}, {{}, {}}};
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} */
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
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);

View File

@ -1000,6 +1000,7 @@ typedef struct
exterr_t exterr; /* extended receiver error model */
int freqopt; /* disable L2-AR */
char pppopt[256]; /* ppp option */
bool bancroft_init; /* enable Bancroft initialization for the first iteration of the PVT computation */
} prcopt_t;

View File

@ -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
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);
for (i = 0; i < n; i++)

View File

@ -65,7 +65,7 @@ const prcopt_t PRCOPT_DEFAULT = { /* defaults processing options */
{}, {}, {}, /* baseline, ru, rb */
{"", ""}, /* anttype */
{}, {}, {}, /* antdel, pcv, exsats */
0, 0, 0, {"", ""}, {}, 0, {{}, {}}, {{}, {{}, {}}, {{}, {}}, {}, {}}, 0, {}};
0, 0, 0, {"", ""}, {}, 0, {{}, {}}, {{}, {{}, {}}, {{}, {}}, {}, {}}, 0, {}, true};
void writesolhead(stream_t *stream, const solopt_t *solopt);

View File

@ -133,7 +133,8 @@ void NmeaPrinterTest::conf()
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
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);

View File

@ -132,7 +132,8 @@ void RinexPrinterTest::conf()
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
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);

View File

@ -363,7 +363,8 @@ rtk_t configure_rtklib_options()
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
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;