如何使用样条曲线和圆弧对 G 代码进行后处理以加快打印速度?

3D打印 g代码 切片
2021-04-25 11:51:55

最近(2017 年)有一篇论文得到了一些研究人员的宣传,他们正在使用 B 样条算法来减少 3D 打印机中的振动。但在他们之前,B Spline 实现似乎首先由一个名为 DeepSoic 的别名在这里开源我希望能够使用研究论文中描述的方法通过后处理 G 代码更快地打印我很确定这两个来源使用基本相同的技术,但我可能会误解一些事情。

基本上,不是停止和开始移动,而是以曲线方式完成速度变化,因此打印头永不停止,打印机永不晃动。这使打印更流畅,速度也更快。我认为,一旦您尝试,打印速度提高 10 倍真是太棒了。出于不同的原因,激光切割依赖三次样条;在空间中创建曲线。但似乎这些技术正在为 3D 打印做一些独特的事情——使用它们来调整打印头加速/减速以创建更平滑的打印头运动弧线。由于激光切割机的头部运动不断,这种技术对他们没有多大帮助。

缺点似乎是它发出了更多的 G 代码命令,使 USB 端口过载,因为它以如此快的速度发送曲线上的所有点。我假设今天的聪明人真的只会通过 SD 卡使用它(有缺点),或者如果他们购买了带有免费 Wi-Fi 模块的 3D 打印机(也有缺点)。也许高波特率有帮助。

我想知道是否有更多既定的方法来使用这个明显非常重要且有益且简单的算法。最初我认为这显然应该作为切片器中的复选框添加,而不是在 Marlin 中实现。但在写完这篇文章后,我意识到 Marlin 实现将允许您通过 USB 使用这种技术,但前提是切片机的领导者也使用其特殊的 G 代码进行此优化。我不在乎它是像研究论文那样的后处理技术还是特殊的 Marlin 友好版本,我只想使用这种技术,即使我必须使用这个华为 Wi-Fi 模块。

基本上我想知道通过切片机或其他软件开始使用这种技术的最佳方式。


我认为 CNC 激光切割机的用户和 3D 打印机的用户之间存在误会。在激光切割中,弧线用于定义切割路径,这相当于长丝挤出。在激光切割中,激光器本身的运动是恒定的。但在 3D 打印中,弧线可用于平滑打印头在周边移动时的速度,然后进行填充。它使用电弧来控制头部井,这在激光切割中不是问题。由于它与头部运动有关,而不是模型本身,因此我看不出 STL 文件的真正重要性。

这实际上是关于使用弧来设置头部速度(位置的一阶导数)。与模型的形状无关(这只是位置)。至少这是我的解释。

Wi-Fi 模块很有趣,因为它从我的路由器接收 IP 地址,然后我的路由器停止将其列为已连接设备。但它仍然连接,因为我可以无线访问它。一旦我可以解决这个双头的一些其他问题,我将进一步研究它。但到目前为止,有理由认为它可能是后门的。

2个回答

我本来希望回答链接到可靠的官方来源,但我无法在直接 B 样条打印中添加引用。所以我写下我的想法。我已经熟悉 B 样条以了解它们是什么,并阅读了 OP 给出的 2 个参考文献。


基本上,打印机软件只允许打印直线。是的,我知道我们可以命令打印机打印曲线(使用G2G3),但这些最终将转换为打印直线。据我所知,没有现成的打印机固件可用于直接打印三次曲线。如果可能的话,这些曲线最终应该被定时步进旋转输出的固件转换成更小的直线。这些额外的计算需要打印板处理器付出相当大的努力,很可能 8 位处理器能够处理的更多。

2017 年发布论文G 代码预处理软件进行比较可以发现,虽然两者似乎都参考了 B 样条技术,但它们的实现方式不同。例如,预处理软件的目标是通过用 B 样条曲线代替这些直线运动来减少直线运动(而不影响实际打印对象),而本文重点介绍了 B 优化的实际打印曲线的优化。样条曲线(也使用预处理器)。由于没有用于打印曲线的 3D 打印固件解决方案,因此两者最终都需要创建大量的小直线,以使打印机能够实际打印对象。请注意,论文中的方法已受到RepRap社区的质疑,这表明他们可以比 B 样条优化示例更快地打印相同的对象。此外,请注意 Marlin 社区可能正在朝着这个方向发展,例如从这个功能请求这个 G 代码元概述中可以看出G代码指令G5

因此,这两种方法都依赖于通过识别切片坐标(打印)移动来预处理 G 代码,转换为(打印)移动的 Bézier/B 样条曲线,最终转换为正常G0/G1(打印)移动。Marlin 社区/开发人员似乎没有打算很快实现 Bézier 或 B 样条曲线。这意味着如果你想追求打印 B-splines,你需要制作自己的预处理器,或者潜入 Marlin C++ 开发;像 OP 提到的那样,基于 8 位的打印板确实是不够的,升级到 32 位或与 USB 接口可能是唯一的解决方案。

在更实际的情况下,您可以设计零件,使角变圆(也称为圆角)。这将有助于保持打印头移动并防止导致“抖动”的突然停止和启动效应。当从 SD 卡或串行端口读取大量 g 代码时,更多的 8 位控制器往往会饱和。升级到 32 位控制器将防止这种抽搐。

与仅仅加快打印速度相比,这两种方法都显得苍白无力。将硬件升级得更快(存在各种方法)会比尝试优化 g 代码(以我的拙见)减少更多的时间。Delta 打印机有可能成为速度最快的 FDM 打印机类型,前提是您可以让灯丝足够快地熔化。