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.
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.
Step 1: Scanner Material
Below is the BOM (Bill of Materials) of the scanner. Some components are easy to find, others aren’t.
- 1 ZUM BT328 rev2 + Stepstick Drivers A49988 + ZUM SCAN Shield
- 1 USB wire 1.2m for charger
- 1 Power supply 12V-1.5A
- 1 HD Webcam C270
- 1 MOTOR [Nema 17]
- 2 Red Line Laser, 5V, 60º, class 1, with connector
- 10 M3x10 Screw
- 6 M3 Nut
- 28 M8 Nut
- 18 M8 Washer
- 1 Bearing 16014
- 3 meters threaded rod M8
- 3 M8x30 Screw
The rods are sold in 1 meter bars.
- 1 Non-slip disc 200mm diameter
- 1 Acrylic base 200x8mm
- 1 Calibration Pattern
- 6 Square non-slip feet Height-3.5mm Width - 12.7mm
- Allen key 2.5mm
- Jigsaw with metal blade
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.
*camera images from Logitech website
Step 2: Assembly
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.
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.
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.
Step 3: Calibration
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
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.
Step 4: Digitalization
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 .
Step 5: 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).
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.