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:

  1. Forage — gradient-following plume tracking, optimizing for MFC power output. The fish is hungry and looking for food.
  2. Survey — spatial-coverage pattern, sampling water quality on a grid. Commanded mission, energy-budget aware.
  3. Capture — when in a microplastic / heavy metal hotspot, slow down and operate adsorptive surfaces and filtration.
  4. Return — navigate to nearest dock when battery low, cartridge full, or mission complete.
  5. 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.

Deeper

Architecture §5: The cognitive layer


shoal is open source. Hardware: CERN-OHL-S 2.0. Software: Apache 2.0. Docs and data: CC-BY-SA 4.0. Datasets: CC0 1.0.

This site uses Just the Docs, a documentation theme for Jekyll.