Open Source Architecture for a 30,000 lbs Solar-Electric Platform with Differential Thrust
This stack is tailored for your unique geometry: 40Γ16 ft deck, 4Γ angled columns (20 ft @ 45Β°), 44Γ68 ft float footprint, ~30,000 lbs displacement.
You are correct that PyPilot is the best starting point. It runs on Raspberry Pi / BeagleBone, interfaces with IMU (MPU9250/ICM20948), GPS, and actuators via GPIO/I2C/Serial. However, stock PyPilot assumes rudder steering.
Native support for Skid Steering / Differential Thrust (`SKID_STEER_OUT=1`). Mature EKF3 sensor fusion, Lua scripting for custom logic, Mission Planner / MAVLink ecosystem. Better suited if you plan autonomous waypoint missions or "Loiter" modes. Heavier resource usage (needs Pi 4 / Navio2 / Cube Orange).
| Feature | PyPilot (Custom) | ArduRover |
|---|---|---|
| Differential Thrust Native | β (Requires Code) | β (Standard) |
| Sensor Fusion (EKF) | Basic Complementary | β EKF3 (GPS+IMU+OptFlow) |
| Solar/Charging Integration | β Built-in (Tinypilot) | β Via Battery Monitor |
| Development Language | Python (Easy Mods) | C++ / Lua (Harder Core Mods) |
| Web UI / Remote Access | β Excellent (pypilot.web) | β MAVLink / MAVProxy / Web |
Traditional NVR. Good multi-user, websocket streams, API. No built-in AI (requires external `shinobi-detector` or Frigate sidecar). Higher CPU usage without Coral.
version: "3.9"
services:
frigate:
image: ghcr.io/blakeblackshear/frigate:stable
container_name: frigate
privileged: true # Needed for Coral TPU / GPU access
restart: unless-stopped
ports:
- "5000:5000" # Web UI
- "8554:8554" # RTSP Restream (if needed)
- "1935:1935" # RTMP (optional)
volumes:
- /dev/bus/usb:/dev/bus/usb # Coral USB
- /dev/apex_0:/dev/apex_0 # Coral M.2 (if used)
- /dev/dri:/dev/dri # Intel/AMD GPU (VAAPI)
- ./config:/config
- ./media/frigate:/media/frigate # Recordings (mount SSD/HDD here)
- type: tmpfs # RAM disk for DB/Prebuffer
target: /tmp/cache
tmpfs:
size: 1000000000 # 1GB
environment:
FRIGATE_RTSP_PASSWORD: "changeme"
devices:
- /dev/coral:/dev/coral # If using udev rules for Coral
Don't run separate UIs. Aggregate everything into a single touchscreen dashboard at the helm.
Visual wiring for Seastead Specific Logic:
Standard for desktop/laptop. Runs on Pi 4 (slow) or connected laptop. Supports S-57/S-63 vector charts, CM93, NV Charts. Plugin architecture for Weather Routing, AIS, Radar.
Essential. Translates NMEA0183/NMEA2000/Seatalk β JSON/WebSockets/TCP/MQTT. PyPilot consumes Signal K for True Wind / SOG / COG. Home Assistant consumes Signal K via MQTT. OpenCPN consumes Signal K for AIS/Instruments.
# Typical Signal K Flow on Pi
NMEA2000 (Actisense NGW-1 / CANable)
-> signalk-to-n2k (CAN -> Signal K)
-> Signal K Server (Port 3000)
-> MQTT Broker (Mosquitto)
-> Home Assistant / PyPilot / Node-RED
AvNav runs headless on Pi, serves charts via Web UI (mobile friendly). Good backup if main screen fails.
| Role | Hardware | Why |
|---|---|---|
| Main Computer | Raspberry Pi 4 Model B (8GB) + Argon ONE V2 M.2 Case (Passive cooling, SSD slot, RTC, Power Button) | Low power (5-8W), runs all Docker containers (PyPilot, HASS, Frigate, SignalK, Mosquitto, Node-RED). M.2 NVMe for reliability vs SD card. |
| AI Accelerator | Google Coral USB Accelerator OR M.2 Coral (Dual Edge TPU) in Argon Case | Frigate needs this for 10+ camera streams @ low latency. USB is easier; M.2 is cleaner. |
| IMU | MPU9250 / ICM20948 on Pypilot Hat or SparkFun 9DoF (I2C) | PyPilot native support. Mount rigidly on deck structure (not cabinet), dampened vibration. |
| GPS | u-blox F9P (RTK) or M8N (Standard) + External Antenna on Mast | RTK gives cm accuracy for station keeping / docking. Standard is fine for 1mph nav. |
| NMEA2000 Gateway | Actisense NGW-1 (ISO) or CANable Pro / PiCAN-M (DIY) | Actisense is galvanically isolated (critical for lightning/ground loops on metal platform). CANable cheaper. |
| Motor Control | ODrive Pro / VESC 6 / Industrial VFD + RS485/CAN Hat on Pi | 2.5m props = High Torque. ODrive/VESC handle FOC, current limiting, regen. Talk to Pi via CAN/USB. |
| Switch | Industrial PoE+ Switch (8-16 port) e.g., Ubiquiti USW-Industrial / Netgear MS108EUP | Power Cameras (PoE+ 30W), Pi, Signal K gateway. Managed VLANs for Camera / Control / Crew WiFi separation. |
| Storage | 1TB NVMe (OS/DB) + 2x 4TB 2.5" HDD (RAID1 via USB3) for Video/Logs | NVMe for speed/boot. HDD for capacity. RAID1 for redundancy against vibration failure. |
No open source project handles Cable-Tensioned Station Keeping or Solar-Drift Optimization out of the box.
Run at sea: Sweep PWM 0-100% β Log Motor Current, Voltage, GPS Speed, Heading Rate. Build lookup tables `Thrust_N = f(PWM, RPM)` and `Yaw_Nm = f(Port_PWM, Stbd_PWM)`. Feed into PyPilot mixer.
If you install load cells on the 4 corner cables + rectangle cables: Monitor tension asymmetry. Alert if > 2x expected working load (snag risk) or slack (cable jump risk).