Skip to content
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

How to add support for a new receiver aka Android Raw Gnss #534

Open
anumerico opened this issue May 9, 2020 · 11 comments
Open

How to add support for a new receiver aka Android Raw Gnss #534

anumerico opened this issue May 9, 2020 · 11 comments

Comments

@anumerico
Copy link

anumerico commented May 9, 2020

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?

@Entropy512
Copy link

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)

@anumerico
Copy link
Author

anumerico commented Jul 9, 2020

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. :)

@anumerico anumerico reopened this Jul 9, 2020
@Entropy512
Copy link

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...)

@anumerico
Copy link
Author

anumerico commented Jul 9, 2020

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.

@DavidKelleySCSC
Copy link

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.

@Entropy512
Copy link

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...)

@anumerico
Copy link
Author

anumerico commented Jul 9, 2020

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.

@YanqingHou
Copy link

There is an app called Geo++ RINEX Logger for android devices. It directly logs the measurements to rinex files!

@anumerico
Copy link
Author

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.

@bruceOrange22
Copy link

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

@mash-graz
Copy link

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants