dotbot/console-web: place pose waypoints and show the waypoint report in the dock - #302
Merged
Merged
Conversation
This was referenced Sep 24, 2026
Merged
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #302 +/- ##
==========================================
+ Coverage 84.98% 86.12% +1.14%
==========================================
Files 206 209 +3
Lines 26002 27904 +1902
Branches 1836 2127 +291
==========================================
+ Hits 22098 24033 +1935
+ Misses 3897 3864 -33
Partials 7 7
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This was referenced Sep 24, 2026
The waypoint now queues on release rather than on press. A waypoint with a heading anchors on the axle midpoint, not the photodiode, which is how the controller and the firmware's per-waypoint final heading read it. AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
A plain waypoint is now where the robot's axle midpoint stops, as a pose already was, to match the firmware reading every waypoint as an axle target. The robot's board marks its axle so the two line up. AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
The robot ends a mission at the edge of the terminal radius and turns there for a pose, so the old 60 mm radius showed up as end-pose error. Intermediate points now carry a 20 mm pass radius. AI-assisted: Claude Opus 5.5
AI-assisted: Claude Opus 5.5
…ing radii AI-assisted: Claude Opus 5.5
… heading A pose borrowed its silhouette only from a robot whose pose had a heading, so a robot reading direction -1000 (fresh start, kidnap) made every pose fall back to the tick. The shape now comes from any robot's body and the orientation from the pose alone; small ones are a circle with an arrowhead, and every waypoint says what it asks on hover. AI-assisted: Claude Opus 5.5
…h cases AI-assisted: Claude Opus 5.5
…k fields AI-assisted: Claude Opus 5.5
geonnave
force-pushed
the
pose-waypoints
branch
from
September 25, 2026 07:01
0035811 to
25c170f
Compare
geonnave
marked this pull request as ready for review
September 25, 2026 08:23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sits on
main: #301 and #298 underneath it have merged. The robot side is DotBots/DotBot-libs#35 and DotBots/DotBot-firmware#428, both merged.The console side of pose waypoints: a waypoint can now say where the robot stops and which way it faces, placed with one gesture on the map, edited after the fact, and followed in the dock through the robot's own waypoint report.
What changes
axle_positionwhen it has one, for turning in place and for placing the body, rather than expanding the fix with the 53.5 mm lever of the geometry record: the firmware's lever is 51.5 mm (fitted to spins), and the 2 mm difference showed on the floor.poseGesture.ts; only the hold needs a timer, the ring fills by CSS animation. Starting on a selected robot pins the pose to that robot's axle; on any other robot it is a point on the floor.Validation
vitest: 636 passed (578 before this work), including the gesture machine (click under 350 ms and 5 px queues a position; hold then drag right queues heading 270; a drag released inside 24 px queues a position; Esc queues nothing; Shift snaps 52 to 45), pose mode, the knob, the wheel steps, popover edits, undo, the settings and the dock status.tsc --noEmit, eslint andnpm run buildclean. One Python test checks a waypoint's heading survives into the controller's echo.dotbot-nextfirmware, driven through this branch's controller: 16 single-pose batches at headings 0, 90, 180 and 270, thresholds 10 and 2 mm, all ARRIVED. At 10 mm the axle miss averaged 4.0 mm against LH2 (2.5-6.0); at 2 mm, 2.9 mm (1.1-4.7). Those runs were on the firmware before its brake-aware final turn and showed a heading bias of about +2 degrees; with that fix (drv/steering: sequence waypoint batches with poses, a completion report and a speed limit DotBot-libs#35) 8 poses at 4 headings averaged +0.4 degrees with both signs.Known limits and follow-ups
Merge chain
Merged on 2026-09-25: DotBots/DotBot-libs#32, #298, DotBots/DotBot-firmware#425, DotBots/DotBot-libs#33, DotBots/DotBot-firmware#426, DotBots/DotBot-libs#34, DotBots/DotBot-firmware#427, DotBots/DotBot-libs#35, DotBots/DotBot-firmware#428 and #301. The rest go one PR at a time, in this order: this PR, DotBots/DotBot-libs#36, DotBots/DotBot-firmware#429, #303. Next to merge overall: #302, which completes the waypoint batches; then the cut-over, DotBots/DotBot-libs#36, DotBots/DotBot-firmware#429 and #303. Next after this one: DotBots/DotBot-libs#36. Each firmware PR gets a final
dotbot-libs: bump to ... merge on maincommit, moving its submodule to its libs PR's merge commit on DotBot-libsmain, before it merges, as DotBots/DotBot-firmware#425 to DotBots/DotBot-firmware#428 did. The next firmware PR then conflicts on that submodule line, so it is rebased ontomainwhen its turn comes.console-webtest files,dotbot/tests/test_server.py)mapGestures.test.tsx+394 -6,poseQueue.test.tsx+305,poseGesture.test.ts+190dotbot/console-web/srcMapView.tsx+638 -23,Footer.tsx+311 -11,PoseMarker.tsx+236,poseGesture.ts+192,arrival.ts+82,App.tsx+75 -13, 6 smallermain