3D Scanner


One technology that came up with 3D printers was 3D scanning. There are several equipment that allow you to do this, some more accessible, some less. Some time ago, BQ launched a model called Ciclops.

BQ Ciclop Home Made
BQ Ciclop

It’s a relatively affordable 3D scanner just like others on the market. However it has a unique particularity. BQ, in addition to launching the scanner for sale as a kit, also made available the software, the specifications of each component and the design of the parts for printing. That is, we can buy the complete kit from BQ or we can buy and print the various components and build the scanner.

One of the features of the scanner is to use a Logitech camera to capture, such as the Logitech C270. Since it is a common webcam, it can be replaced by another. In my case I will use a Logitech C250 that was stopped at home. It has the same specifications being the only difference the physical format.

BQ Ciclop Home Made
Logitech C250*
BQ Ciclop Home Made
Logitech C270*

Scanner Material

Below is the BOM (Bill of Materials) of the scanner. Some components are easy to find, others aren’t.


Description Quantity Price in € Supplier  Obs.
 ZUM BT328 rev2 + Stepstick Drivers A49988 + ZUM SCAN Shield  1  26.04  Aliexpress
 USB wire 1.2m for charger  1  Not purchased
 Power supply 12V-1.5A  1  Not purchased
 HD Webcam C270  1  Not purchased
 MOTOR [Nema 17]  1  16.50  Banggood
 Red Line Laser, 5V, 60º, class 1, with connector  2  3.66  Aliexpress


 Description  Quantity Price in € Supplier  Obs.
 M3x10 Screw  10  1.99  Aki  1 package
 M3 Nut  6  Aki Come with the screws
 M8 Nut  28  7.56  Aki  2 packages
 M8 Washer  18 3.78  Aki  2 packages
 Bearing 16014  1 10.20  Aliexpress
 Threaded shaft M8  3  3.15  Aki  3 meters
 M8x30 Screw  3  Aki


Description Quantity  Obs.
 Non-slip disc 200mm diameter  1  Not purchased
 Acrylic base 200x8mm  1  Not purchased
 Calibration Pattern  1  Printing Cost
 Square non-slip feet Height-3.5mm Width – 12.7mm  6  Not purchased


  • Allen key 2.5mm
  • Jigsaw with metal blade

Printed parts

The printed parts were downloaded from here and printed on the Prusa I3.


In relation to the threaded shafts, they were bought in AKI and cut to size. They sell in segments of 1 meter.

The ZUM BT328 rev2, the ZUM Scan Shield and the Stepstick are only sold in a pack along with the hardware and the camera on BQ. As I was not interested in buying the complete kit, since I already had parts, I purchased an Aliexpress kit consisting of an Arduino Uno, a Stepstick and a Zum Scan clone for € 26. The difference in operation is in the Bluetooth module. The ZUM BT382 has built-in Bluetooth while the Arduino doesn’t.

The acrylic base was replaced by an MDF disc of 8mm with 200mm diameter.

The calibration standard was printed and glued on a 3mm acrylic panel. You can download the pattern and design from the acrylic panel here.

The Logitech C270 camera was replaced with a Logitech C250 that i already had.


For the cutting of the shafts with the requested measure was used a jigsaw with a metal blade. An angle grinder with a metal cutting disk may also be used but in this case care must be taken with the incandescent filings.

[slideshow_deploy id=’641′]

After the shafts have the right measurements, we begin the assembly of the scanner. BQ offers tutorials of each step. They can be downloaded here.

As the manuals are well documented I will only indicate small changes made.

The brackets that are made available for the lasers are adapted to the lasers that the BQ uses. As the acquired lasers have larger diameter, it was necessary to redesign the supports to accommodate them. This new support can be downloaded to my Thingiverse account (find the link in the top menu).

Some assembly steps

Platform and motor assembly

BQ Ciclop Home Made
Motor and platform

Shaft assembly

BQ Ciclop Home Made
Main shafts
BQ Ciclop Home Made
Arm shafts

Electronics assembly

BQ Ciclop Home Made
BQ Ciclop Home Made

After the scanner is assembled  it’s necessary to download the firmware and load it to the Arduino.

This can be downloaded to GitHub from BQLabs (link). In my case, even using another camera model didn’t change any parameters. To load the firmware for the Arduino we use the Arduino IDE. Open the file horus-fw.ino choose the board in the “Tools-> Board” menu and load the Upload button (the button with an arrow to the right.

After this process we download the scanning software (Horus) and configure it. This can be downloaded from BQ transfer area. There are versions for Windows, Linux and OS X (Mac).

BQ once again provided a manual with the various options and steps to be performed in the software. As the manual is detailed, I will only indicate topics and notes to the process.


The first step is to calibrate the scanner. For this we can initially use the “Wizard Mode” and then “Advanced Calibration”.

In “Wizard Mode”, the software will only perform some basic tests, such as verifying that the calibration pattern is detected, checking the lasers (the line they form must be vertical and sharp).

NOTE: One factor that greatly influences calibration and scanning is light. It is recommended that the scanner be in a well-lit location but not receive light directly.

In “Advanced Calibration” Horus allows you to perform several steps such as adjusting the light conditions of the camera, checking the alignment of the lasers, checking the detection of the pattern.

In this mode you must calibrate the scanner in the following order:

1 – Intrinsic values

This option calibrates the pattern in several positions. It takes ten catches to calibrate. These captures should be done with the pattern in several positions but taking care that the bars of the image are green. If they are red, the scanner has not detected the pattern.

2 – Triangulation of lasers

This is one of the most important calibration processes and one of the most complex steps. It determines the distance, position and inclination of the lasers towards the camera. After the process Horus presents the values he has captured. These values must be 0.1 or less. If they are larger, they compromise the scan. This process is strongly influenced by the focus of the lasers and, mainly, by the luminosity. It is highly recommended a bright environment but no direct light. In my case, I have only achieved an acceptable calibration by placing the scanner in a controlled environment (inside a photo light box with uniform diffused illumination at the top and adjusting the following parameters in the camera settings:

  • Bright: 150
  • Contrast: 38
  • Saturation: 39
  • Exposition: 65
BQ Ciclop Home Made
Ciclop in Soft box

These values were achieved through attempts. After posting questions on the Ciclop BQ discussion group on Google (insert link), they indicated values used with the Logitech C270. Based on these values I have been adjusting to get the ideas for myself.

These values, while ideal for me, may not be for other cases. It all depends on the lighting used.

Values for the Logitech C270:

  • Bright: 185
  • Contrast: 37
  • Saturation: 39
  • Exposition: 48

These values are indicated for use under ambient light or with fluorescent lamps with a temperature around 6500K.

3 – Extrinsic parameters

This calibration step will detect the position and rotation of the disc relative to the camera. This is another very important step in calibration.


After this calibration steps we can proceed to the scanning. For this we choose in the upper right corner of the Horus “Scan Area”.

Here we can choose whether we want a scan only of the shape of the object or also of the texture, how many lasers we want to use, the parameters of the rotation of the platform, the parameters of image acquisition (they should be the same ones used in the calibration) and define the cloud of points .

Point Cloud

To create the cloud of points, we specify the diameter and height of the object to be scanned in order to minimize the capture of unwanted objects (noise).

Final Result

After scanning, the object must be treated in a 3D rendering program. BQ provides a simple tutorial of this process on MeshLab and CloudCompare on their page. In addition to these two you can use any one that imports .ply files.

*images fromLogitech website