harshadms / galileo-sdr-sim

Galileo E1B/C Signal Generator
33 stars 8 forks source link

GAL ephemerides RINEX file #7

Open FayeWong98 opened 4 months ago

FayeWong98 commented 4 months ago

First of all thanks for this amazing project.

I downloaded Galileo's rinex file from the IGS official website, and then set the latitude and longitude. Galileo-SDR-Sim can load the ephemeris of each satellite, but cannot generate signals. The error message is: ... Loaded 38 records for 34 Loaded 36 records for 36  Using static location mode. xyz = -2406489.1, 5405063.0, 2374450.4 llh = 22.000000, 114.000000, 100.0 Segmentation fault (core dumped)

Are you clear on the reason for this?

Thank you. I really appreciate the work you have done with this SW.

MichalPf commented 4 months ago

I may have one suspicion. Could you please post the RINEX file or the whole log of the faulty run from the beginning?

FayeWong98 commented 4 months ago

Of course.

The RINEX file is https://cddis.nasa.gov/archive/gnss/data/daily/2024/081/24l/HKWS00HKG_R_20240810000_01D_EN.rnx

The whole log is as follows: ./usrp_galileo -l 22,114,100 -e ../rinex_files/HKWS00HKG_R_20240810000_01D_EN.rnx -o /tmp/galileosim.bin -U 1 -b 1 -d 120

Galileo SIM initiation started. Galileo SIM initiated. Creating Galileo task... Listening for run-time position updates Loaded 57 records for 2 Loaded 50 records for 3 Loaded 9 records for 4 Loaded 59 records for 5 Loaded 58 records for 7 Loaded 46 records for 8 Loaded 29 records for 9 Loaded 26 records for 10 Loaded 33 records for 11 Loaded 31 records for 12 Loaded 33 records for 13 Loaded 1 records for 14 Loaded 45 records for 15 Loaded 1 records for 18 Loaded 19 records for 19 Loaded 20 records for 21 Loaded 34 records for 24 Loaded 38 records for 25 Loaded 31 records for 26 Loaded 50 records for 27 Loaded 49 records for 30 Loaded 15 records for 31 Loaded 25 records for 33 Loaded 38 records for 34 Loaded 36 records for 36

Using static location mode. xyz = -2406489.1, 5405063.0, 2374450.4 llh = 22.000000, 114.000000, 100.0 Segmentation fault (core dumped)

MichalPf commented 4 months ago

Thanks. The issue is very likely in the code below, where the first element of an empty vector is accessed, since there is no Ephemeris record for SVID 1 in the input RINEX. image

There will need to be some check for an empty vector.

FayeWong98 commented 4 months ago

Thank you very much, I will check and test it.

FayeWong98 commented 4 months ago

A new problem was discovered during the test. When using a satellite containing E01 to forge, only a 30-second signal can be generated. The error log is as follows:

./usrp_galileo -l 16,-61,100 -t 2021/06/20,12:00:00 -e ../rinex_files/ABMF00GLP_R_20211710000_01D_MN.rnx -o /tmp/galileosim.bin -U 1 -b 1

Galileo SIM initiation started. Galileo SIM initiated. Creating Galileo task... Listening for run-time position updates Loaded 38 records for 1 Loaded 58 records for 2 Loaded 76 records for 3 Loaded 17 records for 4 Loaded 44 records for 5 Loaded 67 records for 7 Loaded 74 records for 8 Loaded 41 records for 9 Loaded 48 records for 11 Loaded 13 records for 12 Loaded 44 records for 13 Loaded 32 records for 14 Loaded 39 records for 15 Loaded 36 records for 18 Loaded 17 records for 19 Loaded 40 records for 21 Loaded 33 records for 24 Loaded 45 records for 25 Loaded 44 records for 26 Loaded 46 records for 27 Loaded 70 records for 30 Loaded 19 records for 31 Loaded 11 records for 33 Loaded 72 records for 36

Using static location mode. xyz = 2973199.1, -5363793.1, 1746755.6 llh = 16.000000, -61.000000, 100.0

tmin = 2021/06/19,23:50:00 (2162:604200) tmax = 2021/06/20,23:30:00 (2163:84600)

Duration = 300.0 [sec] Start = 2021/06/20,12:00:00 (2163:43200) 02 51.8 44.0 24753285.8 43200.10000 07 275.6 15.1 27466232.7 43200.10000 08 223.7 23.8 24647976.5 43200.10000 15 198.3 39.0 24916110.7 43200.10000 18 241.1 13.3 29165754.8 43200.10000 25 97.5 13.2 27649023.4 43200.10000 30 341.8 36.7 24495496.6 43200.10000 36 40.7 28.5 26092537.0 43200.10000

Generating Nav messages from ephemeris data Time into run = 30.0 - 16642125Segmentation fault (core dumped)

MichalPf commented 4 months ago

When this happens you can always easily check with gdb. In this case it produces:

(gdb) run -l 16,-61,100 -t 2021/06/20,12:00:00 -e ../rinex_files/ABMF00GLP_R_20211710000_01D_MN.rnx -o /tmp/galileosim.bin -U 1 -b 1 Starting program: /home/m/galileo_sdr_sim_orig/build/usrp_galileo -l 16,-61,100 -t 2021/06/20,12:00:00 -e ../rinex_files/ABMF00GLP_R_20211710000_01D_MN.rnx -o /tmp/galileosim.bin -U 1 -b 1 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Galileo SIM initiation started. [New Thread 0x7ffff49bb700 (LWP 10993)] Galileo SIM initiated. Creating Galileo task... [New Thread 0x7fffeffff700 (LWP 10994)] Listening for run-time position updates Loaded 38 records for 1 Loaded 58 records for 2 Loaded 76 records for 3 Loaded 17 records for 4 Loaded 44 records for 5 Loaded 67 records for 7 Loaded 74 records for 8 Loaded 41 records for 9 Loaded 48 records for 11 Loaded 13 records for 12 Loaded 44 records for 13 Loaded 32 records for 14 Loaded 39 records for 15 Loaded 36 records for 18 Loaded 17 records for 19 Loaded 40 records for 21 Loaded 33 records for 24 Loaded 45 records for 25 Loaded 44 records for 26 Loaded 46 records for 27 Loaded 70 records for 30 Loaded 19 records for 31 Loaded 11 records for 33 Loaded 72 records for 36

Using static location mode. xyz = 2973199.1, -5363793.1, 1746755.6 llh = 16.000000, -61.000000, 100.0

tmin = 2021/06/19,23:50:00 (2162:604200) tmax = 2021/06/20,23:30:00 (2163:84600)

Duration = 300.0 [sec] Start = 2021/06/20,12:00:00 (2163:43200) 02 51.8 44.0 24753285.8 43200.10000 07 275.6 15.1 27466232.7 43200.10000 08 223.7 23.8 24647976.5 43200.10000 15 198.3 39.0 24916110.7 43200.10000 18 241.1 13.3 29165754.8 43200.10000 25 97.5 13.2 27649023.4 43200.10000 30 341.8 36.7 24495496.6 43200.10000 36 40.7 28.5 26092537.0 43200.10000

Generating Nav messages from ephemeris data Time into run = 30.0 - 30989772 Thread 2 "usrp_galileo" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff49bb700 (LWP 10993)] 0x000055555556161b in allocateChannel (chan=0x7ffff48768e0, eph_vector=0x7ffff4876580, ionoutc=..., grx=..., xyz=0x7ffff48791e8, elvMask=10, sm=0x7ffff4876120, current_eph=std::vector of length 36, capacity 36 = {...}, allocatedSat=0x5555556c16c0 ) at /home/m/galileo_sdr_sim_orig/src/channel.cpp:57 57 eph = eph_vector[sv][current_eph[sv]]; (gdb) print sv $1 = 0 (gdb) print current_eph[0] $5 = 1146410325 (gdb)

As you can see, it fails on line 57 of the file channel.cpp because is tries to access element 1146410325 of vector eph_vector. Now, why the value 1146410325 is stored in current_eph for sv with index 0 is not obvious, so it will need some proper debugging.

FayeWong98 commented 4 months ago

You are awesome and enthusiastic.

Could you please continue to help me? You can leave your email address. If it is inconvenient, I will provide my email address and look forward to your contact.

This really means a lot to me and I hope you have a fulfilling and enjoyable life!

Best, Faye