9
$\begingroup$

This answer suggests that the orbital periods of the four large GNSSS contstellations are linked to the sidereal rotation period of the earth by rational numbers with 17 or 34 as the denominator in order to facilitate roughly twice-daily contact with each constellation's ground stations. It uses this answer to help support this theory.

GPS uses 1/2 of a sideral day, 11:58:02 and an orbit height of 20192 km.

Other satellite navigation use similar orbit periods, 17 orbits per 8 to 10 sideral days.

Glonass uses 8/17 of a sideral day, 11:15:48 and an orbit height of 19140 km.

BeiDou uses 9/17 of a sideral day, 12:40:16 and an orbit height of 21224 km.

Galileo uses 10/17 of a sideral day, 14:04:45 and an orbit height of 23232 km.

The ratio of 1/2 may be also written as 17/34, the other ones as 16/34 , 18/34 and 20/34. The differences are small. Thus all satellites could be measured about twice a day from the same ground stations.

If you go to the Wikipedia page for Satellite navigation and look at the table, the 17's do in fact show up in a table there (shown below with some rows suppressed for compactness:

enter image description here

I've downloaded TLEs from Celestrack using these links and propagated them using Skyfield and I don't see any evidence of substantially repeating ground track orbits.

Considering that since these constellations exist in MEO specifically so that any location will see many of them constantly, is there really anything to this "17" argument forwarded by both this and this answer? Or is it just a red herring?

enter image description here

above: Ground tracks for 72 hours using TLE groups from Celestrak and SGP4 propagation using Skyfield. Axes are geographical longitude and latitude and the lines are the subsatellite points at 0.03 hour time steps.

enter image description here

Note: The Beidou system has satellites in both MEO and Geosynchronous orbits (~28,000 and ~42,000 km radii).

above: Earth-centered inertial orbits for 72 hours using TLE groups from Celestrak and SGP4 propagation using Skyfield at 0.03 hour time steps.

class Constellation(object):
    def __init__(self, name):
        self.name = name
        self.sats = []

class Satellite(object):
    def __init__(self, name):
        self.name = name

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from skyfield.api import Loader, EarthSatellite


load = Loader('~/Documents/fishing/SkyData')  # avoids multiple copies of large files
ts   = load.timescale()

data    = load('de421.bsp')
earth   = data['earth']
ts      = load.timescale()

print earth.at(ts.now()).position.km   # for no reason at all

fnames = ('beidou.txt', 'galileo.txt', 'glo-ops.txt',   'gps-ops.txt')
names  = ('Beidou',     'Galileo',     'Glonass (ops)', 'GPS (ops)'  )

# Build constellations and EarthSatellites
constellations = []
for fname, name in zip(fnames, names):
    const = Constellation(name)
    constellations.append(const)
    with open(fname, 'r') as infile:
        lines = infile.readlines()
    const.lines = lines
    satnames, L1s, L2s = [lines[i::3] for i in range(3)]
    for name, L1, L2 in zip(satnames, L1s, L2s):
        if len(name)<30 and L1[0]=='1' and L2[0]=='2':
            sat = Satellite(name.strip())
            const.sats.append(sat)
            sat.L1, sat.L2 = L1, L2
            sat.satobj = EarthSatellite(L1, L2) # add the Skyfield object

for const in constellations:
    print "constellation name: ", const.name
    print [sat.name for sat in const.sats]
    print len(const.sats), len(const.lines)/3

hours = np.arange(0, 72, 0.03)
time  = ts.utc(2018, 6, 21, hours)  # start June 21, 2018

# Propagate TLEs
for const in constellations:
    for sat in const.sats:
        satobj_at    = sat.satobj.at(time)
        sat.pos      = satobj_at.position.km
        sat.subpoint = satobj_at.subpoint()
        sat.lon      = sat.subpoint.longitude.degrees
        sat.lat      = sat.subpoint.latitude.degrees
        breaks       = np.where(np.abs(sat.lon[1:]-sat.lon[:-1]) > 60)

        sat.plot_lon         = sat.lon[:-1]
        sat.plot_lat         = sat.lat[:-1]
        sat.plot_lon[breaks] = np.nan    # avoid ugly wraparounds

if True:
    plt.figure()
    things = ('-b', '-g', '-r', '-c')
    fs, lw = 16, 0.7
    for i, (const, color) in enumerate(zip(constellations, things)):
        plt.subplot(2, 2, i+1)
        for sat in const.sats:
            plt.plot(sat.plot_lon, sat.plot_lat, color, linewidth=lw)
        plt.title(const.name, fontsize=fs)
    plt.show()

if True:    
    fig = plt.figure(figsize=[9, 7])  # [12, 10]
    things = ('-b', '-g', '-r', '-c')
    for i, (const, color) in enumerate(zip(constellations, things)):
        ax  = fig.add_subplot(2, 2, i+1, projection='3d')
        for sat in const.sats:
            x, y, z = sat.pos
            ax.plot(x, y, z, color)
        ax.set_title(const.name, fontsize=16)
    plt.show()
$\endgroup$
  • 1
    $\begingroup$ I think the number of revolutions per sideral day was choosen to allow satellites position measurement from the ground stations twice per day. For measurement a satellite should be visible from 3 or more ground stations simultaneously. GPS was designed that way, but I have no information about this for the other systems. May be a plot of the relation of satellites to ground stations will be helpful. $\endgroup$ – Uwe Jun 22 '18 at 10:19
  • $\begingroup$ If you choose a period of 8 sideral days and close to 2 revolutions per day but not exactly 2, you may select 15 or 17 revolutions per sideral day. For a period of 9 sideral days, 17 or 19 revolutions are possible. But for a period of 10 days, 19 or 21 revolutions should be used, not 17. $\endgroup$ – Uwe Jun 22 '18 at 15:07
  • $\begingroup$ @Uwe I'm still not sure the 17 in the table in Wikipedia has any specific significance, so that might be a good place to start. So far, it looks like they are not actually in orbits who's periods are exact rational fractions times the sidereal day, otherwise the ground tracks would be repeating. $\endgroup$ – uhoh Jun 22 '18 at 16:59
  • 2
    $\begingroup$ To see repeating ground tracks, you should look for a interval of 8, 9 or 10 sideral days, not only 72 hours. GPS ground tracks should repeat in 1 or 2 sideral days, about, but not exactly 24 or 48 hours. All satellites of a constellation may be to many for a plot, but a single one will give a better plot. $\endgroup$ – Uwe Jun 23 '18 at 9:11
  • 1
    $\begingroup$ @Uwe you've actually solved my problem! Do you think you could post your comment as a short answer? In this case the answer is very simple so really a sentence or two is all that's needed. I can accept it, then add a supplementary answer with a calculation backing that up. $\endgroup$ – uhoh Nov 6 '18 at 0:58

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.