Apresentamos Ciclop, o primeiro scanner 3D DIY da bq, e Horus, um software de scaneamento 3D.
Tal como todos os outros produtos DIY, o Ciclop e o Horus possuem uma licença livre, porque pertencem ao Património Tecnológico da Humanidade. Toda a informação sobre o desenho mecânico, a electrónica, o software, os algoritmos, as matemáticas e as experiências realizadas, estarão disponíveis livremente para a comunidade.
Isto permite não só estudar e entender o funcionamento do scanner, mas também realizar modificações, melhorias e evoluções a partir dele próprio. Queremos com isto contribuir e impulsionar o desenvolvimento destes dispositivos.
O scanner é baseado em diversos outros grandes projectos do nosso Património Tecnológico, desenvolvidos pela comunidade, como GNU/Linux1, Python2, Reprap3 e Arduino4 entre muitos outros. Têm toda a nossa admiração, reconhecimento e agradecimento já que foram fundamentais para a realização deste projecto.
Nível técnico actual
Existem várias alternativas para capturar a geometria tridimensional de um objecto: triangulação laser, luz estruturada e visão estereoscópica, entre outras. A primeira é a que possui (comparativamente), uma maior precisão e uma maior resolução, mas possui também limitações relativamente aos materiais dos objectos a scanear. Baseia-se na captura da projecção de um feixe laser sobre um objeto, com uma câmara.
No mercado já existem scanners laser com preços que variam desde 500€ até acima de 20.000€, mas … não são livres, e por isso o utilizador não pode estudar o seu funcionamento, nem realizar modificações.
Entre os scanners livres, destacam-se o FabScan5 e o MakerScanner6, mas não estão disponíveis como kits para compra. É preciso procurar e obter os seus componentes e materiais em separado.
Ciclop
Ciclop é um kit de scanner 3D livre. Por um lado, permite ao usuário a liberdade de poder estudá-lo e modificá-lo. Por outro, facilita a compra de todos os componentes num kit, a um preço justo.
Design
A estrutura do Ciclop é composta por peças impressas em 3D, varetas roscadas M8, parafusos M8, parafusos M3, porcas e anilhas. Dispõe de uma plataforma giratória em metacrilato de 20 cm de diâmetro (onde se coloca a peça a scanear), que está coberta de uma superfície antideslizante para evitar que os objectos se movam durante o scaneamento.
A plataforma apoia-se num rolamento de esferas de 110 mm de diâmetro. O movimento é accionado por um motor de passo Nema 17.
Electrónica
O sensor é formado por uma câmara web HD Logitech C270 no centro, dois módulos laser de linha classe 17 situados em ambos os lados e pela placa controladora ZUM BT-3288 no interior da parte frontal.
A ZUM BT-328 é uma placa baseada em Arduino que executa o firmware de controlo do motor e dos laseres. Comunica com o PC através de um cabo micro-USB ou Bluetooth. Na sua parte superior, está conectada a ZUM SCAN: um shield derivado do Arduino CNC Shield9, que contém 2 drivers de controlo de motores a passo, e pinos de conexão para 4 laseres e 2 sensores analógicos de luz (LDRs).
Horus
Firmware
O firmware foi desenvolvido a partir do GRBL10, utilizado noutros projectos como o Marlin11 (o firmware das impressoras 3D livres). Permite ligar e desligar os laseres, assim como controlar a posição, velocidade e aceleração do motor a passo mediante comandos G-code.
Software
O programa principal é uma aplicação multi-plataforma desenvolvida em Python2. Utiliza wxPython12, NumPy13, SciPy14, Matplotlib15, OpenGL16, e uma versão optimizada para Linux do OpenCV17.
Esta aplicação é o núcleo do scaneamento. Gere as comunicações, a captura e a sincronização dos dados, o processamento de imagem e a geração e visualização da nuvem de pontos.
Foi desenvolvido e optimizado para GNU/Linux (Ubuntu18), Windows e Mac. O Horus é composto por três bancos de trabalho, seleccionáveis pelo usuário.
Controlo
Nesta secção, é possível controlar livremente cada um dos elementos que compõem o scanner: os parâmetros da câmara, os lasers, os motores, etc… Está pensado para que os makers e os programadores possam realizar testes e experiências a cada componente do dispositivo, individualmente.
Calibração
O banco de calibração contém as ferramentas necessárias para calibrar o dispositivo, desde o ajuste da câmara, até à triangulação dos lasers e à detecção da plataforma giratória.
Este sistema está desenhado para calcular automaticamente os parâmetros internos do scanner a partir da estrutura montada pelo usuário. Isto é muito importante, pois por ser um scanner DIY, nunca se montarão dois scanners exactamente iguais. É impossível determinar a priori as dimensões e orientações que o utilizador dará na montagem. Além disso,o usuário pode montar um scanner com diferentes dimensões e posições dos lasers e da câmara. O Horus encarrega-se de se auto-calibrar correctamente, para conseguir um scaneamento perfeito.
Scaneamento
Esta secção permite seleccionar o tipo de scaneamento: com/sem textura, um/dois lasers, passos por volta, etc. Disponibiliza também, um ambiente 3D que permite a visualização da nuvem de pontos em tempo real e uma janela de vídeo que mostra as diferentes partes do processamento da imagem.
Os tempos de scaneamento dependem do algoritmo utilizado, e da aceleração e do passo do motor. Para 800 passos por volta (0.45º), os tempos vão de 2 min (mais rápido) até 6 min (mais lento com laser duplo) em Linux.
O resultado deste processo é um ficheiro PLY19. Podemos ver aqui alguns exemplos:
Assistente
Além do referido anteriormente, o Horus inclui um assistente que simplifica o processo de calibração e scaneamento, através de um guia passo a passo.
Malha
Para realizar a malha a partir da nuvem de pontos, existem diversos programas livres como o Blender20 ou o MeshLab21, que permitem passar de PLY a STL22. STL é um formato que define uma malha 3D composta por triângulos. Este ficheiro pode ser impresso em 3D, utilizando programas como o Cura23.
Uma vez convertido para STL, o modelo pode ser visualizado no Horus.
Trabalho futuro
Neste projecto, queremos continuar a evoluir e a melhorar. Uma das nossas linhas de trabalho principal será a incorporação dos mecanismos de pós-processamento 3D e malha no Horus.
Interessa-nos a opinião da comunidade, e por isso estamos abertos a sugestões e melhoramentos através do nosso Grupo ou do GitHub.
Desafiamos todos a unirem-se ao projecto!
Publicações
Nas próximas semanas iremos publicar com detalhe, todos os desenvolvimentos, documentos e manuais relacionados com este projecto, sob uma licença Creative Commons BY-SA e GPL v2.
Estão preparados?
Referências
- Sistema operativo GNU/Linux
- Linguagem de programação Python
- Comunidade RepRap
- Comunidade Arduino
- Projecto FabScan
- Projecto MakerScanner
- Certificado de segurança Classe 1 IEC60825-1:2014
- Placa controladora ZUM BT-328
- Placa de potência Arduino CNC Shield
- Software de controlo CNC GRBL
- Firmware Marlin
- Biblioteca gráfica wxPython
- Biblioteca de cálculo matricial NumPy
- Biblioteca de cálculo científico SciPy
- Biblioteca de geração de gráficos Matplotlib
- Biblioteca de gráficos 3D OpenGL
- Biblioteca de visão artificial OpenCV
- Sistema operativo Ubuntu. Ubuntu GNOME, Kubuntu
- Formato de malha PLY
- Editor tridimensional Blender
- Processador avançado de malhas MeshLab
- Formato de malha STL
- Assistente de impressão 3D Cura
Caros,
Podem informar-me sobre 2 coisas, por favor?
1 – as imagens obtidas pelo scanner são a cores?
2 – quais os formatos em que se podem guardar as imagens 3D?
Muito obrigado,
José Kullberg