# Julia Notable Uses

**URL:** https://discourse.julialang.org/t/julia-notable-uses/86130
**Category:** General Usage
**Created:** [August 22, 2022, 11:11am UTC](https://discourse.julialang.org/t/julia-notable-uses/86130 "2022-08-22T11:11:01Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![Freya\_the\_Goddess](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/freya_the_goddess/32/36835_2.png) [@Freya\_the\_Goddess](https://discourse.julialang.org/u/Freya_the_Goddess)
#### Post date: [August 22, 2022, 11:11am UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/1 "2022-08-22T11:11:01Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![zdenek\_hurak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zdenek_hurak/32/53118_2.png) [@zdenek\_hurak](https://discourse.julialang.org/u/zdenek_hurak)
#### Post date: [August 22, 2022, 11:22am UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/2 "2022-08-22T11:22:28Z")

</div>

[The SatelliteToolbox.jl for Julia | Ronan Arraes Jardim Chagas, Ph.D.](https://ronanarraes.com/tutorials/julia/the-satellitetoolbox-for-julia/) by @Ronis_BR.

---

<div class="post-metadata">

### Author: ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)
#### Post date: [August 22, 2022, 11:23am UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/3 "2022-08-22T11:23:06Z")

</div>

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

> [@Julia and the satellite Amazonia-1](https://discourse.julialang.org/t/julia-and-the-satellite-amazonia-1/57541):
>
> Hi guys! Long time, no see! As some of you may know, I am the mission architect and the technical responsible for the attitude and orbit control subsystem (AOCS) of the Brazilian satellite Amazonia-1, launched on Feb 28. This is an image obtained by the first recording procedure: Here you can see the big city of São Paulo (on the left), São José dos Campos where INPE is located (“small” city on the top right), and the beautiful Brazilian shore, showing San…

> - 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 🙂

> **[JuliaSpace](https://github.com/JuliaSpace)**
>
> JuliaSpace has 25 repositories available. Follow their code on GitHub.

> 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)](http://www.inpe.br)

---

<div class="post-metadata">

### Author: ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)
#### Post date: [August 22, 2022, 11:41am UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/4 "2022-08-22T11:41:25Z")

</div>

It’s getting even more possible to run Julia on an actual satellite. I.e. with StaticCompiler.jl (and possibly, or not helping?):

> [@\[ANN\] StaticTools.jl: Enabling StaticCompiler.jl-based compilation of Julia code to standalone native binaries by avoiding GC allocations and \`llvmcall\`-ing all the things](https://discourse.julialang.org/t/ann-statictools-jl-enabling-staticcompiler-jl-based-compilation-of-julia-code-to-standalone-native-binaries-by-avoiding-gc-allocations-and-llvmcall-ing-all-the-things/80398):
>
> Technically this one has been registered for a couple months already, but we never made an announcement, so here goes! [GitHub - brenhinkeller/StaticTools.jl: Enabling StaticCompiler.jl-based compilation of (some) Julia code to standalone native binaries by avoiding GC allocations and llvmcall-ing all the things!](https://github.com/brenhinkeller/StaticTools.jl) I’ve just released version 0.3, which brings a lot of major changes. While it’s still a somewhat experimental package, I think it’s at least to some extent ready for other folks to use,…

> ### 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.

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [August 22, 2022, 12:23pm UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/5 "2022-08-22T12:23:04Z")

</div>

I try to keep tabs on where SciML is used, but there’s too many going on these days. The site is here:

> **[SciML: Open Source Software for Scientific Machine Learning](https://sciml.ai/showcase/)**
>
> Open Source Software for Scientific Machine Learning

For any news articles and such that I missed, please make a PR to:

> <https://github.com/SciML/sciml.ai/blob/master/showcase.md>

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!

---

<div class="post-metadata">

### Author: ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)
#### Post date: [August 23, 2022, 11:22am UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/6 "2022-08-23T11:22:55Z")

</div>

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](https://indico.cern.ch/event/1074269/)

> **[Dalitz-plot decomposition for three-body decays](https://arxiv.org/abs/1910.04566)**
>
> We present a general formalism to write the decay amplitude for multibody reactions with explicit separation of the rotational degrees of freedom, which are well controlled by the spin of the decay particle, and dynamic functions on the subchannel...

---

<div class="post-metadata">

### Author: ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)
#### Post date: [August 23, 2022, 1:22pm UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/7 "2022-08-23T13:22:03Z")

</div>

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](https://doi.org/10.1016/j.ast.2021.106759)).
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 🙂

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.

---

<div class="post-metadata">

### Author: ![Freya\_the\_Goddess](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/freya_the_goddess/32/36835_2.png) [@Freya\_the\_Goddess](https://discourse.julialang.org/u/Freya_the_Goddess)
#### Post date: [August 24, 2022, 11:49am UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/8 "2022-08-24T11:49:15Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Freya\_the\_Goddess](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/freya_the_goddess/32/36835_2.png) [@Freya\_the\_Goddess](https://discourse.julialang.org/u/Freya_the_Goddess)
#### Post date: [August 24, 2022, 12:02pm UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/9 "2022-08-24T12:02:54Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![Freya\_the\_Goddess](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/freya_the_goddess/32/36835_2.png) [@Freya\_the\_Goddess](https://discourse.julialang.org/u/Freya_the_Goddess)
#### Post date: [August 24, 2022, 12:04pm UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/10 "2022-08-24T12:04:03Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [August 24, 2022, 12:12pm UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/11 "2022-08-24T12:12:32Z")

</div>

> [@Freya\_the\_Goddess](#):
>
> There is even someone on YouTube mentioning that Chris Rackauckas is a legend

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

---

<div class="post-metadata">

### Author: ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)
#### Post date: [August 24, 2022, 12:32pm UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/12 "2022-08-24T12:32:20Z")

</div>

> [@Freya\_the\_Goddess](#):
>
> Why use Julia in first place? I tried Python but there are too many update that making old codes can’t work again.

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](https://github.com/SciML/DifferentialEquations.jl/issues/117))! 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.

---

<div class="post-metadata">

### Author: ![Freya\_the\_Goddess](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/freya_the_goddess/32/36835_2.png) [@Freya\_the\_Goddess](https://discourse.julialang.org/u/Freya_the_Goddess)
#### Post date: [August 27, 2022, 2:40pm UTC](https://discourse.julialang.org/t/julia-notable-uses/86130/13 "2022-08-27T14:40:46Z")

</div>

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.
