Настройка 3д сканера циклоп

Обновлено: 19.05.2024

03-filin

Пришло время написать, как все таки с помощью него сканировать предметы. Как раз сейчас дописываю книгу (завтра релиз) и пишу главу про сканеры. Решил поделится давно обещанной здесь информацией. И написать краткую инструкцию по применению.

Как сканировать с помощью Cyclop-a?
С одной стороны ничего сложного в этом нет. С другой стороны существует ряд тонкостей, чтобы получить хорошую «заготовку» для последующей обработки. Постобработка на самом деле дает 90% результата при сканировании. О ней мы поговорим чуть позже.
Какие же тонкости необходимо знать? В первую очередь надо чтобы у нас было неяркое рассеянное освещение. Желательно дневное. При искусственном освещении результаты бывают хуже. Направленный свет портит сканы, надо его стараться избегать.
Сама деталь должна быть по возможности матовой. Глянцевые детали, какой-нибудь хром сканируется очень плохо. В профессиональном сканировании используются специальные, матовые напыления для того, чтобы избежать данного эффекта. Я специально детали не пылил, но я думаю при необходимости что-то такое отсканировать выход найти можно.
Необходимо так же понимать пределы возможностей нашего сканера. Детали со сложным рельефом и отверстиями ему непосильны.
Деталь сканируется только в одной плоскости, поэтому сверху и снизу модели у нас будут «дыры», которые потом надо «заделывать».
Теоретически можно попробовать отсканировать модель в нескольких плоскостях и «склеить» в MeshLab. Но трудозатраты на такое «художество» довольно существенны и имеют смысл в случаях крайней нужды.

Хотя опять же сканеры и софт которые позволяют сделать это проще стоят на порядок дороже. Иногда игра стоит свеч!

Ну что же приступим.
Запускаем программу Horus нашего сканера и видим такую картинку

01-horus.PNG

Мы видим две колонки. В правой у нас управление и сканирование. В левой те файлы, что мы уже сканировали.
Тут все просто. Первоначальные настройки мы уже выполнили, по инструкции сборки и в принципе туда уже не лезем.
Можно выбрать сканирование с использованными настройками, второй пункт сверху в левой колонке Scan using recent setings.

Но я все же рекомендую выбирать при каждом новом сканирования пункт первый – Wizard mode .

02-calibr.PNG

В нем проводится экспресс калибровка сканера. А так как он чувствителен к освещению, то лучше это делать перед процессом.

Заходим и видим такое меню. Жмакаем в кнопку Connect и подключаемся к сканеру.

PREVIEW

Такую картинку мы видим после подключения. Камера включена и показывает нам, что перед ней происходит.
Там же можно ткнуть в кнопку Edit settings .

04-kalibr.PNG

В появившимся меню можно выбрать тип освещения, как мы его оцениваем.

Можно поставить инверсию вращения мотора стола. Она стоит изначально и менять ее не надо.

Так же можно поменять расстояние на калибровочной табличке, если оно вдруг изменилось. Хотя мы его измеряем в самом начале, после сборки сканера, заносим сюда и больше не трогаем. Измениться оно, наверное, может, если вы будете кидать или разбирать данную табличку.Нажимаем кнопку Skip и попадаем на следующий этап. Здесь нам надо поставить на стол нашу калибровочную табличку, как нарисовано на рисунке и нажать на кнопку Calibrate.

05-kalibr.PNG

05-kalibr0k.PNG

Если выводит что-то другое, то скорее всего или проблема с освещением(чаще всего) или какие-то технические проблемы. У меня вот отходил неплотно вставленный провод USB и калибровщик ругался на неработающий лазер. Тот во время калибровки то светил, то нет.

Поправил провод. Нажал калибровку и все стало ОК.

В общем, если ОК, жмакаем на кнопку Next и видим такое окно.

06-kalibrok.PNG

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

Слева мы видим еще несколько настроек.

Самая первая – Resolution – разрешение сканирование. Имеет смысл всегда ставить High – высокое. От этой настройки зависит время сканирование. И экономить на этом смысла нет. Нам же нужен качественный скан, а не бесформенный объект.

Второй пункт – Laser – Использовать оба (Both) или левый (left) и правый (right) лазер отдельно. У меня всегда стоит включенных оба лазера. От этого зависит качество скана и зачем на нем «экономить» ?

Нажимаем кнопку Next – нам предлагают, для начала сканирования нажать на кнопку Play и все начнется.

07-scan.PNG

По прошествии некоторого времени, пока происходит сканирование, мы можем наблюдать весь процесс в «прямом эфире».

Мы увидим наш результат.

09-scan.PNG

Нам такой формат не нужен. Нам нужен stl. Что делать ? Конвертировать его.

Кроме «неправильного» формата модель имеет артефакты и «дыры», которые мы будем лечить в программе MeshLab.

Она нам позволит сохранить модель в нужный нам формат .stl

00-import.jpg

Сразу идем в меню File и выбираем Import Mesh

02-import.jpg

Выбираем файл, который мы получили в программе Horus при сканировании.

Вот, что у нас получилось при сканировании. Видим артефакты и всякий мусор.

03-filin.jpg

Все это мы сейчас уберем. Вверху тыкаем в иконку Select Vertexes и переходим в режим выделения.

04-select-vertexes.jpg

Сразу за один заход выбрать все артефакты не получится. Поэтому, можно к выделению добавлять новую область, зажав кнопку Control на клавиатуре. Полностью сбросить наше выделение, можно еще раз нажав на кнопку Select Vertexes. Или просто выделив пустую область.

Выделенные артефакты можно удалить нажав на иконку Delete the current set ….

05-delete.jpg

Повращав модель и удалив все, не нужные нам артефакты приступим к следующему этапу.

06-compute normal.jpg

Идем в меню Filters > Normals, Curvatures and Orientation > Compute normals for
point sets

Нам предлагается выбрать настройки для построения нормалей. Рекомендуются значения 10-50-100. От этого зависит сколько нужно точек для построения нормали. Этот параметр можно будет поменять в дальнейшем.

07-compute normal.jpg

Нажимаем Apply. Через несколько секунд процесс будет завершен.

Чтобы увидеть результаты наших действий идем в Render > Show Normal/Curvature

09-normal.jpg

«Мы стали ежиками» (с) анекдот.

Данная функция включает отображение построенных нормалей на модели.
Идем дальше. Попробуем создать поверхности по нашим точкам.

10-reconstruction.jpg

После нажатия выскакивает вот такое меню

11-recon.jpg

Тут мы можем выбрать настройки по построению нашей модели. От 6(самое грубое) до 12(лучшее качество). Но даже в инструкции не рекомендуется запускать больше 11 если у вас не очень мощный комп. У меня и на 10 бывало зависал на долгое время процесс. В общем, тут все просто – меньше значение, быстрее обработка и хуже качество. Больше значение – можно ждать часами, но изображение будет построено более детально. Выбирать вам.

У меня и на 7-8 строило приличные модели.

После окончания процесса нажимаем Close и идем включать, если еще у вас не включен список слоев. View > Show Layer Dialog .

12- view.jpg


Справа откроется окно со списком слоев.

13-view.jpg

Верхнее значении обычно, наша изначальная модель. Второй пункт – то что у нас получилось после обработки.
Нажимаем на «глаз» в нашей изначальной модели, чтобы отключить ее отображение.
У нас получается вот такой результат.

14-end.jpg

Иногда результат получается не очень хороший. В таком случае начинаем «играть настройками», которые описаны ранее. Но даже обычно таких простых операций достаточно, чтобы получить нормальную модель.
Чтобы превратить ее в .stl идем в File-Export Mesh выбираем тип файла .stl и сохраняем.Далее загрузим получившуюся модель в Cura, чтобы посмотреть, получившийся у нас результат.

15-Cura.jpg

По-моему вполне на уровне.

Надо только понимать, что выше головы не прыгнуть качества данного сканера и относится к нему прагматично.
Чтобы улучшить качество моделей можно еще применить сканирование с разных сторон и последующее «склеивание» в MeshLabs.

Но это уже будет в видео, которое бонусом идет всем сделавшим предзаказ книги.
Напоминаю релиз завтра и цена будет выше и бонусов в таком количестве уже не будет

Ciclop

В обсуждении моей предыдущей статьи было одно утверждение «бесполезен, что один, что другой» и один вопрос «как победить несовпадение облаков двух лазеров», на которые я изначально отвечать не собирался, но антропологи меня попросили проверить, можно ли использовать сканер Ciclop для проведения достаточно точных измерений черепов, и в результате косвенным следствием этой работы появились и развернутые ответы. Для того, чтобы подтвердить теорию, нужно много экспериментов, чтобы опровергнуть достаточно одного. Нижеприведенная инструкция по сканированию и обработке это и есть ответ на вопрос о полезности. Сразу предупреждаю, что приведенная методика не претендует быть единственно правильной и оптимальной для решения данной задачи, она всего лишь показывает, что существует установка и методика для ее решения. Данная методика предполагает использование только открытых готовых решений. Написание специализированной программы позволило бы кардинально уменьшить и число задействованных пакетов, и строчек кода в них. Однако на это не было времени, и было задействовано 4 программы, сильно пересекающиеся по своим функциональным возможностям. В большинстве руководств по сканированию предлагается использовать только пару программ, одну для калибровки и сканирования, другую для обработки. Однако оказалось, что в каждой паре чего то не хватает и приходится для получения оптимального результата использовать последовательно все 4. А именно Horus и Thot ( в редакции Fabien Devaux ), CloudCompare, MeshLab. Все эксперименты проводились на компьютере с ОС Maui 1 «Aurora»

Вообще экспериментальная наука почти всегда делается на пластилиновых приборах :-). Если вы дождались появления высокотехнологичных установок, предназначенных для конкретных измерений, это скорее всего свидетельствует, что исследуемая область перестала быть передним краем науки и превратилась в рутину. В этом случае научные сотрудники - теоретики, а материалы им собирают лаборанты :-)

Постановка задачи

Мне выдали гипсовый слепок черепа и попросили ответить на вопрос, можно ли получить модель, пригодную для измерения расстояния между двумя произвольными точками поверхности, и какую максимальную точность измерений при этом можно ожидать.

Методика может быть разделена на 4 этапа:

Калибровка

Сперва проводим стандартную калибровку в программе Horus. Открываем вкладку Control workbech и проверяем, что лазерные лучи параллельны, перпендикулярны платформе и пересекаются в ее центре. Проверяем отсутствие люфта втулки на оси мотора. Сканирование происходит рывками и винт придется подтягивать буквально каждый час. Возможно, стоит изготовить втулку из металла и использовать фиксирующий лак для резьбы винта. Открываем вкладку Adjustment workbech и в пункте Calibration capture, добиваемся распознавания шахматной доски и четкой видимости лазерных лучей (переключение в меню Capture mode). Переходим в Calibration segmentation и добиваемся четкого распознавания обоих лазерных лучей. Открываем вкладку Calibration workbech и начинаем калибровку с пункта Scanner autocheck. Если все прошло нормально, переходим к последнему пункту Camera intrinsics (поскольку Laser triangulation предполагает использование матрицы объектива, полученной в этом пункте, и при изменении параметров матрицы нужно повторять этот пункт) и делаем серию снимков, перемещая шахматную доску таким образом, чтобы была задействована вся площадь кадра.

ciclop

Переходим к пункту Laser triangulation и проводим калибровку. Запоминаем значения и повторяем калибровку. Значения, скорее всего, будут отличаться и довольно сильно до 10 мм для расстояния между камерой лазером. Чуть сдвигаем мишень и повторяем калибровку. Замечаем, что для одного из лазеров значения варьируются больше, чем для другого. Это связано с тем, что шахматная доска не лучшая поверхность для определения положения лазерных лучей и мощность лазеров разная, а индивидуальной подстройки у сканера Ciclop нет. Ошибка возникает, когда граница клеток проходит рядом с лазерным лучом и линия вырождается в лесенку. В этом случае вычисленное средне значение отличается от значения на однородной поверхности. Забегая вперед, отмечу, что для приемлемого результата при сканировании двумя лазерами ошибка в расстояниях до лазеров не должна превышать 0,5 мм. Такой точности мы на этом этапе не достигнем, но пытаемся добиться относительно стабильных результатов. Переходим к пункту Platform extrinsics и проводим калибровку. Запоминаем результат в файл .horus/calibration.json.

ciclop

Ставим на стол объект в форме параллелепипеда, проводим сканирование, запоминаем результат, открываем в CloudCompare или MeshLab, видим двойную границу объекта, измеряем расстояние и сравниваем с реальным. Определяем, какой лазер дал результат ближе к истинному. Открываем .horus/calibration.json и изменяем расстояние на 0,5 мм, повторяем сканирование. Добиваемся совпадения границ и правильного размера в мм.

Сканирование

Сканирование проводим с помощью программы thot. Во-первых, в современном Linux это быстрее, а во вторых, это позволяет получить после сканирования раздельные результаты для правого и левого лазера. Последнее дает нам возможность объединить облака точек с большей точностью. С точки зрения поставленной задачи нам достаточно иметь только облако точек и раздельное измерение расстояний может дать нам при соответствующей обработке выигрыш. Однако это справедливо не для всех точек поверхности. С точки зрения построения модели это существенно улучшает внешний вид и проработку мелких деталей.

ciclop

Совмещение

Начинаем с удаления лишних точек. Для этих целей удобнее CloudCompare, поскольку там выделяется произвольная область, заданная отрезками прямой.

CloudCompare

Грубое совмещение в CloudCompare и далее запуск автоматического выравнивания.

CloudCompare

Если мы объединяем два облака от разных лазеров, полученные за одно сканирование, то в грубом совмещении нет необходимости. В параметрах задаем число итераций, а не точность, и не полное совмещение, а 90%.

CloudCompare

CloudCompare

В этом случае исключается возможность того что программа задумается слишком надолго. А если нас результат не полностью устроит, то повторяем несколько раз. У меня эта команда вступает в конфликт с комнатами и после ее выполнения все окна видны во всех комнатах. После получения удовлетворительного результата выделяем на левой панели и объединяем облака командой merge.

В завершение можно построить поверхность, сперва вычислив нормали. Это можно сделать в CloudCompare и MeshLab.

Измерение

Можно делать в любой из перечисленных программ обработки, а также в Blender. Где удобнее, - дело вкуса и привычки. В CloudCompare можно измерять как расстояния так и углы. Если нужно нанести несколько размеров и получить красивую картинку для отчета, то наверное, это удобнее делать в Blender через measureit. Многое зависит от точности выбора точки, что требует некоторой тренировки. Вероятно, достижима точность в 2 мм для объекта размером в 200 мм. Точность в 1% это пожалуй не хуже чем с помощью циркуля.

CloudCompare

Напечатать для себя 3D сканер на собственном 3D принтере? Почему бы и нет! Благодаря новейшей разработке от стартапа CowTech теперь это стало возможным.

CowTech Ciclop – это новейшая разработка, набор для самостоятельного изготовления компактного трехмерного лазерного сканера, созданный специально для владельцев 3D принтеров. Большая часть деталей сканера распечатывается самостоятельно на трехмерном принтере. Детали были разработаны таким образом, чтобы их можно было напечатать на большинстве распространенных моделей настольных 3D принтеров. Потребуется принтер с камерой объемом от 115 х 110 х 65 мм.


Когда все необходимые компоненты напечатаны, Вы можете самостоятельно собрать 3D сканер и начать пользоваться им уже через полчаса. В конструкции лазерного сканера Ciclop используются два высококачественных лазера, которые дают вспышку одновременно с цифровой камерой. Сканируемый объект при этом размещается на медленно поворачивающейся платформе. После каждой вспышки камера определяет точку на объекте, куда направлен лазер, и медленно следует за лазером при движении по кругу. Затем вспышки лазера переводятся в сотни тысяч точек, образующих облако сканирования.


Новый сканер CowTech Ciclop основан на модели RepRap BQ Ciclop, отличном бюджетном 3D сканере. Основная заслуга разработчиков нового Ciclop – это то, что им удалось не только создать модель, собираемую из распечатываемых на 3D принтере деталей, но также на 50 процентов увеличить скорость печати деталей и при этом на 33 процента уменьшить необходимое для печати количество филамента.


Стоимость представленного набора для самостоятельного создания 3D сканера – всего 99 долларов. В комплект включен мотор NEMA 17, два красных лазера Class 1, камера Logitech C270, защитный экран Arduino, разработанный специально для этого сканера, а также все другие необходимые компоненты. Впрочем, если у Вас нет 3D принтера, есть возможность приобрести сканер CowTech Ciclop в полной комплектации, включающей те детали, которые можно распечатывать самостоятельно при наличии принтера. Такой вариант стоит 149 долларов.

Читайте также: