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.