Open anumerico opened 4 years ago
This is the first time I've ever seen anything implying a standardized Android raw GNSS data format, could you clarify exactly what you're trying to convert and where it's coming from? I'd be curious to take a look and see if it's actual legitimate raw data (I used to do a lot of low-level Android platform hacking)
Hello @Entropy512 , that's the android raw gnss page: https://developer.android.com/guide/topics/sensors/gnss
And the RAW GNSS Taskforce: https://www.gsa.europa.eu/gnss-applications/gnss-raw-measurements/gnss-raw-measurements-task-force#:~:text=Launched%20in%20June%202017%2C%20the,use%20of%20these%20raw%20measurements.
The first apps for logging raw gnss data from android devices have implemented the following format:
Raw,ElapsedRealtimeMillis,TimeNanos,LeapSecond,TimeUncertaintyNanos,FullBiasNanos,BiasNanos,BiasUncertaintyNanos,DriftNanosPerSecond,DriftUncertaintyNanosPerSecond,HardwareClockDiscontinuityCount,Svid,TimeOffsetNanos,State,ReceivedSvTimeNanos,ReceivedSvTimeUncertaintyNanos,Cn0DbHz,PseudorangeRateMetersPerSecond,PseudorangeRateUncertaintyMetersPerSecond,AccumulatedDeltaRangeState,AccumulatedDeltaRangeMeters,AccumulatedDeltaRangeUncertaintyMeters,CarrierFrequencyHz,CarrierCycles,CarrierPhase,CarrierPhaseUncertainty,MultipathIndicator,SnrInDb,ConstellationType,AgcDb,CarrierFrequencyHz
I'll attach a file example of raw gnss data logged with an android phone: gnss_log_2020_04_25_20_24_34.txt
What I would like is for convbin to add/have support for those kind of raw GNSS data and be able to convert them to RINEX 3.
If you could help me with that it would be really great. :)
Very interesting! I recently started looking into rtklib again for some projects, and if I can use an Android phone, that makes things a lot easier!
Unfortunately, the "supported devices" link in Google's documentation doesn't actually GO anywhere, so I can't see what devices are supported (fortunately a Pixel 4 XL is highly likely...)
I recommend a Xiami MI8 which has ADR and carrier phase data among other things, not the MI 9 though. There used to be a table showing the supported devices and what data they were providing.
Very interesting indeed.
...attach a file example of raw gnss data logged with an android phone
Thank you for that, looking at the goggle repository of other such files, it looks like they are all 2~3 years old now. Am I missing something?
To repeat the initial question, Does a RINEX convertor exist for such files yet (even if for rev 2.11)? Surely with all the work done to create the Matlab display / analysis tool this must now exist? Or perhaps one of ~80 odd consortium members has created such a tool?
And as Entropy512 points out, a updated list of supported devices (along with those that overcome the power management issue to provide a burst of continuous phase measurements) would be rather helpful.
My own (quite subjective) impression is that this whole concept broke out in 2016 with much promise at ION that year but has languished thereafter. Everyone knew at the time it was going to be noisy data one would have the pick over for the good measurement moments. Words like "near fixed' operation were being used to pick the solution with the least residuals. I would have expected some "we will process you phone raw observables" services to exist by this point.
Power management issue? Have a link to that?
FYI - I only recently started poking at rtklib recently after a long gap to support a mapping project I've been thinking about on and off for years (a particular hiking trail set has very poor trail maps, and GPS logs I've tried to take so far had enough noise to make them barely better than the known-bad maps of those trails), this is the first time I've heard about raw GNSS data in Android even though it's apparently been around for a few years. (Back in the day, I was an Android platform developer and a lead of one of the opensource AOSP-derivative firmware projects, but I retired from the scene in 2013-2014 or earlier...)
Dont worry, in MI8 developer options you can disable duty cycling (that's what he means by power management), same as in the tablet nexus 9 i think, those 2 devices would be a good starting point. The main source of error for smartphones is the lack of a quality external antenna which some people have overcomed by modifying/hacking them to be able to hook up such antennas. There's a converter from android raw to rinex3 written in python but is not the same as extending convbin which would be native C with ndk for android and a much better option. I think extending convbin to support android raw gnss would be quite a feat and whover manages to make it happen would/will take the glory and a few apps would sprout from it as its a gap that needs to be bridged in the pipeline. P.S.: It has been done before but not opensourced.
There is an app called Geo++ RINEX Logger for android devices. It directly logs the measurements to rinex files!
And its closed source, not what im looking for. Dont think extending an open source tool like convbin from RTKLIB can compare to using a closed source app.
And its closed source, not what im looking for. Dont think extending an open source tool like convbin from RTKLIB can compare to using a closed source app.
how about this project? https://github.com/rokubun/android_rinex
RINEX support was already announced at the GSA Annual Raw Measurement Task Force Workshop in may as one of the improvements of the next release of GnssLogger by google scheduled for Q3 2020, but until now it didn't become updated. (see: https://www.gsa.europa.eu/sites/default/files/expo/1.1_frank_van_diggelen_-_google.pdf)
I'd like to be able to use convbin to convert some raw gnss data from android to Rinex, and would like some input/help on how to extend RTKLIB functionality to support those files. Would an android.c file in the /src/rcv folder suffice? What should go in that file? Do you plan on adding those receivers?