GNSS-SDR 0.0.21
An Open Source GNSS Software Defined Receiver
Loading...
Searching...
No Matches
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 -----------------------------------------------------------------*/
40const int NX = 4 + 3; //!< # of estimated parameters
41const int MAXITR = 10; //!< max number of iteration for point pos
42const double ERR_ION = 5.0; //!< ionospheric delay std (m)
43const double ERR_TROP = 3.0; //!< tropspheric delay std (m)
44
45
46/* pseudorange measurement error variance ------------------------------------*/
47double varerr(const prcopt_t *opt, double el, int sys);
48
49/* get tgd parameter (m) -----------------------------------------------------*/
50double gettgd(int sat, const nav_t *nav);
51
52/* get isc parameter (m) -----------------------------------------------------*/
53double getiscl1(int sat, const nav_t *nav);
54double getiscl2(int sat, const nav_t *nav);
55double getiscl5i(int sat, const nav_t *nav);
56double getiscl5q(int sat, const nav_t *nav);
57
58/* psendorange with code bias correction -------------------------------------*/
59double 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 *-----------------------------------------------------------------------------*/
74int 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 *-----------------------------------------------------------------------------*/
87int 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 -----------------------------------------------------*/
91int 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 ---------------------------------------------------------*/
98int 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 ------------------------------------------------*/
103int 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) -------------------------------*/
109int 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 ---------------------------------------------------------*/
115int 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 ------------------------------------------------*/
120void 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 */
141int 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
main header file for the rtklib library
const double ERR_TROP
tropspheric delay std (m)
const int MAXITR
max number of iteration for point pos
const int NX
const double ERR_ION
ionospheric delay std (m)
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 ...
rtklib common functions