一种数控机床的曲线插补方法、系统及存储介质

文档序号:30960457发布日期:2022-07-30 12:55阅读:99来源:国知局
一种数控机床的曲线插补方法、系统及存储介质

1.本发明涉及数控机床的运动控制技术领域,尤其涉及一种数控机床的曲线插补方法、系统及存储介质。


背景技术:

2.数控机床等运动控制系统使用插补方法以既定轨迹和速度控制刀具实现工件轮廓加工。插补操作结合精度和工艺等要求,按照一定的数学方法在理想轨迹的控制点间确定一些中间点,从而形成刀具的加工轨迹。精度要求越高,加工轨迹就越要求尽可能逼近理想工件外形轮廓。目前,传统的非均匀有理b样条(non-uniform rational b-splines,nurbs曲线)插补在每个插补周期里,根据规划的进给速度,确定下一插补点位置,根据该步长计算出nurbs曲线参数u的增量。nurbs曲线是“非均匀的”,即它的节点参数的分布并不是等距的,不同的节点参数对应的基函数不一样,因此如果不计算出下一个插补点所对应的参数值是无法进行接下来的计算过程的。所以传统的插补算法的关键就在于参数u增量的计算。目前,在用newton迭代法进行nurbs曲线参数求解的过程中涉及到了曲线上对应点导数的求解,增加了计算量和计算时长。此外该方法会受初值影响,当初值选取不合适时,得到的最终结果可能会不收敛的,也可能求出反向插补的数据点而不是正确解。
3.可见,传统的nurbs曲线插补方法在插补过程中,存在控制点对nurbs曲线控制的精准度较低的问题。


技术实现要素:

4.本发明提供了一种数控机床的曲线插补方法、系统及存储介质,以解决现有的nurbs曲线插补方法在插补过程中,存在控制点对nurbs曲线控制的精准度较低的问题。
5.为了实现上述目的,本发明通过如下的技术方案来实现:
6.第一方面,本发明提供一种数控机床的曲线插补方法,包括:
7.根据数控机床的运动线路确定待插补曲线;
8.根据待插补曲线对应的控制点确定待插补曲线对应的节点矢量,并基于所述节点矢量将所述待插补曲线划分为n段线条,n为正整数;
9.基于弓高误差确定所述n段线条的目标插补点集;
10.根据所述目标插补点集计算所述待插补曲线的各插补点坐标,并基于所述插补点坐标进行插补。
11.第二方面,本技术提供一种数控机床的曲线插补系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面所述方法的步骤。
12.第三方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的方法步骤。
13.有益效果:
14.本发明提供的数控机床的曲线插补方法,首先根据待插补曲线对应的控制点确定待插补曲线对应的节点矢量,并基于节点矢量将待插补曲线划分为n段线条,然后基于弓高误差确定n段线条的目标插补点集;根据目标插补点集计算待插补曲线的各插补点坐标。使所有插补点能够满足弓高误差的要求,使加工曲线更平滑,趋近于理想nurbs曲线,这样,采用根据待插补曲线对应的控制点确定待插补曲线对应的节点矢量的方式,可以使得插补点坐标更加精确,提高了控制点对nurbs曲线控制的精准度,同时可以将计算量控制在线性范围内。
15.在优选的实施方案中,在插补阶段就确定了插补点在nurbs曲线上的具体位置,并记录各点在法向加速度及加加速度限制下的最大进给速度,使前瞻速度规划的目的简化。
附图说明
16.图1为本发明优选实施例的一种数控机床的曲线插补方法的流程图之一;
17.图2为本发明优选实施例的一种数控机床的曲线插补方法的流程图之二;
18.图3为本发明优选实施例的一条二次三阶nurbs曲线示意图;
19.图4为本发明优选实施例的基于弓高误差的插补递归流程图;
20.图5为本发明优选实施例的中点法计算nurbs弓高误差示意图。
具体实施方式
21.下面对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
22.除非另作定义,本发明中使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也相应地改变。
23.请参见图1,本技术实施例提供一种数控机床的曲线插补方法,包括:
24.根据数控机床的运动线路确定待插补曲线;
25.根据待插补曲线对应的控制点确定待插补曲线对应的节点矢量,并基于节点矢量将待插补曲线划分为n段线条,n为正整数;
26.基于弓高误差确定n段线条的目标插补点集;
27.根据目标插补点集计算待插补曲线的各插补点坐标,并基于插补点坐标进行插补。
28.上述的数控机床的曲线插补方法,首先将待插补曲线划分为n段线条,然后基于弓高误差确定n段线条的目标插补点集;根据目标插补点集计算待插补曲线的各插补点坐标。使所有插补点能够满足弓高误差的要求,使加工曲线更平滑,趋近于理想nurbs曲线,这样,采用根据待插补曲线对应的控制点确定待插补曲线对应的节点矢量的方式,可以使得插补
点坐标更加精确,提高了控制点对nurbs曲线控制的精准度,同时可以将计算量控制在线性范围内。
29.可选地,基于节点矢量将待插补曲线划分为n段线条时,将待插补曲线的开头端的k+1个节点视为参数重复的节点,参数值为0,将待插补曲线的结尾端的k+1个节点视为参数重复的节点,参数值为1,k表示曲线次数。
30.在本可选的实施方式中,开头k+1个和最后k+1个节点参数分别为0和1以保证曲线经过首位端点,中间n-k个节点矢量采用基于控制点距离的节点矢量选取方法。与传统等距选取方式不同,本发明根据每一段nurbs曲线控制点的距离占所有控制段距离和的比例来决定节点参数的值。首先判断当前段的曲线上各点受哪些控制点约束,其次将当前相关控制点间距离和与总控制段距离的比值和前一节点参数的值的和作为当前节点参数的值,最后得到节点矢量值。由此方法得到nurbs曲线的节点矢量,保证nurbs曲线经过首尾端点,同时可以将计算量控制在线性范围内。此外,由于该方法使nurbs曲线的内部节点按照上述规律分布,而不是传统的等距,这样,可以使得控制点对nurbs曲线的控制更为精准。
31.可选地,基于弓高误差确定n段线条的目标插补点集,包括:
32.计算目标线条第一端的第一分段点和第二端的第二分段点之间的第一弓高误差,若第一弓高误差在阈值范围内,将第一分段点和第二分段点加入插补点集,若第一弓高误差不在阈值范围内,以第一分段点和第二分段点的参数值的中值对应点作为新的分段点;
33.计算第一分段点和新的分段点之间的第二弓高误差以及第二分段点和新的分段点之间的第三弓高误差,并继续对第二弓高误差和第三弓高误差进行与第一弓高误差相同的判断,如果在阈值规定范围内,则依次将新的新的分段点加入插补点集,否则以同样的方法继续确定新的分段点,以此迭代,直到所有新的分段点的弓高误差都满足阈值范围的规定,依次遍历完n段线条后确定目标插补点集;目标线条为n段线条中的任一段线条。
34.在本可选的实施方式中,为了在满足弓高误差的限制条件下,使插补线段的长度尽可能的长,采用递归二分法求解插补点。插补过程按分段进行,对于当前段,由于分段点必然作为插补点,所以将当前段的前分段点首先加入插补点集,并计算前分段点和后分段点连线的弓高误差。判断当前弓高误差是否在阈值规定范围内,如果符合则将后分段点加入插补点集。如果不符合,以前后两点节点参数值的中值对应点作为新的分段点,分别计算前后两点和新的分段点连线的弓高误差值,再次判断前后两段的弓高误差是否在阈值规定范围内。如果在阈值规定范围内,则依次将新的分段点加入插补点集,否则以同样的方法对弓高误差不在阈值规定范围的新分段继续分段,直到所有新的分段的弓高误差都满足阈值规定。以相同的方法遍历完每一段曲线后生成最终的插补点集。本方法的弓高误差使用中点法进行计算,由于本发明的插补算法直接用弓高误差来决定插补步长不涉及到进给速度,所以选用中点法计算弓高误差。通过计算相邻两个插补点的中点和这两个插补点的节点参数的中值对应曲线上的插补点的距离来近似代替弓高误差,相较于传统的圆弧逼近法计算更为简单,减少计算量。
35.可选地,所述基于所述插补点坐标进行插补,包括:
36.在基于所述插补点坐标进行插补的同时计算所述插补点在综合约束下的最大进给速度,同时记录当前插补点的插补步长与总弧长,其中,插补步长根据相邻插补点求解得到的坐标,通过点间距离公式求解确定,总弧长通过累计所有插补点的步长确定。
37.在本可选的实施方式中,计算并保存各插补点的最大进给速度和插补步长。nurbs曲线在转弯处产生法向加速度和加加速度也会对速度产生约束,为了使加工过程中能够满足设备规定的最大法向加速度a
nmax
和最大法向加加速度j
nmax
的约束,必须对通过该点时的进给速度进行限制,否则如果在曲率较大的点以很大的进给速度通过,可能会超出设备驱动能力,引起电机失步,最后导致加工精度低下。由于在本发明中提出的方法在插补过程就已经确定了插补点在nurbs曲线上的位置,所以可以在插补的同时计算出该点在综合约束下的最大进给速度,同时还可以记录当前插补点的步长与总的弧长。
38.这样,相较于传统的插补算法根据硬件插补周期来选取下一个插补点的,插补过程并不能确定插补的步长与弓高误差,需要通过前瞻速度规划来保证插补点的弓高误差和进给速度满足硬件限制。本发明在插补阶段就确定了插补点在nurbs曲线上的具体位置,并记录各点在相信加速度及加加速度限制下的最大进给速度,使前瞻速度规划的目的简化。
39.在一完整示例中,请参见图2,首先根据控制点间的距离线性计算得到nurbs曲线节点矢量,并根据节点矢量进行分段。根据弓高误差采用递归二分法求解并保存插补点的节点参数和坐标值,同时在插补过程中计算并保存曲率约束下的最大进给速度和插补步长。完成基于弓高误差的插补算法流程。
40.首先基于控制点距离线性计算nurbs曲线节点矢量。n+1表示nurbs曲线控制节点个数,k表示曲线次数,其中2≤k≤n。节点矢量u=[u0,u1,...,u
n+k+1
],节点矢量的个数为n+k+2个,开头k+1个和最后k+1个节点参数分别为0和1以保证曲线经过首尾端点,中间n-k个节点参数采用基于控制点距离的节点矢量选取方法。与传统等距选取方式不同,本发明根据每一段nurbs曲线控制点的距离占所有控制段距离和的比例来决定节点参数的值,即首先判断当前段的曲线上各点受哪些控制点约束,其次将当前相关控制点间距离和与总控制段距离的比值和前一节点参数的值的和作为当前节点参数的值。以图3为例,图3为一条2次3阶nurbs曲线示意图,共有7个控制点,p0p1p2决定了第一段nurbs曲线p0k1,p1p2pa决定了第二段nurbs曲线k1k2,以此类推。因此根据每一段nurbs曲线控制点的距离占所有控制段距离加起来的比例来决定节点参数的值。第一段曲线的控制点间的距离为p0p1的距离加上p1p2的距离,第二段曲线的控制点间的距离为p1p2的距离加上p2p3的距离,以此类推,可以得到控制点间距离的总和lc如下:
[0041][0042]
因为k=2,所以开头三个节点参数值为0,最后三个节点参数值为1。第四个节点参数的值按下式计算得到:
[0043][0044]
同理第五个节点参数值为:
[0045][0046]
同理可以得到各中间节点参数值,由此方法得到nurbs曲线的节点矢量,保证nurbs曲线经过首尾端点,同时可以将计算量控制在线性范围内。此外,由于该方法使nurbs曲线的内部节点按照上述规律分布,而不是传统的等距,这就使控制点对nurbs曲线的控制更为精准了。
[0047]
在正式进行插补前,对nurbs曲线进行合理分段。本发明的节点矢量计算方法以全复节点开始且以全复节点结束,即开头k+1个和最后k+1个节点参数重复,分别为0和1,保证nurbs曲线经过首尾端点,故可以首先将首尾端点作为首尾分段点。其次节点矢量中的对应的单纯节点,即不重复的节点参数值对应的节点选取作为中间分段点。使用德布尔递推法对各个分段点进行求解得到坐标值,德布尔递推公式为:
[0048][0049][0050][0051]
式中,c(u)表示待插补曲线上的点,i表示当前插补点所在初始插补区间的前分段点在节点矢量内的位置下标,1表示当前计算的迭代次数,表示递推过程中的中间变量,k表示曲线的次数,n
j,k-1
(u)表示待插补曲线第j个k-1次b样条基函数,表示将曲线上对应点的坐标求解转换成的中间控制点,ui表示第i个参数节点值,u
i+1
表示第i+1个参数节点值,表示递推计算过程中的变量参数,u表示待求点的参数值,dj表示第j个控制节点,u
j+1
表示表示第j+1个参数节点值,u
j+k+1
表示表示第j+k+1个参数节点值。
[0052]
插补过程在这个分段的基础上进行,所以确定的分段点同时也是初始插补点。这样分段简单明了,且单纯节点作为曲线上的边界,当nurbs曲线上的点在此边界上的过渡过程中,一个控制点对于一段连续曲线上的点失去影响作用,另一个控制点取得影响。所以选取单纯节点作为分段点更为合适。
[0053]
仍以图3为例,该曲线的节点矢量u=[u0,u1,...,u9],其中u0,u1,u2对应全复节点,节点参数值为0,nurbs曲线通过起始控制点p0。u7,u8,u9对应全复节点,节点参数值为1,nurbs曲线通过结尾控制点p6。将p0和p6分别作为首尾分段点。u3,u4,u5,u6分别对应的单纯节点k1,k2,k3,k4作为中间插补点,从图中实线虚线的标志可以看出来,这条nurbs曲线被划分为了5段。使用德布尔递推法对各个分段点进行求解得到坐标值,以k1节点为例,将节点参数u3代入德布尔递推公式得:
[0054][0055][0056][0057]
同理计算并保存各初始插补点的坐标,接着进行插补操作。
[0058]
插补过程如图4流程图,为了在满足弓高误差的限制条件下,使插补线段的长度尽可能的大,本发明采用递归二分法求解插补点。计算过程按分段进行,对于当前段,由于分段点必然作为插补点,所以将当前段的前分段点首先加入插补点集,并计算前分段点和后分段点连线的弓高误差。判断当前弓高误差是否在阈值规定范围内,如果符合则将后分段点加入插补点集。如果不符合,以前后两点节点参数值的中值对应点作为新的分段点,分别计算前后两点和新的分段点连线的弓高误差值,再次判断前后两段的弓高误差是否在阈值规定范围内。如果在阈值规定范围内,则依次将新的分段点加入插补点集,否则以同样的方法对弓高误差不在阈值规定范围的新分段继续分段,直到所有新的分段的弓高误差都满足阈值规定。以相同的方法遍历完每一段曲线后生成最终的插补点集。本方法的弓高误差使用中点法进行计算,由于本发明的插补算法直接用弓高误差来决定插补步长不涉及到进给速度,所以选用中点法计算弓高误差。
[0059]
图5为中点法计算弓高误差的方法,通过计算相邻两个插补点的中点和这两个插补点的节点参数的中值对应曲线上的插补点的距离来近似代替弓高误差,相较于传统的圆弧逼近法计算更为简单,减少计算量。中点法计算公式为:
[0060][0061]
式中,δi表示参数值为ui和u
i+1
对应点间的曲线弓高误差,mi表示ui和u
i+1
对应点间连线的中点,ni表示参数值为ui和u
i+1
的中值(ui+u
i+1
)/2对应曲线上的点。
[0062]
同样以图3为例,对于第一段曲线p0k1进行插补,首先将c(u2)加入插补集,使用中点法计算p0k1的弓高误差判断δ0不满足弓高误差阈值范围,进行二分,分别计算得到p0n0和n0k1的弓高误差δ1和δ2,再次进行判断是否满足弓高误差阈值范围,以此类推直到当前曲线段p0k1每一插补段的弓高误差都满足要求,将对应每一插补段的在曲线上的插补点加入插补点集中后进行下一段曲线k1k2的插补。直到完成整条nurbs曲线的插补,实现每一个插补点间弓高误差都满足阈值要求,使画出的运动轨迹更光滑更趋近于理想nurbs曲线。
[0063]
计算并保存各插补点的最大进给速度和插补步长。除了弓高误差对插补点速度的约束,由于nurbs曲线不是直线,在转弯处产生法向加速度和加加速度也会对速度产生约束。
[0064]
为了使加工过程中能够满足给出的最大法向加速度a
nmax
和最大法向加加速度j
nmax
的约束,必须对通过该点时的进给速度进行限制。否则如果在曲率较大的点以很大的进给速度通过,可能会超出设备驱动能力,引起电机失步,最后导致加工精度低下。由于在本发明中提出的方法在插补过程就已经确定了插补点在nurbs曲线上的位置,所以可以在插补的同时计算出该点在综合约束下的最大进给速度,同时还可以记录当前插补点的步长与总的弧长,总的弧长通过累计所有插补点的步长得到。
[0065]
首先对nurbs曲线插补点进行求解,本发明采用德布尔递推法对插补点的坐标值、一阶和二阶导矢进行求解。nurbs曲线是一种特殊的b样条曲线,它的定义式中包含了b样条基函数。因此,nurbs曲线的求解过程可以借鉴b样条曲线,通过德布尔递推来降低求解的计算量。该方法的递推公式为:
[0066][0067][0068][0069][0070]
式中,c
(r)
(u)表示曲线上点c(u)的r阶导矢,r表示求导阶数,表示c(u)对u进行r阶求导,表示使用德布尔递推公式求解导数递推过程中的中间变量,n
j,k
(u)表示待插补曲线第j个k次b样条曲线基函数,n
j,k-r
(u)表示待插补曲线第j个k-r次b样条曲线基函数。
[0071]
假设当前插补点为c(ui),当前插补点曲率k(ui)为:
[0072][0073]
得到在法向加速度及法向加加速度限制下的最大进给速度v
limitan
(ui)及v
limitjn
(ui)如下:
[0074][0075][0076]
由此可以得到nurbs曲线在曲率约束下,在插补点c(ui)处的最大进给速度为:
[0077][0078]
同样以图3为例,计算插补点n1处的最大进给速度。首先对n1处的坐标和一阶和二阶导矢进行求解,在插补过程中得到该店得参数值u
n1
∈[u2,u3],代入德布尔递推公式得:
[0079][0080][0081][0082][0083]
其中dj表示nurbs曲线的控制顶点。在求解完后计算n1处得曲率值k(u
n1
):
[0084][0085]
得到在法向加速度及法向加加速度限制下的最大进给速度v
limitan
(u
n1
)及v
limitjn
(u
n1
)如下:
[0086][0087][0088]
由此可以得到nurbs曲线在曲率约束下,在插补点c(u
n1
)处的最大进给速度为:
[0089]vlimit
(un1)=min(v
limitan
(u
n1
),v
limitjn
(un1));
[0090]
nurbs曲线的曲率是连续变化的,所以在曲率约束下的最大进给速度也是连续变化的。相较于传统的插补算法根据硬件插补周期来选取下一个插补点的,插补过程并不能确定插补的步长与弓高误差,需要通过前瞻速度规划来保证插补点的弓高误差和进给速度满足硬件限制。本发明在插补阶段就确定了插补点在nurbs曲线上的具体位置,并记录各点在法向加速度及加加速度限制下的最大进给速度,使前瞻速度规划的目的简化。
[0091]
综上,本技术提供的数控机床的曲线插补系统,基于弓高误差的插补算法使用控制点间距离作为节点矢量选取方式,使控制点对nurbs曲线的控制更加精确,从而提高加工精度。此外,本算法不是基于插补周期进行插补运算,而是在满足弓高误差的限制下寻找最
大的插补步长,减少曲线离散段数,提高加工效率。且每一插补点都满足弓高误差要求,使加工曲线更平滑,趋近于理想nurbs曲线,提高了加工精度。同时本算法在插补运算时就确定插补点在nurbs曲线上的位置,可以在插补同时可以计算出插补点在综合约束下的最大进给速度、以及当前段的步长和总的弧长,有助于前瞻速度的规划,减少计算复杂度。实验证明,相较于传统插补算法,采用本算法插补得到的曲线更为光滑,且弓高误差都能满足设定要求。因此,本发明能最大限度实现高加工精度,改善曲线平滑程度,提高加工质量。
[0092]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1