Skip to content

Changelog

v3.0.0 (2026-10-13): Ariadne

The project gets its name, a website, quantitative design studies and a hardware roadmap. Still simulation only: nothing has run on a real robot yet.

Design studies (sim/studies.py)

  • Control: Bode plots of both loops with the filtered derivative and the 1.5 ms sampling delay; phase margins 54 and 47 degrees, gain margins 17.6 and 15.0 dB; sensitivity; root locus of the v1 corridor steering against speed.
  • Reliability: Monte Carlo of every fast-run mode under realistic and stress error models, with 95 % Wilson intervals and the true distance from the planned path.
  • Gyro: reliability against residual gyro scale error; diagonals need about 0.15 %.
  • Sensors: VL53L0X ToF at 30 Hz against pulsed IR pairs at 1 kHz.
  • Speed against reliability: lateral acceleration swept from 2 to 5 m/s²; past 3.5 m/s² the turns are capped by angular acceleration, not grip, and diagonal reliability does not depend on speed.
  • Chassis width: the turn library redesigned for 64, 72 and 80 mm bodies: faster tight turns, but under 1 % on the run time.
  • Angular acceleration: the real lever. 80 instead of 60 rad/s² (with 4 m/s² lateral) makes smooth runs 11 % faster with every robot finishing; the grip limit on yaw acceleration grows with 1/k² (radius of gyration) and sets the Mk II layout.
  • Benchmark: planned times over 200 random mazes.
  • Interactive versions of all of them on the website.

Website and docs

  • MkDocs Material site with a live race of the three fast-run generations, interactive charts and typeset equations.
  • The engineering notebook (docs/DESIGN.md) now uses LaTeX throughout.
  • New pages: overview, getting started, firmware architecture, current hardware, the Mk II custom-PCB proposal (pulsed-IR front end with component calculations, IMU, bridge and current sensing, budget), roadmap with pass criteria, sponsorship.

Code

  • Wall sensor rate, noise and range are parameters of the simulator; the front-wall correction is per distance (works at any sensor rate), in Python and firmware.
  • The turn designer runs its classes in parallel and can design for any chassis (set_body).
  • The simulator records the real robot's distance from the planned path.
  • ariadne command (was micromouse); package ariadne-sim.
  • 6 new tests for the studies' maths: Wilson intervals, the yaw-acceleration grip limit, and the turn-speed facts the results page states (115 in all).

Sponsorship

  • SPONSORS.md ledger, sponsorship issue form, funding link.

v2.0.0 (2026-10-13)

Smooth turns, diagonals and path following. Still simulation only: nothing has run on a real robot yet.

Simulator

  • Turn designer (sim/turns.py): clothoid-arc-clothoid turns fitted to the grid by grid search over peak curvature and ramp fraction, with the 95 x 80 mm body swept against every post and a wall on every edge the turn does not cross. 30 turns (S90, L90, F45, F135, D45, D135, V90 and variants), all at least 12 mm clear. Exported to sim/turn_library.json and firmware/lib/mazecore/turn_table.h.
  • Smooth / diagonal planner (sim/planner.py): Dijkstra over (edge, 8 headings) with integer costs, then a two-pass speed plan.
  • Physics: friction circle per tyre (the robot slides out of a turn taken too fast), gyro scale error, ToF beam cone.
  • Execution: plan executor with one continuous distance coordinate, path following on the pose estimate, wall observer that corrects offset and heading and learns the gyro bias, front-wall along-track correction.
  • Gyro scale calibration (sim/calibrate.py), same routine as the firmware.
  • CLI: compare, drive --mode/--preset/--log, montecarlo --mode/--mazes/--errors (parallel), benchmark reports planned times; micromouse entry point.
  • 85 new tests (109 in all).

Firmware

  • mazecore: planSmooth() and planSpeeds(), bit-identical to the Python planner (same Dijkstra cost and command sequence on every test maze).
  • New pure C++ library motioncore: plan runner, path-following law, wall observer, unit-tested on the PC.
  • motion.cpp: whole fast-run plans run inside the 1 kHz control task; gyro re-zero at the start of every run; 15 s flight log at 100 Hz.
  • New modes: fast run with smooth turns (default), with diagonals, with pivots (v1); gyro scale calibration (1, 4, 20 turns against the front wall).
  • Speed presets safe / normal / fast stored in flash; serial console h m s p v l c.
  • Builds for the ESP32 with zero warnings: 33 % RAM, 27 % flash.

Tooling

  • tools/plot_log.py: plots the robot's flight log, overlaid on a simulated one.
  • CI: ruff, pytest, generated-file checks, native C++ tests, ESP32 build; release workflow that attaches a flashable merged image.

v1.0.0

The first version: flood-fill search with proven-optimal stopping, time-optimal pivot fast-run planner, 10 kHz physics model running the firmware control law, Monte Carlo over manufacturing tolerances, ESP32 + FreeRTOS firmware, schematic and BOM.