Ученые Мичиганского технологического университета (MTU) разрабатывают открытое программное обеспечение для FDM 3D-принтеров, способное выявлять аномалии в процессе построения и корректировать различные параметры 3D-печати.
Работы над проектом под названием «Опенсорсный послойный анализ 3D-печати на основе машинного зрения» ведутся докторантом факультета электротехники и вычислительных систем Алексеем Пецюком и профессором факультета материаловедения и машиностроения Джошуа Пирсом.
Работает это достаточно просто: программа начинает с проверки высоты в боковой проекции и анализирует виртуальный вид сверху на соответствие форм печатаемых структур заданным контурам с использованием мультишаблонного сопоставления и итерационных алгоритмов, пространственно-частотных фильтров, гауссовых моделей распределения и сегментирования структурных аномалий с помощью алгоритма агломеративной иерархической кластеризации. Или что-то в таком духе. Короче, это штука визуально отслеживает форму печатаемых слоев и сравнивает то, что есть, с тем, что должно быть согласно командам в G-коде, а потом решает, что делать дальше.
Чтобы все это функционировало, требуется кое-какое аппаратное обеспечение: установленная под углом к рабочему столику камера (авторы использовали устройство на основе КМОП-матрицы Sony EXMOR IMX322), маркерная разметка, чтобы программа могла определять положение столика в пространстве относительно той самой камеры, и светодиодная подсветка, синхронизированная по высоте с наносимыми слоями для обеспечения стабильных результатов работы машинного зрения. В опытах использовалась самодельная аддитивная система на основе дельта-принтера Rostock.
Для начала программное обеспечение, разработанное в среде Python, анализирует G-код, разделяя его на слои и сегментируя траектории экструдера на такие категории, как юбка, заполнение, внешние и внутренние стенки, опоры и так далее. Как поясняют разработчики, траектории позиционирования зависят от алгоритма, используемого для нарезки STL-файлов, и не всегда в точности совпадают с контурами в исходных цифровых моделях, поэтому надежнее ориентироваться на координаты непосредственно в G-коде (см. иллюстрацию ниже).
Слева — слой в цифровой модели (черным пунктиром для сравнения показан контур, сгенерированный по G-коду), справа — зафиксированный машинным зрением результат, в центре — участок возможного несоответствия STL и G-кода
Затем, уже в процессе 3D-печати, программа сравнивает физические слои с виртуальными по контуру и высоте, учитывая наклон камеры и генерируя исправленные изображения в верхней и боковой проекции. Можно было бы использовать две камеры, но, по мнению разработчиков, использование монокулярной системы снижает вычислительную нагрузку, не говоря уже об экономии на оборудовании.
Температура, траектории, скорость позиционирования, скорость подачи материала, толщина слоев и другие параметры сохраняются для каждого слоя. Программное обеспечение создается с расчетом не только на анализ, но и на полноценный контроль рабочих процессов с использованием в качестве интерфейса RAMPS 1.4 и прошивку Marlin. Прорабатываются даже варианты ремонта изделий — корректировки G-кода в случае выявления отклонений от исходной модели.
В идеале алгоритмы должны надежно выявлять различные проблемы и выполнять соответствующие действия. Например, в случае печати «по воздуху» из-за нехватки филамента 3D-принтер должен приостанавливать печать и информировать оператора, в случае закупоренного сопла должна повышаться температура хотэнда и повторятся 3D-печать пропущенного фрагмента, в случае отклонений от исходного контура должны вноситься координатные поправки в G-код, в случае недоэкструзии должны повышаться температура хотэнда и темп подачи материала, в случае отрыва и загибания первых слоев должна повышаться температура нагрева столика, и так далее.
Проект пока еще находится на ранней стадии разработки, но имеющийся исходный код уже выложен в открытый доступ. С полным докладом и подробным описанием проекта можно ознакомиться по этой ссылке.
Источник: 3dtoday.ru