Hi @chakravala,

Yes, you can do this in Julia for sure. The real problem is that the accuracy would be very, very bad (not because of Julia, but the system itself).

You will have to use a package to get the position of the planets, compute the force each one applies to the asteroid, possibly consider things like relativistic effects, create an ODE to be solved by a high order, very accurate solver, and solve the system using a measured state vector for the initial condition. Then, you will have propagated the asteroid orbit. Now, you need to check for close approaches to the Earth. All of this can be done using available toolboxes in Julia (DifferentialEquations.jl, JPLEphemeris.jl, SatelliteToolbox.jl, etc.).

Let’s suppose your algorithm shows a possible collision. In the simulated world, it is easy to predict where the asteroid will fall. However, this system can even be chaotic sometimes. A very small change in the initial state would lead to huge differences in the outcome. The asteroid initial state (position and velocity) measurement you have now are not that accurate. Thus, the result you obtain today would be likely very different one week from now.

This is why the margins we consider to declare risk are very high. This particular asteroid, according to ESA, will pass 2,655,140 km away from Earth on December 19, 2023. This is more than 7x the distance between Earth and Moon. Yet, this object is in the risk list.

What it is possible to do in Julia (and will be very nice) is to construct a system that accounts for the impact probability given the measurement and modeling uncertainties. ESA is using something like that on that website you linked.

Thus, TL;DR: yes, you can do this in Julia using existing packages with some glue code, but the accuracy will be very bad given the characteristics of the system.