The SatelliteToolbox.jl is an ecosystem of packages that enables the execution of a wide range of analysis tasks related to space missions in the Julia programming language. These tasks encompass the propagation of satellite orbits, the transformation of reference systems, the computation of atmospheric density, and numerous other functionalities.
After a decade of uninterrupted development, the ecosystem has finally achieved the 1.0 milestone. This post shows the evolution of the ecosystem, from its initial conception to its current state, highlighting some notable use cases that this package has enabled.
The reason why I started to develop the SatelliteToolbox.jl is both common in the Julia community and somewhat unique in the space engineering. Back in 2009 to 2012, I was pursuing a PhD at the Aeronautics Institute of Technology (ITA) in São José dos Campos, São Paulo, Brazil. My research focused on distributed estimation in a fleet of unmanned aerial vehicles (UAVs) with communication delays. To test and analyze my algorithms, I needed a simulator.
Creating a simulation of an inertial navigation system (INS) is no easy feat. You have to model the vehicle’s movement in a spinning, spherical Earth and integrate the navigation equations to obtain the solution using the simulated sensor data. We also have to add in the data communication behavior and, of course, the filters to estimate each vehicle’s state vector. To handle this task, I decided to use a well-known programming software for engineering. When I finished programming the algorithm, I found out that simulating the system with a certain number of UAVs, given our computing power (which was pretty good for the time!), would take around six months (ouch!). The problem was the curse of dimensionality - each node (UAV) in this problem has 18 states. And we needed a lot of realizations to test the algorithm’s performance in this stochastic system.