Files

3.1 KiB

DhruvaSLAM — Enuxia Vacuum mapping stack

DhruvaSLAM is the current SLAM, mapping and robot-state backend used by Enuxia Vacuum.

It originates from the upstream VacuumTiger project and is being adapted by Enuxia around real-world CRL-200S / Proscenic M6 Pro testing.

The current codebase is a validated development baseline, not the final navigation architecture.


Responsibilities

DhruvaSLAM currently handles:

  • wheel odometry;
  • LiDAR preprocessing;
  • scan matching;
  • occupancy-grid mapping;
  • submaps;
  • keyframes;
  • loop closure;
  • pose-graph optimization;
  • map persistence;
  • telemetry / map streaming;
  • exploration and navigation baseline logic.
SangamIO
   │
   ├── wheel / sensors
   └── LiDAR
        │
        ▼
   DhruvaSLAM
        │
   ┌────┴─────┐
   ▼          ▼
 Pose        Map
   │          │
   └────┬─────┘
        ▼
 Navigation / diagnostics

Enuxia baseline work

The Enuxia M6 Pro baseline contains a set of fixes developed from real robot runs, including:

  • configurable minimum LiDAR scan size;
  • full initial 360° scan before autonomous exploration;
  • corrected treatment of unknown space during planning;
  • navigation invalidation after SLAM graph corrections;
  • submap-origin corrections after pose-graph optimization;
  • persistent bumper obstacles;
  • improved frontier failure tracking;
  • protection against repeated failed frontier selections;
  • safer stuck/failure termination.

These changes improved the baseline substantially, but they also exposed architectural limitations in the current navigator.


Navigation status

The existing navigation code is intentionally considered legacy/baseline navigation.

The next Enuxia milestone is Navigation V2.

Navigation V2 target

Goal
 ↓
Global planner
Theta*
 ↓
Global path
 ↓
Layered local costmap
 ↓
DWA local planner
 ↓
cmd_vel
 ↓
SangamIO

Navigation V2 will also introduce:

  • footprint-aware collision checking;
  • measured progress detection;
  • encoder-based stuck detection;
  • contact-memory from bumpers;
  • recovery based on actual displacement rather than timers;
  • clean separation between navigation and exploration.

Build

cargo test
cargo build --release

Run with an explicit config:

RUST_LOG=info \
./target/release/dhruva-slam \
  --config /path/to/dhruva-slam.toml

Do not commit deployment-specific network addresses or credentials into the public repository.


Development philosophy

SLAM answers:

Where is the robot, and what does the world look like?

Navigation answers:

How should the robot move safely from here to there?

Exploration answers:

Where should the robot go next to learn more about the environment?

Cleaning answers:

How should the known floor be covered efficiently?

Those responsibilities are being separated progressively in the Enuxia fork.


Origin

DhruvaSLAM originates from VacuumTiger.

Enuxia preserves upstream history and licensing while developing the M6 Pro integration and future navigation architecture independently.