Laser Scanner: Test
I’ve put together a short overview of a test I conducted on my prototype laser scanning setup. My goal is to be able to scan mechanical parts with a laser, to produce a digital cloud of reference points that I can then use to reproduce the parts in a solid modeling program. I have the capacity to measure parts accurately on my CNC mill, but each measurement takes about a second, and in order to scan an entire 12″x18″ part at .050″ grid, as I intended to do, it would take 24hrs or more.
I had fabricated a prototype laser scanning fixture, and wanted to get a sense of the accuracy and detail I could expect to achieve. The prototype was severely limited by both camera resolution, laser width, and poor calibration, but it did give me a sense of what I need to do to improve the setup, so I can go ahead with the design of a proper scanning fixture.
In order to test the mechanical precision of the laser scanner, I used a simple machined block that I had created a few month ago, which had a few interesting features to scan, and known dimensions that were easy to measure for verification. Although not obvious from the photograph, the top and bottom surfaces are not on the same plane

My prototype scanning fixture is designed to accomodate parts as large as 12″x12″x18″. The camera is calibrated to the full scale of the scanning fixture, and the accuracy of the scan is directly related to the maximum resolution of the camera used. For my test scan, I used a resolution of 320×240 pixels and a scanning width of 12″, so I could expect to achieve an accuracy of no greater than .038″. My particular block, at 2.5″x2.5″ was relatively small for the fixture, and I could have doubled the accuracy by recalibrating the camera and using a 6″ fixture.
Once the camera was set-up and calibrated, the part was scanned using a standard low grade red laser, which projected a straight line .050″ wide over the part and the fixture. The laser line was tracked by the computer and translated into 3D surface data by triangulating the projected laser lines. After a few test passes, I was able to put together a profile of the machined surface. The total scan time was less than 5 minutes.

The surface was cleaned up using the open source 3D surfacing software, which allowed me to delete some extraneous data points, and remove some extra surfaces that the laser picked up. While the surface may look ugly, it is a very useful guide and did define some key points, such as the edge of the block and holes, and the approximate location of the two surfaces (which are not on the same plane). The nature of the scanning makes it hard to locate the exact sharp edges of the part, so they appear as rounded edges or chamfers. I work with 3D data all day long, and have spent hours trying to measure contours and complicated surfaces on real parts for reproduction in 3D, and any guide surface, no matter how wobbly, is far more useful than measuring points by hand.

I pulled the surface into a 3D solid modeling program to act as a guide as I rebuilt the part in 3D. I first located the two holes by picking 3 points that approximated the edge of the circle that defined the hole. The part scale was off, so I located the holes, and then scaled the entire part to match the center to center dimension of the holes I had measured directly from the part. I then reproduced all of the machined features of the part using straight lines, planes, circles, and toleranced dimension.

The resulting part was based entirely on data created from the laser scan. I approximated the hole and surface locations using a best guess based on the geometry available. I then created a dimension drawing of all of the features as they were defined and used them to compare to the real dimensions taken directly from the part. The constructed dimensions are shown for each feature, and the real measured dimensions are shown below in parenthesis.

Considering how rough my camera resolution was, and how sloppy I was about calibration, the results are quite good. My error ranged from zero to 0.168″, but averaged to .047″, which is fairly close to the maximum expected accuracy of .037″ defined by the camera resolution at 320 pixels.
My camera is capable of scanning up to 1600 pixels, which could potentially achieve a resolution of .007″. The laser is going to be the limiting factor, and I believe a high quality focusing laser will still be .020″ wide. The software seems to be capable of locating the laser center regardless of the width, so I may be able to achieve .015″accuracy for parts up to 12″. Recalibrating the fixture for smaller parts could potentially scan to .008″ for parts under 6″ in size.
Update: I rescanned the top surface of the block, using the higher resolution settings of the camera, and using a much higher quality laser line with an adjustable focus, that allowed me to cast a laser line of .020″. The results are far superior. The surfaces register flat, and much more of the detail of the curves surface and holes is available. There is still some difficulty with the edges of the parts and holes, and undoubtedly some inaccuracy due to what is still poor fixturing (ie wobbly table, and sloppy calibration and scanning technique). The automated laser scanner apparatus is in the works…
