tools/esp32_sim.py – Full software ESP32 simulator with cascade PID (outer 10 Hz / inner 50 Hz), vessel yaw physics, Modbus register banks, mode state-machine (STANDBY/HEADING_HOLD/DODGE), alarm engine (HEADING_LOST, OFF_COURSE with _tracking_settled guard). Sim-specific parameter tuning vs. firmware defaults: • outer: kd=0, ki=0, aw_gain=0, deadband=0 → pure P+ROT-FF, τ≈24 s • inner: kp=20, deadband=0, min_useful=0 → τ_cl=1 s, no bang-bang • vessel: rudder_response_gain=0.004 → 30 m yacht dynamics tools/sim_protocol.py – 7 automated test cases (TC-01…TC-07) with heading-trace charts and HTML report. All 7 PASS: TC-02 settle 49.8 s, error 0.488° (crit <60 s, <1°) TC-03 settle 134 s, error 0.985° (crit <180 s, <2°) TC-04 settle 56.5 s, error 0.570° (crit <90 s, <1°) TC-07 dodge 1.73°, return 0.527° (crit <2°, <1°) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AR-Autopilot
Professional marine autopilot for vessels in the 30-40 m range (motor yachts, motor sailboats, fishing vessels, small ferries, coastal patrol boats).
Part of the AR Suite alongside AR-ECDIS, VMS-Sailor, AR-ShipDesign, AR-ElecArrangement, and AR-StabCol. Sold standalone or bundled with AR-ECDIS.
NOT Dynamic Positioning. NOT joystick docking. This is a classic heading-and-track autopilot with intelligent drift compensation, controlling rudder actuators (hydraulic or electric).
Status
Sprint 0 — Foundations (in progress).
This sprint delivers the repository structure, core data model, seed library, and a passing test suite. No functional firmware, Studio GUI, or display yet — those start in Sprint 1.
See docs/AR_Autopilot_brief.md for the complete project brief, scope, and roadmap.
Components
| Component | Tech | Purpose |
|---|---|---|
Studio (arautopilot/studio/) |
Python 3.11 + PySide6 | Project configurator (integrator-side, not shipped to customers). Generates per-vessel .appack packages |
Firmware (firmware/ar_autopilot_v1/) |
C++ on ESP32 via PlatformIO | Real-time PID control, NMEA 2000 + Modbus, safety logic. Runs on the AR-NMEA-IO v1.0 board (shared with VMS-Sailor) |
Display (display/) |
Flutter Desktop (Win + Linux) | Dedicated bridge cockpit-feel touch display with rotary knob input |
Core models (arautopilot/core/) |
Pydantic v2 | Shared data model (vessel config, PID config, actuator config, alarms, modes, knob state) |
Library (arautopilot/library/) |
YAML + JSON | Curated seed: actuator profiles, default tunings per vessel type |
Requirements
- Python 3.11 or newer
- Git
- (Later sprints) PlatformIO, Flutter SDK, WiX Toolset
Quick start (Sprint 0)
# Create venv and install
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -U pip
pip install -e ".[dev]"
# Run tests
pytest
# Run the Sprint 0 demo (creates, saves, reloads a project config)
python examples/sprint0_demo.py
Repository layout
AR-Autopilot/
├── arautopilot/ # Python package (core models, library, studio stubs, tests)
├── firmware/ # ESP32 firmware (Sprint 1+; only pinout.h in Sprint 0)
├── display/ # Flutter dedicated display (Sprint 4+)
├── examples/ # Runnable demos
├── docs/ # Brief + per-sprint design docs
├── installer/ # WiX MSI scripts (later)
└── tools/ # Helper scripts (later)
See docs/architecture.md for a one-page architecture overview.
Sprint roadmap
| Sprint | Focus |
|---|---|
| 0 | Foundations: repo structure, core data model, seed library, tests |
| 1 | Firmware base (I/O, Modbus, NMEA 2000 read, STANDBY mode) |
| 2 | PID inner loop (rudder position control) |
| 3 | PID outer loop + Heading Hold (with ROT feed-forward & gain scheduling) |
| 4 | Studio + basic dedicated display |
| 5 | True Course + Track Keeping (smooth XTE correction) |
| 6 | Safety, alarms, NMEA 2000 publish, VMS alarm consumption |
| 7 | Knob + commissioning + offline auto-tuning |
| 8 | EKF + adaptive tuning + telemetry + VPN |
| 9 | Hardening + integrated testing |
| 10+ | Phase 2 (wind modes for sailboats) and beyond |
Full detail in the brief.
License
Proprietary. All rights reserved. See LICENSE.txt.
Commercial deployment requires a per-vessel license bound to the installation HWID. Contact alro65@gmail.com for licensing.