Autopilot
Import a scan. That's the whole job.
Turning a raw scan into a finished part usually means a string of separate tools, each one run and tuned by hand. Autopilot does the whole chain for you. Import a point cloud, or just save a scan from the scanner, and it comes out cleaned, merged, meshed, inspected and exported without you clicking a single button.
Doing it by hand
7+ steps- Open the scan
- Pick noise filters and tune them
- Crop out the table it sat on
- Line up each extra scan, pair by pair
- Merge, and hope the fit is right
- Choose mesh settings and build it
- Export, then inspect it somewhere else
With Autopilot
1 step- Import the scan
Then, on its own, Autopilot
- cleans it and removes the table
- merges extra scans, but only when they genuinely fit
- builds a mesh at true size
- inspects it against CAD if you've added a model, with a pass/fail report
- exports STL, PLY, OBJ or GLB
It isn't a blind macro. Filters scale to each scan's own point spacing, so the same settings work at any resolution. A scan is only merged if it adds new surface, lines up confidently and sits on the same surface as the others, and an ambiguous fit is flagged instead of guessed. Point it at a folder and every part saved there comes out finished on its own.
At a glance
What it does
It runs on an NVIDIA DGX Spark and works from any browser on the network. The app walks you through six steps: Scan, Clean, Align, Mesh, Measure and Export. Measuring covers a part's true size along its own axes, nine tools from calipers to flatness, thread identification (metric, UNC, UNF and BSP with ISO tolerance classes), a colour-coded comparison against CAD, and printable inspection reports.
One rule runs through all of it: no step may quietly move, stretch or thin out the data, and every step reports what it changed. That's what makes a number on an inspection report trustworthy.
The journey
From a closed scanner to an open workstation
-
September 2026
A great scanner with no Linux support
The scanner is a metrology-grade blue-laser unit, but its software runs only on Windows and macOS, and its maker publishes no developer kit. I wanted scanning, processing and inspection on an NVIDIA DGX Spark, an ARM64 Linux machine, usable from any browser on my network.
And the measurements had to be trustworthy. A scanning tool that quietly changes a part's size is worse than no tool at all.
-
Reverse engineering
Learning to speak the scanner's language
I recorded the USB traffic between the scanner and its own software and decoded it. The scanner turned out to be a small Linux computer in its own right: its cameras stream as standard USB video, and a separate command channel reads its factory calibration and switches the lasers, exposure and gain.
My native driver replays the start-up sequence, reads the calibration at every connect, streams at about 89 frames a second and turns camera images into 3D points across 12 worker processes.
What I foundThe scanner's own project files store every frame's points and position. That gave me frame-by-frame ground truth to check my driver against, instead of guessing.
-
Accuracy
From millimetres to micrometres
My first driver measured a flat board with 330 µm of error. Locating the centre of each laser stripe with a sub-pixel ridge detector brought that down to 31–40 µm.
Naive stereo matching was also pairing the wrong laser lines between the two cameras, which threw points off by 11–44 mm. Identifying each line from the scanner's factory calibration removed that whole class of error.
-
The workstation
Six steps, one obvious action each
Around the driver I built the full app: a FastAPI engine with long jobs in worker processes, and a React and three.js front end with a 3D viewer that pivots on the point under your cursor and snaps measurements to full-resolution data. Every edit makes a new model and keeps its lineage, so any result can be traced back to the scan it came from.
Then came Autopilot, which chains those same steps together so a scan goes in and a finished part comes out, with the same checks a careful person would make.
-
The assistant
An AI that can run the whole app
A local language model on the same machine can use about 28 of the app's tools. Ask it to “measure the head height” and it draws the dimension on the model. Ask it to “clean this scan and mesh it” and it does. It can highlight regions in plain language, drive the scanner and turntable, and use photos of the real part to pick the right alignment. It asks before anything that can't be undone, and nothing leaves the machine.
Choosing and tuning the model on the Spark took a request from 162 seconds to 10.6.
-
Proving the numbers
When the bolt measured a little off
A bolt came out “a little off”, so I built a test bench of synthetic parts with exactly known sizes to find out whether the scanner or my software was to blame. The software checked out: cleaning moved no point, merging was a pure rigid move, and the mesh followed the scan to within a few micrometres. The real causes were subtler:
- The size readout used the scanner's axes. A tilted bolt read 94.6 × 40.0 × 95.5 mm, but it's really 107.2 mm long. Sizes are now measured along the part itself.
- The bolt's 12-sided head let two scans line up one flat off, which shifted the length by 0.26 mm. Merges now detect that kind of symmetry and flag it.
- The scanner's own scan-to-scan consistency is a few hundredths of a millimetre, so new accuracy tools separate scanner error from software error.
About 300 automated tests now generate parts of known geometry, add noise, debris and a table, and check that cleaning leaves under 0.1% stray points, merging recovers the pose within 0.2°, and meshes stay within 0.15 mm.
What I foundSeparate the instrument's error from the software's before fixing anything. Here neither the scanner nor the geometry code was wrong: the bugs were in how size was reported and how an ambiguous merge was accepted.
What's next
Where it's going
Still in progress
I'm still working on this project
CloudClean is under active development. Here's what I'm working on next.
- Test marker-based tracking with real stickers. It's accurate to under 0.15 mm on synthetic data so far.
- Track down a ~0.16 mm disagreement between the scanner's two laser-line families.
- Run a final side-by-side check against the manufacturer's own scan of the same part.
- Validate the Bluetooth turntable control, with rotate-and-tilt programs synced to capture, on real hardware.
Expect further improvements and changes to this project as it develops.