Raw Mechatronics

Project

EasyScanner — Phone Laser Line Scanner

Hand-held 3D scanning with a phone, a line laser and a printed board. An open Android app and printable parts, v0.2.

A hand-held laser line scanner built from an Android phone, a line laser on a printed ball mount and a printed ChArUco board. The phone finds its own pose from the board, triangulates the laser stripe and builds a point cloud in millimetres, right on the device.

Version v0.2. The app scans on a real phone: camera calibration, laser-plane calibration and a hand-held scan exported as a PLY (see the first scan below). The accuracy of real scans has not been measured yet. The APK is on the v0.2 release page.

How it works

The camera sees the board and the laser stripe in the same frame.

The laser must draw a line, not a dot: a line laser module fans its beam into a flat sheet of light. Where the sheet meets the object it draws a stripe; the camera sees the stripe and the board at once, so every stripe pixel becomes a 3D point in the board's frame. Keep the board in view while you sweep the line over the object.

First scan on a real phone

From the phone's screen recording on 2026-10-19: camera calibration (64 views of the board), the laser plane (rms 0.35 mm), a hand-held scan of a phone and its export, 254 219 points. The recording predates the rename, so the screens still say HandScanner.

Four phone screens: camera calibration collecting views of the board, the laser plane saved with rms 0.35 mm, scanning with the stripe and the growing cloud over the phone being scanned, and the export of 254219 points
The exported point cloud of the first scan: the phone as a dense cloud of points

The cloud itself, as the phone exported it, minus the stray stripes that missed the phone (202 k of 254 k points kept):

Loading scan viewer…

The scanner

Loading 3D viewer…
Easy Scanner from the side: the phone in its clamp on the U profile, the laser mount at the profile's end
Easy Scanner from above
Easy Scanner from below: the phone's cameras and the laser look down
Easy Scanner printed part: phone clamp lower
Easy Scanner printed part: phone clamp upper
Easy Scanner printed part: phone clamp screw bottom
Easy Scanner printed part: phone clamp screw top
Easy Scanner printed part: phone clamp knurled head
Easy Scanner printed part: laser mount flange clip for the 16 × 13 U profile
Easy Scanner printed part: laser mount ball
Easy Scanner printed part: laser mount nut
Easy Scanner printed part: laser clamp

The phone sits in the clamp with its cameras facing down; the clamp snaps onto an aluminium U profile, and the ball mount at the profile's end holds the laser.

What you need

  • An Android phone, Android 10 or newer, arm64.
  • A line laser module with a Ø12 mm body, red or green.
  • A 16 × 13 × 1.5 mm aluminium U profile, about 120 mm long.
  • An M5 × 25 socket head screw and an M5 tap, for the ball.
  • The printed parts (PLA is fine) and a printed ChArUco board.

How to use it

  1. Print the parts from the repo's cad/.
  2. Assemble: the phone clamp and the laser mount on the profile, the laser in its ring; tilt the ball so the stripe crosses the camera's view.
  3. Install the app: download the APK from Releases and open it on the phone (allow installing from this source). It is signed with a development key; you can also build it yourself from android/.
  4. Print a board and enter its numbers in the app's Settings → ChArUco board.
  5. Calibrate the camera first (Camera mode), then the laser plane (Laser mode).
  6. Scan: put the object on the board and sweep the laser over it. Export writes a PLY in millimetres, Z up with the object standing over the board, copies it to Download/EasyScanner and opens the share sheet.

ChArUco boards

Vector PDFs at true scale. All use DICT_5X5_100 (dictionary id 5 in the app) and marker ids from 0. Print at 100 %, never "Fit to page", check the 100 mm scale bar and glue the sheet flat onto something stiff. Other sizes: charuco/make_board.py.

PaperSquares (X × Y)SquareMarkerDownload
A44 × 645 mm33.3 mmPDF
A36 × 845 mm33.3 mmPDF
A28 × 1045 mm33.3 mmPDF
A19 × 1360 mm44.4 mmPDF
A010 × 1480 mm59.2 mmPDF

Get the code

RawMechatronicsOrg/EasyScanner

Hand-held laser line scanner from an Android phone: the app (Kotlin + a Rust core with OpenCV), printable parts, the assembly and ChArUco boards. v0.2.

Rust000Updated today

What is new is in the v0.2 release notes.

A kit of working pieces, not a finished product: adapt it to the phone, laser and profile you have. Code is Apache-2.0; hardware designs are CERN-OHL-S-2.0. The phone clamp is a remix of Tripod Mobile Phone Clamp V2 by Stamos and stays under CC BY-NC-SA 4.0, and so do the renders, part shots and 3D model on this page that show it.

Support us on Ko-fi

Project blog

Devlog

View all →