FabScan — это опенсорсный, сделанный своими руками лазерный 3d сканер. Я собрал свой из листов МДФ и различных подручных средств и в качестве примера решил выложить для вас процесс создания.


Шаг 1: Что вам понадобится





Для официального сканера FabScan необходимы:

  • Ардуино УНО
  • Шаговый двигатель A4988
  • Модуль лазерного 3д сканера FabScan-Shield для Ардуино
  • Модуль красного лазера 5mW
  • Биполярный шаговый двигатель — NEMA 17 (200 шагов)
  • Блок питания 12V — 1A
  • Веб-камера Logitech C270

Для создания коробки вам понадобится 4 листа МДФ размером 600*300*5 мм.

В своём проекте я использовал:

  • Ардуино УНО
  • Биполярный шаговый двигатель — NEMA 17 (200 шагов)
  • Шаговый двигатель A4988
  • Модуль красного лазера 5mW
  • Блок питания 12V — 2A
  • Веб-камера Logitech C270

Так как мы будем использовать ПО FabScan, то я рекомендую держаться их списка деталей, всю документацию по эталонному 3 д сканеру FabScan вы легко найдёте в интернете.

Шаг 2: Собираем коробку-галерею для 3D-сканера






Показать еще 4 изображения




Для сборки короба для сканера я использовал Дремель и своё воображение. Это не так-то просто, ведь для того, чтобы получить корректное 3Д-изображение камера, лазер и шаговый двигатель должны находиться на правильных позициях. Если вы не хотите заморачиваться, то можно просто купить готовые части, но это обойдётся недешево.

Шаг 3: Соединяем модули



Сборка железа довольно проста:
Соедините модуль FabScan с Ардуино, а двигатель A4988 установите на своё первое положение шага. Соедините двигатель с выходными пинами, а модуль лазера с аналоговым пином A4. Наконец, подключите блок питания и кабель USB.

Если вы решили собирать сканер по моему списку деталей:
Тогда вам нужно подключить двигатель A4988 к пинам 10, 11, 9, 8 на Ардуино (при желании пины можно поменять), а модуль лазера подключить к пину A4. В конце также подключите блок питания и кабель USB.

Шаг 4: Код для Ардуино

Мы будем использовать официальный код от FabScan. Загрузите его на Ардуино и всё готово.

Если у вас установлен плагин Codebender, то можно залить код на Ардуино, перейдя по этой ссылке.

Если вы собираете сканер по моему списку деталей, то нажмите кнопку Edit и сделайте следующее:

  • Добавить строки
    #include 
    const int stepsPerRevolution = 200;//поменяйте на кол-во шагов вашего двигателя
    Stepper myStepper(stepsPerRevolution, 10, 11,8,9);
  • Замените функцию step() следующей:
    void step() { 
    myStepper.setSpeed(1); 
    myStepper.step(1); 
    }
    

Шаг 5: Софт для компьютера







Мы будем использовать образ «FabScan Ubuntu Live DVD». Вы можете скачать его здесь. В этом образе софт FabScan уже предустановлен. Образ можно записать на флэшку, как это сделать можно найти в интернете.

Важная заметка: Если вы выбрали опцию «Try Ubuntu», то сохраните ваши файлы перед выключением компьютера!

Смотрите на приложенные фото и следуйте пунктам:

  • Выберите порт в SerialPort
  • Выбериет камеру в Camera
  • File — Control Panel
  • Кликнете на detect laser (не кладите ничего в сканер на данном этапе) и выберите ‘enable’
  • Кликните на «Fetch Frame» и убедитесь, что синяя горизонтальная линия касается верхушки вращающегося стола, а желтая горизонтальная линия касается его нижней части. Вертикальная желтая линия должна проходить через центр вращающегося стола. Незакреплённая камера может стать причиной искаженных сканов!

После настройки закройте окно панели управления, поместите объект в сканер, и нажмите на кнопку начала сканирования (start scan).

Сохранение 3D изображения:
Когда процесс сканирования завершится, можно сохранить 3Д объект в файл в форматах .pcd или .ply. Можно сохранить его также в формате stl, но он поддерживается не всеми платформами. Также можно открыть ранее отсканированный объект, выбрав File — OpenPointCloud.

Что делать с 3Д файлами?
Можно открыть их в MeshLab и напечатать на 3Д-принтере.
Для печати объектов в MeshLab:

  • Сохраните объект в формате .ply
  • Откройте файл в MeshLab
  • В MeshLab рассчитайте нормали (Filters/Point Set/Compute normals for point sets)
  • Реконструируйте поверхность при помощи реконструкции пуассонов (Filters/Point Set/Surface Reconstruction: Poisson)
  • Готово