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.
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:
- richinfante/satellite-tracking - a reference implementation of a ground station using satellite-rs and space-plot.
- richinfante/space-plot - an ascii art visualization library for satellite and orbital trajectories. (although it can be used for any 2d plot)
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.