Reproducible research materials for a sim-to-real experiment
submitted alongside the thesis to the Department of Aeronautics
in partial fulfilment of the requirements for the degree of
Master of Engineering (MEng) in Aeronautical Engineering
at
Imperial College London
Nausicaa is a reproducible research repository for an indoor fixed-wing sim-to-real flight experiment. The project studies whether a small hand-launched glider can use a controller developed in simulation to repeatedly cross an indoor flight volume containing uncertain updrafts.
The controller uses viability-guided manoeuvre primitive selection: instead of tracking one preplanned trajectory, the glider repeatedly chooses short validated manoeuvres every 0.10 s that keep the flight state viable under uncertain lift.

Example result: closed-loop control keeps the glider flying through uncertain updrafts, while a comparable open-loop launch fails.
The repository links the measured flight arena, manufactured glider, updraft models, controller development ladder, frozen controller inputs, real-flight logs, and simulation replay diagnostics behind the thesis.
For academic citation, please cite the public thesis manuscript:
@mastersthesis{li2026nausicaa_thesis,
title = {Viability-Guided Sim-to-Real Transfer for a Small Fixed-Wing Glider in Uncertain Indoor Updrafts},
author = {Li, Hanchen},
school = {Imperial College London},
year = {2026},
type = {MEng thesis},
note = {Department of Aeronautics},
doi = {10.5281/zenodo.21083555},
url = {https://doi.org/10.5281/zenodo.21083555}
}A direct citation is also avaliable when a thesis-format reference is required.
@mastersthesis{li2026nausicaa_thesis,
title = {Viability-Guided Sim-to-Real Transfer for a Small Fixed-Wing Glider in Uncertain Indoor Updrafts},
author = {Li, Hanchen},
school = {Imperial College London},
year = {2026},
type = {MEng thesis},
note = {Department of Aeronautics}
}For the archived software, datasets, logs, and reproducibility materials, please cite the Zenodo record:
@misc{li2026nausicaa_materials,
title = {Nausicaa: Project Materials for Viability-Guided Sim-to-Real Transfer for a Small Fixed-Wing Glider in Uncertain Indoor Updrafts},
author = {Li, Hanchen},
year = {2026},
publisher = {Zenodo},
version = {v2026.06-thesis},
doi = {10.5281/zenodo.20927007},
url = {https://doi.org/10.5281/zenodo.20927007}
}-
A repeatable indoor flight problem.
The project turns uncertain outdoor lift exploitation into a controlled laboratory experiment. A small hand-launched glider must cross a bounded indoor flight volume while fan-generated updrafts can either help it stay aloft or push it toward failure. -
A complete experimental workflow, not just a controller.
The repository includes the pieces needed to make the flight tests repeatable: Vicon motion capture, offboard computation, a radio-control command path, measured sensing and actuator delays, a safety-bounded arena, and the manufactured glider.

Selected flight test sensing, computation, and command architecture.
- A measured but imperfect updraft model.
The indoor flow is not assumed to be an ideal wind field. Fan-generated updrafts are measured with a scanned hot-wire anemometer, fitted with compact surrogate models, and then randomised during controller development so the final controller is not tuned to one specific flow map.

Time-lapse composite of anemometer measurements and harmonic annular Gaussian model with GP residual correction.
- A real glider model connected to the hardware.
The simulation model is built around the manufactured aircraft. It uses measured mass properties, centre of gravity, actuator timing, flight calibration data, and panelwise aerodynamic loading to capture the main behaviour of the glider while remaining fast enough for large validation runs.

Manufactured fifth iteration glider and key assembly details.
-
Control by short tested manoeuvres.
The controller repeatedly selects0.10 smanoeuvre primitives in flight. Each primitive has already been simulated and labelled with its entry conditions, likely exit outcome, failure risk, safety margin, lift exposure, energy change, and timing cost. -
A flight-ready controller library.
The dense primitive library is compressed into a smaller set of representative validated manoeuvres. This keeps the online controller fast enough for real flight while avoiding the creation of synthetic controllers that were never tested. -
Real flight transfer beyond the validation cases.
The final tests compare open-loop and closed-loop flight in still air, fixed fan layouts, and randomised fan layouts. In the random layouts that were not used during controller validation, closed-loop control substantially improves mission success over open-loop flight.
Representative flight-test cases. Click each image to open the video.
- A clear limit on what did not help much.
The repository also includes the spatial memory component and its logs, but the evidence shows that memory is not the main reason the system transfers. The main reusable result is the measured workflow plus the viability-guided primitive controller.

Example result: both the memory and no-memory flights survive and exploit the updrafts; the memory component has limited effect.
This repository is a workflow archive for the thesis. The folders correspond to the main parts of the experiment: updraft modelling, glider design, controller validation, timing tests, and simulation replay of the flight tests.
| Tool | Tested version |
|---|---|
| Windows | 11 25H2 |
| Python | 3.12.11 |
| MATLAB | R2026a |
| Arduino IDE | 2.3.8 |
| Vicon Tracker | 3.9 |
Full clone:
git clone https://github.com/GH-X-ST/Nausicaa.git
cd NausicaaPlease use partial clone and sparse checkout for lighter inspection. For example, to inspect only the controller and flight-test folders:
git clone --filter=blob:none --sparse https://github.com/GH-X-ST/Nausicaa.git
cd Nausicaa
git sparse-checkout set README.md 03_Control 04_Flight_TestChange the final git sparse-checkout set ... line to select other folders.
This repository does not currently provide a single root dependency file for the whole workflow. Therefore, you have to create a local Python environment first, then install only the packages required by the scripts you intend to run.
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pipIf PowerShell blocks virtual environment activation, call the environment interpreter directly:
.\.venv\Scripts\python.exe -m pip install --upgrade pipMATLAB, Arduino IDE, Vicon Tracker, and Flight Arena hardware are only needed for the workflows that depend on them. Most readers should start by inspecting the released data, figures, logs, and scripts before attempting any rerun.
Use the thesis chapter or appendix to choose the relevant repository folder:
| Thesis part | Repository folder |
|---|---|
| Chapter 3: system architecture and timing | B_Test_Lantency/, C_Overall_Latency/, 04_Flight_Test/ |
| Chapter 4: updraft characterisation and modelling | 01_Thermal/ |
| Chapter 5: glider design and manufacture | 02_Glider_Design/ |
| Chapter 6: controller design and validation | 03_Control/ |
| Chapter 7: real-flight transfer and replay | 04_Flight_Test/ |
| Appendix A: reproducibility and version record | this README |
| Appendices B-G: supplementary results | Corresponding workflow folders above |
| Evidence type | Repository folder | Boundary |
|---|---|---|
| Updraft modelling | 01_Thermal/ |
Repeating the physical flow measurement requires the fan and anemometer setup. |
| Glider design | 02_Glider_Design/ |
The physical aircraft depends on manufacturing tolerances and assembly. |
| Controller validation | 03_Control/ |
Dense simulation and validation sweeps may be computationally expensive. |
| Real-flight transfer | 04_Flight_Test/ |
Physical experiments cannot be exactly repeated from software alone. |
| Timing tests | B_Test_Lantency/, C_Overall_Latency/ |
Repeating the measurements requires the corresponding hardware setup. |
Do not run dense simulations, archive regeneration, or hardware-facing scripts unless you want to regenerate those artefacts.
The released software code is distributed under the MIT License. See LICENSE for details.
The thesis manuscript, media, experimental data, third-party material, and generated figures may be subject to separate copyright or repository notices. Do not assume that the MIT License applies to every non-code artefact unless it is explicitly released under the same license.

