我正在编写一个GCode解释器,当给定(X,Y)圆圈和半径上的2个点时,我很难确定圆心.
给定中心点时,我可以从2个点绘制一个圆,但如果给出了半径值,我无法将其转换为中心点.
我查找了多个以不同形式的数学(微积分,几何,三角等)编写的示例,但不能将它们中的任何一个转换为代码.
我在这里找到了同样的问题,在Visual Basic中只有1个真正的答案,但看起来粘贴的代码部分依赖于未包含的其他代码.
我的理解是给出的值产生2个不同的中心/交叉点.这些是我需要弄清楚的.
解释器在Arduino上运行并用C语言编写.如果有人能用伪代码引导我完成它,我将非常感激.
谢谢!
我正在为CNC铣床实现驱动程序,而我在实现G代码弧命令时遇到了麻烦.
我已经找到了几个中点圆算法的实现,但它实际上并不是真的可用.
我发现中点圆算法的问题在于它是2D并且同时绘制所有八分圆,而我需要通过3D路径的连续步骤,由起点,终点和中心点给出.
我发现了一个很好的多维等效Bresenham的线绘算法使用浮点运算.绘制圆弧可能存在类似的事情吗?
我可以通过大量的思考和实验来改变这种算法,但是由于绘制弧线并不是一个未解决的问题,而且之前已经制造过数控机床,我想知道是否已经存在一个优雅的解决方案?
我试图找到一个确定的G代码语法规范,而不是各个地方的G代码含义,这是我在各处编写的规范,我指的是详细的语法规范,目的是编写解析器。
我写解析器没有问题,我只是在寻找语法规范,例如。我知道您不必总是为某些Gcode提供完整的xyz坐标,在这种情况下,机器将使用丢失坐标的最后一个值,但是我似乎找不到任何确定的规则来确定何时发生。同样,有些指令可以放在一行中,而有些指令则不能,而且似乎没有确定的规则。
很长的故事:
因此,我有一台diy cnc机器,使用了一段时间,最近将其升级到足够稳定的状态,可以在其中铣削一些PCB。事实是,进行双面加工确实很棘手,因为机械地索引两面都不够精确。
因此,有一些旨在利用USB摄像头的项目,您将这些摄像头瞄准已知点,然后该应用计算并对gcode进行转换,以补偿未对准情况。
但是问题是,我想通过照相机以外的其他方式来做到这一点,而且那些项目还没有完成或被放弃。
所以我想,我可以为gfcode创建一个简单的解析器,但是我发现的任何“规范”都只谈论特定指令的含义,而不是语法。
我正在尝试编写一个简单的 python 脚本,将 gcode 命令发送到运行 Marlin 的 wanhao D9 主板打印机。我在通过 USB 连接到打印机的树莓派上运行 python 脚本。
import serial
ser = serial.Serial("/dev/ttyUSB0", 115200)
ser.write("G28\n")
Run Code Online (Sandbox Code Playgroud)
我已经阅读了 20 多个有类似问题的论坛页面,并尝试了他们的答案,例如将波特率更改为 250000 以及对 write 函数参数进行以下更改:
ser.write("G28\r\n")
ser.write(b'G28\r\n')
ser.write(b'G28\n')
ser.write(b'G28')
ser.write("G28")
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有这些组合,并且我还添加了:
time.sleep(5)
Run Code Online (Sandbox Code Playgroud)
以及我文件顶部的时间模块的相关导入语句。我在 ser 声明和 ser.write 函数调用之间添加了这行代码。
我也尝试添加:
ser.close()
Run Code Online (Sandbox Code Playgroud)
看看这是否会有所作为,但事实并非如此,因为我知道这无论如何都是最佳实践。
无论我使用什么代码组合,当我运行我的 python 脚本时,我的打印机似乎重新启动(屏幕从主页变为打开的 wanhao 徽标并返回主页)
我期待任何人都可以就我的代码以及我可能做错的事情向我提供任何帮助。
我希望了解更多关于将网格切割成gcode的过程,这个过程采用3d模型并创建CNC机器或3D打印机可以使用的对象的2D切片.
使用什么数学算法来执行这种类型的网格抽取/切片?是否有任何库实现了一些?
我的问题的简短描述
我需要为 3D 打印实现从 G1 指令到 G2 和 G3(http://www.cnccookbook.com/CCCNCGCodeArcsG02G03.htm)的GCODE 自动重构。
G1 是直线运动并打印(路径用矢量描述)。
我正在寻找基于给定向量路径的算法来近似圆/弧(特别是它的中点)。请注意,G2 和 G3 无法打印不属于圆的曲线 - 因此并非每个向量路径都可以通过这种方式近似。
我的问题的详细描述
我正在寻找通过圆(弧)来近似部分(或全部)向量路径(可以是正多边形、它的一部分或不规则多边形部分)的方法。但是,让我们首先关注规则多边形。
在图片中,我绘制了这个问题的不同情况。
注意:每个多边形都是由向量构建的(如第 5 点)。

这不是故事的开始……有几个标准:
我发现的解决方案(好的和坏的):
1) 和 5) - 我的简单解决方案
这是最简单的情况。我可以计算共享一个观点的每一侧之间的半径。如果它们具有相同的长度和每个之间的角度相等,我可以计算圆的中点(作为属于垂直中线的点,每边一条中线),我有我需要的一切:起点,终点,中点观点。
但此解决方案仅适用于情况 1 和 5。
当我遇到案例 2,3,4 或不规则多边形的部分时,我真的不知道该怎么办