Files

Dock Cycle: undock, dock, recharge & station services (ROS2 package)

Everything around the charging/service dock. The robot must undock at the start of a job, return to the dock (on completion or on low battery), dock precisely to make charge contact, trigger dock station services (recharge, and — where the dock supports them — auto-empty and mop-wash), and find the dock when it is lost and relocalization has already failed. Because the physical robot isn't built yet, this is a Gazebo simulation; it is later re-validated on hardware in the live-robot-bringup RFC.

Status — ready to start work. No need to wait for OOMWOO hardware — develop it in the Gazebo sim (urdf-gazebo-sim) or on the real placeholder Proscenic M6 Pro. Say so in the discussions so we can coordinate.

Important References

  • nav-localize RFC — localization + Nav2; the find-the-dock fallback is invoked when its relocalization fails.
  • clean-and-map RFC and cleaning-jobs RFC — trigger return-to-dock for recharge / auto-empty / mop-wash mid-job.
  • urdf-gazebo-sim RFC — robot URDF and Gazebo world(s) to model the dock in.
  • ROS2 software interfaces — shared topic/action/service contract for simulation-first modules.
  • Model a generic basic charging dock (charge contacts + a detectable marker). Exact dock geometry is TBD — the old teardown reference vacuum is no longer used.
  • OOMWOO ROS2 development — build OOMWOO ROS2 Docker image(s) with your packages.
  • Nav2 docking (opennav_docking) is a good starting point for precise approach.
  • Project discussions
  • Discord server

Request for Contribution - Instructions

  • model the dock in Gazebo
    • add charge contacts and a detectable marker for the final approach (IR beacon, fiducial/AprilTag, or a reflective-intensity pattern the LiDAR can see)
    • model a battery (drain during cleaning, charge curve while docked) so low-battery behavior can be tested
    • model a generic basic dock (contacts + a detectable marker); exact geometry TBD
    • post in Project Discussions to let everyone know you're working on it, and post your progress
  • undocking
    • safely back / drive out of the dock to a known start pose, then hand off to cleaning
  • return-to-dock
    • navigate to the dock vicinity, triggered by job complete OR low battery / full bin / mop needs washing mid-job (coordinate with cleaning-jobs)
  • precise docking
    • final approach using the dock marker; align to the charge contacts; confirm charging started
  • dock station services
    • once docked, trigger and wait for recharge, and — where the dock supports them — auto-empty and mop-wash; report completion so the job can resume
  • find-the-dock-when-lost
    • fallback used when nav-localize relocalization has failed: run a search pattern to reacquire the dock marker, dock, and re-establish pose from the known dock location
  • test it well
    • start from various poses and battery levels; verify undock → clean → return → dock → service → resume
    • kidnap the robot so relocalization fails and verify find-the-dock recovers it
  • regression tests (headless, CI-friendly)
    • docking success rate and final alignment error
    • find-the-dock success rate from random lost poses
    • low-battery return-then-resume completes without losing the job
  • submit a PR (pull request) to contributions/dock-cycle/<your-github-username>/
    • link to ROS2 package(s) and the dock model / world additions
    • instructions, documentation - how to install, run, configure, troubleshoot, test results
    • videos of docking, find-the-dock, and low-battery return-and-resume
    • announce your submission in Project Discussions
  • iterate with review
  • TBD, expect the RFC to evolve

Acceptance criteria

Objective, measurable. Examples:

  • Robot undocks reliably to a known start pose
  • Robot returns and docks precisely, making charge contact, from various poses (alignment within a stated tolerance)
  • Station services (recharge; auto-empty / mop-wash where modeled) are triggered, completed, and reported
  • Low-battery mid-job triggers return-to-dock and the job resumes after charging
  • Find-the-dock-when-lost recovers a kidnapped robot after relocalization fails
  • Regression tests pass (dock success, alignment error, find-the-dock success), runnable headless in CI
  • Documented and reliably reproducible by someone else
  • TBD, expect criteria to evolve

The maintainer selects among compliant candidates using these criteria. Multiple attempts are welcome and useful even if not selected — modules are swappable, and a non-selected design is still a valid learning exercise and a fallback.