Sitemap

JPL Unreal Darts

January ’22 — May ’22 || C++ Unreal Engine Linux

2 min readJan 4, 2023

--

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.

Press enter or click to view image in full size
Perseverance Rover simulation using DSim

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.

--

--

No responses yet