Tracking Satellites with Rust

Porting the satellite-js library into rust.
2 min read
under construction This post is a work in progress, and may be updated at some point in the potentially distant future!

One of my more recent side project ideas involves tracking satellites. Previously, I had used rust-libgpredict but stumbled upon satellite-js. So I decided to attempt to port it over to rust. It’s currently unstable / portions are untested, but the results seem ok enough for hobbyist use.

richinfante/satellite-rs

Note: I’m not rocket scientist or astrophysicist, I just think this stuff is cool. If I’ve made a major error, or would like to help, please let me know

Goals

The primary function of satellite-rs is to predict the position of a satellite given the two-line element sets (TLEs for short) which contain the orbital parameters and information for generating predictions with the model. TLEs can be found on celstrak.com and space-track.org among others.

The motivation behind this project is to be able to utilize this tracking software, custom built antennae, and a rtl-sdr dongle (see rtl-sdr.com for more information) to build a satellite tracking ground station. In the past, people have built smiliar stations to pull data GOES satellites which provide all kinds of satellite imagery.

Alongside richinfante/satellite-rs, I’ve also authored a few other modules for experimenting with satellites:

Satellite-Tracking Output

Name: ISS (ZARYA)
Position Vec3 {
    x: 2082.9470399808242,
    y: 3723.3038576584718,
    z: 5269.83489136562
}
Velocity Vec3 {
    x: -7.0774444026978225,
    y: 2.846370088589653,
    z: 0.782645802079306
}
longitude = 49.19921508318601
latitude = 51.184080224229106
alt = 249.8880487809588

Space-Plot Output

As part of my experimenting, I wanted a quick way to plot satellite locations in the terminal without needing a web browser. Space-plot (while not highly precise) can help provide an overview.

space-plot + satellite-rs output

Subscribe to my Newsletter

Like this post? Subscribe to get notified for future posts like this.

Change Log

  • 4/9/2019 - Initial Revision

Found a typo or technical problem? file an issue!