Awards & Nominations

dagon has received the following awards and nominations. Way to go!

Global Nominee

ISS tracker and collision avoidance web app

High-Level Project Summary

The ISS tracker and collision avoidance web app by Dagon, is an open-source web app, where the user can know the actual location of the International Space Station, check for real coalitions alerts with space trash and space debris, satellites and space bodies detected and located with the Satellite.js library, in a 3D space, which simulates the world, its atmosphere, the International Space Station and the illumination of the sun, all this at real time with real data.

Detailed Project Description

Our proposal includes development of the ISS tracking and mapping in a 3D space, as well as a collision prediction estimate. Our tracking system was developed as a web application written in JavaScript with Node and React and Three.js. We implemented a rendered for Three.js called React-three-fiber which allows us to load 3D models of the ISS itself, the nearby satellites, and all the space trash data into a ℝ^3 space.


The main features that we develop are the following:



  • Track International Space Station in 3D space
  • Map and track satellites and space debris in 3D space
  • Dynamic lighting according to real Sun position
  • International Space Station 3D model's solar panels always point to Sun direction
  • Geolocate user and predict overhead passes
  • Project ISS movement orbit and make predictions about collisions


Final project screenshots:




The application relies on the TLE data provided from Celestrak (considering NORAD and NASA's GOES data) and an API provided from Open Notify which provides us the ISS position in real time.


The first problem we run into when processing this data is converting geodetic coordinates to Cartesian coordinates in ℝ^3 space. For this, we rely on the ECEF coordinate system, which, in our model, allows us to leave the earth static and make the satellites orbit around it. In this coordinate system, the Z-axis coincides with the minor axis of the reference ellipsoid. the X-axis runs from the origin through a point on the equatorial plane at the zero meridian. the Y-axis is perpendicular to the X-axis on the equatorial plane (you can see it in the following image).

Geodetic coordinates (latitude Φ, longitude λ, height h) can be converted into ECEF coordinates using the following equation:

Where:

and a and b are the equatorial radius (semi-major axis) and the polar radius (semi-minor axis), respectively. e is the first numerical eccentricity of the ellipsoid and f is the flattering of the ellipsoid.


For our model we approximate the earth to a perfect sphere, for the sake of simplicity, so that, the previous equations can be expressed as the following:

We get both latitude and longitude of the ISS via an API call, then we apply the formulas shown above and with that we get the ISS position in our ℝ^3 space. In that point we can load and render the 3D model of the ISS. Then we only need to update this coordinate in real time by making continuous calls to the API so that we can project the orbit.


Now, we need to think about how to make the solar panels of the 3D model to always be pointing at the sun, to do this, we use the solar panels of the model as a plane, then, we get the sun position relative to the prime meridian using the SunCalc library, we get the azimuth and the distance in return, and we can apply the same formulas shown above to convert this to cartesian coordinates using the azimuth as longitude and the distance as latitude. With these coordinates, we can project a point light in our ℝ^3 space. We calculate the normal vector between the plane of the solar panels of our 3D model and the point light and the normal vector perpendicular to the center of our 3D model (you can see it in the following image).

With all this, we calculate the offset angle between both vectors by applying cross product, and we just simply need to orient our plane relative to that angle. Finally, using the normal vector that we already know, we use quaternions to orient the figure correctly by rotating it around itself about the other axes.

Then, to use the TLE data provided from Celestrak first we need to filter it, we make the API rest call, we get in response records of active and inactive satellites, we save this data in an array and then we iterate through the array to process it to rearrange the data in a format that is easier to interpret.

With the help of the Satellite.js library, we apply simplified perturbations models to the given data (such as SGP4) to calculate orbital state vectors of satellites and space debris relative to the Earth-centered inertial coordinate system. These models predict the effect of perturbations caused by the Earth’s shape, drag, radiation, and gravitation effects from other bodies such as the sun and moon.

To finish, calculating the probability of collision between two objects X and Y:


We define P(X) as the probability of being in one segment of the orbit.

In that way:

Where:

S is the average speed

L is the length of orbit


We have the following cases for P(X):

Now, we get:

and:


This probability will for sure be influenced by the wider of the orbit and the velocity, it means the longer the orbit the less chances to collide but the more velocity in the object the greater the chances to collide with some other object with less velocity.

Space Agency Data

For computational rendering of satellites and debris, we used TLE data from GOES, and NORAD using Celestrak.

Hackathon Journey

It was a challenging experience since may of the applied concepts, techniques, development tool and research fields were new to most of the team, we decided it would be great for gaining knowledge about 3D rendering and processing, at the same time applying data that NASA provides into something useful, with a lot of documentation research and tutorial we managed to get through many of the issues we faced.

References

  1. “WorldWind: Module: KmlFileCache.” Worldwind.arc.nasa.gov, worldwind.arc.nasa.gov/autodocs/WebWorldWind/module-KmlFileCache.html. Accessed 3 Oct. 2022.
  2. “CelesTrak: Active Satellites.” Celestrak.org, celestrak.org/norad/elements/table.php?GROUP=active&FORMAT=tle. Accessed 3 Oct. 2022.
  3. “Space-Track.org.” Www.space-Track.org, www.space-track.org/documentation/#tle. Accessed 3 Oct. 2022.
  4. “Geographic Coordinate Conversion.” Wikipedia, 24 Oct. 2021, en.wikipedia.org/wiki/Geographic_coordinate_conversion.
  5. “Simplified Perturbations Models.” Wikipedia, 17 Oct. 2020, en.wikipedia.org/wiki/Simplified_perturbations_models.
  6. Wikipedia Contributors. “Quaternions and Spatial Rotation.” Wikipedia, Wikimedia Foundation, 27 Nov. 2019, en.wikipedia.org/wiki/Quaternions_and_spatial_rotation.

Tags

#ISS #3D #dagon #spaceappschallenge #3d-modeling #3d-rendering