Repository navigation
contributions(clean-and-map): pointer to yugeeklab's coverage-while-mapping implementation - #73
Merged
Conversation
…apping implementation
Contributor
Author
|
Pictures from one session on each world, on the code this PR points at. They are
Swept 93.0 %, 98.2 % and 99.6 % of the reachable floor. On studio the knots in the All twelve pictures, and how they are made: |
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
Hi, @makers-pet Claims a second track on the
clean-and-mapmodule and adds a pointer to myself-hosted implementation, per CONTRIBUTING: the code lives in my repo, with a
link in-tree. One file,
contributions/clean-and-map/yugeeklab/README.md.This replaces #71. I closed it thinking the module was taken, and its branch is
gone. Thank you for the note there. What #71 said is below, updated.
Self-hosted repository: https://github.com/yugeeklab/oomwoo-clean-and-map
Discussion: #66
Approach
Coverage while mapping. 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. It is a separate node, so it stays out of the way of @Arkz-Deepak's
work on
coverage_planner.Against the acceptance criteria
living_room, all five cross 0.90oomwoo_one's two contact sensors are the two halves of the front bumper, and both are handledmap_completeness_meter, plusregression.shandscore_run.py, which give one session a pass/fail exit codestudio.sdfof 19.4 m², andoomwoo_gazebo'smulti_room.sdfof 52.0 m²docs/Where it stands on
living_roomNo map at start, headless, scored by
coverage_meteratcleaning_radius0.20,which is what
coverage_regression.launch.pyuses. Five start poses:deploy/run_coverage_livingroom.shwith the stockcoverage_planner, same world,same harness: coverage 0.8772, target never crossed. This node crosses 0.90 from
every start pose tried, where upstream's does not reach it. Neither meets the
runner's 0.80
efficiency_targeton this world, and I think the reason is the mostuseful thing in this PR.
Same code and parameters on the other two worlds:
living_roomstudiomulti_roomWhy neither planner makes 0.80 on
living_roomAt the 0.90 crossing the robot has driven 47.2 m against the 42.6 m the gate allows:
35.2 m of sweeping, 6.1 m of turn-arounds, and 5.9 m between the pieces furniture
cuts the passes into.
The passes are 0.35 m apart rather than the full 0.40 m swath, because localisation
error is 11 mm mean and 26 mm at p90, and passes exactly one swath apart leave strips
of floor between them.
coverage_regression.launch.pysetsrow_overlap0.05, whichon a 0.05 m grid rounds to exactly one swath. Upstream takes the wide spacing and
falls short on coverage. This node takes the narrow one and falls short on
efficiency. On
multi_room, where a pass runs about 6 m againstliving_room's 2.5 m, thesame node reaches 0.906.
Known limits
studioa sessionescapes 63 to 112 times, most of them at the two 7 cm boxes. The saved SLAM map
has every cell of both free, so a pass that grazes one is planned again after each
escape. The robot never wedges, but it costs distance. I tried keeping a
twice-bumped spot as an obstacle the planner sees. It cut escapes by about a
third, but it sent the hops it blocked to Nav2, which stalled on short tight ones,
and one session in six ended at 0.83. Giving Nav2 the spots through a
KeepoutFilter as well stalled one session in two. Both were measured and neither
was merged, and the repo's run record has the numbers.
oomwoo_clean'sbump_map_nodealready builds a tactile layer and is the natural source if thiscomes back.