WheresMySat

During the hackathon, we developed satellite orbit determination software keeping in mind accessibility, flexibility, and reusability.

First off, orbit determination allows engineers and scientists to identify where artificial bodies or natural celestial bodies are. Satellite orbit determination serves a wide range of purposes from allowing GPS users to calculate their own position on Earth to keeping tabs on deep space missions. Orbit determination algorithms input a-priori information and measurements of the object whose orbit is to be determined. We use a classical Kalman filter which is a sequential orbit determination algorithm which is able to provide an estimate of where a satellite will be by propagating an initial estimate forward according to system dynamics and updating that estimate each time it receives a measurement according to how "confident" the filter is in its own estimate and how "confident" the measurements themselves are.

We created a front end in order to present estimates of where a satellite is in order to make our software accessible. Our front end provides real-time solutions and diagnostics, allowing anyone to use the software, making orbit determination accessible to those who are not experts.

In order to address flexibility and reusability, we implemented automatic differentiation in our filter. In different orbit determination problems, states to be estimated and system dynamics vary. Within the filter, we must take partial derivatives of the system dynamics with respect to the states to be estimated which means that setting up each orbit determination problem can be time intensive if we take these partial derivatives numerically or set up analytical expressions to evaluate them. In our project, we implement automatic differentiation which allows us to input any amount of states without resetting the partials.

We set up a python web server to listen for simulated (or real) measurement inputs, which then ran the Kalman filter methods and estimated the state of the satellite at that time. This state was then pushed to an Influx database hosted on another computer, which displayed the data using a real-time updating graphical library.

Built With

Share this project:

Updates

Submission history