mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	Get PVT fixes from a standalone Galileo E5b receiver
This commit is contained in:
		| @@ -36,8 +36,9 @@ In the L2 band: | ||||
|  | ||||
| In the L5 band: | ||||
|  | ||||
| - 🛰 GPS L5 (centered at 1176.45 MHz) :white_check_mark: | ||||
| - 🛰 Galileo E5a (centered at 1176.45 MHz) :white_check_mark: | ||||
| - 🛰 Galileo E5b (centered at 1207.140 MHz) :white_check_mark: | ||||
| - 🛰 Galileo E5a (centered at 1176.450 MHz) :white_check_mark: | ||||
| - 🛰 GPS L5 (centered at 1176.450 MHz) :white_check_mark: | ||||
|  | ||||
| GNSS-SDR provides interfaces for a wide range of radio frequency front-ends and | ||||
| raw sample file formats, generates processing outputs in standard formats, | ||||
| @@ -1662,6 +1663,7 @@ identifiers: | ||||
| | Glonass L2 C/A |       2G       | | ||||
| | GPS L5         |       L5       | | ||||
| | Galileo E5a    |       5X       | | ||||
| | Galileo E5b    |       7X       | | ||||
|  | ||||
| Example: Eight GPS L1 C/A channels. | ||||
|  | ||||
|   | ||||
| @@ -16,6 +16,8 @@ All notable changes to GNSS-SDR will be documented in this file. | ||||
|  | ||||
| ### Improvements in Availability: | ||||
|  | ||||
| - Added the Galileo E5b receiving chain. The software is now able to compute PVT | ||||
|   solutions as a standalone Galileo E5b receiver. | ||||
| - Improved Time-To-First-Fix when using GPS L1 C/A signals, fixing a bug that | ||||
|   was making the receiver to drop the satellite if the PLL got locked at 180 | ||||
|   degrees, and making some optimizations on bit transition detection. | ||||
|   | ||||
| @@ -406,6 +406,7 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_ | ||||
|     bool gps_dual_band = false; | ||||
|     bool band1 = false; | ||||
|     bool band2 = false; | ||||
|     bool gal_e5_is_e5b = false; | ||||
|     for (gnss_observables_iter = gnss_observables_map.cbegin(); | ||||
|          gnss_observables_iter != gnss_observables_map.cend(); | ||||
|          ++gnss_observables_iter) | ||||
| @@ -468,7 +469,7 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_ | ||||
|                             } | ||||
|  | ||||
|                         // Galileo E5 | ||||
|                         if (sig_ == "5X") | ||||
|                         if ((sig_ == "5X") || (sig_ == "7X")) | ||||
|                             { | ||||
|                                 // 1 Gal - find the ephemeris for the current GALILEO SV observation. The SV PRN ID is the map key | ||||
|                                 galileo_ephemeris_iter = galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); | ||||
| @@ -508,6 +509,10 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_ | ||||
|                                     { | ||||
|                                         DLOG(INFO) << "No ephemeris data for SV " << gnss_observables_iter->second.PRN; | ||||
|                                     } | ||||
|                                 if (sig_ == "7X") | ||||
|                                     { | ||||
|                                         gal_e5_is_e5b = true; | ||||
|                                     } | ||||
|                             } | ||||
|                         break; | ||||
|                     } | ||||
| @@ -874,7 +879,15 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_ | ||||
|                 { | ||||
|                     for (int j = 0; j < NFREQ; j++) | ||||
|                         { | ||||
|                             nav_data.lam[i][j] = satwavelen(i + 1, j, &nav_data); | ||||
|                             if (j == 2 && gal_e5_is_e5b) | ||||
|                                 { | ||||
|                                     // frq = 4 corresponds to E5B in that function | ||||
|                                     nav_data.lam[i][j] = satwavelen(i + 1, 4, &nav_data); | ||||
|                                 } | ||||
|                             else | ||||
|                                 { | ||||
|                                     nav_data.lam[i][j] = satwavelen(i + 1, j, &nav_data); | ||||
|                                 } | ||||
|                         } | ||||
|                 } | ||||
|  | ||||
|   | ||||
| @@ -71,6 +71,10 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro | ||||
|             break; | ||||
|         case 'E': | ||||
|             rtklib_obs.sat = gnss_synchro.PRN + NSATGPS + NSATGLO; | ||||
|             if (sig_ == "7X") | ||||
|                 { | ||||
|                     rtklib_obs.code[band] = static_cast<unsigned char>(CODE_L7X); | ||||
|                 } | ||||
|             break; | ||||
|         case 'R': | ||||
|             rtklib_obs.sat = gnss_synchro.PRN + NSATGPS; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez