Introduction

A GNSS receiver suitable to face GPS modernization should be re-configurable and flexible in design so that the possibilities of new specifications and algorithms can be exploited, and the price should be low enough to enable mass-market interests (Paziewski (2020)). For the latter, global industrialization provides an awesomely wide range of hardware keeping costs low. The downside of industrialized technology is the fact that, in the last years, it has somehow constrained academic research raising legal and economic barriers; this results in GNSS receivers being seen as black boxes. A few years ago, the scenario suddenly changed with the advent of two decisive developments: software-defined radio technology and the concept of Free-and-Open-Source-Software (FOSS). The latter consists of distributed development processes where everyone can contribute to the project and modify and redistribute it. In this perspective, the software-defined approach can define useful tools both for research purposes and low-cost industrialized commoditization. Software-defined receivers (SDRs) are capable of extreme customization, allowing users to access, visualize, and modify signal acquisition, tracking, and processing strategies. SDR refers to an ensemble of hardware, software technologies, and design choices allowing re-configurable radio communication architectures. The main idea behind this concept is the replacement of the dedicated hardware components through software modules. Nowadays, there are some software solutions in GNSS positioning that follow the SDR approach, among all: PLAN research group from Calgary University has proposed the GSNRx (GNSS software navigation receiver) in Petovello et al. (2008), Munich University has created ipexSR in Anghileri et al. (2001), the ISMB in collaboration with Polytechnic University of Turin have proposed N-Gene in Fantino et al. (2009). Moreover, Abbasiannik (2009) and Kang et al. (2002) have developed a combined GPS and GLONASS software receiver capable of providing a position solution. Lin et al. (2011) proposed a vector-based high sensitivity software receiver and its ultra-tight version. Schmidt et al. (2018) presented a LabVIEW (LV) and C/C++-based GPS L1 receiver platform with real-time capabilities. Hurskainen et al. (2009) described a multicore software-defined radio architecture for Global Navigation Satellite System (GNSS) receiver implementation. Ledvina et al. (2003b) developed a 12-channel real-time GPS software receiver and then the same authors determine its accuracy and tracking performance under dynamic conditions in Ledvina et al. (2003a). In Seo et al. (2011), a GPS software-defined radio with adaptive beam steering capability for anti-jam applications with massively parallel processor computing has been presented.

Regarding processing enhancements exploiting GPU-based techniques, Knežević et al. (2010) developed an 8-channel GPS SDR capable of processing 40 Msps and 8-bit resolution data in real time using a single-core 3.0-GHz CPU and an NVIDIA GeForce 8800 GTX GPU, while in Hobiger et al. (2009) a real-time GPS SDR supporting 12 channels with 8 Msps and 4-bit resolution data using an Intel Core 2 Q9450 CPU and an NVIDIA GeForce GTX 280 GPU has been developed. In the FOSS scenario, few solutions are made available; among them, GNSS-SDR, developed by the CTTC (Centre Tecnològic Telecomunicacions Catalunya), seems to be the best FOSS for GNSS signal processing in terms of approachability to the code and activity of developer’s community; it is hosted on the free platform github.com where anyone can fork the repository and create a copy to test and develop the algorithms. GNSS-SDR is capable of acquiring, processing, and computing navigation solutions for different kinds of constellations (GPS, GLONASS, and Galileo) as reported in Fernández-Prades et al. (2011).

Following the work done in Cutugno et al. (2019) and Cutugno et al. (2020), this paper aims to assess the quality of the pseudoranges (PR) generated by an ultra-low-cost front-end driven by a software-defined receiver through the code-minus-carrier (CMC) analysis. For this reason, a low-cost commercial-off-the-shelf (COTS) receiver, namely the UBX z-f9p with a patch antenna (ANN-MB), has been employed as a term of comparison. The analysis carried out also aims to investigate the potential correlations between pseudorange errors and other parameters, e.g. the satellite elevation angle and the carrier-to-noise density ratio (\(C/N_{0}\)). The analysis can be prodromic to enhance the positioning capabilities of ultra-low-cost SDR. The information on the SDR signal quality is useful for the development of the stochastic model for positioning with ultra-low-cost SDR.

This paper is organized as follows. In the “Data collection and experiment design” section, we provide the description of the data collection and the experiment design. In the “Signal quality assessment” section, we comprehensively evaluate the quality of code GNSS observations collected by SDR against that of the low-cost receiver. In the “Code observation noise” section, we provide the theoretic background of the code-minus-carrier analysis. In the “Single point positioning performance assessment” section, we investigate the performance of single point positioning (SPP) with SDR and low-cost receiver observations. Lastly, the “Discussion” section provides the discussion of the results.

Data collection and experiment design

To assess the performance of single point positioning and to evaluate the quality of the code pseudoranges acquired by the software-defined receiver, we employed the GPS L1 band observations collected on March 1, 2021. The test site with known ground-truth coordinates was located in Naples (Italy), as shown in panel d of Fig. 1. The site is expected to be an open-sky and low-multipath environment. The ground-truth coordinates of the site were determined in a static positioning using GNSS observations collected by a surveying-grade receiver and antenna.

Fig. 1
figure 1

Hardware and site of acquisition. Panel a shows the UBX ANN-MB GNSS active antenna; panel b shows the u-blox zed-f9p; panel c shows the RTL-dongle, namely the Rafael micro-sdr; and panel d shows the site of acquisition (Eremo ai Camaldoli, Naples, Italy)

To assess the software-defined receiver performance against a low-cost COTS receiver, the UBX zed-f9 sharing the same GNSS active antenna was employed simultaneously. The UBX data logging was accomplished via the u-center evaluation software, which stores data in the proprietary .ubx format. This was later converted in post-mission with open-source RTKconv utility. In the analysis, we used a common period and the same sampling interval of 1 s for observations collected by both receivers. In specific, the time window starts at 16:59:21 UTC and ends at 17:56:35 UTC. The hardware needed to log data with SDR reduces to an active antenna, a bias-tee, an RF front-end, and a computing platform. The former, namely a UBX ANN-MB active GNSS antenna shown in panel a of Fig. 1, which characteristics are reported in Table 1, was mounted on a 10-cm metal ground plane; it was connected via a SubMiniature version A (SMA) splitter to deliver the signal to both receivers: the UBX z-f9p (UBX) and RF front-end driven by GNSS-SDR, shown in panel b and panel c of Fig. 1, respectively. Taking into account the gain-loss introduced by signal splitting, a proper gain was provided by 4.5 V bias-tee.

Table 1 Main features of the ANN-MB active GNSS antenna

The RF front-end used for experimentation was the Rafael micro-SDR equipped with a Realtek RTL2832U chip; it is a cost-effective RF front-end available on the market at just 30 $. The RTL-dongle has limited connectivity and poor hardware capabilities (e.g. sampling rate and tuning ranges) compared to more expensive boards. It can perform tuning from 25 to 1700 MHz and it is equipped with a 1-PPM temperature compensated crystal oscillator (TCXO), accurate tuning, and 0.5–1-PPM temperature drift. It has lower RF insertion losses and low power-supply needs; it seems also durable, indeed, as shown in panel a of Fig. 1, and it is enclosed in an aluminium case. The poor quality of the front-end forced us to limit the duration of the experiment to 1 h. In the past, several tests with RTL-dongle have been carried out and we experienced that it starts to overheat after about 30 min and, after about 1 h, it begins to lose the lock of GPS signals. This is probably due to the high temperatures reached by the clock, even if it is a TCXO and it should be compensated for temperature effects. Under these conditions, the oscillator starts to drift too much, and the receiver cannot track satellite signals anymore.

The minimum required software to operate with the RTL dongle is the osmoSDR library needed to interface with GNSS-SDR. Other useful utilities can be built along with the Osmocom driver.

All settings for the software-defined receiver were defined in the configuration file. Receiver general settings, such as acquisition rate and signal source, were defined first. More specialized settings for each block of the processing chain, such as acquisition and tracking settings, were specified thereafter. The settings file also defines which signals the receiver will attempt to acquire and track, how many channels will be created, and which output will be stored. The output consists in several files of different format, such as .nav and .obs RINEX 3.03, and .kml. Even raw data from each block can be stored. The official documentation is provided by the developers in CTTC (2021). For the details of the parameters settings in a similar application, one can refer to Cutugno et al. (2019) and Cutugno et al. (2020).

Signal quality assessment

The analysis starts with the comparison of the tracked satellites recorded in the observation file. Table 2 depicts the number of observations stored for each satellite. As one can notice, the SDR was unable to track satellites PRN 5, 7, 8, 15, 18, and 25. Furthermore, as reported in Table 2, the analysis of the number of observations suggests that only satellites PRN 16, 20, 23, 26, and 27 were tracked continuously by both receivers. Another considerable difference lies in the number of the observations of the satellites PRN 29 and 31. We note that the SDR manages to acquire only one-sixth and half of that of the low-cost UBX receiver, respectively. These results are limited by the capabilities of the front-end; indeed, the SDR, when coupled with this hardware, cannot exploit more than 8 channels, according to the software developer’s recommendation. This configuration prevents the hardware to suffer from an extreme computational burden. Therefore, using 8 channels, it happens that some satellites cannot be received as all the channels are busy.

Table 2 Number of observations for each tracked satellite. The left column denotes the PRN, the central column indicates the number of observation for the SDR, and the right column the number of observation for the UBX. Analysis has been conducted in the same time window

In Fig. 2, the number of tracked satellites for the different mask angles used is shown. It can be noticed that the number of satellites does not vary going from 5 to 10\(^{\circ }\) mask angles. A small decrease can be seen with a mask angle of 15\(^{\circ }\) while the decrease is clear with a mask angle of 30\(^{\circ }\). The reduction in the number of satellites has an effect on the PDOP which remains constant when 5\(^{\circ }\) and 10\(^{\circ }\) mask angles are set, worsens slightly for 15\(^{\circ }\), whereas it reaches values greater than 15 in specific time intervals when 30\(^{\circ }\) mask angle is set.

Fig. 2
figure 2

Number of tracked satellites and PDOP of the SDR; in blue on left axes the number of satellites while in red on right axes the PDOP. In the first, second, third, and fourth panels, the results for 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\) mask angles are shown

Afterward, the signal-to-noise ratio has been investigated. Figure 3 reports a mean (\(C/N_{0}\)) for GPS observations acquired by the employed receivers. Comparable performance of both receivers in terms of \(C/N_{0}\) for most of the satellites, with slightly higher values for the UBX receiver against the SDR one, has been discovered. Conversely, for satellites PRN 29 and 31, SDR shows higher \(C/N_{0}\) as compared to the UBX ones; even though, this metric cannot be properly taken into account since it refers to means over different numbers of measurements; indeed, SDR measurements for satellites PRN 29 and 31 are 590 and 1611, respectively; on the contrary, the UBX achieved more the 3000 measurements for both satellites. Reviewing Fig. 3 and Table 2, one can notice that the satellites tracked only by the UBX receiver (PRN 5, 7, 8, 15, and 25, see Table 2) are characterized by the lowest signal gains.

Fig. 3
figure 3

Mean signal-to-noise ratio values for the SDR and the UBX receivers in blue and red bars, respectively

Code observation noise

We employ the code-minus-carrier phase (CMC) linear combination (LC) to assess the combined impact of the noise and multipath effect on code observations and, therefore, highlight the differences in signal quality between the employed receivers. CMC LC reads as follows

$$\begin{aligned} {P_{r}^{s}}-{\Phi {}}_{r}^{s}={2I}_{r,i}^{s}-\lambda {}N_{r,i}^{s}+M_{r,P}^{s}-M_{r,\Phi {}}^{s}+b_{r,i}-{b_{i}^{s}}-B_{r,i}+{B_{i}^{s}}+{\epsilon {}}_{r,P}^{s}-\ {\epsilon {}}_{r,\Phi {}}^{s} \end{aligned}$$
(1)

where s states for the satellite; r is the receiver; \(I_{r,i}^{s}\) is the slant ionospheric delay in metres; \({\ N}_{r,i}^{s}\) states for the integer ambiguity of phase observations in cycles; \(M_{r,\Phi {}}^{s}\) and \({{M}_{r,P}^{s}}\) denote the multipath effect in the unit of metres for phase and code observations, respectively; \({\lambda {}}_{i}\) is the signal wavelength in metres on selected frequency i; \({B_{i}^{s}}\) and \(\ B_{r,i}\) are the satellite and receiver phase delays in metres; \({b_{i}^{s}}\) and \(b_{r,i}\) stand for the satellite and receiver code PR delays in metres, respectively; and finally, \({\epsilon {}}_{r,P}^{s}\) and \({\epsilon {}}_{r,\Phi {}}^{s}\) are the observation noise of code and phase observations, respectively. CMC LC exposes the noise and multipath of code observations. All other unwanted effects such as phase ambiguities, satellite and receiver code, and phase biases, which are considered constant, as well as phase multipath and a doubled ionospheric delay, that are time-variant parameters, should be carefully handled. This may be done by making use of a moving average polynomial fitting or other filtering methods (see Peter de Bakker et al. (2012); Paziewski et al. (2021)). These terms occupy different bands in the frequency domain; the frequency spectrum of the ionospheric delay is lower than 0.1 mHz, so it can be considered bias (see Zhang and Bartone (2005)). If the cycle slips and clock jumps are detected and repaired, the ambiguity term can also be considered a bias (Aram et al. (2007); Delgado and Haag (2011)). Since the first two terms have a lower center frequency than the code multipath and the residual error, we can estimate them simply with a low-pass filter. The values obtained can be subtracted from the CMCs to obtain the “CMC residuals”. After filtering unwanted terms, we have

$$\begin{aligned} CMC_{res}=({P_{r}^{s}}-{\Phi {}}_{r}^{s})_{fil.}=M_{r,P}^{s}-M_{r,\Phi {}}^{s}+{\epsilon {}}_{r,P}^{s}-{\epsilon {}}_{r,\Phi {}}^{s}+\ {\epsilon {}}_{filter}^{s} \end{aligned}$$
(2)

The carrier phase multipath error can reach a maximum value of a quarter of a cycle (approximately 4.8 cm for the L1), while the pseudorange multipath error can reach several metres for the C/A-code measurements in a highly reflective scenario, so that the term \({M_{r,\Phi}^{s}}\) is negligible with respect to \(M_{r,P}^{s}\) (El-Rabbany (2002)). In addition, the observation noise of code measurements is on the order of centimetres, while that of carrier phase measurements is on the order of millimetres, so this term is also negligible (Misra and Enge (2011)); thus,

$$\begin{aligned} CMC_{res} \simeq M_{r,P}^{s}+{\epsilon {}}_{r,P}^{s}+\ {\epsilon {}}_{filter}^{s} \end{aligned}$$
(3)

Therefore, “CMC residuals”, as expressed in (3), contain only code multipath, noise, and residual error of filtering. Since the antenna used is the same and the measurements have been made at the same time, we can state that the substantial difference is in the residual noise of the observables. Given that the acquisition of the SDR observables did not occur continuously, to correctly evaluate the CMCs, we must select the epochs where the satellites are seen continuously; for this reason, we will focus our attention on the satellites 16, 20, 23, 26, and 27.

Figure 4 shows the CMC residuals for both receiver and time; in particular, the SDR-related values are shown in the left column while the UBX residuals are in the right one. Each subfigure refers to a different satellite, namely satellites 16, 20, 23, 26, and 27 from the top. To ensure proper readability, two different scales have been employed for the Y-axis. In the figure, the low-frequency component is of low magnitude; thus, we may attribute the time-series variability explicitly to the code noise. The CMC analysis highlights how the observables generated by the SDR under the same acquisition conditions (same antenna, same place) are affected by a noise two orders of magnitude greater than that afflicting the observables of the UBX, being the first in the interval [−20 20] m and the second in that [−0.25 0.25] m.

Fig. 4
figure 4

Time evolution of CMC residuals. In the left panel, the plots of CMC residuals for the SDR are shown while on the right panel the CMC residuals for the UBX are shown. Please note that two different scales have been employed for the Y-axis due to the different orders of magnitude between CMCs of the two receivers

Therefore, CMC analysis highlights that the observables generated by the SDR are much noisier than those from the UBX. It is clear that this noise directly propagates into the positioning domain.

Single point positioning performance assessment

The analysis carried out in the previous section suggests that the SDR should be less performing than the UBX due to the higher presence of noise in the pseudoranges caused by the limited capabilities of the ultra-low-cost front-end used to feed it. To assess the SDR performance in the positioning domain, different operational conditions have been simulated by applying different elevation cut-off angles. The elevation cut-off angles considered for the analysis are 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\). In this way, we assess the impact of low-elevated and low-gain signals that are more prone to multipath, as well as the positioning performance in an obstructed environment that is simulated by a 30\(^{\circ }\) cut-off angle.

To compare the performances of the SDR and the UBX, we were obliged to use the single point positioning technique with the GPS-only signals given the limited capabilities of the ultra-low-cost front-end used to feed the SDR. Therefore, the performances are influenced by the limited number of satellites in view and by their non-optimal geometry, as shown in Fig. 2.

Single point solutions were obtained with RTKLIB version 2.4.2. The ionosphere correction applied is the Klobuchar model while for the troposphere the Saastamoinen model has been adopted and, lastly, broadcast ephemeris were used. We can note that to properly compare the SDR and the UBX performances, SPP solutions were obtained by using the same satellites tracked by the SDR.

The analysis starts from the comparison of coordinate errors in the time domain between the two receivers. Figure 5 depicts East, North, and Up components errors considering a mask angle of 10\(^{\circ }\); in particular, the left panel of the figure shows the coordinate components errors versus the time for the SDR while the right panel refers to the UBX ones. Figure 5 reveals that the SDR is stable over time showing high noise in the coordinate component errors during the entire duration of the experiment. Conversely, the UBX experiences a degradation from epoch 149500. This behaviour cannot be addressed to the decrease in the number of satellites since there is only one satellite less after epoch 149500: 9 satellites before epoch 149500 and 8 satellites after.

Fig. 5
figure 5

Time series of East, North, and Up coordinate component error for single point positioning. The left panel refers to the SDR solutions while the UBX ones are shown in the right panel. The top row indicates the East error components. The middle row depicts the North component error while the bottom row refers to the Up component

Figures 6, 7, 8, and 9 depict the three-dimensional scatter plots of the positioning errors for the SDR and the UBX for mask angles of 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\), respectively. In particular, in the left panel of Fig. 6, blue markers represent the positioning error of the SDR while red markers in the right panel are referred to the UBX receiver. Both panels refer to an elevation cut-off angle of 5\(^{\circ }\). As one can notice, the dominant error is the Up component for both receivers while planar errors are smaller for the UBX solutions.

Fig. 6
figure 6

3D positioning error scatter plots for single point positioning. Blue markers in the left panel represent errors of the SDR solutions; red markers in the right panel refer to errors obtained with the UBX. Both solutions refer to an elevation cut-off angle of 5\(^{\circ }\)

Fig. 7
figure 7

3D positioning error scatter plots for single point positioning. Blue markers in the left panel represent errors of the SDR solutions; red markers in the right panel refer to errors obtained with the UBX. Both solutions refer to an elevation cut-off angle of 10\(^{\circ }\)

Fig. 8
figure 8

3D positioning error scatter plots for single point positioning. Blue markers in the left panel represent errors of the SDR solutions; red markers in the right panel refer to errors obtained with the UBX. Both solutions refer to an elevation cut-off angle of 15\(^{\circ }\)

Fig. 9
figure 9

3D positioning error scatter plots for single point positioning. Blue markers in the left panel represent errors of the SDR solutions; red markers in the right panel refer to errors obtained with the UBX. Both solutions refer to an elevation cut-off angle of 30\(^{\circ }\)

The figures highlight that the SDR errors are higher than the UBX ones since they suffer from high noise as evidenced in the CMC analysis carried out in the previous section. The higher noise seen in the SDR measurements depends mainly on the limited capabilities of the ultra-low-cost front-end. The hardware components such as the oscillator are very cheap even if compared to the zed-f9p. Finally, regardless of the elevation mask angle adopted, the point clouds of the SDR solutions are always wider than those from the UBX.

To better assess the error distribution, the figures below show the 3D positioning error histograms for both receivers.

Figure 10 shows the three-dimensional positioning error histogram for both the SDR and the UBX solutions. The results achieved by using the SDR observables are represented in blue while those obtained with the UBX are in red. Each bar is 0.5 m wide. This figure confirms that the accuracy obtained by the UBX is higher than that obtained by the SDR; the centre of the SDR histogram has a greater abscissa than that of the UBX revealing a higher mean of the error. Moreover, it emerges that the SDR histogram is smoother and wider with respect to the UBX one; this last indicates that the errors in the UBX solution are mainly included in the range of 1–3 m. This is confirmed in Table 3; indeed, comparing the SDR and the UBX statistics, it can be noticed that the UBX mean errors are the half part of the respective SDR indicators while the UBX standard deviation is even the third part. Moreover, referring to the 30\(^{\circ }\) elevation cut-off angle case that aims to simulate the obstructed scenario, the SDR experiences a tough degradation of the results: the mean error is twice the mean error for the SDR solution of the previous cases (with elevation cut-off angles of 5\(^{\circ }\), 10\(^{\circ }\), and 15\(^{\circ }\)). On the other hand, the elimination of the low-elevated satellites provides an enhancement of the positioning precision. In specific, the UBX statistics show better performance when a 15\(^{\circ }\) elevation cut-off angle is adopted as compared to the statistics that correspond to 5\(^{\circ }\) and 10\(^{\circ }\) elevation masks.

Fig. 10
figure 10

3D positioning error histogram for the SDR and the UBX solutions. The results obtained with the SDR are represented in blue while those obtained with the UBX are represented in red. Each bar is 0.5 m wide

Table 3 Three-dimensional coordinate error statistics (mean and STD) for the SDR and the UBX, considering elevation cut-off angles of 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\)

In the simulated obstructed scenario (30\(^{\circ }\) mask angle), the worse performance can be found for both receivers; nevertheless, the UBX mean error and standard deviation are about the third part of the relative SDR metrics. Figure 11 represents three-dimensional coordinate error box-plots for the SDR and the UBX solutions with 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\) elevation mask angles, respectively. Blue boxes represent the SDR SPP solutions while red boxes are referred to the UBX ones. Some errors for the SDR are very high (occasionally greater than 30 m). To ensure a better view of the figure, a threshold of 40 m has been adopted. The figure shows that red boxes are always tighter and placed further down than the SDR ones.

Fig. 11
figure 11

3D positioning error box-plots for the SDR and the UBX SPP solutions with selected elevation cut-off angles. Red crosses represent the outliers

Figure 12 shows the horizontal component error scatter plots for the SDR (blue markers) and the UBX (red markers) for elevation cut-off angles of 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\). The figure shows the horizontal error comparison between the SDR and the UBX. It can be noticed that the UBX point cloud is denser than the SDR one regardless of the elevation cut-off angle considered. To ensure a proper comparison between each cut-off angle, common axes limits have been adopted.

Fig. 12
figure 12

Horizontal coordinate component error scatter plots for single point positioning: top-left panel refers to the solution obtained with an elevation cut-off angle of 5\(^{\circ }\); top-right, bottom-left, and bottom-right panels refer to the solutions obtained with elevation cut-off angles of 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\), respectively

Figure 13 shows the two-dimensional positioning error histogram for both the SDR and the UBX solutions. As previously, the results achieved by using the SDR are represented in blue while in red are those obtained with the UBX. Each bar is 0.5 m wide. This figure confirms that the accuracy obtained by the UBX is higher than that obtained by the SDR; the centre of the SDR histogram is placed further to the right concerning to that of the UBX confirming that the SDR has a higher mean of the positioning error. Similarly to Fig. 10, it emerges that the SDR histogram is smoother and wider with respect to the UBX; indeed, the worse performance of the SDR is reflected in the higher standard deviation. In Fig. 13, the two-dimensional error distribution is slightly different from that of 3D error having a more recognizable peak around 2.5 m while the 3D distribution showed a smoother peak around higher errors, e.g. moved on the right of the x-axes. This confirms that the Up component degrades the whole solution.

Fig. 13
figure 13

2D positioning error histogram for the SDR and the UBX SPP solutions. The results obtained with the SDR are represented in blue while those obtained with the UBX are represented in red. Each bar is 0.5 m wide

In Table 4, the statistics relative to the two-dimensional errors are shown. The results confirm those shown in Table 3.

Table 4 Two-dimensional coordinate error statistics (mean and STD) for the SDR and the UBX considering elevation cut-off angles of 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\)

In Table 5, the statistics relative to the vertical errors are shown. The results confirm that the SDR performance is worse than that of the UBX; indeed, despite the SDR vertical mean errors being lower than those of the UBX, standard deviations are twice the UBX ones for 5\(^{\circ }\), 10\(^{\circ }\), and 15\(^{\circ }\) cut-off angles and even four times the UBX ones in the 30\(^{\circ }\) cut-off angle case.

Table 5 Vertical error statistics (mean and STD) for the SDR and the UBX considering elevation cut-off angles of 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\)

Figure 14 represents two-dimensional coordinate error box-plots for the SDR and the UBX SPP solutions with 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\) elevation cut-off angles; like before, blue boxes represent the SDR solutions and red boxes are referred to the UBX ones. From the comparison of the boxes in the figures, the better positioning performance obtained by the UBX receiver is evident: the UBX boxes are always tighter than those of the SDR and also placed further down. The worse performance of the SDR in the positioning domain is highlighted also by the higher number of outliers (represented by red crosses). The high number of outliers (also for UBX) is due to the single point and to the GPS-only approach used, which limited the number of satellites available and their geometry, also considering that to make a comparison we used only satellites received both by SDR and UBX.

Fig. 14
figure 14

2D positioning error box-plots for the SDR and the UBX SPP solutions depending on the cut-off angles considered. Red crosses represent the outliers

Figure 15 depicts the horizontal component error scatter plots for the SDR (blue markers), the UBX with the same satellites of the SDR (red markers), and the UBX with all the satellites tracked (yellow markers). All the solutions here are obtained with an elevation cut-off angle of 10\(^{\circ }\). The figure shows that the error point cloud obtained by the UBX with all satellites is tighter than that from the UBX with the SDR satellites (red markers). This was expected since the number of tracked satellites by the UBX is higher than those tracked by the SDR and there is also an improvement in their geometric distribution.

Fig. 15
figure 15

Horizontal coordinate component error scatter plots for single point positioning: the SDR solution (represented in blue marker) versus the UBX with the SDR ephemeris (represented in red marker) and the UBX with all available satellites (represented in yellow markers)

Discussion

The present research led to the following conclusions. From the comparison between the SDR and the UBX, we can state that the carrier-to-noise density ratios are comparable. Nonetheless, the SDR was not able to acquire all the satellites that were tracked by the UBX. These satellites were characterized by a low signal gain. Bearing in mind that the experiment was conducted with the same conditions for both receivers, e.g. simultaneous acquisition and shared antenna, we estimated the noise of the observables exploiting the code-minus-carrier analysis; such analysis has confirmed the presence of more noise in the observables generated by the SDR.

The results showed that the real issue with this configuration, namely Rafael micro-SDR driven by GNSS-SDR, is the limited capabilities of the ultra-low-cost front-end used which generates noisy measurements, as illustrated by CMC analysis conducted in the “Code observation noise” section and by the results shown in Fig. 4.

Then, we assessed the single point positioning performance of the SDR against the UBX receiver. The analysis has been carried out using the same satellites for both receivers. Different operational conditions have been simulated by applying different elevation cut-off angles of 5\(^{\circ }\), 10\(^{\circ }\), 15\(^{\circ }\), and 30\(^{\circ }\). Low cut-off angles of 5\(^{\circ }\) and 10\(^{\circ }\) allowed for assessing the impact of low-elevated and low-gain signals that are prone to multipath, on the positioning performance. A high elevation cut-off angle of 30\(^{\circ }\), in turn, made it possible to simulate an obstructed environment. The analysis showed that the positioning performance obtained by the SDR is worse than that of the UBX in all scenarios. In detail, we found that the mean and standard deviation of the UBX horizontal error are about half of those of the SDR going from 4.60 to about 2 m for mean and 3.15 to about 1.8 m for standard deviation for 5\(^{\circ }\),10\(^{\circ }\), and 15\(^{\circ }\) mask angles. When a 30\(^{\circ }\) mask angle is applied, performance worsens for both receivers with a mean horizontal error of about 10 m for the SDR with respect to 4.60 m for the UBX.

Concerning the three-dimensional error, the deterioration in the performance of the SDR compared to the UBX is even more evident, and the SDR error is about three times greater than that of the UBX both for mean and standard deviation.

The future works will mainly follow two lines of research. The first will involve a de-noising step of the observables to inject them into the PVT algorithm once “cleaned”. The second will consider the testing of several RF front-ends to assess the influence of the hardware on the overall positioning performance. The actual hardware implementation is not capable of sampling at more than 2.4 Msps without losing samples; this is enough for GPS but not for other constellations such as Galileo. Moreover, an in-depth pseudorange errors analysis could be conducted to investigate pseudorange quality and a potential correlation between psuedorange errors and \(C/N_{0}\) as already happens with smartphone GNSS receivers (see Robustelli et al. (2021)).