This is an open-source robot vacuum. It is made with simplicity in mind and uses parts that are widely available (no custom PCBs, AA batteries instead of Lithium-ion batteries, no vision sensors, etc.). Source code, laser-cut data, schematics diagrams, and BOM are available from this page.
The robot is equipped with a bumper that can sense collision and the direction of that collision. This enables the robot to change direction according to where the wall was relative to the robot.
The robot is also equipped with a dust compartment that can be removed from the back. Dust is sucked from the ground and collected in this compartment.
The robot has a diameter of 200mm and a height of approximately 45mm. It is a lot smaller than real robot vacuums. It is compact and designed so that space is not wasted.
The top cover can be removed to reveal all the components inside the robot.
The robot is powered by eight AA batteries connected in series. The robot uses two wheels to move (called differential drive). There is a vacuum fan at the back that sucks dust from the intake at the bottom of the robot. The fan then exhausts clean air from the back. All three motors are controlled by an Arduino UNO and Adafruit Motor Shield v1. There are two switches that act as collision detectors. Bumper at the front pushes these switches when the robot hits a wall. Lastly there is a power switch at the back.