This project aims to enhance the efficiency of Roomba robots in real-world settings by comparing the performance of different algorithms. The research uses pre-existing pathfinding algorithms for the iRobot Create 3 to implement a coverage measuring system. A comparative analysis will be conducted, measuring and evaluating key factors such as coverage, time consumption, and overall efficiency of each algorithm.
A primary focus for this project is simultaneous localization and mapping (SLAM), a technique that enables a robot to create and update a map of an unknown environment while simultaneously keeping track of its position. We will utilize LiDAR technology installed on iRobot Create 3 and a Raspberry Pi 4 running ROS2 to implement a system that creates a map of the room covered and records the robot’s path. These maps will be generated using software designed for mapping and visualization.
The generated maps are then analyzed, and the data recorded is compared to identify algorithms that provide more comprehensive coverage. We anticipate that this research will contribute to creating a more systematic approach to analyzing pathfinding strategies, reaching beyond the algorithms used in the comparative analysis in this study. The results of this project will potentially be used in more informed decision-making in the selection of algorithms for autonomous consumer-grade vacuuming robots used in diverse environments.
You will need:
- iRobot's Create3 robot
- Raspberry Pi 4
- Ubuntu 22.04 (either on a virtual or physical machine)
- ROS2 Humble
- Slamtec RPLiDAR A1M8
- USB-C to USB-C cable
- USB Micro B to USB A cable
- Ethernet to USB-C adapter
First, follow the Create3 instructions to set up Ubuntu on the Raspberry Pi.
Next, follow the Create3 LiDAR SLAM example setup instructions to set up the robot and the Raspberry Pi.
Important
if you are using a virtual machine to run Ubuntu 22.04, make sure to set the networking mode to Bridged so the robot can communicate with your VM.
Important info for Apple Silicon Mac users (click to expand)
If you are using Apple Silicon, you must install Ubuntu 22.04 in a virtual machine.
Download the 64-bit ARMv8 version of Ubuntu 22.04 server here.
Set up the virtual machine using your VM Software (this example uses UTM).
Make sure to set the networking mode to Bridged (Advanced), and the Bridged Interface to Automatic.
This will allow the virtual machine to communicate with the robot.
UTM setup instructions (click to expand)
Click on "Create a New Virtual Machine"
Then click "Virtualize"
Then under "Preconfigured" click on "Linux"
Then leave Apple Virtualization unchecked, as we are using QEMU. Select the Ubuntu 22 server ISO that you downloaded earlier.
Then under hardware choose the amount of CPU cores and memory you want to allocate to the VM. I kept the default settings.
Then choose the amount of storage you want to use for the VM, and if you want to create a shared directory with your computer's OS and the VM.
After setup it should look like this
Next, start the VM and follow the setup instructions. After it completes the install, shutdown the VM and remove the ubuntu 22 ISO from the CD/DVD drive.
Next, boot into the VM run sudo apt update && sudo apt upgrade and then sudo apt install ubuntu-desktop. Then type reboot and load the VM. It should now load the desktop login page.
Next, shut down the VM, right click and select "Edit"
Under "Devices" click on "Network"
Change the Network Mode to "Bridged (Advanced)" and the Bridge Interface to "Automatic". This will allow the VM to communicate with the robot.
After setting up the VM, follow the iRobot ROS2 Ubuntu install instructions to set up Ubuntu on your virtual machine.
Follow the instructions to set up the create3_lidar_slam package on your virtual machine. This package is used in the real-time approach.
This project has two approaches: one records data in a ROSbag file and displays it in RViz during playback, while the other displays real-time data in RViz using LiDAR, and other sensor data.
Setup for the ROSbag approach is located in these folders:
Setup for the real-time approach is located in these folders:
- Cheng, R., Hong, W., Li, J., & Lin, K. W. (2019). Indoor Positioning and path Planning Platform for iRobot create 2 sweeping robot. Advances in Science Technology and Engineering Systems Journal, 4(3), 198–206. Retrieved April 25, 2025, from https://www.astesj.com/publications/ASTESJ_040327.pdf
- Choset, H., & Pignon, P. (1998). Coverage Path planning: The Boustrophedon Cellular Decomposition. In Field and Service Robotics (pp. 203–209). Retrieved April 23, 2025, from https://www.ri.cmu.edu/pub_files/pub4/choset_howie_1997_3/choset_howie_1997_3.pdf
- Gunning, R. (2018). A performance comparison of coverage algorithms for simple robotic vacuum cleaners [PhD dissertation, KTH Royal Institute of Technology]. https://diva-portal.org/smash/get/diva2:1213970/FULLTEXT02.pdf
- Hasan, K. M., Abdullah-Al-Nahid, N., & Reza, K. J. (2014). Path planning algorithm development for autonomous vacuum cleaner robots. In International Conference on Informatics, Electronics & Vision (ICIEV) (pp. 1–6). https://www.researchgate.net/publication/269297110_Path_planning_algorithm_development_for_autonomous_vacuum_cleaner_robots269297110_Path_planning_algorithm_development_for_autonomous_vacuum_cleaner_robots
- Macenski, S., & Jambrecic, I. (2021). SLAM Toolbox: SLAM for the dynamic world. The Journal of Open Source Software, 6(61), 2783. https://doi.org/10.21105/joss.02783
- Olson, J., Kirillov, I., & Sweeney, J. (2008). Simple Mapping and Path-planning with the Roomba. Retrieved April 25, 2025, from https://joosm.github.io/RIP2014/material/pastprojects/RIP08_JohnJonIvan.pdf
- Zhao, S., & Hwang, S. (2023). Complete coverage path planning scheme for autonomous navigation ROS-based robots. ICT Express, 10(1), 83–89. Retrieved Apr. 23, 2025, from https://www.sciencedirect.com/science/article/pii/S2405959523000796?via%3Dihub
- Zheng, K., Chen, G., Cui, G., Chen, Y., Wu, F., & Chen, X. (2017). Performance Metrics for Coverage of Cleaning Robots with MoCap System. In Lecture notes in computer science (pp. 267–274). https://doi.org/10.1007/978-3-319-65298-6_25
- Gabriely, Y., and E. Rimon. “Spanning-tree based coverage of continuous areas by a mobile robot.” Proceedings 2001 ICRA. IEEE International Conference on Robotics and Automation (Cat. No.01CH37164), vol. 2, pp. 1927–1933, https://doi.org/10.1109/robot.2001.932890
- Bennett, B. (2021, August 27). Why your roomba takes a weird path to keep your floors clean. This is why your Roomba’s random patterns actually make perfect sense. https://www.cnet.com/home/kitchen-and-household/this-is-why-your-roombas-random-patterns-actually-make-perfect-sense/
- iRobot. (2025, April 15). Navigation Technology. iRobot Knowledge. Retrieved April 23, 2025, from https://homesupport.irobot.com/s/article/31056#:~:text=Robots%20that%20use%20iAdapt%C2%AE%201.0%20Navigation%20Technology%20utilize%20a,on%20a%20single%20battery%20charge
- Layton, J. (2005, November 3). How robotic vacuums work. HowStuffWorks. https://electronics.howstuffworks.com/gadgets/home/robotic-vacuum.htm
- Lopez, D. G., Browmy, & Fernández-Laguilhoat, E. (2021, March 18). Danigarcialopez/ros2_explorer: In this repo we use Turtlebot 3 along with Ros 2 and gazebo to explore an unknown CSV environment, navigate through it and create a map. GitHub. https://github.com/DaniGarciaLopez/ros2_explorer/tree/main
- Maher, L., & Rahman, I. (2024). Zigzag Scanline Algorithm. Retrieved April 23, 2025, from https://github.com/vinzmoke-zoro/Zigzag-Scanline-Algorithm
- Soragna, A., Kearns, J., & Shamlian, S. (2024). iRobot® Create® 3 Coverage. iRobot. Retrieved April 23, 2025, from https://github.com/iRobotEducation/create3_examples/tree/humble/create3_coverage
- Soragna, A., Shamlian, S., Kearns, J., & Dorich, J. (2022). iRobot® Create® Platform interfaces. iRobot. (2022). Retrieved April 25, 2025, from https://github.com/iRobotEducation/irobot_create_msgs
- Sutton, N., & De Leon, R. (2024). Hilbert Curve for ROS 2 Robots. Retrieved April 23, 2025, from https://github.com/NaeemSutton/Hilbert-Curve-for-ROS-2-Robots
- visualization_msgs — visualization_msgs 4.8.0 documentation. (n.d.). https://docs.ros.org/en/humble/p/visualization_msgs/