stanford-navlab / gnss_lib_py Goto Github PK
View Code? Open in Web Editor NEWModular Python tool for parsing, analyzing, and visualizing Global Navigation Satellite Systems (GNSS) data and state estimates
License: MIT License
Modular Python tool for parsing, analyzing, and visualizing Global Navigation Satellite Systems (GNSS) data and state estimates
License: MIT License
Split the MATLAB and Python code into two different repositories
Describe the bug
When using "copy" to pull certain columns out of a larger "NavData" structure, the new NavData has not yet set the num_cols field appropriately. It says num_cols is 0 when there are values in there.
To Reproduce
This is some simple code to reproduce. I am using the Chemnitz data, I am attaching a CSV of just the first 20 lines or so to make this issue self-contained.
import gnss_lib_py as glp
import numpy as np
test_file = 'berlin1_potsdamer_platz/RXM-RAWX_small.csv'
nav_data_csv = glp.SmartLocRaw(test_file)
to_grab=np.arange(10)
small_nav_data = nav_data_csv.copy(cols=to_grab)
print('The copied one says it has ',small_nav_data.num_cols,'entries')
print('But it really has ',small_nav_data.array.shape[1],'entries')
Expected behavior
The two numbers should be equal.
Currently files have paths being added to the header. We could potentially install gnss_lib_py
under the dev
flag in poetry
Bug/Missing Functionality
Navdata parser requires CSV path to be a string, but for compatibility across operating systems and better functionality, it may be useful to allow pathlib.Path
objects as well.
To Reproduce
pixel4_gt_path = pathlib.Path('/content/drive/path/to/train w derived/2021-04-29-US-SJC-2/Pixel4/ground_truth.csv')
gt_data_pixel4 = glp.AndroidGroundTruth2021(pixel4_gt_path)
See
gnss_lib_py/gnss_lib_py/parsers/navdata.py
Lines 91 to 113 in 60c35b6
Specifically, line 105 only allows strings.
System Information (please complete the following information):
Test all code and improve implementation to remove pandas SettingWithCopyWarning. Especially need to check android.py
and ephemeris.py
1-plots the satellite skyplot using precise ephemerids sp3, it's possible?
2- How to read sp3 files.
Describe the bug
As explained by table 19 of https://files.igs.org/pub/data/format/rinex305.pdf, when reading a RINEX 3.02 file, both 1I/Q/X and 2I/Q/X observation codes should be accepted and treated the same as 2I/Q/X in the current RINEX standard. But gnss_lib_py doesn't support this. This will introduce following trace message
Traceback (most recent call last):
File "/home/mikehuang/programs/./obs_featuring.py", line 20, in <module>
staNavData = glp.RinexObs(file)
^^^^^^^^^^^^^^^^^^
File "/home/mikehuang/.local/lib/python3.11/site-packages/gnss_lib_py/parsers/rinex_obs.py", line 106, in __init__
signal_type = signal_type_dict[constellation][band]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
KeyError: '1I'
Another bug found by @danineamati
navdata[['x','y','z'],0]
works but navdata[('x','y','z'),0]
throws an error.
_parse_key_idx()
needs another condition to handle tuples
RinexObs doesn't read all versions of Rinex
Describe the bug
"poetry run pytest" reports package metadata not found
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Could execute the test scripts
Screenshots
[mikehuang@localhost gnss_lib_py-1.0.2]$ poetry run pytest
Creating virtualenv gnss-lib-py-7gV7y9ay-py3.11 in /home/mikehuang/.cache/pypoetry/virtualenvs
ImportError while loading conftest '/home/mikehuang/Downloads/gnss_lib_py-1.0.2/tests/conftest.py'.
tests/conftest.py:14: in
from gnss_lib_py.navdata.navdata import NavData
gnss_lib_py/init.py:39: in
version = metadata.version("gnss-lib-py")
E importlib.metadata.PackageNotFoundError: No package metadata was found for gnss-lib-py
[mikehuang@localhost gnss_lib_py-1.0.2]$
System Information (please complete the following information):
Additional context
Describe the proposed feature
My observation data has multiple signal and observation code, but add_sv_states_rinex prints 'Some ephemeris data is missing'. I have to add the sv states one by one
obs_signal=obs_data.where('gnss_id','gps').where('signal_type','l2').where('observation_code','2X')
sv_states=glp.add_sv_states_rinex(obs_signal)
Motivate the proposed feature
This features make it easier to use in case that multiple GNSS signals need to be considered.
After the style/contributions guide has been written, enforce style guide across currently existing code.
Describe the bug
RinexObs("TWTF00TWN_R_20232490000_01D_30S_MO.rnx") run long time and get error report
/home/zsp/.local/lib/python3.8/site-packages/gnss_lib_py/utils/time_conversions.py:586: RuntimeWarning: No time zone info found in datetime, assuming UTC
warnings.warn("No time zone info found in datetime, assuming UTC",\
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/zsp/.local/lib/python3.8/site-packages/gnss_lib_py/parsers/rinex_obs.py", line 83, in __init__
obs_navdata_raw.find_wildcard_indexes(f'{measure_char}{band}*',
File "/home/zsp/.local/lib/python3.8/site-packages/gnss_lib_py/parsers/navdata.py", line 943, in find_wildcard_indexes
raise KeyError("More than " + str(max_allow) \
KeyError: 'More than 1 possible row indexes for C1*'
Change gnss-lib-py to gnss_lib_py and associated documentation
Bug Overview:
The clock correction model is being marked as updated for all satellites of a constellation when updated for any satellite from that constellation using rinex_nav.
Bug Description:
When a message with a new timestamp is parsed from a RINEX file, all satellites in the constellation that did not have a message at that time are updated with a 'dummy' record. The time of clock is being incorrectly set when dealing with these 'dummy' records such that all satellites are being treated as having an updated clock correction model when any satellite has an updated model.
gnss_lib_py/gnss_lib_py/parsers/rinex_nav.py
Lines 213 to 214 in c9457b1
System Information:
I get the following errors when doing a clean build of the documentation:
Running Sphinx v4.1.0
making output directory... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 20 source files that are out of date
updating environment: [new config] 20 added, 0 changed, 0 removed
/usr/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216, got 192
return f(*args, **kwds)
/usr/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216, got 192
return f(*args, **kwds)
/usr/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject
return f(*args, **kwds)
/usr/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject
return f(*args, **kwds)
reading sources... [100%] tutorial
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] tutorial
generating indices... genindex py-modindex done
writing additional pages... search done
copying static files... done
copying extra files... done
dumping search index in English (code: en)... done
dumping object inventory... done
build succeeded.
The HTML pages are in build/html.
I initially thought it might be a numpy version mismatch between the requirements.txt
file in docs/ and the poetry.lock file, but the issue still persisted even after updating the requirements.txt
file.
Describe the bug
from gnss_lib_py.parsers.precise_ephemerides import parse_sp3
returns a ModuleNotFoundError
To Reproduce
Type the line of the bug description in a python console.
I use PyCharm and they suggest (through auto-completion) the 3 other files present in "gnss_lib_py/parsers", ie "ephemeris", "android" and "navdata", but not this "precise_ephemerides"
System Information (please complete the following information):
pip install gnss-lib-py
I wanted to quickly process some gnss stuff locally, and I realized that it would be super useful if one could open a jupyter/colab session, run some simple install commands and be able to use gnss_lib_py. Do you think that is doable?
I think we should just need to add this one line
poetry export -f requirements.txt --output ./docs/source/requirements.txt
Currently, the python code is scattered across different files in a way that doesn't make sense. Eg. calc_prange.py
calculates the received pseudorange for an Android phone while expected pseudoranges are calculated in sim_gnss.py
.
There is potentially a better way to arrange the functionality across different files
requirements.txt
from pyproject.toml
or vice-versa every time the code is pushed or built or whenever Travis CI does its thingChange old constant references to updated class definition
Ensure that all Android measurement functionality from deep_gnss and emd_fde is included in the repo code
Describe the bug
Installing the library on Colab seems to require an older version of pandas
To Reproduce
Steps to reproduce the behavior:
Run pip install on Google Colab
Screenshots
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
google-colab 1.0.0 requires pandas==1.5.3, but you have pandas 2.0.3 which is incompatible.
Currently a few of the function parameter/returns are documented saying that we don't know exactly what the input/output size is. Or what a specific constant means, etc.
Verify that all functions input/outputs have been documented. This will help when we create tests in the future.
I have already read the doc in this link
but there is no detailed description about gnss filter,could u fill it?
Describe the bug
The map itself on the map plot doesn't show up until after you zoom out when you're only plotting two points.
To Reproduce
Visualization tutorial, only plot last two/first two timesteps
Expected behavior
should be able to see the map
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.