# Seastead Convoy Mode: Technical Design & Analysis **Document Version:** 1.0 **Date:** May 2024 **Classification:** Design Phase - Open Source Hardware Compatible --- ## 1. Executive Summary This document outlines the architecture for **"Convoy Mode"**: a decentralized, autonomous formation-keeping and distributed sensing system for a fleet of triangular seasteads. Leveraging the unique geometry (44ft equilateral triangle), precise Relative RTK GPS, and a directional Wi-Fi 6/6E mesh backbone, the system enables: 1. **Precision Station Keeping:** cm-level relative positioning on a dynamic grid. 2. **Distributed Situational Awareness:** Multi-static parallax ranging for early collision avoidance. 3. **Resilient Communications:** High-throughput mesh for telemetry/video, with LoRa fallback for command/control. 4. **Wave Field Modulation:** Quantitative analysis of array damping effects. **Key Finding:** Wi-Fi 6E (6 GHz) with 4x Sector Antennas is the optimal primary link (high bandwidth, low latency, unlicensed). LoRaWAN/ Meshtastic provides safety-critical fallback. Wave attenuation via array effects is measurable but secondary to active heave compensation; expect **3–10% significant wave height reduction** in optimal sea states. --- ## 2. System Architecture Overview ```mermaid graph TD subgraph Seastead_Node [Single Seastead Node] direction TB GNSS[Dual Antenna RTK GNSS\nMoving Base Mode] --> NAV[Navigation Computer\nROS 2 / ArduPilot] CAM[4x FLIR/Visible Cameras\nNadir + Horizon] --> PER[Perception Stack\nYOLOv8 + SORT Tracking] AIS[AIS Class B+ Transceiver] --> NAV IMU[FOG/MEMS IMU] --> NAV NAV --> THR[3x Differential Thrusters\nIndependent Power] NAV --> MOOR[3x Helical Mooring Winches] COMMS_PRI[Wi-Fi 6E Mesh Radio\n4x Sector Antennas 90deg] <--> MESH[Convoy Mesh Layer\nBATMAN-adv / OpenWrt] COMMS_SEC[LoRa Radio\nMeshtastic / Reticulum] <--> MESH STARLINK[Starlink Maritime\nFlat HP] --> CLOUD[Cloud/Shore API] MESH --> NAV PER --> NAV NAV --> MESH[Telemetry / Tracks / Grid Map] end subgraph Convoy_Logic [Convoy Logic - Distributed Consensus] GRID[Dynamic Grid Manager\nRaft Consensus for Slots] TRACK[Multi-static Track Fusion\nKalman / Particle Filter] WATCH[Distributed Watchstanding\nProof-of-Presence] end MESH -.-> GRID MESH -.-> TRACK MESH -.-> WATCH ``` --- ## 3. Communications Subsystem Design ### 3.1 Requirements Analysis | Requirement | Target | Rationale | | :--- | :--- | :--- | | **Max Range (Node-to-Node)** | 1.0 – 2.0 km | Grid spacing (diagonal ~62ft) + maneuvering margin + safety buffer. | | **Throughput (Sustained)** | > 50 Mbps aggregate | 4x 1080p30 video streams (perception) + Telemetry + OTA Updates. | | **Latency (Control Loop)** | < 20 ms (99th %ile) | Formation keeping @ 3-5 kts requires 10-20Hz update rate. | | **Topology** | 4-Neighbor Mesh (N/E/S/W) | Matches grid geometry; directional antennas reduce interference. | | **Cost/Node** | < $1,500 USD | COTS hardware, open firmware. | ### 3.2 Recommended Hardware Stack (Per Seastead) | Component | Model (Example) | Qty | Est. Cost | Notes | | :--- | :--- | :--- | :--- | :--- | | **Radio Module** | **MikroTik wAP ax (wAP G-6HaxD2HaxD)** or **Ubiquiti U6-Mesh-Pro** | 4 | $600 | Wi-Fi 6E (6 GHz) preferred for clean spectrum. 2.4/5GHz fallback. | | **Sector Antennas** | **MikroTik mANTBox 15s 6GHz** (Integrated) or **RF Elements Horn 6GHz 90°** + Radio | 4 | $400 | 90° Horizontal / 60° Vertical. Mounted on 4 corners of triangle roof. | | **Mesh OS** | **OpenWrt 23.05+** w/ **BATMAN-adv** (Layer 2 Mesh) | - | Free | Handles roaming, multi-hop, broadcast optimization. | | **Routing** | **BABEL** (Layer 3) on top of BATMAN | - | Free | Metric-aware (ETX + RTT), fast convergence for mobile nodes. | | **Fallback Radio** | **Heltec V3 / T-Beam Supreme** (LoRa 915MHz) | 1 | $40 | Meshtastic / Reticulum. 5-10km range, ~11 kbps. Critical for "Watch" heartbeat. | | **Switch/PoE** | Netgear GS305P / MikroTik CRS310 | 1 | $80 | Power radios via single Ethernet run per corner. | | **Cabling** | Cat6A Outdoor (Gel-filled) | ~200ft | $100 | Single run to each corner mast. | **Total Estimated Comms BOM: ~$1,220 / Seastead** ### 3.3 Antenna Placement & Geometry * **Mounting Points:** 3 Corners of Triangle + Center Mast (or Dinghy davit structure). * **Pattern:** 4 Sectors @ 0°, 90°, 180°, 270° (True North referenced via Dual-GNSS Heading). * **Polarization:** Vertical (Standard for marine mobile). * **Elevation Tilt:** -3° to -5° (Downtilt) to maximize gain at horizon (neighbor height ~7-10ft) and reduce skywave/interference. * **Separation:** 44ft baseline provides excellent spatial diversity for MIMO/Beamforming if radios support 2x2 or 4x4. ### 3.4 Protocol Stack Details **Layer 2: BATMAN-adv (Better Approach To Mobile Adhoc Networking Advanced)** * *Why:* Kernel-level (Linux), treats mesh as virtual Ethernet switch. Handles MAC-layer roaming transparently. Allows VLANs for isolation (Control vs Video vs Admin). * *Config:* `gw_mode server` on all nodes (Distributed Gateway). `hop_penalty 30` to prefer direct links. **Layer 3: BABEL Routing Protocol** * *Why:* Designed for mobile, lossy links. Uses RTT-based metrics (not just hop count). Fast convergence (< 1s). * *Addressing:* **ULA IPv6 Prefix (fd00::/8)** per convoy. Auto-config via RA. IPv4 over IPv6 (MAP-T / 464XLAT) for legacy apps. **Application Layer: Zenoh / DDS (ROS 2) or MQTT-SN** * *Telemetry:* Zenoh (Zero Overhead Pub/Sub) - efficient multicast over mesh. * *Watchstanding:* Reticulum Network Stack (LoRa + WiFi unified identity). ### 3.5 Link Budget Calculation (Wi-Fi 6E, 6 GHz, 90° Sector) | Parameter | Value | | :--- | :--- | | TX Power (EIRP FCC) | 30 dBm (1W) / 36 dBm (AP mode, 6GHz LPI/SP) | | Antenna Gain (Sector) | 14 dBi | | Cable Loss | 2 dB | | **Effective EIRP** | **~42 dBm** | | Rx Sensitivity (MCS 0, 20MHz) | -96 dBm | | Rx Sensitivity (MCS 11, 80MHz) | -62 dBm | | Fade Margin | 15 dB (Rain/Spray/Multipath) | | **Max Range (MCS 0 / Low Rate Control)** | **~ 3.5 km** | | **Max Range (MCS 7 / 200 Mbps)** | **~ 800 m** | | **Expected Grid Spacing** | **~ 50 m** | | **Margin at Grid Spacing** | **> 40 dB** (Massive overhead for MIMO streams, rain, occlusion by structure) | **Conclusion:** 5 GHz / 6 GHz Sector Mesh is **highly viable** with massive link margin at operational distances. --- ## 4. Convoy Mode: Software Logic & State Machine ### 4.1 Coordinate Frames * **WGS84 (Lat/Lon/Alt):** Global reference (Starlink/GNSS). * **Convoy Frame (ENU):** Origin = Convoy Centroid (or Lead Ship). X=Forward, Y=Starboard, Z=Up. * **Body Frame:** Origin = Seastead CG. X=Bow, Y=Port, Z=Up. * **Transform:** Maintained via **Moving Base RTK** (Rover on Seastead A, Base on Seastead B -> Relative Vector cm accuracy). ### 4.2 Grid Slot Assignment (Distributed Consensus) * **Grid Definition:** Square grid, spacing `D = 60 ft` (1.5x Triangle Side). Allows turning radius + safety. * **Slot ID:** `(row, col)` integers. * **Algorithm:** **Raft Consensus** on "Grid Map" state machine. 1. **Leader Election:** Highest Uptime / Lowest Node ID. 2. **Log Entry:** `JOIN_REQUEST(node_id, prefs)`, `ASSIGN(node_id, slot)`, `HEARTBEAT(node_id, slot, health)`. 3. **New Joiner:** Broadcasts `JOIN` on LoRa + WiFi. Leader assigns nearest empty slot minimizing total fleet potential energy. 4. **Approach:** Joiner navigates to **Entry Corridor** (outside convex hull) -> **Approach Waypoint** (1 grid cell outside slot) -> **Final Approach** (PID on Relative RTK Vector). ### 4.3 Formation Control Law (Nonlinear MPC / PID) **Control Inputs:** `Thrust_Port, Thrust_Stbd, Thrust_Bow` (3 DOF: Surge, Sway, Yaw). **State:** Relative Position `(x, y, psi)` to Slot Center. **Constraints:** * Max Surge Accel: 0.05g (Comfort). * Max Yaw Rate: 3 deg/s. * **Walkway Constraint:** Relative velocity at walkway connection point < 0.1 m/s during transfer. ```python # Pseudocode: Formation Keep Loop (10 Hz) def formation_control(target_slot_pos_enu, current_pos_enu, current_vel_enu, neighbors_states): # 1. Feedforward: Convoy Velocity (from Leader/Leaderless consensus avg) v_convoy = estimate_convoy_velocity(neighbors_states) # 2. Feedback: Position Error in Convoy Frame err_pos = target_slot_pos_enu - current_pos_enu err_vel = v_convoy - current_vel_enu # 3. PID Gains (Tuned for 27,500 lbs displacement, 3x Thrusters) Kp = np.diag([0.15, 0.15, 0.5]) # N/m, N/m, Nm/rad Kd = np.diag([500, 500, 2000]) # N/(m/s) Ki = np.diag([0.01, 0.01, 0.05]) # Integral windup limited force_enu = Kp @ err_pos + Kd @ err_vel + Ki @ integral_err # 4. Allocation to 3 Thrusters (Inverse Dynamics) # Thrusters at Legs (Vertices of Triangle) T = allocation_matrix_inv @ force_enu # 5. Saturation & Rate Limiting T = saturate(T, max_thrust, max_rate) return T ``` ### 4.4 Distributed Perception & Parallax Ranging **Sensor Suite per Node:** * **AIS Class B+:** TX/RX Own position + RX Targets. Range ~20-30nm. * **Radar (Optional but recommended):** Furuno DRS4D-NXT (Solid State, 24nm, Doppler). ~$3k. * **Optical:** 4x FLIR Boson 640 / IMX390 (Global Shutter) - Fore, Aft, Port, Stbd. FOV 90° H. **Multi-Static Parallax Algorithm:** 1. **Detection:** Node `i` detects target `k` at bearing `bearing_i,k`, elevation `el_i,k`, time `t_i`. 2. **Association:** Exchange detections via Mesh (Time sync < 1ms via PTP/gnss). Cluster by time/position. 3. **Triangulation:** Solve for `Range_k` using bearings from `N >= 2` nodes. * `Pos_k = Triangulate( [Pos_i, Bearing_i] for i in detecting_nodes )` * Covariance `P_k` derived from bearing noise (~0.5° optical, ~1° AIS) and baseline geometry. 4. **Tracking:** **IMM-PDAF (Interacting Multiple Model - Probabilistic Data Association Filter)** running on **Leader Node** (or distributed via Consensus Kalman Filter). 5. **Output:** `Tracked_Objects[]` with `Position, Velocity, CPA (Closest Point of Approach), TCPA, Covariance`. Broadcast to Fleet. **Parallax Accuracy Estimate:** * Baseline: 50m (Grid spacing). * Bearing Noise: 0.5° (Camera) / 1.5° (AIS). * Range Error @ 1nm: **~15m (Optical) / ~45m (AIS)**. * Range Error @ 5nm: **~380m (Optical)**. * *Value:* Converts "Bearing Only" contacts to "Position + Velocity" tracks instantly for the whole fleet. ### 4.5 Distributed Watchstanding (Proof-of-Presence) * **Problem:** "Is anyone actually looking?" * **Solution:** **Reticulum / Meshtastic "Watch Beacon"**. * **Mechanism:** 1. Human presses "On Watch" button (physical or app) -> Signs `WatchToken(NodeID, HumanID, StartTime, PubKey)`. 2. Token broadcast every 60s on LoRa (Mesh) + WiFi. 3. Fleet UI shows: 🟢 **ACTIVE WATCH**: 4 Humans / 8 Nodes. 4. **Auto-Escalation:** If `WatchToken` missing > 5 min for a node -> Fleet Alert "Node X Unattended". 5. **AI Assist:** Perception stack runs 24/7. `AI_Confidence` broadcast alongside Human Token. --- ## 5. Wave Attenuation Analysis: The "Seastead Array" Effect ### 5.1 Physics: Periodic Array / Bragg Scattering A convoy of floating bodies acts as a **metamaterial** for surface gravity waves. * **Condition for Strong Attenuation (Bragg Resonance):** `k * d * sin(theta) = n * pi` * `k = 2*pi / L` (Wave number) * `d` = Grid Spacing (Center-to-Center) ~ **18.3 m (60 ft)** * `theta` = Angle of wave incidence relative to grid axis. * `n` = Integer (1, 2...) ### 5.2 Target Wavelengths (Caribbean Trade Wind Swell) | Sea State | Period (T) | Wavelength (L = gT²/2π) | `k*d` (n=1, Head On) | Resonance? | | :--- | :--- | :--- | :--- | :--- | | **Calm** | 3-4 s | 14 - 25 m | 4.6 - 8.2 | **Yes (n=1,2)** | | **Moderate** | 5-7 s | 39 - 76 m | 1.5 - 2.9 | **Yes (n=1)** | | **Rough** | 8-10 s | 100 - 156 m | 0.7 - 1.1 | **Marginal (n=1)** | | **Swell** | 12+ s | 224+ m | < 0.5 | **No** | ### 5.3 Single Body Damping (Your Legs) * **Geometry:** 3x NACA 0035 Foils, 8.5ft Chord, 21.5ft Span. Draft ~10.75ft (Half submerged). * **Heave RAO (Response Amplitude Operator):** Foil legs + Heave Plates target **RAO < 0.3** at resonance (typically 8-12s period for this draft/mass). * **Added Mass/Damping:** High due to foil area and plates. ### 5.4 Array Gain Prediction (Conservative Estimate) Using **Multiple Scattering Theory (MST)** approximations for sparse arrays (`d/L > 0.5`): | Wave Direction | Peak Attenuation (Transmission Coeff $K_t$) | Frequency Bandwidth | | :--- | :--- | :--- | | **Head-On (0°)** | **$K_t \approx 0.7 - 0.85$ (15-30% Hs reduction)** | Narrow (Near Bragg $L \approx 2d$) | | **Oblique (45°)** | **$K_t \approx 0.85 - 0.95$** | Wider | | **Beam (90°)** | **$K_t \approx 0.95$ (Negligible)** | - | **Key Insight:** The array creates **"Shadow Zones"** downstream. * **Best Case:** Row 3+ seasteads in a line head-on into 4-6s seas feel **~20-30% lower Significant Wave Height ($H_s$)**. * **Reality Check:** This is **passive** attenuation. Your **Active Heave Compensation (Thrusters + Mooring Tension)** provides 10x more stability. * **Design Implication:** Do not rely on array for survival. Treat it as a **comfort bonus** for convoy transit in wind chop. Optimize Grid Spacing `d` for dominant *local* wave period (e.g., if Caribbean chop is 4s/25m, set `d = 12.5m` (41ft) for n=1 Bragg). Your 60ft spacing targets ~6s period (36m wavelength) - good compromise. --- ## 6. Integration Checklist & Next Steps ### 6.1 Hardware Procurement (Comms) - [ ] Order 4x MikroTik wAP G-6HaxD2HaxD (or Ubiquiti U6-Mesh-Pro) per seastead. - [ ] Order 4x RF Elements Horn 6GHz 90° (or mANTBox integrated). - [ ] Order 1x Heltec V3 (LoRa Backup) per seastead. - [ ] Validate PoE budget (4 Radios x 15W = 60W + Switch). ### 6.2 Software Development (Priority Order) 1. **RTK Moving Base Library:** Integrate `RTKLIB` or `SharpGNSS` for relative vectors. Output `geometry_msgs/TransformStamped` (Convoy -> Body). 2. **Mesh Network Bring-up:** OpenWrt ImageBuilder recipe (BATMAN-adv + BABEL + PTPd + Zenoh). 3. **Formation Controller:** ROS 2 Node (`convoy_keeper`). Simulate in Gazebo/Isaac Sim with hydrodynamic model (WAMIT/Nemoh output for your foils). 4. **Perception Fusion:** `ros2_rtk_fusion` + `yolo_tracker` -> `MultiStaticFuser` Node. 5. **Watchstanding App:** Meshtastic Python module + React Native Mobile UI. ### 6.3 Container Packing Verification (Critical Path) * **Legs:** 3x (21.5ft L x 8.5ft Chord x ~1.5ft Thick max). * *Stacked Pair:* ~3.0 ft width. *Single:* ~1.5 ft width. Total **~4.5 ft container width** consumed on Right Wall. **Fits (7.7ft avail).** * **Walls:** 3x (44ft L x 7ft H x ~0.83ft (10in) Thick). * *Upright on Left Wall:* 3 x 10in = **2.5 ft width**. **Fits.** * **Center Void:** ~7.7 - 4.5 - 2.5 = **0.7 ft (8.4 inches) clear aisle?** **TIGHT.** * **Recommendation:** Rotate Walls **Flat (Horizontal)** on floor? * 3 Walls Flat: 3 x 7ft High = **21 ft Container Width** -> **NO.** * **Solution:** Walls must be **< 8.5 inches thick** OR Legs packed tighter (chord 8.5ft = 102in. Container 92.4in wide. **Legs WIDER than container width!**). * **CRITICAL CONFLICT:** NACA 0035 Chord 8.5ft (102in) > Container Internal Width (92.4in). * **Fix Required:** Reduce Chord to **7.5ft (90in)** OR Rotate Legs 45 deg in container OR Legs must be **split/hinged** OR Container is **High Cube Pallet Wide (96in internal)**. *Assume Pallet Wide Container (96in) or Chord reduced to 7.5ft.* ### 6.4 Safety & Classification - [ ] **ABYC / ISO 12215** Scantlings for Foil Legs (Slamming loads). - [ ] **COLREGs Compliance:** Lights (Masthead, Sidelights, Stern, Anchor), Shapes (Ball/Diamond), Sound Signals. - [ ] **Stability Book:** Intact & Damage (Flood one leg compartment). - [ ] **Towage/Transport Approval:** Verify container CG/Stacking for ship transport. --- ## 7. Appendix: Key Parameters Reference | Parameter | Value | Unit | | :--- | :--- | :--- | | **Seastead Triangle Side** | 44.0 | ft | | **Living Area Height** | 7.0 | ft | | **Walkway Width** | 3.0 | ft | | **Walkway Height (above keel/bottom)** | 1.0 | ft | | **Leg Length** | 21.5 | ft | | **Leg Foil Chord** | 8.5 (Design) / **7.5 (Container Fit)** | ft | | **Leg Foil Thickness (Max)** | ~1.5 (18% t/c) | ft | | **Leg Draft (Operational)** | 10.75 | ft | | **Leg Freeboard (Operational)** | 10.75 | ft | | **Container Internal (HC 45ft PW)** | 44.6 L x 7.9 W x 8.9 H | ft | | **Convoy Grid Spacing** | 60.0 | ft | | **RTK Relative Accuracy** | 1-2 | cm | | **WiFi 6E Sector Gain** | 14 | dBi | | **LoRa Frequency** | 915 | MHz (US) / 868 (EU) | --- *End of Document. Ready for Wiki/Website Deployment.*