0
$\begingroup$

I have raw GPS data (see end of the question for details if you think the protocols are relevant), and I need to extract/compute ephemeris and pseudoranges (my goal is to replace the recursive least squares that the receiver solves to compute the position with a home-brewed method based on sensor fusion). Concerning the ephemeris, I have access to the 3 first subframes of each of the 25 frames of the GPS message. Documentations/books/etc that I have found just vaguely mention that the first subframe contains clock data, and the two others contain ephemeris data. However, none of them precisely says what the words in these subframes are, and how I can use them to compute orbital information (I'm assuming that I only want satellite positions?). Can anyone give me pointers to some references on how to do this? Or (even better), is there any open-source code that already implements this?

I really appreciate your help.

Details on the data: They have been transmitted by a Ublox EVK-7p using the UBX RXM-EPH and RXM-RAW protocols.

RXM-EPH: satellite ID (4 byes), HOW word (4 bytes), followed by three 32-byte arrays corresponding to subrames 1 to 3 of the GPS message.

RXM-RAW: time of week, week, num of satellites, reserved (?) , carrier phase, pseudo-range, doppler, and so on....

Update: I found this which seems to answer most of my questions. It is from 1995 though.

$\endgroup$
1
$\begingroup$

The GPS standard has been the same since the first GPS satellites were launched, so sources from 1995 are very relevant In fact that is the document I would point you to. One of the best libraries for decoding GPS is gnss-sdr, You can look at how they are doing protocol decoding in order to get an idea of how to implement it.

Other docs I would point you would be the official GPS website and the interface control documents. There is a ton of useful information there.

$\endgroup$
1
$\begingroup$

So the RXM-RAW and RXM-EPH messages come from IS-GPS-200H interface control document found here. http://www.gps.gov/technical/icwg/IS-GPS-200H.pdf

But these are not exactly the same as RXM-RAW RXM-EPH messages. Namely there is a byte offset because the ublox messages contain a header and a checksum.

But this file here should be helpful to what you want to do. http://gnsstk.sourceforge.net/gps_8c-source.html#l00714.

Remember to multiply by the correct scale factor to make sure your units are right. (semi circles are not the same thing as radians).

A good method for checking your work would be to use rtklib to get your ublox to output it's messages to a a rinex.o file and compare to the code that you wrote.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.