mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-04-19 09:13:20 +00:00
Get PVT fixes from a standalone Galileo E5b receiver
This commit is contained in:
parent
7a0259fb1d
commit
df1820e98e
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user