GNSS-SDR  0.0.19
An Open Source GNSS Software Defined Receiver
rtklib_pntpos.h
Go to the documentation of this file.
1 /*!
2  * \file rtklib_pntpos.h
3  * \brief standard code-based positioning
4  * \authors <ul>
5  * <li> 2007-2013, T. Takasu
6  * <li> 2017, Javier Arribas
7  * <li> 2017, Carles Fernandez
8  * </ul>
9  *
10  * This is a derived work from RTKLIB http://www.rtklib.com/
11  * The original source code at https://github.com/tomojitakasu/RTKLIB is
12  * released under the BSD 2-clause license with an additional exclusive clause
13  * that does not apply here. This additional clause is reproduced below:
14  *
15  * " The software package includes some companion executive binaries or shared
16  * libraries necessary to execute APs on Windows. These licenses succeed to the
17  * original ones of these software. "
18  *
19  * Neither the executive binaries nor the shared libraries are required by, used
20  * or included in GNSS-SDR.
21  *
22  * -----------------------------------------------------------------------------
23  * Copyright (C) 2007-2013, T. Takasu
24  * Copyright (C) 2017, Javier Arribas
25  * Copyright (C) 2017, Carles Fernandez
26  * All rights reserved.
27  *
28  * SPDX-License-Identifier: BSD-2-Clause
29  *
30  * -----------------------------------------------------------------------------
31  */
32 
33 #ifndef GNSS_SDR_RTKLIB_PNTPOS_H
34 #define GNSS_SDR_RTKLIB_PNTPOS_H
35 
36 #include "rtklib.h"
37 #include "rtklib_rtkcmn.h"
38 
39 /* constants -----------------------------------------------------------------*/
40 const int NX = 4 + 3; //!< # of estimated parameters
41 const int MAXITR = 10; //!< max number of iteration for point pos
42 const double ERR_ION = 5.0; //!< ionospheric delay std (m)
43 const double ERR_TROP = 3.0; //!< tropspheric delay std (m)
44 
45 
46 /* pseudorange measurement error variance ------------------------------------*/
47 double varerr(const prcopt_t *opt, double el, int sys);
48 
49 /* get tgd parameter (m) -----------------------------------------------------*/
50 double gettgd(int sat, const nav_t *nav);
51 
52 /* get isc parameter (m) -----------------------------------------------------*/
53 double getiscl1(int sat, const nav_t *nav);
54 double getiscl2(int sat, const nav_t *nav);
55 double getiscl5i(int sat, const nav_t *nav);
56 double getiscl5q(int sat, const nav_t *nav);
57 
58 /* psendorange with code bias correction -------------------------------------*/
59 double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
60  int iter, const prcopt_t *opt, double *var);
61 
62 /* ionospheric correction ------------------------------------------------------
63  * compute ionospheric correction
64  * args : gtime_t time I time
65  * nav_t *nav I navigation data
66  * int sat I satellite number
67  * double *pos I receiver position {lat,lon,h} (rad|m)
68  * double *azel I azimuth/elevation angle {az,el} (rad)
69  * int ionoopt I ionospheric correction option (IONOOPT_???)
70  * double *ion O ionospheric delay (L1) (m)
71  * double *var O ionospheric delay (L1) variance (m^2)
72  * return : status(1:ok,0:error)
73  *-----------------------------------------------------------------------------*/
74 int ionocorr(gtime_t time, const nav_t *nav, int sat, const double *pos,
75  const double *azel, int ionoopt, double *ion, double *var);
76 /* tropospheric correction -----------------------------------------------------
77  * compute tropospheric correction
78  * args : gtime_t time I time
79  * nav_t *nav I navigation data
80  * double *pos I receiver position {lat,lon,h} (rad|m)
81  * double *azel I azimuth/elevation angle {az,el} (rad)
82  * int tropopt I tropospheric correction option (TROPOPT_???)
83  * double *trp O tropospheric delay (m)
84  * double *var O tropospheric delay variance (m^2)
85  * return : status(1:ok,0:error)
86  *-----------------------------------------------------------------------------*/
87 int tropcorr(gtime_t time, const nav_t *nav, const double *pos,
88  const double *azel, int tropopt, double *trp, double *var);
89 
90 /* pseudorange residuals -----------------------------------------------------*/
91 int rescode(int iter, const obsd_t *obs, int n, const double *rs,
92  const double *dts, const double *vare, const int *svh,
93  const nav_t *nav, const double *x, const prcopt_t *opt,
94  double *v, double *H, double *var, double *azel, int *vsat,
95  double *resp, int *ns);
96 
97 /* validate solution ---------------------------------------------------------*/
98 int valsol(const double *azel, const int *vsat, int n,
99  const prcopt_t *opt, const double *v, int nv, int nx,
100  char *msg);
101 
102 /* estimate receiver position ------------------------------------------------*/
103 int estpos(const obsd_t *obs, int n, const double *rs, const double *dts,
104  const double *vare, const int *svh, const nav_t *nav,
105  const prcopt_t *opt, sol_t *sol, double *azel, int *vsat,
106  double *resp, char *msg);
107 
108 /* raim fde (failure detection and exclution) -------------------------------*/
109 int raim_fde(const obsd_t *obs, int n, const double *rs,
110  const double *dts, const double *vare, const int *svh,
111  const nav_t *nav, const prcopt_t *opt, sol_t *sol,
112  double *azel, int *vsat, double *resp, char *msg);
113 
114 /* doppler residuals ---------------------------------------------------------*/
115 int resdop(const obsd_t *obs, int n, const double *rs, const double *dts,
116  const nav_t *nav, const double *rr, const double *x,
117  const double *azel, const int *vsat, double *v, double *H);
118 
119 /* estimate receiver velocity ------------------------------------------------*/
120 void estvel(const obsd_t *obs, int n, const double *rs, const double *dts,
121  const nav_t *nav, const prcopt_t *opt, sol_t *sol,
122  const double *azel, const int *vsat);
123 
124 /*!
125  * \brief single-point positioning
126  * compute receiver position, velocity, clock bias by single-point positioning
127  * with pseudorange and doppler observables
128  * args : obsd_t *obs I observation data
129  * int n I number of observation data
130  * nav_t *nav I navigation data
131  * prcopt_t *opt I processing options
132  * sol_t *sol IO solution
133  * double *azel IO azimuth/elevation angle (rad) (NULL: no output)
134  * ssat_t *ssat IO satellite status (NULL: no output)
135  * char *msg O error message for error exit
136  * return : status(1:ok,0:error)
137  * notes : assuming sbas-gps, galileo-gps, qzss-gps, compass-gps time offset and
138  * receiver bias are negligible (only involving glonass-gps time offset
139  * and receiver bias)
140  */
141 int pntpos(const obsd_t *obs, int n, const nav_t *nav,
142  const prcopt_t *opt, sol_t *sol, double *azel, ssat_t *ssat,
143  char *msg);
144 
145 #endif // GNSS_SDR_RTKLIB_PNTPOS_H
Definition: rtklib.h:362
rtklib common functions
int pntpos(const obsd_t *obs, int n, const nav_t *nav, const prcopt_t *opt, sol_t *sol, double *azel, ssat_t *ssat, char *msg)
single-point positioning compute receiver position, velocity, clock bias by single-point positioning ...
Definition: rtklib.h:752
const double ERR_TROP
tropspheric delay std (m)
Definition: rtklib_pntpos.h:43
main header file for the rtklib library
const int NX
Definition: rtklib_pntpos.h:40
const double ERR_ION
ionospheric delay std (m)
Definition: rtklib_pntpos.h:42
const int MAXITR
max number of iteration for point pos
Definition: rtklib_pntpos.h:41
Definition: rtklib.h:819