Julia and the satellite Amazonia-1

Thanks! Unfortunately I do not work with image processing at all… I cannot say if anyone is using Julia for this kind of tasks.

Obrigado!

First of all congratulations! I was wondering whether you have to interface your Julia code with tools in other language and what was your experience with it in production.

For example, you showed the Qt GUI: is it written in C++ and you call Julia from it, or you use a Julia package to interface Qt (QML.jl)?

2 Likes

Thanks!

It is a very good question! At the beginning (2014, I think), I needed two models for the simulator: geomagnetic field and atmospheric density. By that time, I took the FORTRAN code, compiled into a library, and used it without a single problem in Julia, I loved the integration. However, to ship this solution in SatelliteToolbox.jl, the user will require a FORTRAN compiler (Yggdrasil was not a thing yet), which I did not like. I also saw that all major languages (C/C++, Python, MATLAB) have a native implementation of such models. Hence, I decided to rewrite them in Julia (IGRF, NRLMSIS00, JB1971, JB2008) and make them available in SatelliteToolbox.jl.

For the telemetry analysis, I need to fetch the data from a database (MSSQL). I tried to use ODBC.jl, but I faced too many bugs at that time. Hence, I switched to PyODBC via PyCall.jl, which is still working, and working just perfectly. By the way, all the plots in AOCS telemetry analysis are created using PyPlot.jl.

Finally, the simulator GUI is just a visualization client. The Julia simulation core sends TCP packages with the information, and the GUI renders it. Using this strategy, I can have multiple people seeing the same simulation at the concurrent design facility. Thus, I have never tried QML.jl. When the GUI was first constructed, QML.jl was in a very early stage.

9 Likes

That sounds like a very robust design. Is this code public? It would be interesting to see it.

4 Likes

Thanks! I really want to share the code with the public. However, since INPE is a government institute, I need an authorization to do so because this is a tool created for the CPRIME (Space Mission Integrated Design Center). Things are very slow due to COVID, but I am hopping to get this clearance sometime this year. As soon as I publish the code, I will let you know.

9 Likes

It would be immensely useful if you could do a tutorial / video covering how you produced that user interface and hooked it to the analysis portions of the code. To date, I’ve mostly used Julia in what I call ‘MATLAB mode’, or in a Jupyter notebook. I’d like to graduate to hooking my code into a UI like you show.

3 Likes

Nice suggestion! I will try to do something like this when I get some time :slight_smile:

Hi! Wouldn’t this TCP-based design be similar to the way the micromagnetic simulator OOMMF handles data exchanges between its components?

By the way, very nice project! Congratulations to the team!

1 Like

Hi @rlnovak

Thanks! I do not know about the OOMMF. Thus, I cannot say if it follows the same approach. In my case, we develop a very simple protocol to transfer variable. I will try to write about it in my website when I get some spare time.

Parabéns! Li uma matéria muito legal hoje pela manhã sobre o projeto! :clap:t3::clap:t3::clap:t3:Imagens do satélite Amazonia-1 já estão disponíveis — e qualquer um pode acessar - Canaltech

2 Likes