计算ndimensional arc path

2024-09-28 05:38:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个数控铣床实现一个驱动程序,我在实现G代码的arc命令时遇到了困难。在

我发现了一些中点圆算法的实现,但它并不是真正可用的。在

我发现的中点圆算法的问题是,它是二维的,同时绘制所有的八分之一,而我需要连续的步骤通过三维路径,由起点,终点和中心点。在

我发现使用浮点运算的nice multidimensional equivalent of Bresenham’s line drawing algo。也许有类似的东西可以用来画一个弧?在

我也许可以通过大量的思考和实验使这个算法符合我的意愿,但既然画弧线并不是一个未解决的问题,而且数控机床以前也制造过,我想知道是否已经存在一个优雅的解决方案?在


Tags: of代码命令路径算法驱动程序绘制步骤
2条回答

LinuxCNC中,位置生成与步骤生成分离。在位置生成循环中,系统跟踪它已经沿当前图元(直线或螺旋线)移动的距离,并使用一个简单的公式来获得沿该图元的距离D的位置。(通常,每毫秒执行一次)。这个位置可以以不同的方式使用,这取决于你是有伺服,硬件步骤生成,还是软件步骤生成。在

在软件步进生成系统中,沿每个轴确定旧命令位置和新命令位置之间的差,并用此差来更新使用直接数字合成方法(DDS)的数字波形发生器的速率。然后,以更高的速率(通常每20-50µs一次),DDS针对每个轴确定此时是否应生成台阶。在

这与您描述的设计不同,但它更灵活。例如,通过将位置生成与步骤生成分离,您可以在不修改步骤生成的情况下修改位置生成代码中的混合算法;您可以用硬件步骤生成代替软件步骤生成,或者用PID等算法代替伺服控制。在

在您的设计中,您可以近似我上面描述的方法,只需将螺旋弧切割成Roland所描述的线段,并将这些线段作为输入输入到只理解直线的步进生成代码中。从某种意义上说,这与LinuxCNC没有太大区别,只是曲线基本体根据距离而不是根据时间采样。在

我的dxftoolspython软件包用于处理DXF文件,该软件包具有在二维中将圆弧分割为线段的功能。您可以使用此代码,然后使用三维坐标变换将其任意放置在三维空间中。坐标变换的例子可以在我的py-stl软件包中找到。在

相关问题 更多 >

    热门问题