Cognition
What the fish does on its own, and what the fleet does together.
Per-fish behaviors
Five primary behaviors, scheduled by the onboard policy on the shoal-soc PIM block:
- Forage — gradient-following plume tracking, optimizing for MFC power output. The fish is hungry and looking for food.
- Survey — spatial-coverage pattern, sampling water quality on a grid. Commanded mission, energy-budget aware.
- Capture — when in a microplastic / heavy metal hotspot, slow down and operate adsorptive surfaces and filtration.
- Return — navigate to nearest dock when battery low, cartridge full, or mission complete.
- Idle — park on substrate, low-power listen for command.
Plume tracking
Hybrid approach combining literature-validated methods:
- Flow-sensing primary — bilateral lateral-line MEMS detects upstream/downstream cues. Works even when the chemical signal is intermittent. Inspired by Caltech CARL.
- Chemotaxis secondary — bilateral electrochemical sensor differential for fine-grained gradient.
- Infotaxis fallback — when no gradient is detected, maximize information gain (Vergassola formulation).
- MFC output as guidance — power increases when on substrate. The simplest and most biologically faithful signal: the fish is more energetic where the food is.
Trained in CFD simulation (Stonefish + custom plume models), refined in tank, deployed with online adaptation.
Fleet-level behaviors
Coordinated at the dock and in the cloud:
- Coverage planning — which fish goes where, based on prior pollution map and sensor revisit times
- Cartridge rotation — schedule cartridge swaps based on age and degradation rate
- Anomaly response — when a fish reports unusual readings (e.g. sudden hydrocarbon spike), dispatch nearby fish to characterize
- Map fusion — aggregate fish observations into a watershed-level pollution model
The objective functions
shoal extends the joulesperbit framework with two new η targets:
- η_remediation = (g_pollutant_removed × value) / E_consumed
- η_data = bits_useful_pollution_data / E_consumed
Both are jointly optimized by the fleet-level RL policy.