One of the fastest growing industries is space exploration, as well as humanity's next great expansion. Asteroid mining, space colonies, and frequent flights to the moon could be our near future. However, one of our greatest barriers is the number of satellites in our lower earth orbit. The Kessler effect is the idea that satellites will collide with one another and create more debris, which will collide even more, an exponential cascade of collisions. At one point, our low earth orbit will be extremely difficulty to navigate, our project is designed to bring more awareness to this serious problem.
What it does
The Kessler Effect is an interactive simulator designed in Unity that simulates lower earth orbit as well as providing the user some satellites to navigate. Our data comes from NASA's space-tracker.org and uses fundamental astrodynamics calculations to represent a semi-realistic orbit for each satellite. The player will have to protect their satellite in an increasingly dangerous low earth orbit.
How we built it
The structure of our project can be broken down into three parts: astrodynamics calculation scripts, the Unity environment/UI, and data analysis. For our calculations, we used two-dimensional ellipse geometry and perifocal coordinate equations to orient the ellipse in the polar plane. We then had to use a rotation matrix to orient our planar ellipse in a three-dimensional coordinate system to position our satellites in our environment. These values are manipulated for user-controlled satellites.
For our Unity environment, we arranged our solar system to be relative to the earth's axis with the earth rotating about the y-axis. A clock object was created to establish a consistent time for all environment objects, including the sun, and earth's rotation. We created a satellite generator to read from real NASA data and place them in our simulation. User Interface was introduced so users can add satellites and understand information on the screen. Lastly, a particle effect system was added to illustrate the orbit of each satellite.
For our data analysis, we used a 3LE file from Space Track's Low Earth Orbit* (LEO) under Bulk Download Alternative. This file uses an Alplha-5 scheme, the description can be found under the TLE Format tab. In python, a dataframe was created and a slicer was used to read the file three lines at a time, extracting the desired data values and appending the dataframe until the file has no more lines. This data is cleaned and exported into a csv file. Lastly, this file is parsed by a satellite spawning script in Unity, this script only reads the desired lines for the number of satellites needed to spawn.
Challenges we ran into
This project was extremely challenging for every team member, we chose to stretch ourselves. Only And only one of us knew Unity. None of our team knew C#, UI design, data analysis, or the physics required to simulate realistic space orbit. Much of our time was spent collaborating on research, especially for the astrodynamics equations. We quickly had to adapt to completely steering direction, discovering our math was wrong, our scale was not consistent; the data we pulled did not have the values we needed, was password protected, or data files were corrupted. We learned to comment our code and commits more clearly, create a testing branch to avoid breaking our master branch, update our master branch semi-regularly to save our project, and use extensions like liveshare to collaboratively write code in Visual Studio.
Accomplishments that we're proud of
More than anything our team is glad it runs! We knew we were over our heads and taking on a project that required a lot of time, energy, learning, and commitment. We were overjoyed when we had a single satellite orbiting the Earth, we were overjoyed when we found the data and used it to generate hundreds of little satellites, we were overjoyed when we had a particle system gradient demonstrating altitude. More than anything, our team is proud we taught ourselves the languages, tools, and theory to make a visually appealing semi-realistic orbital mechanic space engine that a user can interact with.
What we learned
Learning was the largest part of our project, as a team we learned how to collaborate with one another, how to use Unity, how to write scripts in C#, the fundamentals of astrodynamics, pandas, quaternion, anaconda, xml/html, UI design, and for some of us it was a first time with Visual Studio. From the beginning to the end, we were learning the whole time. Each portion of our project was describing an ambition, finding the resources, teaching ourselves, and applying that knowledge.
What's next for Kessler Effect
Our success with this project inspired us to go even farther. We plan on expanding on satellite movement by calculating speed and position as vectors. We plan on create satellite collision that generates debris. Next, we are considering adding more middle earth orbit and geosynchronous orbit satellites to visually fill out our environment. We can find the type of satellite that is spawned and make the models different for payload, rocket body, and debris. We plan on adding a user score to track how well they keep their satellites safe. We plan on adding more user interface elements: such as a legend for the altitude gradient, visually show future orbits, on screen buttons for the how to maneuver, and a panel with the life status of the user’s satellite.