it is the good motivation for anyone who want to learn Julia. I read from wikipedia:
Julia is used by NASA, e.g. for modeling spacecraft separation dynamics (15,000 times faster than before with Simulink/MATLAB and the Brazilian INPE for space mission planning and satellite simulation. Another effort is working on an embedded project to control a satellite in space using Julia for attitude control.
How exactly using Julia can control a satellite? Who knows one of people here can do that.
Nobody is using Julia (yet) to control a satellite (i.e. running Julia code on a satellite, to fully or partially control), that I know of, but Julia helped launch Brazilās Amazonia-1 satellite (e.g. the āin-orbit sensor calibrationā, that I at least think runs on the ground):
General mission analysis such as fuel budget computation, orbit planning, ground station visibility analysis, etc.
The Amazonia-1 AOCS simulator is 100% written in Julia using the amazing DifferentialEquations.jl ecosystem. The results obtained from it greatly match the real satellite dynamics obtained after the orbit injection.
The AOCS telemetry analysis system is also 100% written in Julia. [ā¦]
The in-orbit sensor calibration required the implementation of Kalman filters, which, of course, was coded in Julia.
We can now say that Julia is truly a part of the Brazilian space program
Itās getting even more possible to run Julia on an actual satellite. I.e. with StaticCompiler.jl (and possibly, or not helping?):
Limitations:
In order to be standalone-compileable without linking to libjulia, you need to avoid (among probably other things):
GC allocations. Manual heap-allocation (malloc, calloc) and stack allocation (by convincing the Julia compiler to use alloca and put your object on the stack) are all fine though.
[ā¦]
Multithreading
Microsoft Windows (not supported by StaticCompiler yet), except via WSL
Not running on Windows, is maybe a feature, not a bug for satellite control. And not having GC allocations is a feature for embedded/real-time/satellites. Itās already possible to avoid GC with Julia before all this, but you had huge binaries. Now the smallest are under 9 KB, and while you can use malloc instead of GC, you would also want to not do that in your control loop.
I try to keep tabs on where SciML is used, but thereās too many going on these days. The site is here:
For any news articles and such that I missed, please make a PR to:
This is the list that we send around and look at for anytime we write grants or when marketing people want to know about where Julia is used, so if you have a project/book/organization/press release youād like to highlight, please add it!
If you were fishing for other āNotable usesā, then at CERN seems notable to me, even if for no discovery yet, but I think Julia may have something to do with a new discovery of a new pentaquark. Iāv not yet confirmed that, or then to which degree Julia helped.
We used Julia for many, many tasks during the development of the Amazonia-1 satellite:
We developed a highly accurate satellite AOCS simulator that helped a lot to find problems and tune parameters in early stages.
All the algorithms to perform in-orbit sensor calibration were coded in Julia (Redirecting).
The system to fetch and plot the AOCS telemetry for in-orbit analysis is also 100% Julia (except for the part that uses PyODBC, but we are changing that).
Countless analysis related to mission planning was performed in Julia using SatelliteToolbox.
Before COVID-19, I started a project to verify the possibility to actually embed Julia in a CubeSat to implement the attitude and control subsystem. Everything was going fine, but COVID-19 halted many projects. I hope come back to this endeavor soon
My last findings in a Raspberry Pi Zero was that we can use Julia but the GC was not that good sometimes for the hard-real time requirements. However, I hope that the new version of the Pi will be capable to handle those things. Letās see.
SciML is very popular, I have not even started to learn it, still learn the basic math of Algebraā¦ There is even someone on YouTube mentioning that Chris Rackauckas is a legend
First, congratulation on making a satellite Amazonia-1 with Juliaā¦
Why use Julia in first place? I tried Python but there are too many update that making old codes canāt work again.
Basically, I am no expert just a beginner having a dream to use Julia for a lot of things for monitoring, I live in a poor country where people still trashing randomly, maybe Julia is able to be used to detect those who trash randomly and send the data so we can capture them. From CCTV or Drone Camera, for the capturing part.
For the satellite, it is for macro-science purpose, we can detect phenomena like weather forecast or for urban planning, etc.
Raspberry Pi is a great microcontroller, it supposed to be designed to work with Python by default, just like Arduino with C.
Hopefully the COVID-19 will be over soon, and your CubeSat will work.
During my Ph.D., I studied how distributed estimation can occur in systems with high communication delays. The example I coded was a swarm of UAVs. For each one, I implemented a complete inertial navigation system solution.
I coded in MATLAB. Since I was analyzing stochastic algorithms, I needed many realizations in the Monte Carlo simulation. The MATLAB speed in the machine I had (which was pretty good for the time) would take roughly six months (I canāt remember the actual number). Thus, I needed to translate 10,000 lines to C using CMEX, which was very painful.
This was in 2011/2012. By the beginning of 2013, I heard about this language that was supposed to solve my problem (two languages problem)! The issue is that Julia was very new, and no toolbox whatsoever existed for many satellite applications. To learn the language, I decided to code many algorithms, which eventually became ReferenceFrameRotations.jl and SatelliteToolbox.jl.
Today, we have a complete simulation of the AOCS software integrated into an environment validated against orbital data. This system helps a lot to identify problems and add new features.
Basically, Julia is a better solution at that time. Julia is created with the motivation of being greedy, but it is very fast because of the compiler.
Being new, or late starter does not means bad eventually people are given space to help Julia evolved as an Open Source. That is why instead of MATLAB your satellite is using Julia for the simulations part !
Well, you are a legend too, for being able to use Julia for your Satellite project and more in the future. One day when I have more knowledge I will learn about DifferentialEquations.jl and SciML.