Changelog¶
Format: Keep a Changelog. Versions are MAJOR.MINOR.PATCH
written with a two-digit patch (0.2.00). The number lives in hardware/alliedwork.py
(VERSION); check it with python run.py --version. The hub log prints it when the menu starts.
When you change something: add a line under Unreleased, and when you release, move
the lines under a new version heading and bump VERSION.
Unreleased¶
python run.py workstarts the dashboard (--simfor a fake robot,-n NAMEto pick a hub).- Documentation website (MkDocs + Material theme): left navigation, search, dark/light mode, works offline.
python run.py docsserves it at http://localhost:8001,python run.py changelogopens it on this page,python run.py docs --buildwrites a static copy tosite/. Config:mkdocs.yml;mkdocs-materialadded torequirements.txt.
0.2.00: 2026-11-14¶
The "students can actually use it" release.
Added¶
hardware/alliedwork.py: one file with the settings, PID, pose tracking and every mission command (set_pose,drive,turn,turn_to,drive_to,square_to_wall,attachment,attachment_to,wait,beep,log,mission,stop,pose,heading,color,reflection).- Hub menu (
run_menu): light matrix shows the run number, LEFT/RIGHT choose, CENTER starts, CENTER during a run stops it, a crashing run returns to the menu. run.py:python run.pyuploads all runs + menu;run.py run1runs one;--simfake robot;--no-start;-n NAME;list;--version. Bundlesalliedwork.py+ missions + generatedmain.py(checked against pybricksdev's compiler).- Sensor dashboard (
python -m work.pc.server,--sim): live gyro compass, motors A/B/E/F (angle, speed, load), color sensor (name, reflection, ambient, HSV), battery, 10-second graphs, Freeze button, auto-reconnect. Works offline. hardware/sensor_stream.pyhub program andwork/pc/protocol.pyparser (never crashes on bad lines).- Simulator additions: fake
DriveBase(withuse_gyro),ColorSensor,Axis, hubsystem/imu.tilt/angular_velocity, motor load;SimRunnerfor the dashboard. - Real
pybrickspackage inrequirements.txt(editor autocomplete, any OS);pyrightconfig.json. - Example runs
run1.py,run2.py,test.py,_template.py. - Telemetry lines
T,ms,x,y,heading(every 200 ms), eventsE,..., logsL,.... - This documentation set.
Changed¶
- Steering now uses Pybricks
DriveBasewith the gyro on (use_gyro(True)) instead of driving the two motors directly. - Each command blocks and runs its own 10 ms PID loop (no background controller task).
- Folder layout:
hardware/= runs on the hub,work/= runs on the computer. - Missions are
runN.pyfiles that definedef run():. claude.mdrenamedCLAUDE.md(Claude Code only loads the uppercase name);bridge/corrected towork/pc/.- Tests moved to
work/tests/;pytest.inisets the import paths.
Removed¶
hardware/robot/package (geometry, config) folded intoalliedwork.py; mm/inch helper functions dropped (DriveBaseworks in mm itself).- Empty Node stubs (
server.js,public/index.html,package.json,package-lock.json): the dashboard is plain HTML + Python. - Broken
.zed/tasks.json(replaced bypython run.py).
Known limitations¶
- Not tested on a real robot yet. Hub-side calls
imu.tilt(),angular_velocity(),hsv(),hub.system.set_stop_button()andDriveBase.reset()follow the current Pybricks docs but are unverified on hardware. - Robot size, wheel/axle measurements, mat size, launch areas and mission polygons in
work/field/missions.jsonare placeholders. - Simulator:
DriveBase.curve()not simulated;then=ignored; footprint is a 6 × 8 in placeholder. - The hub can run the sensor stream or a mission, not both at once.
0.1.00: 2026-11-14¶
Foundation.
Added¶
robot/geometry.pyandrobot/config.py(angle wrap, heading-to-point, waypoint math, ports, gains, limits).- Simulator (
work/pc/simulator.py): fakepybricksmodules on a virtual 1 ms clock; differential-drive physics, wall collisions (per-edge, wheels stall), wheel slip, gyro drift/noise,multitask/run_task, real-time or fast-forward. - Field model
work/field/missions.json,CLAUDE.md, build instructions. - Tests for geometry and the simulator.
Roadmap (not built yet)¶
- 0.3: formal telemetry (T/E/L) shown live; field-map view with the robot's position and path on the 1 in grid; mat background image.
- 0.4: field editor (click-to-plot polygons and waypoints), field-file validation, code generation from waypoints.
- 0.5: live PID gain tuning from the dashboard; run recording and playback.
- Real-robot calibration pass (wheel diameter, axle track, PID gains) once measurements exist.