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.
ariadnecommand (wasmicromouse); packageariadne-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.mdledger, 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 tosim/turn_library.jsonandfirmware/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),benchmarkreports planned times;micromouseentry point. - 85 new tests (109 in all).
Firmware¶
mazecore:planSmooth()andplanSpeeds(), 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.