-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reassembler module for satellite↔receiver distance and Doppler shift #126
Comments
A couple of notes. In our first iridium talk we calculated the estimated doppler shift from TLEs and compared them to the received frequencies in this video at ~11:00 - It seems we never published that code though. Calculating from the SV positions is a neat idea, although made difficult by the fact that the location is sent with 4km granularity in x/y/z, so relatively imprecise. This means if you attempt to calculate the apparent speed of the satellite by two positions too close together, you will get wildly inaccurate results. You could attempt to compensate for this by taking the positions with a longer time interval between them, but that will of course introduce other inaccuracies. Another alternative is to take only one position and calculate the apparent speed from the real speed and direction of the SV similar to what is done in beam-reception-plotter.py. (This code is not concerned with speed, but you should be able to derive the speed from the SV height) For some of your questions: |
Thanks for sharing your thoughts. I might plot the calculated Doppler shift next to the IRA frequency - this should allow to visually inspect the differences. I think it was a good way to initially get started with the Iridium toolkit, especially with reassembling and IRA frames. beam-reception-plotter.py seems very advanced and currently is above my knowledge/understanding. As this has all been more or less playing around... the overall question here is: does gr-iridium already take Doppler shift into account yet (I think you mentioned it in an "old talk" that it's not the case, but this may have changed). Do you see potention for improving demodulation? Or are bursts "short enough" anyway so that Doppler shift can be ignored because they do not lead to frequency drift/ phase offset in a relevant amount? |
Hi,
thanks for your great work in gr-iridium and iridium-toolkit. I appreciate the talks you held at various chaos events, got interested and finally got me some RX equipment. I have questions about reception quality, but I think I'll open another issue for that.
I've not dived too deep yet, but I've had some thoughts about Doppler shift for improved burst/frame decoding. I know that calculating Doppler shift here is a little late because it would actually have to be fed back to gr-iridium for the QPSK demodulator to consider for additional phase shifted symbol... it's probably better to use estimations from the TLE data, right? But I got interested in calculating it anyhow. And I'd be interested if you can see rx signal level correlate to satellite↔receiver distance.
The idea:
If anyone finds this useful, this may become a PR. For now, it's the plain Python code (stored under iridium-toolkit/iridiumtk/reassembler/satdist.py on my machine):
It can then be called
python3 reassembler.py -i <something.parsed> -m satdist
. I've added a pipe like| grep " 048 "
to allow to filter for satellite no 48.I first calculate the central angle between the rx position and satellite position projected on earth's surface ("spherical law of cosines", https://en.wikipedia.org/wiki/Great-circle_distance#Formulae). The rx position is read from the default section of 'locations.ini' (as this is already used by some other module), the satellite vehicle position is taken from the IRA frames.
When you use the commented line
str += " %.2f %.2f %.2f %s %.0f %.0f" % (delta_time, delta_dist, velocity, rel_doppler_shift, delta_f_pred, delta_f_real)
instead ofstr += " %.0f %.0f" % (delta_f_pred, delta_f_real)
, you'lle see some more values.The command line output shows the estimated Doppler shift in Hz as calculated by my reassembler module and the deviation of the IRA rx frequency from the nominal IRA frequency of 1.626270 GHz (as per gr-iridium docs/channels.svg). TL;DR: Saldly, the numbers do not match and I don't really know why. I've only some ideas.
I'd expect the Doppler shift to become lower as long as the satellite vehice comes closer to the rx position and then to become higher again -- hence, the numbers to change in that way as well as the sign.
Cheers
The text was updated successfully, but these errors were encountered: