JPL Unreal Darts
January ’22 — May ’22 || C++ Unreal Engine Linux
Software Engineering Internship at NASA Jet Propulsion Labs
I implemented many new feautures in C++, debugged, and streamlined existing components in JPL’s DARTS (Dynamics and Real-Time Simulation) Unreal Engine visualizer.
Journey to simulate the Perseverence Rover
My goal was simulate the Perseverence Rover moving across Martian terrain.
When I came on board, the Unreal Darts visualizer produced incorrect visualizations and was extremely unstable.
Since there was no compatible debugger for Unreal Engine in Linux, I exposed a lot of the C++ functions into Blueprints and then used them to help debug my C++ code.
I created new features to help me debug the game: save, load, and delete scenes. These features also have other use cases:
- Help engineers repeat visualizations without redoing simulations.
- Unreal Darts maintainers can create custom scenes in JSON without scripting simulations.
As running real time simulations would crash the program, I had to optimize the code by using faster data structures and search techniques.
After these fixes I was able to run the simulation!
Why did JPL adopt Unreal for visualizations?
As inhouse visualization engines are increasingly harder to maintain, the DARTS lab wanted to create a visualization tool using Unreal Engine. Some advantages with Unreal are:
- They do not need to maintain their own graphics pipeline
- Unreal is compatible with a multitude of file formats
- The Unreal Marketplace provides a source of curated and high-quality assets that are cheap to buy and easy to implement
- Unreal is open source and its source code be expanded upon if need be.