Sucky — Autonomous Cleaning Robot
Real-world ROS 2 deployment with SLAM and full coverage path planning in dust-heavy industrial environments.
Overview

Sucky is an autonomous cleaning robot designed to navigate and operate in dust-heavy industrial environments.The project showcases the transition from simulation to a fully functioning real-world robot, leveraging ROS 2 for mapping, navigation, and full coverage path planning.
Goals
- Deploy SLAM, navigation and coverage planning from simulation to the real robot.
- Handle real-world complexities such as dust interference, dynamic obstacles, and uneven flooring.
- Tune and validate Full Coverage Path Planning for reliable, systematic cleaning.
- Develop a robust platform for future industrial-scale deployments.
Technical Approach
Hardware
- Drive Base: Two powered drive wheels combined with two free-spinning mecanum caster wheels for stability. The robot uses a differential drive configuration to control movement, making it simple yet effective for navigating industrial environments like a sawmill.
- LiDAR: Sick TIM781 for accurate and reliable obstacle detection.
- Depth Camera: Intel RealSense D455 equivalent for 3D perception and SLAM.
- Computer: Jetson Orin Nano.
- Microcontroller: Arduino Integration for vacuum and cleaning peripherals.
Software
- Frameworks: ROS 2 Humble, Foxglove.
- Simulator: Gazebo.
- Nav2 Stack: Provides navigation, planning, and autonomous movement.
- RTAB-Map: For 3D mapping and localization.
Key Contributions
- 3D Mapping: Implemented RTAB-Map for mapping and localization in the sawmill’s challenging layout.
- Behavior Trees (BTs): A custom behavior tree was developed to integrate SpiralSTC planning, based on the Full Coverage Path Planner repo from nobleo.
- Coverage Planning: Implemented the Full Coverage Path Planning (FCPP) planner plugin in ROS 2 for systematic cleaning. Added a an interpolation_resolution parameter for better fine-tuning.
- Navigation: Tuned Nav2 parameters for robust real-world navigation, with a major focus on the controller_server and MPPI (Model Predictive Path Integral) controller for robust path following and dynamic obstacle handling.
- LiDAR and Camera Filtering: Designed and implemented filtering strategies to handle airborne dust, a major challenge in the sawmill environment.
Results
3D SLAM with RTAB-Map

From this 3D map, we can extract the point cloud data:

This 3D map allows us to extract a 2D slice that will serve as the base for navigation:

Full Coverage Path Planning

Cleaning Demo

Ideas for Improvement
Looking ahead, there are three primary areas for improvement that will significantly enhance the system’s performance, robustness, and usability:
- Enhanced dynamic obstacle avoidance strategy
- Integrate opennav_coverage into the real robot for finer control of coverage areas
- Adding higher-level error handling and notification logic
Some other future enhancements worth exploring with lower priority include:
- Hose detection pipeline
- Automated dumping process
- Automated charging
- Cleaning progress & robot status dashboard
For a more detailed explanation of these improvements, please check Improvements Report.
GitHub Repository
Explore the Project on GitHub
If you are also interested in the simulation side of this project, you can find it here.