Решение Cura заменить углы->дуги для увеличения угловой скорости?

Я понял, что с текущим Марлином я не могу использовать Отклонение перехода с линейным продвижением, см. [ОШИБКА] Быстрые изменения ускорения прерывают линейное продвижение при использовании отклонения перехода #15473.

Тем не менее, очень полезно не останавливаться на поворотах с большим ускорением, а делать небольшую кривую. Возможно ли это на уровне G-кода?

Есть ли в Cura функция или плагин, который заменяет острые углы дугами, чтобы устранить необходимость в отклонении соединения в прошивке?

, 👍2

Обсуждение

Можете ли вы уточнить, действительно ли у вас есть проблема, соответствующая описанной в связанном отчете об ошибке, или вы просто обеспокоены тем, что можете? Я использую отклонение перехода и линейное продвижение, K=0.6 для регулярного PLA, K=3.8 для гибкого материала, и не наблюдал этой проблемы вообще с первым, но мог столкнуться с ней со вторым., @R.. GitHub STOP HELPING ICE

Кроме того, какой параметр отклонения соединения вы используете?, @R.. GitHub STOP HELPING ICE

@R.. Я репортер этого жука... С K=2 там вопрос стоит очень серьезно. Какая у вас плата? Вполне возможно, что это происходит только на AVR... В любом случае, полезно сделать углы немного менее острыми., @BarsMonster

@R.. Я использую JD=0.022, @BarsMonster

У меня есть Ender 3, который представляет собой плату на базе AVR (ATmega 128-whatever). JD=0.022-это довольно низко; Я использую JD=0.08 (вычисляется с помощью [формулы для преобразования из сопоставимого классического рывка](https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html это не значит, что вы должны увеличить его, просто это не проблема с тем, что ваша ценность чрезмерна., @R.. GitHub STOP HELPING ICE

Есть ли причина, по которой вы не используете классический рывок? Я переключился на JD, потому что классический рывок, похоже, является источником неприятных ошибок сдвига слоев, но если это не повлияет на вашу установку, классический рывок может быть решением., @R.. GitHub STOP HELPING ICE

@R..GitHubSTOPHELPINGICE Конечно, в настоящее время я живу на классическом рывке, это единственное рабочее решение для меня на данный момент. Но мне все равно было бы интересно попытаться немного обогнуть углы., @BarsMonster

Отклонение соединения не приводит к закруглению углов. Он просто выполняет математику для допустимого мгновенного изменения компонентов скорости*, как если бы* он шел по закругленному углу с заданным отклонением. Видишь http://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html, @R.. GitHub STOP HELPING ICE

И я только что подтвердил, что на меня тоже влияет эта проблема, даже при K=0.6. Uhg. Переключаюсь обратно на классический рывок и надеюсь, что больше не попаду в сдвиги слоев... Если ваша награда истекает без приемлемого решения, я отправлю еще одного из своих представителей, чтобы проследить за этим., @R.. GitHub STOP HELPING ICE

@R..GitHubSTOPHELPINGICE Да, я понимаю, что JD не производит закругленных углов. Но я считаю, что автоматические закругленные углы были бы полезны для всех 3d-принтеров (R=0,1-0,2 мм)., @BarsMonster

Если не использовать команды перемещения дуги (G2/G3), я не уверен, что это будет очень полезно. Выполнение закругленного угла радиусом 0,1-0,2 мм будет включать в себя некоторые совершенно крошечные сегменты, которые Марлин и другие прошивки на самом деле не любят - они делают математику планировщика намного дороже и потенциально производят сложный рывок, позволяя поворотам происходить *быстрее*, чем это должно быть. Подход G2/G3 может быть многообещающим, но на самом деле мне пришлось опустить поддержку для них из моих сборок, чтобы соответствовать Marlin в 128k. :-(, @R.. GitHub STOP HELPING ICE

смотрите идею постобработки здесь https://github.com/FormerLurker/ArcWelderLib/issues/33, @Vincent Alex

@VincentAlex ArcWelderLib потрясающий, он делает большую часть того, о чем я мечтал. Но все же, насколько я вижу, он не заменяет углы дугами (т. Е. Не изменяет геометрию)., @BarsMonster

@BarsMonster правда, я тоже ищу что-то подобное, проще всего было бы сделать это в 3D-модели, но это не включает заливки, подгонка bspline из мира ЧПУ даст вам это, но не написано для 3D gcode: https://user-images.githubusercontent.com/4163396/106666173-27fc8c80-659f-11eb-9c45-c443cbf05163.jpg, @Vincent Alex

@BarsMonster идея, нарисуйте свою 2D-базу в dwg, используйте скрипт, который закругляет углы, расширит ее до 3D и срежет, что намного проще, чем обработка gcode., @Vincent Alex


1 ответ


2

Решение Cura можно найти в настройках "Jerk Control".

Короткая аналогия; когда вы едете, и угол приближается, у вас в основном есть два варианта, чтобы взять угол плавно; вы можете взять угол с широким радиусом поворота, или вы можете замедлиться. Принимая окрестности углу на автобанных скоростях просто не работает, даже если никого нет на дороге; вы будете очень вероятно, выброс углу, если вы находитесь в заднеприводный автомобиль, вы, скорее всего, потеряете и "рыбий хвост" (или еще хуже), и пассажиров машины, включая вас, будут брошены вокруг, яростно, чтобы никто не реальное преимущество, хочу сказать, что ты взяла, что поворот на 70.

Когда экструдер приближается к резкому углу, для экструдера будет невыгодно пытаться поддерживать 70 мм/с вокруг того, что в основном является мгновенным поворотом. Свой рывок (остановки движущейся оси) и ускорения (начиная неподвижную ось) параметры превышают физические возможности вашего степперы и приводных ремней, делая угол менее точная (и в крайности, теряя шагов вызывает смещение слоев), и если ремни не прекрасно натягиваются, и даже если они есть, вы получите "звон" (3Д эквивалент заносит, как вы расправляются после апекса поворота во время движения).

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

Поэтому вместо этого Кюра предлагает второй вариант: притормозить перед поворотом. Включение управления рывком и настройка соответствующих настроек позволяет Cura slicer постепенно снижать скорость головки по мере приближения экструдера к резкому углу, тем самым уменьшая крутящий момент, необходимый для остановки движения по одной оси и запуска его по другой, что степперы могут фактически выполнять со скоростью, которую вы бы назвали "мгновенной". Это сохраняет острые углы и позволяет избежать звона по прямым линиям после поворота за счет более низкой общей скорости печати (хотя и не так сильно, как снижение общей скорости печати до скорости, с которой экструдер будет принимать углы).

Теперь я понимаю, что это противоположно "увеличению угловой скорости"; контроль рывка существует для замедления экструдера вблизи углов. Однако увеличение угловой скорости редко бывает тем, чего вы действительно хотите, по причинам, изложенным выше. Если вам действительно нужны красиво закругленные углы, скруглите их в САПР, и тогда слайсер сгенерирует последовательность сколь угодно коротких линейных перемещений (с истинной интерполяцией кривой G2/G3/G5 из чисто полигональной геометрии STL экспериментировали, но в настоящее время это доставляет больше хлопот, чем стоит), которые ограничивают изменение скорости экструдера при закруглении угла, вместо того чтобы делать закругление "артефактом" ограничений принтера. При достаточно тонких уровнях детализации преобразования в STL результаты неотличимы от истинной кривой.


,

Пожалуйста, объясните подробнее, какой слайсер будет генерировать движения G2 из файла STL, полностью состоящего из плоских треугольников., @Davo

@Davo На самом деле и Slic3r, и Simplify3D экспериментировали именно с этим. Но я отредактирую, чтобы уточнить, что на самом деле происходит последовательность многоугольных линий сколь угодно малой длины (на основе ряда переменных как в САПР, так и в слайсере), где каждое движение выполняет общую цель ограничения ускорения за углом., @KeithS

Я думаю, что этот ответ полностью неверно понимает/неверно представляет, что такое "контроль рывков" в Cura. Это просто означает, что Cura выдаст команды gcode, чтобы установить ограничения на рывок встроенного ПО принтера, возможно, с различными значениями для разных частей печати (внешние стены, внутренние стены, кожа, заливка и т. Д.), А не оставлять настройки встроенного ПО умолчанию на месте. Это не означает, что Cura изменяет траектории движения или скорость, чтобы уменьшить физический толчок, испытываемый головкой инструмента. Это прошивка принтера, которая на самом деле применяет эти настройки к тому, как он управляет шаговыми двигателями., @R.. GitHub STOP HELPING ICE

https://github.com/FormerLurker/ArcWelderLib действительно генерирует G2/G3 (дуги) из линейных., @Vincent Alex