Inspiration
Satellites help with weather forecasts, GPS, internet, and even disaster response. If they collide with debris, we could lose services people use every day. We wanted to build something simple that shows where things are in orbit and which close passes might be risky so anyone can understand the problem.
What it does
NeoGuard loads satellite and debris data, predicts where each object will be, and estimates how risky a close pass might be based on distance and relative speed. The site shows an interactive 3D Earth with solid paths for satellites and dashed paths for debris. You can scrub time, follow an object, and load known debris catalogs to see potential issues quickly.
How we built it
Our backend uses FastAPI to grab TLEs from NASA and CelesTrak, then propagates orbits with SGP4. We also use a physics informed neural network in PyTorch that learns small corrections to the SGP4 trajectory while respecting basic physics like r prime equals v and v prime equals a under gravity, drag, and solar radiation pressure. We export the model as TorchScript and call it in the predict endpoint to adjust each minute of the state sequence before sending it to the frontend.
Challenges we ran into
APIs were not always consistent, so parsing TLE triplets and handling errors took time. Keeping the math clean in kilometers and kilometers per second and making sure frames lined up was important. On the frontend, drawing many orbits without lag meant using light geometry and careful updates, and we had to tune the risk formula so it felt clear and not misleading.
Accomplishments that we're proud of
We built a working pipeline from public data to physics and ML to a clean 3D view. The PINN improves the trajectory slightly while still following the rules of orbital motion, and it fits neatly into our API. The UI looks good and feels smooth with trails, playback, a follow camera, and easy debris loading so people can explore real cases.
What we learned
We learned how to use Three.js and React to make scientific visuals that run well in the browser. We practiced adding physics into machine learning by training on residuals that represent the equations of motion. We also learned the details of SGP4, how to read TLEs, and how small wording choices in the UI change how users read a risk score.
What's next for NeoGuard
We want to make it faster so it can handle many more objects at once by improving sampling, using workers, and taking advantage of WebGL instancing. We will add bulk loading for large catalogs and build alerts that notify users when a potential close approach is found. We also plan to host NeoGuard online so anyone can try it and export simple reports from the browser.
Log in or sign up for Devpost to join the conversation.