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.


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.
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 Set | Training Data | Sv (↓) | Sq (↓) | S (↓) |
|---|---|---|---|---|
| Lightbox | SPEED+ | 0.363 | 1.401 | 1.764 |
| SPIN | 0.179 | 0.783 | 0.962 | |
| Sunlamp | SPEED+ | 0.382 | 1.701 | 2.083 |
| SPIN | 0.118 | 0.642 | 0.760 | |
| ROE1 | SPEED+ | 0.665 | 2.121 | 2.786 |
| SPIN | 0.225 | 1.563 | 1.788 | |
| ROE2 | SPEED+ | 0.502 | 1.948 | 2.450 |
| SPIN | 0.283 | 1.138 | 1.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.
