In this guide
How LiDAR Perception Works: Triangulation, Occupancy Grids and Object Clustering
LiDAR perception is the step that turns a laser measurement into understanding. A sensor can report a distance, but a robot needs a map, and a map needs objects. This guide explains the three ideas that bridge that gap: how a low-cost scanner measures distance by triangulation, how a grid turns those distances into a map, and how a simple clustering rule turns a map into objects. It also explains, plainly, what a student-scale scanner cannot do, using the commercial short-range sensor that inspired this week's project as the contrast.
The news that prompted this guide
In October 2026, MicroVision began commercial production of MOVIA Pro, a solid-state short-range LiDAR sensor with perception built into the sensor itself. Its published specifications include a 180 degree by 132 degree field of view, a range of 15.1 metres at 10 percent reflectivity with more than 90 percent detection probability, a 10 Hz frame rate, a weight below 400 grams, and power consumption below 9 watts. The important idea is not any single number. It is that the sensor outputs perception, not just raw points: it processes its own point cloud and hands the host system object-level information, so the host computer does less work and the system is simpler to integrate.
A student cannot buy that sensor for a college budget, and a student should not pretend to have built it. The honest student version, published alongside this guide, is a MOVIA-inspired LiDAR room mapper built around a spinning triangulation scanner and a clustering rule that runs on a Raspberry Pi. The rest of this guide explains why that substitution is fair, and where it stops being fair.
How a triangulation scanner measures distance
Most low-cost 2D scanners do not time a laser pulse. They use triangulation, which is geometry, not a stopwatch. A laser diode projects a small spot onto a surface. A camera-like sensor inside the scanner watches that spot. When the surface is close, the spot lands in one place on the sensor; when the surface is far, it lands in another. The scanner knows the distance between its laser and its sensor, and the angle at which the spot was seen, so it can solve the triangle and report the distance.
Triangulation is cheap, accurate at short range, and well suited to indoor rooms. The RPLIDAR A1, the scanner used in the companion project, reports a range of 0.15 metres to 12 metres, a sample rate of 8000 samples per second, and a typical scan rate of 5.5 Hz, configurable from 2 Hz to 10 Hz. Its stated accuracy is 1 percent of the actual distance up to 3 metres, 2 percent from 3 to 5 metres, and 2.5 percent from 5 to 12 metres. Those figures matter for a report, because they set the uncertainty of every object distance the project quotes.
Triangulation also has a weakness a student must show, not hide. It depends on seeing the laser spot clearly. Dark surfaces absorb the spot, shiny surfaces scatter it, and transparent surfaces let it pass through. A glass door can therefore appear as a gap in the map, and a mirror can appear as a phantom wall behind the real one. A good report photographs the room, shows the gap, and explains it, rather than smoothing it away.
How time-of-flight differs, and why it costs more
Higher-end LiDAR, including most solid-state sensors, usually measures distance by time of flight: it emits a pulse and measures how long the reflection takes to return. Light travels about 30 centimetres in one nanosecond, so a time-of-flight sensor needs very fast timing electronics to resolve centimetres. That electronics cost is one reason solid-state sensors are expensive, and one reason a student build uses triangulation instead.
Solid-state is a second difference, separate from the ranging method. A spinning scanner rotates its optics mechanically to sweep a full circle. A solid-state sensor steers or flashes its beam with no moving parts, which makes it smaller, more robust to vibration, and easier to seal against dust and water. MOVIA Pro, for example, is rated IP6K9K and has no moving parts. A spinning student scanner cannot claim any of that, and its 2D scan plane is a further limit: it sees one horizontal slice of the room, not a volume.
From points to a map: the occupancy grid
A single scan is a list of polar coordinates: an angle and a distance for each return. A map needs Cartesian coordinates, so the first software step converts each angle and distance into an x and y position relative to the scanner. The second step is the occupancy grid, which is the most useful mental model in this whole guide.
Imagine the floor divided into small squares, called cells. The companion project uses cells of 0.05 metres, or 5 centimetres, on each side. A cell that a laser return landed in is marked occupied. A cell that a laser ray passed through on its way to a wall is marked free, because the ray would have stopped if something had been there. A cell that no ray ever reached is marked unknown. That three-way distinction, occupied, free, and unknown, is the whole map, and it is far more honest than a picture that fills every unknown cell with a guess.
Grid size is a trade-off a student should be able to defend. Smaller cells give a sharper map but need more memory and more computation per scan. Larger cells run faster but blur narrow objects: a chair leg thinner than a cell can vanish into a neighbouring cell. A 5 centimetre cell is a sensible middle ground for a room a few metres across, and it is the value the companion project uses.
From a map to objects: the clustering rule
A map shows walls and blobs, but it does not name objects. Clustering is the step that groups nearby returns into one object, and it is where most student projects either over-claim or under-explain. The rule used in the companion project has three parts, and each part exists for a visible reason.
First, separate walls from objects. A return that lands on a wall is part of the room, not an object in it. The project therefore compares each return with the wall distance in that direction and keeps only returns at least 0.30 metres in front of the wall. A flat wall is then drawn on the map but never counted as an object. The cost of that rule is also visible: an object pressed against a wall, standing less than 0.30 metres clear of it, cannot be separated from the wall, and the project says so.
Second, join neighbours. Two kept returns that are closer than 0.25 metres apart are treated as parts of the same object, because a real object is a continuous surface, while noise is scattered. Third, require a minimum size: a cluster needs at least 6 returns before it is reported, so a single stray reflection does not become a phantom object. Each surviving cluster is then reported with a centre distance in metres, an angle in degrees, a width in metres, and a point count.
That rule reports that something is there and how wide it is. It does not recognise what it is. A chair, a table, and a person of similar width produce similar clusters. Recognition needs a model trained on labelled examples, which is what onboard learned perception in a commercial sensor does, and what a student clustering rule deliberately does not claim.
How to test a room mapper honestly
A room mapper is easy to demo badly and easy to test well. The test that makes a report credible has three parts, and all three are cheap.
First, test the walls. Place the scanner in a rectangular room, measure the room with a tape, and compare each mapped wall with the tape figure. A wall that is 0.10 metres out in the map is a calibration or mounting error worth finding, not a detail worth hiding.
Second, test an object. Place a box at a taped distance, read the object table, move the box, and watch the table update on the next scan. Record the taped distance, the reported distance, and the difference. That difference, compared with the scanner's datasheet accuracy, is a real result, and it is the result an examiner will ask about first.
Third, test a failure. Put a glass door, a mirror, or a dark cloth in the room and show what the map does. A report that shows one failure and explains it is stronger than a report that shows only clean runs, because it proves the student knows where the instrument stops working.
Frequently asked questions
Is a spinning scanner the same as a solid-state sensor?
No. A spinning scanner rotates its optics to sweep a circle, while a solid-state sensor steers or flashes its beam with no moving parts. The spinning version is cheaper and gives a full 360 degree 2D scan, but it is larger, more fragile, and limited to one plane. The solid-state version is smaller and more robust, but far more expensive. The companion project uses the spinning version and states the difference on its page.
Why does my map show a gap where a glass door is?
Because triangulation needs to see the laser spot, and glass lets the spot pass through instead of reflecting it. The scanner receives no return from that direction, so the grid cell stays unknown, which the map draws as a gap. That gap is correct behaviour, not a fault, and the fix is to note the glass in the report rather than to fill the gap with an invented wall.
How many objects can the clustering rule find?
As many as stand clear of the walls and each other. Two objects closer than the 0.25 metre joining distance merge into one cluster, and an object against a wall merges with the wall. The rule therefore has a resolution limit, just like a camera has a resolution limit, and a good report states that limit with a test: two boxes placed close together, and the distance at which they stop separating.
Do I need the internet to run the mapper?
No. Scan capture, mapping, clustering, and the dashboard in the companion project all run on the Raspberry Pi itself, and the dashboard is served over the local network. The internet is not part of the measurement, which is one reason the project is a good classroom demonstration: it works in any room with power and a laptop.
Limitations to keep in your report
Keep four limits in any report built from this guide. First, a 2D scanner sees one plane only, so low steps and hanging objects are invisible. Second, dark, shiny, and transparent surfaces produce weak or missing returns. Third, clustering reports presence and width, not identity, so no object in the table should ever be labelled as a chair, a person, or a table unless a separate sensor identified it. Fourth, a room mapper is an educational instrument, not a safety sensor, and it must not be used where a missed object could cause harm.
What to build next
If you build the companion project, the next honest steps are a tilting mount for a second scan height, wheel odometry for drive-while-mapping, and a test of two close objects to find the clustering resolution limit. Each step should be measured with the same tape-and-move test described above, so new capability is demonstrated rather than claimed. The companion project page is here: MOVIA-inspired LiDAR room mapper.