mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-16 05:00:35 +00:00
debug 5
This commit is contained in:
parent
7646568314
commit
8d37013e96
@ -464,6 +464,7 @@ typedef struct { /* GPS/QZS/GAL broadcast ephemeris type */
|
|||||||
/* GPS/QZS:tgd[0]=TGD */
|
/* GPS/QZS:tgd[0]=TGD */
|
||||||
/* GAL :tgd[0]=BGD E5a/E1,tgd[1]=BGD E5b/E1 */
|
/* GAL :tgd[0]=BGD E5a/E1,tgd[1]=BGD E5b/E1 */
|
||||||
/* BDS :tgd[0]=BGD1,tgd[1]=BGD2 */
|
/* BDS :tgd[0]=BGD1,tgd[1]=BGD2 */
|
||||||
|
double isc[4]; /* GPS :isc[0]=ISCL1, isc[1]=ISCL2, isc[2]=ISCL5I, isc[3]=ISCL5Q */
|
||||||
double Adot,ndot; /* Adot,ndot for CNAV */
|
double Adot,ndot; /* Adot,ndot for CNAV */
|
||||||
} eph_t;
|
} eph_t;
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ geph_t eph_to_rtklib(const Glonass_Gnav_Ephemeris & glonass_gnav_eph, const Glon
|
|||||||
eph_t eph_to_rtklib(const Galileo_Ephemeris & gal_eph)
|
eph_t eph_to_rtklib(const Galileo_Ephemeris & gal_eph)
|
||||||
{
|
{
|
||||||
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, 0.0, 0.0 };
|
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0 };
|
||||||
//Galileo is the third satellite system for RTKLIB, so, add the required offset to discriminate Galileo ephemeris
|
//Galileo is the third satellite system for RTKLIB, so, add the required offset to discriminate Galileo ephemeris
|
||||||
rtklib_sat.sat = gal_eph.i_satellite_PRN+NSATGPS+NSATGLO;
|
rtklib_sat.sat = gal_eph.i_satellite_PRN+NSATGPS+NSATGLO;
|
||||||
rtklib_sat.A = gal_eph.A_1 * gal_eph.A_1;
|
rtklib_sat.A = gal_eph.A_1 * gal_eph.A_1;
|
||||||
@ -167,7 +167,7 @@ eph_t eph_to_rtklib(const Galileo_Ephemeris & gal_eph)
|
|||||||
eph_t eph_to_rtklib(const Gps_Ephemeris & gps_eph)
|
eph_t eph_to_rtklib(const Gps_Ephemeris & gps_eph)
|
||||||
{
|
{
|
||||||
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, 0.0, 0.0 };
|
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0 };
|
||||||
rtklib_sat.sat = gps_eph.i_satellite_PRN;
|
rtklib_sat.sat = gps_eph.i_satellite_PRN;
|
||||||
rtklib_sat.A = gps_eph.d_sqrt_A * gps_eph.d_sqrt_A;
|
rtklib_sat.A = gps_eph.d_sqrt_A * gps_eph.d_sqrt_A;
|
||||||
rtklib_sat.M0 = gps_eph.d_M_0;
|
rtklib_sat.M0 = gps_eph.d_M_0;
|
||||||
@ -216,7 +216,7 @@ eph_t eph_to_rtklib(const Gps_Ephemeris & gps_eph)
|
|||||||
eph_t eph_to_rtklib(const Gps_CNAV_Ephemeris & gps_cnav_eph)
|
eph_t eph_to_rtklib(const Gps_CNAV_Ephemeris & gps_cnav_eph)
|
||||||
{
|
{
|
||||||
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, 0.0, 0.0 };
|
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0 };
|
||||||
rtklib_sat.sat = gps_cnav_eph.i_satellite_PRN;
|
rtklib_sat.sat = gps_cnav_eph.i_satellite_PRN;
|
||||||
const double A_REF = 26559710.0; // See IS-GPS-200H, pp. 170
|
const double A_REF = 26559710.0; // See IS-GPS-200H, pp. 170
|
||||||
rtklib_sat.A = A_REF + gps_cnav_eph.d_DELTA_A;
|
rtklib_sat.A = A_REF + gps_cnav_eph.d_DELTA_A;
|
||||||
@ -245,9 +245,13 @@ eph_t eph_to_rtklib(const Gps_CNAV_Ephemeris & gps_cnav_eph)
|
|||||||
rtklib_sat.f1 = gps_cnav_eph.d_A_f1;
|
rtklib_sat.f1 = gps_cnav_eph.d_A_f1;
|
||||||
rtklib_sat.f2 = gps_cnav_eph.d_A_f2;
|
rtklib_sat.f2 = gps_cnav_eph.d_A_f2;
|
||||||
rtklib_sat.tgd[0] = gps_cnav_eph.d_TGD;
|
rtklib_sat.tgd[0] = gps_cnav_eph.d_TGD;
|
||||||
rtklib_sat.tgd[1] = 0;
|
rtklib_sat.tgd[1] = 0.0;
|
||||||
rtklib_sat.tgd[2] = 0;
|
rtklib_sat.tgd[2] = 0.0;
|
||||||
rtklib_sat.tgd[3] = 0;
|
rtklib_sat.tgd[3] = 0.0;
|
||||||
|
rtklib_sat.isc[0] = gps_cnav_eph.d_ISCL1;
|
||||||
|
rtklib_sat.isc[1] = gps_cnav_eph.d_ISCL2;
|
||||||
|
rtklib_sat.isc[2] = gps_cnav_eph.d_ISCL5I;
|
||||||
|
rtklib_sat.isc[3] = gps_cnav_eph.d_ISCL5Q;
|
||||||
rtklib_sat.toes = gps_cnav_eph.d_Toe1;
|
rtklib_sat.toes = gps_cnav_eph.d_Toe1;
|
||||||
rtklib_sat.toc = gpst2time(rtklib_sat.week,gps_cnav_eph.d_Toc);
|
rtklib_sat.toc = gpst2time(rtklib_sat.week,gps_cnav_eph.d_Toc);
|
||||||
rtklib_sat.ttr = gpst2time(rtklib_sat.week,gps_cnav_eph.d_TOW);
|
rtklib_sat.ttr = gpst2time(rtklib_sat.week,gps_cnav_eph.d_TOW);
|
||||||
|
@ -80,6 +80,50 @@ double gettgd(int sat, const nav_t *nav)
|
|||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* get isc parameter (m) -----------------------------------------------------*/
|
||||||
|
double getiscl1(int sat, const nav_t *nav)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < nav->n; i++)
|
||||||
|
{
|
||||||
|
if (nav->eph[i].sat != sat) continue;
|
||||||
|
return SPEED_OF_LIGHT * nav->eph[i].isc[0];
|
||||||
|
}
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
double getiscl2(int sat, const nav_t *nav)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < nav->n; i++)
|
||||||
|
{
|
||||||
|
if (nav->eph[i].sat != sat) continue;
|
||||||
|
return SPEED_OF_LIGHT * nav->eph[i].isc[1];
|
||||||
|
}
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
double getiscl5i(int sat, const nav_t *nav)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < nav->n; i++)
|
||||||
|
{
|
||||||
|
if (nav->eph[i].sat != sat) continue;
|
||||||
|
return SPEED_OF_LIGHT * nav->eph[i].isc[2];
|
||||||
|
}
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
double getiscl5q(int sat, const nav_t *nav)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < nav->n; i++)
|
||||||
|
{
|
||||||
|
if (nav->eph[i].sat != sat) continue;
|
||||||
|
return SPEED_OF_LIGHT * nav->eph[i].isc[3];
|
||||||
|
}
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
/* psendorange with code bias correction -------------------------------------*/
|
/* psendorange with code bias correction -------------------------------------*/
|
||||||
double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
|
double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
|
||||||
@ -92,6 +136,10 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
|
|||||||
double P1_P2;
|
double P1_P2;
|
||||||
double P1_C1;
|
double P1_C1;
|
||||||
double P2_C2;
|
double P2_C2;
|
||||||
|
double ISCl1 = 0.0;
|
||||||
|
double ISCl2 = 0.0;
|
||||||
|
double ISCl5i = 0.0;
|
||||||
|
double ISCl5q = 0.0;
|
||||||
double gamma_ = 0.0;
|
double gamma_ = 0.0;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int j = 1;
|
int j = 1;
|
||||||
@ -150,10 +198,13 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
|
|||||||
P1_P2 = nav->cbias[obs->sat-1][0];
|
P1_P2 = nav->cbias[obs->sat-1][0];
|
||||||
P1_C1 = nav->cbias[obs->sat-1][1];
|
P1_C1 = nav->cbias[obs->sat-1][1];
|
||||||
P2_C2 = nav->cbias[obs->sat-1][2];
|
P2_C2 = nav->cbias[obs->sat-1][2];
|
||||||
|
|
||||||
std::string d_dump_filename = "/home/antonio/data/dump_prange.dat";
|
std::string d_dump_filename = "/home/antonio/data/dump_prange.dat";
|
||||||
std::ofstream d_file;
|
std::ofstream d_file;
|
||||||
d_file.exceptions (std::ifstream::failbit | std::ifstream::badbit );
|
d_file.exceptions (std::ifstream::failbit | std::ifstream::badbit );
|
||||||
d_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary);
|
d_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary | std::ios::app);
|
||||||
|
double tmp_double = static_cast<double>(obs->sat);
|
||||||
|
d_file.write(reinterpret_cast<char*>(&tmp_double), sizeof(double));
|
||||||
d_file.write(reinterpret_cast<char*>(&P1), sizeof(double));
|
d_file.write(reinterpret_cast<char*>(&P1), sizeof(double));
|
||||||
d_file.write(reinterpret_cast<char*>(&P2), sizeof(double));
|
d_file.write(reinterpret_cast<char*>(&P2), sizeof(double));
|
||||||
d_file.write(reinterpret_cast<char*>(&P1_P2), sizeof(double));
|
d_file.write(reinterpret_cast<char*>(&P1_P2), sizeof(double));
|
||||||
@ -168,6 +219,14 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
|
|||||||
{
|
{
|
||||||
//TODO
|
//TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(sys == SYS_GPS)
|
||||||
|
{
|
||||||
|
ISCl1 = getiscl1(obs->sat, nav);
|
||||||
|
ISCl2 = getiscl2(obs->sat, nav);
|
||||||
|
ISCl5i = getiscl5i(obs->sat, nav);
|
||||||
|
ISCl5q = getiscl5q(obs->sat, nav);
|
||||||
|
}
|
||||||
d_file.write(reinterpret_cast<char*>(&P1_P2), sizeof(double));
|
d_file.write(reinterpret_cast<char*>(&P1_P2), sizeof(double));
|
||||||
if (opt->ionoopt == IONOOPT_IFLC)
|
if (opt->ionoopt == IONOOPT_IFLC)
|
||||||
{ /* dual-frequency */
|
{ /* dual-frequency */
|
||||||
@ -208,7 +267,10 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
|
|||||||
{
|
{
|
||||||
P1 += P1_C1;
|
P1 += P1_C1;
|
||||||
P2 += P2_C2;
|
P2 += P2_C2;
|
||||||
PC = (P2 - gamma_ * P1) / (1.0 - gamma_) - P1_P2 / (gamma_ - 1.0);
|
if(obs->code[j] == CODE_L2S)
|
||||||
|
{
|
||||||
|
PC = (P2 + ISCl2 - gamma_ * (P1 + ISCl1)) / (1.0 - gamma_) - P1_P2 / (gamma_ - 1.0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(sys == SYS_GAL)
|
else if(sys == SYS_GAL)
|
||||||
{
|
{
|
||||||
|
@ -69,6 +69,12 @@ double varerr(const prcopt_t *opt, double el, int sys);
|
|||||||
/* get tgd parameter (m) -----------------------------------------------------*/
|
/* get tgd parameter (m) -----------------------------------------------------*/
|
||||||
double gettgd(int sat, const nav_t *nav);
|
double gettgd(int sat, const nav_t *nav);
|
||||||
|
|
||||||
|
/* get isc parameter (m) -----------------------------------------------------*/
|
||||||
|
double getiscl1(int sat, const nav_t *nav);
|
||||||
|
double getiscl2(int sat, const nav_t *nav);
|
||||||
|
double getiscl5i(int sat, const nav_t *nav);
|
||||||
|
double getiscl5q(int sat, const nav_t *nav);
|
||||||
|
|
||||||
/* psendorange with code bias correction -------------------------------------*/
|
/* psendorange with code bias correction -------------------------------------*/
|
||||||
double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
|
double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
|
||||||
int iter, const prcopt_t *opt, double *var);
|
int iter, const prcopt_t *opt, double *var);
|
||||||
|
@ -2825,7 +2825,7 @@ int readnav(const char *file, nav_t *nav)
|
|||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
eph_t eph0 = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
eph_t eph0 = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, 0.0, 0.0 };
|
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0 };
|
||||||
geph_t geph0 = {0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {}, {}, {}, 0.0, 0.0, 0.0};
|
geph_t geph0 = {0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {}, {}, {}, 0.0, 0.0, 0.0};
|
||||||
char buff[4096], *p;
|
char buff[4096], *p;
|
||||||
long toe_time, tof_time, toc_time, ttr_time;
|
long toe_time, tof_time, toc_time, ttr_time;
|
||||||
|
Loading…
Reference in New Issue
Block a user