Skip to content
Snippets Groups Projects
Commit dc455e44 authored by Joan Solà Ortega's avatar Joan Solà Ortega
Browse files

Merge branch 'devel' of...

Merge branch 'devel' of ssh://gitlab.iri.upc.edu:2202/mobile_robotics/gauss_project/gnss_utils into devel
parents 3bc0ffbd c9c15060
No related branches found
No related tags found
2 merge requests!20new tag,!19new tag
......@@ -66,22 +66,22 @@ struct ComputePosOutput
};
/* defaults processing options */
const prcopt_t opt_default = {
const prcopt_t default_prcopt = {
PMODE_SINGLE, /* mode: positioning mode (PMODE_???) */
0, /* soltype: solution type (0:forward,1:backward,2:combined) */
2, /* nf: number of frequencies (1:L1,2:L1+L2,3:L1+L2+L3,4:L1+L2+L3+L4) */
SYS_GPS|SYS_GLO|SYS_GAL, /* navsys */
15.0*D2R,{{0,0}}, /* elmin (rad) ,snrmask */
0, /* satellite ephemeris/clock (EPHOPT_???) */
0, /* satellite ephemeris option: EPHOPT_BRDC(0):broadcast ephemeris, EPHOPT_PREC(1): precise ephemeris, EPHOPT_SBAS(2): broadcast + SBAS, EPHOPT_SSRAPC(3): broadcast + SSR_APC, EPHOPT_SSRCOM(4): broadcast + SSR_COM, EPHOPT_LEX(5): QZSS LEX ephemeris */
3,3,1,0,1, /* modear,glomodear,gpsmodear,bdsmodear,arfilter */
20,0,4,5,10,20, /* maxout,minlock,minfixsats,minholdsats,mindropsats,minfix */
0,1, /* rcvstds,armaxiter */
IONOOPT_BRDC, /* ionoopt: ionosphere option (IONOOPT_???) */
TROPOPT_SAAS, /* tropopt: troposphere option (TROPOPT_???) */
IONOOPT_BRDC, /* ionoopt: IONOOPT_OFF(0):correction off, IONOOPT_BRDC(1):broadcast mode, IONOOPT_SBAS(2):SBAS model, IONOOPT_IFLC(3):L1/L2 or L1/L5, IONOOPT_EST(4):estimation, IONOOPT_TEC(5):IONEX TEC model, IONOOPT_QZS(6):QZSS broadcast, IONOOPT_LEX(7):QZSS LEX ionosphere, IONOOPT_STEC(8):SLANT TEC mode */
TROPOPT_SAAS, /* tropopt: TROPOPT_OFF(0):correction off, TROPOPT_SAAS(1):Saastamoinen model, TROPOPT_SBAS(2):SBAS model, TROPOPT_EST(3):troposphere option: ZTD estimation, TROPOPT_ESTG(4):ZTD+grad estimation, TROPOPT_ZTD(5):ZTD correction,6:ZTD+grad correction */
1,0, /* dynamics,tidecorr */
3, /* niter: number of filter iteration */
0,0, /* codesmooth,intpref */
0, /* sbascorr: SBAS correction options */
0, /* sbascorr: SBAS correction options (can be added): SBSOPT_LCORR(1): long term correction, SBSOPT_FCORR(2): fast correction, SBSOPT_ICORR(4): ionosphere correction, SBSOPT_RANGE(8): ranging */
0, /* sbasssatsel: SBAS satellite selection (0:all) */
0,0, /* rovpos,refpos */
WEIGHTOPT_ELEVATION, /* weightmode */
......@@ -115,20 +115,19 @@ struct TdcpOptions
bool corr_iono; // apply correction also in TDCP
bool corr_tropo; // apply correction also in TDCP
bool loss_function; // apply loss function in TDCP factors
//double std_time_factor; // std of TDCP measurements: std_time_factor * dt
double sigma_atm;
double sigma_carrier;
bool use_old_nav;
bool use_multi_freq;
bool multi_freq;
double time_window; // window of time in which we perform TDCP
};
struct Options
{
int sateph; // satellite ephemeris/clock (0:broadcast ephemeris,1:precise ephemeris,2:broadcast + SBAS,3:ephemeris option: broadcast + SSR_APC,4:broadcast + SSR_COM,5: QZSS LEX ephemeris
int ionoopt; // ionosphere option (IONOOPT_OFF(0):correction off, IONOOPT_BRDC(1):broadcast mode, IONOOPT_SBAS(2):SBAS model, IONOOPT_IFLC(3):L1/L2 or L1/L5, IONOOPT_EST(4):estimation,5:IONEX TEC model,6:QZSS broadcast,7:QZSS LEX ionosphere,8:SLANT TEC mode)
int tropopt; // troposphere option: (0:correction off,1:Saastamoinen model,2:SBAS model,3:troposphere option: ZTD estimation,4:ZTD+grad estimation,5:ZTD correction,6:ZTD+grad correction)
int sbascorr; // SBAS option (1:long term correction,2:fast correction,4:ionosphere correction,8:ranging)
int sateph; // satellite ephemeris option: EPHOPT_BRDC(0):broadcast ephemeris, EPHOPT_PREC(1): precise ephemeris, EPHOPT_SBAS(2): broadcast + SBAS, EPHOPT_SSRAPC(3): broadcast + SSR_APC, EPHOPT_SSRCOM(4): broadcast + SSR_COM, EPHOPT_LEX(5): QZSS LEX ephemeris
int ionoopt; // ionosphere option: IONOOPT_OFF(0):correction off, IONOOPT_BRDC(1):broadcast mode, IONOOPT_SBAS(2):SBAS model, IONOOPT_IFLC(3):L1/L2 or L1/L5, IONOOPT_EST(4):estimation, IONOOPT_TEC(5):IONEX TEC model, IONOOPT_QZS(6):QZSS broadcast, IONOOPT_LEX(7):QZSS LEX ionosphere, IONOOPT_STEC(8):SLANT TEC mode
int tropopt; // troposphere option: TROPOPT_OFF(0):correction off, TROPOPT_SAAS(1):Saastamoinen model, TROPOPT_SBAS(2):SBAS model, TROPOPT_EST(3):troposphere option: ZTD estimation, TROPOPT_ESTG(4):ZTD+grad estimation, TROPOPT_ZTD(5):ZTD correction,6:ZTD+grad correction
int sbascorr; // SBAS correction options (can be added): SBSOPT_LCORR(1): long term correction, SBSOPT_FCORR(2): fast correction, SBSOPT_ICORR(4): ionosphere correction, SBSOPT_RANGE(8): ranging
bool raim; // RAIM enabled
double elmin; // min elevation (degrees)
double maxgdop; // maxgdop: reject threshold of gdop
......@@ -143,13 +142,13 @@ struct Options
snrmask_t getSnrMask() const
{
return opt_default.snrmask;
return default_prcopt.snrmask;
}
// create a rtklib option struct from this
prcopt_t getPrcopt() const
{
prcopt_t opt{opt_default};
prcopt_t opt{default_prcopt};
opt.sateph = sateph;
opt.ionoopt = ionoopt;
opt.tropopt = tropopt;
......@@ -162,6 +161,19 @@ struct Options
}
};
const Options default_options =
{
EPHOPT_BRDC, // satellite ephemeris option: EPHOPT_BRDC(0):broadcast ephemeris, EPHOPT_PREC(1): precise ephemeris, EPHOPT_SBAS(2): broadcast + SBAS, EPHOPT_SSRAPC(3): broadcast + SSR_APC, EPHOPT_SSRCOM(4): broadcast + SSR_COM, EPHOPT_LEX(5): QZSS LEX ephemeris
IONOOPT_BRDC, // ionosphere option: IONOOPT_OFF(0):correction off, IONOOPT_BRDC(1):broadcast mode, IONOOPT_SBAS(2):SBAS model, IONOOPT_IFLC(3):L1/L2 or L1/L5, IONOOPT_EST(4):estimation, IONOOPT_TEC(5):IONEX TEC model, IONOOPT_QZS(6):QZSS broadcast, IONOOPT_LEX(7):QZSS LEX ionosphere, IONOOPT_STEC(8):SLANT TEC mode
TROPOPT_SAAS, // troposphere option: TROPOPT_OFF(0):correction off, TROPOPT_SAAS(1):Saastamoinen model, TROPOPT_SBAS(2):SBAS model, TROPOPT_EST(3):troposphere option: ZTD estimation, TROPOPT_ESTG(4):ZTD+grad estimation, TROPOPT_ZTD(5):ZTD correction,6:ZTD+grad correction
SBSOPT_LCORR+SBSOPT_FCORR+SBSOPT_ICORR+SBSOPT_RANGE, // SBAS correction options (can be added): SBSOPT_LCORR(1): long term correction, SBSOPT_FCORR(2): fast correction, SBSOPT_ICORR(4): ionosphere correction, SBSOPT_RANGE(8): ranging
false, // RAIM enabled
D2R*30.0, // min elevation (degrees)
0, // maxgdop: reject threshold of gdop
true, false, true, true, false, false, false, false, //GPS,SBS,GLO,GAL,QZS,CMP,IRN,LEO; // constellations used
{0} // TDCP options
};
// forward declarations
class Observations;
class Navigation;
......
......@@ -14,7 +14,7 @@ struct TdcpBatchParams
int raim_n;
double raim_min_residual;
bool relinearize_jacobian;
bool use_old_nav;
bool old_nav;
int max_iterations;
};
......
......@@ -422,7 +422,7 @@ std::set<int> Observations::filter(const Satellites& sats,
opt.getNavSys(),
opt.getSnrMask(),
opt.elmin,
opt.ionoopt == IONOOPT_IFLC or (opt.tdcp.enabled and opt.tdcp.use_multi_freq));
opt.ionoopt == IONOOPT_IFLC or (opt.tdcp.enabled and opt.tdcp.multi_freq));
}
std::set<int> Observations::filter(const Satellites& sats,
......@@ -494,7 +494,7 @@ std::set<int> Observations::filter(const Satellites& sats,
opt.getNavSys(),
opt.getSnrMask(),
opt.elmin,
opt.ionoopt == IONOOPT_IFLC or (opt.tdcp.enabled and opt.tdcp.use_multi_freq));
opt.ionoopt == IONOOPT_IFLC or (opt.tdcp.enabled and opt.tdcp.multi_freq));
}
std::set<int> Observations::filter(const Satellites& sats,
......
......@@ -40,7 +40,7 @@ bool Tdcp(SnapshotPtr snapshot_r,
{
// If use old nav temporary change navigation to (re)compute satellites positions
auto nav_k = snapshot_k->getNavigation();
if (tdcp_params.use_old_nav)
if (tdcp_params.old_nav)
{
snapshot_k->getSatellites().clear();
snapshot_k->setNavigation(snapshot_r->getNavigation());
......@@ -82,7 +82,7 @@ bool Tdcp(SnapshotPtr snapshot_r,
tdcp_params);
// UNDO temporary change navigation
if (tdcp_params.use_old_nav)
if (tdcp_params.old_nav)
{
snapshot_k->setNavigation(nav_k);
snapshot_k->computeSatellites(opt.sateph);
......@@ -155,7 +155,7 @@ bool Tdcp(SnapshotPtr snapshot_r,
if (std::abs(obs_r.L[0]) > 1e-12 and std::abs(obs_k.L[0]) > 1e-12)
row_2_sat_freq[row++] = std::make_pair(sat, 0);
if (!tdcp_params.tdcp.use_multi_freq)
if (!tdcp_params.tdcp.multi_freq)
continue;
// L2 (GPS/GLO/QZS)
......@@ -310,7 +310,7 @@ bool Tdcp(SnapshotPtr snapshot_r,
// Multi-freq: some rows for the same satellite
n_removed_rows = 1;
if (tdcp_params.tdcp.use_multi_freq)
if (tdcp_params.tdcp.multi_freq)
while (row_removed + n_removed_rows < A_raim.rows() and
row_2_sat_freq.at(row_removed + n_removed_rows).first == sat_removed)
n_removed_rows++;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment