Jump to content

I Built My Own 3D Laser Scanner


Anasazi37

Recommended Posts

I've been working on this project on and off since last November, but it's finally nearing completion! My original goal was to purchase a scanner so I could create a digital archive of ultra-rare 1/55 resin cast parts (e.g., heads, heatshields, nosecones, armor...) before I used them on customs, but the affordable ones (less than $1000) sucked and the less affordable ones didn't give me the amount of control and accuracy I expected for the high price tag, so I decided to build my own from the ground up. I designed the system, sourced all of the components, fabricated what I needed to, and wrote all of the software from scratch. All told, this cost less than the affordable systems and is far more capable than the less affordable ones.

This weekend I started collecting and processing data in order to get the system dialed in and I wanted to share my first "test shot," which contains a very familiar 1/55 object. What you see below (click on the images to embiggen) represents only a fraction of the system's accuracy, as I don't want to dial it up to 11 until I know everything is working correctly. And it's only one scan. Normally you combine multiple scans before producing a 3D model. This is the raw data, comprised of millions of 3D points, which is fun to look at because you can see exactly what the system was able to scan. The "shadowed" areas weren't visible to the sensor because the part was lying flat on the turntable. Hence why you do multiple scans with the object in different orientations to build up a composite. Even in this reduced resolution test scanning mode, the system is capturing a remarkable amount of detail. Stay tuned for updates. Getting the system dialed in could take me a few more weeks....

image.png.4e7b1ea130a5e63f9e7b1d2962d4ba13.png

image.png.955ccd9e267a002d3a6159f444745757.png

image.png.053a687ae0d75e9da7303769667a2bad.png

image.png.4ed2cd15e675508a613f653276300522.png

Edited by Anasazi37
Link to comment
Share on other sites

12 hours ago, Bolt said:

Wow..! Simply wow @Anasazi37 this is genius!!

Thanks, Bolt! :hi: This has been a massive labor of love. It's nice to be close to finishing the project so I can start doing some actual scanning of Macross stuff.

6 hours ago, Sanity is Optional said:

Very impressive, are you going to try and add in a smoothing function to the generated mesh? Or handle that in a CAD program separately?

That's one of the things I'm working on now, in addition to refining the calibration process. Plan is to do some initial cleaning of each scan to get rid of the inevitable noise, do scan-to-scan registration to build the final composite point cloud, generate an initial mesh to define the general surface characteristics, then clean that up. I definitely don't want to get too aggressive with the smoothing, though, since that might wipe out all of the fine detail I'm trying to capture. It's a balancing act, but one that I hope is helped by how I designed the system (there's very little noise to begin with). I'm also, out of principle, doing everything using open source software libraries or, at the very least, off-the-shelf open source applications that specialize in working with this kind of data. One my biggest gripes with the commercially-available systems, even the expensive ones, is how "closed" they all are. You either can't get to the raw scan data, can't adjust how the system collects and processes the raw data, or both. There's a "push this button and wait for results" mindset, which I'm sure is driven in large part by consumers who just want a pretty 3D model and don't care how that happens, but that's not me. Ultimately, the end user should be able to put the individual scans and composite cloud into a CAD program and do what they want with it, but to meet my own needs, I'll definitely be doing some sophisticated surface reconstruction. :D

Link to comment
Share on other sites

Well, if all else fails you can try to de-noise by just running multiple scans and averaging the results.

The 0.2um resolution x-ray microscope I built for my previous company averaged 10 images per viewing angle to get better SNR.

Honestly your mesh already looks great.

What did you use for an initial sample to set up the alignment?

Link to comment
Share on other sites

5 hours ago, Sanity is Optional said:

Well, if all else fails you can try to de-noise by just running multiple scans and averaging the results.

The 0.2um resolution x-ray microscope I built for my previous company averaged 10 images per viewing angle to get better SNR.

Honestly your mesh already looks great.

What did you use for an initial sample to set up the alignment?

Yep, increasing the dwell time will definitely drive up the SNR. Lots of options to explore!

Yeah, I was floored by how good the initial data looked. I was expecting more noise, but I really tried to eliminate as many sources as I could and it seems to have paid off.

The system, which has both passive and active sensing components, self-calibrates using a target pattern of unique black and white shapes that are laid out on a flat panel in a very specific way. Allows me to know the exact 3D orientation of the target panel with respect to the system at all times, as it moves around during the calibration process, and since I know the exact spatial characteristics of the pattern, I can back out necessary corrections to allow for fast and accurate determination of 3D coordinates based on scanner "hits." And since the system self-calibrates, I can reposition everything for different kinds of scans. The current setup has the sensor package pulled way back, for larger objects. I can move it in pretty close. Imagine a scan of a 1/55 head comprised of millions of points. I'm eager to try that. I think the biggest limiting factor to resolution will be how well I know the performance of the active sensing portion of the system. Right now that's kinda iffy, but the results so far are encouraging.

Link to comment
Share on other sites

21 hours ago, Sanity is Optional said:

Sounds really cool, definitely interested to see what you can do with it.

Also let me know if you want to open-source it, or set up a kickstarter 😅 I've been looking for a decent 3D scanner that isn't business pricing.

 

The process of getting the system dialed in looks like it will take several weeks, if I'm being realistic. There's some weird stuff happening during calibration that I don't fully understand yet. Need to run a lot of diagnostics. I'll try to post some more test scans of Macross items soon, even if they are just initial versions. I'm thinking of scanning a Chris Barretta 1/55 VF-1S custom resin head next, just to see what this system can do.

I'd love to make the design and software open source, and maybe get some community backing to make kits that people can assemble on their own, but first I need to sort some stuff out with the intellectual property lawyers at work. This Covid hobby project is *just* close enough to what I do for a living that I'll have to talk to them. That is going to be so much fun.

Link to comment
Share on other sites

7 hours ago, Anasazi37 said:

The process of getting the system dialed in looks like it will take several weeks, if I'm being realistic. There's some weird stuff happening during calibration that I don't fully understand yet. Need to run a lot of diagnostics. I'll try to post some more test scans of Macross items soon, even if they are just initial versions. I'm thinking of scanning a Chris Barretta 1/55 VF-1S custom resin head next, just to see what this system can do.

I'd love to make the design and software open source, and maybe get some community backing to make kits that people can assemble on their own, but first I need to sort some stuff out with the intellectual property lawyers at work. This Covid hobby project is *just* close enough to what I do for a living that I'll have to talk to them. That is going to be so much fun.

Lawyers are always fun!:lol:

Link to comment
Share on other sites

Still fighting with the calibration process, but here's a quick single scan of a Chris Barretta 1/55 VF-1S head. I'm not zoomed in at all, so should hopefully be able to quadruple the resolution when the system is ready. I'll definitely have to combine multiple scans from different angles to create a good surface model.

image.png.de2862051ebf592caccc3e6ff35e623b.png

image.png.ccae45666392f86cf8f0ce8deca60bef.png

Link to comment
Share on other sites

4 hours ago, Sanity is Optional said:

Dang, that's a nice mesh there.

...Which means you're going to have so much fun removing tiny pits and scratches 🤪

I've never had to do that in a CAD program. How is it done?

Link to comment
Share on other sites

8 hours ago, Sanity is Optional said:

Dang, that's a nice mesh there.

...Which means you're going to have so much fun removing tiny pits and scratches 🤪

 

3 hours ago, sqidd said:

I've never had to do that in a CAD program. How is it done?

Automation to the rescue for most of that, thank goodness. Since the scanner's raw output is a point cloud, I can run it through some pretty sophisticated open source software that builds a mesh, looks at the results to see how "smooth" things are in a local region around each point (which become the vertices of the mesh), and makes adjustments. It's not perfect, though, and you risk losing fine detail if you let the software be aggressive about making adjustments. So yeah, there will be some hand-tuning of meshes in traditional CAD software as well. I think most of those programs have "mesh cleanup" options, too. I know you can draw a polygon around a section and ask it to simplify the geometry, which usually means "make this smoother."

Even in the current test/calibration setup, the scanner is picking up the very subtle resin casting seam line on the top of the VF-1S head and the little panel line circle right at the front, just above the visor.

image.png.6c7da6da0bf5bc3fa48c9eb7e55f5f0b.png

Edited by Anasazi37
Link to comment
Share on other sites

4 hours ago, Anasazi37 said:

 

Automation to the rescue for most of that, thank goodness. Since the scanner's raw output is a point cloud, I can run it through some pretty sophisticated open source software that builds a mesh, looks at the results to see how "smooth" things are in a local region around each point (which become the vertices of the mesh), and makes adjustments. It's not perfect, though, and you risk losing fine detail if you let the software be aggressive about making adjustments. So yeah, there will be some hand-tuning of meshes in traditional CAD software as well. I think most of those programs have "mesh cleanup" options, too. I know you can draw a polygon around a section and ask it to simplify the geometry, which usually means "make this smoother."

Even in the current test/calibration setup, the scanner is picking up the very subtle resin casting seam line on the top of the VF-1S head and the little panel line circle right at the front, just above the visor.

image.png.6c7da6da0bf5bc3fa48c9eb7e55f5f0b.png

Oh good! I was hoping that there would be some sort of smoothing. I could see that being an accuracy issue if you were looking to do an exact reproduction. But I don't think that's the goal is it? I'm thinking it's not for the SSP's. The plan was to "update" them anyway?

Link to comment
Share on other sites

7 hours ago, sqidd said:

Oh good! I was hoping that there would be some sort of smoothing. I could see that being an accuracy issue if you were looking to do an exact reproduction. But I don't think that's the goal is it? I'm thinking it's not for the SSP's. The plan was to "update" them anyway?

For my collection of rare resin-cast parts, I'm going for reproduction-grade scans, but for other projects, it can be more about getting the basic shape of the object and then doing customization on top of that.

I *think* calibration is starting to improve. These are front and back scans of a 1/55 chestplate, where each one is actually two scans combined. The third image shows how for the front scan, one of the two contributing scans had a gap in coverage that was filled in by the other. I'll still do some automated alignment to get them even closer, but it's starting to look better.

image.png.a40574d819c93f6fa2ad90867de16d3a.png

image.png.a1a66a72441761923deddc980a528861.png

image.png.acf6dca47f7d04c46931587e8fa51e37.png

 

 

Link to comment
Share on other sites

That's awesome Anasazi! I saw how people are using facial recognition scanners on cellphones to do similar, but I'm sure yours is so much better. Can you share photos of your equipment? Or is that still pending legal review? - MT

Link to comment
Share on other sites

On 7/23/2021 at 2:08 PM, MechTech said:

That's awesome Anasazi! I saw how people are using facial recognition scanners on cellphones to do similar, but I'm sure yours is so much better. Can you share photos of your equipment? Or is that still pending legal review? - MT

Still under wraps for now. Might be that way for a bit....

1 hour ago, pengbuzz said:

*waits quietly for 3d printed cheeseburger from scan*

:rofl:

Link to comment
Share on other sites

  • 2 weeks later...

Quick update: I am still stuck in calibration hell. It's the difference between having a "hobby" scanner, where you can show friends and family that you built something that scans stuff in 3D, and a "metric" scanner, where you can produce consistent results with high accuracy. For hobby scanners, you can calibrate each piece of the system independently, which is relatively straightforward. For metric scanners, you have to use an approach called bundle adjustment, where you calibrate all of the pieces simultaneously because they are, in reality, heavily dependent on one another. That's very difficult to do well. I've known from the beginning of this project that I'd need to do bundle adjustment, but I wasn't looking forward to it. There are several aspects of the scanner that make its adjustment more difficult than those I've tackled for other sensors. I'll get there, but it's going to take a bit more time. Lots of math to do and code to write.

Link to comment
Share on other sites

  • 3 weeks later...
On 8/4/2021 at 7:15 AM, Anasazi37 said:

Quick update: I am still stuck in calibration hell. It's the difference between having a "hobby" scanner, where you can show friends and family that you built something that scans stuff in 3D, and a "metric" scanner, where you can produce consistent results with high accuracy. For hobby scanners, you can calibrate each piece of the system independently, which is relatively straightforward. For metric scanners, you have to use an approach called bundle adjustment, where you calibrate all of the pieces simultaneously because they are, in reality, heavily dependent on one another. That's very difficult to do well. I've known from the beginning of this project that I'd need to do bundle adjustment, but I wasn't looking forward to it. There are several aspects of the scanner that make its adjustment more difficult than those I've tackled for other sensors. I'll get there, but it's going to take a bit more time. Lots of math to do and code to write.

I feel like a monkey when I'm reading your posts.:D

Link to comment
Share on other sites

On 8/23/2021 at 10:43 PM, sqidd said:

I feel like a monkey when I'm reading your posts.:D

Lately the scanner is making me feel like a monkey, too. I've been locked in mortal combat with bundle adjustment piece for weeks. Mainly because work has kept me so busy that I haven't had a lot of time to work on it. Will hopefully make some real progress tomorrow.

On 8/24/2021 at 8:01 PM, coronadlux said:

Very cool. I actually bought an Einscan SE scanner. These things are awesome

Those are very nice scanners. I considered getting one, after less expensive desktop models didn't work as well as I wanted them to, but then decided I wanted to be able to scan both small and large items with maximum flexibility. To get something like that from Einscan would cost $$$$, so I went the DIY route. It's been an enjoyable project, minus the occasional technical issue that I have to resolve.

Link to comment
Share on other sites

On 8/28/2021 at 3:37 PM, Anasazi37 said:

Those are very nice scanners. I considered getting one, after less expensive desktop models didn't work as well as I wanted them to, but then decided I wanted to be able to scan both small and large items with maximum flexibility. To get something like that from Einscan would cost $$$$, so I went the DIY route. It's been an enjoyable project, minus the occasional technical issue that I have to resolve.

I was fortunate enough to be able to get a tax break for it since I got it for work.

Link to comment
Share on other sites

  • 1 month later...

Really interested in what you are doing here both with the rare parts and the scanner.    Most of the retail ones I have seen and tested were  either rubbish or so good they had a price tag to match.  Anything open source and home brewed gets my vote.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...