Payload ideas for the belly bay
Fuselage B carries a belly payload bay in Fuselage Mid B and Tail B, and the Survey3W mapping
camera rides on its cover (th-blender 44a57bf, 505f241). That cover set the pattern for
everything else: the payload is the cover. Five M3 x 8 countersunk screws into heat-set inserts
hold it: the Y 356 pair, the Y 485 pair and one aft-centre screw at Y 519 (Ryan, 2026-10-10;
hardware-and-consumables.md), and the whole underside of the aircraft is whatever
you screwed on. This page is a brainstorm from 2026-10-05 (Ryan and th-testpilot) of what else
could ride there, with the limits each idea has to respect. Nothing here is decided. The
Survey3W stays the first payload (Ryan, 2026-09-28).
What the bay can take
Section titled “What the bay can take”The bay opening is at about Y 434, which is 166 mm aft of the 268 mm CG. th-aeronautics gated
it on 2026-10-02 (agent-threads/airframe-design/20261002T030956Z-th-aeronautics-payload-bay-gates.md):
| Limit | Value | Note |
|---|---|---|
| All-up mass at the 21 m/s survey | 3.01 kg or less | Payload and ballast included (th-aeronautics fff6327, on th-testpilot’s measured sweep) |
| Bay payload, keel B with the Survey3W | 100 g | With 70 g of ballast at the Camera Arm |
| Bay payload, camera off, cover on | about 165 g | ESTIMATE, not flown |
| After a release | CG 256 mm or aft, 8 degrees of trim at 18 m/s | Only with the CG slider’s re-balance after the drop (cg_slider.lua v1.7); without it, a 100 g release leaves 6.8 degrees and is not allowed |
| Drag, cover fitted | none | The cover is flush to 0.01 mm, so a flush payload costs nothing |
| Return with the cargo doors open | +123 to +188 mAh | Fits the 1500 mAh LOW-to-CRT gap; a mid-survey drop is not allowed until the doors close |
| Tail B strength without the cover | margin 10 to 13 | Against the protocol’s 2 |
Those were estimates of where the CG goes. On 2026-10-07 the battery flew the bay (the payload sweep,
sim/battery/payloads.py, on th-aeronautics’ trimmed models of the first build with the Survey3W),
and the measured limits are tighter:
| Measured (SITL, the first build at 21 m/s) | Value | Note |
|---|---|---|
| Mass that flies the 21 m/s survey with its gates | about 100 g | At 185 g the aircraft stalls in every survey turn (its stall is 19.8 m/s, 21.2 in the turn) and at 273 g from the first turn; a heavier payload needs a faster survey and the energy that goes with it |
| Aircraft mass per gram of payload | about 1.5 g | The slider sits near its forward stop with the Survey3W, so the payload is balanced by nose ballast (th-aeronautics) |
| Trim margin at 18 m/s per 100 g | about 1.5 degrees lost | 10.0, 8.5, 7.4 and 7.0 degrees left at 0, 100, 185 and 273 g against the 8 the rule asks |
| A drop | 100 g at most | After a release the CG is 262, 258 or 253 mm and the margin 6.8, 5.0 or 3.4 degrees; 273 g dropped is forward of the 256 mm limit. The return and the dock landing still pass; a fixed-wing slowdown after the drop is the hazard |
| Reserve and dock | unchanged | The return scales with the mass; the dock captures 13 to 14 of 14 at every point |
| A payload with no ballast (CG 274 to 283 mm) | not a flight case | Its trim and stall read better in SITL than the trimmed cases, because the model’s pitch aero is linear in the 17 to 19 m/s band where the 270 mm limit comes from (the pitch-stiffness dip); that is why 270 is a hard limit and not a gate the battery can fly |
So this build’s bay is a 100 g bay at the survey speed, with a 100 g drop at the edge of the trim rule.
th-aeronautics’ revised gate (2026-10-07, agent-threads/airframe-design/20261007T070520Z): all-up
3.01 kg or less at the 21 m/s survey, payload and ballast included, which is 100 g with the Survey3W
and about 165 g with the camera off (estimate); the 185 and 273 g gates are withdrawn. After a
release: the CG at 256 mm or aft and 8 degrees of trim left, which the dropped-and-held 100 g case
fails (6.8), and a variant that re-balances with the slider after the release (100 g returns to
267.4 mm) passes it: 8.75 degrees of trim left at 18 m/s, the reserve return and the dock landing
unchanged (flown 2026-10-07). So a 100 g release is allowed, with the slider’s post-release move
(cg_slider.lua v1.7, th-avionics: the balance’s CGS_DROP_CG and CGS_AFT_MM on the
first-flight card) and 0.75 degrees to spare. Without the re-balance it is not allowed: the
dropped-and-held case leaves 6.8 degrees (th-aeronautics, 2026-10-07).
The levers are Fuselage C’s slider stop at pack front Y 70, worth about 45 g of ballast at any
payload (th-aeronautics), and the survey speed. The masses and lever arms were estimates until
th-main sliced Mid B and Tail B; cg.md has the current build-up. The cargo door is deferred until Ryan revises its actuation
(hardware-and-consumables.md), so drop payloads wait for it; cover payloads do not.
First: a contract, not a payload
Section titled “First: a contract, not a payload”The idea that makes the bay a system rather than a hole is a fixed interface inside it. A small connector in the bay’s roof carrying pack voltage, 5 V, a CAN or UART pair and one PWM, plus a way for the flight controller to read which cartridge is fitted (an I2C EEPROM or a resistor ladder on an ADC pin). A Lua script then loads that cartridge’s profile: its mass and ballast note, its mission type, its pre-arm checks and which outputs it may drive. The aircraft knows what it carries, and every later payload is a printed sled and a profile file. The DroneCAN path fits this naturally once bus 2 exists on our own flight controller (th-eda, th-avionics); on the LUX F765 a UART is the practical start.
Talk about your payload
Section titled “Talk about your payload”A payload brief lands as an issue in the public repo,
terrahawk-public, under the
payload label (Ryan, 2026-10-05). Its “Payload brief” issue form asks for the same fields the
cartridge profile and the SITL sweep need: what it is, what it earns, mass, size, power,
interface, mission, whether it drops, and anything else. For now the form takes a Gitea account
(the crew link first; an anonymous form on the site waits for spam protection). The public repo
also carries releases; kit STLs and parts derived from them in full are never published there.
The candidates
Section titled “The candidates”Masses are estimates from vendor pages, not weighed parts, and most sit well inside the bay’s
budget. The site’s Payloads section (/payloads/, a card and a page per idea) reads one file per
idea from docs/payloads/ideas/<slug>.yaml (th-docs-site, 2026-10-05); the table below and those
files must say the same thing, and a new idea needs both.
| Payload | Mass (ESTIMATE) | What it earns | Notes |
|---|---|---|---|
| Thermal core (FLIR Lepton 3.5 or Boson 320) | 10 to 40 g with a carrier | Cattle at night, a stuck pivot, a leaking canal, failing septic drain fields (a warm wet patch at dawn), roof heat loss | The strongest candidate: small, flush, and the morning dock flight is its natural slot |
| Scheduled dailies on the Survey3W | 0 | The same NDVI line every morning, stock tank levels, fence lines, snow depth by photogrammetry in winter | No new hardware; the hangar’s self-charging is what makes a boring flight worth flying daily |
| LoRa soil pucks, dropped | 10 to 20 g each | Soil moisture and temperature across a field with no cell coverage | Needs the cargo door. The aircraft is then a data mule: it flies over, wakes them, collects, and the hangar’s LoRa base already exists |
| Seed balls, beneficial insects, pheromone dispensers | up to the drop limit | Reseeding, biological control, orchard mating disruption | Needs the cargo door; a mid-survey drop is not allowed until the doors close after release |
| Atmospheric sounding (temperature, humidity, pressure, PM2.5) | 10 to 30 g | The inversion height for an orchard’s frost-fan decision; wildfire smoke layers | A quadplane climbs well; a two-minute vertical profile is a mission the Survey3W cannot do |
| RTL-SDR or similar | about 25 g | A 3D heat map of the LoRa and ELRS links and of interference | th-telemetry’s domain; also measures our own keel antennas in flight |
| Loitering repeater (LoRa, Meshtastic or ELRS) | 20 to 40 g | Coverage over a canyon for a ground crew or a search | Fixed-wing loiter is the efficient mode for this |
| ADS-B receiver | 10 to 20 g | Traffic awareness for the ground station | A safety payload as much as a sensor; feeds ArduPilot’s ADSB avoidance |
| On-board detection (small SBC and camera) | 60 to 120 g | Counts and finds things and reports text over LoRa: “41 head, one down by the north fence” | No video link needed; pairs with the dock’s daily flights |
| Tethered dip sampler (micro winch) | about 50 g | A water sample from a stock pond or canal; conductivity and pH | Hover mode over water; the winch needs its own release logic |
| Acoustic recorder (AudioMoth class) | about 80 g | Bird and bat surveys | Prop noise is the problem; fixed-wing loiter at altitude or a drop-and-collect puck |
| Fluxgate magnetometer on a boom | 30 to 60 g | Buried tanks and pipes, archaeology | Hard: the motors’ field is the enemy, which is exactly what tools/fit_compass_mot.py measures |
The test pilot’s part
Section titled “The test pilot’s part”Every row above is a mass and a CG shift at the same station, and some add drag or release in
flight. A payload sweep in the SITL battery (sim/battery/) would fly any cartridge from its
mass, its drag if it protrudes, and whether it drops, before it flies for real: trim and
ballast from cg.md, the reserve rows with the return cost, and the drop case with the doors
open. The rows do not exist yet; they wait for Ryan’s go.
Owners
Section titled “Owners”The bay geometry and any sled is th-blender’s. Mass, CG and ballast are th-aeronautics’. Radio payloads are th-telemetry’s. The cartridge interface and its Lua profile are th-avionics’. The decision on which payload comes second is Ryan’s.
Source: docs/payloads.md in the repo. Edit it there; this page is generated.
Comments
Comment on the whole page here, or on one section or step with the button beside it.