Как постобработать G-код, чтобы сделать печать быстрее с помощью сплайнов и дуг?

Недавно (в 2017 году) появилась статья, получившая некоторую огласку со стороны исследователей, использующих алгоритм B-сплайна для уменьшения вибраций в 3D-принтерах. Но до них реализация B-сплайна, по-видимому, была впервые сделана с открытым исходным кодом псевдонимом DeepSoic here. Я хотел бы иметь возможность печатать быстрее , используя метод, описанный в исследовательской работе, с помощью постобработки G-кода. Я почти уверен, что эти два источника используют в основном одну и ту же технику, но я могу неправильно понять вещи.

В основном вместо того, чтобы останавливаться и начинать движение, изменения скорости выполняются извилистым образом, поэтому головка никогда не останавливается, а принтер никогда не трясется. Это делает печать более гладкой и быстрой. Я думаю, что печать в 10 раз быстрее-это то, что действительно потрясающе, как только вы попробуете это сделать. Лазерная резка опирается на кубические сплайны по другой причине: для создания кривых в пространстве. Но похоже, что эти методы делают что-то уникальное для 3D-печати-используя их для регулировки ускорения/разгона головки, чтобы создать более плавные дуги движения печатающей головки. Поскольку лазерные резаки имеют постоянное движение головки, этот метод не сильно поможет им.

Недостатком, похоже, является то, что он делает намного больше команд G-кода, перегружая USB-порт, так как он так быстро отправляет все точки на кривой. Я предполагаю, что умный человек сегодня действительно использовал бы его только через SD-карту (которая имеет недостатки) или если бы они купили 3D-принтер с бесплатным модулем Wi-Fi (который также имеет недостатки). Может быть, помогает высокая скорость передачи.

Мне было интересно, есть ли еще устоявшиеся способы использовать этот, очевидно, чрезвычайно важный и полезный и простой алгоритм. Изначально я думал, что это, очевидно, что-то, что должно быть добавлено в качестве флажка в слайсере, а не что-то, что должно быть реализовано в Marlin. Но после написания этого поста я понял, что реализация Marlin позволит вам использовать эту технику по USB, но только в том случае, если slicer steedleaders также использует свои специальные G-коды для этой оптимизации. Мне все равно, является ли это метод постобработки, как исследовательская работа или специальная версия Marlin-friendly, я просто хочу использовать эту технику, даже если мне придется использовать этот модуль Huawei Wi-Fi.

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


Я думаю, что существует недопонимание между пользователями лазерных резаков с ЧПУ и пользователями 3D-принтеров. В лазерной резке дуги используются для определения пути реза, который был бы эквивалентен экструзии нити. В лазерной резке движение самого лазера постоянно. Но в 3D-печати дуги могут использоваться для сглаживания скорости печатающей головки при ее перемещении по периметру, а затем для заполнения. Он использует дуги для управления головкой, что не является проблемой в лазерной резке. Поскольку речь идет о движении головы, а не о самой модели, я не вижу, какое значение имеет файл STL.

На самом деле речь идет об использовании дуги для установки скорости головы (первая производная от положения). Ничего о форме модели (которая была бы просто положением). По крайней мере, это моя интерпретация.

Модуль Wi-Fi интересен тем, что он получает IP-адрес от моего маршрутизатора, а затем мой маршрутизатор перестает перечислять его как подключенное устройство. Но он все еще подключен, потому что я могу получить к нему доступ по беспроводной сети. Я собираюсь заняться этим еще раз, как только смогу решить некоторые другие проблемы с этой двойной головкой. Но пока что есть основания полагать, что это может быть бэкдор.

, 👍6

Обсуждение

Проблема с перемещениями G2 и G3 (дуги и круги) заключается в том, что STL состоят только из плоских поверхностей., @Davo

Мне кажется любопытным, что вопрос относится к более быстрой печати, но проект hack-a-day связан с претензиями ничего не говорит о скорости. Статья в 3dprint.com похоже, это совсем другой проект, чем ссылка hack-a-day в этом вопросе., @cmm

@Davo, что не должно иметь значения, интеллектуальное программное обеспечение slicer должно быть в состоянии обнаружить, являются ли последовательные точки частью сегмента круга и теоретически могут быть нарезаны на коды G2/G3. В качестве альтернативы плагин или программа постобработки может сделать это, но это не ограничение файла STL., @0scar

видишь https://github.com/FormerLurker/ArcWelderLib/issues/33, @Vincent Alex

Прошивка Klipper позволяет пользователю измерять резонансы, а затем отфильтровывать шаговые движения, чтобы отменить эти резонансы. Он достигает примерно такого же эффекта без особых усилий со стороны пользователя., @FarO

Просто в отношении модуля Wi - Fi, о котором я упоминал-я думаю, что устройство Wi-Fi находилось за вторым маршрутизатором, который удваивался как сетевой коммутатор без dhcp-сервера, и я пытался увидеть состояние его подключения на первом маршрутизаторе. хотя я больше не использую эту настройку, @K Mmmm


2 ответа


Лучший ответ:

6

Я хотел бы ответить на ссылку на достоверные официальные источники, но я не могу добавить ссылки ни на прямую B-сплайновую печать. Поэтому я записываю свои мысли. Я ознакомился с B-сплайнами, чтобы понять, что они собой представляют, и прочитал 2 ссылки, приведенные OP.


В принципе, программное обеспечение принтера позволяет печатать только прямые линии. Да, я знаю, что мы можем приказать принтеру печатать кривую (используя G2 или G3), но они в конечном итоге будут преобразованы в печать прямых линий. Насколько мне известно, готовой прошивки принтера для печати кубических кривых непосредственно не существует. Если бы это было возможно, эти кривые должны были бы в конечном итоге быть переведены в меньшие прямые линии встроенным программным обеспечением синхронизированного шагового вращательного выхода. Эти дополнительные вычисления потребовали бы значительных усилий процессора платы принтера, скорее всего, гораздо больше 8-разрядный процессор был бы в состоянии справиться.

Сравнение статьи, выпущенной в 2017 году, с программным обеспечением предварительной обработки G-кода показывает, что, хотя оба они, по-видимому, относятся к методам B-сплайна, они реализованы по-разному. Например, программное обеспечение предварительной обработки направлено на уменьшение линейных перемещений перемещения путем замены их кривыми B-сплайна (и не влияет на фактический объект печати), в то время как статья фокусируется на оптимизации фактических кривых печати, оптимизируемых кривыми B-сплайна (также с использованием предварительного процессора). И то, и другое в конечном итоге должно было бы создать множество небольших прямых линий, чтобы принтер действительно мог печатать объект, поскольку встроенного решения для 3D-печати кривых не существует. Обратите внимание , что метод, описанный в этой статье, был подвергнут сомнению сообществом RepRap, которое продемонстрировало, что они могут печатать один и тот же объект намного быстрее, чем оптимизированный пример B-сплайна. Кроме того, обратите внимание, что сообщество Marlin, вероятно, движется в этом направлении, как видно, например, из этого запроса функции и этого мета-обзора G-кода; Инструкция G-кода G5.

Таким образом, оба метода полагаются на предварительную обработку G-кодов путем идентификации срезанных координатных (печатных) ходов, перевода в кривые Безье/B-сплайна для (печатных) ходов, которые в конечном итоге переводятся в нормальные G0/G1 (печатные) ходы. Не похоже, чтобы сообщество/разработчики Marlin стремились в ближайшее время реализовать кривые Безье или B-сплайна. Это означает, что если вы хотите продолжить печатать B-сплайны, вам нужно сделать свой собственный препроцессор или погрузиться в разработку Marlin C++; 8-битная печатная плата будет недостаточной, как упомянутая OP, масштабирование до 32-бит или взаимодействие с USB может быть единственным решением.


,

Я не согласен, потому что печать цилиндра равного объема в виде прямоугольной призмы на моем принтере намного быстрее для меня. Время, рассчитанное Cura, не учитывает это, но я почти уверен, что цилиндр печатает намного быстрее., @K Mmmm

@steveantwan, Пожалуйста, изложите свою идею в печатном виде, собственный ответ, вероятно, будет лучшим решением, чем обсуждение в комментариях. Обратите внимание, что у нас есть [чат], доступный для разговоров, даже возможен частный чат., @0scar


3

С более практической точки зрения можно спроектировать деталь так, чтобы углы были закругленными (также известные как скругления). Это поможет удерживать печатающую головку в движении и предотвратит эффект внезапной остановки и запуска, который вызывает "подергивание". Другие 8-разрядные контроллеры, как правило, насыщаются при считывании большого количества g-кода с SD-карты или последовательного порта. Обновление до 32-разрядного контроллера предотвратит такие сбои.

Оба эти метода бледнеют по сравнению с простым ускорением печати. Обновление аппаратного обеспечения до более быстрого (существуют различные методы) приведет к большему сокращению времени, чем попытка оптимизировать g-код (по моему скромному мнению). Принтеры Delta потенциально могут быть самым быстрым типом FDM-принтеров, если предположить, что вы сможете достаточно быстро расплавить нить накала.

,

ОП просит `черпать информацию из заслуживающих доверия и/или официальных источников", пожалуйста, добавьте несколько ссылок., @0scar

Этот ответ прямо указывает на то, что то, что пытается сделать ОП, практически бесполезно. Ни ограничения на вибрацию/ускорение/рывки из-за линейной сегментации, ни скорость синтаксического анализа gcode, из-за которой сегменты становятся достаточно маленькими, чтобы шаблон ускорения был по существу таким же, как при использовании истинных криволинейных путей, не являются ограничивающим фактором скорости печати. Ограничениями будут основные пределы вибрации/ускорения в механических деталях и объемная скорость расплава/экструзии экструдера., @R.. GitHub STOP HELPING ICE

Исходная операция показала, что стандартная печать не удалась при увеличении скорости печати, но время печати уменьшилось при использовании кривых Безье. Техника поворачивает углы с остановки на старт по изогнутой траектории, что позволяет избежать внезапной передачи импульса в кадр в одном направлении. У Марлина теперь есть специальный G-код для кривых Безье (и для дуг), поэтому подход разумен. Скорость плавления является пределом, но часто скорость печати низкая из-за ограничений ускорения, поэтому вы можете печатать со скоростью 30 мм^3/с, но иногда печатаете только со скоростью 3 мм^3., @John Moser