The talk focuses on the use of Julia in real-world aerospace applications in place of C++ for the purpose of simulating large, complex systems that interface with embedded hardware and software in real-time. Leveraging memory allocation management in Julia alongside an interface with C++ shared libraries is used to perform real-time hardware-in-the-loop simulations of models written in Julia.
Fast-paced product development environments in industry can leverage Julia in their software stack to increase the pace of development and testing of cyber-physical systems. The flexibility and ease-of-use provided by a dynamically typed language, combined with the runtime speed made possible by pre-compiling, allows Julia to be used in place of C++ for the purpose of simulating large, complex systems that interface with embedded hardware and software in real-time. This talk will focus on a real-world aerospace application and survey the practices used to make this possible while suggesting capabilities for future development that would improve performance and usability. The specific techniques and features discussed include 1) running the Julia-based simulation models through a pre-compile step, 2) tracking and minimizing memory allocations to avoid garbage collection such that real-time integration with embedded hardware is possible, and 3) interfacing with C++ shared libraries that connect the Julia simulation models with the embedded hardware and software. Specific examples of applications to hardware-in-the-loop testing environments for aerospace systems will be presented. Further, we will note efforts to compile and run Julia code on an embedded system and why those efforts were abandoned.