GNSS-Reflectometry by Skydel simulator

Hi All,

We are currently working on GNSS-reflectometry (GNSS-R) for the task of estimate the altitude of a flying object (h in the photo attached). We generated direct Line of Sight signal and Echo only signal by Skydel and saved into two .iq file for streaming to two different channels of the USRP N310. We input the location of Vehicle (receiver or UAV in our case), i.e. longtitude, latitude, and altitude (h). In the Echo only signal generation, we input the Pseudorange Offset (d in the photo attached).

Our confusion is that, we understood in our GNSS-R scenarios, the the altitude of the object h depends on the Pseudorange Offset d by the trigonometry equation:

h = d / 2 sin(E)
where E is the elevation angle of the GNSS satellite

However, by Skydel simulator in multi-path condition, h and d are independent and can be input separately.

Could you please explain us what is the most accurate method to establish the GNSS-R scenarios by using your Skydel simulator?

Thank you for your answer in advanced.

Best regards,
Phu

GNSS-R trigonometry

1 Like

Hi Phu,

I see it the other way around: d (ie. the multipath delay) depends on h (altitude of the vehicle).

So you should set the vehicle trajectory and in real time calculate d from the value of h.

Then the multipath pseudorange offset can be updated (up to 1 kHz) in real-time (using the API) based on this calculation.

Thanks

1 Like

Hi @pmleveel,

Thank you very much for the helpful explanation.
To calculate d from h by d = 2h sin(E), we need the elevation angle E of the GNSS satellite. We were following a question posted on our forum in April 2021 (attached below) and knew that E was not available at that time but @Grace said that it will be added in plug-in interface.

Could you or @Grace please check to see if we can read the elevation of a specified satellite with respect to the vehicle from API?

If not, it would be helpful if you can explain me the way(s) to walk around.

Thanks,
Phu

---------------------------------------Last year message about elevation of a specified satellite

Vehicle Information API

Apr '21

Hello,

are there more functions to obtain vehicle information other than the ones described in Orolia Skydel User Manual ?
In particular, we are interested in getting the elevation of a specified satellite with respect to the vehicle. The information is provided in the logging files, but I could not find an option to get this information by searching the API documentation.

Grace

Apr '21

Hi Kevin,

Unfortunaletly it is not available yet but we plan to add it in the plug-in interface.

Best regards,
Grace Oulai

Hi @phule ,

The function to obtain the elevation and azimuth angles of the satellites is available from version 22.2 of Skydel.
Here is a small python script which describes how to use this function to get the elevation angle:

el_az = sim.call(GetElevationAzimuthForSV(“GPS”, svId))
el_az_func = el_az.elevationAzimuth()
elevation_angle = el_az_func[‘Elevation’]

Please find the release note page to discover what are the new Skydel features.
You can use the Skydel download link with the credentials you have to access the new version.

Regards

1 Like

Thank you @Grace and @pmleveel for the helpful explanation. Could you please advise me the command to update the Pseudorange Offset of echo signal in multipath condition? Our Skydel version is 21.9. In Documentation.txt document, there is the command SetPseudorangeRampForSV. Not sure if that is the right command to use.

@pmleveel :

  • Do we really need to set the vehicle trajectory? Can we just used a fixed location vehicle? The satellite is moving hence Pseudorange Offset should be varied even with a fixed location vehicle.

  • Could you please explain a bit how to update the Pseudorange Offset after each specific interval (for example 1ms)?

Thanks,
Phu

Hi @phule,

The command to update only the Pseudorange Offset of the echo signal in mutipath is :
SetMultipathForSV(“L1CA”, svId, powerLoss, 0, 0, 0, echo, id).

I put a sample script for changing multipath values ​​in the Github of Orolia.
You can view it with this link.

I also advise you to consult the folder Skydel-SDX\API\Python\skydelsdx to find Skydel API commands and their application.

Regards

Hi @Grace,

Thank you very much for your kind support to make and share the script and the good suggestion about the skydelsdx folder.

I have another question: to update the Pseudorange offset in real time, do we need to set the vehicle trajectory? Or can we make vehicle location as Fixed?

Best regards,
Phu

Hi @phule,

You’re welcome. Glad to have been able to help you easily set up your simulation with Skydel.

Yes, to update the Pseudorange Offset in real time, you can set the type of the vehicle trajectory to fixed or can can choose the other trajectory type available in Skydel, or you can even import your own trajectory in Settings → Vehicle and selected Track Playback in the trajectory dropdown list.

Regards,
Grace

Thank you again @Grace for your kind explanation.

Best regards,
Phu

1 Like

Hi @Grace ,

Please correct me if I am wrong. I downloaded two files you shared (test_10.py &test_multipath(2).sdx). To run the test_10.py I need to:
- Start Skydel and from its GUI, select File/Open Configuration/test_multipath(2).sdx
- run python test_10.py

Another question: what happen if from a Skydel experiment, I just ‘Export to Python’ to save a .py file but not saving the configuration to .sdx file? Would the .py file be not useful?

Thanks,
Phu

Hi @phule,

Yes, this is the correct process to run this multipath configuration.

If you just export and save the python script from Skydel without saving the SDX configuration, you can be able to run this script and configure Skydel from it.
And in that case, if you have Skydel open then run a python file from a command promt, this script will overwrite the current Skydel configuration and apply the Skydel’s commands defined in this file.

Regards,
Grace Oulai