SPIN: An Open Simulator of Realistic Spacecraft Navigation Imagery

SPIN is a spacecraft navigation imagery simulator that I built in Unity for generating synthetic in-orbit spacecraft navigation datasets. I implemented the simulator code, including the rendering pipeline, camera controls, spacecraft import flow, keypoint annotation interface, texture and lighting controls, and support for additional modalities such as depth maps.

Comparison of SPIN with other datasets.Some images generated with SPIN.

The goal was to generate controllable spacecraft imagery for pose estimation tasks where real data is limited. I used SPIN to regenerate the SPEED+ synthetic subset with improved lighting and rendering control, producing data that reduced the domain gap with the SPEED+ test images. In the image above, we show some examples of images generated with SPIN.

SPIN also supports interactive dataset authoring. Users can add spacecraft models, label keypoints directly on the object, configure camera parameters, modify scene lighting, adjust textures, and export alternate modalities for downstream training.

Overview of the SPIN tool capabilities.

To validate the tool, I replicated the synthetic subset from SPEED+ using SPIN, and trained a pose estimation model on both SPEED+ and this SPIN-generated version of SPEED+. Evaluation confirms a significant reduction in the domain gap. Models trained on the SPIN-generated dataset yielded an average 47% reduction in total pose error (S) across all testbed subsets compared to the SPEED+ baseline.

Test SetTraining DataSv (↓)Sq (↓)S (↓)
LightboxSPEED+0.3631.4011.764
SPIN0.1790.7830.962
SunlampSPEED+0.3821.7012.083
SPIN0.1180.6420.760
ROE1SPEED+0.6652.1212.786
SPIN0.2251.5631.788
ROE2SPEED+0.5021.9482.450
SPIN0.2831.1381.421

The core SPIN simulation engine is open-sourced on GitHub, while the extended interactive authoring tools are maintained as an internal Unity pipeline. The technical architecture is detailed in the arXiv preprint.