← All projectsGitHub
Open-source purpose-built robots

Which body carries a survey payload furthest per kWh? Hull choice for small autonomous boats

research/marine-hull

Research programme (proposal stage): energy per survey kilometre of hull types for 100 to 500 kg autonomous boats; with a Michell wave term a catamaran out-ranges a monohull in 3.3% of 6,561 cases, none at equal length; with Slocum coefficients from the gliderflight package a glider never out-ranges a same-mass propeller AUV at equal hotel load (0 of 2,430 cases); it breaks even when the AUV's hotel load is about 5 times its own; a REMUS-100-class AUV's non-propulsion load implied by vendor endurance is 104 to 175 W, far above that, so the glider out-ranges it in every case on energy per metre (at a tenth of the speed); a Savitsky planing hull reaches at most 0.14 of the monohull range (0 of 48 cases); a SWATH (two submerged torpedoes on struts) out-ranges the monohull in none of 4,374 swept pairs; charging panel mass to the battery (2 to 10 kg/m2, swept) cuts the median solar range multiplier from 2.01 to 1.64 at worst, and the full deck stays the best array wherever range is finite; against ten years of daily NASA POWER insolation a threshold speed policy (slow or hold when the pack is under 30%) never raises km/day over a fixed 1 m/s but cuts pack-empty days, e.g. 25.4% to 1.5% for a 4 m boat at 25 N

55 tests

What it found

An open research programme on which body (monohull, catamaran, SWATH, planing hull, hydrofoil, glider, AUV) carries a survey payload furthest per kWh, and where that ranking flips under uncertain drag inputs. Milestone 1 is a stdlib calculator (ITTC 1957 friction line checked analytically, form factor, wetted-area constant, hotel load; 9 tests) and a 6,561-case grid for a 200 kg craft: a catamaran of two slender demi-hulls out-ranges a monohull in 27 cases (0.4%) and in none of the 2,187 equal-length cases; the monohull's best speed is about 1 m/s, set by a 30 W hotel load, with range 560 to 1,188 km as an upper bound. The wave-resistance term is a placeholder and no published resistance curve is reproduced yet, so this is a friction-limited comparison; hull-form constants, efficiencies and water properties are swept or unsourced, and stability and deck area are not modelled. Two DOIs written from memory were wrong and were corrected by the citation check. Preliminary; simulation only. Milestone 2 replaces the placeholder wave term with Michell thin-ship theory on Wigley hulls: the catamaran wins 3.3% of 6,561 cases and none at equal length, and wave resistance changes best range by about 4% because the optimum speed (about 1 m/s) is at Froude number 0.16. Milestone 3a checks it against one published Wigley tank point (Ju 1983, via Wang et al. 2017): Michell plus the ITTC 1957 line with no form factor is within +1 to +5% of the measured total-resistance coefficient 4.16e-3 (water temperature unknown, 10 to 20 C), while the programme's central form factor 0.25 is 18 to 25% high; the form factor that fits is about 0, below the swept 0.10 to 0.40 box. One speed, second-hand source, geometry assumed. Milestone 4 compares a quasi-steady buoyancy glider with a same-mass propeller AUV over 19,683 swept cases (no glider coefficient is sourced: the papers could not be fetched): at equal hotel load the glider has the longer best range in 5.9% of cases, at 5 times the AUV hotel load in 89%, so the advantage comes from hotel load rather than hydrodynamics; glider speed tops out at 0.13 to 0.70 m/s, and the proposal's 0.4 to 0.9 m/s crossover is not supported. Not checked against a fielded glider's range. Milestone 4b re-ran it with Slocum aerodynamics read from the MIT-licensed gliderflight package (lift slope 7.5/rad, K 10.5/rad²): the glider out-ranges the AUV in 0 of 2,430 cases at equal hotel load, and the break-even AUV hotel load is a median 4.9 times the glider's (10th to 90th percentile 2.4 to 10.7); hotel loads and pump efficiency remain swept, not sourced. Milestone 4c reads a REMUS-100-class AUV's total power from vendor endurance (1.5 kWh, 12 h at 1.5 m/s to 8 h at 3 kn: 125 to 188 W), subtracts the model's 13 to 21 W of propulsion, and gets a 104 to 175 W non-propulsion load; against it the glider has the longer best range in all 810 x 18 cases. The vendor figures are approximate and mutually inconsistent, and energy per metre ignores that the glider is about seven times slower. Milestone 5 rungs: a lifting-line hydrofoil (all foil coefficients swept) and a Savitsky (1964) planing hull both fail to out-range the 4 m monohull (0 of 2,916 and 0 of 48 cases; range ratios up to 0.25 and 0.14), so they are transit-speed options, not endurance options; no tank data checked. Milestone 5b adds a SWATH rung (two fully submerged parabolic torpedoes on Wigley-form struts, Michell wave drag for torpedoes and struts, 4,374 pairs against the 4 m monohull): the SWATH out-ranges the monohull in none, at its best speed (range ratio median 0.69, best 0.83) or at a fixed 3 m/s (median 0.46), because strut wave drag and wetted area outweigh the torpedoes' small wave drag at 200 kg; torpedo wave drag falls with depth at about 2 k0 as theory says, but no SWATH tank curve was reachable, and stability and seakeeping are not modelled. Milestone 5d charges panel mass to the battery (areal mass 2, 5 and 10 kg/m2, swept, not sourced) and lets the array area vary: where the array cannot carry the boat the full deck is still the best layout in every finite-range case, but the range multiplier falls from a median 2.01 (no mass) to 1.95, 1.83 and 1.64; neutrality at 1 m/s is unchanged at 25.1%, by construction. Milestone 5g runs three speed policies against ten years of daily NASA POWER insolation at five sites: slowing when the pack is under 30% never raises distance (hotel load dominates at 0.5 m/s) but cuts pack-empty days, e.g. 25.4% to 4.2% (slow) and 1.5% (hold) for a 4 m boat at 25 N; above 42 N the deficit is seasonal and policy barely helps. Threshold and slow speed are not swept. Milestone 3b checks the placeholder wave term against five bare-hull tank speeds of a published 2.8 m catamaran (Zenodo 18459868, CC BY 4.0; geometry and water type inferred from the tables): the central model (k = 0.25) is 35 to 43% low at Fn 0.33 to 0.58 and within 10% at Fn 0.72 and 0.79; no single wave scale keeps all five speeds within 20% (best worst-case error 29 to 32%), so the placeholder is not safe for catamarans above Fn 0.3. The programme's survey speeds (Fn about 0.16) are below the data's range, and H3 (Holtrop-Mennen) is untouched.

Research log

Ongoing: each run adds a batch and an entry, newest first. Source: LOG.md.

2026-10-31 · Milestone 7e: H5 for the glider against the propeller AUV: what fixed-energy gap flips the order? (not pre-registered)

2026-10-31 · Milestone 7d: can a hull-specific fixed mission energy flip the mono/cat ranking? (not pre-registered)

2026-10-31 · Milestone 7c: H1 and H5 tested as the proposal states them (planned before running)

### Outcome (experiments/results_h1_h5.txt)

2026-10-30 · Milestone 7b: draft the introduction, model and results table (no experiment run)

2026-10-30 · Milestone 3b: a published catamaran bare-hull tank curve against the programme's displacement resistance model (planned before running)

2026-10-30 · Milestone 6g: with three sea states instead of two, how much of the oracle gain does persistence capture? (planned before running)

### Outcome of milestone 6g (experiments/run_solar_seastate_persist3.py, about 6 minutes, seeded; experiments/results_solar_seastate_persist3.txt; 30 cells)

### Outcome of milestone 3b (experiments/run_catamaran_tank.py, under 1 second, deterministic; experiments/results_catamaran_tank.txt; data experiments/data/catamaran_bare_hull_tank.csv)

2026-10-30 · Milestone 3a: one published Wigley tank point against the Michell + ITTC model (planned before running)

### Outcome of milestone 3a (experiments/run_wigley_tank.py, under 1 second, deterministic; experiments/results_wigley_tank.txt)

2026-10-30 · Milestone 6f: with a genuinely iid sea state, what does the persistence forecast capture, and how does it grow with spell length? (planned before running)

### Outcome of milestone 6f (experiments/run_solar_seastate_persist_iid.py, 17 seconds, seeded; experiments/results_solar_seastate_persist_iid.txt; 30 cells)

2026-10-30 · Milestone 6e: does a no-parameter persistence forecast (tomorrow = today) capture the oracle back-off gain? (planned before reading the output)

### Outcome of milestone 6e (experiments/run_solar_seastate_persist.py, 10 seconds, seeded; experiments/results_solar_seastate_persist.txt; 20 cells)

2026-10-30 · Milestone 6d: how much of the oracle back-off gain survives a forecast of finite skill? (planned before running)

### Outcome of milestone 6d (experiments/run_solar_seastate_forecast.py, about 8 minutes, seeded; experiments/results_solar_seastate_forecast.txt; 20 cells)

2026-10-29 · Milestone 6c: do persistent rough spells and a small pack change what a back-off policy gains over the best constant speed? (planned before running)

### Outcome of milestone 6c (experiments/run_solar_seastate_spells.py, about 4 minutes, seeded; experiments/results_solar_seastate_spells.txt)

2026-10-29 · Milestone 6b: if rough days are intermittent, how much does a speed policy that backs off on rough days gain over the best constant speed? (planned before running)

### Outcome of milestone 6b (experiments/run_solar_seastate_policy.py, about 1 minute, seeded; experiments/results_solar_seastate_policy.txt)

2026-10-29 · Milestone 6a: how much does a sea-state resistance multiplier cost the deck-solar boat in km/day, and does it move the best speed or the site ordering? (planned before running)

### Outcome of milestone 6a (experiments/run_solar_seastate.py, a few seconds, deterministic; experiments/results_solar_seastate.txt)

2026-10-29 · Milestone 7a: paper skeleton from logged results (no experiment run)

2026-10-29 · Milestone 5m: what interval does km/day carry when every power-side input is drawn jointly from its range? (planned before running)

### Outcome of milestone 5m (experiments/run_solar_mc.py, 2 min, seeded; experiments/results_solar_mc.txt)

2026-10-29 · Milestone 5l: does the best cruise speed and km/day survive swapping the unsourced hotel load and panel efficiency for published figures? (planned before running)

### Outcome of milestone 5l (experiments/run_solar_sourced.py, a few seconds, deterministic; experiments/results_solar_sourced.txt)

2026-10-29 · Milestone 5k: which of the six inputs moves the best cruise speed and the km/day most? (planned before running)

### Outcome of milestone 5k (experiments/run_solar_sensitivity.py, a few seconds, deterministic; experiments/results_solar_sensitivity.txt)

2026-10-29 · Milestone 5j: does the best constant speed of a deck-solar boat survive the unsourced hull constants? (planned before running)

### Outcome of milestone 5j (experiments/run_solar_hull_uncertainty.py, 4 s, deterministic; experiments/results_solar_hull_uncertainty.txt)

2026-10-29 · Milestone 5i: is 5h's surge gain a property of the rule, or of the best constant speed it was compared with? (log written after the one run; no prediction was committed before it)

### Outcome of milestone 5i (experiments/run_solar_surge_holdout.py, a few seconds, deterministic; experiments/results_solar_surge_holdout.txt)

2026-10-28 · Milestone 5h: is 5g's "slowing never helps" a property of the thresholds I picked, or of the boat? (planned before running)

### Outcome of milestone 5h (experiments/run_solar_policy_bound.py, under 3 s, deterministic; experiments/results_solar_policy_bound.txt)

2026-10-28 · Milestone 5g: does slowing down when the pack is low keep a deck-solar boat moving, or only keep it alive? (log written after the one run; no prediction was committed before it)

### Outcome of milestone 5g (experiments/run_solar_policy.py, under 1 s, deterministic; experiments/results_solar_policy.txt)

2026-10-28 · Milestone 5f: do daily cloud runs break the monthly-mean "energy-neutral" verdict, and how big a pack bridges a year? (planned before running)

### Outcome of milestone 5f (experiments/run_solar_storm.py, under 1 s, deterministic; experiments/results_solar_storm.txt; data as fetched in experiments/data/daily_*.json, 3,653 days per site)

2026-10-28 · Milestone 5e: with sourced insolation at five named sites, in which months can the 5 m monohull sustain 1 m/s on deck solar? (planned before running)

### Outcome of milestone 5e (experiments/run_solar_sites.py, under 1 s, deterministic; experiments/results_solar_sites.txt; data as fetched in experiments/data/)

2026-10-28 · Milestone 5d: does charging panel mass to the battery change the solar verdict, and is the full deck the best array? (planned before running)

### Outcome of milestone 5d (experiments/run_solar_mass.py, under 10 s, deterministic; experiments/results_solar_mass.txt; 4,374 cases per areal mass; 46 tests pass)

2026-10-28 · Milestone 5c: how much deck-mounted solar makes the 4 m monohull energy-neutral at survey speed? (planned before running)

### Outcome of milestone 5c (experiments/run_solar.py, under 5 s, deterministic; experiments/results_solar.txt; 4,374 cases; 45 tests pass)

2026-10-28 · Milestone 5b: does a SWATH (two submerged torpedoes on surface-piercing struts) out-range the 4 m monohull at 200 kg? (predictions fixed before reading the output; this entry was written after the first run, which was the only run)

### Outcome of milestone 5b (experiments/run_swath.py, 25 s, deterministic; experiments/results_swath.txt; 4,374 pairs)

2026-10-28 · Milestone 5 (planing rung): can a planing hull out-range the displacement monohull at 200 kg? (prediction held in the plan, written into the log after the first run)

### Outcome (experiments/run_planing.py, under 1 s, deterministic; experiments/results_planing.txt; 48 cases; 34 tests pass)

2026-10-27 · Milestone 4f: how strong a cross-current stops the glider's energy win over the AUV? (planned before running)

### Outcome of milestone 4f (experiments/run_current.py, under 1 s, deterministic; experiments/results_current.txt; 810 glider x 18 AUV cases)

2026-10-27 · Milestone 4e: what is a day of delay worth, in kWh, at which the glider and the AUV tie on a 100 km transect? (planned before running)

### Outcome of milestone 4e (experiments/run_value.py, under 1 s, deterministic; experiments/results_value.txt; 14,580 pairs)

2026-10-27 · Milestone 4d: does the glider's energy win survive a time penalty? Energy-delay per metre against the REMUS-class AUV (planned before running)

### Outcome of milestone 4d (experiments/run_time.py, under 1 s; experiments/results_time.txt; 14,580 pairs)

2026-10-27 · Milestone 4c: does a REMUS-100-class hotel load, read from its endurance figures, put the AUV above or below the glider's break-even? (planned before running)

### Outcome of milestone 4c (experiments/run_remus.py, under 1 s, deterministic; experiments/results_remus.txt; 18 AUV cases x 810 glider cases)

2026-10-27 · Milestone 5 (hydrofoil rung): can a foilborne craft out-range the displacement monohull at 200 kg? (prediction stated before the sweep was run)

### Outcome (experiments/results_foil.txt, under 1 s, deterministic; 26 tests pass)

2026-10-27 · Milestone 4b: does the glider-vs-AUV verdict survive Slocum coefficients taken from a source? (planned before running)

### Outcome of milestone 4b (experiments/run_slocum.py, under 1 s, deterministic; experiments/results_slocum.txt; 2,430 cases)

2026-10-27 · Milestone 4: where does a buoyancy glider stop beating a propeller AUV? (planned before running)

### Outcome of milestone 4 (experiments/run_glider.py, under 1 s; experiments/results_glider.txt)

2026-10-27 · Milestone 2: does a Michell wave term change the catamaran verdict? (planned before running)

### Outcome of milestone 2 (experiments/run_michell.py, 1.5 s, deterministic; experiments/results_michell.txt; 6,561 cases)

2026-10-27 · Milestone 1: does a catamaran out-range a monohull at survey speed? (planned before running)

### Outcome (experiments/results.txt)

Paper, code and results

More in Open-source purpose-built robots

All 44 Open-source purpose-built robots projects →

Other research topics

Proper scoring & elicitation28Effort & peer prediction9Verification games & slashing19Detection & tolerances14Markets as routers13Prediction-market design9Paying contributors8Decentralised training systems23Digital twins & sim-to-real164LLM chip design loops40Robot manufacturing loops53Ambient AI assistant46Self-replicating manufacturing34Simulation-first design64Engineered clothing45Task-specific AI accelerators40Algorithmic chip-design loops42Open-source purpose-built robots44The software-engineering loop43Adversarial human imitation41Open-source residential construction41Autonomous multi-angle capture34Sensing, imaging and 3D31Energy supply and dense energy storage39Robot societies among people31Agentic co-design of low-cost robots27Laundry-hanging robots25Machine learning on qualitative data23Robots on the building site27Civilizations & group psychology1History & human sciences1

Produced with AI assistance (Claude). Results are from the code in this repository and are simulated or stylised unless the abstract says otherwise; nothing here implies affiliation with or endorsement by any lab, researcher or company cited. MIT licensed.