DIY Arduino 3D Laser Scanner

282,526

1,977

76

Introduction: DIY Arduino 3D Laser Scanner

FabScan is an open-source, do-it-yourself 3D laser scanner.It started out as a Bachelor's thesis by Francis Engelmann, supervised by René Bohne. You can find official project here.

I made my own box from MDF hood sheets and use different hardware parts.I decided to make this guide to show to you my work.

All credits for Arduino software and computer application goes to FabScan team, so thank you very much for this great open source 3D laser scanner!

Dev: Francis Engelmann Official page: hci.rwth-aachen.de/fabscan

Q & A at http://www.ardumotive.com/arduino-3d-scanner.html

Let's get started!

P.S. Please, if you like my project vote for me. Thanks!!!! :)))

Step 1: What You Will Need

Hardware of official FabScan project:

  • Arduino UNO
  • A4988 Stepper Motor Driver
  • FabScan-Shield - 3D Laser Scanner
  • 5mW Laser Module - Red Line
  • Bipolar Stepper motor - NEMA 17 (200 Steps)
  • 12V - 1A power supply
  • Web camera Logitech C270

To build the box you will need 4x sheets of MDF wood, size 600mm x 300mm - 5mm. You can find more info here.

Hardware that I have used:

  • Arduino UNO
  • Stepper motor - NEMA 17 (200 Steps)
  • L298N Motor Driver Module
    UPDATE: Use A4988 stepper driver
  • 5mW Laser Module - Red Line
  • 12V - 2A power supply
  • Web camera Logitech C270

I advised you to select the official FabScan hardware part list.

Step 2: Build the Box - Gallery of My 3D Scanner

I used a Dremel cutting tool and my imagination to build my own box. This it not an easy procedure because the camera, stepper and laser module must be on the correct position to successful scan an object. If you want to make your life easier you can also buy cutted parts for only 35 euros from here.

Step 3: Hardware Connections

The connections are pretty easy:

Attach the FabScan shield on Arduino and the A4988 stepper driver on the first stepper position of it. Connect the stepper on output pins and the laser module to analog pin A4. Finally connect Power supply and usb cable. You can also find a very usufull assembly tutorial here.

Custom hardware:

If you decided to make this with my hardware parts then you have to connect the L298 stepper motor driver to Arduino pins 10,11,9,8 (you can change those pins) and laser module to Arduino pin A4. Finally connect the power supply and usb cable.

Step 4: The Code

Here's the official FabScan code, embedded using Codebender!

Try downloading the codebender plugin and clicking on the "Run on Arduino" button to program your Arduino board with this sketch.

And that's it, you've programmed your Arduino board directly from your browser!

(https://codebender.cc/sketch:186175)

If you decided to make this with my hardware parts, click the Edit button and:

  • Add lines

    #include
    const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
    // for your motor
    Stepper myStepper(stepsPerRevolution, 10, 11,8,9);
  • Replace step() function with:

    void step() {
    myStepper.setSpeed(1);
    myStepper.step(1);

    }

Step 5: Software (computer Side)

We will use the "FabScan Ubuntu Live DVD" image that was created by Mario Lukas. You can download it from here, this image has preinstalled the FabScan software. You can write the image on a flash drive with Win32DiskImager (download link) and use it without installing linux os on your system.You can find more options for other operating systems here.

Important note! If you use the "Try Ubuntu" option make sure to save your files before shutdown the computer!

See the above images and follow the steps:

  • Select SerialPort
  • Select Camera
  • File - Control Panel
  • Click on detect laser (don't put any object in scanner yet) and select 'enable'
  • Click on "Fetch Frame" and make sure that the blue horizontal line touches the top of the turning table and the yellow horizontal line touches the bottom of the turning table. Also the yellow vertical line should pass through the center of the turntable. A non aligned camera will result in distorted scans!

After setup close control panel window, put an object inside scanner and press the start scan button.

Tip: You can change the configuration.xml file of FabScan by following this guide.

Saving 3D image:

When scanning procedure is completed you can save the scanned 3D object as an 3D pointcloud .pcd or .ply file. You can also save it as an 3D stl file but this doesn't work to all platforms. If you would like you can also open an older scanned object by selecting File - OpenPointCloud.

What next?

You can use MeshLab for processing scanned object and then print it with a 3D printer!

File processing with MeshLab:

1. Make sure that you saved object as an .ply file.

2. Open file with MeshLab

3. In MeshLab, compute the normals (Filters/Point Set/Compute normals for point sets)

4. Then reconstruct the surface using poisson reconstruction (Filters/Point Set/Surface Reconstruction: Poisson)

The end :D

Many many thanks to FabScan team!!!

Robotics Contest

Runner Up in the
Robotics Contest

Tech Contest

Runner Up in the
Tech Contest

1 Person Made This Project!

Recommendations

  • Game Design: Student Design Challenge

    Game Design: Student Design Challenge
  • Make It Bridge

    Make It Bridge
  • Big and Small Contest

    Big and Small Contest

76 Comments

0
michaelsway359
michaelsway359

Question 2 years ago on Introduction

Hello, I am very new to Arduino just learning in fact. How easy would this be able to scale up so I can scan a 5 foot x 1 foot piece? I want to scan the dashboard in my car and change it around to suit the rest of the upgrades I am doing in my car? any help would be appreciated greatly.

20190805_114231.jpg20190805_114302.jpg20190805_114328.jpg
0
rodrigob93
rodrigob93

Question 3 years ago

hola estoy tratando de hacerlo como vos lo hiciste pero al reemplazar parte del codigo de ma error en la compilacion podrisd enviarmeli.gracias

0
merajansari3908
merajansari3908

3 years ago

please add a detail video if it , thanks

0
ALI ALHASNE
ALI ALHASNE

4 years ago

When I find the shield

0
JonathanA186
JonathanA186

4 years ago

What would be the largest amount of area that this technique could map? Could it work for the size of a room?

0
vash399
vash399

Question 5 years ago on Step 1

Do you have an instruction for building a 2D distance scanner?

0
hackshaq1
hackshaq1

7 years ago

Can someone provide some better photos of how the wiring is done. There is only one photo of the wiring and it only show the Uno hooked up to the driver and it is hard to follow the wires as they wires in the photo go behind the Uno and blue and green are used twice. Can you post some clearer pictures of how the driver is connected to the Uno, how the motor is connected to the driver, and how the laser is connected? And/or could you also post a wiring diagram showing what pins are connected to what? This would be a great help.

0
Ardumotive_com
Ardumotive_com

Reply 7 years ago

Connect stepper motor cables with L298D module input pins 1,2 and 3,4.

Then connect L298D with Arduino pins 8,9,10,11 (or 10,11,8,9)

Laser + cable goes to Arduino A4 and the other to GND.

0
_alpaygokce
_alpaygokce

Reply 5 years ago

if I use Arduino Motor Driver Shield, black goes GND, red goes A4, it works? How the laser taking electricity? The codes provides us?

0
hackshaq1
hackshaq1

Reply 7 years ago

Thank you for this extra detail. However, I am still unclear. You say that the motor connects to pins 1-4 on the driver(l298d) but this does not tell which which wire from the motor goes to each of those pins on the driver. The same for the Arduino, you say to connect to pins 8-11 on the Arduino side but I do not know which pins on the driver to connect each wire to. For example, I pulg a wire into pin 8 on the Arduino, which pin on the driver on I plug this in to? A wiring diagram would help a lot. This is the first device I have built like this, I want to make use I don't destroy my hardware.

0
Ardumotive_com
Ardumotive_com

Reply 7 years ago

Hi! Take the stepper in your hand and begin with the first cable, from the left side. You must connect it with L298 pin OUT 1. The second with pin OUT 2 and e.t.c.. The L298 IN1 must be connected with Arduino pin 8, the IN2 with pin 9 and e.t.c.. In code now, use Stepper myStepper(stepsPerRevolution, 8,9,10,11); If you want to change the spinning side (counter clock side) change the pins to 10,11,8,9 .

0
jcsonza
jcsonza

5 years ago

Hi, may I ask why you replaced L298N Motor Driver Module with A4988 stepper driver?

0
GrantC4
GrantC4

5 years ago

what is the quality of the scans?

the project im thinking about doing required pretty good quality (no random bumps and lines)

0
drchuck
drchuck

7 years ago

Purchase your laser from AixiZ www.aixiz.com the line laser is $6.00. We can also do the line in more eye friendly 635 (orange red), green or blue.

line generic.jpg

Hi,

I'm a total newbie, so please bear with me if these questions seem weird

Interesting project. You say to buy an Arduino Uno, is the Product.Nr.: 20110406 on the FabScan website the same? If not, what is the product # you bought? Also you said to buy a A4988 Stepper Motor Driver but later down the list you say Bipolar Stepper motor - NEMA 17 (200 Steps), are they the same?

Again thank you,

Marco

0
GabrielC115
GabrielC115

6 years ago

hello, i do not have the fabscan shield what should i do? thanks

0
SercanK1
SercanK1

6 years ago

Hi I just want to build it with A4988 but i wont use fabscan shield. So which pins do i need tu use?

0
daddylockhart
daddylockhart

7 years ago

I'd like to see the quality of the scan. Could you please upload samples.