A practical GNSS post-processing tool for Python 说明书Python
A practical GNSS post-processing tool for Python 说明书Python
The content of this thesis is focused on the implementation of an open source, easy
to use program created using Python. The program is called Gdoper, which stands
for ”the do-er of GDOP”. The program computes the Geometric Dilution Of Preci-
sion (GDOP) given the positioning data processed by a Global Navigation Satellite
System (GNSS) receiver. In other words, the program reads a file containing posi-
tioning data and with minimal configuration — if any— samples and computes the
GDOP of the positions given by the data.
The originality of this thesis has been checked using the Turnitin Originality Check
service.
Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Background theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Geodesy, the shape of Earth . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Coordinate systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Orbital mechanics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 Global Positioning System . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.1 GPS Navigation message . . . . . . . . . . . . . . . . . . . . . . 10
2.4.2 Receiver Independent Exchange format, RINEX . . . . . . . . . 11
3 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1 Calculation of satellite position . . . . . . . . . . . . . . . . . . . . . 12
3.2 Calculation of receiver FOV . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Calculation of GDOP . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Program implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1 General overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Gdoper modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3 Scope and limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5 Example results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1 Analysis of individual flights . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Analysis of a set of flights . . . . . . . . . . . . . . . . . . . . . . . . 26
6 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
APPENDIX A.
RINEX format for GPS data record . . . . . . . . . . . . . . . . . . . . . . 31
APPENDIX B.
Algorithms for determining GPS SV position . . . . . . . . . . . . . . . . . 32
List of Figures
List of Tables
NAV Navigation
SV Satellite Vehicle
e Eccentricity
ψ Geocentric latitude
ϕ Geodetic latitude
ma Mask angle
mv Mask vector
i Inclination of an orbit
v True anomaly
Ω RAAN
M0 Mean anomaly
1 Introduction
Global Navigation Satellite Systems (GNSS) provide positioning services that are
essential to modern everyday applications. One of the most commonly known use
cases of GNSS is its use in mobile phones by map applications, which determine the
user’s position without any input other than opening the application. The position-
ing services provided by GNSS do not limit themselves to consumer applications,
rather, many of them are also key components for the commercial and industrial
sector [1].
Indicators of the positioning quality are usually available to the receiver for
processing in real time. The entire process of receiving a signal, decoding it, and
computing the receiver position is usually done in a closed system. The closed sys-
tem output can simply be: a position estimate, an error margin, plus possibly some
extra information like the number of visible satellites at the time of computation.
To better analyze the positioning quality indicators, post-processing is needed, such
that the information gathered in the closed system can be recreated and accessed.
This thesis describes the implementation of a post-processing program that can
recreate the lost information given only a few data points output from the closed
system of the receiver.
2
The post-processing program is called Gdoper. The name comes from ”the do-
er of GDOP” (Geometrical Dilution Of Precision), where GDOP is a positioning
quality indicator calculated from the distribution and relative positions of GNSS
satellites in the sky. To obtain the GDOP value for an estimated receiver position,
the positions of the satellites visible by the receiver must be known. The latter can
be computed theoretically, or extrapolated from the number of visible satellites as
output by the receiver, along with the time of the initial position calculation and
publicly available satellite positioning data in RINEX (Receiver Independent Ex-
change Format) v2.11 from trusted online repositories. Gdoper does all the above
mentioned tasks and outputs the GDOP values along with the values used to cal-
culate it, into a .csv formatted file from which further processing can be done.
• Analyzing the relation between amount of visible satellites and GDOP values
1
The drone-based data was obtained from drone surveys at Tampere University by other mem-
bers of the team
3
2 Background theory
2.1 Geodesy, the shape of Earth
The classical definition of geodesy is: “science of the measurement and mapping
of the Earth’s surface” [2]. Geodesy can be thought of having three main areas
of study: global geodesy, national geodetic surveys, and plane surveying. Global
geodesy is the area of interest for this thesis, as it concerns the geometrical shape
of the Earth and its external gravity field. National geodetic surveys concern the
determination of the surface geometry and the gravity field of a country, and plane
surveying is done at much smaller scales usually with reference to a local horizontal
plane [2].
A more convenient and universally used model of the Earth, is the mathematical
model of Earth represented as an ellipsoid (also called a spheroid). A sphere is a
relatively accurate representation of the Earth near the equator, however, closer to
the poles, the position on the sphere’s surface starts to deviate significantly from the
real position. The ellipsoid is an ellipse of revolution. The above-mentioned ellipse
can be characterized by the following equation [3].
x2 y 2
+ 2 = 1,
a2 b
where x and y are the Cartesian coordinates of a point on the ellipse, and a and
b are, respectively, the semi-major and semi-minor axes. The following parameters
help determine the shape of an ellipse in a more concise manner.
√
c= a2 − b 2 ,
4
(a − b)
f= , (2.2)
a
and f is the flattening.
Flattening represents how much the ellipsoid differs from a circle. A value of
f closer to 1 represents a very oblate ellipse, while a low value describes an ellipse
that resembles the shape of a circle. The following illustration gives an example of
the effect of flattening:
In Table 2.2, ψ is the latitude and λ is the longitude, while r corresponds to the
radius of a sphere. The Earth, however, is not a sphere; therefore, it makes sense
that r is though of as the total distance to a point of the surface, where r = R + h.
Here, h is the altitude or deviation from the sphere (the difference between the
sphere’s radius and the surface of Earth), and R is the polar radius of the Earth [6].
6
The previous equivalencies from Table 2.2, are not commonly used for repre-
senting a position on Earth. This is because a vector in polar coordinates is not
perpendicular to the tangent at the surface, making the calculations that take into
account the general shape of Earth more difficult.
When the latitude is calculated from the origin, it is called a geocentric lati-
tude. When the latitude is calculated from a place on Earth level to the surface
(normal to the geoid), it is called a geographic (or astronomical) latitude. Finally,
when the latitude is calculated for example, by GPS; it is done in reference to the
ellipsoid representation of Earth, and it is called a geodetic latitude. The latter is
the one commonly referred to when the word latitude is used by itself without a
qualifier (such as geocentric or geographic) and hence it is the one commonly used
for navigation.
Plumb line
Perp. to Sphere
Perp. to Ellipsoid
Surface
Geoi
d
Ellipso
id
Satellite
position Perigee
Orbital plane v
Ecuatorial plane
ω
Earth
Y
Ω i
Ascending
X
2a Node
Apogee
Description Symbol
Semi-major axis a
Inclination of orbit i
Argument of the perigee ω
True anomaly v
Right Angle of the Ascending Node (RAAN) Ω
In the GPS ephemeris1 , the orbital parameters are delivered in a way that they
have to be computed by the receiver, in other words, the data is not delivered
in terms of conventional Keplerian elements but rather as data from which these
elements can be extrapolated. The orbital parameters delivered by GPS ephemeris
are presented in the following Table 2.4 [8]:
Description Symbol
Mean anomaly M0
Mean motion difference from computed value ∆n
Eccentricity e
√
Square root of the semi-major axis A
RAAN at weekly epoch Ω0
Inclination angle at reference time i0
Argument of perigee ω
Rate of right ascension Ω̇
Rate of inclination angle IDOT
Harmonic corrections Cuc , Cus , Crc , Crs , Cic , Cis
Reference time ephemeris toe
Issue of data (Ephemeris) IODE
1
An ephemeris is simply the name of a container of the positions of space objects. Just like a
book may be the container of a story, an ephemeris is the container of positions of objects in space.
9
GPS is formed by a constellation of Satellite Vehicles (SV, plural SVs) that use
the GPS standard to broadcast coded signals to the ground. These signals contain
information of each SVs’ whereabouts, along with their orbital parameters, satellite
health, amongst other useful information. Receivers on the ground then decode the
signals, giving them the following relevant information: the position of SVs, and
the distance between the receiver and the SVs (also called the pseudorange). This
method of positioning - having reference positions, and the pseudoranges - is called
trilateration. By using this method, GPS receivers deliver an estimated position to
the user (or application) along with other relevant information, such as the number
of satellites used in the trilateration.
The nominal orbital altitude of GPS SVs is 26 559.7 km [9] from the Earth’s
center of mass. This means that signals have to travel over 20 000 km to reach the
receivers on the surface of Earth or on-board of drones. The main source of signal
degradation in the transmission path is the atmosphere, mainly the ionosphere. The
ionosphere extends from around 50 to 1000 km above the Earth’s surface [10] and
causes delays on the signals that vary significantly. However, thanks to advanced
monitoring of the ionosphere, it’s possible to somewhat correct for the aforemen-
tioned delays.
Corrections, however, cannot do anything for physical obstacles that block the
signal such as buildings, trees, or terrain. This is why for simulations or theoretical
models, the Field Of View (FOV) of the receiver is modelled in a way that it excludes
a certain angle - often called a mask angle - from the horizon upwards, such that
the visible area of the sky is reduced. Many authors use between +10º and +20º to
model blockage by obstacles, however, the GPS standard suggests a mask angle of at
least +5º from the horizon [8]. This is because at lower mask angles, signals travel a
much longer path through the ionosphere than at higher angles, hence, the predicted
2
Ranging is the calculation of the distance between the receiver and an SV.
10
range can have a large error that would not aid in the trilateration calculation.
The way GPS SVs provide information to the receivers about their position in space
is done through what is called a Navigation (NAV) message. The information con-
tained within this message can be legacy NAV (LNAV) data and/or civil NAV
(CNAV) data depending on the SV version. The NAV message contains all the
necessary information for estimating the position of SV in space. For example, it
contains Keplerian-like elements that describe the orbit of the SV along with time
related parameters, as well as information about the SVs health, among other things.
The Keplerian-like elements previously mentioned are stored into an ephemeris that
is broadcast by the SV every 30 seconds (the duration of a NAV frame).
... ...
...
Every subframe will first transmit a telemetry (TLM) word, then a handover
word (HOW), followed by 8 data words. The type of data contained in subframes
1, 2, and 3 relates to data about the individual SV which transmits them and is
in the same format through all 25 frames of the message, while subframes 4 and 5
contain data relevant to the whole GPS constellation and other SV positions, which
is distributed along all 25 frames of the full message. [8]
11
A compact and helpful way to store the data related to GNSS is using the RINEX
format. Having a standard like RINEX standard allows the positioning data to be
much more widely compatible with software than would otherwise be. This means
that file readers can be faster and more efficient while maintaining compatibility
with many different sources of data. There are several different types of data the
RINEX format supports, however, for the focus of this thesis, only the RINEX NAV
format will be explained.
RINEX NAV files consist of two major parts: the header and the data record.
The former containing information related to the production of the file, ionospheric
conditions, and other relevant data in the form of comments; while the latter, con-
tains the ephemeris in a format specified for each GNSS (such as GPS, Galileo,
GLONASS, or others). The data records supports different GNSS systems depend-
ing on the RINEX format version.
An example of a RINEX 2.11 data record can be seen in Figure 2.5. The format
definition of this example can be seen in Appendix A [11].
3 Methods
This section describes the methodology adopted in building the simulator: first,
the calculation of the satellite positions based on drone data is explained; next, the
concept of Field of View (FOV) operation is presented, and finally, the concept of
the Geometric Dilution of Precision (GDOP) is described.
By following the ISP-GPS-200L [8] specification its possible to calculate the position
of an SV given a NAV message ephemeris. Because the parameters in the ephemeris
are determined from a curve fit, the resulting calculated position will be an ap-
proximation of the actual position of the SV, hence, it will have a certain degree of
error. This error and several others are accounted for in an index called the User
Range Accuracy (URA)1 index. The real URA varies during the curve fit interval,
and so, the URA index corresponds to the maximum URA expected over the whole
ephemeris curve fit interval.
Since several errors are accounted for in the URA, the position of an SV - as
indicated by itself — can be considered to be a reliable point of reference. To
compute the position of an SV, the GPS standard documentations provides the
required algorithm (See Appendix B). The general idea behind the algorithm is the
following:
1
URA is a statistical indicator of the GPS ranging accuracy for a specific signal of an SV. It is
a conservative root mean square estimate of the User Range Error (URE)
13
As briefly mentioned in section 2.4, the field of view (FOV) of an observer can be
theoretically modeled to gain insight of what an ideal or disturbance-free scenario
could look like. One way in which the FOV can be modeled is by calculating the
angle α (see Figure 3.1) between the observer’s position and an SV’s position — in
the frame of reference of Earth — and finding the value for this angle, in which the
SV is no longer in view. To determine the aforementioned angle, it can be helpful
to imagine a vector that starts at the observer, goes through the atmosphere at the
angle of the mask angle ma , and reaches a point in the orbit of an SV where passing
it lets it into view, and being behind it leaves it out of view. This point will be called
the threshold point thp , and the vector between the observer and the threshold point
will be called the mask vector mv . The threshold point will be different for every
SV’s orbit, however, the angle between the observer and every threshold point is
constant if the horizon is considered to be a plane, tangent to the ellipsoid at the
observer’s position, and SVs are considered visible from the mask angle upwards in
the observer’s frame of reference.
Figure 3.1 Triangle formed between the observer, SV, and threshold point.
The angle between the observer and the threshold point can be represented
as a dot product between the position vectors of the observer and the threshold
point. The dot product operation is computationally efficient and when working
with medium to large amounts of data. Efficiency is a key aspect, hence, it is used
as the main calculation in this algorithm.
14
To compute the position of the threshold point, it helps to imagine the calcu-
lations in a plane (All positions and vectors used in the calculations correspond to
the 3-dimensional ECEF coordinate system explained in Section 2.2). The plane
is created between the user (observer) position vector u and the z-axis. In this
plane, a triangle (see Figure 3.1) is formed between the position of the user u,
the threshold point thp , and the center of mass of Earth (i.e. the origin O). The
following information is known: the magnitude of u (||u||), the distance between O
and thp as gpsh , and the angle between the mask vector mv and u, which is equal
to da = ma + 90.Before being able to calculate α, the angle (β) at thp needs to be
calculated as seen in Equation 3.1, by using The Law of Sines. With 2 out of the 3
angles known, α can be computed by the following simple equation: α = 180−β−da .
||u|| sin da
β = arcsin (3.1)
gpsh
With the threshold point known, the angle between each SV and the observer
will be compared to α to determine if said SV will be within the FOV of the receiver.
To make computations faster, the cosine of α is saved as a variable. This variable is
then compared to the dot product between the normalized positions of the observer
and each SV. The reasoning for using the cosine of α and not the value itself is due
to the formula of the dot product (see Equation 3.2)
u · thp
cos α = (3.2)
||u|| ||thp ||
One limitation of this method, is that the horizon is not the real visible horizon,
but rather an estimation of what it would be if the receiver was on the surface of the
ellipsoid. This means that, if a receiver is e.g. a drone, once the drone surpasses a
certain altitude, the model does not consider the FOV to reach the actual horizon,
(which would now be lower than the horizontal plane of the observer) and hence,
more SVs are considered to be out of view, compared to those which are in theory
detectable by the receiver.
Because of the way GPS works, the ranging errors from receiver to SVs occur from
all directions. The most common way to summarize this quality of the directional
ranging errors is by calculating the so-called Dilution Of Precision (DOP) of the
Geometry generated between the receiver and the SVs. This value is called GDOP.
A ”bad” geometry would yield high GDOP values and would come from a clustered
distribution of satellites in the sky. A ”good” geometry will yield low GDOP values
and this happens when the receiver is ”surrounded” by satellites [12].
15
In the process of calculating the GDOP value, other DOP categories can also be
considered. These are: the Vertical, Horizontal, and Time DOPs (VDOP, HDOP,
and TDOP respectively [10]). All these DOP values represent a value for the preci-
sion of their respective calculations. The lower this value is, the higher the accuracy.
ai − a
dai = √ , a = x, y, or z (3.3)
(x − xi ) + (y − yi )2 + (z − zi )2
2
dx1 dy1 dz1 1
dx2 dy2 dz2 1
J= .. .. ..
(3.4)
. . . 1
dxn dyn dzn 1
σx2 σxy σxz σxt
σ σyt
−1 xy σy2 σyz
Q = [ J T J] = (3.5)
σxz σyz σz2 σzt
σxt σyt σzt σt2
√
GDOP ≜ trace(Q) (3.6)
and
GDOP 2 = HDOP 2 + V DOP 2 + T DOP 2 (3.7)
where xi , yi , zi represents the ith satellite position and x, y, z describe the re-
ceiver’s position. Eq. 3.3 represent the direction component of an axis, while eq.
3.4 combines the direction components in each axis, such that each row represent
the direction vector of the SV position in what can be called the design matrix [14].
From the covariance matrix Q in eq. 3.5, the DOP values are visible in the diagonal.
As shown in eq. 3.8, The square GDOP can also be seen as the sum of squares of
the respective segments:
√ √ √
HDOP ≜ σx2 + σy2 , V DOP ≜ σy2 , and T DOP ≜ σt2 .
16
The previous calculation for GDOP holds true for a single GNSS constellation,
where time biases and reference frames are consistent for all satellites. To calculate
the GDOP for multiple constellations [15], the time differences between these con-
stellations has to be taken into account. The way this is done is by calculating the
weighted GDOP (WGDOP) where the time differences of the different constellations
are represented by a weight matrix W . The weight matrix W is a diagonal matrix
that can be expressed as
WN = diag(σ1 2 . . . σN 2 ) (3.8)
where σi 2 , i ∈ [1, N ] is a value that considers the many different errors in measure-
ments for each satellite [16]. To generate the covariance matrix Q, the design matrix
needs to be defined in the following way
where
HA 1 A 0 A 0 A ...
HB 0 B 1 B 0 B . . .
HN =
HC 0 C 0 C 1 C
∈ RN ×(M +3) (3.10)
. . .
.. .. .. .. ...
. . . .
such that the subcripts γ = A, B, C, . . . represent different constellations, and the
symbols 1γ and 0γ are the appropriately sized one and zero vectors respectively.
The size of Hγ corresponds to the amount of visible satellites Nγ in its constellation,
where N = NA +NB +NC +. . . is the total number of visible satellites. The direction
vector hi of each SV must now be positioned correctly in the design matrix so that
the satellites are grouped by constellation in the following manner,
h1 hNA +1 hNA +NB +1
h h h
2 N +2 N +N +2
HA = , HB = A , HC = A B , . . . (3.11)
... ... ...
h NA hNA +NB hNA +NB +NC
4 Program implementation
This section describes the implementation of Gdoper, an open source GPS post-
processing program written in Python. The initial idea for the implementation of
this program came from the need to analyze drone positioning data by estimating
its accuracy. To get an indicator of the accuracy of the data output by the drone,
the GDOP value for each position estimate of the drone can be calculated. The
program’s main objective is to perform this computation and acquire all the relevant
data needed to do so, hence its name, Gdoper; which stands for ”the do-er of GDOP”.
The Gdoper program is divided into sub-modules (see Section 4.2) that focus on
particular tasks in the GDOP calculation process. To calculate the GDOP, the po-
sition - and the time it was measured - of the receiver needs to be known. This
information is obtained by the reader_pos_data module from a user-specified file.
The time of measurement will allow the program to acquire the ephemeris data for
the GPS constellation, from where the orbits of the SVs can be extrapolated to the
instant in which the receiver’s position was measured. The previous is handled by
the reader_rinex module. Once the state of the constellation is known, the next
step is to filter out the satellites that were not visible by the receiver at that mo-
ment. This can be done in several different ways which in the program are called
Field Of View (FOV) models.
Once the satellites in view are acquired and the receiver positioning data is
available, the information can be used by Calc sub-classes to process the data. The
main goal of this program was to calculate the GDOP using this information, hence
18
the name. Other calculations can also be performed on the data by creating a
class to do so. An object of the Calc subclass can then be added to the processing
queue, such that multiple calculations can be performed on the same data set. All
the processed data along with the information used to make the calculations is
then output onto a .csv file in a specified directory with a specified name. By
default, the name of the processed data is the name of the input file, appended
with the _gdoper.csv suffix, and the output directory is the same as the input file’s
directory.
calc_manager
This is the base module and its function is to merge the functionality of all the
separate modules and provide a functional interface to the underlying processes. It
allows for the processing of a single file and keeps the data of its last processing
operation for potentially further streamlined processing.
reader_pos_data
This reader module has the purpose of reading .csv files and putting them into
python memory in a dict, where the column header names (CHN) are the keys,
and the values are the list of values in the column. This module is used to read the
user-specified file where the positioning data resides but can also be used to read
the results file and make plots.
reader_rinex
This reader takes as an input dates in ISO format and outputs a nested dict con-
taining the positions of every SV in ECEF coordinates at every time instant. The
constellation is obtained from a RINEX file downloaded from a trusted repository
or if available, locally. The RINEX file contains a discrete amount of observations
that need to be extrapolated to the time instant that is required. This module han-
dles the reading and orbit extrapolation as well as possible download and possible
directory creation to store the downloaded files.
fov_models
This module contains the FOV models that have been mentioned in previous sec-
tions. They first need to be setup with certain parameters and then take as a
minimum input the positions of the observer and the constellation at that time, and
outputs the constellation of SVs in view according to the model’s implementation.
19
calcs
This module holds the calculations that are performed on the data. As of time
of writing, the only available calculation is the several DOPs as mentioned in sec-
tion 3.3. The modular nature of the program, however, allows for any other type of
calculation that requires positioning data and/or constellation data.
The main objective of this program is to provide an easy-to-use interface for calcu-
lations such as the different DOPs which are indicative results that would be very
time consuming to calculate even in a semi-automated manner, meaning that some
manual work would be done. Gdoper is not intended to demonstrate a new technol-
ogy or an innovative implementation of existing frameworks, but rather its intention
is to simplify post-processing of GPS related positioning data by creating an easy
to use interface for the user.
Gdoper is intended to process all types of positioning data logged from a GPS
receiver. This data can come from but is not limited to drones, autonomous vehicles,
mobile devices, and/or remote controlled vehicles.
As of the time of writing, the program is in a working state and meets all the
initial functional requirements (see Table 4.1). In summary, this means that at
the time of writing, the program can read a .csv file containing positioning data
given the names of the columns where latitude, longitude, altitude, amount of visible
satellites, and time of measurement are specified. The program can then use this
data to download the GPS Ephemeris from an online resource (at the time of writ-
ing the main repository is ftp://data-out.unavco.org/pub/rinex/nav). From
the previously acquired data, the satellites that were in view can be estimated, and
finally the GDOP, HDOP, and VDOP can be calculated.
5 Example results
To demonstrate the potential usage of this program, positioning data obtained from
drone surveys was processed by Gdoper and analyzed. This section will show exam-
ples of the data that is output by the program and plots generated from that data.
Finally an analysis of the whole set of flights will be done as processed by Gdoper.
Drone path
Drone path
Drone path
Altitude above sea (m)
170
165
160
155
150
145
140
135
+0
+0.00.030035
+0.0
2
61.450 .0002 +0.0020025
+0.0
+0 4
+0.000 .0006 +0.0010015 (°)
0 +0.0005 d e
Latit + +0.0008 0010 23.8620 itu
ude +0. ng
Lo
(
°)
From the aforementioned three example flights, the number of SVs in view, along
with the DOPs calculated at each instant, were plotted in the following figures ( 5.4,
5.5, and 5.6).
23
20
10
5 GPS
Galileo
GPS + Galileo
0
0 100 200 300 400 500 600
time (s)
8
GDOP GPS
7 GDOP Galileo
WGDOP GPS + Galileo
6
5
DOP value
4
3
2
1
Figure 5.4 Computed GDOP values for GPS+Galileo constellations for flight 1.
A trend can be seen that the DOP values are strongly related to the amount of
visible satellites, as for every dip and peak in visible SVs, there is a peak and dip
respectively for all DOP values. The difference of surroundings from flights 2 and
3 can be seen from the number of visible SVs, meaning flight 2 was performed in
relatively open surroundings and therefore had more SVs in view, while the opposite
was true for flight 3 (see Figure 5.5 and Figure 5.6).
20 20
Number of visible satellites
10 10
5 GPS 5 GPS
Galileo Galileo
GPS + Galileo GPS + Galileo
0 0
0 50 100 150 200 250 300 350 0 50 100 150 200 250 300
time (s) time (s)
8 8
GDOP GPS GDOP GPS
7 GDOP Galileo 7 GDOP Galileo
WGDOP GPS + Galileo WGDOP GPS + Galileo
6 6
5 5
DOP value
DOP value
4 4
3 3
24
2 2
1 1
0 50 100 150 200 250 300 350 0 50 100 150 200 250 300
time (s) time (s)
Figure 5.5 Computed GDOP values for GPS+Galileo constellations Figure 5.6 Computed GDOP values for GPS+Galileo constellations
for flight 2. for flight 3.
25
The FOV model used for the previous plots was FOV_view_match, which simu-
lates the GDOP as it would have been during the flight given the amount if visible
satellites as recorded by the drone. To analyze the data in a theoretical manner, the
following FOV models will be presented in Figure 5.7: FOV_constant_mask and
FOV_treeline. The former simulates a mask angle relative to the horizon at the
observers latitude and longitude, and the latter, simulates the ”horizon” relative to
a theoretical treeline that would block the observer’s view.
30.0
27.5
Number of visible satellites
25.0
22.5
20.0
17.5
15.0 FOV view match
12.5 FOV const. mask
FOV treeline
10.0
0 100 200 300 400 500 600
time (s)
3.0
WGDOP from view match FOV
2.5 WGDOP from const. mask FOV
WGDOP from treeline FOV
2.0
DOP value
1.5
1.0
0.5
Figure 5.7 Computed WGDOP values for GPS+Galileo constellations for flight 1 with
different FOV models.
26
A set of 100 flights was processed and analyzed, totaling over 8 hours of data.
The set of flights were all obtained from the same drone only varying the time of
flight and flight path. Since the flights in the set were all of surveying type, the
speeds at which they were flown were moderate, averaging 1.8 m/s, with a median
of 0.94 m/s over 278 955 samples, and using a sampling interval of 100 ± 10 ms. The
speed distribution density of the set can be seen in Figure 5.8 with a logarithmic
scale along the y axis, representing the density.
100
10 1
Sample density
10 2
10 3
10 4
Figure 5.8 Speed distribution density of the drone for all 100 flights in the set.
27
For every instant in the set, the DOP values of the drone were compared to the
number of visible SVs and saved into a bucket. Each bucket represents the number
of visible SVs. The mean and sample variance of each bucket was computed and
plotted in Figure 5.9
1.2
Mean DOP values
1.0
0.8
0.6
0.4
0.2
10 11 12 13 14 15 16 17 18 19 20 21 22 23
Satellites in view
As can be seen in Figure 5.9, between 10 and 14 visible SVs the DOP values
have a significantly high variance, indicating that the positioning of the SVs in the
sky affects the GDOP considerably. From 15 visible SVs and upwards (with the
exception of 17 visible SVs), the variance is quite stable and the DOP values have
a decreasing trend as more SVs become visible. At 17 visible SVs there is a peak,
indicating a potentially interesting geometric occurrence or more probably an effect
that is particular to the geographical location of the measurements.
28
6 Conclusions
Gdoper is a powerful tool with a simple interface that can be used to process GPS
related positioning data, as well as model the predicted amount of satellites in view
at a given position in a given moment. As demonstrated in the Example results sec-
tion 5, the data output from Gdoper can be used for a variety of different analyses
both for individual trajectory analysis and for analysis of a set of trajectories.
Gdoper meets the initial functional requirements, meaning that it can calculate
the GDOP of a GPS receiver for every instant of a trajectory given the following pa-
rameters: Time of measurement in ISO format, the latitude, longitude and altitude
of receiver, along with the amount of visible GPS satellites at the time of measure-
ment. The latter can be excluded if the user of the program wishes to model the
field of view (FOV) of the receiver and opt for a theoretical estimate of the satellites
in view, along with the DOP values they would generate.
References
[1] Kamil Maciuk. “The applications of GNSS systems in logistics”. In: Budown-
ictwo i Architektura 17.3 (Dec. 2018), pp. 181–188. doi: 10 . 24358 / Bud -
Arch_18_173_13. url: https://ph.pollub.pl/index.php/bia/article/
view/378.
[2] Wolfgang Torge. Geodesy. eng. 2. ed. Reprint 2015. Berlin ; De Gruyter, 2015.
isbn: 3-11-154268-8.
[3] Arthur L Allan. Principles of geospatial surveying. eng. Whittles, 2017. isbn:
9781904445210.
[4] World Geodetic System 1984. https://www.unoosa.org/pdf/icg/2012/
template/WGS_84.pdf. 2012.
[5] Ahmed. El-Rabbany. Introduction to GPS The Global Positioning System.
eng. Norwood: Artech House, 2006. isbn: 1-58053-547-X.
[6] Michel. Capderou. Handbook of Satellite Orbits From Kepler to GPS. eng. 1st
ed. 2014. Cham: Springer International Publishing, 2014. isbn: 3-319-03416-2.
[7] Guochang Xu. GPS: Theory, Algorithms and Applications. ger ; eng. 2. Aufl.
Berlin, Heidelberg: Springer-Verlag, 2007. isbn: 9783540727149.
[8] Anthony Flores. NAVSTAR GPS Space Segment/Navigation User Segment
Interfaces. https : / / www . gps . gov / technical / icwg / IS - GPS - 200L . pdf.
2020.
[9] Global Positioning System Precise Positioning Service Performance Standard.
https://www.gps.gov/technical/ps/2007-PPS-performance-standard.
pdf. 2007.
[10] Jan Van Sickle. GPS for Land Surveyors. eng. Boca Raton: Taylor & Francis
Group, 2015. isbn: 9781466583108.
[11] Werner Gurtner. RINEX: The Receiver Independent Exchange Format Version
2.11. https://files.igs.org/pub/data/format/rinex211.txt. 2007.
[12] I Sharp, Kegen Yu, and Y.J Guo. “GDOP Analysis for Positioning System De-
sign”. eng. In: IEEE transactions on vehicular technology 58.7 (2009), pp. 3371–
3382. issn: 0018-9545.
[13] Shuqiang Xue and Yuanxi Yang. “Understanding GDOP minimization in
GNSS positioning: Infinite solutions, finite solutions and no solution”. eng.
In: Advances in space research 59.3 (2017), pp. 775–785. issn: 0273-1177.
[14] Alfred Leick, Lev Rapoport, and Dmitry Tatarnikov. GPS satellite surveying.
John Wiley & Sons, 2015.
30
[15] Yunlong Teng, Jinling Wang, Qi Huang, et al. “New characteristics of weighted
GDOP in multi-GNSS positioning”. eng. In: GPS solutions 22.3 (2018), pp. 1–
9. issn: 1080-5370.
[16] Nuria Blanco-Delgado and Fernando D Nunes. “Satellite selection method for
multi-constellation GNSS using convex geometry”. In: IEEE Transactions on
Vehicular Technology 59.9 (2010), pp. 4289–4297.
31
APPENDIX A.
RINEX format for GPS data record
32
APPENDIX B.
Algorithms for determining GPS SV position
1 // WGS 84 value of the earth 's gravitational constant for GPS user
2 u = 3.986005 x 10^14 meters ^3/ sec ^2
3
44