Conversation
…ping track Pointer README for a second clean-and-map implementation, self-hosted at yugeeklab/oomwoo-clean-and-map. Targets the part the RFC board lists as not started (coverage while SLAM-mapping, frontier exploration to done, a map-completeness meter for the headless harness), complementing Arkz-Deepak's clean-only-first track. No board row change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…wath Every figure on the page was scored at cleaning_radius 0.16; the harness scores at 0.20. Re-measured there, with six sessions rather than one, and set against the RFC's acceptance criteria rather than against an efficiency target that is a runner default. Adds what the six sessions actually show, including the one that ended itself at 0.82 coverage, and the arithmetic that accounts for upstream's planner missing the coverage target on this world and this one missing the efficiency one.
Collaborator
|
Hi @yugeeklab - I noticed you closed this. In case it was about overlapping with Your measured comparison is excellent, and you're right about row_overlap - in Whenever you're ready, feel free to open a new PR (the branch was deleted, so this |
makers-pet
pushed a commit
to makerspet/oomwoo-ros2-tools
that referenced
this pull request
Oct 5, 2026
The planner rounds the pass spacing to whole map cells. On the 0.05 m grid with a 0.40 m swath, 0.40 * 0.95 = 0.38 m rounds to 8 cells = 0.40 m, so the gate has always swept edge to edge with no overlap. Say so, and record the trade-off: real overlap (0.10 -> 7 cells, 0.35 m) closes the seams that ~1-3 cm localization error opens, but the meter scores efficiency against the full swath, so it costs ~12% efficiency against the 0.80 gate. No behavior change: the step is 8 cells before and after. Reported by yugeeklab in makerspet/oomwoo#71. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Description
Claims a second track on the
clean-and-mapmodule and adds a pointer to myself-hosted implementation, per CONTRIBUTING (code in the contributor's repo, a link
in-tree). One file,
contributions/clean-and-map/yugeeklab/README.md.Self-hosted repository: https://github.com/yugeeklab/oomwoo-clean-and-map
Discussion: #66
Approach
The part the RFC board lists as coverage-while-mapping not started, complementing
@Arkz-Deepak's clean-only-first track. The robot starts with no map, sweeps the floor
slam_toolbox has drawn so far, replans as more of the room appears, decides it is
finished and saves the map.
Where it stands on
living_roomSix sessions, no map at start, headless, scored by
coverage_meteratcleaning_radius0.20 — whatcoverage_regression.launch.pyuses.deploy/run_coverage_livingroom.shwith the stockcoverage_planner, same world,same harness: coverage 0.8772, target never crossed. This node crosses 0.90
where upstream's does not reach it. Neither meets the runner's 0.80
efficiency_target, and I think why is the most useful thing in this PR.Why neither planner makes 0.80 on that world
Coverage per metre driven is the pass spacing, and the spacing cannot exceed the
swath. Covering 90 % of
living_room's 13.62 m² at a 0.40 m swath has a floor of30.7 m; the gate allows 42.6 m. Measured at the crossing:
The spacing is 0.35 m rather than the full 0.40 m swath because localisation error
on these runs is 11 mm mean and 26 mm at p90 (
localization_error), and passes laidexactly one swath apart come apart at the seams. Sweeping the two spacings against
error from 0 to 23 mm, with contacts modelled, exactly one cell of that table passes:
no error at all.
coverage_regression.launch.pysetsrow_overlap0.05, which on a 0.05 m gridrounds to an 8-cell step — a whole swath, no real overlap. That is the wide-spacing
column, and it fails on coverage; this node takes the narrow one, reaches coverage,
and fails on efficiency. Same fact, two sides, and a property of a 0.40 m swath
against a centimetre of error in a cluttered room rather than of either planner.
Four planner families and twenty-odd variants were measured against it — including
spanning-tree coverage, which cannot tile this room at any sub-cell size the budget
allows, and a Hamiltonian path, which provably does not exist on this floor.
Also in the repo
map_completeness_meterin the shape ofcoverage_meter, so map completeness canbe gated headless the way coverage already is — the RFC asks for regression tests
of both, and the harness has only the second.
map_serverand no AMCL.two sessions of identical code landed 33 % apart, so planner changes are chosen
offline. It imports the node's own
_plan_sweepand models what the simulator doesto a plan — including hitting things, which is what finally made its numbers agree
with the simulator's.
What is not done
Stated plainly because the acceptance criteria ask for them and I have not met them:
world;
nothing left it could plan to, after seven bumper contacts. A real defect in the
done condition, and the first thing I would fix.
Caveats
Every simulated number was measured on an arm64 rebuild of
jazzy-dev, because thepublished image is amd64 only. The upstream baseline reproduces on it (
test_room96.4 % against 97.0 %) and the CI job in the repo is how that caveat gets retired —
it has not been run yet.
No board row change in this PR; progress is reported in the discussion and folded in
as milestones land.
🤖 Generated with Claude Code