Ethan Sheehan
All work — Summer 2025

Bristol Flight Lab

AVDASI2 avionics teaching resources: the Cube guide, an example ground station and the docs site the Flight Lab still runs.

Two-panel chart: every commit in the four AVDASI2 repos from May to November 2025 on one lane per repo, coloured by author, then horizontal bars showing how much of the 20 July build is still live at HEAD, from 100 percent of images down to 32 percent of all prose
Who committed what, May to Nov 2025, and what of the 20 Jul build is still live at docs HEAD c64150d.
Org commits
41 / 123
Docs site built in
28 commits
Images surviving
29 / 29
01

The summer

Summer 2025 at the Bristol Flight Lab, supervised by Steve Bullock. The job was the avionics teaching resources for AVDASI2, the Year-2 design, build and test unit I had just taken myself. Students are handed a Cube Orange+ running ArduPilot, an ESP8266 Wi-Fi telemetry module, a Taranis radio, servos and the in-house 12-channel pressure system, and have to replace Mission Planner with a ground station of their own. My plan from 12 May: a Cube configuration guide, a minimum-viable example ground station and a flat-board demonstration, with mechanical demonstrators and a servo-calibration tool as stretch goals.

The AVDASI 2 docs landing page in July 2025: Flight Lab red header, a paragraph explaining the auto-synced code repo, and Avionics, Aerodynamics and Structures sections in the left nav
Landing page, 20 Jul 2025. The auto-sync explanation and the literate-nav sections.
The same July 2025 landing page in the hand-written dark colour scheme
The same page in the dark scheme, a hand-written palette.
02

One sitting

The guide started as a Word document in May. On 20 July it became an MkDocs Material site in one sitting: 28 commits between 15:26 and 20:36, nine avionics pages of around 470 lines of Markdown, 20 screenshots, a Flight Lab red theme with a hand-written dark scheme. The part I am most pleased with is the CI workflow. On every push it clones the example-code repo into the docs, so the code pages are always the live source and a student cloning avdasi2-avionics-demo gets exactly what the guide shows. The tone is that of someone who had just done the unit: "If you see blue smoke, it's too late."

The Avionics Guidelines hub page with an abstract admonition walking through each subsystem
The Avionics Guidelines hub: the abstract walks through every subsystem.
Full-length Cube Information page in dark mode: a warning admonition about not blowing up the Cube, a requirements list and a port table
Cube Information, dark: the "don't blow it up" warning, requirements list, port table.
Full-length Data Logging page: pulling .bin logs from the Cube, Lua logging, and the MATLAB Flight Log Analyser walkthrough ending in the pitch plot
Data Logging, full page: .bin logs, Lua logging, the MATLAB walkthrough ending in the pitch plot.
Full-length I2C and Lua page: wiring, enabling SCR_ENABLE, i2c:get_device and a section on endianness
I2C and Lua, full page: wiring, SCR_ENABLE, i2c:get_device, endianness.
The Example Code page with main.py rendered inline from the example repo, author line visible
Example Code: main.py pulled from the live repo at build time.
The Example Code page in the dark scheme, with the hand-written code-highlight colours
The same page in the dark scheme, code-highlight colours included.
03

The Mission Planner guide

Before writing a ground station, students need the Cube talking in Mission Planner: connect over USB or Wi-Fi UDP, turn the buzzer down so the Cube doesn't scream at you, toggle servo safety from the hidden Ctrl-F menu, arm from the Actions panel, and move servos by hand from the Servo/Relay panel. The red circles are mine.

Data logging goes the other way: download the DataFlash .bin log over MAVLink, then walk it through MATLAB's UAV Toolbox Flight Log Analyser. The last capture is the one real data plot in the guide: pitch against desired pitch from a fuselage test, switching between Manual and Stabilize while tuning PD gains.

Mission Planner main screen with the COM/AUTO selector and Connect button circled in red at top right
Mission Planner: COM/AUTO selector and Connect, top right.
Mission Planner Config, Full Parameter List, with NTF_BUZZ_VOLUME circled
Full Parameter List, NTF_BUZZ_VOLUME: so the Cube doesn't scream at you.
Mission Planner's hidden Ctrl-F menu with the Toggle Servo Safety button circled
Ctrl-F hidden menu: Toggle Servo Safety.
Mission Planner Actions panel with the arm button and manual flight-mode set circled
Actions panel: arm, and set the flight mode to Manual.
Mission Planner Servo/Relay panel with per-channel position sliders
Servo/Relay panel: moving servos by hand before writing a GCS.
Mission Planner DataFlash Logs tab with Download via MAVLink and Review a Log circled
DataFlash Logs: Download via MAVLink, Review a Log.
Mission Planner's Log Downloader window listing the .bin logs on the Cube
The Log Downloader window.
MATLAB Add-On Explorer showing the UAV Toolbox install page
MATLAB: install the UAV Toolbox add-on.
MATLAB Flight Log Analyzer with the Import menu open and From BIN circled
Flight Log Analyser: Import, From BIN.
Flight Log Analyzer Add Custom Signal dialog mapping the ATT message and TimeUS
Add Custom Signal: ATT plus TimeUS.
Flight Log Analyzer toolbar with Add Figure and the XY plot type circled
Add Figure: a custom XY plot.
Flight Log Analyzer signal browser binding pitch and desired pitch to the figure axes
Signal browser: bind the signals to the figure.
Flight Log Analyzer plot of pitch and desired pitch against time from a Cube .bin log, with a flight-mode table alternating Manual, FBWA and Stabilize
Real Cube log data: pitch and desired pitch, fuselage test, Manual to Stabilize with PD changes.
04

The ground station

The example GCS is Python and pymavlink, written between 26 May and 8 June in five commits. GS connects on udp:0.0.0.0:14550, waits for the heartbeat, listens for SYS_STATUS and flags a lost link after two seconds. Arm handles arm, disarm and the safety switch. Servo, co-written with Lucas Dick, maps angle to PWM and writes the SERVOn parameters. UI is a tkinter panel, and main threads them together with the listener on a daemon thread. Deliberately minimum-viable, with potential upgrades listed in the header of each file, because the point is for students to replace it. Two placeholders, the flap and pressure sensor examples, were planned in May and never written.

05

What survived

I left in July. From 19 September Steve Bullock restructured the guide into a numbered step-by-step, and in November Tim W. and Sid Reid added the Lua, I2C and ADC content. Of the 123 commits in the AVDASI2 org, 41 are mine; the other 82 are Flight Lab staff after the handover. Four months later, at docs HEAD c64150d, the live site still runs on the July build: all 29 images byte-identical, extra.css with zero diff, the CI workflow one line different, the Example Code page 38 of 42 lines verbatim, and 225 of 696 lines of live prose still mine. That was the goal: build the scaffold well enough that the people who take it over keep it.

The live AVDASI 2 docs landing page in September 2026, same red header and theme with rewritten landing copy
The live site, Sep 2026: same theme, Steve's rewritten landing copy.
The live landing page in September 2026 in the dark scheme, unchanged from the July 2025 palette
The live site in the dark scheme. extra.css: zero diff.
The live Example Code page in September 2026, still inlining the example repo
Example Code, live: still my text, still fed from my repo by my workflow. 38 of 42 lines verbatim.
The live step-by-step guide index, numbered 00 to 08, after the September restructure
The post-handover structure: step-by-step guide 00 to 08.
The live Avionics section landing page in September 2026
Avionics, live, Sep 2026.
06

Paper trail

The plan from 12 May, the guide as a Word document before it was a website, the twelve-slide deck of raw Mission Planner and MATLAB captures that became the annotated screenshots, and the kit list and bill of materials each team is handed: two Cube Orange+, Wi-Fi chips, a Taranis, a BEC, test servos and the pressure system. Plan items 4 to 7, the flat-board demonstration, mechanical demonstrators and the servo-calibration tool, have no trace in these sources.