Julia Notable Uses

Hi all,

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.

3 Likes

The SatelliteToolbox.jl for Julia | Ronan Arraes Jardim Chagas, Ph.D. by @Ronis_BR.

1 Like

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):

@Ronis_BR

  • 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 :slight_smile:

https://github.com/JuliaSpace

This package contains several functions to build simulations related with satellites. It is used on a daily basis on projects at the Brazilian National Institute for Space Research (INPE)

2 Likes

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. :slight_smile: 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.

3 Likes

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!

7 Likes

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.

Note quotes (in footnotes, for now), e.g.:

Julia and the first observation of Ω⁻_b → Ξ⁺_c K⁻ π⁻

No, I do not know what this means exactly, nor even if it’s displaying correctly: Julia for HEP Mini-workshop (27 September 2021) · Indico

2 Likes

Hi @Freya_the_Goddess !

We used Julia for many, many tasks during the development of the Amazonia-1 satellite:

  1. We developed a highly accurate satellite AOCS simulator that helped a lot to find problems and tune parameters in early stages.
  2. All the algorithms to perform in-orbit sensor calibration were coded in Julia (Redirecting).
  3. 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).
  4. 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 :slight_smile:

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.

8 Likes

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.

Thanks for the info, no need to be ashame, I have no idea of the expert things in Julia, still learning.

CERN is a great place for scientists.

They probably just mean that my plot labels suck so you have to ask me what the lines mean.

15 Likes

That’s an interesting question!

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.

The second reason we went with Julia was due to @ChrisRackauckas (who is really a legend, in a non-plot sense, by the way :D). He designed probably the best simulation framework for highly accurate control system simulations! I remember back in the day, I needed some features in OrdinaryDiffEq.jl, and @ChrisRackauckas discussed with me and helped a lot (like here DifferentialEquations.jl does not save fields of custom types after the callback function · Issue #117 · SciML/DifferentialEquations.jl · GitHub)! For simulating continuous and discrete systems (like software for the satellite attitude control), DifferentialEquations.jl is just perfect.

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.

8 Likes

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.

1 Like