We are pleased to present Ciclop, the first DIY 3D scanner from BQ, together with the 3D scanning software Horus.

As with the other BQ DIY products, Ciclop and Horus are open source, which is why they belong to the Technological Heritage of Humanity. All the information on the mechanical design, the electronics, the software, algorithms, mathematics and experiments made will be available to the community.

This enables anybody to study and understand the functioning of the scanner, as well as making modifications, improvements and developing new versions. We want to contribute and drive forwarde the development of these devices.


The scanner is based on major projects from our Technological Heritage which have been developed in the community, such as: GNU/Linux1, Python2, Reprap3 and Arduino4, among others. They have all our admiration, recognition and gratitude, as they have been fundamental in accomplishing this project.


State of the art

Several alternatives exist for capturing the three-dimensional geometry of an object, such as laser triangulation, structured light and stereo vision. Comparatively, the first method offers greater precision and a higher resolution, but it also has limitations in terms of the kind of materials that can be scanned. Laser triangulation is based on capturing the projection of a laser beam over an object using a camera.

There are already scanners on the market with prices ranging from €500 to over €20,000 which are not open source, so the user is not able to study or modify the software.

FabScan5 and MakerScanner6 feature among these open source scanners, but they are not available for purchase as kits and the materials must therefore be purchased separately.


Ciclop is an open source 3D scanner kit. Being open source enables the user to study and modify it, whereas being sold as a kit permits the user to buy all the components together and at a fair price.


 The structure of Ciclop is made up of 3D-printed pieces, M8 threaded rods, M8 screws, M3 screws, nuts and washers. It has a 20 cm diameter methacrylate platform on which the piece is placed for scanning. It is covered with a anti-slip surface to prevent objects from moving during the scanning process.

The platform is supported by a 110 mm diameter ball bearing. The movement is created using a Nema 17 stepper motor.


The sensor consists of a Logitech C270 HD webcam in the centre, two class 17 line laser modules located on the sides and a ZUM BT-3288 board, which is located in the interior of the body.


ZUM BT-328

The ZUM BT-328 is an Arduino-based board that executes the control firmware of the motor and both lasers. It communicates with the PC via a micro-USB cable or Bluetooth. The ZUM SCAN is connected at the top, a shield derived from the Arduino CNC Shield9. This shield has 2 stepper drivers and connection pins for 4 lasers and 2 light dependent resistors (LDRs).





The firmware has been developed using GRBL10 as a base and using other projects such as Marlin11 (the firmware used in open source 3D printers). It enables the lasers to be switched on and off, as well as the position, speed and acceleration of the stepper motor to be controlled using Gcode commands.


The main program is a cross-platform desktop application developed in Python2. It uses wxPython12, NumPy13, SciPy14, Matplotlib15, OpenGL16, and an optimised version of OpenCV17 for Linux.

This application is the core of the scanning process. It manages the communications, the capture and syncing of the data, the image processing and the generation and visualisation of the point cloud.

It has been developed and optimised for GNU/Linux (Ubuntu18).  However, it has been tested for Windows and it will also be supported for Mac. Horus consists of three workbenches which can be selected by the user.


In this section each component of the scanner can be freely controlled: the camera settings, the lasers, the motors, etc… It has been designed so that makers and developers can carry out tests and experiments on eac h component of the device separately.


The calibration workbench contains the tools needed for calibrating the device, from adjustment of the camera settings to the laser triangulation and detection of the rotating platform.

The system has been designed to calculate the internal scanning parameters automatically, using the structure assembled by the user. This is very important, because on being a DIY kit, no two scanners will ever be assembled identically. It is impossible to determine a priori what dimensions and directions the user will create on assembling it. Furthermore, the user can create a scanner with different dimensions and positions of the lasers and the camera. Horus will auto-calibrate correctly to achieve the perfect scanning.


Horus: phases of the calibration


This section allows to select the type of scanning: with/without texture, one/two lasers, steps per turn, etc. It also provides a 3D environment for visualising the point clouds in real time  and a video window which displays the different parts of the image processing.


The scanning times depend on the algorithm used and the acceleration and step of the motor. For 800 steps per turn (0.45º per step), the times vary from 2′ the fastest to 6′ the slowest (using both lasers) on Linux.

The result of this process is a PLY19 file. Here are some more examples:



Horus also includes a wizard that simplifies the calibration and scanning processes, using a step-by-step guide.


There are various open source programs, such as Blender20 or MeshLab21, which allow a point cloud (PLY) to be converted into a mesh (an STL22 file). STL is a file format for 3D meshes composed of triangles. An STL file can be printed in 3D using programs such as Cura23.


Meshing with MeshLab: computing the normals

Once the STL has been created, the model can be visualised in Horus.


Future work

In this project we want to keep on evolving and improving. One of our main areas of work will be incorporating post-processing 3D mechanisms and meshing into Horus..

The opinion of the community is of great interest to us, which is why we are open to suggestions and improvements via our Group or GitHub.

We encourage you to get involved with this project!


In the coming weeks, we will be publishing all the developments, documents and manuals relating to this project in detail under Creative Commons and GPL v2 licence.

Are you ready?


  1. GNU/Linux operating system
  2. Python programming language
  3. RepRap community
  4. Arduino community
  5. FabScan project
  6. MakerScanner project
  7. IEC60825-1:2014 Class 1 Security certification
  8. ZUM BT-328 controller board
  9. Arduino CNC Shield power shield
  10. GRBL CNC control software
  11. Marlin firmware
  12. wxPython graphic library
  13. NumPy matrix calculus library
  14. SciPy scientific calculus library
  15. Matplotlib graph-plotting generation library
  16. OpenGL 3D graphics library
  17. OpenCV artificial vision library
  18. UbuntuUbuntu GNOME,  Kubuntu operating system
  19. PLY mesh format
  20. Blender 3D editor
  21. MeshLab advanced mesh processor
  22. STL mesh format
  23. Cura 3D printing software

59 thoughts

  1. Pingback: Ciclop, un scanner 3D open-source présenté au CES de Las Vegas - 3Dnatives

  2. Nous avons hâte de tester ce produit en avant première.
    S’il est du même niveau que l’Hephestos , ce sera une nouvelle réussite pour BQ et ses partenaires

    Premium Computer Services
    95 France

  3. Superbe projet. Après avoir étudié les infos disponible, une question me vient à l’esprit. Peut on remplacer une ZUM BT 328 par un simple arduino UNO? Car à priori aucune spécificité de la ZUM BT 328 est utilisée. En tout cas, très bon projet

  4. Pingback: Most Exciting Products and Open Source Highlights at CES 2015 | Open Electronics

  5. Will there be kits be for sale? I would be especially interested in a kit that includes all the electronics and the non-printable parts like the turn table and the anti-slip mat for it.

  6. Pingback: 全新发布完全开源的3D扫描仪及3D扫描软件 | 3D小蚂蚁工作室

  7. I’m also interested in buying a kit (or kits) for our makerspace (and for me). Please plst information on how to buy a kit (cost & location).

    Charlie Lindahl
    Houston, TX

  8. I’m looking into scanners that are suited for small sized very detailed objects like miniature figurines, flowers, insects and jewellery. Would it be possible to adapt this design for that? For instance by bringing the camera and lasers a lot closer to the platform?

    1. Yes of course, you can modify the geometry of the scanner making it smaller. Horus calibration system will do the rest 😉

      Also it would be possible to use another camera with more resolution, or different line laser modules.


      1. I have found lasers ranging from 3 to 6 volts, what are the design limitations of the driver board?

        1. Never mind, I’ve finally found the schematic…

  9. Pingback: BQ Launches New Ciclop Open Source DIY 3D Scanner And Horus 3D Scanning Software | FILACART BLOG | 3D Printing MegaStore

  10. Felicitaciones Jesús!
    estoy interesado en experimentar. Donde podría comprar esta placa?

  11. Is it possible to use other types of webcams like the Logitech C920 or C615?

    1. Yes, Horus works with those cameras.


  12. Hi Jesús,

    thanks for the replies. I’m putting this on the list as next project (after getting my 3D printer to work).

    Best regards,

    1. Hi Jesus

      When I open the web:””. It seems need to write some characters under ” Please type the characters below:”,but I can’t see any characters under .So I can’t finish my contant to you.
      Is there some other way I can get the Ciclop DIY kit?My Email is

      Best regards

      1. Hi Johnny,

        We will put in contact with you.


  13. Pingback: Scanner 3D low-cost: 7 soluzioni per acquisire modelli 3D

  14. Can I make it only with Arduino CNC Shield?
    It’s hard to find somewhere that makes ZUM scan and ZUM BT-328!!

      1. Since the linked inside the issue 5 is failed, I still don’t know what I should change in my software and hardware.

  15. Hello,

    one more question. I want to use a smaller disk of about 60-80mm. Do I need to scale down the calibration squares sheet to half it’s size? Or use the calibration sheet as it is?

    Best regards,

    1. You can use whatever chessboard calibration pattern you want. Only you need to use odd number of columns and an even number of rows. You can configure those parameters, square distance in mm included, in “Advanced Calibration” section in Horus. You need to ensure that camera detects the pattern and all will be fine :)

  16. What precision/resolution do you espect on the point cloud?

    Thank you.


    1. Hi,
      Reachable resolution is about 0.2 mm because a subpixel interpolation algorithm is used. Also you can use another camera with higher resolution to improve even more the point cloud density.

  17. Pingback: Modular 3D Scanner | AdaptedDesigns

  18. Pingback: Erster 3D-Scanner mit freier Soft- und Hardware | sysbus

  19. Hi Jesus, nice job. I started to build a scanner with a different webcam and the image is rotated 90° . I could not find the way to rotate it back to a normal view unless physically move it but then it dosen’t fit the support I have. Can i do it with Horus ?
    Thanks and regards.

  20. We just finished mounting the ciclop kit. We use linuxmint17 and it is always saying we choose the wrong camera, whatever camera is choosen, on several different computers (some with no webcam so there is only the logitech). The webcam though is recognized by the system (we can use it with other softwares) and listed in horus. Help needed please

  21. Bonjour.
    Je recherche un scanner capable de numériser des cartes électroniques (un peu comme la ZUM, mais en plus grand). J’ai essayé quelques scanners 3D, sans trop de résultat. Ciclop est il capable de faire cela ? Y a t il déjà eu des essais de réalisés ? Merci d’avance.

  22. Hi
    I keep receiving “Laser calibration failed” message during the wizard. What is wrong? However, I managed to have not bad scans so far!!

    1. Hi ALi,

      In order to help you, could you send us the name of the Operating System and a screenshot of the log?

      Thanks for your patience.

  23. Hello, i also keeps gettng laser calibration failed, because the lasers dont work while calibrating, they work fine while scanning however, but nothing gets scanned. I have windows 10

    1. I have exactly the same problem…the laser it s not turn on while calibrating

      1. Hi, Dean and stratos.

        Have you checked that you have all the Pattern settings correctly configured, as well as the Laser triangulation and the rest of the other calibrations?

  24. Hello Jesus !

    I use your 3D Scanner and i’ve a question for u, why there are 2 lasers for the triangulation  ? One lasers can work alone right  ?

  25. Pingback: 3D Scanning – BQ Ciclop kit ordered | Nanohawk

  26. The camera and lasers seem to be working fine, but I haven’t been able to get the motor to move. Any ideas?

    1. Hi David,

      Can you show us a photo of how you have the stepper connected to the electronic board?

  27. I am having trouble calibrating my scanner. no matter what i do it will not calibrate. any help would be appreciated

  28. Hi there, I’m trying to make the ciclop work. I having problem. I get this error messages during the process
    Auto Check — Check motor position and pattern position and try again.
    Calibration — Laser calibration failed. Please try again.

    I am using ardruino uno and ZUM Scan.
    I will be very thankful for your help and comments.

    Thank you in advanced

  29. is it possible to alter ciclop to scan larger objects?

    e.g an object 150mm diameter x 400mm high

Comments are closed.