NAV

Tracking an Area Of Interest Tutorial

Complexity: Medium
Payloads: SDR
Windows: PAYLOAD_SDR

A satellite is useful for its ability to be over a specific area of interest (AOI). This tutorial will demonstrate how to determine at what time a window needs to be scheduled to be over an AOI, e.g. for observations or communications. These results can be compared with a site like n2yo.com which provides transit information.

This example requires the satellites Two-Line-Element (TLE), which provides the satellite's location and velocity, which is needed to calculate each transit over an AOI. The TLE can be obtained from a range of places including tle.spire.com, and requires the satellites Norad Catalog Number (Norad Id).

Prerequisites

All tutorials require the steps outlined in the Getting Started Guide. For this tutorial Python 3.6+ & the pypredict python module are used (on the ground only).

pypredict

Install the pypredict python module:

python3 -m pip install git+https://github.com/nsat/pypredict.git

Norad Catalog Number

The Norad Catalog Number (Norad Id) is needed to to look up the TLE. It can be looked up from a range of websites, e.g. n2yo.com. Spire also provides this information - the Tasking API returns the Norad Id of satellites available to the user:

HOST="https://api.orb.spire.com"
AUTH_HEADER="Authorization: Bearer YOUR_AUTH_TOKEN"

curl -X GET -H "${AUTH_HEADER}" "${HOST}/tasking/satellites"

The result shows that windows can be scheduled on FM1 which has Norad Id 51099:

{
  "data": [{
    "id": "FM1",
    "norad_id": "51099",
    "supported_windows": [
      "PAYLOAD_SDR",
      "PAYLOAD_SABERTOOTH"
    ]
  }]
}

TLE

The TLE of this satellite can be fetched at any time by visiting http://tle.spire.com/51099. Notice that the Norad Id was appended to the URL:

$ curl http://tle.spire.com/51099
0 LEMUR 2 KRYWE
1 51099U 98067RW  21349.43520370  .00268022  00000-0  88734-3 0  9993
2 51099  51.6363 130.1765 0006706 333.8750  26.1916 15.89079723 63302

Finding a Transit Time

This tutorial has an accompanying script called find_transit. It relies on the pypredict python module installed previously.

usage: find_transit [-h] [--sat SAT] [--lat LAT] [--lon LON] [--alt ALT]
                    [--min MIN] [--hours HOURS]

Find transit times over lat,lon. Default LEMUR1 over North Pacific Ocean and 30 degrees

optional arguments:
  -h, --help     show this help message and exit
  --sat SAT      Satellite norad id (default: 40044)
  --lat LAT      AOI latitude (default: 40.0)
  --lon LON      AOI longitude (non-negative) (default: -176.0)
  --alt ALT      AOI altitude, in meters (default: 0)
  --min MIN      Min elevation, in degrees (default: 30)
  --hours HOURS  Hours to search (default: 48)

North Pacific Ocean: (40.0, -176.0)

Any non-json output is written to stderr and can be discarded with 2>/dev/null if needed. The exit code ($?) is non-zero if no transits are found. Searching for an 80+ degree overhead transit of the North Pacific Ocean (the default) in the next week would look like:

$ python3 aoi/find_transit --sat 51099 --min 80 --hours 168
2022-03-02 23:56:25.492111  722.555646  85.360401
[
    {
        "end": 1646266108.0477574,
        "peak_elevation": 85.36040128316404,
        "peak_time": 1646265745.711503,
        "start": 1646265385.4921112
    }
]

Interpreting the Data

The transit's start and end times are from horizon to horizon, giving a total duration of 723 seconds for this result. Often the most useful part of the transit is at higher elevation where there is less atmosphere and the satellite is closer to the AOI. For this tutorial a 360 second window will be used, with the peak in the middle, 180s before peak elevation: 1646265383 epoch seconds.

Scheduling a Window

Task the satellite to track a North Pacific Ocean location (40.0, -176.0) by specifying this location in the adcs_config section of the JSON in the API request, and start the SDR and make a 10 second capture of S-BAND for down-link. Take a look at deploy

$ ./deploy "[YOUR_AUTH_TOKEN]" [YOUR_SAT_ID] [YOUR_START]

Review

Once the window has completed and enough time has passed for the IQ file to download, it can be reviewed in AWS S3 (see Hello World tutorial).

Next Steps