From 091b5ff1d70216d1211afd21a414584ec6f5f70d Mon Sep 17 00:00:00 2001 From: Jonas Bchrt Date: Sat, 5 Jun 2021 00:26:03 +0100 Subject: [PATCH] Initialize repo --- LICENSE.md | 5 + README.md | 227 + bayes_snapper.npy | Bin 0 -> 1623 bytes cd_metric.py | 267 + coarse_time_navigation.py | 3571 + code_db.dat | Bin 0 -> 56027444 bytes code_db.py | 144 + codes_C.npy | Bin 0 -> 5156048 bytes codes_E.npy | Bin 0 -> 1636928 bytes codes_G.npy | Bin 0 -> 131072 bytes codes_S.npy | Bin 0 -> 237464 bytes .../BRDC00IGS_R_20183550000_01D_MN.rnx | 94138 ++++++++++++++++ direct_position_estimation.py | 438 + e1_strings.py | 109 + eph_util.py | 3723 + frequency_bias_estimation.py | 357 + hypotheses_queue.py | 46 + hypotheses_set.py | 65 + hypothesis.py | 48 + jacobian_height.py | 31 + main.py | 786 + pseudorange_prediction.py | 368 + requirements.txt | 6 + requirements_mkl.txt | 1 + requirements_mle.txt | 2 + rinex_preprocessor.py | 187 + satellite_combos.py | 64 + timeout.py | 27 + 28 files changed, 104610 insertions(+) create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 bayes_snapper.npy create mode 100644 cd_metric.py create mode 100644 coarse_time_navigation.py create mode 100644 code_db.dat create mode 100644 code_db.py create mode 100644 codes_C.npy create mode 100644 codes_E.npy create mode 100644 codes_G.npy create mode 100644 codes_S.npy create mode 100644 data/Enabling_Robust_State_Estimation_through_Measurement_Error/shared_data/BRDC00IGS_R_20183550000_01D_MN.rnx create mode 100644 direct_position_estimation.py create mode 100644 e1_strings.py create mode 100644 eph_util.py create mode 100644 frequency_bias_estimation.py create mode 100644 hypotheses_queue.py create mode 100644 hypotheses_set.py create mode 100644 hypothesis.py create mode 100644 jacobian_height.py create mode 100644 main.py create mode 100644 pseudorange_prediction.py create mode 100644 requirements.txt create mode 100644 requirements_mkl.txt create mode 100644 requirements_mle.txt create mode 100644 rinex_preprocessor.py create mode 100644 satellite_combos.py create mode 100644 timeout.py diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..07ec17f --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,5 @@ +Copyright (c) 2021, Jonas Beuchert + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff3ce36 --- /dev/null +++ b/README.md @@ -0,0 +1,227 @@ +# Snapshot GNSS + +Author: *Jonas Beuchert* + +This repository contains a Python script and additional open-source code to reproduce the results that are presented in + +> Jonas Beuchert and Alex Rogers. 2021. SnapperGPS: Algorithms for Energy-Efficient Low-Cost Location Estimation Using GNSS Signal Snapshots. In SenSys ’21: ACM Conference on Embedded Networked Sensor Systems, November, 2021, Coimbra, Portugal. ACM, New York, NY, USA, 13 pages. (Under review.) + +The script takes raw twelve-millisecond-long time-stamped GNSS signal snapshots, estimates the locations where they were recorded, and compares the results with the ground truth to obtain performance measures for the proposed algorithms. The first section of this readme describes the setup that is necessary to run the experiments. + +Besides that, the repository provides a large number of GNSS utility functions that go beyond what is needed to reproduce the results presented in this paper. They are listed in the second section of this readme. + +**Table of Contents** +1. [Setup](#setup) +2. [Exploring the Algorithms](#alg) +3. [GNSS Utility Functions](#gnss) + +## Setup + +### 1. Clone the repository to your local machine. + +For example, via HTTPS + +```shell +git clone https://github.com/JonasBchrt/snapshot-gnss-algorithms.git +cd snapshot-gnss-algorithms +``` + +### 2. Get the input data. + +Experiments 1-3 are based on our data collection + +> Jonas Beuchert and Alex Rogers. 2021. SnapperGPS: Collection of GNSS Signal Snapshots. University of Oxford, Oxford, UK. + +Download the data into a sub-directory called `data` such that the file structure is + +``` ++-- main.py ++-- ... ++-- data +| +-- A + | +-- 20201206_150000.bin + | +-- 20201206_150020.bin + | +-- ... + | +-- BRDC00IGS_R_20203410000_01D_MN.rnx +| +-- ... +| +-- K + | +-- 20210327_165641.bin + | +-- ... + | +-- BRDC00IGS_R_20210860000_01D_MN.rnx + | +-- ground_truth.gpx +``` + +Experiment 4 is based on the data collection that was published alongside + +> Ryan M. Watson, Jason N. Gross, Clark N. Taylor, and Robert C. Leishman. 2019. Enabling robust state estimation through measurement error covariance adaptation. IEEE Trans. Aerospace Electron. Systems 56, 3 (2019), 2026–2040. + +Download the data from [https://bit.ly/2vybpgA](https://bit.ly/2vybpgA) and add it to the `data` directory such that the file structure is + +``` ++-- main.py ++-- ... ++-- data +| +-- Enabling_Robust_State_Estimation_through_Measurement_Error + | +-- iq + | +-- drive_2 + | +-- GPS_002_0000.LS3 + | +-- GPS_002_0001.LS3 + | +-- GPS_002_0002.LS3 + | +-- GPS_002_0003.LS3 + | +-- drive_3 + | +-- GPS_003_0000.LS3 + | +-- GPS_002_0001.LS3 + | +-- GPS_002_0002.LS3 + | +-- GPS_002_0003.LS3 + | +-- shared_data + | +-- BRDC00IGS_R_20183550000_01D_MN.rnx + | +-- truth + | +-- drive_2.xyz + | +-- drive_3.xyz +``` + +### 3. Install the dependencies. + +The code was tested with Python 3.7.2 on Ubuntu 16.04, with Python 3.7.7 on Windows 10, and with Python 3.7.10 on Ubuntu 18.04 and macOS Big Sur. + +Reproducing the results for the algorithms *LS-single*, *LS-linear*, *LS-combo*, *LS-SAC*, and *DPE* requires the packages `numpy`, `scipy`, `pymap3d`, `sklearn`, `shapely`, and `matplotlib`. You can install them via `pip` + +```shell +python -m pip install -r requirements.txt +``` + +Algorithm *MLE* requires in addition `autograd` and `autoptim`, which you can add with + +```shell +python -m pip install -r requirements_mle.txt +``` + +When using *MLE*, you **may** have to replace the first part +of the import section in `pymap3d/ecef.py` + +```python +from math import radians, sin, cos, tan, atan, hypot, degrees, atan2, sqrt, pi +``` + +with + +```python +from autograd.numpy import radians, sin, cos, tan, arctan as atan, hypot, degrees, arctan2 as atan2, sqrt, pi, vectorize +``` + +Optionally, *LS-single*, *LS-linear*, *LS-combo*, *LS-SAC*, and *MLE* run faster with `mkl_fft`, which you can install with + +```shell +conda install -c intel mkl_fft +``` + +or + +```shell +python -m pip install -r requirements_mkl.txt +``` + +### 3. Run the experiments. + +Execute the script `main.py`, e.g., open a terminal and type + +```shell +python main.py -e 1 -m "ls-sac" +``` + +to run Experiment 1 with algorithm *LS-SAC*. After the excution is completed, you should see the values in Table 1 of the paper printed in the terminal as well as a window with a CDF plot of the localisation error like in Figure 1 + +```shell +Median horizontal error: 11.7 m +Error < 200 m: 96% +Mean runtime: 0.52 s +``` + +![Expected output](http://users.ox.ac.uk/~kell5462/cdf_github_readme.png) + +For a complete list of options, type + +```shell +python main.py -h +``` + +## Exploring the Algorithms + +If you want to explore the algorithm implementations beyond simply reproducing the results in the paper, then keep reading. However, I will not explain the theory behind the algorithms in detail here and will instead assume that you had a look on the paper. + +Basically, the paper breaks the various approaches to snapshots into two groups: one that contains two-step algorithms with satellite acquisition followed by coarse-time navigation (CTN) and one that contains one-step algorithms that directly estimate a position from a raw snapshot and are called direct positioning, direct position estimation (DPE), or collective detection (CD). I will follow a similar structure here and will start with acquisition. + +The satellite acquisition stage takes a raw GNSS signal snapshot and estimates the code phases of all potentially visible satelites as well as measures for the reliabilities of the estimates. The `main.py` script that you might have executed in the previous section calls an acquisition function `eph_util.acquisition_simplified` that is taylored to raw signal snapshots recorded with a SnapperGPS receiver. It in includes the prediction of the set of visible satellites and their expected Doppler shifts for a given coarse initial position and time. Knowledge of both helps to narrow down the search space and, therefore, speed up calculations. The functions supports different GNSS with their different code structures and lengths, but exposes only a small number of parametres to the user. However, there is also another `eph_util.acquisition` function that offers a lot more options and can be applied to custom raw data with arbitrary snapshot durations and sampling frequencies. For example, you can choose the way how code-phase interpolation is done, if you want to use non-coherent or coherent integration, and how you want to deal with the individual channels of the more sophisticated L1C, E1, and B1C signals. On the other hand, this function does not predict the visible stallites and their Doppler shifts. You may want to use `eph_util.get_visible_sats` and `ep.get_doppler` for this at first. + +A raw implementation of least-squares CTN according to [van Diggelen](https://us.artechhouse.com/A-GPS-Assisted-GPS-GNSS-and-SBAS-P1729.aspx) is `coarse_time_navigation.coarse_time_nav`, which also has a (slightly) simplified counter-part `coarse_time_navigation.coarse_time_nav_simplified`. A core contribution of the paper is the introduction and analysis of different strategies to select the satellites that are used for CTN. They are implemented on top of the two aforementioned functions in `coarse_time_navigation.selective_coarse_time_nav` and `coarse_time_navigation.positioning_simplified`. + +The latter function provides a wrapper for another core contribution of the paper, robust CTN via maximum-likelihood estimation (MLE) rather than least-squares. It is implemented in `coarse_time_navigation.coarse_time_nav_mle`. + +Finally, the class `direct_position_estimation.DPE` contains our implementaion of [Bissig et al.](https://doi.org/10.1145/3055031.3055083)'s algorithm for efficient direct positioning using branch-and-bound optimisation. Among others, it offers parametres to switch between the original version of the algorithm (`n=81`, `elev_mask=5`, `exponent=1`, `ref=False`, and `multi-ms-mode='multiple'`) and our version that improves robustness and runtime for signals that are longer than one millisecond (`n=16`, `elev_mask=10`, `exponent=2`, `ref=True`, and `multi-ms-mode='single'`). Note that the fundamentally different performance results between the two versions that you can see in the paper are achieved by changing `multi-ms-mode`. The original mode processes the individual milliseconds of a longer snapshot seperately and averages over the results while our version integrates all individual millisecond-chunks and runs the optimisation just ones. + +## GNSS Utility Functions + + The base for the algorithms mentioned in the preceding section is our Python library with GNSS utility functions, which might offer some useful pieces of code for other projects. If you employ the code in this repositiory for your own research, please consider citing the SnapperGPS paper. + +### Additional Dependencies + +Other functions in this repository rely on the following packages, which are not required to reproduce the results in the paper: + +* `nlopt` (only for `coarse_time_navigation.coarse_time_nav_mle` with non-default option) +* `pygeodesy` (only for `eph_util.get_elevation`; requires external geoid models only one of which is included in the repositiory, others [can be downloaded](https://geographiclib.sourceforge.io/html/geoid.html#geoidinst) and unpacked into the `snapshot-gnss-algorithms` directory) +* `rockhound` (only for `eph_util.get_elevation`) +* `python-srtm` (only for `eph_util.get_elevation` with non-default option; requires external digital elevation models and only those close to Oxford are included in the repository, others [can be downloaded](https://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11/) and unpacked into the `snapshot-gnss-algorithms/digital_elevation_models` directory; `pip`-installation for Python <3.8 requires flag `--ignore-requires-python`) +* `folium` (only for map plotting in `position_estimation_script`) +* `sympy` (only for `eph_util.generate_b1c_code` and `eph_util.generate_l1c_code`) +* `pandas` (only for `eph_util.get_sat_pos_sp3` and `eph_util.read_sp3`) +* `gnsspy` (only for `eph_util.read_sp3`) + +### Function Listing + +*TODO* + +### Usage Examples + +Here are just a bunch of code snippets that demonstrate what some of the utility functions can do. + +To localise a receiver on the Earth, you might first want to know where the GNSS satellites are. You can find information such as the satellite orbits, the errors of their on-board clocks, or the state of the ionosphere - which is a layer of the atmosphere that has a significant effect of the GNSS signal propagation speed - in so-called RINEX files. The NASA archives them [here](https://cddis.nasa.gov/archive/). Internally, this code library represents the navigation data as a 2D NumPy array with 21 rows and columns for different satellites as well as different points in time. There are different ways to turn RINEX files into this representation: + +```python +import eph_util as ep +# Read navigation data for Galileo satellites from a RINEX 3 file that contains only Galileo data +eph = ep.rinexe('BRUX00BEL_R_20201360000_01D_EN.rnx') +# Read navigation data for GPS satellites from a RINEX 2 file +eph = ep.rinexe('brdc1360.20n') +# Read navigation data for GPS satellites from a RINEX 3 file that contains data for multiple GNSS +eph = ep.rinexe("BRDC00IGS_R_20203410000_01D_MN.rnx", "G") +# Read navigation data for SBAS satellites from a RINEX 3 file that contains data for multiple GNSS +eph = ep.rinexe("BRDC00IGS_R_20203410000_01D_MN.rnx", "S") +# Read navigation data for Galileo satellites from a RINEX 3 file that contains data for multiple GNSS +eph = ep.rinexe("BRDC00IGS_R_20203410000_01D_MN.rnx", "E") +# Read navigation data for BeiDou satellites from a RINEX 3 file that contains data for multiple GNSS +eph = ep.rinexe("BRDC00IGS_R_20203410000_01D_MN.rnx", "C") + +from rinex_preprocessor import preprocess_rinex +# Read navigation data for GPS, Galileo, and BeiDou satellites from a RINEX 3 file +eph_G, eph_E, eph_C = preprocess_rinex("BRDC00IGS_R_20203410000_01D_MN.rnx") +# Save the same data in .npy files in the working directory +preprocess_rinex("BRDC00IGS_R_20203410000_01D_MN.rnx", target_directory="") +``` + +You feed the navigation data into function such as `ep.get_sat_clk_corr` (satellite clock error), `ep.get_sat_pos_vel_acc` (satellite position, velocity, and acceleration), `ep.get_visible_sats` (satellites that are visible from the receiver location), and `ep.get_doppler` (expected Doppler shift of a GNSS signal). + +Instead of RINEX data, you can also use `.sp3` files to calculate satellite orbits and positions using `ep.read_sp3` and `ep.get_sat_pos_sp3`. + +Global Navigation Satellite Systems use their own time references. Basically, they count the number of seconds since a certain reference date. You can convert GPS and BeiDou time into UTC and vice-versa. + +```python +gps_time = ep.utc_2_gps_time(np.datetime64('2020-05-15T00:00:00')) +beidou_time = ep.gps_time_2_beidou_time(gps_time) +utc = ep.gps_time_2_utc(gps_time) +``` + +The troposhere and the ionosphere are two layers of the atmosphere that have a considerable effect on the signal propagation speed. You can read the GPS ionosphere parametres from a RINEX file with `eph_util.gps_ionosphere_parameters_from_rinex`. Then you can use `eph_util.ionospheric_klobuchar` or `eop_util.ionospheric_tsui` to approximate the delay in the ionosphere. Furthermore, `eph_util.tropo`, `eph_util.troposheric_hopfield`, and `eph_util.troposheric_tsui` implement different models for correction of the troposheric delay. + +Each GNSS satellite broadcasts a unique code that allows a receiver to identify it in the captured data. (Except for GLONASS satellites, which all broadcast the same code in the L1 frequency band, but with slightly different carrier frequencies.) There are functions that generate the codes that are broadcasted in the L1/E1/B1C/L1C bands, namely `eph_util.generate_ca_code` for GPS L1 and SBAS, `eph_util.generate_e1_code` for Galileo E1, where `eph_util.e1b` and `eph_util.e1c` are responsible for the individual channels, `eph_util.generate_b1c_code` for BeiDou B1C with `eph_util.b1c_data` and `b1c_pilot` for the channels, `eph_util.generate_l1c_code` for GPS L1C based on `eph_util.l1c_data` and `eph_util.l1c_pilot`, and `eph_util.generate_ca_code_glonass` for GLONASS L1. ALternatively, you can read the already generated from files using the class `CodeDB` or even codes that are already pre-sampled at SnapperGPS' sampling frequency 4.092 MHz from `.npy` files: `codes_G.npy` for GPS L1, `codes_E.npy` for Galileo E1, and `codes_C.npy` for BeiDou B1C. + +Finally, `eph_util.get_elevation` is there to work with different elevation models and geoids and `eph_util.get_relative_height_from_pressure` helps you to include pressure measurements into position estimation. diff --git a/bayes_snapper.npy b/bayes_snapper.npy new file mode 100644 index 0000000000000000000000000000000000000000..1fefd6c56f307074d6c060ce1f73a413407513c0 GIT binary patch literal 1623 zcmbu7Z)_7~9LKNQ80E&FF&%;kcA{&?W*HN7BHJC5FKsT(O{ousb+9XAUM<=YzhSX4U?I&E*WN@<{a;ola^+mTU1VK z_H(GADUb{NzYl+`T-7tFbT+ISrWQ_Rk}M&crkv#^Q&SDyVrE8VJh(y?ulE(+!WZR6 zP!{niC?7=y!GciK*WeZPv20r7Q5i4eIIg=D3&+Ps;U`!Wik8QH_Sq2lSS;3c!~VEm zQGuaK89#)@IV=geC7oERT8ERGZ0ccMP7G?2B4;&=@02r^m5}w=b{@+bj-xt<<)L_` zZJIU{hH0TD7GGjN4a%lur3{17gg$^sZZ6(2~;%r-S``>5d7*;D0f91i(i@%(S zw&RXG))1_96V;?_S#}q=lXBEW8lX1MI)b}wp3$-qtn;Fjjkw#1x`&|Nj-vknXom!q z@kklxLx`b4afvXhFmBvw5uO`lgX7*zu+ee9d4v|*z4{&hAN-l` z)`}fxQ`YX;^&;+L*i^`}5(6naYjZK{ekbbzg4R;jgLI>9!GDzas(<2=up{#MyVqvd ziP*yMkP=^P<9A_5s*%x|gsnxRHpi%)K=6Qwu8m#Japz6Z{iSb;*v7DZzKy#L5+X&L z9ga;0!A{Sn)3y2JgSK65r_TzpsrTPYfBlnyhZ%M$@oL*v^0rSJ)J!X3=;(5pHiug_ zg_{x0DDIl}U^lIH|8-ywbrv#~LwAVQ#OU14QG3B?EnPuZMf~Emb2qkqNZPSCk9`D$ zmTtbs>2N>60k6YHXno;AA7zLuv~-KTPTgY!2TNohcW0Shb4pzuuNSYLnwY&j-7Mk| z!xIWE-H7Dqo+OYpsp$$xSE)BP8P=?j&U+>c=qDnp+_OBbLyx_*KIuP=J@1q8-K zBp9AjXo>e>N0lT{8FZY=u#iI;E^C;$=x@QTVE73USb~x@7IB 0: + codeLength = 4092.0 + else: + codeLength = 1023.0 + # Find number of samples per spreading code + samplesPerCode = np.int(np.round((sampling_freq / (codeFreqBasis / + codeLength)))) + # Find number of samples per millisecond + samplesPerMs = np.int((np.round(sampling_freq * 1e-3))) + + # Find number of samples in signal snapshot + samplesInSignal = samplesPerMs * ms_to_process + + # Create vector of data with correct length (1 ms) + signal = signal[0: samplesInSignal] + signal = np.reshape(signal, (ms_to_process, samplesPerMs)) + + # Find time constants + ts = 1.0 / self.samplingFreq # Sampling period [s] + tc = 1.0 / codeFreqBasis # C/A chip period [s] + + # Generate all C/A codes and sample them according to sampling freq. + # For Galileo, seperately generate data and pilot channel + # Prepare output matrix to speed up function + caCodesTable = np.empty((nSat+nSatGalileo, samplesPerCode)) + for k in range(nSatGPS): + PRN = vis_sat_GPS[k] # Index (PRN) of GPS satellite + # Generate CA code for given PRN + caCode = ep.generate_ca_code(PRN) + if nSatGalileo > 0: + # Adjust length to Galileo code (4 ms) + caCode = np.tile(caCode, 4) + # Digitizing + # Make index array to read C/A code values + codeValueIndex = np.ceil(ts * np.arange(1, samplesPerCode + 1) / tc + ).astype(int) - 1 + # Correct the last index (due to number rounding issues) + codeValueIndex[-1] = codeLength - 1 + # Make the digitized version of the C/A code + caCodesTable[k] = caCode[codeValueIndex] + for k in range(nSatGalileo): + PRN = vis_sat_Galileo[k] # Index (PRN) of Galileo sat + # Make the digitized version of the E1B code (data) + caCodesTable[nSatGPS + k] = ep.generate_e1_code(PRN, + sampling_freq) + # Make the digitized version of the E1C code (pilot) + caCodesTable[nSat + k] = ep.generate_e1_code(PRN, sampling_freq, + pilot=True) + + # Repeat C/A code table to match number of milliseconds in snapshot + caCodesTable = np.tile(caCodesTable, (ms_to_process, 1)) + + # Find phase points of the local carrier wave + phasePoints = np.arange(samplesPerMs) * 2.0 * np.pi * ts + + # Shift raw signal to baseband + # Prepare the output matrix to speed up function + # (Zero padding if samplesPerCode > 1 ms) + baseBandSignal = np.zeros(((nSat+nSatGalileo)*ms_to_process, + samplesPerCode), dtype=np.complex64) + for ms_idx in range(ms_to_process): + for k in range(nSat): + # Generate carrier wave frequency + if k < nSatGPS: + frq = IF + doppler_GPS[k] # Do not ignore Doppler shift + else: + frq = IF + doppler_Galileo[k - nSatGPS] + # Generate local sine and cosine + carrier = np.exp(1j * frq * phasePoints) + # "Remove carrier" from the signal + baseband_signal_curr = carrier * signal[ms_idx] + if k < nSatGPS: + # GPS L1 + baseBandSignal[ms_idx*(nSat+nSatGalileo)+k, + :samplesPerMs] = baseband_signal_curr + else: + chunk_idx = np.mod(ms_idx, 4) + # Galileo E1B (data) + baseBandSignal[ms_idx*(nSat+nSatGalileo)+k, + samplesPerMs*chunk_idx: + samplesPerMs*(chunk_idx+1)] \ + = baseband_signal_curr + # Galileo E1C (pilot) + baseBandSignal[ms_idx*(nSat+nSatGalileo)+k+nSatGalileo, + samplesPerMs*chunk_idx: + samplesPerMs*(chunk_idx+1)] \ + = baseband_signal_curr + + # Correlate signals (to square or not to square?) + corrTable = np.abs(np.fft.ifft( + np.fft.fft(caCodesTable) * np.conj(np.fft.fft(baseBandSignal))) + )**exponent + + # Sum correlograms for each satellite + self.corrTable = np.zeros((nSat+nSatGalileo, samplesPerCode)) + for ms_idx in range(ms_to_process): + self.corrTable = (self.corrTable + + corrTable[(ms_idx*(nSat+nSatGalileo)): + ((ms_idx+1)*(nSat+nSatGalileo))]) + + # Sum over Galileo channels + self.corrTable = np.vstack((self.corrTable[:nSatGPS], + self.corrTable[nSatGPS:nSat] + + self.corrTable[nSat:nSat+nSatGalileo])) + + self.corrTableUncert = [] + self.uncertList = [] + + def likelihood(self, code_phase): + """Pseudo-likelihood of given set of C/A code phases. + + Input: + code_phase - Expected C/A code phases of visible sats [s] + Output: + cd - Likelihood for observing signal given C/A code phases + """ + import numpy as np + + # Pseudo-likelihood initialization + cd = 0.0 + + # Pseudo-likelihood calculation + # For all listed PRN numbers ... + for k in range(code_phase.shape[0]): + + # Shift correlation of C/A code replica with signal by code + # phase and sum correlograms + cd = cd + np.roll(self.corrTable[k], shift=-np.int(np.round( + code_phase[k] * self.samplingFreq))) + + # Account for (unknown) common bias + return np.max(cd) + + def max_likelihood(self, code_phase, diagonal): + """Pseudo-likelihood of given set of C/A code phases. + + Input: + code_phase - Expected C/A code phases of visible sats [s] + diagonal - Diameter of 3D spatial cube that covers uncertainty [m] + Output: + cd - Approximated upper bound of pseudo-likelihood in uncertainty + cube + """ + import numpy as np + + # Max. pseudo-likelihood initialization + cd = 0.0 + + # Speed of light [m/s] + c = 299792458.0 + + # Maximum absolute deviation of C/A code phase in search space + # with respect to center [samples] + n = np.int(np.round(diagonal / c * self.samplingFreq / 2.0)) + + # If uncertainty level is evaluated for the 1st time, create + # table for later use + if not self.uncertList or n < self.uncertList[-1]: + # Remember that this uncertainty level has been evaluated + self.uncertList.append(n) + uncertInd = len(self.uncertList) - 1 + # Max-filter correlograms + nSats = code_phase.shape[0] + temp_table = np.empty_like(self.corrTable) + for k in range(nSats): + temp_table[k] = self.max_filter(self.corrTable[k], n) + self.corrTableUncert.append(temp_table) + else: + # If uncertainty level has been evaluated already, find + # index in table with max-filtered correlograms + uncertInd = self.uncertList.index(n) + + for k in range(code_phase.shape[0]): + + # Shift max-filtered correlogram by code phase and sum + cd = cd + np.roll(self.corrTableUncert[uncertInd][k], - np.int( + np.round(code_phase[k] * self.samplingFreq))) + + # cd = np.array([np.roll(table_row, shift) + # for table_row, shift in + # zip(self.corrTableUncert[uncertInd], + # - np.round(code_phase * self.samplingFreq).astype( + # int)) + # ]) + + # cd = np.sum(cd, axis=0) + + # Account for (unknown) common bias + return np.max(cd) + + def max_filter(self, x, n): + """1D max-filter with wrapping. + + Inputs: + x - Raw signal (row vector) + n - Number of strides in each direction + Output: + filteredX - Maximum-filtered signal + """ + import scipy.ndimage as si + return si.maximum_filter(x, 2 * n + 1, mode="wrap") diff --git a/coarse_time_navigation.py b/coarse_time_navigation.py new file mode 100644 index 0000000..8b9c2e1 --- /dev/null +++ b/coarse_time_navigation.py @@ -0,0 +1,3571 @@ +# -*- coding: utf-8 -*- +"""Coarse-time navigation and coarse-time Doppler navigation. + +Author: Jonas Beuchert +""" + +try: + import autograd.numpy as np +except(ImportError): + print("""Package 'autograd' not found. 'autograd.numpy' is necessary for + coarse-time navigation via maximum-likelihood estimation. Falling + back to 'numpy'.""") + import numpy as np +import eph_util as ep +import pymap3d as pm +import itertools as it +import jacobian_height as jh +import scipy.optimize as so +import scipy.stats as ss +from pseudorange_prediction import PseudorangePrediction +from timeout import timeout +import numpy as np2 + + +def coarse_time_doppler_nav(X, d, t, eph, PRN): + """Coarse-time Doppler navigation. + + Works for GPS or Galileo. If using both, concatenate navigation data + (ephemeris) and make sure that satellite indices are unique. + + Implemented according to + Fernández-Hernández, I., Borre, K. Snapshot positioning without initial + information. GPS Solutions 20, 605–616 (2016). + https://doi.org/10.1007/s10291-016-0530-4 + https://link.springer.com/article/10.1007/s10291-016-0530-4 + + Inputs: + X - Initial state: + X[0:3] - Receiver position in ECEF XYZ coordinates + X[3] - Receiver clock frequency drift + X[4] - Time difference between initial time and actual time + d - Measured Doppler shifts [Hz] + t - Initial time (coarse time) [s] + eph - ephemeris + PRN - PRNs of visible (acquired) satellites + + Outputs: + X - Estimated state + dD - Residuals [m/s] + + Author: Jonas Beuchert + """ + fL1 = 1575.42e6 # GPS signal frequency + c = 299792458.0 # Speed of light [m/s] + + nIt = 50 # Number of iterations; TODO: Adaptive termination + + for k in range(nIt): + + # Coarse time + coarse-time error + tow = np.mod(t + X[4], 7*24*60*60) # Time of week [s] + + # Identify matching columns in ephemeris matrix, closest column in time + # for each satellite + col = np.array([ep.find_eph(eph, sat, tow) for sat in PRN]) + + # Extract columns with available data + d = d[~np.isnan(col)] + PRN = PRN[~np.isnan(col)] + col = col[~np.isnan(col)] + eph = eph[:, col] + + # Satellite positions, velocities, and accelerations + P, V, A = ep.get_sat_pos_vel_acc(tow, eph) + + e = P - X[:3] + e = e / np.linalg.norm(e, axis=1, keepdims=True) + + rho = np.linalg.norm(P - X[:3], axis=1, keepdims=True) + + # Range rate / satellite-to-receiver relative velocity + rhoDot = np.sum(V * e, axis=1, keepdims=True) + + # Satellite-to-reciever relative acceleration + rhoDotDot = np.sum(A * e, axis=1, keepdims=True) + + eDot = 1.0 / rho * (V - e * rhoDot) + + # Observation matrix + H = np.hstack((eDot, np.ones((d.shape[0], 1)), -rhoDotDot)) + + Dhat = -np.sum(e * V, axis=1) + X[3] # Predict Doppler [m/s] + D = d * c / fL1 # Doppler measurement [m/s] + dD = D - Dhat # Error + + dX = np.linalg.lstsq(H, dD, rcond=None)[0] # Least-squares solution + X = X + dX # Update states + + return X, dD + + +def coarse_time_nav(obs, sats, Eph, TOW_assist_ms, rec_loc_assist, sort=True, + observed_height=None, inter_system_bias=False, + weights=None, hard_constraint=False, tropo='goad', + atm_pressure=1013.0, surf_temp=293.0, humidity=50.0, + iono=None, ion_alpha=np.array([]), ion_beta=np.array([]), + code_period_ms=1): + """Compute receiver position using coarse-time navigation. + + Compute receiver position from fractional pseudoranges using coarse-time + navigation and non-linear least-squares optimisation. + The initial position should be within 100 - 150 km of the true position and + the initial coarse time within about 1 min of the true time. + Works for multiple GNSS, too, e.g., GPS and Galileo. If using more than + one, then concatenate navigation data (ephemerides) and make sure that + satellite indices are unique. E.g., use 1-32 for GPS and 201-250 for + Galileo. + + Inputs: + obs - Observations, the fractional pseudo-ranges (sub-millisecond). + sats - SV numbers associated with each observation. + Eph - Table of ephemerides, each column associated with a satellite. + TOW_assist_ms - Coarse time of week [ms], single value or array for + different GNSS times with one value for each satellite. + rec_loc_assist - Initial receiver position in ECEF XYZ coordinates. + sort - Re-sort satellites according to distance [default=True]. + observed_height - Height observation [m], default=None + inter_system_bias - Flag indicating if a bias between 2 GNSS is + added as optimisation variable assuming that all + satellites with PRN > 100 belong to the 2nd GNSS + [default=False] + weights - Weight for each observation (height at the end, if present) + [default=None] + hard_constraint - False: Use oberserved_height as additional + observation, i.e., as soft constraint. True: Use + observed_height as hard equality constraint. + [default=False] + tropo - Model for troposheric correction: either None, 'goad' for the + model of C. C. Goad and L. Goodman, 'hopfield' for the model of + H. S. Hopfield, or 'tsui' for the model of J. B.-Y. Tsui + [default='goad'] + atm_pressure - Atmospheric pressure at receiver location [mbar] for + troposheric correction, [default=1013.0] + surf_temp - Surface temperature at receiver location [K] for + troposheric corrrection [default=293.0] + humidity - Humidity at receiver location [%] for troposheric correction + [default=50.0] + iono - Model for ionospheric correction: either None or 'klobuchar' + for the model of J. Klobuchar [default=None] + ion_alpha - Alpha parameters for Klobuchar model [default=np.array([])] + ion_beta - Beta parameters for Klobuchar model [default=np.array([])] + code_period_ms - Length of code [ms], either a single value for all + satellites or a numpy array with as many elements as + satellites [default=1] + + Outputs: + state - ECEF XYZ position [m,m,m], common bias [m], coarse-time error + [m]; np.NaN if optimization failed + delta_z - Residuals (of pseudoranges) [m] + + Author: Jonas Beuchert + """ + def assign_integers(sats, svInxListByDistance, obs, Eph, approx_distances, + code_period_ms=1): + """Assign Ns according to van Diggelen's algorithm. + + Author: Jonas Beuchert + """ + light_ms = 299792458.0 * 0.001 + N = np.zeros(sats.shape) + approx_distances = approx_distances / light_ms # Distances in millisec + # Distances from ms to code periods + approx_distances = approx_distances / code_period_ms + + unique_code_periods = np.unique(code_period_ms) + n_different_code_periods = len(unique_code_periods) + if not isinstance(code_period_ms, np.ndarray): + N0_inx = svInxListByDistance[0] + else: + N0_inx = np.empty(n_different_code_periods) + for c_idx in np.arange(n_different_code_periods): + N0_inx[c_idx] = svInxListByDistance[ + code_period_ms == unique_code_periods[c_idx] + ][0] + N0_inx = N0_inx.astype(int) + N[N0_inx] = np.floor(approx_distances[N0_inx]) + + delta_t = Eph[18, :] * 1000.0 # From sec to millisec + # Time errors from ms to code periods + delta_t = delta_t / code_period_ms + + # Observed code phases from ms to code periods + obs = obs / code_period_ms + + if not isinstance(code_period_ms, np.ndarray): + for k in svInxListByDistance[1:]: + N[k] = np.round(N[N0_inx] + obs[N0_inx] - obs[k] + + (approx_distances[k] - delta_t[k]) - + (approx_distances[N0_inx] - delta_t[N0_inx])) + else: + for c_idx in np.arange(n_different_code_periods): + curr_svInxListByDistance = svInxListByDistance[ + code_period_ms == unique_code_periods[c_idx] + ] + for k in curr_svInxListByDistance[1:]: + N[k] = np.round(N[N0_inx[c_idx]] + obs[N0_inx[c_idx]] + - obs[k] + + (approx_distances[k] - delta_t[k]) - + (approx_distances[N0_inx[c_idx]] + - delta_t[N0_inx[c_idx]])) + + # Floored distances from code periods to ms + N = N * code_period_ms + + return N, N0_inx + + # def othieno_assignNs(obs, eph, approx_distances, code_period_ms=1): + # """https://spectrum.library.concordia.ca/973909/1/Othieno_MASc_S2012.pdf""" + # # Approximate time errors + # delta_t = eph[18, :] + # # Speed of light + # c = 299792458.0 + # # Predict pseudoranges + # predicted_pr = approx_distances / c / 1e-3 - delta_t / 1e-3 + # # Roughly estimate Ns + # N = np.round(predicted_pr - obs) + # # Determine observed / time-free pseudoranges + # observed_pr = N + obs + # # Obtain difference between time-free pseudoranges and predcited ones + # diff = observed_pr - predicted_pr + # # Sort differences in ascending order + # min_idx = np.argmin(np.abs(diff)) + # min_diff = diff[min_idx] + # # Compare all differences against 1st one + # diff_2_min = diff - min_diff + # # Adjust pseudoranges that differ by more than half a code period + # threshold = code_period_ms / 2.0 + # observed_pr += (diff_2_min < -threshold) * threshold + # observed_pr -= (diff_2_min > threshold) * threshold + # return observed_pr * 1e-3 * c, \ + # np.floor(observed_pr) - np.floor(observed_pr[min_idx]) + + def tx_RAW2tx_GPS(tx_RAW, Eph): + """Refactoring. + + Author: Jonas Beuchert + """ + t0c = Eph[20] + dt = ep.check_t(tx_RAW - t0c) + tcorr = (Eph[1] * dt + Eph[19]) * dt + Eph[18] + tx_GPS = tx_RAW - tcorr + dt = ep.check_t(tx_GPS - t0c) + tcorr = (Eph[1] * dt + Eph[19]) * dt + Eph[18] + tx_GPS = tx_RAW - tcorr + return tx_GPS, tcorr + + def e_r_corr(traveltime, X_sat): + """Rotate satellite by earth rotation during signal travel time. + + Author: Jonas Beuchert + """ + Omegae_dot = 7.292115147e-5 # rad/sec + + omegatau = Omegae_dot * traveltime + R3 = np.array([np.array([np.cos(omegatau), np.sin(omegatau), 0.0]), + np.array([-np.sin(omegatau), np.cos(omegatau), 0.0]), + np.array([0.0, 0.0, 1.0])]) + return R3 @ X_sat + + no_iterations = 6 + v_light = 299792458.0 + dtr = np.pi / 180.0 + numSVs = obs.shape[0] # Number of satellites + el = np.zeros(numSVs) + + TOW_assist = TOW_assist_ms * 1e-3 + if not isinstance(TOW_assist, np.ndarray) or TOW_assist.shape == (): + TOW_assist = TOW_assist * np.ones(sats.shape) + + # Identify ephemerides columns in Eph + col_Eph = np.array([ep.find_eph(Eph, sats[k], TOW_assist[k]) + for k in range(numSVs)]) + Eph = Eph[:, col_Eph] # Sort according to sats argument + + # If one common bias shall be used for all systems, then all code phases + # must have same range + if isinstance(code_period_ms, np.ndarray) and not inter_system_bias: + # Greatest common divider of code periods + code_period_ms = np2.gcd.reduce(code_period_ms.astype(int)) + obs = np.mod(obs, code_period_ms) + + # Number of common-bias optimisation variables + if isinstance(code_period_ms, np.ndarray): + # Assume one entry in code_period_ms for each satellite + # One bias for each present code period + n_bias_opt = np.unique(code_period_ms).shape[0] + elif inter_system_bias: + # Same code period for all systems, nevertheless use inter-system bias + n_bias_opt = 2 + else: + # Same code period for all systems, do not use inter-system bias + n_bias_opt = 1 + + if hard_constraint: + # Transform ECEF XYZ coordinates to geodetic coordinates + latitude, longitude, _ = pm.ecef2geodetic( + rec_loc_assist[0], rec_loc_assist[1], rec_loc_assist[2]) + initPosGeo = np.array([latitude, longitude, observed_height]) + # Initial receiver postion in EN coordinates + state = np.zeros(2+n_bias_opt+1) + else: + # Preliminary guess for receiver position, common bias, and assistance + # error ([x y z b et] or [x y z b1 b2 et]) + state = np.concatenate((rec_loc_assist, np.zeros(n_bias_opt+1))) + + T_tilde = TOW_assist + + # Find satellite positions at T_tilde + tx_GPS = np.array([TOW_assist[k] + - ep.get_sat_clk_corr(TOW_assist[k], + np.array([sats[k]]), + Eph[:, k, np.newaxis]) + for k in range(numSVs)]) + satPos_at_T_tilde = np.array([np.squeeze( + ep.get_sat_pos(tx_GPS[k], Eph[:, k, np.newaxis])) + for k in range(numSVs)]) + + # And then find closest one + approx_distances = np.sqrt(np.sum( + (rec_loc_assist - satPos_at_T_tilde)**2, axis=-1)) + if sort: + svInxListByDistance = np.argsort(approx_distances) + else: + svInxListByDistance = np.arange(numSVs) + + # if othieno: + + # fullPRs, Ks = othieno_assignNs( + # obs, Eph, approx_distances, code_period_ms) + # Ks = Ks * 0 + + # else: + + # Assign N numbers: + Ns, N0_inx = assign_integers(sats, svInxListByDistance, obs, Eph, + approx_distances, code_period_ms) + + # Now find K numbers: + if isinstance(code_period_ms, np.ndarray): + unique_code_periods = np.unique(code_period_ms) + n_different_code_periods = len(unique_code_periods) + Ks = np.empty(Ns.shape) + for c_idx in np.arange(n_different_code_periods): + Ks[code_period_ms == unique_code_periods[c_idx]] \ + = Ns[code_period_ms == unique_code_periods[c_idx]] \ + - Ns[N0_inx[c_idx]] + else: + Ks = Ns - Ns[N0_inx] + + fullPRs = Ns + obs # Full pseudoranges reconstruction in ms + fullPRs = fullPRs * (v_light * 1e-3) # In meters + + for iter in range(no_iterations): + if hard_constraint: + H = np.empty((numSVs, 3+n_bias_opt)) + else: + H = np.empty((numSVs, 4+n_bias_opt)) + delta_z = np.empty(numSVs) # Observed minus computed observation + + # Coarse-time error + Et = state[-1] # In seconds + + for k in svInxListByDistance: + + # Common bias [m] + if isinstance(code_period_ms, np.ndarray): + code_period_idx = np.where( + unique_code_periods == code_period_ms[k])[0] + b = state[-1-n_bias_opt+code_period_idx] + elif inter_system_bias and sats[k] > 100: + # Common bias of 2nd GNSS + b = state[-2] + else: + # Common bias of 1st GNSS + b = state[-1-n_bias_opt] + + Kk = Ks[k] + + tx_GPS, tcorr = tx_RAW2tx_GPS(T_tilde[k] - Et - Kk * 1e-3, + Eph[:, k]) + + X = ep.get_sat_pos(tx_GPS, Eph[:, k]) + X_fut = ep.get_sat_pos(tx_GPS + 1, Eph[:, k]) + satECEF = X + sat_futECEF = X_fut + if hard_constraint: + # Transform ECEF XYZ coordinates to ENU coordinates + X[0], X[1], X[2] = pm.ecef2enu(X[0], X[1], X[2], initPosGeo[0], + initPosGeo[1], initPosGeo[2]) + X_fut[0], X_fut[1], X_fut[2] = pm.ecef2enu(X_fut[0], X_fut[1], + X_fut[2], + initPosGeo[0], + initPosGeo[1], + initPosGeo[2]) + state_memory = state + state = np.array([state[0], state[1], 0.0]) + + # This if case calculates something about trop + if iter == 0: + traveltime = 0.072 + Rot_X = satECEF + Rot_X_fut = sat_futECEF + trop = 0.0 + else: + if hard_constraint: + posECEF = np.empty(3) + posECEF[0], posECEF[1], posECEF[2] \ + = pm.enu2ecef(state[0], state[1], 0.0, + initPosGeo[0], initPosGeo[1], + initPosGeo[2]) + else: + posECEF = state[:3] + + rho2 = (satECEF[0] - posECEF[0])**2 \ + + (satECEF[1] - posECEF[1])**2 \ + + (satECEF[2] - posECEF[2])**2 # Distance squared + traveltime = np.sqrt(rho2) / v_light + Rot_X = e_r_corr(traveltime, satECEF) + + Rot_X_fut = e_r_corr(traveltime, sat_futECEF) + + rho2 = (Rot_X[0] - posECEF[0])**2 \ + + (Rot_X[1] - posECEF[1])**2 \ + + (Rot_X[2] - posECEF[2])**2 + + if tropo == 'goad': + az, el, dist = ep.topocent(posECEF, Rot_X-posECEF) + trop = ep.tropo(np.sin(el * dtr), 0.0, atm_pressure, + surf_temp, humidity, 0.0, 0.0, 0.0) + elif tropo == 'hopfield': + surf_temp_celsius = surf_temp-273.15 + saturation_vapor_pressure = 6.11*10.0**( + 7.5*surf_temp_celsius/(237.7+surf_temp_celsius)) + vapor_pressure = humidity/100.0 * saturation_vapor_pressure + trop = ep.tropospheric_hopfield( + posECEF, np.array([Rot_X]), surf_temp_celsius, + atm_pressure/10.0, vapor_pressure/10.0) + elif tropo == 'tsui': + lat, lon, h = pm.ecef2geodetic(posECEF[0], posECEF[1], + posECEF[2]) + az, el, srange = pm.ecef2aer(Rot_X[0], Rot_X[1], Rot_X[2], + lat, lon, h) + trop = ep.tropospheric_tsui(el) + else: + trop = 0.0 + + if iono == 'klobuchar': + trop = trop + ep.ionospheric_klobuchar( + posECEF, np.array([Rot_X]), + np.mod(TOW_assist[k], 24*60*60), + ion_alpha, ion_beta) * v_light + elif iono == 'tsui': + lat, lon, h = pm.ecef2geodetic(posECEF[0], posECEF[1], + posECEF[2]) + az, el, srange = pm.ecef2aer(Rot_X[0], Rot_X[1], Rot_X[2], + lat, lon, h) + # Convert degrees to semicircles + el = el / 180.0 + az = az / 180.0 + lat = lat / 180.0 + lon = lon / 180.0 + # Ionospheric delay [s] + T_iono = ep.ionospheric_tsui( + el, az, lat, lon, TOW_assist[k], ion_alpha, ion_beta) + trop = trop + T_iono * v_light + + # Subtraction of state[3] corrects for receiver clock offset and + # v_light*tcorr is the satellite clock offset + predictedPR = np.linalg.norm(Rot_X - state[:3]) + b \ + - tcorr * v_light + trop # meters + delta_z[k] = fullPRs[k] - predictedPR # Meters + + # Now add row to matrix H according to: + # -e_k 1 v_k + # Notice that it is easier to plug in the location of the satellite + # at its T_dot estimation, i.e., Rot_X + sat_vel_mps = Rot_X_fut - Rot_X + + e_k = (Rot_X - (Et + Kk * 1e-3) * sat_vel_mps - state[:3]) + e_k = e_k / np.linalg.norm(e_k) + + v_k = np.sum(-sat_vel_mps * e_k, keepdims=True) # Relative speed + + if hard_constraint: + # Optimise only over E and N coordinate + e_k = e_k[:2] + # Restore state + state = state_memory + + if isinstance(code_period_ms, np.ndarray): + code_period_idx = np.where( + unique_code_periods == code_period_ms[k]) + jac_common_bias = np.zeros(n_bias_opt) + jac_common_bias[code_period_idx] = 1.0 + # Jacobian w.r.t. to common bias of this GNSS + H_row = np.concatenate((-e_k, jac_common_bias, + v_k)) + elif not inter_system_bias: + # Matrix for 5 optimisation variables + H_row = np.concatenate((-e_k, np.ones(1), v_k)) + else: + # Matrix for 6 optimisation variables + if sats[k] <= 100: + # Jacobian w.r.t. to common bias of 1st GNSS + H_row = np.concatenate((-e_k, np.ones(1), np.zeros(1), + v_k)) + else: + # Jacobian w.r.t. to common bias of 2nd GNSS + H_row = np.concatenate((-e_k, np.zeros(1), np.ones(1), + v_k)) + # Append Jacobian to end of matrix + H[k] = H_row + + # Check if height measurement is provided + if observed_height is not None and not hard_constraint: + # Add Jacobian of height observation + H = np.vstack((H, jh.jacobian_height(state))) + # Predict height based on current state + predicted_height = pm.ecef2geodetic(state[0], state[1], state[2] + )[2] + # Add height measurement + delta_z = np.append(delta_z, observed_height - predicted_height) + + if weights is not None: + H = H * np.sqrt(weights[:, np.newaxis]) + delta_z = delta_z * np.sqrt(weights) + + x = np.linalg.lstsq(H, delta_z, rcond=None)[0] + state = state + x + + if hard_constraint: + # Convert ENU to ECEF XYZ coordinates + [pos_x, pos_y, pos_z] = pm.enu2ecef(state[0], state[1], 0.0, + initPosGeo[0], initPosGeo[1], + initPosGeo[2]) + state = np.concatenate((np.array([pos_x, pos_y, pos_z]), state[2:])) + + return state, delta_z[svInxListByDistance] + + +def coarse_time_nav_simplified(obs, sats, Eph, TOW_assist_ms, rec_loc_assist, sort=True, + observed_height=None, inter_system_bias=False, + weights=None, hard_constraint=False, tropo='goad', + atm_pressure=1013.0, surf_temp=293.0, humidity=50.0, + iono=None, ion_alpha=np.array([]), ion_beta=np.array([]), + code_period_ms=1, hdop=False, no_iterations=6): + """Compute receiver position using coarse-time navigation. + + Compute receiver position from fractional pseudoranges using coarse-time + navigation and non-linear least-squares optimisation. + The initial position should be within 100 - 150 km of the true position and + the initial coarse time within about 1 min of the true time. + Works for multiple GNSS, too, e.g., GPS and Galileo. If using more than + one, then concatenate navigation data (ephemerides) and make sure that + satellite indices are unique. E.g., use 1-32 for GPS and 201-250 for + Galileo. + + Inputs: + obs - Observations, the fractional pseudo-ranges (sub-millisecond). + sats - SV numbers associated with each observation. + Eph - Table of ephemerides, each column associated with a satellite. + TOW_assist_ms - Coarse time of week [ms], single value or array for + different GNSS times with one value for each satellite. + rec_loc_assist - Initial receiver position in ECEF XYZ coordinates. + sort - Obsolete. + observed_height - Height observation [m], default=None + inter_system_bias - Obsolete. + weights - Obsolete. + hard_constraint - Obsolete. + tropo - Obsolete. + atm_pressure - Obsolete. + surf_temp - Obsolete. + humidity - Obsolete. + iono - Obsolete. + ion_alpha - Obsolete. + ion_beta - Obsolete. + code_period_ms - Length of code [ms], either a single value for all + satellites or a numpy array with as many elements as + satellites [default=1] + hdop - Flag if horizontal dilution of precision is returned as 3rd + output, default=False + no_iterations - Number of non-linear least-squares iterations, + default=6 + + Outputs: + state - ECEF XYZ position [m,m,m], common bias [m], coarse-time error + [m]; np.NaN if optimization failed + delta_z - Residuals (of pseudoranges) [m] + hdop - (Only if hdop=True) Horizontal dilution of precision + + Author: Jonas Beuchert + """ + def assign_integers(sats, svInxListByDistance, obs, Eph, approx_distances, + code_period_ms=1): + """Assign Ns according to van Diggelen's algorithm. + + Author: Jonas Beuchert + """ + light_ms = 299792458.0 * 0.001 + N = np.zeros(sats.shape) + approx_distances = approx_distances / light_ms # Distances in millisec + # Distances from ms to code periods + approx_distances = approx_distances / code_period_ms + + # To integer + N[0] = np.floor(approx_distances[0]) + + delta_t = Eph[18, :] * 1000.0 # From sec to millisec + # Time errors from ms to code periods + delta_t = delta_t / code_period_ms + + # Observed code phases from ms to code periods + obs = obs / code_period_ms + + N[1:] = np.round(N[0] + obs[0] - obs[1:] + + (approx_distances[1:] - delta_t[1:]) - + (approx_distances[0] - delta_t[0])) + + # Floored distances from code periods to ms + N = N * code_period_ms + + return N + + def tx_RAW2tx_GPS(tx_RAW, Eph): + """Refactoring. + + Author: Jonas Beuchert + """ + t0c = Eph[20] + dt = ep.check_t_vectorized(tx_RAW - t0c) + tcorr = (Eph[1] * dt + Eph[19]) * dt + Eph[18] + tx_GPS = tx_RAW - tcorr + dt = ep.check_t_vectorized(tx_GPS - t0c) + tcorr = (Eph[1] * dt + Eph[19]) * dt + Eph[18] + tx_GPS = tx_RAW - tcorr + return tx_GPS, tcorr + + def e_r_corr(traveltime, sat_pos, n_sats): + """Rotate satellite by earth rotation during signal travel time. + + Author: Jonas Beuchert + """ + Omegae_dot = 7.292115147e-5 # rad/sec + + omegatau = Omegae_dot * traveltime + # Vector of rotation matrices + R3 = np.transpose(np.array([ + np.array([np.cos(omegatau), np.sin(omegatau), np.zeros(n_sats)]), + np.array([-np.sin(omegatau), np.cos(omegatau), np.zeros(n_sats)]), + np.array([np.zeros(n_sats), np.zeros(n_sats), np.ones(n_sats)])]), + axes=(2, 0, 1)) + # Turn satellite positions into vector of column vectors + sat_pos = np.array([sat_pos]).transpose(1, 2, 0) + return np.matmul(R3, sat_pos).reshape(n_sats, 3) + + v_light = 299792458.0 + numSVs = obs.shape[0] # Number of satellites + + TOW_assist = TOW_assist_ms * 1e-3 + if not isinstance(TOW_assist, np.ndarray) or TOW_assist.shape == (): + TOW_assist = TOW_assist * np.ones(sats.shape) + + if Eph.shape[1] != sats.shape[0] or np.any(Eph[0] != sats): + # Identify ephemerides columns in Eph + col_Eph = np.array([ep.find_eph(Eph, sats[k], TOW_assist[k]) + for k in range(numSVs)]) + Eph = Eph[:, col_Eph] # Sort according to sats argument + + # If one common bias shall be used for all systems, then all code phases + # must have same range + if isinstance(code_period_ms, np.ndarray): + # Greatest common divider of code periods + code_period_ms = np2.gcd.reduce(code_period_ms.astype(int)) + obs = np.mod(obs, code_period_ms) + + # Number of common-bias optimisation variables + # Same code period for all systems, do not use inter-system bias + n_bias_opt = 1 + + # Preliminary guess for receiver position, common bias, and assistance + # error ([x y z b et] or [x y z b1 b2 et]) + state = np.concatenate((rec_loc_assist, np.zeros(n_bias_opt+1))) + + T_tilde = TOW_assist + + # Find satellite positions at T_tilde + tx_GPS = TOW_assist - ep.get_sat_clk_corr_vectorized(TOW_assist, sats, Eph) + satPos_at_T_tilde = ep.get_sat_pos(tx_GPS, Eph) + + # And then find closest one + approx_distances = np.sqrt(np.sum( + (rec_loc_assist - satPos_at_T_tilde)**2, axis=-1)) + + sat_idx = np.arange(numSVs) + + # Assign N numbers: + Ns = assign_integers(sats, sat_idx, obs, Eph, + approx_distances, code_period_ms) + + Ks = Ns - Ns[0] + + fullPRs = Ns + obs # Full pseudoranges reconstruction in ms + fullPRs = fullPRs * (v_light * 1e-3) # In meters + + # Intialization + H = np.empty((numSVs, 4+n_bias_opt)) # Linear system matrix + delta_z = np.empty(numSVs) # Observed minus computed observation + + for iteration_idx in np.arange(no_iterations): + + # Coarse-time error + Et = state[-1] # In seconds + + # Common bias [m] + b = state[-1-n_bias_opt] + + tx_GPS, tcorr = tx_RAW2tx_GPS(T_tilde - Et - Ks * 1e-3, Eph) + + sat_pos, sat_vel = ep.get_sat_pos_vel(tx_GPS, Eph) + + if iteration_idx == 0: + traveltime = 0.072 + rot_sat_pos = sat_pos + else: + posECEF = state[:3] + rho2 = (sat_pos[:, 0] - posECEF[0])**2 \ + + (sat_pos[:, 1] - posECEF[1])**2 \ + + (sat_pos[:, 2] - posECEF[2])**2 # Distance squared + traveltime = np.sqrt(rho2) / v_light + rot_sat_pos = e_r_corr(traveltime, sat_pos, numSVs) + + # Subtraction of state[3] corrects for receiver clock offset and + # v_light*tcorr is the satellite clock offset + predictedPR = np.linalg.norm(rot_sat_pos - state[:3], axis=-1) \ + + b - tcorr * v_light # meters + delta_z = fullPRs - predictedPR # Meters + + # Receiver-satellite vector + e_k = (rot_sat_pos + - np.tile(np.array([Et + Ks * 1e-3]).T, (1, 3)) * sat_vel + - state[:3]) + # Normalize receiver-satellite vector + e_k = e_k / np.array([np.linalg.norm(e_k, axis=-1)]).T + + # Relative satellite velocity along this vector, i.e., + # project satellite velocity on normalized receiver-satellite vector + v_k = np.sum(-sat_vel * e_k, axis=1, keepdims=True) + + # Now build Jacobian matrix H according to: + # -e_k 1 v_k + # Notice that it is easier to plug in the location of the satellite + # at its T_dot estimation, i.e., rot_sat_pos + # Matrix for 5 optimisation variables + H = np.hstack((-e_k, np.ones((numSVs, 1)), v_k)) + + # Check if height measurement is provided + if observed_height is not None: + # Add Jacobian of height observation + H = np.vstack((H, jh.jacobian_height(state))) + # Predict height based on current state + predicted_height = pm.ecef2geodetic(state[0], state[1], state[2] + )[2] + # Add height measurement + delta_z = np.append(delta_z, observed_height - predicted_height) + + x = np.linalg.lstsq(H, delta_z, rcond=None)[0] + state = state + x + + if hdop: + try: + Q = np.linalg.inv(H.T @ H) + dilution_east_squared = Q[0, 0] + dilution_north_squared = Q[1, 1] + hdop = np.sqrt(dilution_east_squared + dilution_north_squared) + return state, delta_z, hdop + except: + print("Cannot calculate HDOP.") + return state, delta_z, np.nan + + return state, delta_z + + +def cold_snapshot(c, d, t_min, t_max, eph, PRN, init_pos=np.zeros(3)): + """Cold snapshot algorithm. + + Coarse-time Doppler navigation combined with coarse-time navigation. + Works for GPS or Galileo with code-phases in the intervall 0 - 1 ms. If + using both, concatenate navigation data (ephemeris) and make sure that + satellite indices are unique. + + Inputs: + c - Measured code phases [ms] + d - Measured Doppler shifts [Hz] + t_min - Start of time interval (datetime or GPS time [s]) + t_max - End of time interval (datetime or GPS time [s]) + eph - ephemeris + PRN - PRNs of visible (acquired) satellites + init_pos - [Optional] initial psoition in ECEF XYZ coordinates [m,m,m] + Outputs: + X_opt - Estimated state + res_opt - Pseudorange residuals [m] + t_opt - Estimated coarse time (GPS time) [s]; subtract X_opt[4] for more + precise time estimate; X_opt[4] is the coarse time error + + Implemented according to + Fernández-Hernández, I., Borre, K. Snapshot positioning without initial + information. GPS Solut 20, 605–616 (2016) + https://doi.org/10.1007/s10291-016-0530-4 + https://link.springer.com/article/10.1007/s10291-016-0530-4 + + Author: Jonas Beuchert + """ + dt = 3.0 * 60.0 * 60.0 # Step size for iterations [s] + + if isinstance(t_min, np.datetime64): + t_min = ep.utc_2_gps_time(t_min) + if isinstance(t_max, np.datetime64): + t_max = ep.utc_2_gps_time(t_max) + + T = np.arange(t_min, t_max, dt) # Coarse time grid + if T[-1] < t_max: + np.append(T, t_max) + + X0 = np.zeros(5) # Initialize + X0[:3] = init_pos # Set initial position + + dDmin = np.inf + + # Intialize outputs + Xopt = X0 + resOpt = np.full(5, np.inf) + tOpt = np.mean(np.array([t_min, t_max])) + + for t in T: # Calculate one solution every 3 h + X, dD = coarse_time_doppler_nav(X0, d, t, eph, PRN) + # Convert code phases from s to ms + code_phases = c / 1e-3 + # Time of week in ms incl. correction from coarse time Doppler nav. + initTimeMs = np.mod(t + X[4], 7 * 24 * 60 * 60) / 1e-3 + # Get initial position from coarse time Doppler navigation + init_pos = X[:3] + # Coarse-time navigation + lsEstimate, resPseudoranges = coarse_time_nav(code_phases, PRN, eph, + initTimeMs, init_pos) + # If norm of pseudorange residuals is smaller than current optimum + if np.linalg.norm(resPseudoranges) < dDmin: + # Set new optimum + dDmin = np.linalg.norm(resPseudoranges) + # Store state as best solution + Xopt = lsEstimate + # Store residuals as smallest residuals + resOpt = resPseudoranges + # Store coarse time + tOpt = t + X[4] + + return Xopt, resOpt, tOpt + + +def warm_start_acquisition(data, interm_freq, sampling_freq, init_pos, + init_bias, init_time, eph, ms_to_process=1, + elev_mask=10, pos_err_max=1.414248917270224e+04, + bias_err_max=1.5e4, time_err_max=1, gnss='gps', + ref=True, corr=False): + """Warm-started acquisition and code phase estimation. + + Perform acquisition and keep only satellites whose code phase estimates + are close to the predicted values based on an initial position, common + bias, and time. + + Inputs: + data - GNSS snapshot + interm_freq - Intermediate frequency [Hz] + sampling_freq - Sampling freqeuncy [Hz] + init_pos - Initial receiver position in ECEF XYZ [m,m,m] + init_bias - Initial common pseudorange bias [m] + init_time - Initial coarse time [s] + eph - Ephemeris matrix + ms_to_process - Number of milliseconds of the snapshot to use + elev_mask - Elevation mask for predicting satellites [deg] + pos_err_max - Maximum expected horizontal receiver position error + w.r.t. initial position [m] + bias_err_max - Maximum expected common bias deviation w.r.t. initial + bias [m] + time_err_max - Maximum expected receiver clock deviation w.r.t. initial + coarse time [s] + gnss - Type of GNSS, 'gps' or 'galileo', default='gps' + ref - Switch for type of code-phase prediction, True for algorithm + according to van Diggelen based on one reference satellite, False + for algorithm according to Bissig et al. with two iterations for + each satellite independently, default=True + corr - Switch for atmospheric correction when prediciting code phases, + default=False + + Outputs: + PRN - Indices of satellites whose estimated code phases are close to + the predicted values + code_phases - Estimated code phases that are close to the predicted + values [ms] + peak_metrics - Estimated signal-to-noise ratios (SNR) of satellites + whose estimated code phases are close to the predicted + values [dB] + code_phase_err - Absolute differences between estimated and predicted + code phases of returned satellites [ms] + + Author: Jonas Beuchert + """ + if gnss == 'gps': + code_duration = 1e-3 + elif gnss == 'galileo': + code_duration = 4e-3 + else: + raise ValueError( + "Chosen GNSS not supported, select 'gps' or 'galileo'.") + # Maximum expected satellite speed relative to receiver [m/s] + sat_vel_max = 14.0e3 / 60.0 / 60.0 + # Speed of light [m/s] + c = 299792458.0 + # Convert initial position from Cartesian to geodetic coordinates + init_pos_geo = np.empty(3) + init_pos_geo[0], init_pos_geo[1], init_pos_geo[2] = pm.ecef2geodetic( + init_pos[0], init_pos[1], init_pos[2]) + # Predict set of visible satellites + acq_satellite_list = ep.get_visible_sats(init_time, init_pos_geo, eph, + elev_mask) + # Calculate maximum code phase estimation error [ms] + code_phase_err_max = (time_err_max * sat_vel_max + pos_err_max + + bias_err_max) / c / 1e-3 + if ref: + # Predict pseudoranges + pr = ep.predict_pseudoranges(acq_satellite_list, eph, init_time, + init_pos, init_bias, corr) + # Convert predicted pseudoranges to code phases in milliseconds + init_code_phases = np.mod(pr / c, code_duration) / 1e-3 + else: + # Predict code phases + init_code_phases = ep.get_code_phase(init_time, init_pos, init_bias, + acq_satellite_list, eph, + code_duration, corr) / 1e-3 + # Estimate code phases + acquired_sv, acquired_snr, acquired_doppler, acquired_codedelay,\ + acquired_fine_freq, results_doppler, results_code_phase,\ + results_peak_metric = ep.acquisition(data, interm_freq, sampling_freq, + ms_to_process=ms_to_process, + prn_list=acq_satellite_list, + fine_freq=False, gnss=gnss) + # Convert code phases from number of samples to ms + code_phases = results_code_phase[acq_satellite_list - 1] / sampling_freq \ + / 1e-3 + # Calculate difference between extimated and observed code phases + code_phase_err = np.abs(code_phases - init_code_phases) + code_phase_err = np.min(np.array([code_phase_err, 1.0 - code_phase_err]), + axis=0) + # Keep only satellites where difference is small + PRN = acq_satellite_list[code_phase_err < code_phase_err_max] + code_phases = results_code_phase[PRN - 1] / sampling_freq / 1e-3 + peak_metrics = results_peak_metric[PRN - 1] + code_phase_err = code_phase_err[code_phase_err < code_phase_err_max] + return PRN, code_phases, peak_metrics, code_phase_err + + +def selective_coarse_time_nav(PRN, code_phases, peak_metrics, eph, init_pos, + init_time, init_height=0, height_err_max=200, + sort_key='elevation', code_phase_err=None, + mode='SNR', return_prn=False, + observed_height=None, inter_system_bias=False, + weights=None, hard_constraint=False, + tropo='goad', atm_pressure=1013.0, + surf_temp=293.0, humidity=50.0, iono='none', + ion_alpha=np.array([]), ion_beta=np.array([]), + code_period_ms=1, + max_dist=None, max_time=None, + max_residual=100): + """Coarse-time navigation (CTN) with iterative solution checking. + + Coarse-time navigation (CTN) with iterative solution checking and + discarding of unreliable satellites. + The initial position should be within 100 - 150 km of the true position and + the initial coarse time within about 1 min of the true time. + + Inputs: + PRN - Indices of acquired satellites + code_phases - Code phases of acquired satellites [ms], 0-1 + peak_metrics - Realiability metrics for acquired satellites, e.g., + signal-to-noise ratios (SNR) + init_pos - Initial receiver position in ECEF XYZ [m,m,m] + init_time - Initial coarse time [s], single value or array for + different GNSS times with one value for each satellite + eph - Ephemeris matrix + init_height - Expected height above sea level (WGS84) [m], default=0, + None to disable height check + height_err_max - Maximum expected deviation from expected height [m], + default=200, None to disable + sort_key - Property for sorting satellites according to their + reliability: + 'SNR' - Signal-to-noise ratio + 'error' - Error between predicted & estimated code phase + 'elevation' - Satellite elevation (default) + 'distance' - Satellite-receiver distance + code_phase_err - Absolute differences between estimated and predicted + code phases of returned satellites [ms], only required + if sort_key='error' + mode - Method for satellite selection: + 'SNR' - Rank satellite according to peak metrics and + eliminate weakest satellite first (default) + 'combinatoric' - Test all combinations of satellites + starting with as many as possible + return_prn - Flag idicating if satellite indices that were used to + calculate the solution are returned as 2nd output + observed_height - Height observation [m], default=None + inter_system_bias - Flag indicating if a bias between 2 GNSS is + added as optimisation variable, default=False + weights - Weight for each observation (height at the end, if present) + [default=None] + hard_constraint - False: Use oberserved_height as additional + observation, i.e., as soft constraint. True: Use + observed_height as hard equality constraint. + [default=False] + tropo - Model for troposheric correction: either 'none', 'goad' for the + model of C. C. Goad and L. Goodman, 'hopfield' for the model of + H. S. Hopfield, or 'tsui' for the model of J. B.-Y. Tsui + [default='goad'] + atm_pressure - Atmospheric pressure at receiver location [mbar] for + troposheric correction, [default=1013.0] + surf_temp - Surface temperature at receiver location [K] for + troposheric corrrection [default=293.0] + humidity - Humidity at receiver location [%] for troposheric correction + [default=50.0] + iono - Model for ionospheric correction: either 'none' or 'klobuchar' + for the model of J. Klobuchar [default='none'] + ion_alpha - Alpha parameters for Klobuchar model [default=np.array([])] + ion_beta - Beta parameters for Klobuchar model [default=np.array([])] + code_period_ms - Length of code [ms], either a single value for all + satellites or a numpy array with as many elements as + satellites [default=1] + max_dist - Maximum spatial distance between 2 consecutive fixes to be + plausible [m], default=None + max_time - Maximum temporal distance between 2 consecutive fixes to be + plausible [s], i.e., the change of the coarse-time error, + default=None + max_residual - Maximum pseudorange residual to be plausible [m], + default=100 + + Output: + state - Receiver ECEF position, common bias [m], coarse-time error [s]; + np.inf for all values if no plausible was found + PRN - Satellite indices that were used to calculate the solution, only + returned if return_prn=True + + Author: Jonas Beuchert + """ + # Convert initial position from Cartesian to geodetic coordinates + init_pos_geo = np.empty(3) + init_pos_geo[0], init_pos_geo[1], init_pos_geo[2] = pm.ecef2geodetic( + init_pos[0], init_pos[1], init_pos[2]) + # Get time of week in milliseconds + init_time_ms = np.mod(init_time, 7 * 24 * 60 * 60) / 1e-3 + # Sort satellites + eph_match = eph + ind = np.arange(PRN.shape[0]) + if sort_key == 'SNR': + # Sort satellites according to signal-to-noise ratio + ind = np.argsort(peak_metrics)[::-1] + elif sort_key == 'error': + # Sort satellites according to prediction error + ind = np.argsort(code_phase_err) + elif sort_key == 'elevation' or sort_key == 'distance': + if isinstance(init_time, np.ndarray) and init_time.shape != (): + init_time = init_time[0] + # GPS time since 1980 to time of week (TOW) [s] + coarse_time_tow = np.mod(init_time, 7 * 24 * 60 * 60) + # Identify matching columns in ephemeris matrix, closest column in time + # for each satellite + col = np.array([ep.find_eph(eph, sat, coarse_time_tow) for sat in PRN]) + # Extract columns with available data + eph_match = eph[:, col] + # Find satellite positions at coarse transmission time + tx_gps = coarse_time_tow - ep.get_sat_clk_corr(coarse_time_tow, PRN, + eph_match) + sat_pos_coarse = ep.get_sat_pos(tx_gps, eph_match) + if sort_key == 'elevation': + # Calculate satellite elevation + az, elev, rng = pm.ecef2aer(sat_pos_coarse[:, 0], + sat_pos_coarse[:, 1], + sat_pos_coarse[:, 2], init_pos_geo[0], + init_pos_geo[1], init_pos_geo[2]) + # Sort satellites according to elevation + ind = np.argsort(elev)[::-1] + elif sort_key == 'distance': + # Calculate distances to satellites + distances_coarse = np.sqrt(np.sum((init_pos - sat_pos_coarse)**2, + axis=-1)) + # Sort satellites by distance + ind = np.argsort(distances_coarse) + peak_metrics = peak_metrics[ind] + PRN = PRN[ind] + code_phases = code_phases[ind] + if isinstance(code_period_ms, np.ndarray): + code_period_ms = code_period_ms[ind] + if isinstance(init_time_ms, np.ndarray): + init_time_ms = init_time_ms[ind] + if mode == 'SNR': + # Iterate until plausible solution is found + plausible_solution = False + while not plausible_solution and PRN.shape[0] > 1: + # Coarse-time navigation + pos, res = coarse_time_nav(code_phases, PRN, eph_match, + init_time_ms, init_pos, sort=False, + observed_height=observed_height, + inter_system_bias=inter_system_bias, + weights=weights, + hard_constraint=hard_constraint, + tropo=tropo, atm_pressure=atm_pressure, + surf_temp=surf_temp, humidity=humidity, + iono=iono, + ion_alpha=ion_alpha, ion_beta=ion_beta, + code_period_ms=code_period_ms) + # Check plausibility of solution by checking pseudorange + # residuals and altitude (height) or distance to intialization + if height_err_max is not None and init_height is not None: + lat, lon, h = pm.ecef2geodetic(pos[0], pos[1], pos[2]) + h_ref = init_height # ep.get_elevation(lat, lon) + height_ok = h > h_ref - height_err_max \ + and h < h_ref + height_err_max + else: + height_ok = True + if max_dist is not None: + dist_ok = np.linalg.norm(pos[:3] - init_pos) < max_dist + else: + dist_ok = True + if max_time is not None: + time_ok = np.abs(pos[-1]) < max_time + else: + time_ok = True + if max_residual is not None: + residuals_ok = np.all(np.abs(res) <= max_residual) + else: + residuals_ok = True + if residuals_ok and height_ok and dist_ok and time_ok: + plausible_solution = True + else: + # Get code phases only for satellites with high peak metric + ind = np.argmin(peak_metrics) + PRN = np.delete(PRN, ind) + code_phases = np.delete(code_phases, ind) + peak_metrics = np.delete(peak_metrics, ind) + if weights is not None: + weights = np.delete(weights, ind) + if isinstance(code_period_ms, np.ndarray): + code_period_ms = np.delete(code_period_ms, ind) + if isinstance(init_time_ms, np.ndarray): + init_time_ms = np.delete(init_time_ms, ind) + if plausible_solution: + if return_prn: + return pos, PRN + else: + return pos + else: + if return_prn: + return np.full(5, np.inf), np.array([]) + else: + return np.full(5, np.inf) + elif mode == 'combinatoric': + # Start elimination with maximum number of available satellites + for n_sats_used in range(PRN.shape[0], 0, -1): + # Get all possible satellite combinations with + # n_sats_used satellites + sat_combinations = it.combinations(range(PRN.shape[0]), + n_sats_used) + # Iterate over all rows of sat_combiantions, i.e., all combinations + # with n_sat_used satellites + for chosen_sats in sat_combinations: + if isinstance(code_period_ms, np.ndarray): + code_period_ms_current \ + = code_period_ms[np.asarray(chosen_sats)] + else: + code_period_ms_current = code_period_ms + if isinstance(init_time_ms, np.ndarray): + init_time_ms_current \ + = init_time_ms[np.asarray(chosen_sats)] + else: + init_time_ms_current = init_time_ms + # Coarse-time navigation with chosen satellites + pos, res = coarse_time_nav( + code_phases[np.asarray(chosen_sats)], + PRN[np.asarray(chosen_sats)], eph_match, + init_time_ms_current, + init_pos, sort=False, observed_height=observed_height, + inter_system_bias=inter_system_bias, + weights=None if weights is None else weights[ + np.asarray(chosen_sats)], + hard_constraint=hard_constraint, + tropo=tropo, atm_pressure=atm_pressure, + surf_temp=surf_temp, humidity=humidity, iono=iono, + ion_alpha=ion_alpha, ion_beta=ion_beta, + code_period_ms=code_period_ms_current) + # Check plausibility of solution by checking pseudorange + # residuals and altitude (height) or distance to intialization + if height_err_max is not None and init_height is not None: + lat, lon, h = pm.ecef2geodetic(pos[0], pos[1], pos[2]) + h_ref = init_height # ep.get_elevation(lat, lon) + height_ok = h > h_ref - height_err_max \ + and h < h_ref + height_err_max + else: + height_ok = True + if max_dist is not None: + dist_ok = np.linalg.norm(pos[:3] - init_pos) < max_dist + else: + dist_ok = True + if max_time is not None: + time_ok = np.abs(pos[-1]) < max_time + else: + time_ok = True + if max_residual is not None: + residuals_ok = np.all(np.abs(res) <= max_residual) + else: + residuals_ok = True + if residuals_ok and height_ok and dist_ok and time_ok: + # Return solution if plausible + if return_prn: + return pos, PRN[np.asarray(chosen_sats)] + else: + return pos + # Return infinity array, indicating absence of plausible solution + if return_prn: + return np.full(5, np.inf), np.array([]) + else: + return np.full(5, np.inf) + elif mode == 'ransac': + # Coarse-time navigation with chosen satellites + pos, res, useful_sats = coarse_time_nav_ransac( + code_phases, + PRN, eph_match, init_time_ms, + init_pos, sort=False, observed_height=observed_height, + inter_system_bias=inter_system_bias, weights=weights, + hard_constraint=hard_constraint, + tropo=tropo, atm_pressure=atm_pressure, + surf_temp=surf_temp, humidity=humidity, iono=iono, + ion_alpha=ion_alpha, ion_beta=ion_beta, + code_period_ms=code_period_ms, + inlier_probability=np.exp(peak_metrics), + min_ransac_iterations=1, + max_ransac_iterations=3, + min_combo_probability=0.0, + inlier_threshold=max_residual, + min_inliers=None, + max_dist=max_dist, max_time=max_time, + no_iterations=3 + ) + # Return solution + if return_prn: + return pos, useful_sats + else: + return pos + else: + raise Exception( + "Chosen mode not supported, select 'SNR' or 'combinatoric'.") + + +def selective_warm_start_coarse_time_nav(data, interm_freq, sampling_freq, + init_pos, init_bias, init_time, + eph_gps=None, eph_galileo=None, + init_height=0, ms_to_process=1, + elev_mask=10, + pos_err_max=1.414248917270224e+04, + bias_err_max=1.5e4, time_err_max=1, + height_err_max=200, + sort_key='elevation'): + """Warm-started acquisition follwed by repeated coarse-time navigation. + + Consider no inter-system bias if both, GPS and Galileo, are used. + + Inputs: + data - GPS snapshot + interm_freq - Intermediate frequency [Hz] + sampling_freq - Sampling freqeuncy [Hz] + init_pos - Initial receiver position in ECEF XYZ [m,m,m] + init_bias - Initial common pseudorange bias [m] + init_time - Initial coarse time [s] + eph_gps - Ephemeris matrix (GPS), None if only Galileo, default=None + eph_galileo - Ephemeris matrix (Galileo), None if only GPS, + default=None + init_height - Expected height above sea level (WGS84) [m] + ms_to_process - Number of milliseconds of the snapshot to use + elev_mask - Elevation mask for predicting satellites [deg] + pos_err_max - Maximum expected horizontal receiver position error + w.r.t. initial position [m] + bias_err_max - Maximum expected common bias deviation w.r.t. initial + bias [m] + time_err_max - Maximum expected receiver clock deviation w.r.t. initial + coarse time [s] + height_err_max - Maximum expected deviation from expected height [m] + sort_key - Property for sorting satellites according to their + reliability: + 'SNR' - Signal-to-noise ratio + 'error' - Error between predicted & estimated code phase + 'elevation' - Satellite elevation + 'distance' - Satellite-receiver distance + + Output: + state - Receiver ECEF position, common bias [m], coarse-time error [s] + + Author: Jonas Beuchert + """ + if eph_gps is None and eph_galileo is None: + raise Exception( + "Chosen GNSS not supported, select 'gps' or 'galileo'.") + if eph_gps is not None: + # Acquire GPS satellites + PRN_gps, code_phases_gps, peak_metrics_gps, code_phase_err_gps = \ + warm_start_acquisition(data, interm_freq, sampling_freq, init_pos, + init_bias, init_time, eph_gps, + ms_to_process, elev_mask, pos_err_max, + bias_err_max, time_err_max) + else: + PRN_gps = np.array([]) + code_phases_gps = np.array([]) + peak_metrics_gps = np.array([]) + code_phase_err_gps = np.array([]) + eph_gps = np.empty((21, 0)) + if eph_galileo is not None: + # Acquire Galileo satellites + PRN_gal, code_phases_gal, peak_metrics_gal, code_phase_err_gal = \ + warm_start_acquisition(data, interm_freq, sampling_freq, init_pos, + init_bias, init_time, eph_galileo, + ms_to_process, elev_mask, pos_err_max, + bias_err_max, time_err_max, gnss='galileo') + # Map 1-4 ms to 0-1 ms + code_phases_gal = np.mod(code_phases_gal, 1) + # Make Galileo PRNs unique + eph_galileo[0, :] = eph_galileo[0, :] + 100 + PRN_gal = PRN_gal + 100 + else: + PRN_gal = np.array([]) + code_phases_gal = np.array([]) + peak_metrics_gal = np.array([]) + code_phase_err_gal = np.array([]) + eph_galileo = np.empty((21, 0)) + + # Concatenate arrays + eph = np.hstack((eph_gps, eph_galileo)) + PRN = np.hstack((PRN_gps, PRN_gal)) + code_phases = np.hstack((code_phases_gps, code_phases_gal)) + peak_metrics = np.hstack((peak_metrics_gps, peak_metrics_gal)) + code_phase_err = np.hstack((code_phase_err_gps, code_phase_err_gal)) + + # CTN + return selective_coarse_time_nav(PRN, code_phases, peak_metrics, eph, + init_pos, init_time, init_height, + height_err_max, sort_key, code_phase_err) + + +def coarse_time_nav_mle(init_pos, init_time, code_phase, vis, eph, peak_height, + observed_height=np.nan, code_period=1.0e-3, + search_space_pos=np.array([20.0e3, 20.0e3, 0.2e3]), + search_space_time=0.02, hard_constraint=False, + linear_pr_prediction=False, trop=True, + atm_pressure=1013.0, surf_temp=293.0, + humidity=50.0, iono=None, ion_alpha=np.array([]), + ion_beta=np.array([]), time_out=2, + optim_opt=0, + std=2.0**np.arange(5, -7, -2) * 8.3333e-07): + """Gradient-based maximum-likelihood estimation for coarse-time navigation. + + Does not consider inter-system bias. + + Inputs: + init_pos - Coarse receiver position in ECEF XYZ coordinates [m,m,m] + init_time - Coarse absolute GNSS times [s], list with one value for + each GNSS + code_phase - Code phases of satellites that are expected to be visible + [ms], list of numpy arrays, one for each GNSS + vis - PRNs of satellites that are expected to be visible, list of numpy + arrays, one for each GNSS + eph - Matching navigation data, list of 21-row 2D numpy arrays + peak_height - Reliability measures for satellites that are expected to + be visible, e.g., SNR [dB], list of numpy arrays + observed_height - Height measurement [m], use NaN if not available, + default=np.nan + code_period - Code length [s], list with one value for each GNSS, + default=1.0e-3 + search_space_pos - Spatial search space width in ENU coordinates + [m,m,m], default=np.array([20.0e3, 20.0e3, 0.2e3]) + search_space_time - Temporal search space width [s], default=0.02 + hard_constraint - Flag indicating if observed_height is used as + additional observation / soft constraint + (hard_constraint=False) or hard equality constraint + (hard_constraint=True), default=False + linear_pr_prediction - Flag indicating if pseudoranges are predicted + using non-linear (linear_pr_prdcition=False) or + linear (linear_pr_prdcition=True) approximation, + default=False + trop - Model for troposheric correction: either None or False + for no correction, 'goad' or True for the model of C. C. + Goad and L. Goodman, 'hopfield' for the model of H. S. + Hopfield, or 'tsui' for the model of J. B.-Y. Tsui + [default=True] + atm_pressure - Atmospheric pressure at receiver location [mbar] for + troposheric correction, [default=1013.0] + surf_temp - Surface temperature at receiver location [K] for + troposheric corrrection [default=293.0] + humidity - Humidity at receiver location [%] for troposheric + correction [default=50.0] + iono - Model for ionospheric correction: either None for no + correction, 'klobuchar' for the model of J. Klobuchar, or + 'tsui' for the model of J. B.-Y. Tsui [default=None] + ion_alpha - Alpha parameters of Klobuchar model for ionospheric + correction [default=np.array([])] + ion_beta - Beta parameters of Klobuchar model for ionospheric + correction [default=np.array([])] + time_out - Duration per iteration until timeout [s], use non-positive + number, np.nan, or np.inf to disable, only if optim_opt=2, + default=2 + optim_opt - Solver selection: + 0 - autoptim based on autograd and scipy.minimize (default) + 1 - L-BFGS-B from scipy.minimize + 2 - LN_NELDERMEAD from nlopt + Outputs: + h_opt - Coarse-time navigation solution: receiver position in ECEF XYZ + coordinates [m,m,m], common bias [m], and coarse-time error [s] + useful_sats - PRNs of satellites whose observed pseudoranges are + within 200 m of the obtained solution, list of numpy, + arrays, one for each GNSS + + Author: Jonas Beuchert + """ + def bayes_classifier(x, galileo=False): + """Probability of code phase being invalid or valud based on SNR. + + Inputs: + x - Signal-to-noise ratio (SNR) array [dB] + galileo - Type of GNSS, GPS (galileo=False) or Galileo + (galileo=True), default=False + Output: + p - 2xN array with probabilities for code phases being invalid + (1st row) or valid (2nd row) + + Author: Jonas Beuchert + """ + if not galileo: # GPS + # Class means + mu0 = 7.7 + mu1 = 15.1 + # Class standard deviations + sigma0 = 0.67 + sigma1 = 4.65 + # Class priors + p0 = 0.27 + p1 = 0.73 + else: # Galileo + # Class means + mu0 = 14.2 + mu1 = 19.1 + # Class standard deviations + sigma0 = 1.13 + sigma1 = 4.12 + # Class priors + p0 = 0.62 + p1 = 0.38 + # if np.isclose(code_period, 1e-3, atol=0.5e-3): # GPS L1 + # # Class means + # mu0 = 7.71 # 7.7 + # mu1 = 13.45 # 15.1 + # # Class standard deviations + # sigma0 = 0.74 # 0.67 + # sigma1 = 3.16 # 4.65 + # # Class priors + # p0 = 0.16 # 0.27 + # p1 = 0.84 # 0.73 + # elif np.isclose(code_period, 4e-3, atol=0.5e-3): # Galileo E1 + # # Class means + # mu0 = 11.17 # 14.2 + # mu1 = 16.71 # 19.1 + # # Class standard deviations + # sigma0 = 0.69 # 1.13 + # sigma1 = 3.93 # 4.12 + # # Class priors + # p0 = 0.28 # 0.62 + # p1 = 0.72 # 0.38 + # else: # BeiDou B1C, GPS L1 + # # Class means + # mu0 = 15.43 + # mu1 = 21.92 + # # Class standard deviations + # sigma0 = 0.75 + # sigma1 = 3.99 + # # Class priors + # p0 = 0.55 + # p1 = 0.45 + px0 = ss.norm(mu0, sigma0).pdf(x) * p0 + px1 = ss.norm(mu1, sigma1).pdf(x) * p1 + return np.array([px0, px1]) / (px0 + px1) + + def neg_log_likelihood(h, initPosGeo, initBias, initTime, codePhase, + pValid, observedHeight, std, hard_constraint, + pr_prediction_obj, linear_pr_prediction, + init, final, code_period): + """Negative log-likelihood of a given position, common bias, and time. + + Inputs: + h - Hypothesis: position in ENU coordinates relative to initial + position [m,m,m], common bias relative to initial common bias + [m], and coarse time relative to initial coarse time [s] + initPosGeo - Initial receiver position in geodetic coordinates + [deg,deg,m] + initBias - Initial common bias [m] + initTime - Initial GNSS times [s], list with one value for each + GNSS + codePhase - Code phases of satellites that are expected to be + visible [ms], list of numpy arrays, one for each GNSS + pValid - A-priori probability for a codephase to be valid, list + with one element for each GNSS + observedHeight - Height measurement [m] + std - Standard deviation of Gaussian noise on pseudoranges [m] + hard_constraint - Flag indicating if observed_height is used as + additional observation / soft constraint + (hard_constraint=False) or hard equality + constraint (hard_constraint=True) + pr_prediction_obj - List of PseudorangePrediction objects, one for + each GNSS + linear_pr_prediction - Flag indicating if pseudoranges are + predicted using non-linear + (linear_pr_prdcition=False) or linear + (linear_pr_prdcition=True) approximation + init - Flag indicating if initial bias estimation is performed + final - Flag indicating if used satellites shall be returned + code_period - Code length [s], list with one value for each GNSS + Output: + if init=True and final=False + b - Coarse common bias estimate [m] + if init=False and final=False + cd - Negative log-likelihood of hypothesis given observations + if final=True + useful_sats_idx - Indices of satellites whose observed + pseudoranges are within 200 m of the obtained + solution, list of numpy arrays, one for each + GNSS + + Author: Jonas Beuchert + """ + # Convert ENU coordinates to ECEF XYZ coordinates + if not hard_constraint: + x, y, z = pm.enu2ecef(h[0], h[1], h[2], initPosGeo[0], + initPosGeo[1], initPosGeo[2]) + else: + # Fix height + x, y, z = pm.enu2ecef(h[0], h[1], 0.0, initPosGeo[0], + initPosGeo[1], initPosGeo[2]) + + # Restore bias + b = initBias + h[-2] + + # Restore GPS time [s] + t = initTime + h[-1] + + # Speed of light [m/s] + c = 299792458.0 + + # Predict pseudoranges and code phases + n_gnss = len(codePhase) + codePhasePred = [] + for i_gnss in range(n_gnss): + if codePhase[i_gnss].size > 0: + if not linear_pr_prediction: + # Non-linear approximation + pr = pr_prediction_obj[i_gnss].predict_approx( + t[i_gnss], np.array([x, y, z]), b) + else: + # Linear approximation + pr = pr_prediction_obj[i_gnss].predict_linear( + t[i_gnss], np.array([x, y, z]), b) + # Convert pseudoranges in code phases [s] + codePhasePred.append(np.mod(pr/c, code_period[i_gnss])) + else: + codePhasePred.append(np.array([])) + + # Transform all code phases into same range (0 - 1 ms) + # codePhasePred[i_gnss] = np.mod(codePhasePred[i_gnss], 1e-3) + # codePhase[i_gnss] = np.mod(codePhase[i_gnss], 1) + + if final: + # Calculate residuals + useful_sats_idx = [] + for i_gnss in range(n_gnss): + res = np.mod(codePhase[i_gnss] * 1e-3 - codePhasePred[i_gnss], + code_period[i_gnss]) # [s] + res = np.minimum(res, code_period[i_gnss] - res) # [s] + res = res * c # [m] + useful_sats_idx.append(np.where(res < 200)) + return useful_sats_idx + + # Initialize log-likelihood + cd = 0.0 + + # Define Gaussian kernel + # kernel = ss.norm(0.0, std) + + def kernel_pdf(x): + var = std**2 + denom = (2*np.pi*var)**.5 + num = np.exp(-x**2/(2*var)) + return num/denom + + if init: + # Initial common bias estimation + # Number of points for objective function discretisation per ms + supportingPoints = int(2.0**-1.0 * 4092) + # Initalize result + cd = 0.0 + # Least common multiple of code lengths [ms] + max_code_period = np2.lcm.reduce((code_period/1.0e-3).astype(int)) + # Lenght of correlogram that fits all GNSS + max_cd_length = max_code_period * supportingPoints + # Loop over all GNSS + for i_gnss in range(n_gnss): + # Lenght of correlogram of current GNSS + curr_cd_length = (code_period[i_gnss]/1.0e-3 + * supportingPoints).astype(int) + # Get indices in final correlogram + curr_cd_idx = np.mod(np.arange(max_cd_length), curr_cd_length) + # Get corresponding times + timeIdx = np.linspace(0.0, code_period[i_gnss], + curr_cd_length, endpoint=False) + # Sum kernels centered at GPS code phases + for satIdx in range(codePhase[i_gnss].shape[0]): + # Sum kernels centered at GPS code phases + idx = np.mod(timeIdx + + codePhasePred[i_gnss][satIdx] + - codePhase[i_gnss][satIdx]*1.0e-3 + + code_period[i_gnss]/2.0, + code_period[i_gnss]) - code_period[i_gnss]/2.0 + # Likelihood of code phase obs. given that it is valid + pPhiValid = kernel_pdf(idx) # kernel.pdf(idx) + # Likelihood of code phase obs. given that it is invalid + pPhiInvalid = 1.0 / code_period[i_gnss] + # Probability of code phase being valid / invalid given SNR + pInvalid_sat = 1.0 - pValid[i_gnss][satIdx] # p[0] + pValid_sat = pValid[i_gnss][satIdx] # p[1] + # Likelihood of code phase + pPhi = pPhiValid * pValid_sat + pPhiInvalid * pInvalid_sat + # Log-likelihood + curr_cd = np.log(pPhi) + cd = cd + curr_cd[curr_cd_idx] + + else: + for i_gnss in range(n_gnss): + if codePhase[i_gnss].size > 0: + # Sum kernels centered at GPS code phases + idx = np.mod(codePhasePred[i_gnss] + - codePhase[i_gnss]*1.0e-3 + + code_period[i_gnss]/2.0, + code_period[i_gnss]) - code_period[i_gnss]/2.0 + # Likelihood of code phase obs. given that it is valid + pPhiValid = kernel_pdf(idx) # kernel.pdf(idx) + # Likelihood of code phase obs. given that it is invalid + pPhiInvalid = 1.0 / code_period[i_gnss] + # Probability of code phase being valid / invalid given SNR + pInvalid_sat = 1.0 - pValid[i_gnss] # p[0] + pValid_sat = pValid[i_gnss] # p[1] + # Likelihood of code phase + pPhi = pPhiValid * pValid_sat + pPhiInvalid * pInvalid_sat + # Log-likelihood + cd = cd + np.sum(np.log(pPhi)) + + if (not hard_constraint and observedHeight is not None + and not np.isnan(observedHeight) and not np.isinf(observedHeight)): + # Use height measurement as additional observation + _, _, predictedHeight = pm.ecef2geodetic(x, y, z) + + def height_kernel_pdf(x): + var = (c*std)**2 + denom = (2*np.pi*var)**.5 + num = np.exp(-x**2/(2*var)) + return num/denom + + cd = cd + np.log(height_kernel_pdf( + observedHeight - predictedHeight)) + # cd = cd + np.log(ss.norm(predictedHeight, c*std).pdf( + # observedHeight)) + + cd = np.clip(cd, -np.finfo(np2.float).max, np.finfo(np2.float).max) + + if init: + # Account for (unknown) common bias + maxIdx = np.argmax(cd) + maxTime = maxIdx / supportingPoints * 1e-3 # [s] + b = c * maxTime + # Return initial bias estimate + return b + + return -cd + + # Constrain search space + if not hard_constraint: + # Optimisation without height constraint + searchSpaceBound = np.array([search_space_pos[0], search_space_pos[1], + search_space_pos[2], np.inf, + search_space_time]) / 2.0 + else: + # Optimisation with height constraint + searchSpaceBound = np.array([search_space_pos[0], search_space_pos[1], + np.inf, search_space_time]) / 2.0 + # bounds = so.Bounds(-searchSpaceBound, searchSpaceBound) + # lb = [x if x > -np.inf else None for x in -searchSpaceBound] + # ub = [x if x < np.inf else None for x in searchSpaceBound] + # bounds = list(zip(lb, ub)) + + # Transform ECEF XYZ coordinates to geodetic coordinates + initPosGeo = np.empty(3) + initPosGeo[0], initPosGeo[1], initPosGeo[2] \ + = pm.ecef2geodetic(init_pos[0], init_pos[1], init_pos[2]) + + # Check if observed_height shall be used as hard constraint + if (hard_constraint and not np.isnan(observed_height) + and not np.isinf(observed_height)): + # Fix height + initPosGeo[2] = observed_height + + # Check if code duration is provided as list; if not correct + if not (isinstance(code_period, list) + or isinstance(code_period, np.ndarray)): + code_period = np.ones(len(vis)) * code_period + + # Probability of code phase being valid / invalid given SNR + n_gnss = len(vis) + pValid = [] + pInvalid = [] + for i_gnss in range(n_gnss): + if i_gnss == 0: + galileo = False + else: + galileo = True + p = bayes_classifier(peak_height[i_gnss], galileo=galileo) + pInvalid.append(p[0]) + pValid.append(p[1]) + + # Decreasing standard deviation of Gaussian noise on pseudoranges [m] + # std = 2.0**np.arange(5, -7, -2) * 8.3333e-07 + + # Decreasing typical step sizes (east [m], north [m], up [m], common bias + # [m], coarse-time error [s]) + typicalX = 2.0**np.arange(0, -1, -6) * np.array([500.0, 500.0, 5.0, 300.0, + 1.0e-3]) + + # Initial position in ENU coordinates, common bias, and time hypothesis + # (relative to initial values) + if not hard_constraint: + h_opt = np.zeros(5) + else: + # Do not optimise over height + h_opt = np.zeros(4) + + # Initialize approximate pseudorange prediction + pr_prediction_obj = [] + for i_gnss in range(n_gnss): + if vis[i_gnss].shape[0] > 0: + pr_prediction_obj.append(PseudorangePrediction( + vis[i_gnss], eph[i_gnss], init_time[i_gnss], + init_pos, 0, trop=trop, atm_pressure=atm_pressure, + surf_temp=surf_temp, humidity=humidity, iono=iono, + ion_alpha=ion_alpha, ion_beta=ion_beta)) + else: + pr_prediction_obj.append(None) + + # Get initial common bias estimate + initBias = neg_log_likelihood( + h_opt, initPosGeo, 0.0, init_time, code_phase, pValid, observed_height, + std[0], hard_constraint, pr_prediction_obj, linear_pr_prediction, True, + False, code_period) + + # Multiple iterations with decreasing pseudorange standard deviation + for itIdx in range(std.shape[0]): + print('Start iteration {}'.format(itIdx)) + + try: + if optim_opt == 2: + import nlopt + algorithm = nlopt.LN_NELDERMEAD # LN_SBPLX (works, too) + opt = nlopt.opt(algorithm, 5) + + def objective_fun(h, grad): + return neg_log_likelihood( + h, + initPosGeo, initBias, init_time, code_phase, + pValid, observed_height, std[itIdx], + hard_constraint, pr_prediction_obj, + linear_pr_prediction, False, False, code_period + ) + opt.set_min_objective(objective_fun) + + opt.set_lower_bounds(-searchSpaceBound) + opt.set_upper_bounds(searchSpaceBound) + + h_opt = opt.optimize(h_opt) + # h_opt = timeout(timeout=time_out)(so.minimize)( + # neg_log_likelihood, h_opt, args=( + # initPosGeo, initBias, init_time, code_phase, pValid, + # observed_height, std[itIdx], hard_constraint, + # pr_prediction_obj, linear_pr_prediction, False, False), + # method='L-BFGS-B', bounds=bounds, jac={'2-points'}, + # options={'finite_diff_rel_step': typicalX})#, + # # 'gtol': 0.0001}) + # # 'maxiter': 100-itIdx*10, + # # 'maxfun': 700-itIdx*100}) + elif (optim_opt == 1 and time_out is not np.nan and time_out > 0 + and time_out < np.inf): + bounds = so.Bounds(-searchSpaceBound, searchSpaceBound) + h_opt = timeout(timeout=time_out)(so.minimize)( + neg_log_likelihood, h_opt, args=( + initPosGeo, initBias, init_time, code_phase, + pValid, observed_height, std[itIdx], + hard_constraint, pr_prediction_obj, + linear_pr_prediction, False, False, code_period + ), + method='L-BFGS-B', bounds=bounds) + h_opt = h_opt.x + elif optim_opt == 0: + import autoptim as ao + lb = [x if x > -np.inf else None + for x in -searchSpaceBound] + ub = [x if x < np.inf else None + for x in searchSpaceBound] + bounds = list(zip(lb, ub)) + h_opt = ao.minimize(neg_log_likelihood, h_opt, args=( + initPosGeo, initBias, init_time, code_phase, + pValid, observed_height, std[itIdx], + hard_constraint, pr_prediction_obj, + linear_pr_prediction, False, False, code_period), + bounds=bounds) + h_opt = h_opt[0] + + # h_opt = timeout(timeout=time_out)(so.minimize)( + # neg_log_likelihood, h_opt, args=( + # initPosGeo, initBias, init_time, code_phase_gps, + # code_phase_galileo, pValidGPS, pValidGalileo, + # observed_height, std[itIdx], hard_constraint, + # pr_prediction_obj_gps, pr_prediction_obj_galileo, + # linear_pr_prediction, False, False), method='SLSQP', + # bounds=bounds, jac={'2-points'}, + # options={'finite_diff_rel_step': typicalX}) + # elif optim_opt == 3: + # h_opt = timeout(timeout=time_out)(so.minimize)( + # neg_log_likelihood, h_opt, args=( + # initPosGeo, initBias, init_time, code_phase_gps, + # code_phase_galileo, pValidGPS, pValidGalileo, + # observed_height, std[itIdx], hard_constraint, + # pr_prediction_obj_gps, pr_prediction_obj_galileo, + # linear_pr_prediction, False, False), method='SLSQP', + # bounds=bounds, jac={'2-points'}) + # elif optim_opt == 4: + # h_opt = timeout(timeout=time_out)(so.minimize)( + # neg_log_likelihood, h_opt, args=( + # initPosGeo, initBias, init_time, code_phase_gps, + # code_phase_galileo, pValidGPS, pValidGalileo, + # observed_height, std[itIdx], hard_constraint, + # pr_prediction_obj_gps, pr_prediction_obj_galileo, + # linear_pr_prediction, False, False), method='TNC', + # bounds=bounds, jac={'2-points'}) + # elif optim_opt == 5: + # h_opt = timeout(timeout=time_out)(so.minimize)( + # neg_log_likelihood, h_opt, args=( + # initPosGeo, initBias, init_time, code_phase_gps, + # code_phase_galileo, pValidGPS, pValidGalileo, + # observed_height, std[itIdx], hard_constraint, + # pr_prediction_obj_gps, pr_prediction_obj_galileo, + # linear_pr_prediction, False, False), method='trust-constr', + # bounds=bounds, jac={'2-points'}) + elif optim_opt == 1: + h_opt = so.minimize( + neg_log_likelihood, h_opt, args=( + initPosGeo, initBias, init_time, code_phase, pValid, + observed_height, std[itIdx], hard_constraint, + pr_prediction_obj, linear_pr_prediction, False, False), + options={'finite_diff_rel_step': typicalX}) + h_opt = h_opt.x#, + # 'gtol': 0.0001}) + # 'maxiter': 100-itIdx*10, + # 'maxfun': 700-itIdx*100}) + else: + raise ValueError( + "Chosen option not available, use optim_opt=0,1,2.") + except (KeyboardInterrupt, ImportError): + # Do not ignore those errors + raise + except: + print("Single iteration unsuccesful.") + pass + + # Get satellites with small residuals + useful_sats_idx = neg_log_likelihood( + h_opt, + initPosGeo, initBias, init_time, code_phase, pValid, observed_height, + std[-1], hard_constraint, pr_prediction_obj, linear_pr_prediction, + False, True, code_period) + useful_sats = [vis[i_gnss][useful_sats_idx[i_gnss]] + for i_gnss in range(n_gnss)] + + # Convert ENU to ECEF XYZ coordinates + h_opt[0], h_opt[1], h_opt[2] = pm.enu2ecef(h_opt[0], h_opt[1], h_opt[2], + initPosGeo[0], initPosGeo[1], + initPosGeo[2]) + + # Convert relative common bias to absolute one [m] + h_opt[3] = initBias + h_opt[3] + + # Convert relative time to absolute GPS time [s] + # h_opt[-1] = init_time + h_opt[-1] + + return h_opt, useful_sats + + +def coarse_time_nav_mle_wrapper(codePhasesGPS, PRNGPS, eph, initTime, initPos, + peakMetricsGPS, mode, optim_opt, + search_space_time=0.02, + std=2.0**np.arange(5, -7, -2) * 8.3333e-07, + trop=True, iono=None, ion_alpha=[], ion_beta=[] + ): + init_pos = np.array(initPos) + init_time = initTime + code_phase_gps = np.array(codePhasesGPS) + vis_gps = np.array(PRNGPS).astype('int') + eph_gps = np.asarray(eph) + peak_height_gps = np.array(peakMetricsGPS) + print(trop) + print(iono) + ion_alpha = np.array(ion_alpha) + ion_beta = np.array(ion_beta) + if mode == 'no': + print('No height observation.') + observed_height = np.NaN + hard_constraint = False + elif mode == 'soft': + print('Height observation as soft constraint.') + observed_height = 74.154 + hard_constraint = False + elif mode == 'hard': + print('Height observation as hard constraint.') + observed_height = 74.154 + hard_constraint = True + + try: + pos, _ = timeout(timeout=10)(coarse_time_nav_mle)( + init_pos, [init_time], [code_phase_gps], vis=[vis_gps], + eph=[eph_gps], + observed_height=observed_height, + peak_height=[peak_height_gps], + search_space_pos=np.array([20.0e3, 20.0e3, 0.2e3]), + search_space_time=search_space_time, + hard_constraint=hard_constraint, + linear_pr_prediction=False, optim_opt=int(optim_opt), + std=np.asarray(std), + trop=trop, iono=iono, ion_alpha=ion_alpha, ion_beta=ion_beta) + return pos + except: + return np.full(5, np.inf) + + +def horizontal_dilution_of_precision(sats, eph, coarse_time, rec_pos): + """Calculate horizontal dilution of precision (HDOP). + + HDOP represents an approximate ratio factor between the precision in + the measurements and in positioning. This ratio is computed only from + the satellites-receiver geometry. + + Inputs: + sats - PRNs of satellites that are useful, numpy array with unique IDs + eph - Navigation data as matrix, 21-row 2D numpy array + coarse_time - Coarse absolute GNSS times [s], single value or array for + different GNSS times with one value for each satellite + rec_pos - Receiver position in ECEF XYZ coordinates [m,m,m] + + Output: + hdop - Horizontal dilution of precision + + Author: Jonas Beuchert + Implemented according to: Van Diggelen, Frank Stephen Tromp. A-GPS: + Assisted GPS, GNSS, and SBAS. Artech house, 2009. + """ + # Speed of light [m/s] + c = 299792458.0 + # Number of satellites + nSats = sats.shape[0] + + if not isinstance(coarse_time, np.ndarray) or coarse_time.shape == (): + coarse_time = coarse_time * np.ones(sats.shape) + + # GPS time since 1980 to time of week (TOW) [s] + coarseTimeTOW = np.mod(coarse_time, 7 * 24 * 60 * 60) + + if eph.shape[1] != nSats or np.any(eph[0] != sats): + # Identify matching columns in ephemeris matrix, closest column in time + # for each satellite + col = np.array([ep.find_eph(eph, s_i, t_i) + for s_i, t_i in zip(sats, coarseTimeTOW)]) + if col.size == 0: + print("Cannot find satellite in navigation data.") + return np.nan + # Extract matching columns + eph = eph[:, col] + + # Find satellite positions at coarse transmission time + t_corr = np.array([ep.get_sat_clk_corr(coarseTimeTOW[k], + np.array([sats[k]]), + eph[:, k, np.newaxis])[0] + for k in range(nSats)]) + txGPS = coarseTimeTOW - t_corr + satPosCoarse = ep.get_sat_pos(txGPS, eph) + + distancesCoarse = np.sqrt(np.sum((rec_pos - satPosCoarse)**2, axis=-1)) + + travel_times_coarse = distancesCoarse / c + + rel_travel_times = travel_times_coarse - np.min(travel_times_coarse) + + # Correct for satellite clock error + tCorr = np.empty(nSats) + for i in range(nSats): + k = np.array([sats[i]]) + tCorr[i] = ep.get_sat_clk_corr(coarseTimeTOW[i] - rel_travel_times[i], + k, eph[:, i, np.newaxis]) + txGPS = coarseTimeTOW - rel_travel_times - tCorr + + # Get satellite position at corrected transmission time + satPos = ep.get_sat_pos(txGPS, eph) + satPos_fut = ep.get_sat_pos(txGPS+1, eph) + + # Calculate rough propagation delay + travelTime = np.linalg.norm(satPos - rec_pos, axis=1) / c + + # Rotate satellite ECEF coordinates due to earth rotation during + # signal travel time + OmegaEdot = 7.292115147e-5 # Earth's angular velocity [rad/s] + omegaTau = OmegaEdot * travelTime # Angle [rad] + R3 = np.array( + [np.array([[np.cos(omegaTau[k]), np.sin(omegaTau[k]), 0.0], + [-np.sin(omegaTau[k]), np.cos(omegaTau[k]), 0.0], + [0.0, 0.0, 1.0]]) for k in range(nSats)] + ) # Rotation matrix + rotSatPos = np.array([np.matmul(R3[k], satPos[k]) + for k in range(nSats)]) + rotSatPos_fut = np.array([np.matmul(R3[k], satPos_fut[k]) + for k in range(nSats)]) + + rec_pos_geo = pm.ecef2geodetic(rec_pos[0], rec_pos[1], rec_pos[2]) + sat_pos_enu = np.array([pm.ecef2enu( + sat_pos_ecef[0], sat_pos_ecef[1], sat_pos_ecef[2], + rec_pos_geo[0], rec_pos_geo[1], rec_pos_geo[2] + ) for sat_pos_ecef in rotSatPos]) + sat_pos_normalized = sat_pos_enu / np.linalg.norm(sat_pos_enu, + axis=1)[:, np.newaxis] + # Calculate pseudorange rate (~ range rate) + sat_pos_fut_enu = np.array([pm.ecef2enu( + sat_pos_ecef[0], sat_pos_ecef[1], sat_pos_ecef[2], + rec_pos_geo[0], rec_pos_geo[1], rec_pos_geo[2] + ) for sat_pos_ecef in rotSatPos_fut]) + sat_vel = sat_pos_fut_enu - sat_pos_enu + v = np.array([np.array([np.dot(-sat_vel_k, sat_pos_normalized_k)]) + for sat_vel_k, sat_pos_normalized_k + in zip(sat_vel, sat_pos_normalized)]) + # Build H matrix + A = np.hstack((sat_pos_normalized, np.ones((nSats, 1)), v)) + try: + Q = np.linalg.inv(A.T @ A) + dilution_east_squared = Q[0, 0] + dilution_north_squared = Q[1, 1] + return np.sqrt(dilution_east_squared + dilution_north_squared) + except: + print("Cannot calculate HDOP.") + return np.nan + + +def coarse_time_nav_ransac(obs, sats, Eph, TOW_assist_ms, rec_loc_assist, + sort=False, observed_height=None, + inter_system_bias=False, weights=None, + hard_constraint=False, tropo='goad', + atm_pressure=1013.0, surf_temp=293.0, humidity=50.0, + iono=None, ion_alpha=np.array([]), + ion_beta=np.array([]), code_period_ms=1, + inlier_probability=None, + min_ransac_iterations=1, + max_ransac_iterations=1000, + desired_probability=None, + inlier_threshold=200, + min_inliers=6, + max_dist=150.0e3, max_time=60.0, + min_combo_probability=0.0, + max_combo_size=6, + hdop=False, no_iterations=6): + """Compute receiver position using coarse-time navigation and RANSAC. + + Compute receiver position from fractional pseudoranges using coarse-time + navigation and non-linear least-squares optimisation. + The initial position should be within 100 - 150 km of the true position and + the initial coarse time within about 1 min of the true time. + Works for multiple GNSS, too, e.g., GPS and Galileo. If using more than + one, then concatenate navigation data (ephemerides) and make sure that + satellite indices are unique. E.g., use 1-32 for GPS and 201-250 for + Galileo. + + Use RANSAC algorithm for outlier detection. + + Inputs: + obs - Observations, the fractional pseudo-ranges (sub-millisecond). + sats - SV numbers associated with each observation. + Eph - Table of ephemerides, each column associated with a satellite. + TOW_assist_ms - Coarse time of week [ms], single value or array for + different GNSS times with one value for each satellite. + rec_loc_assist - Initial receiver position in ECEF XYZ coordinates. + sort - Re-sort satellites according to distance [default=False]. + observed_height - Height observation [m], default=None + inter_system_bias - Flag indicating if a bias between 2 GNSS is + added as optimisation variable assuming that all + satellites with PRN > 100 belong to the 2nd GNSS + [default=False] + weights - Weight for each observation (height at the end, if present) + [default=None] + hard_constraint - False: Use oberserved_height as additional + observation, i.e., as soft constraint. True: Use + observed_height as hard equality constraint. + [default=False] + tropo - Model for troposheric correction: either None, 'goad' for the + model of C. C. Goad and L. Goodman, 'hopfield' for the model of + H. S. Hopfield, or 'tsui' for the model of J. B.-Y. Tsui + [default='goad'] + atm_pressure - Atmospheric pressure at receiver location [mbar] for + troposheric correction, [default=1013.0] + surf_temp - Surface temperature at receiver location [K] for + troposheric corrrection [default=293.0] + humidity - Humidity at receiver location [%] for troposheric correction + [default=50.0] + iono - Model for ionospheric correction: either None or 'klobuchar' + for the model of J. Klobuchar [default=None] + ion_alpha - Alpha parameters for Klobuchar model [default=np.array([])] + ion_beta - Beta parameters for Klobuchar model [default=np.array([])] + code_period_ms - Length of code [ms], either a single value for all + satellites or a numpy array with as many elements as + satellites [default=1] + inlier_probability - default=None + min_ransac_iterations - Minimum number of combos tested per certain + combo size, default=1 + max_ransac_iterations - Maximum number of combos tested per certain + combo size, default=1000 + desired_probability - Obsolet, default=None + inlier_threshold - Upper limit for residuals of satellites to be + plausible / to be inliers [m], default=200 + min_inliers - Minimum number of inliers for plausible solution, + default=6 + max_dist - Maximum spatial distance between 2 consecutive fixes to be + plausible [m], default=150.0e3 + max_time - Maximum temporal distance between 2 consecutive fixes to be + plausible [s], i.e., the change of the coarse-time error, + default=60.0 + min_combo_probability - Minimum a-priori reliability probability of + combo to be tested, default=0.0 + max_combo_size - Maximum number of satellites in subset initially used + by RANSAC, default=6 + hdop - Flag if horizontal dilution of precision is returned as 4th + output, default=False + no_iterations - Number of non-linear least-squares iterations, + default=6 + + Outputs: + state - ECEF XYZ position [m,m,m], common bias [m], coarse-time error + [m]; np.NaN if optimization failed + delta_z - Residuals (of pseudoranges) [m] + useful_sats - PRNs of satellites that were used to obtain the solution + hdop - (Only if hdop=True) Horizontal dilution of precision + + Author: Jonas Beuchert + """ + from satellite_combos import get_combos + + def assign_integers(sats, svInxListByDistance, obs, Eph, approx_distances, + code_period_ms=1): + """Assign Ns according to van Diggelen's algorithm. + + Author: Jonas Beuchert + """ + light_ms = 299792458.0 * 0.001 + N = np.zeros(sats.shape) + approx_distances = approx_distances / light_ms # Distances in millisec + # Distances from ms to code periods + approx_distances = approx_distances / code_period_ms + + unique_code_periods = np.unique(code_period_ms) + n_different_code_periods = len(unique_code_periods) + if not isinstance(code_period_ms, np.ndarray): + N0_inx = svInxListByDistance[0] + else: + N0_inx = np.empty(n_different_code_periods) + for c_idx in np.arange(n_different_code_periods): + N0_inx[c_idx] = svInxListByDistance[ + code_period_ms == unique_code_periods[c_idx] + ][0] + N0_inx = N0_inx.astype(int) + N[N0_inx] = np.floor(approx_distances[N0_inx]) + + delta_t = Eph[18, :] * 1000.0 # From sec to millisec + # Time errors from ms to code periods + delta_t = delta_t / code_period_ms + + # Observed code phases from ms to code periods + obs = obs / code_period_ms + + if not isinstance(code_period_ms, np.ndarray): + for k in svInxListByDistance[1:]: + N[k] = np.round(N[N0_inx] + obs[N0_inx] - obs[k] + + (approx_distances[k] - delta_t[k]) - + (approx_distances[N0_inx] - delta_t[N0_inx])) + else: + for c_idx in np.arange(n_different_code_periods): + curr_svInxListByDistance = svInxListByDistance[ + code_period_ms == unique_code_periods[c_idx] + ] + for k in curr_svInxListByDistance[1:]: + N[k] = np.round(N[N0_inx[c_idx]] + obs[N0_inx[c_idx]] + - obs[k] + + (approx_distances[k] - delta_t[k]) - + (approx_distances[N0_inx[c_idx]] + - delta_t[N0_inx[c_idx]])) + + # Floored distances from code periods to ms + N = N * code_period_ms + + return N, N0_inx + + def tx_RAW2tx_GPS(tx_RAW, Eph): + """Refactoring. + + Author: Jonas Beuchert + """ + t0c = Eph[20] + dt = ep.check_t(tx_RAW - t0c) + tcorr = (Eph[1] * dt + Eph[19]) * dt + Eph[18] + tx_GPS = tx_RAW - tcorr + dt = ep.check_t(tx_GPS - t0c) + tcorr = (Eph[1] * dt + Eph[19]) * dt + Eph[18] + tx_GPS = tx_RAW - tcorr + return tx_GPS, tcorr + + def e_r_corr(traveltime, X_sat): + """Rotate satellite by earth rotation during signal travel time. + + Author: Jonas Beuchert + """ + Omegae_dot = 7.292115147e-5 # rad/sec + + omegatau = Omegae_dot * traveltime + R3 = np.array([np.array([np.cos(omegatau), np.sin(omegatau), 0.0]), + np.array([-np.sin(omegatau), np.cos(omegatau), 0.0]), + np.array([0.0, 0.0, 1.0])]) + return R3 @ X_sat + + v_light = 299792458.0 + dtr = np.pi / 180.0 + numSVs = obs.shape[0] # Number of satellites + el = np.zeros(numSVs) + + TOW_assist = TOW_assist_ms * 1e-3 + if not isinstance(TOW_assist, np.ndarray) or TOW_assist.shape == (): + TOW_assist = TOW_assist * np.ones(sats.shape) + + if Eph.shape[1] != numSVs or np.any(Eph[0] != sats): + # Identify ephemerides columns in Eph + col_Eph = np.array([ep.find_eph(Eph, sats[k], TOW_assist[k]) + for k in range(numSVs)]) + Eph = Eph[:, col_Eph] # Sort according to sats argument + + # If one common bias shall be used for all systems, then all code phases + # must have same range + if isinstance(code_period_ms, np.ndarray) and not inter_system_bias: + # Greatest common divider of code periods + code_period_ms = np2.gcd.reduce(code_period_ms.astype(int)) + obs = np.mod(obs, code_period_ms) + + # Number of common-bias optimisation variables + if isinstance(code_period_ms, np.ndarray): + # Assume one entry in code_period_ms for each satellite + # One bias for each present code period + n_bias_opt = np.unique(code_period_ms).shape[0] + elif inter_system_bias: + # Same code period for all systems, nevertheless use inter-system bias + n_bias_opt = 2 + else: + # Same code period for all systems, do not use inter-system bias + n_bias_opt = 1 + + T_tilde = TOW_assist + + # Find satellite positions at T_tilde + tx_GPS = np.array([TOW_assist[k] + - ep.get_sat_clk_corr(TOW_assist[k], + np.array([sats[k]]), + Eph[:, k, np.newaxis]) + for k in range(numSVs)]) + satPos_at_T_tilde = np.array([np.squeeze( + ep.get_sat_pos(tx_GPS[k], Eph[:, k, np.newaxis])) + for k in range(numSVs)]) + + # And then find closest one + approx_distances = np.sqrt(np.sum( + (rec_loc_assist - satPos_at_T_tilde)**2, axis=-1)) + if sort: + svInxListByDistance = np.argsort(approx_distances) + else: + svInxListByDistance = np.arange(numSVs) + + plausible_solution = False + # potential_solution = False + # min_res_norm = np.inf + + max_sat = max_combo_size+1 # Start trying subsets of 6 satellites + while not plausible_solution and max_sat > 1: + max_sat -= 1 # Reduce size of considered satellite subset + # Get all possible satellite combinations with max_sat satellites + if sort or numSVs != 15 or max_sat > 6: + # Cannot use pre-calculated values + sat_combinations = it.combinations(iter(svInxListByDistance), + max_sat) + sat_combinations = np.array([*sat_combinations]) + else: + # Can use pre-calculated values + sat_combinations = get_combos(15, max_sat) + # sat_combinations = np.array([np.arange(max_sat)]) + + # if inlier_probability is not None: + # # Sort combinations according to probability + # # Multiply individual probabilities to get joined ones for each combo + # inlier_probability_combo = np.prod( + # inlier_probability[sat_combinations], axis=-1) + # # Sort probabilities across all combos + # sorted_idx = np.argsort(inlier_probability_combo)[::-1] + # # Sort satellite combos in descending order + # sat_combinations = sat_combinations[sorted_idx] + + # if desired_probability is not None: + # # How many combos must we try to exceed the desired probability? + # larger_than_desired = np.where( + # 1-np.cumprod(1-inlier_probability_combo) > desired_probability + # )[0] + # # Can we achieve the desired probability at all? + # if len(larger_than_desired) > 0: + # # Select minimum iteration number to achieve desired probability + # # Do not violate limits + # max_ransac_iterations = max(min_ransac_iterations, + # min(max_ransac_iterations, + # larger_than_desired[0]+1)) + + # # Use only most likely satellite combos + # sat_combinations = sat_combinations[0:int(max_ransac_iterations)] + + # Iterate over all rows of sat_combinations, i.e., all combinations + # with 5 satellites + # for chosen_sats in sat_combinations: + max_combo_probability = 1.0 + inlier_probability_updated = inlier_probability + ransac_iteration_idx = 0 + while (not plausible_solution + and ransac_iteration_idx < max_ransac_iterations + and (max_combo_probability >= min_combo_probability + or ransac_iteration_idx < min_ransac_iterations) + and sat_combinations.shape[0] > 0): + + # Calculate probability for each set to contain only inliers + inlier_probability_combo = np.prod( + inlier_probability_updated[sat_combinations], axis=-1) + # Pick combo with highest probabiliy that has not been picked yet + # Sort probabilities across all combos + max_combo_probability_idx = np.argmax(inlier_probability_combo) + chosen_sats = sat_combinations[max_combo_probability_idx] + max_combo_probability = inlier_probability_combo[max_combo_probability_idx] + if (max_combo_probability >= min_combo_probability + or ransac_iteration_idx < min_ransac_iterations): + + # Delete chosen combo + sat_combinations = np.delete(sat_combinations, + max_combo_probability_idx, + axis=0) + + # Bring 1st satellite of combo to the front + svInxListByDistance = np.concatenate(( + np.array([chosen_sats[0]]), + np.arange(0, chosen_sats[0]), + np.arange(chosen_sats[0]+1, numSVs) + )) + # Could use only top max_sat satellites here + + # Assign N numbers: + Ns, N0_inx = assign_integers(sats, svInxListByDistance, obs, Eph, + approx_distances, code_period_ms) + # Could do only top max_sat here and other later if necessary + + # Now find K numbers: + if isinstance(code_period_ms, np.ndarray): + unique_code_periods = np.unique(code_period_ms) + n_different_code_periods = len(unique_code_periods) + Ks = np.empty(Ns.shape) + for c_idx in np.arange(n_different_code_periods): + Ks[code_period_ms == unique_code_periods[c_idx]] \ + = Ns[code_period_ms == unique_code_periods[c_idx]] \ + - Ns[N0_inx[c_idx]] + else: + Ks = Ns - Ns[N0_inx] + + fullPRs = Ns + obs # Full pseudoranges reconstruction in ms + fullPRs = fullPRs * (v_light * 1e-3) # In meters + + if hard_constraint: + # Transform ECEF XYZ coordinates to geodetic coordinates + latitude, longitude, _ = pm.ecef2geodetic( + rec_loc_assist[0], rec_loc_assist[1], rec_loc_assist[2]) + initPosGeo = np.array([latitude, longitude, observed_height]) + # Initial receiver postion in EN coordinates + state = np.zeros(2+n_bias_opt+1) + else: + # Preliminary guess for receiver position, common bias, and assistance + # error ([x y z b et] or [x y z b1 b2 et]) + state = np.concatenate((rec_loc_assist, np.zeros(n_bias_opt+1))) + + for iter_idx in range(no_iterations): + # iter_idx = 0 + # while iter_idx < no_iterations: + if hard_constraint: + H = np.empty((numSVs, 3+n_bias_opt)) + # H = np.empty((max_sat, 3+n_bias_opt)) + else: + H = np.empty((numSVs, 4+n_bias_opt)) + # H = np.empty((max_sat, 4+n_bias_opt)) + delta_z = np.empty(numSVs) # Observed minus computed observation + # delta_z = np.empty(max_sat) # Observed minus computed observation + + # Coarse-time error + Et = state[-1] # In seconds + + for k in svInxListByDistance: + # for k in chosen_sats: + # Alternatively, iterate just over top max_sat satellites + # Check if satellite is in desired subset + # or last iteration is reached + if (iter_idx == no_iterations-1 + or np.in1d(k, chosen_sats)[0]): + + # Common bias [m] + if isinstance(code_period_ms, np.ndarray): + code_period_idx = np.where( + unique_code_periods == code_period_ms[k])[0] + b = state[-1-n_bias_opt+code_period_idx] + elif inter_system_bias and sats[k] > 100: + # Common bias of 2nd GNSS + b = state[-2] + else: + # Common bias of 1st GNSS + b = state[-1-n_bias_opt] + + Kk = Ks[k] + + tx_GPS, tcorr = tx_RAW2tx_GPS(T_tilde[k] - Et - Kk * 1e-3, + Eph[:, k]) + + X = ep.get_sat_pos(tx_GPS, Eph[:, k]) + X_fut = ep.get_sat_pos(tx_GPS + 1, Eph[:, k]) + satECEF = X + sat_futECEF = X_fut + if hard_constraint: + # Transform ECEF XYZ coordinates to ENU coordinates + X[0], X[1], X[2] = pm.ecef2enu(X[0], X[1], X[2], initPosGeo[0], + initPosGeo[1], initPosGeo[2]) + X_fut[0], X_fut[1], X_fut[2] = pm.ecef2enu(X_fut[0], X_fut[1], + X_fut[2], + initPosGeo[0], + initPosGeo[1], + initPosGeo[2]) + state_memory = state + state = np.array([state[0], state[1], 0.0]) + + # This if case calculates something about trop + if iter_idx == 0: + traveltime = 0.072 + Rot_X = satECEF + Rot_X_fut = sat_futECEF + trop = 0.0 + else: + if hard_constraint: + posECEF = np.empty(3) + posECEF[0], posECEF[1], posECEF[2] \ + = pm.enu2ecef(state[0], state[1], 0.0, + initPosGeo[0], initPosGeo[1], + initPosGeo[2]) + else: + posECEF = state[:3] + + rho2 = (satECEF[0] - posECEF[0])**2 \ + + (satECEF[1] - posECEF[1])**2 \ + + (satECEF[2] - posECEF[2])**2 # Distance squared + traveltime = np.sqrt(rho2) / v_light + Rot_X = e_r_corr(traveltime, satECEF) + + Rot_X_fut = e_r_corr(traveltime, sat_futECEF) + + rho2 = (Rot_X[0] - posECEF[0])**2 \ + + (Rot_X[1] - posECEF[1])**2 \ + + (Rot_X[2] - posECEF[2])**2 + + if tropo == 'goad': + az, el, dist = ep.topocent(posECEF, Rot_X-posECEF) + trop = ep.tropo(np.sin(el * dtr), 0.0, atm_pressure, + surf_temp, humidity, 0.0, 0.0, 0.0) + elif tropo == 'hopfield': + surf_temp_celsius = surf_temp-273.15 + saturation_vapor_pressure = 6.11*10.0**( + 7.5*surf_temp_celsius/(237.7+surf_temp_celsius)) + vapor_pressure = humidity/100.0 * saturation_vapor_pressure + trop = ep.tropospheric_hopfield( + posECEF, np.array([Rot_X]), surf_temp_celsius, + atm_pressure/10.0, vapor_pressure/10.0) + elif tropo == 'tsui': + lat, lon, h = pm.ecef2geodetic(posECEF[0], posECEF[1], + posECEF[2]) + az, el, srange = pm.ecef2aer(Rot_X[0], Rot_X[1], Rot_X[2], + lat, lon, h) + trop = ep.tropospheric_tsui(el) + else: + trop = 0.0 + + if iono == 'klobuchar': + trop = trop + ep.ionospheric_klobuchar( + posECEF, np.array([Rot_X]), + np.mod(TOW_assist[k], 24*60*60), + ion_alpha, ion_beta) * v_light + elif iono == 'tsui': + lat, lon, h = pm.ecef2geodetic(posECEF[0], posECEF[1], + posECEF[2]) + az, el, srange = pm.ecef2aer(Rot_X[0], Rot_X[1], Rot_X[2], + lat, lon, h) + # Convert degrees to semicircles + el = el / 180.0 + az = az / 180.0 + lat = lat / 180.0 + lon = lon / 180.0 + # Ionospheric delay [s] + T_iono = ep.ionospheric_tsui( + el, az, lat, lon, TOW_assist[k], ion_alpha, ion_beta) + trop = trop + T_iono * v_light + + # Subtraction of state[3] corrects for receiver clock offset and + # v_light*tcorr is the satellite clock offset + predictedPR = np.linalg.norm(Rot_X - state[:3]) + b \ + - tcorr * v_light + trop # meters + delta_z[k] = fullPRs[k] - predictedPR # Meters + + # Now add row to matrix H according to: + # -e_k 1 v_k + # Notice that it is easier to plug in the location of the satellite + # at its T_dot estimation, i.e., Rot_X + sat_vel_mps = Rot_X_fut - Rot_X + + e_k = (Rot_X - (Et + Kk * 1e-3) * sat_vel_mps - state[:3]) + e_k = e_k / np.linalg.norm(e_k) + + v_k = np.sum(-sat_vel_mps * e_k, keepdims=True) # Relative speed + + if hard_constraint: + # Optimise only over E and N coordinate + e_k = e_k[:2] + # Restore state + state = state_memory + + if isinstance(code_period_ms, np.ndarray): + code_period_idx = np.where( + unique_code_periods == code_period_ms[k]) + jac_common_bias = np.zeros(n_bias_opt) + jac_common_bias[code_period_idx] = 1.0 + # Jacobian w.r.t. to common bias of this GNSS + H_row = np.concatenate((-e_k, jac_common_bias, + v_k)) + elif not inter_system_bias: + # Matrix for 5 optimisation variables + H_row = np.concatenate((-e_k, np.ones(1), v_k)) + else: + # Matrix for 6 optimisation variables + if sats[k] <= 100: + # Jacobian w.r.t. to common bias of 1st GNSS + H_row = np.concatenate((-e_k, np.ones(1), np.zeros(1), + v_k)) + else: + # Jacobian w.r.t. to common bias of 2nd GNSS + H_row = np.concatenate((-e_k, np.zeros(1), np.ones(1), + v_k)) + # Append Jacobian to end of matrix + H[k] = H_row + + # RANSAC: Select only max_sat satellites + delta_z_chosen = delta_z[chosen_sats] + H_chosen = H[chosen_sats] + # Do not need this if delta_z and H are only build for chosen sats + + # Check if height measurement is provided + if observed_height is not None and not hard_constraint: + # Add Jacobian of height observation + H_chosen = np.vstack((H_chosen, jh.jacobian_height(state))) + # Predict height based on current state + predicted_height = pm.ecef2geodetic(state[0], state[1], state[2] + )[2] + # Add height measurement + delta_z_chosen = np.append(delta_z_chosen, + observed_height - predicted_height) + + if weights is not None: + H_chosen = H_chosen * np.sqrt(weights[np.array(chosen_sats), + np.newaxis]) + delta_z_chosen = delta_z_chosen * np.sqrt(weights[np.array(chosen_sats)]) + + x = np.linalg.lstsq(H_chosen, delta_z_chosen, rcond=None)[0] + prev_state = state + state = state + x + + # # RANSAC check + # if np.all(np.abs(delta_z_chosen) < inlier_threshold): + # potential_solution = True + # if np.linalg.norm(delta_z_chosen) < min_res_norm: + # state_potential = state + # delta_z_potential = delta_z[svInxListByDistance] + # sats_potential = sats[np.array(chosen_sats)] + # H_potential = H_chosen + # min_res_norm = np.linalg.norm(delta_z_chosen) + # # Check plausibility of solution + # if np.where(np.abs(delta_z) < inlier_threshold + # )[0].shape[0] >= min_inliers \ + # and np.linalg.norm(state[:3] - rec_loc_assist) < max_dist \ + # and np.abs(state[-1]) < max_time: + # plausible_solution = True + # break + + # if iter_idx == no_iterations-1: + # Plausibility check + if max_dist is not None: + dist_ok = np.linalg.norm(state[:3] - rec_loc_assist) < max_dist + else: + dist_ok = True + if max_time is not None: + time_ok = np.abs(state[-1]) < max_time + else: + time_ok = True + if inlier_threshold is not None: + residuals_ok = np.all(np.abs(delta_z_chosen) < inlier_threshold) + else: + residuals_ok = True + if min_inliers is not None: + n_inliers_ok = np.where( + np.abs(delta_z) < inlier_threshold + )[0].shape[0] >= min_inliers + else: + n_inliers_ok = True + if residuals_ok and dist_ok and time_ok and n_inliers_ok: + plausible_solution = True + + if not plausible_solution: + if max_combo_probability < 1.0: + # Update inlier probabilities + for sat_idx in np.arange(numSVs): + if np.in1d(sat_idx, chosen_sats): + inlier_probability_updated[sat_idx] \ + = (inlier_probability_updated[sat_idx] + - max_combo_probability) \ + / (1.0-max_combo_probability) + + ransac_iteration_idx += 1 + # else: + # Do one more iteration with all inlier sats + # chosen_sats = np.where(np.abs(delta_z) < inlier_threshold)[0] + # if chosen_sats.shape[0] > max_sat + # no_iterations += 1 + # max_sat = chosen_sats.shape[0] + # iter_idx += 1 + + # if potential_solution and not plausible_solution: + # print("Found only solution with 5 sats.") + # print("Sats used for minimum solution: {}".format(sats_potential)) + + # if hard_constraint: + # # Convert ENU to ECEF XYZ coordinates + # [pos_x, pos_y, pos_z] = pm.enu2ecef(state_potential[0], + # state_potential[1], 0.0, + # initPosGeo[0], initPosGeo[1], + # initPosGeo[2]) + # state_potential = np.concatenate((np.array([pos_x, pos_y, pos_z]), + # state_potential[2:])) + + # if hdop: + # try: + # Q = np.linalg.inv(H_potential.T @ H_potential) + # dilution_east_squared = Q[0, 0] + # dilution_north_squared = Q[1, 1] + # hdop = np.sqrt(dilution_east_squared + dilution_north_squared) + # return state_potential, delta_z_potential, sats_potential, hdop + # except: + # print("Cannot calculate HDOP.") + # return state_potential, delta_z_potential, sats_potential, np.nan + # return state_potential, delta_z_potential, sats_potential + + # elif plausible_solution: + if plausible_solution: + + # print("Sats used for minimum solution: {}".format(chosen_sats)) + # print("Residuals: {}".format(np.abs(delta_z_chosen))) + + # Might have to create full delta_z and full H here + chosen_sats = np.where(np.abs(delta_z) < inlier_threshold)[0] + + # print("Plausible sats: {}".format(chosen_sats)) + # print("Residuals: {}".format(np.abs(delta_z[chosen_sats]))) + + # RANSAC + delta_z_chosen = delta_z[chosen_sats] + H_chosen = H[chosen_sats] + + # Check if height measurement is provided + if observed_height is not None and not hard_constraint: + # Add Jacobian of height observation + H_chosen = np.vstack((H_chosen, jh.jacobian_height(state))) + # Predict height based on current state + predicted_height = pm.ecef2geodetic(state[0], state[1], state[2] + )[2] + # Add height measurement + delta_z_chosen = np.append(delta_z_chosen, observed_height - predicted_height) + + if weights is not None: + H_chosen = H_chosen * np.sqrt(weights[chosen_sats, np.newaxis]) + delta_z_chosen = delta_z_chosen * np.sqrt(weights[chosen_sats]) + + x = np.linalg.lstsq(H_chosen, delta_z_chosen, rcond=None)[0] + # print("Refinement: {}".format(x[:3])) + # if np.all(x[:3]) < 200: + state = prev_state + x + # else: + # print("Could not refine solution. " + # + "Return estimate using 5 satellites.") + + if hard_constraint: + # Convert ENU to ECEF XYZ coordinates + [pos_x, pos_y, pos_z] = pm.enu2ecef(state[0], state[1], 0.0, + initPosGeo[0], initPosGeo[1], + initPosGeo[2]) + state = np.concatenate((np.array([pos_x, pos_y, pos_z]), state[2:])) + + if hdop: + try: + Q = np.linalg.inv(H.T @ H) + dilution_east_squared = Q[0, 0] + dilution_north_squared = Q[1, 1] + hdop = np.sqrt(dilution_east_squared + dilution_north_squared) + return state, delta_z[svInxListByDistance], sats[chosen_sats], hdop + except: + print("Cannot calculate HDOP.") + return state, delta_z[svInxListByDistance], sats[chosen_sats], np.nan + + return state, delta_z[svInxListByDistance], sats[chosen_sats] + + else: + # Could not find plausible solution + # print("Could not find plausible solution.") + if hdop: + return np.full(state.shape[0], np.inf), delta_z[svInxListByDistance], np.array([]), np.nan + return np.full(state.shape[0], np.inf), delta_z[svInxListByDistance], np.array([]) + + +def coarse_time_nav_ransac_simplified(obs, sats, Eph, + TOW_assist_ms, rec_loc_assist, + observed_height=None, + code_period_ms=1, + inlier_probability=None, + min_ransac_iterations=1, + max_ransac_iterations=3, + inlier_threshold=200, + min_inliers=None, + max_dist=15.0e3, max_time=30.0, + min_combo_probability=0.0, + max_combo_size=6, + hdop=False, no_iterations=3): + """Compute receiver position using coarse-time navigation and RANSAC. + + Compute receiver position from fractional pseudoranges using coarse-time + navigation and non-linear least-squares optimisation. + The initial position should be within 100-150 km of the true position and + the initial coarse time within about 1 min of the true time. + Works for multiple GNSS, too, e.g., GPS and Galileo. If using more than + one, then concatenate navigation data (ephemerides) and make sure that + satellite indices are unique. E.g., use 1-32 for GPS and 201-250 for + Galileo. + + Use RANSAC-inspired algorithm for outlier detection. + + Inputs: + obs - Observations, the fractional pseudo-ranges (sub-millisecond). + sats - SV numbers associated with each observation. + Eph - Table of ephemerides, each column associated with a satellite. + TOW_assist_ms - Coarse time of week [ms], single value or array for + different GNSS times with one value for each satellite. + rec_loc_assist - Initial receiver position in ECEF XYZ coordinates. + observed_height - Height observation [m], default=None + code_period_ms - Length of code [ms], either a single value for all + satellites or a numpy array with as many elements as + satellites [default=1] + inlier_probability - default=None + min_ransac_iterations - Minimum number of combos tested per certain + combo size, default=1 + max_ransac_iterations - Maximum number of combos tested per certain + combo size, default=3 + inlier_threshold - Upper limit for residuals of satellites to be + plausible / to be inliers [m], default=200 + min_inliers - Minimum number of inliers for plausible solution, + default=None + max_dist - Maximum spatial distance between 2 consecutive fixes to be + plausible [m], default=15.0e3 + max_time - Maximum temporal distance between 2 consecutive fixes to be + plausible [s], i.e., the change of the coarse-time error, + default=30.0 + min_combo_probability - Minimum a-priori reliability probability of + combo to be tested, default=0.0 + max_combo_size - Maximum number of satellites in subset initially used + by RANSAC, default=6 + hdop - Flag if horizontal dilution of precision is returned as 3rd + output, default=False + no_iterations - Number of non-linear least-squares iterations, + default=3 + + Outputs: + state - ECEF XYZ position [m,m,m], common bias [m], coarse-time error + [m]; np.NaN if optimization failed + delta_z - Residuals (of pseudoranges) [m] + hdop - (Only if hdop=True) Horizontal dilution of precision + + Author: Jonas Beuchert + """ + from satellite_combos import get_combos + + def assign_integers(sats, svInxListByDistance, obs, Eph, approx_distances, + code_period_ms=1): + """Assign Ns according to van Diggelen's algorithm. + + Author: Jonas Beuchert + """ + light_ms = 299792458.0 * 0.001 + N = np.zeros(sats.shape) + approx_distances = approx_distances / light_ms # Distances in millisec + # Distances from ms to code periods + approx_distances = approx_distances / code_period_ms + + # To integer + N[0] = np.floor(approx_distances[0]) + + delta_t = Eph[18, :] * 1000.0 # From sec to millisec + # Time errors from ms to code periods + delta_t = delta_t / code_period_ms + + # Observed code phases from ms to code periods + obs = obs / code_period_ms + + N[1:] = np.round(N[0] + obs[0] - obs[1:] + + (approx_distances[1:] - delta_t[1:]) - + (approx_distances[0] - delta_t[0])) + + # Floored distances from code periods to ms + N = N * code_period_ms + + return N + + def tx_RAW2tx_GPS(tx_RAW, Eph): + """Refactoring. + + Author: Jonas Beuchert + """ + t0c = Eph[20] + dt = ep.check_t_vectorized(tx_RAW - t0c) + tcorr = (Eph[1] * dt + Eph[19]) * dt + Eph[18] + tx_GPS = tx_RAW - tcorr + dt = ep.check_t_vectorized(tx_GPS - t0c) + tcorr = (Eph[1] * dt + Eph[19]) * dt + Eph[18] + tx_GPS = tx_RAW - tcorr + return tx_GPS, tcorr + + def e_r_corr(traveltime, sat_pos, n_sats): + """Rotate satellite by earth rotation during signal travel time. + + Author: Jonas Beuchert + """ + Omegae_dot = 7.292115147e-5 # rad/sec + + omegatau = Omegae_dot * traveltime + # Vector of rotation matrices + R3 = np.transpose(np.array([ + np.array([np.cos(omegatau), np.sin(omegatau), np.zeros(n_sats)]), + np.array([-np.sin(omegatau), np.cos(omegatau), np.zeros(n_sats)]), + np.array([np.zeros(n_sats), np.zeros(n_sats), np.ones(n_sats)])]), + axes=(2, 0, 1)) + # Turn satellite positions into vector of column vectors + sat_pos = np.array([sat_pos]).transpose(1, 2, 0) + return np.matmul(R3, sat_pos).reshape(n_sats, 3) + + v_light = 299792458.0 # Speed of light + numSVs = obs.shape[0] # Number of satellites + + TOW_assist = TOW_assist_ms * 1e-3 # Milliseonds -> seconds + if not isinstance(TOW_assist, np.ndarray) or TOW_assist.shape == (): + # Make sure that times are array + TOW_assist = TOW_assist * np.ones(sats.shape) + + # Check if correct navigation data columns have been identified already + if Eph.shape[1] != sats.shape[0] or np.any(Eph[0] != sats): + # Identify ephemerides columns in Eph + col_Eph = np.array([ep.find_eph(Eph, sats[k], TOW_assist[k]) + for k in range(numSVs)]) + Eph = Eph[:, col_Eph] # Sort according to sats argument + + # If one common bias shall be used for all systems, then all code phases + # must have same range + if isinstance(code_period_ms, np.ndarray): + # Greatest common divider of code periods + code_period_ms = np2.gcd.reduce(code_period_ms.astype(int)) + obs = np.mod(obs, code_period_ms) + + # Number of common-bias optimisation variables + # Same code period for all systems, do not use inter-system bias + n_bias_opt = 1 + + T_tilde = TOW_assist + + # Find satellite positions at T_tilde + tx_GPS = TOW_assist - ep.get_sat_clk_corr_vectorized(TOW_assist, sats, Eph) + satPos_at_T_tilde = ep.get_sat_pos(tx_GPS, Eph) + + # Find rough distances + approx_distances = np.sqrt(np.sum( + (rec_loc_assist - satPos_at_T_tilde)**2, axis=-1)) + + # Oder satellites in given order + sat_idx = np.arange(numSVs) + + # Stop RANSAC when plausible solution is found + plausible_solution = False + # Start trying subsets of 6 satellites + max_sat = max_combo_size+1 + while not plausible_solution and max_sat > 1: + max_sat -= 1 # Reduce size of considered satellite subset + # Get all possible satellite combinations with max_sat satellites + sat_combinations = get_combos(numSVs, max_sat) + + max_combo_probability = 1.0 + inlier_probability_updated = inlier_probability + ransac_iteration_idx = 0 + while (not plausible_solution + and ransac_iteration_idx < max_ransac_iterations + and (max_combo_probability >= min_combo_probability + or ransac_iteration_idx < min_ransac_iterations) + and sat_combinations.shape[0] > 0): + + # Calculate probability for each set to contain only inliers + inlier_probability_combo = np.prod( + inlier_probability_updated[sat_combinations], axis=-1) + # Pick combo with highest probabiliy that has not been picked yet + # Sort probabilities across all combos + max_combo_probability_idx = np.argmax(inlier_probability_combo) + chosen_sats = sat_combinations[max_combo_probability_idx] + max_combo_probability = inlier_probability_combo[max_combo_probability_idx] + if (max_combo_probability >= min_combo_probability + or ransac_iteration_idx < min_ransac_iterations): + + # Delete chosen combo + sat_combinations = np.delete(sat_combinations, + max_combo_probability_idx, + axis=0) + + # Bring 1st satellite of combo to the front + sat_idx = np.concatenate(( + np.array([chosen_sats[0]]), + np.arange(0, chosen_sats[0]), + np.arange(chosen_sats[0]+1, numSVs) + )) + + # Assign N numbers: + Ns = assign_integers(sats, sat_idx, obs, Eph, + approx_distances, code_period_ms) + + Ks = Ns - Ns[0] + + fullPRs = Ns + obs # Full pseudoranges reconstruction in ms + fullPRs = fullPRs * (v_light * 1e-3) # In meters + + # Preliminary guess for receiver position, common bias, and + # assistance error [x y z b et] + state = np.concatenate((rec_loc_assist, np.zeros(n_bias_opt+1))) + + for iteration_idx in np.arange(no_iterations): + + # Coarse-time error + Et = state[-1] # In seconds + + # Common bias [m] + b = state[-1-n_bias_opt] + + if iteration_idx == no_iterations-1: + # Last iteration -> all satellites + Eph_it = Eph + T_tilde_it = T_tilde + Ks_it = Ks + fullPRs_it = fullPRs + else: + # Other iteration -> selected satellites only + Eph_it = Eph[:, chosen_sats] + T_tilde_it = T_tilde[chosen_sats] + Ks_it = Ks[chosen_sats] + fullPRs_it = fullPRs[chosen_sats] + + tx_GPS, tcorr = tx_RAW2tx_GPS(T_tilde_it - Et - Ks_it * 1e-3, + Eph_it) + sat_pos, sat_vel = ep.get_sat_pos_vel(tx_GPS, Eph_it) + + if iteration_idx == 0: + traveltime = 0.072 + rot_sat_pos = sat_pos + else: + posECEF = state[:3] + rho2 = (sat_pos[:, 0] - posECEF[0])**2 \ + + (sat_pos[:, 1] - posECEF[1])**2 \ + + (sat_pos[:, 2] - posECEF[2])**2 # Distance squared + traveltime = np.sqrt(rho2) / v_light + rot_sat_pos = e_r_corr(traveltime, sat_pos, sat_pos.shape[0]) + + # Subtraction of state[3] corrects for receiver clock offset and + # v_light*tcorr is the satellite clock offset + predictedPR = np.linalg.norm(rot_sat_pos - state[:3], axis=-1) \ + + b - tcorr * v_light # meters + delta_z = fullPRs_it - predictedPR # Meters + # Receiver-satellite vector + e_k = (rot_sat_pos + - np.tile(np.array([Et + Ks_it * 1e-3]).T, (1, 3)) * sat_vel + - state[:3]) + # Normalize receiver-satellite vector + e_k = e_k / np.array([np.linalg.norm(e_k, axis=-1)]).T + + # Relative satellite velocity along this vector, i.e., + # project satellite velocity on normalized receiver-satellite vector + v_k = np.sum(-sat_vel * e_k, axis=1, keepdims=True) + + # Now build Jacobian matrix H according to: + # -e_k 1 v_k + # Notice that it is easier to plug in the location of the satellite + # at its T_dot estimation, i.e., rot_sat_pos + # Matrix for 5 optimisation variables + H = np.hstack((-e_k, np.ones((sat_pos.shape[0], 1)), v_k)) + + if iteration_idx == no_iterations-1: + # Last iteration + # RANSAC: Select only max_sat satellites + delta_z_chosen = delta_z[chosen_sats] + H_chosen = H[chosen_sats] + else: + delta_z_chosen = delta_z + H_chosen = H + + # Check if height measurement is provided + if observed_height is not None: + # Add Jacobian of height observation + H_chosen = np.vstack((H_chosen, jh.jacobian_height(state))) + # Predict height based on current state + predicted_height = pm.ecef2geodetic(state[0], state[1], state[2] + )[2] + # Add height measurement + delta_z_chosen = np.append(delta_z_chosen, observed_height - predicted_height) + + x = np.linalg.lstsq(H_chosen, delta_z_chosen, rcond=None)[0] + prev_state = state + state = state + x + + # Plausibility check + if max_dist is not None: + dist_ok = np.linalg.norm(state[:3] - rec_loc_assist) < max_dist + else: + dist_ok = True + if max_time is not None: + time_ok = np.abs(state[-1]) < max_time + else: + time_ok = True + if inlier_threshold is not None: + residuals_ok = np.all(np.abs(delta_z_chosen) < inlier_threshold) + else: + residuals_ok = True + if min_inliers is not None: + n_inliers_ok = np.where( + np.abs(delta_z) < inlier_threshold + )[0].shape[0] >= min_inliers + else: + n_inliers_ok = True + if residuals_ok and dist_ok and time_ok and n_inliers_ok: + plausible_solution = True + + if not plausible_solution: + if max_combo_probability < 1.0: + # Update inlier probabilities + for sat_idx in np.arange(numSVs): + if np.in1d(sat_idx, chosen_sats): + inlier_probability_updated[sat_idx] \ + = (inlier_probability_updated[sat_idx] + - max_combo_probability) \ + / (1.0-max_combo_probability) + + ransac_iteration_idx += 1 + + if plausible_solution: + + # Find inliers + chosen_sats = np.where(np.abs(delta_z) < inlier_threshold)[0] + + # Select inliers (RANSAC) + delta_z_chosen = delta_z[chosen_sats] + H_chosen = H[chosen_sats] + + # Check if height measurement is provided + if observed_height is not None: + # Add Jacobian of height observation + H_chosen = np.vstack((H_chosen, jh.jacobian_height(prev_state))) + # Predict height based on current state + predicted_height = pm.ecef2geodetic(state[0], state[1], state[2] + )[2] + # Add height measurement + delta_z_chosen = np.append(delta_z_chosen, observed_height - predicted_height) + + # Update state based on all inliersprev_ + x = np.linalg.lstsq(H_chosen, delta_z_chosen, rcond=None)[0] + state = state + x + + if hdop: + try: + Q = np.linalg.inv(H.T @ H) + dilution_east_squared = Q[0, 0] + dilution_north_squared = Q[1, 1] + hdop = np.sqrt(dilution_east_squared + dilution_north_squared) + return state, delta_z, hdop + except: + print("Cannot calculate HDOP.") + return state, delta_z, np.nan + + return state, delta_z + + else: + # Could not find plausible solution + if hdop: + return np.full(state.shape[0], np.inf), delta_z, np.nan + return np.full(state.shape[0], np.inf), delta_z + + +state = {"n_failed": 0, + "latitude": np.inf, + "longitude": np.inf, + "height": np.inf, + "time_error": 0.0} + + +def positioning_simplified(snapshot_idx_dict, + prn_dict, + code_phase_dict, + snr_dict, + eph_dict, + utc, + latitude_init, longitude_init, height_init, + observed_heights=None, + pressures=None, temperatures=15.0, + ls_mode='ransac', mle=False, max_sat_count=10, + max_dist=50.0e3, max_time=30.0, + time_error=0.0, + search_space_time=2.0, + n_failed=0): + """Positioning for snapper with non-linear least-squares or MLE. + + Inputs: + snapshot_idx_dict - Dictionary from acquisition_simplified + prn_dict - Dictionary from acquisition_simplified + code_phase_dict - Dictionary from acquisition_simplified + snr_dict - Dictionary from acquisition_simplified + eph_dict - Dictionary from acquisition_simplified + utc - Timestamps in UTC, one value for each snapshot, 1D NumPy array + with elements of type numpy.datetime64 + latitude_init - Initial latitude for 1st snapshot [°] + longitude_init - Initial longitude for 1st snapshot [°] + height_init - Initial height w.r.t. WGS84 for 1st snapshot [m] + observed_heights - Measured heights w.r.t. WGS84 [m] , one value for + each snapshot, 1D NumPy array, default=None + pressures - Measured pressureses [Pa], one value for each snapshot, 1D + NumPy array, default=None + temperatures - Measured temperatures [°C], either one value for each + snapshot, 1D NumPy array, or a single value, + default=15.0 + ls_mode - Non-linear least-squares method: + 'single' - Single non-linear least-sqaures run, + 'snr' - Linear iterative satellite selection, + 'combinatorial' - Combinatorial satellite selection, + 'ransac' - RANSAC for satellite selection, + None - No non-linear least-squares, + default='ransac' + mle - Enable maximum-likelihood estimation (MLE); if ls_mode=None and + mle=True, then MLE is used for positioning; if ls_mode is a + valid string and mle=True, then MLE is only used for positioning + if least-squares cannot find a plausible solution, default=False + max_sat_count - Maximum number of satellites to use for LS-single, LS- + snr, LS-combinatorial, and LS-ransac default=10 + max_dist - Maximum spatial distance between 2 consecutive fixes to be + plausible [m], default=50.0e3 + max_time - Maximum temporal distance between 2 consecutive fixes to be + plausible [s], i.e., the change of the coarse-time error, + default=30.0 + time_error - Coarse-time error of 1st snapshot [s], default=0.0 + n_failed - Number of position fixes that failed before 1st snapshot, + default=0 + + Outputs: + latitude_vec - Latitude estimate for each snapshot [°] or numpy.nan, 1D + NumPy array + longitude_vec - Longitude estimate for each snapshot [°] or numpy.nan, + 1D NumPy array + utc_vec - Corrected timestamps in UTC for each snapshot 1D NumPy array + with elements of type numpy.datetime64 + uncertainty_vec - Horizontal uncertainty estimate for each snapshot [m] + or np.inf, 1D NumPy array + + Author: Jonas Beuchert + """ + from itertools import combinations + global state + + if ls_mode is not None and ls_mode != "single" and ls_mode != "snr" \ + and ls_mode != "combinatorial" and ls_mode != "ransac": + raise Exception( + """Least-squares method ls_mode='{}' not recognized. Use None, + 'single', 'snr', 'combinatorial', or 'ransac'.""".format(ls_mode) + ) + if ls_mode is None and not mle: + raise Exception( + """ls_mode=None and mle=False. Please select either a valid value + for ls_mode that is not None or set mle=True.""" + ) + if pressures is not None and temperatures is None: + raise Warning( + """Pressures provided, but no temperature(s). + Will not use pressures for height estimation.""" + ) + # if type(snapshot_idx_dict) != dict or type(prn_dict) != dict \ + # or type(code_phase_dict) != dict or type(snr_dict) != dict \ + # or type(tow_vec) != dict or type(eph_dict) != dict: + + # Check which GNSS are present + gnss_list = snapshot_idx_dict.keys() + + # How many snapshots? + n_snapshots = utc.shape[0] + + # Convert UTC to GPS time + reference_date = np.datetime64('1980-01-06') # GPS reference date + leap_seconds = np.timedelta64(18, 's') # Hardcoded 18 leap seconds + time = (utc - reference_date + leap_seconds) / np.timedelta64(1, 's') + + # Convert GPS time to BeiDou time + time = {gnss: time - 820108814.0 if gnss == 'C' else time + for gnss in gnss_list} + + # Absolute system time to time of week (TOW) + tow_dict = {gnss: np.mod(time[gnss], 7 * 24 * 60 * 60) + for gnss in gnss_list} + + # Initialize outputs + latitude_vec = np.full(n_snapshots, np.nan) + longitude_vec = np.full(n_snapshots, np.nan) + time_error_vec = np.zeros(n_snapshots) + uncertainty_vec = np.full(n_snapshots, np.inf) + + # Index of last successful fix + last_good_idx = None + + # Convert geodetic coordinates to Cartesian ECEF XYZ coordinates + pos_init = np.array(pm.geodetic2ecef( + latitude_init, longitude_init, height_init + )) + + # Algorithm specific initializations + if ls_mode is not None: + # Coarse-time navigation using least-squares + + # Load Bayes classifier to rate satellite reliability based on SNR + classifier = np.load("bayes_snapper.npy", allow_pickle=True).item() + + # Estimate (log) probability that satellite is useful based on SNR + reliability_vec = {gnss: classifier[gnss].predict_log_proba( + snr_dict[gnss].reshape(-1, 1))[:, 1] for gnss in gnss_list} + + # Greatest common divider of code periods + if 'G' in gnss_list or 'S' in gnss_list: + code_period_ms = 1 + elif 'E' in gnss_list and 'C' in gnss_list: + code_period_ms = 2 + elif 'E' in gnss_list: + code_period_ms = 4 + else: # 'C' + code_period_ms = 10 + + if pressures is not None and temperatures is not None: + # Make sure that measurements are reasonable + pressures = np.clip(pressures, 87000.0, 108400.0) + temperatures = np.clip(temperatures, -89.2, 56.7) + # Height change w.r.t. last measurement from temp. & pressure + height_change = ep.get_relative_height_from_pressure( + measured_pressure=pressures[1:], + reference_pressure=pressures[:-1], + hypsometric=True, + temperature=(temperatures[1:] if type(temperatures)==np.ndarray else temperatures)+273.15 + ) + + # Loop over all snapshots + for snapshot_idx in np.arange(n_snapshots): + + if pressures is not None and temperatures is not None \ + and last_good_idx is not None: + # Height change w.r.t. last measurement from temp. & pressure + pos_init = np.array(pm.enu2ecef( + 0.0, 0.0, np.sum(height_change[last_good_idx:snapshot_idx]), + latitude_init, longitude_init, height_init + )) + + # Merge individual GNSS for each snapshot + tow = np.concatenate([ + tow_dict[gnss][snapshot_idx]*np.ones( + np.where(snapshot_idx_dict[gnss] == snapshot_idx)[0].shape[0] + ) + for gnss in gnss_list + ]) + eph = np.concatenate([ + eph_dict[gnss][:, snapshot_idx_dict[gnss] == snapshot_idx] + for gnss in gnss_list + ], axis=1) + prn = np.concatenate([ + prn_dict[gnss][snapshot_idx_dict[gnss] == snapshot_idx] + for gnss in gnss_list + ]) + + # Iterate until plausible solution is found + plausible_solution = False + + if ls_mode is not None: + # Coarse-time navigation using least-squares + + # Merge individual GNSS for each snapshot + code_phases = np.concatenate([ + code_phase_dict[gnss][snapshot_idx_dict[gnss] == snapshot_idx] + for gnss in gnss_list + ]) + reliability = np.concatenate([ + reliability_vec[gnss][snapshot_idx_dict[gnss] == snapshot_idx] + for gnss in gnss_list + ]) + + # Number of satellites that are potentially visible + n_sats = code_phases.shape[0] + # Sort satellites according to SNR-induced reliability likelihood + sorted_idx = np.argsort(reliability)[::-1] + + if ls_mode == 'single': + # Use only satellites with highest reliability + # Use exactly max_sat_count satellites, if possible + sat_combinations = [sorted_idx[:min(max_sat_count, n_sats)]] + elif ls_mode == 'snr': + # Use only satellites with highest reliability + # Use max_sat_count satellites or less + sat_combinations = [ + sorted_idx[:max_idx] + for max_idx in np.arange(min(max_sat_count, n_sats), 0, + step=-1) + ] + elif ls_mode == 'combinatorial': + # Use only satellites with highest reliability + # Use all combinations of those satellites + sat_combinations = [ + sorted_idx[list(idx)] + for max_idx in np.arange(min(max_sat_count, n_sats), 0, + step=-1) + for idx in list(combinations( + range(min(max_sat_count, n_sats)), max_idx)) + ] + elif ls_mode == 'ransac': + # Use all satellites + # Let RANSAC decide which ones are useful + # sat_combinations = [sorted_idx] + sat_combinations = [sorted_idx[:max_sat_count]] + + # Project all code phases onto the same range + code_phases_mod = np.mod(code_phases, code_period_ms) + + # Iterate until plausible solution is found + # or all combos are exhausted + sat_combinations = iter(sat_combinations) + iterator_empty = False + while not plausible_solution and not iterator_empty: + try: + # Get next unexamined combo + combo = next(sat_combinations) + # Coarse-time navigation + if ls_mode != 'ransac': + pos, res, hdop = coarse_time_nav_simplified( + code_phases_mod[combo], + prn[combo], + eph[:, combo], + (tow[combo] - time_error)*1e3, + pos_init, + observed_height=observed_heights[snapshot_idx] if observed_heights is not None else None, + code_period_ms=code_period_ms, hdop=True, + no_iterations=3) + else: + # pos, res, _, hdop = coarse_time_nav_ransac( + # code_phases_mod[combo], + # prn[combo], + # eph[:, combo], + # (tow[combo] - time_error)*1e3, + # pos_init, + # observed_height=observed_heights[snapshot_idx] if observed_heights is not None else None, + # code_period_ms=code_period_ms, + # tropo=None, + # inlier_probability=np.exp(reliability[combo]), + # min_ransac_iterations=1, + # max_ransac_iterations=3, + # min_combo_probability=0.0, + # inlier_threshold=200, + # min_inliers=None, + # hdop=True, + # max_dist=max_dist, max_time=max_time, + # no_iterations=3) + pos, res, hdop = coarse_time_nav_ransac_simplified( + code_phases_mod[combo], + prn[combo], + eph[:, combo], + (tow[combo] - time_error)*1e3, + pos_init, + observed_height=observed_heights[snapshot_idx] if observed_heights is not None else None, + code_period_ms=code_period_ms, + inlier_probability=np.exp(reliability[combo]), + min_ransac_iterations=1, + max_ransac_iterations=3, + min_combo_probability=0.0, + inlier_threshold=200, + min_inliers=None, + hdop=True, + no_iterations=3) + if np.isnan(hdop): + hdop = np.inf + # Check plausibility of solution by checking pseudorange + # residuals and distance to last plausible solution + if (ls_mode == 'ransac' or np.all(np.abs(res) < 200)) \ + and np.linalg.norm(pos[:3] - pos_init) < max_dist*(1+n_failed) \ + and np.abs(pos[-1]) < max_time*(1+n_failed): + plausible_solution = True + + except StopIteration: + # Exhausted all combos + iterator_empty = True + + if mle and (ls_mode is None or hdop * 20.0 > 200.0 or not plausible_solution): + # Coarse-time navigation by gradient-based pseudo-likelihood optimization + pos, useful = coarse_time_nav_mle( + init_pos=pos_init, + init_time=[ + time[gnss][snapshot_idx]-time_error + for gnss in gnss_list + ], + code_phase=[ + code_phase_dict[gnss][snapshot_idx_dict[gnss] == snapshot_idx] + for gnss in gnss_list + ], + vis=[ + prn_dict[gnss][snapshot_idx_dict[gnss] == snapshot_idx] + for gnss in gnss_list + ], + eph=[ + eph_dict[gnss][:, snapshot_idx_dict[gnss] == snapshot_idx] + for gnss in gnss_list + ], + peak_height=[ + snr_dict[gnss][snapshot_idx_dict[gnss] == snapshot_idx] + for gnss in gnss_list + ], + observed_height=observed_heights[snapshot_idx] if observed_heights is not None else np.nan, + code_period=np.array([ + {'G': 1e-3, 'S': 1e-3, 'E': 4e-3, 'C': 10e-3}[gnss] + for gnss in gnss_list + ]), + search_space_pos=np.array([20.0e3, 20.0e3, 0.2e3]), + search_space_time=search_space_time, + hard_constraint=False, + linear_pr_prediction=True, + trop=False, iono=False, + time_out=2, optim_opt=0, + std=2.0**np.arange(5, -7, -2) * 8.3333e-07 + ) + + # Calculate HDOP + # Get indices of useful PRNs + useful_idx = np.concatenate([ + np.in1d( + prn_dict[gnss][snapshot_idx_dict[gnss] == snapshot_idx], + useful[gnss_idx] + ) for gnss_idx, gnss in enumerate(gnss_list) + ]) + if np.any(useful_idx): + # Use only satellites that are considered useful by MLE to + # calculate HDOP + hdop = horizontal_dilution_of_precision( + prn[useful_idx], + eph[:, useful_idx], + tow[useful_idx], + pos[:3] + ) + if np.isnan(hdop): + hdop = np.inf + else: + hdop = np.inf + + # Check if uncertainty is small + if hdop * 20.0 <= 200.0: + plausible_solution = True + + # Check if plausible solution was found + if plausible_solution: + # Reset counter how many fixes failed in a row + n_failed = 0 + # Remember this one as last plausible fix + last_good_idx = snapshot_idx + # Extract position estimate and remeber it for next snapshot + pos_init = pos[:3] + # Convert Cartesian ECEF XYZ coordinates to geodetic ones + latitude_init, longitude_init, height_init \ + = pm.ecef2geodetic(pos[0], pos[1], pos[2]) + latitude_vec[snapshot_idx] = latitude_init + longitude_vec[snapshot_idx] = longitude_init + # Extract coarse-time error, remember it for next snapshot + time_error = pos[-1] + time_error_vec[snapshot_idx] = time_error + # Estimate uncertainty from measurement uncertainty and HDOP + uncertainty_vec[snapshot_idx] = 20.0 * hdop + else: + # One more consecutive fix failed + n_failed += 1 + # Convert Cartesian ECEF XYZ coordinates to geodetic ones + latitude_vec[snapshot_idx], longitude_vec[snapshot_idx], _ \ + = pm.ecef2geodetic(pos[0], pos[1], pos[2]) + # Estimate uncertainty from measurement uncertainty and HDOP + uncertainty_vec[snapshot_idx] = np.inf # 20.0 * hdop + + # Subtract coarse-time error from timestamps (millisecond precision) + utc_vec = utc - (1000*time_error_vec).astype('timedelta64[ms]') + + state = {"n_failed": n_failed, + "latitude": latitude_init, + "longitude": longitude_init, + "height": height_init, + "time_error": time_error} + + return latitude_vec, longitude_vec, utc_vec, uncertainty_vec diff --git a/code_db.dat b/code_db.dat new file mode 100644 index 0000000000000000000000000000000000000000..e6ebdfae6c28a5077f1caf21abeadff84655a4c5 GIT binary patch literal 56027444 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 z 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

*Ziti|LQM&<HgJ!dcLdo)BLr+^p&fB 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