acebrianjuan / gnss-sdr-monitor

A graphical user interface to monitor the GNSS-SDR status in real time
GNU General Public License v3.0
84 stars 37 forks source link

Real-Time vs. Playback Plot Differences #10

Closed AgileEngineeringLLC closed 4 years ago

AgileEngineeringLLC commented 4 years ago

Hi, This plotting routine is fantastic, thanks so much for sharing it!

I'm trying to understand some unusual behavior I'm seeing in GNSS-SDR-Monitor in real-time vs playback. I'm running a HackRF at 4MS/S using the conf file in this Dropbox link. I've also included the 10min data file here as well.

https://www.dropbox.com/sh/rayvktrqywu60f8/AAB_J_0s9Rf1bJ_HM4tcixa9a?dl=0

When running in real-time, I see a nice plot of Doppler with no discontinuities. Here's a sample of the real-time plot from the data collected in the above link.

HackRF_Doppler_Realtime_072720

However, when I play the recorded data back through GNSS-SDR, GNSS-SDR-Monitor plots the Doppler data with "jumps" or discontinuities, like the following plot shows, yet the PVT solution still seems good.

HackRF_Doppler_Playback_072720

An interesting note is that if I play the data back through SoftGNSS (Matlab), I do not see these jumps. Here's a plot of the same recorded data plotted in SoftGNSS.

HackRF_SoftGNSS_072720

Any thoughts on what might be causing the difference in Doppler plotting between real-time and playback in GNSS-SDR-Monitor?

Thanks much, great program!

Don

acebrianjuan commented 4 years ago

Hi Don,

Are you using the SignalSource.enable_throttle_control=false option in your GNSS-SDR configuration file?

Based on this assumption, my initial guess is that while you play the recorded data back, GNSS-SDR sends the serialized data at a very fast rate1 causing some UDP packets to be dropped2. This would explain the "jumps" you are seeing in the plots at the other end.

Try setting SignalSource.enable_throttle_control to true3 and see if the "jumps" disappear when you play the recorded data back.

Let me know if this is of any help to you.

Regards, Álvaro


[1]: This is because when reading data from a file, if SignalSource.enable_throttle_control is set to false, GNSS-SDR works as fast as the CPU allows.

[2]: This mostly has to do with socket buffers as explained here, even for local inter-process communication.

[3]: Enabling this option tells the signal source to keep the delay between samples in post processing. It helps to not overload the CPU, but the processing time will be longer.

AgileEngineeringLLC commented 4 years ago

Alvaro, Good advice thanks, that fixed it. I was thinking that throttle control only applied to real-time. Thanks! Don

acebrianjuan commented 4 years ago

Don,

I'm glad the issue is resolved. I am closing it now. Please feel free to reopen it or create a new one should you encounter any problems.

Regards, Álvaro