[hamradio-commits] [gnss-sdr] 191/303: Read both RINEX obs files
Carles Fernandez
carles_fernandez-guest at moszumanska.debian.org
Mon Feb 13 22:36:00 UTC 2017
This is an automated email from the git hooks/post-receive script.
carles_fernandez-guest pushed a commit to branch master
in repository gnss-sdr.
commit 4c8a74936c09c8200d4fcb4412292938db9a0bc0
Author: Carles Fernandez <carlesfernandez at gmail.com>
Date: Fri Dec 23 13:45:02 2016 +0100
Read both RINEX obs files
---
src/tests/system-tests/trk_system_test.cc | 222 ++++++++++++++----------------
1 file changed, 107 insertions(+), 115 deletions(-)
diff --git a/src/tests/system-tests/trk_system_test.cc b/src/tests/system-tests/trk_system_test.cc
index 0732731..d223229 100644
--- a/src/tests/system-tests/trk_system_test.cc
+++ b/src/tests/system-tests/trk_system_test.cc
@@ -345,89 +345,126 @@ int Trk_System_Test::run_receiver()
void Trk_System_Test::check_results()
{
- // Open reference RINEX observables file
- pid_t wait_result;
- int child_status;
- std::string RinDump = std::string("RinDump");
- std::string path_RinDump = std::string(GPSTK_BINDIR) + RinDump;
- std::string arg1 = std::string("--obs");
- std::string arg2 = std::string("./") + FLAGS_filename_rinex_obs;
- std::string arg3 = std::string("9");
- std::string arg4 = std::string("C1C");
- std::string arg5 = std::string("--headless");
+ std::vector<std::vector<std::map<double, double>> > pseudorange_ref(33);
+ std::vector<std::vector<std::map<double, double>> > carrierphase_ref(33);
+ std::vector<std::vector<std::map<double, double>> > pseudorange_meas(33);
+ std::vector<std::vector<std::map<double, double>> > carrierphase_meas(33);
+
+ // Open reference RINEX observables file
try
{
- gpstk::Rinex3ObsStream r_ref(FLAGS_filename_rinex_obs);
- r_ref.exceptions(std::ios::failbit);
- gpstk::Rinex3ObsData r_ref_data;
- gpstk::Rinex3ObsHeader r_ref_header;
-
- gpstk::RinexDatum dataobj;
+ gpstk::Rinex3ObsStream r_ref(FLAGS_filename_rinex_obs);
+ r_ref.exceptions(std::ios::failbit);
+ gpstk::Rinex3ObsData r_ref_data;
+ gpstk::Rinex3ObsHeader r_ref_header;
- r_ref >> r_ref_header;
+ gpstk::RinexDatum dataobj;
- std::vector<gpstk::RinexObsID> typelist = r_ref_header.obsTypeList;
+ r_ref >> r_ref_header;
- std::vector<gpstk::RinexObsID>::iterator it;
- for(it = typelist.begin(); it != typelist.end(); it++)
+ while (r_ref >> r_ref_data)
+ {
+ for (int myprn = 1; myprn < 33; myprn++)
+ {
+ gpstk::SatID prn( myprn, gpstk::SatID::systemGPS );
+ //std::cout << " PRN " << myprn << std::endl;
+ gpstk::CommonTime time = r_ref_data.time;
+ //std::cout << time << " " << std::endl;
+ double sow(static_cast<gpstk::GPSWeekSecond>(time).sow);
+ //std::cout << "Time: " << sow << std::endl;
+
+ gpstk::Rinex3ObsData::DataMap::iterator pointer = r_ref_data.obs.find(prn);
+ if( pointer == r_ref_data.obs.end() )
{
- gpstk::RinexObsID id = *it;
- std::cout << "ID: " << id.asString() << std::endl;
+ // PRN not present; do nothing
}
-
- //int indexC1_ref( r_ref_header.getObsIndex( "C1" ) );
- //int indexL1_ref( r_ref_header.getObsIndex( "L1P" ) );
- std::cout << r_ref_header.stringSystemNumObs << std::endl;
-
- for (int myprn = 1; myprn < 33; myprn++)
+ else
{
- gpstk::SatID prn( myprn, gpstk::SatID::systemGPS );
- while (r_ref >> r_ref_data)
- {
- std::cout << r_ref_data.time << " " << std::endl;
-
-
- gpstk::Rinex3ObsData::DataMap::iterator pointer = r_ref_data.obs.find(prn);
- if( pointer == r_ref_data.obs.end() )
- {
- std::cout << "PRN " << myprn << " not in view " << std::endl;
- }
- else
- {
- // Get P1, P2 and L1 observations
- // Here there are three equivalent ways to get the RinexDatum
- // from the RinexObsData object
-
- // The first one is a fast but DANGEROUS method, because there
- // is a chance of unawarely change the contents of "roe.obs".
- // -----------------------------------------------------------
- //dataobj = r_ref_data.obs[prn][indexC1_ref];
- //double C1 = dataobj.data;
-
- // The second method is secure but a little slower.
- // This should be your preferred method
- // -----------------------------------------------------------
- dataobj = r_ref_data.getObs(prn, "P1", r_ref_header);
- double P1 = dataobj.data;
- std::cout << P1 << " " << std::endl;
-
- //dataobj = r_ref_data.getObs(prn, "L1", r_ref_header);
- //double L1 = dataobj.data;
-
- gpstk::CommonTime time = r_ref_data.time;
- //std::cout << time.getSecondOfDay() << std::endl;
-
-
-
+ dataobj = r_ref_data.getObs(prn, "P1", r_ref_header);
+ double P1 = dataobj.data;
+ std::map<double, double> pseudo;
+ pseudo[sow] = P1;
+ pseudorange_ref.at(myprn).push_back(pseudo);
+
+ dataobj = r_ref_data.getObs(prn, "L1C", r_ref_header);
+ double L1 = dataobj.data;
+ std::map<double, double> carrier;
+ carrier[sow]= L1;
+ carrierphase_ref.at(myprn).push_back(carrier);
+ } // End of 'if( pointer == roe.obs.end() )'
+ } // end for
+ } // end while
+ } // End of 'try' block
+ catch(gpstk::FFStreamError& e)
+ {
+ std::cout << e;
+ exit(1);
+ }
+ catch(gpstk::Exception& e)
+ {
+ std::cout << e;
+ exit(1);
+ }
+ catch (...)
+ {
+ std::cout << "unknown error. I don't feel so well..." << std::endl;
+ exit(1);
+ }
+ // Example: count observations per sat:
+ std::vector<std::vector<std::map<double, double>> >::iterator iter;
+ int prn_id=0;
+ for(iter = pseudorange_ref.begin(); iter != pseudorange_ref.end(); iter++)
+ {
+ double size_v = iter->size();
+ std::cout << "Size for sat " << prn_id << ": " << size_v << std::endl;
+ prn_id++;
+ }
- std::cout << " PRN " << myprn << std::endl;
+ // Open GNSS-SDR-generated RINEX observables file
+ try
+ {
+ std::string arg2_gen = std::string("./") + generated_rinex_obs;
+ gpstk::Rinex3ObsStream r_meas(arg2_gen);
+ gpstk::Rinex3ObsData r_meas_data;
+ gpstk::Rinex3ObsHeader r_meas_header;
+ gpstk::RinexDatum dataobj;
- } // End of 'if( pointer == roe.obs.end() )'
+ r_meas >> r_meas_header;
- }
+ while (r_meas >> r_meas_data)
+ {
+ for (int myprn = 1; myprn < 33; myprn++)
+ {
+ gpstk::SatID prn( myprn, gpstk::SatID::systemGPS );
+ //std::cout << " PRN " << myprn << std::endl;
+ gpstk::CommonTime time = r_meas_data.time;
+ //std::cout << time << " " << std::endl;
+ double sow(static_cast<gpstk::GPSWeekSecond>(time).sow);
+ //std::cout << "Time: " << sow << std::endl;
+
+ gpstk::Rinex3ObsData::DataMap::iterator pointer = r_meas_data.obs.find(prn);
+ if( pointer == r_meas_data.obs.end() )
+ {
+ // PRN not present; do nothing
}
+ else
+ {
+ dataobj = r_meas_data.getObs(prn, "C1", r_meas_header);
+ double P1 = dataobj.data;
+ std::map<double, double> pseudo;
+ pseudo[sow] = P1;
+ pseudorange_meas.at(myprn).push_back(pseudo);
+
+ dataobj = r_meas_data.getObs(prn, "L1C", r_meas_header);
+ double L1 = dataobj.data;
+ std::map<double, double> carrier;
+ carrier[sow]= L1;
+ carrierphase_meas.at(myprn).push_back(carrier);
+ } // End of 'if( pointer == roe.obs.end() )'
+ } // end for
+ } // end while
} // End of 'try' block
catch(gpstk::FFStreamError& e)
{
@@ -444,52 +481,7 @@ void Trk_System_Test::check_results()
std::cout << "unknown error. I don't feel so well..." << std::endl;
exit(1);
}
-// FILE *fp;
-// FILE *fp2;
-// int status;
-// char buffer[1035];
-//
-// /* Open the command for reading. */
-// std::string argum = path_RinDump + " " + arg1 + " " + arg2 + " " + arg3 + " " + arg4 + " " + arg5;
-//
-// fp = popen(&argum[0], "r");
-// if (fp == NULL)
-// {
-// std::cout << "Failed to run command: " << argum << std::endl;
-// }
-//
-// /* Read the output a line at a time - output it. */
-// while (fgets(buffer, sizeof(buffer), fp) != NULL)
-// {
-// printf("Reading line: %s", buffer);
-// }
-// pclose(fp);
-
- // Open generated RINEX observables file
- std::string arg2_gen = std::string("./") + generated_rinex_obs;
- gpstk::Rinex3ObsStream r_meas(arg2_gen);
- gpstk::Rinex3ObsData r_meas_data;
- gpstk::Rinex3ObsHeader r_meas_header;
-
- r_meas >> r_meas_header;
-
- //int indexC1_meas( r_meas_header.getObsIndex( "C1" ) );
- //int indexL1_meas( r_meas_header.getObsIndex( "L1" ) );
-// std::string argum2 = path_RinDump + " " + arg1 + " " + arg2_gen + " " + arg3 + " " + arg4 + " " + arg5;
-//
-// fp2 = popen(&argum2[0], "r");
-// if (fp2 == NULL)
-// {
-// printf("Failed to run command\n" );
-// }
-//
-// /* Read the output a line at a time - output it. */
-// while (fgets(buffer, sizeof(buffer), fp2) != NULL)
-// {
-// printf("Reading generated line: %s", buffer);
-// }
-//
-// pclose(fp2);
+
// Time alignment!
// Read reference pseudoranges from a given satellite
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git
More information about the pkg-hamradio-commits
mailing list