The problem
Indoor robots, cleaning machines, and warehouse carts all need the same basic answer before they can move: what is around me, and where are the walls? This room mapper gives a student that answer from a sensor that fits on a small robot. A rotating 2D LiDAR spins through a full circle several times per second, measuring the distance to every surface, and a Raspberry Pi 5 turns those readings into a top-down map of the room and a short table of objects with a distance, an angle, and a width for each one. The perception step runs on the Pi itself, so the map appears on a local dashboard with no cloud account. The design is honest about its scale: the student scanner is a spinning triangulation unit with a 12 metre range, not the solid-state sensor that inspired it, and its object finder is a transparent clustering rule, not a trained network.
How it works
This room mapper works by turning a spinning laser measurement into a map and then into objects, in four stages that all run on the robot. First, the LiDAR measures distance by triangulation: it projects a laser spot, watches where that spot lands on its sensor, and converts the spot position into a distance, repeating the measurement thousands of times per revolution while the head rotates through 360 degrees. Second, the Raspberry Pi 5 receives the polar readings over a USB serial link and converts each angle and distance into an x and y position, filling an occupancy grid whose cells are 0.05 m across. Third, the perception step separates walls from objects by keeping only returns at least 0.30 m in front of the wall, then clustering neighbours closer than 0.25 m apart. Fourth, the dashboard draws the scan, the map, and the object table together.
- The robot is placed near the centre of a rectangular indoor room, with the LiDAR mast clear of the chassis edge so the robot's own wheels do not enter the scan.
- The LiDAR spins through 360 degrees at a typical rate of 5.5 Hz, measuring distances from 0.15 m to 12 m at up to 8000 samples per second.
- Readings travel over a USB serial link to the Raspberry Pi 5, which converts each polar reading into an x and y position.
- The Pi fills an occupancy grid with a 0.05 m cell size, marking wall cells as occupied and the space between scanner and wall as free.
- The perception step keeps only returns at least 0.30 m in front of the wall, then clusters neighbours closer than 0.25 m apart into objects of at least 6 returns.
- Each cluster is reported with a centre distance in metres, an angle in degrees, a width in metres, and a point count, and the dashboard draws a ring around it.
- The student checks the map against the real room, moves an object, watches the table update on the next scan, and exports the CSV object list and PNG map for the report.
Tech stack:
- RPLIDAR A1 2D LiDAR scanner
- Raspberry Pi 5
- Python · NumPy
- Flask web dashboard
- Wheeled robot chassis kit
- DC geared motors · motor driver
- USB serial link
- Rechargeable battery pack
| Parameter | Value |
|---|---|
| Scanner | RPLIDAR A1 2D LiDAR scanner with 360 degree scan (datasheet value) |
| Scanner range | 0.15 m to 12 m (datasheet value) |
| Sample rate | 8000 samples per second (datasheet value) |
| Scan rate | 5.5 Hz typical · configurable from 2 Hz to 10 Hz (datasheet value) |
| Ranging principle | Laser triangulation at 785 nm wavelength (datasheet value) |
| Laser safety | Laser Class 1 (datasheet value) |
| Host computer | Raspberry Pi 5 with quad-core Cortex-A76 processor at 2.4 GHz (datasheet value) |
| Host power | 5 V and 5 A over USB-C (datasheet value) |
| Occupancy grid | 0.05 m cell size (design target) |
| Foreground filter | Returns at least 0.30 m in front of the wall (design target) |
| Cluster rule | Neighbours closer than 0.25 m apart · minimum 6 returns per cluster (design target) |
| Demo room | 4.2 m by 3.6 m rectangular room with 3 demo objects (design target) |
| Output | Object centre distance in metres · angle in degrees · width in metres · point count (design target) |
| Export | CSV object list · PNG map image (design target) |
| Operating environment | Indoor use only · no direct sunlight exposure (datasheet guidance) |
Project features
This room mapper is built around four capabilities a student can demonstrate live: a full 360 degree scan that refreshes several times per second, an occupancy map that shows walls and free space in a top-down view, an onboard clustering step that converts raw points into named objects with distance, angle, and width, and a local web dashboard that shows the map and the object table together with no cloud dependency. Around those core capabilities, the software exports the object list as a CSV file and the map as a PNG image for the report, and a foreground filter keeps wall returns out of the object table, so a flat wall is clearly drawn as a wall and never reported as an object, even when it fills half the scan.
- [360 degree room scan] A rotating 2D LiDAR sweeps a full circle at a typical scan rate of 5.5 Hz, measuring distances from 0.15 m to 12 m, so a complete room outline is refreshed several times per second. Implemented in the base prototype.
- [Occupancy map] The Pi converts polar range readings into a top-down occupancy grid with a 0.05 m cell size, showing walls as occupied cells and the space between scanner and wall as free cells. Implemented in the base prototype.
- [Onboard object clustering] A foreground filter keeps only returns at least 0.30 m in front of the wall, then joins consecutive returns closer than 0.25 m apart into one cluster of at least 6 returns, giving each object a centre distance, angle, and width. Implemented in the base prototype.
- [Local web dashboard] A Flask dashboard on the Pi shows the live polar scan, the occupancy map, and the object table together on one page, served over the local network with no cloud account. Implemented in the base prototype.
- [CSV and PNG export] The object list exports as a CSV file with distance, angle, width, and point count per object, and the map exports as a PNG image for the report. Implemented in the base prototype.
- [Wall versus object separation] Wall returns are drawn on the map but excluded from the object table by the foreground filter, so a flat wall is never counted as an object and an object against a wall is reported only when it stands clear of the wall. Implemented in the base prototype.
- [Scan health display] The dashboard shows the scan rate, the points per revolution, the object count, and the nearest object distance, so a failed or stalled scan is visible immediately instead of silently showing a frozen map. Implemented in the base prototype.
What is included
- Working prototype: wheeled robot base with RPLIDAR A1 scanner on a mast, Raspberry Pi 5, motor driver, motors, and battery pack, wired and tested
- Complete Python software for scan capture, occupancy mapping, foreground filtering, clustering, and the Flask dashboard, with CSV and PNG export
- Circuit and wiring documentation with labelled connections for every wire
- Component list with the exact parts used in the build
- Calibration and demonstration procedure, including the wall-distance check and the object-move test
- Project report PDF (background, LiDAR triangulation theory, methodology, results format, limitations)
- PPT presentation for final review
- Viva Q&A preparation document (LiDAR ranging, occupancy grids, clustering, USB serial communication, why a spinning scanner differs from a solid-state sensor)
- Builder note: mount the scanner at least 0.15 m above the chassis edge, because a lower mast lets the robot's own wheels enter the scan and appear as permanent phantom objects in the object table
Limitations & prerequisites
- The student scanner is a spinning triangulation unit, not a solid-state sensor: it has moving parts, a 2D scan plane only, and no multi-echo or learned perception, so it cannot match the commercial sensor's field of view, range, or object classification.
- Dark, shiny, or transparent surfaces return weak or missing points, so glass doors and mirrors can appear as gaps in the map, and the report must show a gap as a gap rather than filling it in.
- The object finder is a clustering rule, not a recogniser: it reports that something is there and how wide it is, but it cannot say whether that something is a chair, a table, or a person.
- An object pressed against a wall is indistinguishable from the wall when it stands less than 0.30 m clear of it, because the foreground filter needs that clearance to separate the two.
- The map is 2D only: it records the room at the scanner's height and says nothing about objects above or below that plane, such as a low step or a hanging sign.
- Direct sunlight degrades the scan, so the demonstration must run indoors, and the scanner must never be pointed at a person's eyes at close range despite its Class 1 rating.
- The prototype is an educational mapping instrument only: it must not be used as a safety sensor for a vehicle, a robot carrying people, or any application where a missed object could cause harm.
Frequently Asked Questions
How is this different from the commercial sensor that inspired it?
The commercial sensor is a solid-state unit with a 180 degree by 132 degree field of view, onboard learned perception, and a range beyond 15 m at low reflectivity, while the student build uses a spinning triangulation scanner with a 360 degree 2D scan, a 12 m range, and a transparent clustering rule instead of a learned model. The inspiration is the idea, short-range perception computed on the device itself, not the hardware, and the page states that boundary plainly so no examiner is misled about what was built.
Is this project suitable for a final-year project?
Yes, for IoT and Embedded Systems students, because it demonstrates laser ranging, serial communication, occupancy mapping, and onboard clustering in a live hardware demonstration, with a measurable test the student can repeat: move an object, watch the table update, and compare the reported distance with a tape measurement. The clustering rule is simple enough to explain in a viva and honest enough to defend, since every object traces back to the points that formed it.
Does the project need internet during the demonstration?
No, the project needs no internet at any point, because the scan capture, mapping, clustering, and dashboard all run on the Raspberry Pi 5 itself, and the dashboard is served over the local network to a laptop or phone in the same room. A laptop is used only to view the dashboard and to collect the exported CSV and PNG files, so the demonstration can run in any classroom with a rectangular indoor room.
How accurate is the object distance?
The scanner's own accuracy is 1 percent of the actual distance up to 3 m, 2 percent from 3 m to 5 m, and 2.5 percent from 5 m to 12 m, according to its datasheet, so a reported object at 2.00 m carries about 0.02 m of scanner uncertainty before any clustering error is added. The student verifies this by placing an object at a taped distance, reading the dashboard centre distance, and recording the difference, which turns a datasheet figure into a measured result in the report.
Can the project be customized?
Yes, within realistic limits: a second scan height can be added with a tilting mount, the grid cell size and cluster thresholds can be retuned, and a simple drive-while-mapping mode can be added with wheel odometry, while solid-state sensing, 3D mapping, and object recognition can never be added honestly, since the scanner measures one 2D plane and the clustering rule has no classification model. The report keeps that boundary explicit.
Components & software requirements
- RPLIDAR A1 2D LiDAR scanner
- Raspberry Pi 5
- Python · NumPy
- Flask web dashboard
- Wheeled robot chassis kit
- DC geared motors · motor driver
- USB serial link
- Rechargeable battery pack
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.