A desktop app that plays back synchronized video and sensor data from a flight or recording session. As the video plays, you can watch live readings for temperature, pressure, altitude, humidity, and orientation — plus a rotating 3D model that shows the device's attitude in real time.
| Element | Description |
|---|---|
| Video feed | Frame-by-frame playback of the recorded footage |
| Telemetry readouts | Temperature, pressure, altitude, humidity, roll, pitch, yaw |
| 3D model | Rotates in sync with the real orientation data |
| Slider | Scrub to any point in the recording |
| Play / Pause | Start or stop automatic playback |
You need Python 3.8 or newer installed on your computer. If you don't have it, download it from python.org — make sure to check "Add Python to PATH" during installation.
Open a terminal (search for Command Prompt or PowerShell on Windows) and run:
pip install PyQt5 pandas numpy matplotlib trimesh
This only needs to be done once.
- Double-click
main.py(or runpython main.pyin a terminal from this folder). - A folder picker dialog will open. Navigate to your session folder and click Select Folder.
- The dashboard will open automatically.
Tip: You can also drag
main.pyonto a Python launcher shortcut, or right-click it and choose Open with → Python.
Each recording session lives in its own folder. The folder must contain:
my_session/
├── data.csv ← telemetry data (required)
├── IMG_0.jpg
├── IMG_1.jpg
├── IMG_2.jpg
└── ... ← one JPG per frame (required)
The data.csv file must have these columns (in any order):
| Column | Description |
|---|---|
timestamp_ms |
Time of the reading in milliseconds |
temperature_C |
Temperature in degrees Celsius |
pressure_hPa |
Atmospheric pressure in hectopascals |
alt_ft |
Altitude in feet |
humidity_% |
Relative humidity percentage |
pitch_deg |
Pitch angle in degrees |
roll_deg |
Roll angle in degrees |
yaw_deg |
Yaw (heading) angle in degrees |
The number of rows in data.csv should match the number of JPG frames in the folder.
Keep these two files in the same folder at all times:
main.py— the applicationmodel.obj— the 3D model used for the orientation display
Your session data folders can be stored anywhere on your computer — you'll browse to them each time you open the app.
"No module named PyQt5" (or similar)
Run pip install PyQt5 pandas numpy matplotlib trimesh again in your terminal.
"Could not find data.csv"
Make sure your session folder contains a file named exactly data.csv (lowercase, no spaces).
"No .jpg image files found"
Make sure your image frames are saved as .jpg or .JPG files inside the session folder.
"model.obj not found"
Make sure model.obj is in the same folder as main.py. Do not move or rename it.
The 3D model looks wrong or frozen This is normal if the orientation data has very small changes — the model only redraws when the angle changes by more than 0.5 degrees.